function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
   var arVersion = navigator.appVersion.split("MSIE")
   var version = parseFloat(arVersion[1])
   if ((version >= 5.5) && (document.body.filters)) 
   {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i]
         var imgName = img.src.toUpperCase()
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
            var imgID = (img.id) ? "id='" + img.id + "' " : ""
            var imgClass = (img.className) ? "class='" + img.className + "' " : ""
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
            var imgStyle = "display:inline-block;" + img.style.cssText 
            if (img.align == "left") imgStyle = "float:left;" + imgStyle
            if (img.align == "right") imgStyle = "float:right;" + imgStyle
            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
            var strNewHTML = "<span " + imgID + imgClass + imgTitle
            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
            img.outerHTML = strNewHTML
            i = i-1
         }
      }
   }    
}
window.attachEvent("onload", correctPNG);

//***********\\


// If you've got a form that requires the user's email address, you should apply client side validation. Although we won't discuss form processing in this tip, we'll show you how to check if a given string represents a valid email address. The following function accepts a string and returns a Boolean value:
function changestyle(divid)
		/* this function is used to flip the visibility of the text input
		 * controls. each div must have a unique id */
		{
			if (document.getElementById(divid).style.display == "block")
				{
					document.getElementById(divid).style.display = "none";
				}
			else
				{
					document.getElementById(divid).style.display = "block";
				}
		} 
function isEmail(str) {
  // are regular expressions supported?
  var supported = 0;
  if (window.RegExp) {
    var tempStr = "a";
    var tempReg = new RegExp(tempStr);
    if (tempReg.test(tempStr)) supported = 1;
  }
  if (!supported) 
    return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
  var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
  var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
  return (!r1.test(str) && r2.test(str));
}
// Simply hand a string to the function, and it'll tell you if you've got a valid email address (it checks the syntax, not the actual existence of the address). Note that this function works with all JavaScript-enabled browsers, but provides a more advanced algorithm for fourth-generation browsers (Navigator 4.0x, Internet Explorer 4.0x, and above).

function getBrowserName()
{
   var lsBrowser = navigator.appName;
   if (lsBrowser.indexOf("Microsoft") >= 0)
   {
      lsBrowser = "MSIE";
   }
   else if (lsBrowser.indexOf("Netscape") >= 0)
   {
      lsBrowser = "NETSCAPE";
   }
   else
   {
      lsBrowser = "UNKNOWN";
   }
   return lsBrowser;
}

function getOS()
{
   var userPlat = "unknown";
   var navInfo = navigator.userAgent;

   if ((navInfo.indexOf("windows NT") != -1)
       || (navInfo.indexOf("windows 95") != -1 )
       || (navInfo.indexOf("windows 98") != -1 )
       || (navInfo.indexOf("WinNT") != -1 )
       || (navInfo.indexOf("Win95") != -1 )
       || (navInfo.indexOf("Win98") != -1 ))
   {
      userPlat = "Win32";
   }
   else if(navInfo.indexOf("Win16") != -1)
   {
      userPlat = "Win16";
   }
   else if(navInfo.indexOf("Macintosh") != -1)
   {
      userPlat = "PPC";
   }
   else if(navInfo.indexOf("68K") != -1)
   {
      userPlat = "68K";
   }
   return userPlat;
}

function getBrowserVersion()
{
   var findIndex;
   var browserVersion = 0;
   var browser = getBrowserName();

   if (browser == "MSIE")
   {
   browserVersion = navigator.userAgent;
   findIndex = browserVersion.indexOf(browser) + 5;
   browserVersion = parseInt(browserVersion.substring(findIndex,findIndex + 1));
   }
   else 
   {
      browserVersion = parseInt(navigator.appVersion.substring(0,1));
   }
   return browserVersion;
}


function updatelist(strObjectName, intKeyValue, strListType)
                {
              var this_update = strObjectName + "_" + strListType;
                       var currentlist=frm[this_update].value;
                        if (currentlist=="")
                               {
                                frm[this_update].value=intKeyValue;
                              }
                       else 
                                {
                                        // can't put the key into the list twice
                                       var strList = new String(frm[this_update].value)
                                       if  (strList.indexOf(intKeyValue) == -1)
                                                {
                                                frm[this_update].value=currentlist + "," + intKeyValue;
                                                }
                               }
                 } 
				 
//Global variable for error flag.
var errfound=false;
var linevalue=0;

