//var ccfields = new Array('cc_name', 'cc_type', 'cc_number', 'cc_month', 'cc_year', 'cc_security_code');					
var addressVal = new Array('pobox','po box','p o box', 'p obox', 'pob','pb', 'mb','mu','su','sh','stu','sth','ab','apo','fpo','post office box','mail box','mailing unit','army base', 'military unit', 'military base', 'student union', 'student hall');
var errorMsg = "";
var numb = '0123456789';
var lwr = 'abcdefghijklmnopqrstuvwxyz';
var upr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
var spdot = ' .';
var extra = ' .,';
var selectedState = "";
var stateArray = new Array();

function PutControlValInVar()
{
	credit_name = document.forms["orderform"].elements["cc_name"].value;
	credit_type = document.forms["orderform"].elements["cc_type"].options[document.forms["orderform"].elements["cc_type"].selectedIndex].text;
	credit_number = document.forms["orderform"].elements["cc_number"].value;
	credit_month = document.forms["orderform"].elements["cc_month"].value;
	credit_year = document.forms["orderform"].elements["cc_year"].value; 
	credit_code = document.forms["orderform"].elements["cc_security_code"].value;
}

function ValidateAndSubmitForm()
{
	if (validate() == true)
	{
		document.forms["orderform"].elements["mode"].value = "PROC";
		document.forms["orderform"].submit();
	}
	return false;
}

function setCountry(value)
{
	if (value == "--") 
	{
		alert("Please select a valid state");
		if (billtocountry == 'Canada')
		document.forms["orderform"].elements["billto_state"].selectedIndex = 58;
		else
		document.forms["orderform"].elements["billto_state"].selectedIndex = 0;
		return false;
	}
	else
	{
		selectedState = value;
		stateArray = selectedState.split(",");
		billtostate = stateArray[0];
		billtocountry = stateArray[1];
		document.getElementById("cust_country").innerHTML = billtocountry;
		document.forms["orderform"].elements["billto_country"].value = billtocountry;
		
		if (billtocountry == "United States")
		{	
			document.getElementById("paymentOptionRow").style.visibility = "visible";
			document.getElementById("paymentOptionRow").style.position = "relative";
			if (document.getElementById("blindShipLabel") == "[object]" )	
			{
				document.getElementById("blindShipLabel").style.visibility = "hidden";
				document.getElementById("blindShipLabel").style.position = "absolute";
			}
		}
		else
		{
			document.getElementById("paymentOptionRow").style.visibility = "hidden";	
			document.getElementById("paymentOptionRow").style.position = "absolute";	
			if (document.getElementById("blindShipLabel") == "[object]" )	
			{
				document.getElementById("blindShipLabel").style.visibility = "visible";
				document.getElementById("blindShipLabel").style.position = "relative";
			}
		}
		
	}
	
	return true;
}

function allowOnlyAlphabets(obj)
{
	var str = obj.value;
	if (!isAlphabets(str))
	{
		alert ("Please use only alphabetic characters (a-z,A-Z)");
		obj.value = "";
		obj.focus();
		return false;
	}
	return true;
}

function allowZipCodes(obj)
{
	selectedState = document.forms["orderform"].elements["billto_state"].options[document.forms["orderform"].elements["billto_state"].selectedIndex].value;
	stateArray = selectedState.split(",");
	billtostate = stateArray[0];
	billtocountry = stateArray[1];
	zipcode = obj.value;
		
	if (!isValid(zipcode,lwr+upr+numb+' '))
	{
		alert("The Zip/Postal Code must not include dashes or slashes. Please try again.");
		obj.value = "";
		obj.focus();
		return false;
	}
	
	if (billtocountry == "United States")
	{
		if (! isValid(zipcode,numb))
		{
			alert("The Zip you entered was not formatted properly. Please re-enter your Zip.");
			obj.value = "";
			obj.focus();
			return false;
		}
		else
		{
			if (isValid(zipcode,lwr+upr+' '))
			{
				alert("The postal code and state you entered do not match. Please check your postal code and state and re-enter them. ");
				obj.value = "";
				obj.focus();
				return false;		
			}
		}
	}
	else if (billtocountry == "Canada")
	{
		var canada_WithSpace = /^\D{1}\d{1}\D{1}\ \d{1}\D{1}\d{1}$/; 
		var canada_NoSpace = /^\D{1}\d{1}\D{1}\d{1}\D{1}\d{1}$/; 
		
		if (! isValid(zipcode,lwr+upr+numb+' '))
		{
			alert("The Postal Code you entered was not formatted properly. Please re-enter your postal code.");
			obj.value = "";
			obj.focus();
			return false;
		}
		else
		{
			if (isValid(zipcode,numb))
			{
				alert("The zip code and province you entered do not match. Please check your zip code and province and re-enter them. ");
				obj.value = "";
				obj.focus();
				return false;		
			}
			if(canada_WithSpace.test(zipcode) || canada_NoSpace.test(zipcode))
			{ }
			else
			{
				alert("The Postal Code you entered was not formatted properly. Please re-enter your postal code.");
				obj.value = "";
				obj.focus();
				return false;
			}
		}
	}
			
	return true;
}

