var isNS4 = (navigator.appName=="Netscape")?1:0;

function checkCart(f) {
  var errors=0;
  var bfname = f.bfname.value;
  var blname = f.blname.value;
	var baddr1 = f.baddr1.value;
	var bcity = f.bcity.value;
	var bstate = f.bstate.value;
	var bzip = f.bzip.value;
	var bcountrylkp = f.bcountrylkp.value.substr(0,2);
//	var bcountry = f.bcountry.value;
	var bemail = f.bemail.value;
	var emailPat=/^(.+)@(.+)\.(.+)$/;
  var emailok = bemail.match(emailPat);
  var sname = f.sname.value;
	var saddr1 = f.saddr1.value;
	var scity = f.scity.value;
	var sstate = f.sstate.value;
	var szip = f.szip.value;
//	var scountry = f.scountry.value;
	var scountrylkp = f.scountrylkp.value.substr(0,2);
	var ship2bill = f.ship2bill.value;

// alert("checkcart bcountrylkp="+bcountrylkp+":scountrylkp="+scountrylkp);

  document.getElementById('bfname').style.background="#FFFFFF";
  document.getElementById('blname').style.background="#FFFFFF";
  document.getElementById('baddr1').style.background="#FFFFFF";
  document.getElementById('bcity').style.background="#FFFFFF";
//  document.getElementById('bcountry').style.background="#FFFFFF";
  document.getElementById('bzip').style.background="#FFFFFF";
  document.getElementById('bcity').style.background="#FFFFFF";
  document.getElementById('bemail').style.background="#FFFFFF";
  document.getElementById('sname').style.background="#FFFFFF";
  document.getElementById('saddr1').style.background="#FFFFFF";
  document.getElementById('scity').style.background="#FFFFFF";
//  document.getElementById('scountry').style.background="#FFFFFF";
  document.getElementById('szip').style.background="#FFFFFF";

  if (bfname.length < 2) {
	  document.getElementById('bfname').style.background="#FFFF33";
		errors++;
	}
  if (blname.length < 2) {
	  document.getElementById('blname').style.background="#FFFF33";
		errors++;
	}
  if (baddr1.length < 4) {
	  document.getElementById('baddr1').style.background="#FFFF33";
		errors++;
	}
  if (bcountrylkp == '00') {
 	  document.getElementById('bcountrylkp').style.background="#FFFF33";
	  errors++;
	}
  if (bcountrylkp == 'AA') {
    if (bcity.length < 2) {
	    document.getElementById('bcity').style.background="#FFFF33";
		  errors++;
	  }
    if (bzip.length < 5) {
  	  document.getElementById('bzip').style.background="#FFFF33";
	  	errors++;
		}
	}
  if (emailok == null) {
	  document.getElementById('bemail').style.background="#FFFF33";
		errors++;
	}

	if (f.ship2bill.checked == false) {
    if (sname.length < 4) {
	    document.getElementById('sname').style.background="#FFFF33";
		  errors++;
  	}
    if (saddr1.length < 4) {
  	  document.getElementById('saddr1').style.background="#FFFF33";
	  	errors++;
	  }
    if (scountrylkp == '00') {
 	    document.getElementById('scountrylkp').style.background="#FFFF33";
	    errors++;
	  }		
    if (scountrylkp == 'AA') {
      if (scity.length < 2) {
	      document.getElementById('scity').style.background="#FFFF33";
		    errors++;
	    }
      if (szip.length < 5) {
  	    document.getElementById('szip').style.background="#FFFF33";
	  	  errors++;
		  }
	  }
	}
		
	if (errors > 0) {return false;}
	else {return true;}
}

