String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function switchPayment(){
	if (frmEdit.payment[0].checked) {
		 divCC.style.visibility = "visible";
 		 divPO.style.visibility = "hidden";
	} else {
		 divCC.style.visibility = "hidden";
 		 divPO.style.visibility = "visible";
	}
}

function copyBilling(){
		if (frmEdit.chkCopyBilling.checked) {
			 frmEdit.shipAddress.value = frmEdit.billAddress.value;
			 frmEdit.shipCity.value = frmEdit.billCity.value;
			 frmEdit.shipState.value = frmEdit.billState.value;
			 frmEdit.shipZip.value = frmEdit.billZip.value;
		} else {
			 frmEdit.shipAddress.value = "";
			 frmEdit.shipCity.value = "";
			 frmEdit.shipState.value = "";
			 frmEdit.shipZip.value = "";
		}			
}

function submitIt ( v )
{
	if ( v == "home" )
		window.location.href = "../index.asp";
	else if ( v == "cancel" )
	{
		frmEdit.action = "order.asp?flag=cancel";
		frmEdit.submit();
	}
	else if ( v == "search" )
		window.location.href = "search.asp";
	else if ( v == "clear" )
	{	
		frmEdit.POnum.value = "";
		frmEdit.userFLName.value = "";
		//frmEdit.userLName.value = "";
		frmEdit.userEmail.value = "";
		frmEdit.userCompany.value = "";
		frmEdit.userAddress.value = "";
		frmEdit.userCity.value = "";
		frmEdit.userState.value = "";
		frmEdit.userZip.value = "";
		frmEdit.userPhone.value = "";
		frmEdit.userComments.value = "";
		frmEdit.payableContact.value = "";
		frmEdit.payableEmail.value = "";
		frmEdit.billAddress.value="";
		frmEdit.billCity.value = "";
		frmEdit.billState.value = "";
		frmEdit.billZip.value = "";
		frmEdit.shipAddress.value="";
		frmEdit.shipCity.value = "";
		frmEdit.shipState.value = "";
		frmEdit.shipZip.value = "";
		frmEdit.shipCompany.value = "";
		frmEdit.shipVia.value = "";
		frmEdit.accountNo.value = "";
		
	}
	return true;
}

function checkIt()
{

	if ( !frmEdit.termsagree.checked)
	{
		alert("You must agree to the terms and conditions");
		return false;
	}

 	var isCardValid = true;
	
	// Only check card if that radio button is selected
	if (frmEdit.payment[0].checked) {
  	isCardValid = isValidCreditCardNumber(frmEdit.card_num.value,frmEdit.CardType.value,frmEdit.exp_date_year.value,frmEdit.exp_date_month.value)
  	if (!isCardValid) {
  		 return false;
		}
	}
	
	var s = "";
	//var p = /[\(](\d{3}[\)][ ])\d{3}-\d{4}/;//format (123) 2324-1231
	
		// Only check PO if that radio button is selected
	if (frmEdit.payment[1].checked) {
  	if  ( frmEdit.POnum.value=="")
  		s =s  + "P.O. Number is required.\n";
	}
	if ( frmEdit.userFLName.value.trim()=="" )
		s = s + "Customer name is required.\n";
	//if ( frmEdit.userLName.value=="")
		//s = s + "Last name is required.\n";
	if ( frmEdit.userEmail.value.trim()=="")
		s = s + "Email is required.\n";
	 else if ( !CheckEmail(frmEdit.userEmail.value) )
		 s = s + "Email address is not right format.\n";
	if ( frmEdit.userCompany.value.trim() == ""  )
		s = s + "Company is required.\n";
	if ( frmEdit.userCity.value.trim() == "")
		s = s + "City is required.\n";
	if ( frmEdit.userState.value == "")
		s = s + "State is required.\n";
	if ( frmEdit.userZip.value.trim() == "")
		s = s + "Zip is required.\n";

	if ( frmEdit.payableEmail.value != "" )
	{
		if ( !CheckEmail(frmEdit.payableEmail.value) )
		 s = s + "Email address is not right format.\n";
	}

  if (frmEdit.userPhone.value.trim()=="")	
			s = s + "Telephone Number is required .\n"
  //else if (frmEdit.userPhone.value!="")	
	//	if ( !p.test(frmEdit.userPhone.value) )
	//		s = s + "Telephone Number format is incorrect .\n"	

	if ( frmEdit.billCity.value.trim() == "")
		s = s + "Billing City is required.\n";
	if ( frmEdit.billState.value == "")
		s = s + "Billing State is required.\n";
	if ( frmEdit.billZip.value.trim() == "")
		s = s + "Billing Zip is required.\n";		
	if ( frmEdit.shipCity.value.trim() == "")
		s = s + "Shipping City is required.\n";
	if ( frmEdit.shipState.value == "")
		s = s + "Shipping State is required.\n";
	if ( frmEdit.shipZip.value.trim() == "")
		s = s + "Shipping Zip is required.\n";		

	
	//alert(s);
	if ( s!= "" )
	{
		alert(s);
		return false;
	}
	return true;
}