function recalc_shipping(shipping_amount){
//alert("start");
var subtotal
var tax
var total
//alert('vars');

subtotal = parseFloat(window.document.frm.order_subtotal.value);
//alert('subtotal' + subtotal);
tax = parseFloat(window.document.frm.order_tax.value);
//alert('tax' + tax);
total = subtotal + tax + parseFloat(shipping_amount);
//alert('total' + total);
window.document.frm.order_total.value = total;
window.document.frm.shipping_amount.value=shipping_amount;
window.document.frm.USER1.value=shipping_amount;
window.document.frm.AMOUNT.value=total;
window.document.frm.display_order_total.value = total;
window.document.frm.display_shipping_amount.value=shipping_amount;
}
function recalc_shipping_new(shipping_amount){
//alert("start");
var subtotal
var tax
var total
//alert('vars');

subtotal = parseFloat(window.document.frm.order_subtotal.value);
//alert('subtotal' + subtotal);
tax = parseFloat(window.document.frm.order_tax.value);
//alert('tax' + tax);
total = subtotal + tax + parseFloat(shipping_amount);
//alert('total' + total);
window.document.frm.order_total.value = total;
window.document.frm.shipping_amount.value=shipping_amount;
/*window.document.frm.USER1.value=shipping_amount;
window.document.frm.AMOUNT.value=total;*/
window.document.frm.display_order_total.value = total;
window.document.frm.display_shipping_amount.value=shipping_amount;
}
//function to validate by length
function ValidLength (item, len) {
	return (item.length >=len);
}

//display an error alert
function error (elem, text) {
     //abort if we already found an error.
     if (errfound) return;
     window.alert (text);
     elem.focus ( );
     errfound=true;
}