function allowOnlyNumbers(obj)
{
	var str = obj.value;
	name = obj.name;
	if (!str.length || isNum(str))		return true;
	
	if (name == "shipto_day_phone" || name == "billto_day_phone")
	{
		alert("Please re-enter your phone number using numbers only.");	
	}
	if (name == "cc_number")
	{
		alert("Please re-enter your card number using numbers only.");
	}
	
	if (name == "billto_zip")
	{
		alert("Please re-enter your zipcode using numbers only.");
	}
	
	obj.value = "";
	obj.focus();
	return false;
}

function validate()
{	
    if (document.forms["orderform"].elements["agreeTerms"].checked == false)
	{
		document.getElementById("errorMessage").innerHTML = "Please confirm that you agree with our Terms and Conditions.<br/><br/>";
		 self.scroll(0,0);
		return false;
	}
	
	errorMsg = "";
	if (checkForm(mandatoryField))
	{
		return true;	
	}
	
	document.getElementById("errorMessage").innerHTML = errorMsg + "<br/><br/>";
	 self.scroll(0,0);
	return false;
}

function checkForm(mandatoryField)
{	
	// Enforce the required fields
    for (var i = 0; i < mandatoryField.length ; i++)
    {
		fieldName = mandatoryField[i];
		curVal = "";
		
		if (fieldName == "payment_method")
		{	
			
			if (document.forms["orderform"].elements["payment_method"][0].checked)
			{
				curVal = document.forms["orderform"].elements[fieldName][0].value;
			}
			else 
			{
				curVal = document.forms["orderform"].elements[fieldName][1].value;
			}		
			
			if (curVal == "Credit card")
			{	
				if (checkCreditCardFields())
				{
					return true;
				}
				return false;
			}
		}
		
		if ((fieldName == 'billto_day_phone') || (fieldName == 'shipto_day_phone'))
		{
			if (document.forms["orderform"].elements["return_address"] == null && fieldName == 'shipto_day_phone')
			{ // dont check for validation		
			}
			else
			{
			for (j = 0; j < 3 ; j++)
			{
				if (document.forms["orderform"].elements[fieldName][j].type == "text")
				{
					curVal = document.forms["orderform"].elements[fieldName][j].value;
					maxLen = 3;
					if (j == 2) maxLen = 4;
					if (curVal.length != maxLen)
					{
						errorMessages(fieldName);
						return false;
					}
				}
			}
			}
		}
		
        if (document.forms["orderform"].elements[fieldName].type == "text")
        {
        	curVal = document.forms["orderform"].elements[fieldName].value;
        	
			if (curVal.length == 0)
            {
				errorMessages(fieldName);
				return false;
            }
            
            if (fieldName == "billto_city")
            {
				if (! isAlphabets(curVal))
				{
					errorMsg = "Please use only Alphabetic characters (a-z,A-Z) to enter the Billing city name.";
					return false;
					break;
				}
            }
            
            if (fieldName == "billto_address1")
            {
				billAddress2 = document.forms["orderform"].elements["billto_address2"].value;
				if (curVal == billAddress2)
				{
					errorMsg = "Please do not enter the same address on Address1 and Address2 in Billing Address Information.";
        			return false;
        			break;
				}
            }
                        
            if (fieldName == "shipto_address1")
        	{
        		curVal = curVal.toLowerCase();
        		address2 = document.forms["orderform"].elements["shipto_address2"].value;
        		address2 = address2.toLowerCase();
        		
        		if (curVal == address2)
        		{
        			errorMsg = "Please do not enter the same address on Address1 and Address2 in Shipping Address Information.";
        			return false;
        			break;
        		}
        		
        		replaceVal = "";
        		for (xy = 0; xy < curVal.length; xy++)
        		{
        			if (isAddress(curVal.charAt(xy)))
        			{
        				replaceVal = replaceVal + curVal.charAt(xy);
        			}
        		}
        		curVal = replaceVal;
        		
        		replaceVal = "";
        		for (yz = 0; yz < address2.length; yz++)
        		{
        			if (isAddress(address2.charAt(yz)))
        			{
        				replaceVal = replaceVal + address2.charAt(yz);
        			}
        		}
        		address2 = replaceVal;
        		
        		for (p=0;p < addressVal.length; p++)
        		{
        			//alert(search(curVal,addressVal[p],false,true));
        			if (search(curVal,addressVal[p],false,true))
        			{
        				errorMsg  = "We cannot ship an order to a P.O. Box address. Please use a street address for delivery.";	
        				return false;
        				break;
        			}
        		}
        		
        		if (address2 != null ||  address2 != "")
        		{
        			for (p=0;p < addressVal.length; p++)
        			{
        				if (search(address2,addressVal[p],false,true))
        				{
        					errorMsg = "We cannot ship an order to a P.O. Box address. Please use a street address for delivery.";	
        					return false;
        					break;
        				}
        			}
        		}
        	}
        }

        if (document.forms["orderform"].elements[fieldName].type == "select-one")
        {				
			curVal = document.forms["orderform"].elements[fieldName].options[this.document.forms["orderform"].elements[fieldName].selectedIndex].text;
				
			if (curVal == "NULL" || curVal == "" || curVal == "Select Month" || curVal == "Select Year" || curVal == "Select Card")
			{
				errorMessages(fieldName);
				return false;
			}
        }  
        
        if (errorMsg != '')
        {
			i = 11;
        }
    }
    
	return true;
}