function isValidCreditCardNumber(cardNumber, cardType, year, month)
{  
  var isValid = false;
	var isDateValid = false;
  var ccCheckRegExp = /[^\d ]/;
	
	isDateValid=isExpiryDate(year,month);
	if (!isDateValid){
		 alert ('Expiration Date is not valid');
		 return false;
	}
	
  isValid = !ccCheckRegExp.test(cardNumber);

  if (isValid)
  {
    var cardNumbersOnly = cardNumber.replace(/ /g,"");
    var cardNumberLength = cardNumbersOnly.length;
    var lengthIsValid = false;
    var prefixIsValid = false;
    var prefixRegExp;

    switch(cardType)
    {
      case "Mastercard":
        lengthIsValid = (cardNumberLength == 16);
        prefixRegExp = /^5[1-5]/;
        break;

      case "Visa":
        lengthIsValid = (cardNumberLength == 16 || cardNumberLength == 13);
        prefixRegExp = /^4/;
        break;

      case "amex":
        lengthIsValid = (cardNumberLength == 15);
        prefixRegExp = /^3(4|7)/;
        break;

      default:
        prefixRegExp = /^$/;
        alert("Card type not found");
    }

    prefixIsValid = prefixRegExp.test(cardNumbersOnly);
    isValid = prefixIsValid && lengthIsValid;
  }

  if (isValid)
  {
    var numberProduct;
    var numberProductDigitIndex;
    var checkSumTotal = 0;

    for (digitCounter = cardNumberLength - 1; 
      digitCounter >= 0; 
      digitCounter--)
    {
      checkSumTotal += parseInt (cardNumbersOnly.charAt(digitCounter));
      digitCounter--;
      numberProduct = String((cardNumbersOnly.charAt(digitCounter) * 2));
      for (var productDigitCounter = 0;
        productDigitCounter < numberProduct.length; 
        productDigitCounter++)
      {
        checkSumTotal += 
          parseInt(numberProduct.charAt(productDigitCounter));
      }
    }

    isValid = (checkSumTotal % 10 == 0);
  }
	
	if (!isValid)
		 alert ('Card number is not valid');
	
  return isValid;
}

function isExpiryDate(year, month) {

year = "20"+year;

today = new Date();
expiry = new Date(year, month, 1);

if (today.getTime() > expiry.getTime())
return false;
else
return true;
}


// JScript source code
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

//check email format
function CheckEmail ( sEmail )
{
	if ( sEmail == "" )
		return true;
// SPR changes start		
//	var regExp = new RegExp("[a-z0-9_-]+(\.[a-z0-9_-]+)*@[a-z0-9_-]+(\.[a-z0-9_-]+)+", "i")	//"i" means ignore case
	var regExp = new RegExp("[a-z0-9_-]+(\.[a-z0-9_-]+)\@[a-z0-9_-]+(\.[a-z0-9_-]+)+", "i")	//"i" means ignore case
// SPR changes end	
	if ( !sEmail.match(regExp) )
		return false;
	return true;
}