function new_validate(){
 errfound =false;
if (!ValidLength (document.frm.billfirstname.value, 1)) 
            error (document.frm.billfirstname, "Please tell us your first name!");
			
			
      if (!ValidLength (document.frm.billlastname.value, 2)) 
             error (document.frm.billlastname, "Please tell us your last name!");

      if (!ValidLength (document.frm.billaddress.value, 2)) 
             error (document.frm.billaddress, "Please tell us your address!");

      if (!ValidLength (document.frm.billcity.value, 2)) 
             error (document.frm.billcity, "Please tell us your city!");

      if (document.frm.billcountry.value=='United States' || document.frm.billcountry.value=='Canada'){
		 if(document.frm.billcountry.value=='United States')
			 {
			 	askFor = 'state'
			 }
		else
			{
				askFor = 'province'
			}
		  if (!ValidLength (document.frm.billstate.value, 2)) 
	             error (document.frm.billstate, "Please tell us your " + askFor + "!");
		}
	
      if (!ValidLength (document.frm.billzip.value, 2)) 
             error (document.frm.billzip, "Please tell us your zip code!");

      if (!ValidLength (document.frm.billdayphone.value, 2)) 
             error (document.frm.billdayphone, "Please tell us your phone number!");
			 			 
	 if (!isEmail (document.frm.emailadd.value)) 
             error (document.frm.emailadd, "Please enter an email address in Billing Email (like myname@somecompany.com)!");

			       if (!ValidLength (document.frm.shipfirstname.value, 1)) 
            error (document.frm.shipfirstname, "Please tell us your first name for shipping!");

      if (!ValidLength (document.frm.shiplastname.value, 2)) 
             error (document.frm.shiplastname, "Please tell us your last name for shipping!");

      if (!ValidLength (document.frm.shipaddress.value, 2)) 
             error (document.frm.shipaddress, "Please tell us your address for shipping!");

      if (!ValidLength (document.frm.shipcity.value, 2)) 
             error (document.frm.shipcity, "Please tell us your city for shipping!");

      if (document.frm.shipcountry.value=='United States' || document.frm.shipcountry.value=='Canada'){
		 if(document.frm.shipcountry.value=='United States')
			 {
			 	askFor = 'state'
			 }
		else
			{
				askFor = 'province'
			}
		  if (!ValidLength (document.frm.shipstate.value, 2)) 
	             error (document.frm.shipstate, "Please tell us your " + askFor + " for shipping!");
		}
	
      if (!ValidLength (document.frm.shipzip.value, 2)) 
             error (document.frm.shipzip, "Please tell us your zip code for shipping!");
//errfound=true;
	//alert(! errfound);
  return ! errfound; /*true if there are no errors*/
}
//main validation function.
function Validate  ( ) {

	var askFor = "";
      errfound =false;
       var hasorderline = false;
	 for(var i = 0; i < numberoffields; i++)
	 	{
			
			if(window.document.frm[fieldlist[i]].value > 0)
				{
				
			hasorderline=true;
				}
		}
	  
      if (!hasorderline) 
             error (document.getElementById('billfirstname'), "Please select a product to buy!");
  
/*        if (!valcredit())
             error (document.getElementById('account,"Oops! There is a problem with your credit card number.  Please enter the correct number, without spaces or dashes.");
RAN 4-16-02 put back expdate test 
      if (!ValidLength (document.getElementById('expdate.value, 2)) 
             error (document.orderall.expdate, "Please tell us the expiration date of your credit card!");
*/
      if (!ValidLength (document.getElementById('billfirstname').value, 1)) 
            error (document.getElementById('billfirstname'), "Please tell us your first name!");
			
			
      if (!ValidLength (document.getElementById('billlastname').value, 2)) 
             error (document.getElementById('billlastname'), "Please tell us your last name!");

      if (!ValidLength (document.getElementById('billaddress').value, 2)) 
             error (document.getElementById('billaddress'), "Please tell us your address!");

      if (!ValidLength (document.getElementById('billcity').value, 2)) 
             error (document.getElementById('billcity'), "Please tell us your city!");

      if (document.getElementById('billcountry').value=='United States' || document.getElementById('billcountry').value=='Canada'){
		 if(document.getElementById('billcountry').value=='United States')
			 {
			 	askFor = 'state'
			 }
		else
			{
				askFor = 'province'
			}
		  if (!ValidLength (document.getElementById('billstate').value, 2)) 
	             error (document.getElementById('billstate'), "Please tell us your " + askFor + "!");
		}
	
      if (!ValidLength (document.getElementById('billzip').value, 2)) 
             error (document.getElementById('billzip'), "Please tell us your zip code!");

      if (!ValidLength (document.getElementById('billdayphone').value, 2)) 
             error (document.getElementById('billdayphone'), "Please tell us your phone number!");
			 			 
	 if (!isEmail (document.getElementById('emailadd').value)) 
             error (document.getElementById('emailadd'), "Please enter an email address in Billing Email (like myname@somecompany.com)!");

			       if (!ValidLength (document.getElementById('shipfirstname').value, 1)) 
            error (document.getElementById('shipfirstname'), "Please tell us your first name for shipping!");

      if (!ValidLength (document.getElementById('shiplastname').value, 2)) 
             error (document.getElementById('shiplastname'), "Please tell us your last name for shipping!");

      if (!ValidLength (document.getElementById('shipaddress').value, 2)) 
             error (document.getElementById('shipaddress'), "Please tell us your address for shipping!");

      if (!ValidLength (document.getElementById('shipcity').value, 2)) 
             error (document.getElementById('shipcity'), "Please tell us your city for shipping!");

      if (document.getElementById('shipcountry').value=='United States' || document.getElementById('shipcountry').value=='Canada'){
		 if(document.getElementById('shipcountry').value=='United States')
			 {
			 	askFor = 'state'
			 }
		else
			{
				askFor = 'province'
			}
		  if (!ValidLength (document.getElementById('shipstate').value, 2)) 
	             error (document.getElementById('shipstate'), "Please tell us your " + askFor + " for shipping!");
		}
	
      if (!ValidLength (document.getElementById('shipzip').value, 2)) 
             error (document.getElementById('shipzip'), "Please tell us your zip code for shipping!");
//errfound=true;
	//alert(! errfound);
  return ! errfound; /*true if there are no errors*/

}