function errorMessages(name)
{
	switch (name)
	{
		case "billto_name":
			errorMsg = "We didn't get a name for your order. Please complete the name field so we know who should be billed for the order.";
			break;	
		case "billto_address1":
			errorMsg = "We need your billing address to complete your order. Please complete it now.";
			break;
		case "billto_state":
			errorMsg = "We need a state selected to complete your address. Please enter it now.";
			break;
		case "billto_city":
			errorMsg = "We need a city entered to complete your address. Please enter it now.";
			break;
		case "billto_zip":
			errorMsg = "We need a zip code entered to complete your address. Please enter it now.";
			break;
		case "billto_day_phone":
			errorMsg = "The Billing phone number isn't complete. Please enter it now.";	
			break;
		case "shipto_name":
			errorMsg = "We didn't get a name for your order. Please complete the name field so we know who should receive the order.";
			break;
		case "shipto_address1":
			errorMsg = "We need your shipping address to complete your order. Please complete it now.";
			break;	
		case "shipto_day_phone":
			errorMsg = "The Shipping phone number isn't complete.Please enter it now.";	
			break;
		case "cc_name":
			errorMsg = "The cardholder name is missing. Please enter a cardholder in the appropriate field.";
			break;
		case "cc_type":
			errorMsg = "Please select your credit card type.";
			break;	
		case "cc_number":
			errorMsg = "The credit card number is missing. Please enter a cardholder in the appropriate field.";
			break;	
		case "cc_month":
			errorMsg = "An expiration month is not selected. Please select it now.";
			break;
		case "cc_year":
			errorMsg = "An expiration year is not selected. Please select it now.";
			break;
		case "cc_security_code":
			errorMsg = "The security code is missing. Please enter it now.";
			break;
	}
}

function isValid(parm,val) {
  if (parm == "") return true;
  for (vcnt=0; vcnt < parm.length; vcnt++) {
    if (val.indexOf(parm.charAt(vcnt)) == -1) 
    { return false;
		break;}
  }
  return true;
}

function isAlphanum(parm) {
return isValid(parm,lwr+upr+numb+extra);} 

function isAddress(parm) {
return isValid(parm,lwr+upr+numb+' ');} 
function isNum(parm) {
	return isValid(parm,numb);
}