/*Parse number to currency format:
By JavaScript Kit (www.javascriptkit.com)
Over 200+ free scripts here!
*/

//Remove the $ sign if you wish the parse number to NOT include it
var prefix="$"
var wd
function parseelement(thisone)
{
	if (thisone.value.charAt(0)=="$")
	return
	wd="w"
	var tempnum=thisone.value
	for (i=0;i<tempnum.length;i++){
	if (tempnum.charAt(i)=="."){
		wd="d"
		break;
		}
	}
	if (wd=="w")
		thisone.value=prefix+tempnum+".00"
	else{
		if (tempnum.charAt(tempnum.length-2)=="."){
			thisone.value=prefix+tempnum+"0"
		}
		else{
			tempnum=Math.round(tempnum*100)/100
			thisone.value=prefix+tempnum
		}
	}
}

//Check date
function CheckDate( field ) //field is field name
{
	var checkstr = "0123456789";
	var DateField = field;
	var Datevalue = "";
	var DateTemp = "";
	var seperator = "/";
	var day;
	var month;
	var year;
	var leap = 0;
	var err = 0;
	var i;
	var indexOf;
	var lastIndexOf;
	
	   err = 0;
	   DateValue = DateField.value;
	   indexOf = DateValue.indexOf("/");
	   lastIndexOf = DateValue.lastIndexOf("/");
	   
	//   alert( "date is " + DateValue + " " + indexOf + " " + lastIndexOf);
	     
	   /* year is wrong if year = 0000 */
		year = DateValue.substring(lastIndexOf+1, DateValue.length);
		if( year.length == 2 )
			year = '20' + year;
		if ( year.length !=4 )
			err = 1;
		if (year == 0) {
			err = 2;
		}
		
		/* Validation of month*/
		month = DateValue.substring(0,indexOf);
		if ( month.length > 2 )
			err = 3
		if ((month < 1) || (month > 12)) {
			err = 4;
		}
	    if ( month.length ==1 )
			month = '0' + month;
		
		/* Validation of day*/
		 day = DateValue.substring(indexOf+1,lastIndexOf);
		if (day <1)
			err = 22;
		if (day.length>2 )
			err = 22;

	// alert("day is " + day + " " + lastIndexOf);
	   /* Validation leap-year / february / day */
	   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
	      leap = 1;
	   }
	   if ((month == 2) && (leap == 1) && (day > 29)) {
	      err = 23;
	   }
	   if ((month == 2) && (leap != 1) && (day > 28)) {
	      err = 24;
	   }
	   /* Validation of other months */
	   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
	      err = 25;
	   }
	   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
	      err = 26;
	   }
	   /* if 00 ist entered, no error, deleting the entry */
	   if ((day == 0) && (month == 0) && (year == 00)) {
	      err = 0; day = ""; month = ""; year = ""; seperator = "";
	   }
	 
	// alert("err " + err);
	   /* if no error, write the completed date to Input-Field (e.g. 12/26/2001) */
	   if (err == 0) {
			DateField.value = month + seperator + day + seperator + year;
			return true;
	   }
	   /* Error-message if err != 0 */
	   else {
			DateField.select();
			DateField.focus();
			return false;
	   }
}


/*Number check script-
By JavaScript Kit (www.javascriptkit.com)
Over 200 free scripts here!
*/

function checknumber( fieldName, fieldValue)
{
	//var x=document.checknum.pnum.value
	var anum=/(^\d+$)|(^\d+\.\d+$)/
	if (anum.test(fieldValue))
		testresult=true
	else{
		alert(fieldName + ": Please input a valid number in this field!")
		testresult=false
	}
	return (testresult)
}