//Function to start to validate the credit card number.  JavaScript 1.2     
       function valcredit(){
	   
	   var cardhasvalidlength 
	   
        cardNumber=document.frm.CARDNUM.value;
		//cardNumber=document.frm.test.value;
		
        if (cardNumber.length==13 || cardNumber.length==14 || cardNumber.length==15 || cardNumber.length==16)
		{
			cardhasvalidlength=true;
		}
		else
		{
			cardhasvalidlength=false;
		}
		if (cardhasvalidlength)
		{
			if (cardNumber.charAt(0)==4 && cardNumber.length==13)
			{
	             if (ver13()) return true;
	             if (!ver13()) return false;
			}
	         if (cardNumber.charAt(0)==4 && cardNumber.length==16)
			 {
	             if (ver16()) return true;
	             if (!ver16()) return false;
			}
	         if (cardNumber.charAt(0)==5 && cardNumber.length==16)
			 {
	             if (ver16())return true;
	             if (!ver16()) return false;
	         }
	         if (cardNumber.charAt(0)==3 && cardNumber.length==15)
			 {
	             if (ver15()) return true;
	             if (!ver15()) return false;
	         }
			 if (cardNumber.charAt(0)==3 && (cardNumber.charAt(1)==8 || cardNumber.charAt(1)==6) && cardNumber.length==14)
			 {
	             //alert('yes');
				 return true;
				 //if (ver14()) return true;
	             //if (!ver14()) return false;
	         }
	         if (cardNumber.charAt(0)==6 && cardNumber.length==16) 
			 {
	             if (ver16()) return true;
	             if (!ver16()) return false;
	         }
	         if (parseInt(cardNumber.charAt(0)) <3 || parseInt(cardNumber.charAt(0))>6)
			 {return false;}
	    }
		
		else
		{
		 return false;
		}
     }

  //Function to verify 13 digits cc number.
    function ver13 (){
       var val=0;
       
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         
         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
        
         val=val.toString();
           
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
   }
       
   //Function to verify 16 digits ccno.
       function ver16 (){
         var val=0;
                           
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         cc14=cardNumber.charAt(14);
         cc15=cardNumber.charAt(15);
         
    
         cc0a=cc0*2;
         cc0a=cc0a.toString();
         cc2a=cc2*2;
         cc2a=cc2a.toString();
         cc4a=cc4*2;
         cc4a=cc4a.toString();
         cc6a=cc6*2;
         cc6a=cc6a.toString();
         cc8a=cc8*2;
         cc8a=cc8a.toString();
         cc10a=cc10*2;
         cc10a=cc10a.toString();
         cc12a=cc12*2;
         cc12a=cc12a.toString();
         cc14a=cc14*2;
         cc14a=cc14a.toString();
         
         cc0=(cc0a >= 10)? parseInt(cc0a.charAt(0))+parseInt(cc0a.charAt(1)) : cc0a;
         cc2=(cc2a >= 10)? parseInt(cc2a.charAt(0))+parseInt(cc2a.charAt(1)) : cc2a;
         cc4=(cc4a >= 10)? parseInt(cc4a.charAt(0))+parseInt(cc4a.charAt(1)) : cc4a;
         cc6=(cc6a >= 10)? parseInt(cc6a.charAt(0))+parseInt(cc6a.charAt(1)) : cc6a;
         cc8=(cc8a >= 10)? parseInt(cc8a.charAt(0))+parseInt(cc8a.charAt(1)) : cc8a;
         cc10=(cc10a >= 10)? parseInt(cc10a.charAt(0))+parseInt(cc10a.charAt(1)) : cc10a;
         cc12=(cc12a >= 10)? parseInt(cc12a.charAt(0))+parseInt(cc12a.charAt(1)) : cc12a;
         cc14=(cc14a >= 10)? parseInt(cc14a.charAt(0))+parseInt(cc14a.charAt(1)) : cc14a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);
         val +=parseInt(cc14);
         val +=parseInt(cc15);
   
         val=val.toString();
         
         
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) ==0){return true;}
       }
	   
//Function to verify 14 digits ccno. (based on 15 digits ccno. RAN 5-16-02
      function ver14 (){
         var val=0;
      
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         
        
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         cc13a=cc13*2;
         cc13a=cc13a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         cc13=(cc13a >= 10)? parseInt(cc13a.charAt(0))+parseInt(cc13a.charAt(1)) : cc13a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);

         val=val.toString();        
 
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
    }
 
//Function to verify 15 digits ccno.
      function ver15 (){
         var val=0;
      
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         cc14=cardNumber.charAt(14);
         
        
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         cc13a=cc13*2;
         cc13a=cc13a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         cc13=(cc13a >= 10)? parseInt(cc13a.charAt(0))+parseInt(cc13a.charAt(1)) : cc13a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);
         val +=parseInt(cc14);

         val=val.toString();        
 
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
    }

