//<!--

function changeValues()
{
	if(document.getElementById("ship_same").checked == true)
	{
		if(document.getElementById("ship_fname").value == "")
		{
			document.getElementById("ship_fname").value = document.getElementById("bill_fname").value;
			document.getElementById("ship_lname").value = document.getElementById("bill_lname").value;
			document.getElementById("ship_address1").value = document.getElementById("bill_address1").value;
			document.getElementById("ship_address2").value = document.getElementById("bill_address2").value;
			document.getElementById("ship_city").value = document.getElementById("bill_city").value;
			document.getElementById("ship_state").value = document.getElementById("bill_state").value;
			document.getElementById("ship_zip").value = document.getElementById("bill_zip").value;
			document.getElementById("ship_country").value = document.getElementById("bill_country").value;
		}
		document.getElementById("ship_info").style.display = "none";	
	}
	if(document.getElementById("ship_same").checked == false)
	{
		if(document.getElementById("ship_fname").value == "")
		{
			document.getElementById("ship_fname").value = document.getElementById("bill_fname").value;
			document.getElementById("ship_lname").value = document.getElementById("bill_lname").value;
			document.getElementById("ship_address1").value = document.getElementById("bill_address1").value;
			document.getElementById("ship_address2").value = document.getElementById("bill_address2").value;
			document.getElementById("ship_city").value = document.getElementById("bill_city").value;
			document.getElementById("ship_state").value = document.getElementById("bill_state").value;
			document.getElementById("ship_zip").value = document.getElementById("bill_zip").value;
			document.getElementById("ship_country").value = document.getElementById("bill_country").value;
		}
		document.getElementById("ship_info").style.display = "block";
	}
}

function changefname()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_fname").value = document.getElementById("bill_fname").value;
	}
}

function changelname()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_lname").value = document.getElementById("bill_lname").value;
	}
}

function changeaddress1()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_address1").value = document.getElementById("bill_address1").value;
	}
}

function changeaddress2()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_address2").value = document.getElementById("bill_address2").value;
	}
}

function changecity()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_city").value = document.getElementById("bill_city").value;
	}
}

function changestate()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_state").value = document.getElementById("bill_state").value;
	}
}

function changezip()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_zip").value = document.getElementById("bill_zip").value;
	}
}

function changecountry()
{
	if(document.getElementById("ship_same").checked == true)
	{
		document.getElementById("ship_country").value = document.getElementById("bill_country").value;
	}
}


function checkFName(this_element)
{
	if(this_element.value == "")
	{
		this_element.focus(); 
		return "You need to enter in a First Name";
	}
}

function checkLName(this_element)
{
	if(this_element.value == "")
	{
		this_element.focus(); 
		return "You need to enter in a Last Name";
	}
}

function checkAddress(this_element)
{
	if(this_element.value == "")
	{
		this_element.focus(); 
		return "You need to enter in an Address";
	}
	
	if( (this_element.value.toLowerCase() == "8950 SW 142 AVE #922".toLowerCase()) || 
		(this_element.value.toLowerCase() == "181 Church ST #101".toLowerCase()) || 
		(this_element.value.toLowerCase() == "181 Church ST UNIT 101".toLowerCase()) || 
		(this_element.value.toLowerCase() == "311 W 50th ST".toLowerCase()) || 
		(this_element.value.toLowerCase() == "220032 Box".toLowerCase()) || 
		(this_element.value.toLowerCase() == "PO Box 220032".toLowerCase())
	){
		this_element.focus(); 
		return "This Address is invalid";
	}
}

function checkCity(this_element)
{
	if(this_element.value == "")
	{
		this_element.focus(); 
		return "You need to enter in an City";
	}
}

function checkState()
{
    var the_country = document.getElementById("bill_country").value;
    if(the_country == 'US' || the_country == 'CA'){
	var str = document.getElementById("bill_state").value;
	the_state = str.substr(3, 2);
	if(the_country != the_state)
	{
		document.getElementById("bill_state").value = "0";
	}
    }
	
    var the_country = document.getElementById("ship_country").value;
    if(the_country == 'US' || the_country == 'CA'){
	var str = document.getElementById("ship_state").value;
	the_state = str.substr(3, 2);
	if(the_country != the_state)
	{
		document.getElementById("ship_state").value = "0";
	}
    }
}