function isAlphabets(parm) {
return isValid(parm,lwr+upr+spdot); }
 // SEARCH FOR A TERM IN A TARGET STRING
function search(target,term,caseSens,wordOnly) 
{
   
     var ind = 0;
     var next = 0;
   
     if (!caseSens) {
       term = term.toLowerCase();
       target = target.toLowerCase();
     }
   
     while ((ind = target.indexOf(term,next)) >= 0) {
       if (wordOnly) {
         var before = ind - 1;
         var after = ind + term.length;
         if (!(space(target.charAt(before)) && space(target.charAt(after)))) {
           next = ind + term.length;
           continue;
         }
       }
       return true;
     }
   
     return false;
   
}
// CHECK IF A CHARACTER IS A WORD BREAK AND RETURN A BOOLEAN VALUE
function space(check) 
{
   
     var space = " .,/<>?!`';:@#$%^&*()=-|[]{}" + '"' + "\\\n\t";
   
     for (var i = 0; i < space.length; i++)
       if (check == space.charAt(i)) { return true; }
   
     if (check == "") { return true; }
     if (check == null) { return true; }
   
     return false;
}

// Auto Tab Script //

function autotab(original,destination){
if (original.getAttribute&&original.value.length==original.getAttribute("maxlength"))
destination.focus()
}

function checkCreditCardFields()
{
	if (credit_name.length == 0)
    {
		errorMessages('cc_name');
		return false;
    }  
    
    if (credit_type == "" || credit_type == "Select Card")
	{
		errorMessages('cc_type');
		return false;
	}      
    
    if (credit_number.length == 0)
    {
		errorMessages('cc_number');
		return false;
    }  

    if (credit_month == "" || credit_month == "Select Month")
	{
		errorMessages('cc_month');
		return false;
	}      
    
    if (credit_year == "" || credit_year == "Select Year")
	{
		errorMessages('cc_year');
		return false;
	}      

    if (credit_code.length == 0)
    {
		errorMessages('cc_security_code');
		return false;
    }  
    
    if (credit_number.length > 0)
    {
		if (credit_type == "American Express")
		{
			if (credit_number.length != 15 || credit_number.substring(0,1) != '3')
			{
				errorMsg = "The credit card number you entered isn't in the right format. Please check your number and try again.";
				return false;
			}
		}
		
		if (credit_type == "VISA")
		{
			if (credit_number.length != 16 || credit_number.substring(0,1) != '4')
			{
				errorMsg = "The credit card number you entered isn't in the right format. Please check your number and try again.";
				return false;
			}
		}
		
		if (credit_type == "MasterCard")
		{
			if (credit_number.length != 16 || credit_number.substring(0,1) != '5')
			{
				errorMsg = "The credit card number you entered isn't in the right format. Please check your number and try again.";
				return false;
			}
		}
    }
      
    if (credit_code.length > 0)
    {	
		if (credit_type == "MasterCard" || credit_type == "VISA")
		{
			if (credit_code.length != 3)
			{
				errorMsg = "The security code you entered isn't in the right format. Please check your number and try again.";
				return false;
			}
		}
		if (credit_type == "American Express")
		{
			if (credit_code.length != 4)
			{
				errorMsg = "The security code you entered isn't in the right format. Please check your number and try again.";
				return false;
			}
		}
    }	
    
    document.forms["orderform"].elements["credit_name"].value = credit_name;
    document.forms["orderform"].elements["credit_type"].value = credit_type;
    document.forms["orderform"].elements["credit_number"].value = credit_number;
    document.forms["orderform"].elements["credit_month"].value = credit_month;
    document.forms["orderform"].elements["credit_year"].value = credit_year;
    document.forms["orderform"].elements["credit_code"].value = credit_code;
    //alert(credit_name + " " + credit_type + " " + credit_number + " " + credit_month + " " + credit_year + " " +credit_code);
    return true;
}
function SetCreditName(value)
{
	credit_name = value; 
}

function SetCreditType(value)
{
	credit_type = value; 
}
function SetCreditNumber(value)
{
	credit_number = value;
}
function SetCreditMonth(value)
{
	credit_month = value;
}

function SetCreditYear(value)
{
	credit_year = value;
}

function SetCreditCode(value)
{
	credit_code = value;
}