function LuhnCheck(str){

  var result = true;



  var sum = 0; 

  var mul = 1; 

  var strLen = str.length;

  

  for (i = 0; i < strLen; i++){

    var digit = str.substring(strLen-i-1,strLen-i);

    var tproduct = parseInt(digit ,10)*mul;

    if (tproduct >= 10)

      sum += (tproduct % 10) + 1;

    else

      sum += tproduct;

    if (mul == 1)

      mul++;

    else

      mul--;

  }

  if ((sum % 10) != 0)

    result = false;

    

  return result;

}





function validateCCNum(cardNum){

	var result = false;

	var cardLen = cardNum.length;

	var firstdig = cardNum.substring(0,1);

	var seconddig = cardNum.substring(1,2);

	var first4digs = cardNum.substring(0,4);



	//cascade validation

	for(i=0; i<5; i++){

		switch(i){

			case 0: //"VISA":

				result = ((cardLen == 16) || (cardLen == 13)) && (firstdig == "4");

				break;

			case 1: //"AMEX":

				var validNums = "47";

				result = (cardLen == 15) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);

				break;

			case 2: //"MASTERCARD":

				var validNums = "12345";

				result = (cardLen == 16) && (firstdig == "5") && (validNums.indexOf(seconddig)>=0);

				break;

			case 3: //"DISCOVER":

				result = (cardLen == 16) && (first4digs == "6011");

				break;

			case 4: //"DINERS":

				var validNums = "068";

				result = (cardLen == 14) && (firstdig == "3") && (validNums.indexOf(seconddig)>=0);

				break;

		}

		if(result) return true;

	}

	return false;

}



function validateExpDate(expDate){

	//valid are  mmyy, mm/yy, mm20yy, mm/20yy

	var rex = /^(([0]\d{1})|([1]([012])))(\/?)(([2][0])?)(\d{2})$/;

	return rex.test(expDate);

}



function validateExpMonth(expDate){

	//valid are  01-12

	var rex = /^(([0]?\d{1})|([1]([012])))$/;

	return rex.test(expDate);

}



function validateExpYear(expDate){

	//valid are  mmyy, mm/yy, mm20yy, mm/20yy

	var rex = /^(([2][0])?)(\d{2})$/;

	return rex.test(expDate);

}





function validateCVC2(cvc2){

	//valid are ddd or dddd

	var rex = /^(\d{3,4})$/;

	return cvc2==""?true:rex.test(cvc2);

}