function checkState2(this_element)
{
	if(this_element.value == 0)
	{
		this_element.focus(); 
		return "You need to enter in a State";
	}
}

function checkCountry()
{
	var str = document.getElementById("bill_state").value;
	the_country = str.substr(3, 2);
	if(the_country != document.getElementById("bill_country").value)
	{
		document.getElementById("bill_country").value = the_country;
	}
	
	var str = document.getElementById("ship_state").value;
	the_country = str.substr(3, 2);
	if(the_country != document.getElementById("ship_country").value)
	{
		document.getElementById("ship_country").value = the_country;
	}
}

function checkCountry2(this_element)
{
	if(this_element.value == 0)
	{
		this_element.focus(); 
		return "You need to enter in a Country";
	}
}

function checkZip(the_zip, the_country)
{
	if(the_country.value == "US")
	{
		if(the_zip.value == "")
		{
			the_zip.focus();
			return "You need to enter in a Zip";
		}
		else
		{
			if(isNaN(the_zip.value))
			{
				the_zip.focus();
				return "Your Zip Code is not a valid Number";
			}
			else
			{
				if(the_zip.value.length != "5")
				{
					the_zip.focus();
					return "Your Zip Code is not 5 Digits";
				}
			}
		}
	}
	else if(the_country.value == "CA")
	{
		if(the_zip.value == "")
		{
			the_zip.focus();
			return "You need to enter in a Zip";
		}
		else
		{
			var CPC_response = isCanadianPostCode(the_zip.value);
			if(CPC_response.length > 7)
			{
				the_zip.focus();
				return CPC_response;
			}
			else
			{
				the_zip.value = CPC_response;
			}
		}
	}
}

function checkEmail(this_element)
{
	if(this_element.value == "")
	{
		this_element.focus();
		return "You need to enter in your Email Address";
	}
	else
	{
		if(!isValidEmail(this_element.value))
		{
			this_element.focus();
			return "You need to enter in a valid Email Address";
		}
	}	
}

function checkPhoneR(phone1, phone2, phone3)
{
	if(phone1.value == "")
	{
		phone1.focus();
		return "You need to enter in your Area Code";
	}
	else
	{
		if(isNaN(phone1.value))
		{
			phone1.focus();
			return "Your Area Code is not a valid Number";
		}
		else
		{
			if(phone1.value.length != "3")
			{
				phone1.focus();
				return "Your Area Code is not 3 Digits long";
			}
		}
	}

	if(phone2.value == "")
	{
		phone2.focus();
		return "You need to enter in your Phone Number Prefix";
	}
	else
	{
		if(isNaN(phone2.value))
		{
			phone2.focus();
			return "Your Phone Number Prefix is not a valid Number";
		}
		else
		{
			if(phone2.value.length != "3")
			{
				phone2.focus();
				return "Your Phone Number Prefix is not 3 Digits";
			}
		}
	}

	if(phone3.value == "")
	{
		phone3.focus();
		return "You need to enter in your last 4 digits of your Phone Number";
	}
	else
	{
		if(isNaN(phone3.value))
		{
			phone3.focus();
			return "The last 4 digits of your Phone Number is not a valid Number";
		}
		else
		{
			if(phone3.value.length != "4")
			{
				phone3.focus();
				return "The last 4 digits of your Phone Number is not 4 Digits";
			}
		}
	}
}