//Function to start to validate the credit card number.  JavaScript 1.2     
       function valcreditcard(cardNumber){
	   
	   var cardhasvalidlength 
	   
        

		
        if (cardNumber.length==13 || cardNumber.length==14 || cardNumber.length==15 || cardNumber.length==16)
		{
			cardhasvalidlength=true;
		}
		else
		{
			cardhasvalidlength=false;
		}
		if (cardhasvalidlength)
		{
			if (cardNumber.charAt(0)==4 && cardNumber.length==13)
			{
	             if (ver13()) return true;
	             if (!ver13()) return false;
			}
	         if (cardNumber.charAt(0)==4 && cardNumber.length==16)
			 {
	             if (ver16()) return true;
	             if (!ver16()) return false;
			}
	         if (cardNumber.charAt(0)==5 && cardNumber.length==16)
			 {
	             if (ver16())return true;
	             if (!ver16()) return false;
	         }
	         if (cardNumber.charAt(0)==3 && cardNumber.length==15)
			 {
	             if (ver15()) return true;
	             if (!ver15()) return false;
	         }
			 if (cardNumber.charAt(0)==3 && (cardNumber.charAt(1)==8 || cardNumber.charAt(1)==6) && cardNumber.length==14)
			 {
	             //alert('yes');
				 return true;
				 //if (ver14()) return true;
	             //if (!ver14()) return false;
	         }
	         if (cardNumber.charAt(0)==6 && cardNumber.length==16) 
			 {
	             if (ver16()) return true;
	             if (!ver16()) return false;
	         }
	         if (parseInt(cardNumber.charAt(0)) <3 || parseInt(cardNumber.charAt(0))>6)
			 {return false;}
	    }
		
		else
		{
		 return false;
		}
     }

  //Function to verify 13 digits cc number.
    function ver13 (){
       var val=0;
       
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         
         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
        
         val=val.toString();
           
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
   }
       
   //Function to verify 16 digits ccno.
       function ver16 (){
         var val=0;
                           
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         cc14=cardNumber.charAt(14);
         cc15=cardNumber.charAt(15);
         
    
         cc0a=cc0*2;
         cc0a=cc0a.toString();
         cc2a=cc2*2;
         cc2a=cc2a.toString();
         cc4a=cc4*2;
         cc4a=cc4a.toString();
         cc6a=cc6*2;
         cc6a=cc6a.toString();
         cc8a=cc8*2;
         cc8a=cc8a.toString();
         cc10a=cc10*2;
         cc10a=cc10a.toString();
         cc12a=cc12*2;
         cc12a=cc12a.toString();
         cc14a=cc14*2;
         cc14a=cc14a.toString();
         
         cc0=(cc0a >= 10)? parseInt(cc0a.charAt(0))+parseInt(cc0a.charAt(1)) : cc0a;
         cc2=(cc2a >= 10)? parseInt(cc2a.charAt(0))+parseInt(cc2a.charAt(1)) : cc2a;
         cc4=(cc4a >= 10)? parseInt(cc4a.charAt(0))+parseInt(cc4a.charAt(1)) : cc4a;
         cc6=(cc6a >= 10)? parseInt(cc6a.charAt(0))+parseInt(cc6a.charAt(1)) : cc6a;
         cc8=(cc8a >= 10)? parseInt(cc8a.charAt(0))+parseInt(cc8a.charAt(1)) : cc8a;
         cc10=(cc10a >= 10)? parseInt(cc10a.charAt(0))+parseInt(cc10a.charAt(1)) : cc10a;
         cc12=(cc12a >= 10)? parseInt(cc12a.charAt(0))+parseInt(cc12a.charAt(1)) : cc12a;
         cc14=(cc14a >= 10)? parseInt(cc14a.charAt(0))+parseInt(cc14a.charAt(1)) : cc14a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);
         val +=parseInt(cc14);
         val +=parseInt(cc15);
   
         val=val.toString();
         
         
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) ==0){return true;}
       }
	   
//Function to verify 14 digits ccno. (based on 15 digits ccno. RAN 5-16-02
      function ver14 (){
         var val=0;
      
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         
        
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         cc13a=cc13*2;
         cc13a=cc13a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         cc13=(cc13a >= 10)? parseInt(cc13a.charAt(0))+parseInt(cc13a.charAt(1)) : cc13a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);

         val=val.toString();        
 
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
    }
 