function validateName(name){

	var rex = /^[a-zA-Z \-\']+$/;

	return rex.test(name);

}



function CheckField(frm, fname, ftitle){

	 if(frm.elements[fname].value == ""){

 	 	alert("Please enter " + ftitle);

 	 	frm.elements[fname].focus();

 	  	return false;

 	  }

 	  else{

 	 	return true;

 	  }

}



function CheckAddProduct(frm, min_order, max_order, allowed_max){

	var rex = /^(\d{1,})$/

	if(!rex.test(frm.elements["oa_quantity"].value)){

		alert(msg_numeric_product_quantity);

		frm.elements["oa_quantity"].focus();

		return false;

	}

	if((frm.elements["oa_quantity"].value *1) < min_order){

		alert("The number of items ordered exceeded the minimum allowed.\nPlease adjust the quantity of this order");

		frm.elements["oa_quantity"].focus();

		return false;

	}

	if((max_order != "-") && (frm.elements["oa_quantity"].value * 1 > max_order)){

		alert("The number of items ordered exceeded the maximum allowed.\nPlease adjust the quantity of this order");

		frm.elements["oa_quantity"].focus();

		return false;

	}

	if((allowed_max != "-") && (frm.elements["oa_quantity"].value * 1 > allowed_max)){

		alert("We sorry but this order will exceed our current inventory of " + allowed_max + " for this product.\nPlease adjust the quantity of this order");

		frm.elements["oa_quantity"].focus();

		return false;

	}

	return true;

}



function CheckResetPassword(frm){

	if(!CheckField(frm, "login", "username")) return false;

	if(!isEmail(frm.elements["email"].value)){

		alert(msg_enter_valid_email);

		frm.elements["email"].focus();

		return false;

	}

	return true;

}







function CheckCartForm(frm){

	var irex = /^oa_quantity\[(\d{1,})\]$/;

	var drex = /^(\d{1,})$/



	for(i=0; i<frm.elements.length; i++){

		if(irex.test(frm.elements[i].name)){

			if(!drex.test(frm.elements[i].value)){

				alert(msg_numeric_product_quantity);

				frm.elements[i].focus();

				return false;	

			}

			

			if(frm.elements[i].value * 1 < (frm.elements["min_" + frm.elements[i].name].value) * 1){

				alert("The number of items ordered exceeded the minimum allowed.\nPlease adjust the quantity of this order");

				frm.elements[i].focus();

				return false;

			}

			if(

				(frm.elements["max_" + frm.elements[i].name].value != "-") && 

				(frm.elements[i].value * 1 > frm.elements["max_" + frm.elements[i].name].value * 1)

			){

				alert("The number of items ordered exceeded the maximum allowed.\nPlease adjust the quantity of this order");

				frm.elements[i].focus();

				return false;

			}

			if(

				(frm.elements["allowed_" + frm.elements[i].name].value != "-") && 

				(frm.elements[i].value * 1 > frm.elements["allowed_" + frm.elements[i].name].value * 1)

			){

				alert("We sorry but this order will exceed our current inventory of " + frm.elements["allowed_" + frm.elements[i].name].value + " for this product.\nPlease adjust the quantity of this order");

				frm.elements[i].focus();

				return false;

			}

		}

	}



  return true;

}





function CheckNewsletters(frm){

	if(!isEmail(frm.elements["email"].value)){

		alert(msg_enter_valid_email);

		frm.elements["email"].focus();

		return false;

	}

	//alert(frm.elements["email_updates"]);

	//if((!frm.elements["email_updates"].checked) && (!frm.elements["email_newsletters"].checked)){

	//	alert(msg_choose_min_1checkbox);

	//	frm.elements["email_updates"].focus();

	//	return false;

	//}

	return true;

}



function CheckUnsubscribe(frm){

	if(!isEmail(frm.elements["email"].value)){

		alert(msg_enter_valid_email);

		frm.elements["email"].focus();

		return false;

	}

	//alert(frm.elements["email_updates"]);

	if((!frm.elements["email_updates"].checked) && (!frm.elements["email_newsletters"].checked)){

		alert(msg_choose_min_1checkbox);

		frm.elements["email_updates"].focus();

		return false;

	}

	if(confirm(msg_want_cancel_subscription)){

		return true;

	}

	return false;

}



function CheckLoginForm(frm){

	if(!CheckField(frm, "email", msg_your_username)) return false;

	if(!CheckField(frm, "password", msg_your_password)) return false;

	return true;

}



/////////////////////////////

// CHECK SIGNUP FORM

function CheckSignupForm(frm, fm_company, fm_address2, fm_phone, ship2all, ship2countries){

 

	if(!CheckField(frm, "form[fname]", msg_first_name)) return false;

	if(!CheckField(frm, "form[lname]", msg_last_name)) return false;

	if(fm_company == "Required" && (!CheckField(frm, "form[company]", 'Company Name'))) return false;

	if(!CheckField(frm, "form[address1]", msg_address_line1)) return false;

	if(fm_address2 == "Required" && (!CheckField(frm, "form[address2]", 'Address Line 2'))) return false;

	if(!CheckField(frm, "form[city]", msg_city_name)) return false;

	if(!CheckField(frm, "form[country]", msg_country)) return false;

	//check is there USA or Canada

	if(frm.elements["form[country]"].value == 1 || frm.elements["form[country]"].value == 2){

		//check USA state

		if(frm.elements["form[country]"].value == 1){	

			if(frm.elements["form[state]"].value < 1 || frm.elements["form[state]"].value > 51){

				alert(msg_select_usa_state);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

		//check Canadian Province

		if(frm.elements["form[country]"].value == 2){	

			if(frm.elements["form[state]"].value < 51 || frm.elements["form[state]"].value > 64){

				alert(msg_select_canada_province);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

	}

	else{

		//check custom province/state

		if(!CheckField(frm, "form[province]", msg_custom_province_state)) return false;

	}

	

	if(!CheckField(frm, "form[zip]", msg_zip_postal_code)) return false;

        //////////////////////////////////////////

        //  We require phone field 

        //  change by Sarun Chinskul 9-OCT-2006

	// if(fm_address2 == "Required" && (!CheckField(frm, "form[phone]", msg_phone_number))) return false;

        //////////////////////////////////////////

	// if(!CheckField(frm, "form[phone]", msg_phone_number)) return false;

        //////////////////////////////////////////

        if(!CheckField(frm, "form[areacode]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[firstthreedigit]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[lastfourdigit]", msg_phone_number)) return false;

        //////////////////////////////////////////



	if(!ship2all && frm.elements["form[thesame]"].checked){

		//check shipping country

		c = frm.elements["form[country]"].value;

		is_country = false;

		for(i=1; i<= ship2countries.length; i++){

			if(ship2countries[i] == c){

				is_country = true;

			}

		}

		if(!is_country){

			alert("We do not shipping to the country you have entered as your billing address.\nPlease uncheck \"Shipping address is the same as billing\" or select different country");

			return false;

		}



        }



  	

	if(!CheckField(frm, "form[email]", msg_email_address)) return false;

	if(!isEmail(frm.elements["form[email]"].value)){

		alert(msg_enter_valid_email);

		frm.elements["form[email]"].focus();

		return false;

	}

	// if(!CheckField(frm, "form[login]", msg_username)) return false;

	if(!CheckField(frm, "form[password]", msg_password)) return false;

	if(!CheckField(frm, "form[password2]", msg_password_confirmation)) return false;

        //////////////////////////////////////////

        /// Rmoved by Sarun Chinskul 31/08/06

        //////////////////////////////////////////

	// if(frm.elements["form[agree]"].checked == false){

        //		alert(msg_read_terms_before_registration);

	// 	return false;

	// }

        //////////////////////////////////////////

	if(frm.elements["form[country]"].value != 1)
	{
		if(frm.elements["form[termscondition]"].checked!=true)
		{
			document.getElementById('termsconditionmsgid').innerHTML = 'You need to agree to the international shipping terms in order to move forward.';
			return false;
		}
		else
		{
			document.getElementById('termsconditionmsgid').innerHTML = '';	
		}
	}


	return true;

}



function CheckShippingAddress(frm, fm_company, fm_address2){

	if(!CheckField(frm, "form[name]", msg_name)) return false;

	if(fm_company == "Required" && (!CheckField(frm, "form[company]", 'Company Name'))) return false;

	if(!CheckField(frm, "form[address1]", msg_address_line1)) return false;

	if(fm_address2 == "Required" && (!CheckField(frm, "form[address2]", 'Address Line 2'))) return false;

	if(!CheckField(frm, "form[city]", msg_city_name)) return false;

	if(!CheckField(frm, "form[country]", msg_country)) return false;

	//check is there USA or Canada

	if(frm.elements["form[country]"].value == 1 || frm.elements["form[country]"].value == 2){

		//check USA state

		if(frm.elements["form[country]"].value == 1){	

			if(frm.elements["form[state]"].value < 1 || frm.elements["form[state]"].value >51){

				alert(msg_select_usa_state);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

		//check Canadian Province

		if(frm.elements["form[country]"].value == 2){	

			if(frm.elements["form[state]"].value < 51 || frm.elements["form[state]"].value >64){

				alert(msg_select_canada_province);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

	}

	else{

		//check custom province/state

		if(!CheckField(frm, "form[province]", msg_custom_province_state)) return false;

	}

	if(!CheckField(frm, "form[zip]", msg_zip_postal_code)) return false;

	return true;

}



function CheckShippingForm(frm, fm_company, fm_address2, ship2all, ship2countries){

	var address_selected = false;

	if(!ship2all){

		for(i=0;i<frm.elements.length;i++){

			if(frm.elements[i].name == "shipping_address"){

				if(frm.elements[i] && frm.elements[i].checked && frm.elements[i].value){

					//check country

					if(frm.elements[i].value == "new"){

						//address_selected = frm.elements["form[country]"].value;

					}

					else{

						address_selected = frm.elements["country_" + frm.elements[i].value].value;

					}

				}

			}

		}

		//check shipping country

		if(address_selected){

			is_country = false;

			for(i=1; i<= ship2countries.length; i++){

				if(ship2countries[i] == address_selected){

					is_country = true;

				}

			}

			if(!is_country){

				alert("We do not shipping to the country which is set in shipping address you have selected.\nPlease select different shipping address or enter new shipping address");

				return false;

			}

		}

	}

	

	ra = document.getElementById("id_new_address_radio");

	hi = document.getElementById("id_new_address_hidden");

	he = document.getElementById("id_express_address_hidden");

	if((ra && ra.checked) || hi || he){

		if(!CheckShippingAddress(frm, fm_company, fm_address2)) return false;

		if(!ship2all){

			is_country = false;

			for(i=1; i<= ship2countries.length; i++){

				if(ship2countries[i] == frm.elements["form[country]"].value){

					is_country = true;

				}

			}

			if(!is_country){

				alert("We do not ship to the address you have entered in the shipping field.\nTo complete order please select a different country.");

				return false;

			}

		}

	}

	return true;

}



///////////////////////////////

// CHECK BILLING FORM

function CheckBillingForm(frm, fm_company, fm_address2, fm_phone){

	if(!CheckField(frm, "form[fname]", msg_first_name)) return false;

	if(!CheckField(frm, "form[lname]", msg_last_name)) return false;

	if(fm_company == "Required" && (!CheckField(frm, "form[company]", 'Company Name'))) return false;

	if(!CheckField(frm, "form[address1]", msg_address_line1)) return false;

	if(fm_address2 == "Required" && (!CheckField(frm, "form[address2]", 'Address Line 2'))) return false;

	if(!CheckField(frm, "form[city]", msg_city_name)) return false;

	//check is there USA or Canada

	if(frm.elements["form[country]"].value == 1 || frm.elements["form[country]"].value == 2){

		//check USA state

		if(frm.elements["form[country]"].value == 1){	

			if(frm.elements["form[state]"].value < 1 || frm.elements["form[state]"].value > 51){

				alert(msg_select_usa_state);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

		//check Canadian Province

		if(frm.elements["form[country]"].value == 2){	

			if(frm.elements["form[state]"].value < 51 || frm.elements["form[state]"].value > 64){

				alert(msg_select_canada_province);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

	}

	else{

		//check custom province/state

		if(!CheckField(frm, "form[province]", msg_custom_province_state)) return false;

	}

	if(!CheckField(frm, "form[zip]", msg_zip_postal_code)) return false;

        //////////////////////////////////////////

        //  We require phone field 

        //  change by Sarun Chinskul 9-OCT-2006

	// if(fm_address2 == "Required" && (!CheckField(frm, "form[phone]", msg_phone_number))) return false;

        //////////////////////////////////////////

	//if(fm_phone == "Required" && (!CheckField(frm, "form[phone]", 'Phone Number'))) return false;

        //////////////////////////////////////////

        if(!CheckField(frm, "form[areacode]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[firstthreedigit]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[lastfourdigit]", msg_phone_number)) return false;

        //////////////////////////////////////////

         

	if(!CheckField(frm, "form[email]", msg_email_address)) return false;

	if(!isEmail(frm.elements["form[email]"].value)){

		alert(msg_enter_valid_email);

		frm.elements["form[email]"].focus();

		return false;

	}

	return true;

}



///////////////////////////////

// CHECK PROFILE FORM

function CheckProfileForm(frm, fm_company, fm_address2, fm_phone){

	if(!CheckField(frm, "form[fname]", msg_first_name)) return false;

	if(!CheckField(frm, "form[lname]", msg_last_name)) return false;

	if(fm_company == "Required" && (!CheckField(frm, "form[company]", 'Company Name'))) return false;

	if(!CheckField(frm, "form[address1]", msg_address_line1)) return false;

	if(fm_address2 == "Required" && (!CheckField(frm, "form[address2]", 'Address Line 2'))) return false;

	if(!CheckField(frm, "form[city]", msg_city_name)) return false;

	if(!CheckField(frm, "form[country]", msg_country)) return false;

	//check is there USA or Canada

	if(frm.elements["form[country]"].value == 1 || frm.elements["form[country]"].value == 2){

		//check USA state

		if(frm.elements["form[country]"].value == 1){	

			if(frm.elements["form[state]"].value < 1 || frm.elements["form[state]"].value > 51){

				alert(msg_select_usa_state);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

		//check Canadian Province

		if(frm.elements["form[country]"].value == 2){	

			if(frm.elements["form[state]"].value < 51 || frm.elements["form[state]"].value > 64){

				alert(msg_select_canada_province);

				frm.elements["form[state]"].focus();

				return false;

			}

		}

	}

	else{

		//check custom province/state

		if(!CheckField(frm, "form[province]", msg_custom_province_state)) return false;

	}

	if(!CheckField(frm, "form[zip]", msg_zip_postal_code)) return false;

	if(fm_phone == "Required" && (!CheckField(frm, "form[phone]", msg_phone_number))) return false;

        //////////////////////////////////////////

        //  We require phone field 

        //  change by Sarun Chinskul 9-OCT-2006

	// if(fm_address2 == "Required" && (!CheckField(frm, "form[phone]", msg_phone_number))) return false;

        //////////////////////////////////////////

	// if(fm_phone == "Required" && (!CheckField(frm, "form[phone]", msg_phone_number))) return false;

        //////////////////////////////////////////

        if(!CheckField(frm, "form[areacode]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[firstthreedigit]", msg_phone_number)) return false;

        if(!CheckField(frm, "form[lastfourdigit]", msg_phone_number)) return false;

        //////////////////////////////////////////

         

	if(!CheckField(frm, "form[email]", msg_email_address)) return false;

	if(!isEmail(frm.elements["form[email]"].value)){

		alert(msg_enter_valid_email);

		frm.elements["form[email]"].focus();

		return false;

	}

	if(frm.elements["form[password]"].value != ""){

		if(frm.elements["form[password]"].value != frm.elements["form[password2]"].value){

			alert(msg_different_password_and_comfirmation);

			frm.elements["form[password]"].focus();

			return false;

		}

	}

	return true;

}



function CheckEmail2FriendForm(frm){

	if(!CheckField(frm, "yname", msg_your_name)) return false;

	if(!CheckField(frm, "yemail", msg_your_email_address)) return false;

	if(!isEmail(frm.elements["yemail"].value)){

		alert(msg_enter_valid_email);

		frm.elements["yemail"].focus();

		return false;

	}

	if(!CheckField(frm, "fname", msg_your_friend_name)) return false;

	if(!CheckField(frm, "femail", msg_your_friend_email_address)) return false;

	if(!isEmail(frm.elements["femail"].value)){

		alert(msg_enter_valid_email);

		frm.elements["femail"].focus();

		return false;

	}

	return true;

}



function ConfirmDeleteShippingAddress(delete_url){

	if(confirm("Do you really want to delete select address?")){

		document.location = delete_url;

	}

}



//feedback form validation (indianic)

function chk_febk(frm) {

	if(!isEmail(frm.elements["vemail"].value)){

		alert(msg_enter_valid_email);

		frm.elements["vemail"].focus();

		return false;

	} else if (frm.elements["vfirstname"].value=="") {

		alert("Please mention your name");

		frm.elements["vfirstname"].focus();		

		return false;

	} else if (frm.elements["vcity"].value=="") {

		alert("Please mention city");

		frm.elements["vcity"].focus();		

		return false;

	} else if (!chk_state(frm,frm.vcountry.value)) {

		return false;

	} else if (frm.elements["vcomments"].value=="") {

		alert("Please mention your comments");

		frm.elements["vcomments"].focus();		

		return false;

	} else {

		return true;

	}

}



//feedback form country validation (indianic)

function chk_state(frm,objval) {

	if ((objval=="US" && frm.elements["other_vstate"].value!="") || (objval!="US" && frm.elements["other_vstate"].value=="")) {

		if (objval=="US") {

			frm.elements["other_vstate"].value="";

			alert("Please select a State from the list");

			frm.elements["vstate"].focus();

		} else {

			alert("Please specify a State in the box");

			frm.elements["other_vstate"].focus();

		}

 	  	return false;

	} else {

		return true;

	}

}



//askus form validation (indianic)

function chk_askus(frm) {

	if(!isEmail(frm.elements["vemail"].value)){

		alert(msg_enter_valid_email);

		frm.elements["vemail"].focus();

		return false;

	} else if (frm.elements["vphone"].value=="") {

		alert("Please mention phone number");

		frm.elements["vphone"].focus();		

		return false;

	} else if (frm.elements["vfirstname"].value=="") {

		alert("Please mention your name");

		frm.elements["vfirstname"].focus();		

		return false;

	} else if (frm.elements["vcomments"].value=="") {

		alert("Please mention your question");

		frm.elements["vcomments"].focus();		

		return false;

	} else {

		return true;

	}

}