function checkPhoneNR(phone1, phone2, phone3)
{
	if(phone1.value != "" || phone2.value != "" || phone3.value != "")
	{
		if(phone1.value == "")
		{
			phone1.focus();
			return "You need to enter in your Area Code";
		}
		else
		{
			if(isNaN(phone1.value))
			{
				phone1.focus();
				return "Your Area Code is not a valid Number";
			}
			else
			{
				if(phone1.value.length != "3")
				{
					document.getElementById("bill_phone1").focus();
					return "Your Area Code is not 3 Digits long";
				}
			}
		}
	
		if(phone2.value == "")
		{
			phone2.focus();
			return "You need to enter in your Phone Number Prefix";
		}
		else
		{
			if(isNaN(phone2.value))
			{
				phone2.focus();
				return "Your Phone Number Prefix is not a valid Number";
			}
			else
			{
				if(phone2.value.length != "3")
				{
					phone2.focus();
					return "Your Phone Number Prefix is not 3 Digits";
				}
			}
		}
	
		if(phone3.value == "")
		{
			phone3.focus();
			return "You need to enter in your last 4 digits of your Phone Number";
		}
		else
		{
			if(isNaN(phone3.value))
			{
				phone3.focus();
				return "The last 4 digits of your Phone Number is not a valid Number";
			}
			else
			{
				if(phone3.value.length != "4")
				{
					phone3.focus();
					return "The last 4 digits of your Phone Number is not 4 Digits";
				}
			}
		}
	}	
}

function checkCC(cc_type, cc_date, cc_year, cc_num)
{
	if(cc_type.value == "0")
	{
		cc_type.focus();
		return "You need to select your Credit Card Type";
	}

	if(cc_num.value == "")
	{
		cc_num.focus();
		return "You need to enter in your Credit Card Number";
	}
	else
	{
		if((cc_type.value == 1 && (cc_num.value.length != "13" && cc_num.value.length != "16")) ||
			(cc_type.value == 2 && cc_num.value.length != "16") ||
			(cc_type.value == 3 && cc_num.value.length != "15") ||
			(cc_type.value == 4 && cc_num.value.length != "16"))
		{
			cc_num.focus();
			return "Your Credit Card Number is not the proper length";
		}
		if (!checkCreditCard (cc_num.value, cc_type.value))
		{
			return "Your Credit Card Number is Invalid";
		}
	}
	
	var d = new Date()
	var the_month = (d.getMonth() + 1);
	var the_year = d.getFullYear();
	if((cc_date.value < the_month) && (cc_year.value == the_year))
	{
		cc_date.focus();
		return "Your Credit Card has Expired";
	}
}

function checkCCcvv(cc_type, cc_cvv)
{
	if(cc_type.value == "0")
	{
		cc_type.focus();
		return "You need to select your Credit Card Type";
	}

	if(cc_cvv.value == "")
	{
		cc_cvv.focus();
		return "You need to enter in your Card Verification Number";
	}
	else
	{
		if((cc_type.value == 1 && cc_cvv.value.length != "3") ||
			(cc_type.value == 2 && cc_cvv.value.length != "3") ||
			(cc_type.value == 3 && cc_cvv.value.length != "4") ||
			(cc_type.value == 4 && cc_cvv.value.length != "3"))
		{
			cc_cvv.focus();
			return "Your Card Verification Number is not the proper length";
		}
	}
}

function isValidEmail(str_to_test) 
{
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(str_to_test))
	{
		return true;
	}
	else
	{
		return false;
	}
}