//Function to verify 15 digits ccno.
      function ver15 (){
         var val=0;
      
         cc0=cardNumber.charAt(0);
         cc1=cardNumber.charAt(1);
         cc2=cardNumber.charAt(2);
         cc3=cardNumber.charAt(3);
         cc4=cardNumber.charAt(4);
         cc5=cardNumber.charAt(5);
         cc6=cardNumber.charAt(6);
         cc7=cardNumber.charAt(7);
         cc8=cardNumber.charAt(8);
         cc9=cardNumber.charAt(9);
         cc10=cardNumber.charAt(10);
         cc11=cardNumber.charAt(11);
         cc12=cardNumber.charAt(12);
         cc13=cardNumber.charAt(13);
         cc14=cardNumber.charAt(14);
         
        
         cc1a=cc1*2;
         cc1a=cc1a.toString();
         cc3a=cc3*2;
         cc3a=cc3a.toString();
         cc5a=cc5*2;
         cc5a=cc5a.toString();
         cc7a=cc7*2;
         cc7a=cc7a.toString();
         cc9a=cc9*2;
         cc9a=cc9a.toString();
         cc11a=cc11*2;
         cc11a=cc11a.toString();
         cc13a=cc13*2;
         cc13a=cc13a.toString();
         
         cc1=(cc1a >= 10)? parseInt(cc1a.charAt(0))+parseInt(cc1a.charAt(1)) : cc1a;
         cc3=(cc3a >= 10)? parseInt(cc3a.charAt(0))+parseInt(cc3a.charAt(1)) : cc3a;
         cc5=(cc5a >= 10)? parseInt(cc5a.charAt(0))+parseInt(cc5a.charAt(1)) : cc5a;
         cc7=(cc7a >= 10)? parseInt(cc7a.charAt(0))+parseInt(cc7a.charAt(1)) : cc7a;
         cc9=(cc9a >= 10)? parseInt(cc9a.charAt(0))+parseInt(cc9a.charAt(1)) : cc9a;
         cc11=(cc11a >= 10)? parseInt(cc11a.charAt(0))+parseInt(cc11a.charAt(1)) : cc11a;
         cc13=(cc13a >= 10)? parseInt(cc13a.charAt(0))+parseInt(cc13a.charAt(1)) : cc13a;

         val +=parseInt(cc0);
         val +=parseInt(cc1);
         val +=parseInt(cc2);
         val +=parseInt(cc3);
         val +=parseInt(cc4);
         val +=parseInt(cc5);
         val +=parseInt(cc6);
         val +=parseInt(cc7);
         val +=parseInt(cc8);
         val +=parseInt(cc9);
         val +=parseInt(cc10);
         val +=parseInt(cc11);
         val +=parseInt(cc12);
         val +=parseInt(cc13);
         val +=parseInt(cc14);

         val=val.toString();        
 
         if (val.charAt(1) != 0){return false;}
         if (val.charAt(1) == 0){return true;}
    }


function multiplyToMoney(firstAmount,secondAmount)
{
varRoundedAmount = 0;
varReturnAmount = 0;
varRoundedAmount = round(firstAmount * secondAmount);
//if (! varRoundedAmount.search('.'))
//{
//	returnAmount = 40
//}
//else
//{
	//returnAmount = varRoundedAmount
//}
return returnRoundedAmount;
}
//change the cost to two digits number.  Need further work.
function round (price){
   price=Math.round(price*100)/100;
   return price;
}

