function alertBadNum(errType,data)

{
   var errMsg = "";
   switch (errType)
   {
      case 1:
         errMsg ="You have entered a blank space.\nPlease re-enter your number.";
         break;
      case 2:
         errMsg ="You have entered a nonnumeric value: " + data +"\nPlease re-enter your number.";
         break;
      case 3:
         errMsg ="You have entered two or more decimal points.\nPlease re-enter your number.";
   }
   alert(errMsg);
   return(false);
}

function checkNum(data) 
{      
   var validNum = "-0123456789.";  
   var O = count = 0;
   var dec = ".";
   var space = " ";

   for (O = 0; O < data.length; O++)
      if (data.substring(O, O+1) == space)
        return(alertBadNum(1,data));

   for (O = 0; O < data.length; O++)
      if (validNum.indexOf(data.substring(O, O+1)) == "-1")
         return(alertBadNum(2,data));

   for (O = 0; O < data.length; O++)
      if (data.substring(O, O+1) == dec)   count++;
   if (count > 1)      return(alertBadNum(3,data));
 
   return true;
}

function noenter() {
  return !(window.event && window.event.keyCode == 13); 
}


function num2dollar(form, field, comyes, signyes, setd) 
{ 
   var tmp1 = cents = dollars = "";
   var dec = -1;
   var num = O = 0;
	if(setd==1){
	 num = eval("document." + form + "." + field + ".value");
   } else {
	num = field;
   }
   if (!checkNum(num))       return (false);

   num = "" + (Math.round(num * 100)/100);
   dec = num.indexOf(".");
	
   cents = ((dec > 0) ? num.substring(dec,num.length) : ".00");
   if (cents.length == 2) cents += "0";

   dollars = "" + parseInt(num);
   if(comyes==1){
		tmp1 = insComma(dollars);
   } else {
		tmp1 = dollars;
   }
  
   if(signyes==1){
   
	num = "$";	

	for (O = tmp1.length-1; O >= 0; O--) 
     num += tmp1.charAt(O);;
  
   } else {
   num = tmp1;
   }
   
   num +=  cents;
	if(setd==1){
		eval("document." + form + "." + field + ".value = '" + num + "';");
		return(true);
	} else {  
		return num;
	}

}

function isExpiryDate(mth,yr) {

var yrcalc;
var mthcalc;

if (isNaN(yr))
return false;
if (isNaN(mth))
return false;

if(mth<1 || mth>12){
return false;
}

if(yr.toString().length<4){
yrcalc="20" + yr;
} else {
yrcalc=yr;
}

today = new Date();
expiry = new Date(yrcalc, mth);
if (today.getTime() > expiry.getTime())
return false;
else
return true;
}


function dollar2num(num)
{
	//simple remove $ and , 
	var strnum = "" + num + "";
	strnum=strnum.replace(/\$/,"")
	strnum=strnum.replace(/,/,"")
	return(strnum);
}


function addf(){
  var doc = document.pform;  
  //get total prod no's:
  totno=parseInt(doc.prod_totno.value)+1;
  
  for(var pc=1; pc<totno; pc++) {
    var fa="prod_" + pc;
    var ft="prod_" + pc + "_tot";
    var fp="prod_" + pc + "_price";
    var sa="prod_" + pc + "_sizelist";
    var ps="prod_" + pc + "_S";
	if(typeof(doc[sa]) != 'undefined'){
    	var sizestr=doc[sa].value;
	}else{
		alert(sa +' not found');
		var sizestr='';
	}
    var sizear = sizestr.split(",");

    var allsizes=0;  
  //if there are sizes we need to loop through them to get tot:
  if(sizear.length>1) {
    for(var sl=0; sl<sizear.length; sl++) {
		//add up sizes:
		var stemp="prod_" + pc + "_" + sizear[sl];
		
		if(typeof(doc[fa]) != 'undefined'){
			if(typeof(doc[stemp]) != 'undefined'){
				if (isNaN(parseInt(doc[stemp].value))==false && parseInt(doc[stemp].value)>0) {
					allsizes+=parseInt(doc[stemp].value);
					doc[fa].value=allsizes; //total for all sizes for the prod
				} else {
					doc[stemp].value=""; //clear the value if not a num or 0
				}
			}else{
				alert(stemp +' not found');
			}
		}else{
			alert(fa +' not found');
		}
		
    }
  }  
  else {
    //tot is just raw (no sizes):
    //check if number:
	if(typeof(doc[fa]) != 'undefined'){
		if (isNaN(parseInt(doc[fa].value))==false && parseInt(doc[fa].value)>0) {    
			allsizes=doc[fa].value;
		} else {
			doc[fa].value="";
		}   
	 }else{
		alert(fa +' not found');
	}
  }
    
  	if (isNaN(parseInt(allsizes))==false && allsizes>0) {
      doc[ft].value=parseFloat(allsizes)*parseFloat(doc[fp].value);
      num2dollar('pform',ft,0,0,1);
    } else {
      doc[ft].value="";
    }
  }
  
  //then do grantot:
  doc.prod_Order_Total.value=0;
 for(var pc=1; pc<totno; pc++) {
    var ft="prod_" + pc + "_tot";
    
  	if (isNaN(parseFloat(doc[ft].value))==false) {
      doc.prod_Order_Total.value=parseFloat(doc.prod_Order_Total.value) + parseFloat(doc[ft].value);
 
    }
  }

     num2dollar('pform','prod_Order_Total',0,0,1);
   
}

function chkform(){

  var doc = document.pform;
  var mislist="";
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  
 	if(doc.CC_No.value.toString().length>0 && (doc.CC_Name.value=="")) {
		mislist += "-Card Name Missing\n";		
    }
 	if(doc.CC_No.value.toString().length>0 && doc.CC_No.value.toString().length<16) {
		mislist += "-Card Number Incorrect\n";		
    }
  if(doc.CC_No.value.toString().length>0 && (doc.CC_ExpMth.value=="" || isNaN(doc.CC_ExpMth.value) || doc.CC_ExpMth.value>12 || doc.CC_ExpMth.value<1)) {
		mislist += "-CC Expiry Invalid\n";		
		}	
	if(doc.CC_No.value.toString().length>0 && isExpiryDate(doc.CC_ExpMth.value,doc.CC_ExpYr.value)==false) {
		mislist += "-CC Expiry Date Invalid\n";		
		}
	if(doc.CC_No.value.toString().length>0 && doc.CC_SecNo.value.toString().length<3) {
		mislist += "-Card Security Number Incorrect\n";		
    }
 
  
  if(doc.Customer_Name.value=="") {
		mislist += "-Customer Name missing\n";
		}

  if(doc.prod_Order_Total.value=="") {
		mislist += "-Nothing Ordered yet\n";
		}

	if(filter.test(doc.Email_Address.value)==false) {
		mislist += "-Valid Email Address is missing\n";
		} 	
    		
  if(mislist==""){
    doc.submit();
    } else
    {
    //show problem:
    alert("Form information missing:\n" + mislist + "\nPlease correct and resubmit form.");
    }
}