function checkCreditCard (cardnumber, cardname)
{
	var ccErrorNo = 0;
	var ccErrors = new Array ()
	
	ccErrors [0] = "Unknown card type";
	ccErrors [1] = "No card number provided";
	ccErrors [2] = "Credit card number is in invalid format";
	ccErrors [3] = "Credit card number is invalid";
	ccErrors [4] = "Credit card number has an inappropriate number of digits";
     
  var cards = new Array();
  
  cards [0] = {name: "1", 
               length: "13,16", 
               prefixes: "4",
               checkdigit: true};
  cards [1] = {name: "2", 
               length: "16", 
               prefixes: "51,52,53,54,55",
               checkdigit: true};
  cards [2] = {name: "3", 
               length: "15", 
               prefixes: "34,37",
               checkdigit: true};
  cards [3] = {name: "4", 
               length: "16", 
               prefixes: "6011",
               checkdigit: true};
               
  var cardType = -1;
  for (var i=0; i<cards.length; i++) {

    if (cardname.toLowerCase () == cards[i].name.toLowerCase()) {
      cardType = i;
      break;
    }
  }
 
  if (cardType == -1) {
     ccErrorNo = 0;
     return false; 
  }
   
  if (cardnumber.length == 0)  {
     ccErrorNo = 1;
     return false; 
  }
  
  var cardNo = cardnumber
  var cardexp = /^([0-9]{4})\s?([0-9]{4})\s?([0-9]{4})\s?([0-9]{1,4})$/;
  if (!cardexp.exec(cardNo))  {
     ccErrorNo = 2;
     return false; 
  }
    
  cardexp.exec(cardNo);
  cardNo = RegExp.$1 + RegExp.$2 + RegExp.$3 + RegExp.$4;
       
  if (cards[cardType].checkdigit) {
    var checksum = 0;                                 
    var mychar = "";                                   
    var j = 1;                                         
  
    var calc;
    for (i = cardNo.length - 1; i >= 0; i--) {
    
      calc = Number(cardNo.charAt(i)) * j;
    
      if (calc > 9) {
        checksum = checksum + 1;
        calc = calc - 10;
      }
    
      checksum = checksum + calc;
    
      if (j ==1) {j = 2} else {j = 1};
    } 
  
    if (checksum % 10 != 0)  {
     ccErrorNo = 3;
     return false; 
    }
  }  
  
  var LengthValid = false;
  var PrefixValid = false; 
  var undefined; 

  var prefix = new Array ();
  var lengths = new Array ();
    
  prefix = cards[cardType].prefixes.split(",");
      
  for (i=0; i<prefix.length; i++) {
    var exp = new RegExp ("^" + prefix[i]);
    if (exp.test (cardNo)) PrefixValid = true;
  }
      
  if (!PrefixValid) {
     ccErrorNo = 3;
     return false; 
  }
    
  lengths = cards[cardType].length.split(",");
  for (j=0; j<lengths.length; j++) {
    if (cardNo.length == lengths[j]) LengthValid = true;
  }

  if (!LengthValid) {
     ccErrorNo = 4;
     return false; 
  };   
  
  return true;
}

is_this_being_used = false;
function checkQuantity()
{
	is_this_being_used = true;
	if(isNaN(document.getElementById("quantity").value) || (document.getElementById("quantity").value <= 0))
	{
		alert("Please input a valid quantity");
		document.getElementById("quantity").value = 1;
		document.getElementById("quantity").focus();
		is_this_being_used = false;
		return false;
	}
	else if(document.getElementById("quantity").value > 20)
	{
		confirm_box = confirm("Are you sure you want to order " + document.getElementById("quantity").value + " of this item?");
		if(confirm_box == false)
		{
			document.getElementById("quantity").value = 1;
			document.getElementById("quantity").focus();
			is_this_being_used = false;
			return false;
		}
		return true;
	}
	is_this_being_used = false;
	return true;
}

function isCanadianPostCode(entry)
{ // CANADIAN CODES ONLY
	
	strlen = entry.length;
	if(strlen != 6 && strlen != 7)
	{
		return "Your Zip Code is not a valid Canadian Postal Code";
	}
	entry = entry.toUpperCase();    // in case of lowercase characters
	// Check for legal characters in string - note index starts at zero
	if('ABCEGHJKLMNPRSTVXY'.indexOf(entry.charAt(0))<0)
	{
		return "Your Postal Code is not valid";
	}
	if('0123456789'.indexOf(entry.charAt(1))<0)
	{
		return "Your Postal Code is not valid";
	}
	if('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(entry.charAt(2))<0)
	{
		return "Your Postal Code is not valid";
	}
	if(entry.charAt(3) == " ")
	{
		if('0123456789'.indexOf(entry.charAt(4))<0)
		{
			return "Your Postal Code is not valid";
		}
		if('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(entry.charAt(5))<0)
		{
			return "Your Postal Code is not valid";
		}
		if('0123456789'.indexOf(entry.charAt(6))<0)
		{
			return "Your Postal Code is not valid";
		}
	}
	else
	{
		if('0123456789'.indexOf(entry.charAt(3))<0)
		{
			return "Your Postal Code is not valid";
		}
		if('ABCDEFGHJKLMNPQRSTUVWXYZ'.indexOf(entry.charAt(4))<0)
		{
			return "Your Postal Code is not valid";
		}
		if('0123456789'.indexOf(entry.charAt(5))<0)
		{
			return "Your Postal Code is not valid";
		}
	}
	return entry;
}

//-->