function calcsubtotal(thequantity,theprice,thesecondprice)
{

var roundedquantity
var subtotal
var controlname
roundedquantity = round(thequantity);
if(roundedquantity > 0)
	{subtotal= round(((thequantity - 1) * thesecondprice) + theprice);
	return subtotal} 
else
	{return 0}
}

       function whichcard(cardNumber){
	   var cardtype = "";
         if (cardNumber.charAt(0)==4){
             cardtype = "VISA";}
         if (cardNumber.charAt(0)==5){
             cardtype = "MASTERCARD";}
         if (cardNumber.charAt(0)==3 && cardNumber.charAt(1)==7){
 			 cardtype = "AMEX";}
		 if (cardNumber.charAt(0)==3 && (cardNumber.charAt(1)==8 || cardNumber.charAt(1)==0 || cardNumber.charAt(1)==6)){
 			 cardtype = "DINERS CLUB";}
         if (cardNumber.charAt(0)==6) {
             cardtype = "DISCOVER";}	
		window.document.frm.USER2.value=cardtype;
		//alert(cardtype);							
		}
	function calclinetotal(item_quantity,item_num,list_price){
	var quantity = round(item_quantity);
	var fieldname = 'LineTotal_' + item_num;
	var line_total = round(quantity * list_price);
	
	if(item_quantity < 0){
	
	//alert( abs(item_quantity));
	//window.document.forms[0][quantityfieldname].value= abs(item_quantity) ;
	alert('Quantities must be positive.');
	return true;
	}
	else
	{
	var quantityfieldname = 'Quantity_' + item_num;
	
	var newquantity = Math.abs(quantity);
	//alert(quantityfieldname + newquantity);
	//window.document.forms[0][quantityfieldname].value= newquantity ;
	document.getElementById(quantityfieldname).value= newquantity ;
	line_total = Math.abs(line_total);
	//alert(fieldname + " " + quantity + " " + line_total);
	//window.document.forms[0][fieldname].value= line_total ;
	document.getElementById(fieldname).value= line_total ;
	
	return true;
	}
	
	
	}
	
	function line_total(item_quantity,list_price){
		
	var quantity = round(item_quantity);
	var newquantity = Math.abs(quantity);
	var this_total = round(newquantity * list_price);
	//alert(newquantity);

	this_total = Math.abs(this_total);
	//alert(fieldname + " " + quantity + " " + line_total);
	//window.document.forms[0][fieldname].value= line_total ;
	return this_total ;

	}
	
function calcOrderLineTotal(item_quantity,item_num,list_price,total_div_name,quantity_field_name){
	var quantity = Math.abs(round(item_quantity));
	var line_total = round(quantity * list_price);
	
	if(item_quantity < 0){
			document.getElementById(quantity_field_name).value= quantity ;
			line_total = "$" + Math.abs(line_total);
			document.getElementById(total_div_name).innerHTML= line_total ;
		}
		else
		{	
			document.getElementById(quantity_field_name).value= quantity ;
			line_total = "$" + Math.abs(line_total);
			document.getElementById(total_div_name).innerHTML= line_total ;
		}
		return true;
	}

function calcCartOrderLineTotal(orderlineID,item_quantity,item_num,list_price,total_div_name,quantity_field_name){
	var quantity = Math.abs(round(item_quantity));
	var line_total = round(quantity * list_price);
	var line_total_text = "";
	
	if(item_quantity < 0){
			document.getElementById(quantity_field_name).value= quantity ;
			line_total_text = "$" + Math.abs(line_total);
			document.getElementById(total_div_name).innerHTML= line_total_text ;
		}
		else
		{	
			document.getElementById(quantity_field_name).value= quantity ;
			line_total_text = "$" + Math.abs(line_total);
			document.getElementById(total_div_name).innerHTML= line_total_text ;
		}
		updateCart(orderlineID,item_quantity,line_total);
		return true;
	}
	
function Ajax() {
this.req = null;
this.url = null;
this.status = null;
this.statusText = '';
this.method = 'GET';
this.async = true;
this.dataPayload = null;
this.readyState = null;
this.responseText = null;
this.responseXML = null;
this.handleResp = null;
this.responseFormat = 'text', // 'text', 'xml', 'object'
this.mimeType = null;
this.headers = [];


this.init = function() {
var i = 0;
var reqTry = [
function() { return new XMLHttpRequest(); },
function() { return new ActiveXObject('Msxml2.XMLHTTP') },
function() { return new ActiveXObject('Microsoft.XMLHTTP' )} ];

while (!this.req && (i < reqTry.length)) {
try {
this.req = reqTry[i++]();
}
catch(e) {}
}
return true;
};
this.doGet = function(url, hand, format) {
this.url = url;
this.handleResp = hand;
this.responseFormat = format || 'text';
this.doReq();
};
this.doPost = function(url, dataPayload, hand, format) {
this.url = url;
this.dataPayload = dataPayload;
this.handleResp = hand;
this.responseFormat = format || 'text';
this.method = 'POST';
this.doReq();
};
this.doReq = function() {
var self = null;
var req = null;
var headArr = [];

if (!this.init()) {
alert('Could not create XMLHttpRequest object.');
return;
}
req = this.req;
req.open(this.method, this.url, this.async);
if (this.method == "POST") {
this.req.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
}
if (this.method == 'POST') {
req.setRequestHeader('Content-Type',
'application/x-www-form-urlencoded');
}
self = this;
req.onreadystatechange = function() {
var resp = null;
self.readyState = req.readyState;
if (req.readyState == 4) {

self.status = req.status;
self.statusText = req.statusText;
self.responseText = req.responseText;
self.responseXML = req.responseXML;

switch(self.responseFormat) {
case 'text':
resp = self.responseText;
break;
case 'xml':
resp = self.responseXML;
break;
case 'object':
resp = req;
break;
}

if (self.status > 199 && self.status < 300) {
if (!self.handleResp) {
alert('No response handler defined ' +
'for this XMLHttpRequest object.');
return;
}
else {
self.handleResp(resp);
}
}

else {
self.handleErr(resp);
}
}
}
req.send(this.dataPayload);
};
this.abort = function() {
if (this.req) {
this.req.onreadystatechange = function() { };
this.req.abort();
this.req = null;
}
};
this.handleErr = function() {
var errorWin;
// Create new window and display error
try {
errorWin = window.open('', 'errorWin');
errorWin.document.body.innerHTML = this.responseText;
}
// If pop-up gets blocked, inform user
catch(e) {
alert('An error occurred, but the error message cannot be' +
' displayed because of your browser\'s pop-up blocker.\n' +
'Please allow pop-ups from this Web site.');
}
};
this.setMimeType = function(mimeType) {
this.mimeType = mimeType;
};
this.setHandlerResp = function(funcRef) {
this.handleResp = funcRef;
};
this.setHandlerErr = function(funcRef) {
this.handleErr = funcRef;
};
this.setHandlerBoth = function(funcRef) {
this.handleResp = funcRef;
this.handleErr = funcRef;
};
this.setRequestHeader = function(headerName, headerValue) {
this.headers.push(headerName + ': ' + headerValue);
};

}


