var val_bill_phone = true;
var val_ship_phone = true;
var skip_avs = false;
var canadian_payment_alert = "Please note:\nCanadian and Paypal Orders will still receive the same great price of only $39.95 plus shipping, but are not eligible for the 30-day trial and will be billed today at this low price."

//////////////////////////////////////////////////////////////////////////////
var errorcolor = "#FCFCC2";
var normalcolor = "#FFFFFF";
var errormessage = "";
function MM_CheckFlashVersion(reqVerStr,msg){
    return;
  with(navigator){
    var isIE  = (appVersion.indexOf("MSIE") != -1 && userAgent.indexOf("Opera") == -1);
    var isWin = (appVersion.toLowerCase().indexOf("win") != -1);
    if (!isIE || !isWin){  
      var flashVer = -1;
      if (plugins && plugins.length > 0){
        var desc = plugins["Shockwave Flash"] ? plugins["Shockwave Flash"].description : "";
        desc = plugins["Shockwave Flash 2.0"] ? plugins["Shockwave Flash 2.0"].description : desc;
        if (desc == "") flashVer = -1;
        else{
          var descArr = desc.split(" ");
          var tempArrMajor = descArr[2].split(".");
          var verMajor = tempArrMajor[0];
          var tempArrMinor = (descArr[3] != "") ? descArr[3].split("r") : descArr[4].split("r");
          var verMinor = (tempArrMinor[1] > 0) ? tempArrMinor[1] : 0;
          flashVer =  parseFloat(verMajor + "." + verMinor);
        }
      }
      // WebTV has Flash Player 4 or lower -- too low for video
      else if (userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 4.0;

      var verArr = reqVerStr.split(",");
      var reqVer = parseFloat(verArr[0] + "." + verArr[2]);
  
      if (flashVer < reqVer){
        if (confirm(msg))
          window.location = "http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash";
      }
    }
  } 
}

function CheckNum(cardnum)
{
    if (cardnum == '')
	{
	    return 0;
	}
    if (isNaN(cardnum))
	{
	    return 0;
	}
    if (!CheckLUHN(cardnum))
	{
	    return 0;
	}
    return 1;
}

function CheckLUHN(cardnum)
{
    var RevNum = new String(cardnum);
    RevNum = Reverse(RevNum);

    var total = new Number(0);
    for ( var i = 0; i < RevNum.length; i += 1 )
	{
	    var temp = 0;
	    if (i % 2)
		{
		    temp = RevNum.substr(i, 1) * 2;
		    if (temp >= 10)
			{
			    var splitstring = new String(temp);
			    temp = parseInt(splitstring.substr(0, 1)) + parseInt(splitstring.substr(1, 1));
			}
		}
	    else
		{
		    temp = RevNum.substr(i, 1);
		}
	    total += parseInt(temp);
	}
    // if there's no remainder, we return 1 (true)
    return (total % 10) ? 0 : 1;
}

function Reverse(strToReverse)
{
    var strRev = new String;
    var i = strToReverse.length;

    while (i--)
	{
	    strRev += strToReverse.charAt(i);
	}
    return strRev;
}
function stringFilter (input) {
var s = input;
filteredValues = "- ";     // Characters stripped out
var i;
var returnString = "";
for (i = 0; i < s.length; i++) {  // Search through string and append to unfiltered values to returnString.
var c = s.charAt(i);
if ( !((c == '-') || (c == ' '))) returnString += c;
}
return returnString;
}
function d_validate()
{
    errormessage = ""

	if(document.getElementById("card_number") != null)
	{
		if (CheckNum(document.getElementById("card_number").value) == 0)
		{
	        errormessage = errormessage + "Please enter a valid Credit Card Number\n" ;
	        document.getElementById("card_number").focus();
	        document.getElementById("card_number").style.backgroundColor = errorcolor;
	    }
	    else
	    {
	        document.getElementById("card_number").style.backgroundColor = normalcolor;
		}
		
		var cDate = new Date();
		var curMonth = cDate.getMonth() + 1;
		var curYear  = cDate.getFullYear();
		var frmMonth = document.getElementById("card_month").value;
		var frmYear =  document.getElementById("card_year").value;

		if(frmYear < curYear || (curMonth > frmMonth && frmYear == curYear))
		{
			errormessage = errormessage + "Please select a valid expiration date\n" ;
			document.getElementById("card_month").style.backgroundColor = errorcolor;
			document.getElementById("card_year").style.backgroundColor = errorcolor;
		}
		else
		{
			document.getElementById("card_month").style.backgroundColor = errorcolor;
			document.getElementById("card_year").style.backgroundColor = normalcolor;
		}
		
		if  (document.getElementById("cvv2").value.length < 3 || document.getElementById("cvv2").value.length > 4)
		{
			errormessage = errormessage + "Please enter a valid Cvv2\n";
			document.getElementById("cvv2").style.backgroundColor = errorcolor;
		}
		else
		{
			document.getElementById("cvv2").style.backgroundColor = normalcolor;
		}
	}
        
	validate_billing();
	
	if  (!validate_email())
	{
		errormessage= errormessage + "Please enter a valid email address\n" ;
		document.getElementById("email_address").style.backgroundColor = errorcolor;
	}
	else
	{
		//document.getElementById("email_address").style.backgroundColor = normalcolor;
		if (document.getElementById("email_address").value != document.getElementById("email_address_c").value)
		{
		    errormessage= errormessage + "Your email addresses do not match\n";
		    document.getElementById("email_address").style.backgroundColor = errorcolor;
		    document.getElementById("email_address_c").style.backgroundColor = errorcolor;
		}
		else
		{
		    document.getElementById("email_address").style.backgroundColor = normalcolor;
		    document.getElementById("email_address_c").style.backgroundColor = normalcolor;
		}
	}
	
	if (!validate_phone('billing_phone'))
	{
	    errormessage= errormessage + "Please enter a valid phone number\n";
	    document.getElementById("billing_phone").style.backgroundColor = errorcolor;
	}
	else
	{
	    document.getElementById("billing_phone").style.backgroundColor = normalcolor;
	}
	
	if(document.getElementById("shipping_billing_different") != null)
	{
		if(document.getElementById("shipping_billing_different").checked == true)
		{
			validate_shipping();
		}
	}

    
    if (errormessage != "")
    {
        var errormessage2 = "Please make these corrections before proceeding\n";
        errormessage = errormessage2 + errormessage;
        alert(errormessage);
   	    return false;
    }
    return true;
}

function validate_email() 
{
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	var address = document.getElementById("email_address").value;
	if(reg.test(address) == false)
	{
		return false;
	}
	return true;
}

function validate_phone(phone_number_to_validate)
{
    return true;
    //var reg = /^\d{3}[\ -]{0,1}\d{3}[\ -]{0,1}\d{4}$/;
    var reg = /^(\(?\d\d\d\)?\s?)?( |-|\.)?\d\d\d( |-|\.)?\d{4,4}(( |-|\.)?[ext\.]+ ?\d+)?$/;
    var phone = document.getElementById(phone_number_to_validate).value;
    if (phone == '') return true;
    if(reg.test(phone) == false)
    {
        return false;
    }
    return true;
}

function validate_zip(zip_to_validate)
{
	var reg = /(^\d{5}$)|(^\d{5}-\d{4}$)/;
	var zip = document.getElementById(zip_to_validate).value;
	if(reg.test(zip) == false)
	{
		return false;
	}
	return true;
}

function validate_ca_zip(zip_to_validate)
{
    var reg = /(^[A-Z]\d[A-Z][- |]\d[A-Z]\d$)/;
	var zip = document.getElementById(zip_to_validate).value;
	zip = zip.toUpperCase();
	if(reg.test(zip) == false)
	{
		return false;
	}
	return true;
}

function validate_name(name_to_validate, minLength)
{
	var reg = /^[a-zA-Z]{1,}[ ]{0,1}[a-zA-Z]{0,}[\']{0,1}[a-zA-Z]{0,}[ ]{0,1}[a-zA-Z]{0,}[\']{0,1}[a-zA-Z]{1,}[ ]{0,1}/;
	var name = document.getElementById(name_to_validate).value.replace(/^\s+|\s+$/g, '');
	
    if (minLength != undefined)
    {
	    if (name.length < minLength)
	        return false;
    }
    return true;
	if(reg.test(name) == false)
	{
		return false;
	}
	return true;
}

function parse_fullname(fullname_section)
{
	var fullname = document.getElementById(fullname_section + "_fullname").value

	document.getElementById(fullname_section + "_firstname").value = fullname.substring(0, fullname.indexOf(" "));
	document.getElementById(fullname_section + "_lastname").value = fullname.substring(fullname.indexOf(" ") + 1, fullname.length);

	return false;
}

function toggle_shipping_info()
{
    if(document.getElementById("shipping_billing_different").checked == true)
    {
        document.getElementById("shipping_info").style.display = "";
    }
    else
    {
        document.getElementById("shipping_info").style.display = "none";
    }
}

function validate_billing()
{
	
    if(!validate_name("billing_firstname", 2))
    {
        errormessage = errormessage + "Please enter a valid billing first name\n" ;
        document.getElementById("billing_firstname").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_firstname", 2).style.backgroundColor = normalcolor;
    }
        
    if(!validate_name("billing_lastname"))
    {
        errormessage = errormessage + "Please enter a valid billing last name\n" ;
        document.getElementById("billing_lastname").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_lastname").style.backgroundColor = normalcolor;
    }
        
    if(document.getElementById("billing_address1").value.length < 3)
    {
        errormessage = errormessage + "Please enter a valid billing address\n" ;
        document.getElementById("billing_address1").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_address1").style.backgroundColor = normalcolor;
    }
        
    if(!validate_name("billing_city"))
    {
        errormessage = errormessage + "Please enter a valid billing city\n" ;
        document.getElementById("billing_city").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_city").style.backgroundColor = normalcolor;
    }
        
    if(document.getElementById("billing_state").value == "select")
    {
        errormessage = errormessage + "Please select a valid billing state\n";
        document.getElementById("billing_state").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_state").style.backgroundColor = normalcolor;
    }
    if(document.getElementById("billing_country").value == "US")
	{
	    if(!validate_zip("billing_zip"))
	    {
	        errormessage = errormessage + "Please enter a valid billing zip\n";
	        document.getElementById("billing_zip").style.backgroundColor = errorcolor;
	    }
	    else
	    {
	        document.getElementById("billing_zip").style.backgroundColor = normalcolor;
	    }
	}
	else if(document.getElementById("billing_country").value == "CA")
	{
		if(!validate_ca_zip("billing_zip"))
	    {
	        errormessage = errormessage + "Please enter a valid billing zip\n";
	        document.getElementById("billing_zip").style.backgroundColor = errorcolor;
	    }
	    else
	    {
	        document.getElementById("billing_zip").style.backgroundColor = normalcolor;
	    }
	}
 	
	if(document.getElementById("billing_phone") != null)
    {
		if(val_bill_phone == true)
		{
			 if(!validate_phone("billing_phone"))
			 {
				errormessage = errormessage + "Please enter a valid billing phone number\n";
				document.getElementById("billing_phone").style.backgroundColor = errorcolor;
			 }
			 else
			 {
				document.getElementById("billing_phone").style.backgroundColor = normalcolor;
			 }
		}
		else
		{
			if(document.getElementById("billing_phone").value != "")
			{
				if(!validate_phone("billing_phone"))
				 {
					errormessage = errormessage + "Please enter a valid billing phone number\n";
					document.getElementById("billing_phone").style.backgroundColor = errorcolor;
				 }
				 else
				 {
					document.getElementById("billing_phone").style.backgroundColor = normalcolor;
				 }
			}
		}
	}
}

function validate_shipping()
{
	if(document.getElementById("billing_fullname") != null)
	{
		parse_fullname("shipping");
	}
	
    if(!validate_name("shipping_firstname"))
    {
        errormessage= errormessage + "Please enter a valid shipping first name\n";
        document.getElementById("shipping_firstname").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("shipping_firstname").style.backgroundColor = normalcolor;
    }
        
    if(!validate_name("shipping_lastname"))
    {
        errormessage= errormessage + "Please enter a valid shipping last name\n";
        document.getElementById("shipping_lastname").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("shipping_lastname").style.backgroundColor = normalcolor;
    }
        
    if(document.getElementById("shipping_address1").value.length < 3)
    {
        errormessage = errormessage + "Please enter a valid shipping address\n";
        document.getElementById("shipping_address1").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("shipping_address1").style.backgroundColor = normalcolor;
    }
        
    if(!validate_name("shipping_city"))
    {
        errormessage = errormessage + "Please enter a valid shipping city\n";
        document.getElementById("shipping_city").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("shipping_city").style.backgroundColor = normalcolor;
    }
        
    if(document.getElementById("shipping_state").value == "select")
    {
        errormessage = errormessage + "Please select a valid shipping state\n";
        document.getElementById("shipping_state").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("shipping_state").style.backgroundColor = normalcolor;
    }
	
    if(document.getElementById("shipping_country").value == "US")
	{
	    if(!validate_zip("shipping_zip"))
	    {
	        errormessage = errormessage + "Please enter a valid shipping zip\n" ;
	        document.getElementById("shipping_zip").style.backgroundColor = errorcolor;
	    }
	    else
	    {
	        document.getElementById("shipping_zip").style.backgroundColor = normalcolor;
	    }
	}
	else if(document.getElementById("shipping_country").value == "CA")
	{
		if(!validate_ca_zip("shipping_zip"))
	    {
	        errormessage = errormessage + "Please enter a valid shipping zip\n" ;
	        document.getElementById("shipping_zip").style.backgroundColor = errorcolor;
	    }
	    else
	    {
	        document.getElementById("shipping_zip").style.backgroundColor = normalcolor;
	    }
	}
    
    if(document.getElementById("shipping_phone") != null)
    {
        if(val_ship_phone == true)
        {
             if(!validate_phone("shipping_phone"))
             {
                errormessage = errormessage + "Please enter a valid shipping phone number\n";
                document.getElementById("shipping_phone").style.backgroundColor = errorcolor;
             }
             else
             {
                document.getElementById("shipping_phone").style.backgroundColor = normalcolor;
             }
        }
        else
        {
            if(document.getElementById("shipping_phone").value != "")
            {
                !validate_phone("shipping_phone");
            }
        }     
    }
}

function validate_simple_info()
{
    errormessage = ""
    
    if(!validate_name("billing_fullname"))
    {
        errormessage = errormessage + "Please enter a valid billing name\n" ;
        document.getElementById("billing_fullname").style.backgroundColor = errorcolor;
    }
    else
    {
        document.getElementById("billing_fullname").style.backgroundColor = normalcolor;
    }
    
    if  (!validate_email())
    {
        errormessage= errormessage + "Please enter a valid email address\n" ;
        document.getElementById("email_address").style.backgroundColor = errorcolor;
    }
	else
	{
		document.getElementById("email_address").style.backgroundColor = normalcolor;
	}
    
    if (errormessage != "")
    {
        var errormessage2 = "Please make these corrections before proceeding\n";
        errormessage = errormessage2 + errormessage;
        alert(errormessage);
   	    return false;
    }

    return true;
}

function validate_payment()
{
    errormessage = ""

    var confirm_response = true

    var isCheck = false;
    if (document.getElementById("is_check") != null) {
        isCheck = document.getElementById("is_check").checked;
    }
	
	if(document.getElementById("billing_country").value == 'CA')
	{
		//confirm_response = confirm(canadian_payment_alert)
	}

	if (!debit_aggreement()) {
	    errormessage = errormessage + "You must click the box to agree to debit card terms.\n";
	}

	if (confirm_response == true) {
	    if (isCheck == false) {
	        document.getElementById("card_number").value = stringFilter(document.getElementById("card_number").value);
	        if (CheckNum(document.getElementById("card_number").value) == 0) {
	            errormessage = errormessage + "Please enter a valid Credit Card Number\n";
	            document.getElementById("card_number").focus();
	            document.getElementById("card_number").style.backgroundColor = errorcolor;
	        }
	        else {
	            document.getElementById("card_number").style.backgroundColor = normalcolor;
	            var cDate = new Date();
	            var curMonth = cDate.getMonth() + 1;
	            var curYear = cDate.getFullYear();
	            var frmMonth = document.getElementById("card_month").value;
	            var frmYear = document.getElementById("card_year").value;

	            if (frmYear < curYear || (curMonth > frmMonth && frmYear == curYear)) {
	                errormessage = errormessage + "Please select a valid expiration date\n";
	                document.getElementById("card_month").style.backgroundColor = errorcolor;
	                document.getElementById("card_year").style.backgroundColor = errorcolor;
	            }
	            else {
	                document.getElementById("card_month").style.backgroundColor = errorcolor;
	                document.getElementById("card_year").style.backgroundColor = normalcolor;
	            }

	            if (document.getElementById("cvv2").value.length < 3 || document.getElementById("cvv2").value.length > 4) {
	                errormessage = errormessage + "Please enter a valid Cvv2\n";
	                document.getElementById("cvv2").style.backgroundColor = errorcolor;
	            }
	            else {
	                document.getElementById("cvv2").style.backgroundColor = normalcolor;
	            }
	        }
	    }
	    else {
	        if (isCheck) {
	            if (document.getElementById("routingNumber").value.length == 0) {
	                errormessage = errormessage + "Please enter a valid routing number\n";
	                document.getElementById("routingNumber").focus();
	                document.getElementById("routingNumber").style.backgroundColor = errorcolor;
	            }
	            else {
	                document.getElementById("routingNumber").style.backgroundColor = normalcolor;
	            }
	            if (document.getElementById("accountNumber").value.length == 0) {
	                errormessage = errormessage + "Please enter a valid account number\n";
	                document.getElementById("accountNumber").focus();
	                document.getElementById("accountNumber").style.backgroundColor = errorcolor;
	            }
	            else {
	                document.getElementById("accountNumber").style.backgroundColor = normalcolor;
	            }
	        }
	    }
	}
	else {
	    return false;
	}
    if (errormessage != "") {
        var errormessage2 = "Please make these corrections before proceeding\n";
        errormessage = errormessage2 + errormessage;
        alert(errormessage);
   	    return false;
    }
    return true;
}

function full_validation() {

       
	if(d_validate() == true)
	{
		if(document.getElementById("billing_country").value == "US")
		{
			if(skip_avs == false)
			{
			    var billing_address1 = escape(document.getElementById('billing_address1').value);
			    var billing_address2 = document.getElementById('billing_address2') == undefined ? ' ' : escape(document.getElementById('billing_address2').value);
			    window_value = window.open('/aspbp/search.asp?billing_address1=' + billing_address1 + '&billing_address2=' + billing_address2 + '&billing_city=' + escape(document.getElementById('billing_city').value) + '&billing_state=' + escape(document.getElementById('billing_state').value) + '&billing_zip=' + document.getElementById('billing_zip').value, 'address_validation', 'width=665, height=300, resizable=1, scrollbars=1');
				//alert('/aspbp/search.asp?billing_address1=' + escape(document.getElementById('billing_address1').value) + '&billing_address2=' + escape(document.getElementById('billing_address2').value) + '&billing_city=' + escape(document.getElementById('billing_city').value) + '&billing_state=' + escape(document.getElementById('billing_state').value) + '&billing_zip=' + document.getElementById('billing_zip').value)
				//window_value = window.open('/aspbp/search.asp?billing_address1=' + document.getElementById('billing_address1').value + '&billing_address2=' + document.getElementById('billing_address2').value + '&billing_city=' + document.getElementById('billing_city').value + '&billing_state=' + document.getElementById('billing_state').value + '&billing_zip=' + document.getElementById('billing_zip').value, 'address_validation', 'width=665, height=300, resizable=0');
				return false;
			}
			else
			{
				return true;
			}
		}
		else if(document.getElementById("billing_country").value == "CA")
		{
			return true
		}
	}
	
	return false;
}
function debit_aggreement() {
    return true;
//    if (document.getElementById("is_debit").checked)
 //       return document.getElementById("chkAcceptDebitTerms").checked
 //   return true;
}
function toggle_payment_info(payment_type)
{
	if(payment_type == "p")
	{
		document.getElementById("paypal_info").style.display = "";
		document.getElementById("cc_info").style.display = "none";
	}
	else
	{
		document.getElementById("paypal_info").style.display = "none";
		document.getElementById("cc_info").style.display = "";
	}
}