function checkPayment(f) {
  var errors=0;
	var paymethod = f.paymethod.value;
	var hkflag = paymethod.substring(0,2);
	var cctype = paymethod.substring(2);
  var ccname = f.ccname.value;
	var ccnumber = f.ccnumber.value;
	var cccode = f.cccode.value;
	var ccexpmo = f.ccexpmo.value - 1;
	var ccexpyr = f.ccexpyr.value;
  var d = new Date();
  var curmonth = d.getMonth();
	var curyear = d.getFullYear();
	
	curyear = curyear.toString();
	curyear = curyear.substr(2,2);
	
  paymethodfld = document.getElementById('paymethod');
  ccnamefld = document.getElementById('ccname');
	ccnumberfld = document.getElementById('ccnumber');
	cccodefld = document.getElementById('cccode');
	ccexpmofld = document.getElementById('ccexpmo');
	ccexpyrfld = document.getElementById('ccexpyr');
	
  paymethodfld.style.background="#FFFFFF";
  ccnamefld.style.background="#FFFFFF";
  ccnumberfld.style.background="#FFFFFF";
  cccodefld.style.background="#FFFFFF";
  ccexpmofld.style.background="#FFFFFF";
  ccexpyrfld.style.background="#FFFFFF";
  if (hkflag == 'CC') {
    if (ccname.length < 4) {
	    ccnamefld.style.background="#FFFF33";
		  errors++;
  	}
    if (cctype == 'AX') {
		  if (ccnumber.length != 15) {
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
		  if (ccnumber.substr(0,1) != '3') {
	      paymethodfld.style.background="#FFFF33";
				ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
    } else {
		  if (ccnumber.length != 16) {
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
		  if ((cctype == 'VI') && (ccnumber.substr(0,1) != '4')) {
	      paymethodfld.style.background="#FFFF33";
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
		  if ((cctype == 'MC') && (ccnumber.substr(0,1) != '5')) {
	      paymethodfld.style.background="#FFFF33";
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
		  if ((cctype == 'DI') && (ccnumber.substr(0,1) != '6')) {
	      paymethodfld.style.background="#FFFF33";
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
			}
		}
//		} else {
      if (!Mod10(ccnumber)) {	
	      ccnumberfld.style.background="#FFFF33";
  	    errors++;
	    }
//		}
	  if ((cctype == 'VI') || (cctype == 'MC')) {
	    if (cccode.length < 3) {
  	    ccnumberfld.style.background="#FFFF33";
	  	  errors++;
  		}
  	}
  	if (ccexpyr < curyear) {
  	  ccexpmofld.style.background="#FFFF33";
	    ccexpyrfld.style.background="#FFFF33";
		  errors++;
  	}
  	if ((ccexpyr == curyear) && (ccexpmo < curmonth)){
  	  ccexpmofld.style.background="#FFFF33";
	    ccexpyrfld.style.background="#FFFF33";
		  errors++;
  	}
  }
	if (errors > 0) { return false }
	else {
//    window.location.href='{$C['homeurl']}';
		return true;
	}
}

function showPayment(op) {
  var pt = op.substring(0,2);

	if (pt != '') {
	  document.getElementById('paymentbutton').disabled=false;
	}
	else {
	  document.getElementById('paymentbutton').disabled=true;
	}

	if (pt == '') {
   if (isNS4) {
	  document.getElementById('CC').style.visibility="collapse";
	  document.getElementById('CA').style.visibility="collapse";
	  document.getElementById('PP').style.visibility="collapse";
   } else {
	  document.getElementById('CC').style.display="none";
	  document.getElementById('CA').style.display="none";
	  document.getElementById('PP').style.display="none";
   }
	}
	if (pt == 'CC') {
   if (isNS4) {
	  document.getElementById('CC').style.visibility="visible";
	  document.getElementById('CA').style.visibility="collapse";
	  document.getElementById('PP').style.visibility="collapse";
	  document.getElementById('paymentbutton').style.visibility="visible";
   } else {
	  document.getElementById('CC').style.display="block";
	  document.getElementById('CA').style.display="none";
	  document.getElementById('PP').style.display="none";
	  document.getElementById('paymentbutton').style.display="block";
   }
	}
	if (pt == 'CA') {
   if (isNS4) {
	  document.getElementById('CC').style.visibility="collapse";
	  document.getElementById('CA').style.visibility="visible";
	  document.getElementById('PP').style.visibility="collapse";
	  document.getElementById('paymentbutton').style.visibility="visible";
   } else {
	  document.getElementById('CC').style.display="none";
	  document.getElementById('CA').style.display="block";
	  document.getElementById('PP').style.display="none";
	  document.getElementById('paymentbutton').style.display="block";
   }
	}
	if (pt == 'PP') {
   if (isNS4) {
	  document.getElementById('CC').style.visibility="collapse";
	  document.getElementById('CA').style.visibility="collapse";
	  document.getElementById('PP').style.visibility="visible";
	  document.getElementById('paymentbutton').style.visibility="hidden";
   } else {
	  document.getElementById('CC').style.display="none";
	  document.getElementById('CA').style.display="none";
	  document.getElementById('PP').style.display="block";
	  document.getElementById('paymentbutton').style.display="none";
	}
 }
}

function cartSetFields() {
//  alert("cartSetFields");
	var bcc=document.getElementById('bcountrylkp').value;
	var bcc=bcc.substr(0,2);
	var scc=document.getElementById('scountrylkp').value;
	var scc=scc.substr(0,2);
//  alert("bcc="+bcc);
  if (bcc == '00') {
	  if (isNS4) {
  	  document.getElementById('bcityrow').style.visibility = "collapse";
  	  document.getElementById('bstaterow').style.visibility = "collapse";
  	  document.getElementById('bziprow').style.visibility = "collapse";
  	  document.getElementById('bphonerow').style.visibility = "collapse";
//	    document.getElementById('baddr1').style.visibility = "collapse";
//	    document.getElementById('baddr2').style.visibility = "collapse";
//	    document.getElementById('baddr3').style.visibility = "collapse";
//	    document.getElementById('baddr4').style.visibility = "collapse";
//	    document.getElementById('baddr5').style.visibility = "collapse";
      document.getElementById('bmainaddressrow').style.visibility = "collapse";
      document.getElementById('bextaddressrow').style.visibility = "collapse";
	    document.getElementById('bintphonerow').style.visibility = "collapse";
    } else {
   	  document.getElementById('bcityrow').style.display = "none";
   	  document.getElementById('bstaterow').style.display = "none";
   	  document.getElementById('bziprow').style.display = "none";
   	  document.getElementById('bphonerow').style.display = "none";
	    document.getElementById('baddr1').style.display = "none";
	    document.getElementById('baddr2').style.display = "none";
	    document.getElementById('baddr3').style.display = "none";
	    document.getElementById('baddr4').style.display = "none";
	    document.getElementById('baddr5').style.display = "none";
	    document.getElementById('bintphonerow').style.display = "none";
    }	  
	} else if (bcc == 'AA') {
	  if (isNS4) {
  	  document.getElementById('bcityrow').style.visibility = "visible";
  	  document.getElementById('bstaterow').style.visibility = "visible";
  	  document.getElementById('bziprow').style.visibility = "visible";
  	  document.getElementById('bphonerow').style.visibility = "visible";
//	    document.getElementById('baddr1').style.visibility = "visible";
//	    document.getElementById('baddr2').style.visibility = "visible";
//	    document.getElementById('baddr3').style.visibility = "collapse";
//	    document.getElementById('baddr4').style.visibility = "collapse";
//	    document.getElementById('baddr5').style.visibility = "collapse";
      document.getElementById('bmainaddressrow').style.visibility = "visible";
      document.getElementById('bextaddressrow').style.visibility = "collapse";
	    document.getElementById('bintphonerow').style.visibility = "collapse";
    } else {
   	  document.getElementById('bcityrow').style.display = "block";
   	  document.getElementById('bstaterow').style.display = "block";
   	  document.getElementById('bziprow').style.display = "block";
   	  document.getElementById('bphonerow').style.display = "block";
	    document.getElementById('baddr1').style.display = "block";
	    document.getElementById('baddr2').style.display = "block";
	    document.getElementById('baddr3').style.display = "none";
	    document.getElementById('baddr4').style.display = "none";
	    document.getElementById('baddr5').style.display = "none";
	    document.getElementById('bintphonerow').style.display = "none";
    }
	} else {
	  if (isNS4) {
  	  document.getElementById('bcityrow').style.visibility = "collapse";
  	  document.getElementById('bstaterow').style.visibility = "collapse";
  	  document.getElementById('bziprow').style.visibility = "collapse";
  	  document.getElementById('bphonerow').style.visibility = "collapse";
//	    document.getElementById('baddr1').style.visibility = "visible";
//	    document.getElementById('baddr2').style.visibility = "visible";
//	    document.getElementById('baddr3').style.visibility = "visible";
//	    document.getElementById('baddr4').style.visibility = "visible";
//	    document.getElementById('baddr5').style.visibility = "visible";
      document.getElementById('bmainaddressrow').style.visibility = "collapse";
      document.getElementById('bextaddressrow').style.visibility = "visible";
	    document.getElementById('bintphonerow').style.visibility = "visible";
    } else {
   	  document.getElementById('bcityrow').style.display = "none";
   	  document.getElementById('bstaterow').style.display = "none";
   	  document.getElementById('bziprow').style.display = "none";
   	  document.getElementById('bphonerow').style.display = "none";
	    document.getElementById('baddr1').style.display = "block";
	    document.getElementById('baddr2').style.display = "block";
	    document.getElementById('baddr3').style.display = "block";
	    document.getElementById('baddr4').style.display = "block";
	    document.getElementById('baddr5').style.display = "block";
	    document.getElementById('bintphonerow').style.display = "block";
    }
  }
	if (scc == '00') {
	  if (isNS4) {
  	  document.getElementById('scityrow').style.visibility = "collapse";
  	  document.getElementById('sstaterow').style.visibility = "collapse";
  	  document.getElementById('sziprow').style.visibility = "collapse";
	    document.getElementById('saddr1').style.visibility = "collapse";
	    document.getElementById('saddr2').style.visibility = "collapse";
	    document.getElementById('saddr3').style.visibility = "collapse";
	    document.getElementById('saddr4').style.visibility = "collapse";
	    document.getElementById('saddr5').style.visibility = "collapse";
    } else {
   	  document.getElementById('scityrow').style.display = "none";
   	  document.getElementById('sstaterow').style.display = "none";
   	  document.getElementById('sziprow').style.display = "none";
	    document.getElementById('saddr1').style.display = "none";
	    document.getElementById('saddr2').style.display = "none";
	    document.getElementById('saddr3').style.display = "none";
	    document.getElementById('saddr4').style.display = "none";
	    document.getElementById('saddr5').style.display = "none";
    }	
	} else if (scc == 'AA') {
	  if (isNS4) {
  	  document.getElementById('scityrow').style.visibility = "visible";
  	  document.getElementById('sstaterow').style.visibility = "visible";
  	  document.getElementById('sziprow').style.visibility = "visible";
	    document.getElementById('saddr1').style.visibility = "visible";
	    document.getElementById('saddr2').style.visibility = "visible";
	    document.getElementById('saddr3').style.visibility = "collapse";
	    document.getElementById('saddr4').style.visibility = "collapse";
	    document.getElementById('saddr5').style.visibility = "collapse";
    } else {
   	  document.getElementById('scityrow').style.display = "block";
   	  document.getElementById('sstaterow').style.display = "block";
   	  document.getElementById('sziprow').style.display = "block";
   	  document.getElementById('saddr1').style.display = "block";
   	  document.getElementById('saddr2').style.display = "block";
	    document.getElementById('saddr3').style.display = "none";
	    document.getElementById('saddr4').style.display = "none";
	    document.getElementById('saddr5').style.display = "none";
    }
	} else {
	  if (isNS4) {
  	  document.getElementById('scityrow').style.visibility = "collapse";
  	  document.getElementById('sstaterow').style.visibility = "collapse";
  	  document.getElementById('sbziprow').style.visibility = "collapse";
	    document.getElementById('saddr1').style.visibility = "visible";
	    document.getElementById('saddr2').style.visibility = "visible";
	    document.getElementById('saddr3').style.visibility = "visible";
	    document.getElementById('saddr4').style.visibility = "visible";
	    document.getElementById('saddr5').style.visibility = "visible";
    } else {
   	  document.getElementById('scityrow').style.display = "none";
   	  document.getElementById('sstaterow').style.display = "none";
   	  document.getElementById('sziprow').style.display = "none";
	    document.getElementById('saddr1').style.display = "block";
	    document.getElementById('saddr2').style.display = "block";
	    document.getElementById('saddr3').style.display = "block";
	    document.getElementById('saddr4').style.display = "block";
	    document.getElementById('saddr5').style.display = "block";
    }
  }
}

function showCountry(cc,which) {
  var ccode = cc.substring(0,2);
	var cname = cc.substring(2);
  if (ccode == '00') {
	  if (isNS4) {
  	  document.getElementById(which + 'cityrow').style.visibility = "collapse";
  	  document.getElementById(which + 'staterow').style.visibility = "collapse";
  	  document.getElementById(which + 'ziprow').style.visibility = "collapse";
      document.getElementById(which + 'mainaddressrow').style.visibility = "collapse";
      document.getElementById(which + 'extaddressrow').style.visibility = "collapse";
	    if (which == 'b') {
    	  document.getElementById('bphonerow').style.visibility = "collapse";
			  document.getElementById('bintphonerow').style.visibility = "collapse";
			}
    } else {
   	  document.getElementById(which + 'cityrow').style.display = "none";
   	  document.getElementById(which + 'staterow').style.display = "none";
   	  document.getElementById(which + 'ziprow').style.display = "none";
      document.getElementById(which + 'mainaddressrow').style.display = "none";
      document.getElementById(which + 'extaddressrow').style.display = "none";
      if (which == 'b') {
     	  document.getElementById('bphonerow').style.display = "none";
  	    document.getElementById('bintphonerow').style.display = "none";
      }
    }
  } else if (ccode == 'AA') {
	  if (isNS4) {
  	  document.getElementById(which + 'cityrow').style.visibility = "visible";
  	  document.getElementById(which + 'staterow').style.visibility = "visible";
  	  document.getElementById(which + 'ziprow').style.visibility = "visible";
      document.getElementById(which + 'mainaddressrow').style.visibility = "visible";
      document.getElementById(which + 'extaddressrow').style.visibility = "collapse";
	    if (which == 'b') {
     	  document.getElementById('bphonerow').style.visibility = "visible";
			  document.getElementById('bintphonerow').style.visibility = "collapse";
			}
    } else {
   	  document.getElementById(which + 'cityrow').style.display = "block";
   	  document.getElementById(which + 'staterow').style.display = "block";
   	  document.getElementById(which + 'ziprow').style.display = "block";
      document.getElementById(which + 'mainaddressrow').style.display = "block";
      document.getElementById(which + 'extaddressrow').style.display = "none";
      if (which == 'b') {
     	  document.getElementById('bphonerow').style.display = "block";
  	    document.getElementById('bintphonerow').style.display = "none";
      }
    }
	} else {
	  if (isNS4) {
  	  document.getElementById(which + 'cityrow').style.visibility = "collapse";
  	  document.getElementById(which + 'staterow').style.visibility = "collapse";
  	  document.getElementById(which + 'ziprow').style.visibility = "collapse";
      document.getElementById(which + 'mainaddressrow').style.visibility = "visible";
      document.getElementById(which + 'extaddressrow').style.visibility = "visible";
			if (which == 'b') {
    	  document.getElementById('bphonerow').style.visibility = "collapse";
  	    document.getElementById('bintphonerow').style.visibility = "visible";
      }
    } else {
   	  document.getElementById(which + 'cityrow').style.display = "none";
   	  document.getElementById(which + 'staterow').style.display = "none";
   	  document.getElementById(which + 'ziprow').style.display = "none";
      document.getElementById(which + 'mainaddressrow').style.display = "block";
      document.getElementById(which + 'extaddressrow').style.display = "block";
      if (which == 'b') {
     	  document.getElementById('bphonerow').style.display = "none";
   	    document.getElementById('bintphonerow').style.display = "block";
      }
    }
	}
}

function showState(cc,which) {
  var ccode = cc;
  if (which == 'b') {
	  fieldid1 = 'bcountry';
	  fieldid2 = 'bcountrylkp';
	} else {
	  fieldid1 = 'scountry';
	  fieldid2 = 'scountrylkp';
	}
  if (ccode == 'ZZ') {
	  document.getElementById(fieldid1).value = '<Type your country name here>';
	  document.getElementById(fieldid1).style.display = "block";
	  document.getElementById(fieldid2).value = 'ZZ';
	  document.getElementById(fieldid2).style.display = "block";
	  document.getElementById(fieldid1).disabled = false;		
	} else {
	  document.getElementById(fieldid1).value = 'USA';
	  document.getElementById(fieldid1).style.display = "block";
	  document.getElementById(fieldid1).disabled = true;		
	  document.getElementById(fieldid2).style.display = "none";
	}
}

function Mod10(ccNumb) {  // v2.0
  var valid = "0123456789"  // Valid digits in a credit card number
  var len = ccNumb.length;  // The length of the submitted cc number
  var iCCN = parseInt(ccNumb);  // integer of ccNumb
  var sCCN = ccNumb.toString();  // string of ccNumb
  sCCN = sCCN.replace (/^\s+|\s+$/g,'');  // strip spaces
  var iTotal = 0;  // integer total set at zero
  var bNum = true;  // by default assume it is a number
  var bResult = false;  // by default assume it is NOT a valid cc
  var temp;  // temp variable for parsing string
  var calc;  // used for calculation of each digit

// Determine if the ccNumb is in fact all numbers
  for (var j=0; j<len; j++) {
    temp = "" + sCCN.substring(j, j+1);
    if (valid.indexOf(temp) == "-1"){bNum = false;}
  }

// if it is NOT a number, you can either alert to the fact, or just pass a failure
  if(!bNum){
    /*alert("Not a Number");*/bResult = false;
  }

// Determine if it is the proper length 
  if((len == 0)&&(bResult)){  // nothing, field is blank AND passed above # check
    bResult = false;
}   else{  // ccNumb is a number and the proper length - let's see if it is a valid card number
    if(len >= 15){  // 15 or 16 for Amex or V/MC
      for(var i=len;i>0;i--){  // LOOP throught the digits of the card
        calc = parseInt(iCCN) % 10;  // right most digit
        calc = parseInt(calc);  // assure it is an integer
        iTotal += calc;  // running total of the card number as we loop - Do Nothing to first digit
        i--;  // decrement the count - move to the next digit in the card
        iCCN = iCCN / 10;                               // subtracts right most digit from ccNumb
        calc = parseInt(iCCN) % 10 ;    // NEXT right most digit
        calc = calc *2;                                 // multiply the digit by two
      // Instead of some screwy method of converting 16 to a string and then parsing 1 and 6 and then adding them to make 7,
      // I use a simple switch statement to change the value of calc2 to 7 if 16 is the multiple.
        switch(calc){
          case 10: calc = 1; break;       //5*2=10 & 1+0 = 1
          case 12: calc = 3; break;       //6*2=12 & 1+2 = 3
          case 14: calc = 5; break;       //7*2=14 & 1+4 = 5
          case 16: calc = 7; break;       //8*2=16 & 1+6 = 7
          case 18: calc = 9; break;       //9*2=18 & 1+8 = 9
          default: calc = calc;           //4*2= 8 &   8 = 8  -same for all lower numbers
        }                                               
      iCCN = iCCN / 10;  // subtracts right most digit from ccNum
      iTotal += calc;  // running total of the card number as we loop
  }  // END OF LOOP
    if ((iTotal%10)==0){  // check to see if the sum Mod 10 is zero
      bResult = true;  // This IS (or could be) a valid credit card number.
  } else {
      bResult = false;  // This could NOT be a valid credit card number
      }
    }
  }
// change alert to on-page display or other indication as needed.
  if(bResult) {
//    alert("This IS a valid Credit Card Number!");
  }
  if(!bResult){
//    alert("This does NOT appear to be a valid Credit Card Number!");
  }
  return bResult; // Return the results
}

function setCCexpdate() {
  expmo = document.getElementById('ccexpmo').value;
	expyr = document.getElementById('ccexpyr').value;
	expdate = expmo + expyr;
//	alert(expdate);
	document.getElementById('ccexpdate').value = expdate;
}