function
deleteFromCart(orderlineID){
var ajax = new Ajax();
var ajax_path = "";
var deleteFromCart_Func = function (str){
//alert(str);
document.location.href=document.location.href;
	}
ajax_path =
"https://www.projectkickstart.com/sales/cfml/ajaxdeletefromcart.cfm?orderlineid=" + orderlineID;
ajax.doGet(ajax_path, deleteFromCart_Func);
}

function
addToCart(args){
var ajax = new Ajax();
var ajax_path = "";
var user_message_div_id = "";

var addToCart_Func = function (str){
user_message_div_id = 'user_message_' + args.link_index;
document.getElementById(user_message_div_id).innerHTML = "the item was added to your cart <br/> <a href='https://www.projectkickstart.com/sales/orderform.cfm'>check out</a>";
document.getElementById(user_message_div_id).style.display="block";
	}
ajax_path =
"http://www.projectkickstart.com/sales/cfml/ajaxaddtocart.cfm?item_num=" + args.item_num;
ajax.doGet(ajax_path, addToCart_Func);
}

function
updateCart(orderlineID,quantity,linetotal){
var ajax = new Ajax();
var ajax_path = "";
var updateCart_Func = function (str){
//alert(str);
	}
ajax_path =
"https://www.projectkickstart.com/sales/cfml/ajaxupdatecart.cfm?orderlineid=" + orderlineID + "&quantity=" + quantity + "&linetotal=" + linetotal;
ajax.doGet(ajax_path, updateCart_Func);
}
function
updateCartField(field_name,field_value){
//customer order is in the session, no need to pass its id
var ajax = new Ajax();
var ajax_path = "";
var first_two = "";
var last_four = "";
var dummy_x = "XXXXXXXXXXXXXXXX";
var card_number_length = 0;
var updateCartField_Func = function (str){
//alert(str);
	}
	if(field_name=='CreditCardNumber'){
	card_number_length = field_value.length;
	first_two = field_value.substr(0,2);
	last_four = field_value.substr(card_number_length - 4);
	field_value=first_two + dummy_x.substr(card_number_length - 5) + last_four;	
	}
ajax_path =
"https://www.projectkickstart.com/sales/cfml/ajaxUpdateCartField.cfm?field_name=" + field_name + "&field_value=" + field_value;
ajax.doGet(ajax_path, updateCartField_Func);
}

function
update_order_to_SF(orderID,flag_value){
var ajax = new Ajax();
var ajax_path = "";
var update_order_to_SF_Func = function (str){

alert('hello');
	}
ajax_path =
"https://www.projectkickstart.com/sales/cfml/ajaxupdateorder_sf.cfm?orderid=" + orderID + "&flag_value=" + flag_value;
ajax.doGet(ajax_path, update_order_to_SF_Func);
}

//-->
