		// Used to id browsers.
		var browser="";

		if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)==3) { browser="n3"; }
		if(navigator.appName=="Netscape" && parseInt(navigator.appVersion)==4) { browser="n4"; }
		if(navigator.appVersion.indexOf("MSIE 4.0") != -1) { browser="ie4"; }

		// Used to position window for Netscape 4
		var w=0;
		var h=0;
		if ( browser=="n4" ) {
		   var screen_height=parent.screen.height;
		   var screen_width=parent.screen.width;
		   var main_height=parent.window.innerHeight;
		   h=(screen_height-main_height);
		   w=(screen_width/2)-275;
		}
		
        var clicked;

        // indexes to country names
        var countries = new Array(2);
        countries [""] = 0;
        countries ["CA"] = 1;
        countries ["US"] = 2;

        // indexes to states and provinces
        var states = new Array();
        states [""] = 0;
        states ["AL"] = 1;
        states ["AK"] = 2;
        states ["AB"] = 3;
        states ["AZ"] = 4;
        states ["AR"] = 5;
        states ["BC"] = 6;
        states ["CA"] = 7;
        states ["CO"] = 8;
        states ["CT"] = 9;
        states ["DE"] = 10;
        states ["DC"] = 11;
        states ["FL"] = 12;
        states ["GA"] = 13;
        states ["HI"] = 14;
        states ["ID"] = 15;
        states ["IL"] = 16;
        states ["IN"] = 17;
        states ["IA"] = 18;
        states ["KS"] = 19;
        states ["KY"] = 20;
        states ["LA"] = 21;
        states ["ME"] = 22;
        states ["MB"] = 23;
        states ["MD"] = 24;
        states ["MA"] = 25;
        states ["MI"] = 26;
        states ["MN"] = 27;
        states ["MS"] = 28;
        states ["MO"] = 29;
        states ["MT"] = 30;
        states ["NE"] = 31;
        states ["NV"] = 32;
        states ["NB"] = 33;
        states ["NH"] = 34;
        states ["NJ"] = 35;
        states ["MN"] = 36;
        states ["NY"] = 37;
        states ["NF"] = 38;
        states ["NC"] = 39;
        states ["ND"] = 40;
        states ["NW"] = 41;
        states ["NS"] = 42;
        states ["NU"] = 43;
        states ["OH"] = 44;
        states ["OK"] = 45;
        states ["ON"] = 46;
        states ["OR"] = 47;
        states ["PA"] = 48;
        states ["PE"] = 49;
        states ["QC"] = 50;
        states ["RI"] = 51;
        states ["SA"] = 52;
        states ["SC"] = 53;
        states ["SD"] = 54;
        states ["TN"] = 55;
        states ["TX"] = 56;
        states ["UT"] = 57;
        states ["VT"] = 58;
        states ["VA"] = 59;
        states ["WA"] = 60;
        states ["WV"] = 61;
        states ["WI"] = 62;
        states ["WY"] = 63;
        states ["YT"] = 64;

        function startNewProcess () {
            clicked = false;

            if (typeof form != "undefined") {
                if (typeof form.bs != "undefined")
                    form.state.selectedIndex = states [form.bs.value];
                if (typeof form.bc != "undefined")
                    form.country.selectedIndex = countries [form.bc.value];
                if (typeof form.ss != "undefined")
                    form.sstate.selectedIndex = states [form.ss.value];
                if (typeof form.sc != "undefined")
                    form.scountry.selectedIndex = countries [form.sc.value];
            }

        }

        function verifyQuantity (form) {

            var ok = false;
            var qty = form.q.value;

            if ((qty == null) || (isNaN (qty)) || (qty.length == 0) || (qty.indexOf (".") != -1) || (qty) < 0) {
                alert ("Please enter a positive whole value for the quantity.");
                form.q.focus();
            }
            else
                ok = true;
                
            return ok;
        }
        
        function verifySearch (form) {
        
            // make sure we have everything to do a search.
            var ok = false;

            form.p.value = form.p.value.ftrim();
            if (form.p.value.length == 0) {
                alert ("Please enter the critera for your search.");
                form.p.focus();
            }
            else
                ok = true;

            return ok;
        }

        function verifyGlobalSearch (form) {
        
            // make sure we have everything to do a search.
            var ok = false;
 
            form.p.value = form.p.value.ftrim();
            if (form.p.value.length == 0) {
                alert ("Please enter the critera for your search.");
                form.p.focus();
            }
            else
                ok = true;  

            return ok;
        }

        function verifyDDSearch (form) {
        
            // make sure we have everything to do a search.
            var ok = false;

            form.p.value = form.p.value.ftrim();
	    	if (form.t.value == "") {
                alert ("Please select how you would like to search.");
                form.t.focus();
            }
            else if (form.p.value.length == 0) {
                alert ("Please enter the critera for your search.");
                form.p.focus();
            }
            else
                ok = true;

            return ok;
        }

        function copyBillingAddress (form) {

            if (form.shippingSame.checked) {
                // duplicate everything since billing & shipping are the same.
                form.sfname.value = form.fname.value;
                form.smname.value = form.mname.value;
                form.slname.value = form.lname.value;
                form.saddress1.value = form.address1.value;
                form.saddress2.value = form.address2.value;
                form.scity.value = form.city.value;
                form.sstate.selectedIndex = form.state.selectedIndex;
                form.szip.value = form.zip.value;
                form.scountry.selectedIndex = form.country.selectedIndex;
            }
            else {
                // wipe out everything
                form.sfname.value = "";
                form.smname.value = "";
                form.slname.value = "";
                form.saddress1.value = "";
                form.saddress2.value = "";
                form.scity.value = "";
                form.sstate.selectedIndex = 0;
                form.szip.value = "";
                form.scountry.selectedIndex = 0;
            }
        }


        function verifyShipping (form) {

            // make sure the shipping address is "sort of" ok.
            var ok = false;
            var beginning = "Please enter the ";
            var selectbeginning = "Please select the  ";
            var ending = " of the shipping address.";

            form.sfname.value = form.sfname.value.ftrim();
            form.slname.value = form.slname.value.ftrim();
            form.smname.value = form.smname.value.ftrim();
            form.saddress1.value = form.saddress1.value.ftrim();
            form.saddress2.value = form.saddress2.value.ftrim();
            form.scity.value = form.scity.value.ftrim();
            form.szip.value = form.szip.value.ftrim();

            if (form.sfname.value.length == 0) {
                alert (beginning + "first name" + ending);
                form.sfname.focus();
            }
            else if (form.slname.value.length == 0) {
                alert (beginning + "last name" + ending);
                form.slname.focus();
            }
            else if (form.saddress1.value.length == 0) {
                alert (beginning + "address"  + ending);
                form.saddress1.focus();
            }
            else if (form.scity.value.length == 0) {
                alert (beginning + "city"  + ending);
                form.scity.focus();
            }
            else if (form.sstate.selectedIndex == 0) {
                alert (selectbeginning + "state or province"  + ending);
                form.sstate.focus();
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        // Canadian & US zip codes
                        alert (beginning + "zip code"  + ending);
                        form.szip.focus();        
            }
            else if (form.scountry.selectedIndex == 0) {
                alert (beginning + "country name"  + ending);
                form.scountry.focus();
            }
            else
                ok = true;

            return ok;
        }


        function getDigits (str) {

            // filter out invalid letters/numbers
            var fixednumber = '';

            for (var l = str.length, i = 0; i < l; i++) {
                var digit = str.charAt (i);
                switch (digit) {
                    case'1':
                    case'2':
                    case'3':
                    case'4':
                    case'5':
                    case'6':
                    case'7':
                    case'8':
                    case'9':
                    case'0':
                        break;

                    case'A':
                    case'B':
                    case'C':
                        digit='2';
                        break;

                    case'D':
                    case'E':
                    case'F':
                        digit='3';
                        break;

                    case'G':
                    case'H':
                    case'I':
                        digit='4';
                        break;

                    case'J':
                    case'K':
                    case'L':
                        digit='5';
                        break;

                    case'M':
                    case'N':
                    case'O':
                        digit='6';
                        break;

                    case'P':
                    case'Q':
                    case'R':
                    case'S':
                        digit='7';
                        break;

                    case'T':
                    case'U':
                    case'V':
                        digit='8';
                        break;

                    case'W':
                    case'X':
                    case'Y':
                    case'Z':
                        digit='9';
                        break;

                    default:
                        continue;
                }

                fixednumber += digit;
            }

            return fixednumber;
        }

        function verifyPhoneNumber (phone) {

            // make sure we have a valid US/Canadian phone number
            var ok = false;
            var fixednumber = phone.number.toUpperCase();
            fixednumber = getDigits (fixednumber);
            
            // number cant start with "0" or "1"
            while (fixednumber.length > 0 && (fixednumber.charAt (0) == '0' || fixednumber.charAt (0) == '1'))
                fixednumber = fixednumber.substr (1);

            if (fixednumber.length != 10)
                alert ('phone/fax should be exactly 10 digits long (please include area code)');
            else {
                var digits = fixednumber.substr (3);
                var digitsize = charsetSize (digits);

                // make sure number passes all criteria (ie - no 555 area code, etc.)
                if (digits.indexOf ('555') == 0 || MaxDigitCount (digits) >= 5 || digitsize <= 2)
                    alert (digits + ' is not a valid phone number. Please enter your phone number.');
                else {
                    phone.number = fixednumber;
                    ok = true;
                }
            }
            
            if (!ok)
                phone.number = fixednumber;

            return ok;
        }

        function charsetSize (str) {

            // get the character set size
            var charset='';
            var l, i;

            for (l = str.length, i = 0; i < l; i++)
                if (charset.indexOf (str.charAt (i)) == -1) 
                    charset += str.charAt(i);

            return charset.length;
        }


        function MaxDigitCount (s) {

            // return maximum digit count
            var result = 0;
            var count = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
            var l, i;

            s = charsetLimit (s, "0123456789");

            for (l = s.length, i = 0; i < l; i++)
                if (++count [parseInt (s.charAt(i))] > result)
                    result++;

            return result;
        }

        function charsetLimit (str, charSet) {

            var ch;
            var result='';
            var l = charSet.length;

            for (var i = 0; i < l; i++) {
                ch = str.charAt (i);
                if (charSet.indexOf (ch) != -1)
                    result += ch;
            }

            return result;
        }
        
        function verifyShippingRadioOption (form) {

			var ok = false;
			var ckval;

			if (clicked) {
				alert ("Please wait for your final total.");
			}
			else {
				for (counter = 0; counter < form.p.length; counter++) {
					if ((form.p [counter].checked) &&
						(form.p [counter].value != "N/A"))
						ok = true;
						ckval = counter;
				}

				if (!ok) {
					alert ("Please select a valid shipping option.");
				}
				else {
					ok = true;
					clicked = true;
				}
				
				return ok;
			}
        }

        function verifyShippingOption (form) {
            
            var ok = false;

            if (clicked) {
                alert ("Please wait for your final total.");
            }
            else if (form.p.selectedIndex == 0) {
                alert ("Please select a shipping option.");
                form.p.focus();
            }
            else {
                ok = true;
				clicked = true;
                form.submit.value = "Please wait...";
            }

            return ok;
        }

        function flashSecurityHelp() {
	    alert (getSecurityHelp());
        }

        function getSecurityHelp() {

         return "As a fraud-prevention measure for your safety, we need the \n" + 
		"security code associated with your credit card.\n\n" +
                "For VISA, MasterCard and Discover credit cards, the security \n" +
		"code is the last 3 digits on the back of your card next to \n" +
		"your credit card number.\n\n" +
                "For American Express cards, the security code is the 4-digit \n" + 
		"number on the front of the card.";
        }

        function verifyCreditCard (form) {

            var ok = false;
            var ccno = form.ccno.value.toUpperCase();
            ccno = getDigits (ccno);

            var seccode = form.seccode.value.toUpperCase();
            seccode = getDigits (seccode);

            if (clicked) {
                alert ("Please wait for authorization.");
            }
            else if ((form.ccno.value.length < 13) ||
                (form.ccno.value.length > 16)) {
                    alert ("Please supply a valid credit card number.\n\n" +
                           "VISA, MasterCard, American Express and Discover cards are accepted.");
                    form.ccno.focus();
            }
            else if ((typeof form.seccode != "undefined") &&
                     ((form.seccode.value.length != 3) &&
                     (form.seccode.value.length != 4))) {
    
                    alert ("Please enter your credit card security code.\n\n" +
                            getSecurityHelp());

                    form.seccode.focus();
            }
            else {
                ok = true;
                clicked = true;
                form.submit.value = "Please wait...";
            }

            form.ccno.value = ccno;
            form.seccode.value = seccode;

            return ok;
        }

        function verifySZipcode (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();        
            }
            else
            	ok = true;
            	
			clicked = ok;

            return ok;
        }

        function verifySZipcode (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();        
            }
            else
            	ok = true;
            	
			clicked = ok;

            return ok;
        }

        function verifyV2BillingWithAccount (form) {

                var ok = verifyV2Billing (form);

                if (ok) {
                        if (((form.cp.value.length != 0)  && (form.cnfp.value.length == 0)) ||
                                ((form.cp.value.length == 0)  && (form.cnfp.value.length != 0)) ||
                                (form.cp.value != form.cnfp.value)) {
                                alert ("I'm sorry the password fields do not match.");
                                form.cp.focus();
                                ok = false;
                        }
                }

                if (ok) {
                        form.submit.value= "Please wait...";
                }

                clicked = ok;
                return ok;
        }


        function verifyV2Billing (form) {

            var ok = false;
            var beginning = "Please enter your ";
            var selectbeginning = "Please select the  ";
            var ending = " as it appears on your credit card statement.";
  
            form.fname.value = form.fname.value.ftrim();
            form.lname.value = form.lname.value.ftrim();
            form.mname.value = form.mname.value.ftrim();
            form.address1.value = form.address1.value.ftrim();
            form.address2.value = form.address2.value.ftrim();
            form.city.value = form.city.value.ftrim();
            form.zip.value = form.zip.value.ftrim();
            form.phone.value = form.phone.value.ftrim();
            form.email.value = form.email.value.ftrim();
            form.fax.value = form.fax.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next step.");
            }

            else if (form.fname.value.length == 0) {
                alert (beginning + "first name" + ending);
                form.fname.focus();
            }
            else if (form.lname.value.length == 0) {
                alert (beginning + "last name" + ending);
                form.lname.focus();
            }
            else if (form.address1.value.length == 0) {
                alert (beginning + "address"  + ending);
                form.address1.focus();
            }
            else if (form.city.value.length == 0) {
                alert (beginning + "city"  + ending);
                form.city.focus();
            }
            else if (form.state.selectedIndex == 0) {
                alert (selectbeginning + "state or province"  + ending);
                form.state.focus();
            }
            else if ((form.zip.value.length != 5) &&
                     (form.zip.value.length != 6)) {
                        alert (beginning + "zip code"  + ending);
                        form.zip.focus();        
            }
            else if (form.country.selectedIndex == 0) {
                alert (selectbeginning + "country name"  + ending);
                form.country.focus();
            }
            // perform better checking of e-mail address.
            else if (form.email.value.length == 0) {
                alert (beginning + "e-mail address.");
                form.email.focus();
            }
            else if (form.phone.value.length == 0) {
                alert (beginning + "telephone number"  + ending);
                form.phone.focus();
            }
            else {
                // verify phone number
                var phone = {number: form.phone.value};
                if (!verifyPhoneNumber (phone)) {
                    form.phone.value = phone.number;
                    form.phone.focus();
                }
                else {
                    form.phone.value = phone.number;
		    ok = verifyCreditCard (form);
		    if (ok) {
                    	form.submit.value= "Please wait..."; 
		    }
                }
            }

            clicked = ok;
            return ok;
        }

        function verifyBilling (form) {

            var ok = false;
            var beginning = "Please enter your ";
            var selectbeginning = "Please select the  ";
            var ending = " as it appears in your credit card record.";
  
            form.fname.value = form.fname.value.ftrim();
            form.lname.value = form.lname.value.ftrim();
            form.mname.value = form.mname.value.ftrim();
            form.address1.value = form.address1.value.ftrim();
            form.address2.value = form.address2.value.ftrim();
            form.city.value = form.city.value.ftrim();
            form.zip.value = form.zip.value.ftrim();
            form.phone.value = form.phone.value.ftrim();
            form.email.value = form.email.value.ftrim();
            form.fax.value = form.fax.value.ftrim();

            if (clicked) {
                alert ("Please wait for your shipping options.");
            }

            else if (form.fname.value.length == 0) {
                alert (beginning + "first name" + ending);
                form.fname.focus();
            }
            else if (form.lname.value.length == 0) {
                alert (beginning + "last name" + ending);
                form.lname.focus();
            }
            else if (form.address1.value.length == 0) {
                alert (beginning + "address"  + ending);
                form.address1.focus();
            }
            else if (form.city.value.length == 0) {
                alert (beginning + "city"  + ending);
                form.city.focus();
            }
            else if (form.state.selectedIndex == 0) {
                alert (selectbeginning + "state or province"  + ending);
                form.state.focus();
            }
            else if ((form.zip.value.length != 5) &&
                     (form.zip.value.length != 6)) {
                        alert (beginning + "zip code"  + ending);
                        form.zip.focus();        
            }
            else if (form.country.selectedIndex == 0) {
                alert (selectbeginning + "country name"  + ending);
                form.country.focus();
            }
            // perform better checking of e-mail address.
            else if (form.email.value.length == 0) {
                alert (beginning + "e-mail address.");
                form.email.focus();
            }
            else if (form.phone.value.length == 0) {
                alert (beginning + "telephone number"  + ending);
                form.phone.focus();
            }
            else {
                // verify phone number
                var phone = {number: form.phone.value};
                if (!verifyPhoneNumber (phone)) {
                    form.phone.value = phone.number;
                    form.phone.focus();
                }
                else {
                    form.phone.value = phone.number;

                    // do we need to verify shipping?
                    if (!form.shippingSame.checked)
                        ok = verifyShipping (form);
                    else {
                        // all looks good. let's keep going
                        copyBillingAddress (form);
                        form.submit.value= "Please wait..."; 
                        ok = true;
                    }
                }
            }

            clicked = ok;

            return ok;
        }


        function verifyPayPalBillingInput (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();
            form.email.value = form.email.value.ftrim();
            form.phone.value = form.phone.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();
            }
            else if (form.phone.value.length == 0) {
                alert ("Please enter your primary phone number.");
                form.phone.focus();
            }
            else if (form.email.value.length == 0) {
                alert ("Please enter your e-mail address.");
                form.email.focus();
            }
            else
                ok = true;

                clicked = ok;

            return ok;
        }


        String.prototype.ltrim = function() {
            return this.replace(/^\s+/,'');
        }

        String.prototype.rtrim = function() {
            return this.replace(/\s+$/,'');
        }

        String.prototype.ftrim = function() {
            return this.replace(/\s+$/,'').replace(/^\s+/,'');
        }


		function ow (url) {
			openWindow (url);
		}
		
			
		function openWindow (url) {
			// pop open a window in a web browser.
		   var newWind=window.open ("/" + url,"display","scrollbars=1,width=550,height=375,screenX="+w+",screenY="+h);
		   if (newWind.opener == null) {
						newWind.opener = window;
		   }
		   else {
				  if (browser=="n3"  ||  browser=="n4"  ||  browser=="ie4")
						 newWind.focus();
		
		   }
		}
		

        function verifyPayPalBillingInput (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();
            form.email.value = form.email.value.ftrim();
            form.phone.value = form.phone.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();
            }
            else if (form.phone.value.length == 0) {
                alert ("Please enter your primary phone number.");
                form.phone.focus();
            }
            else if (form.email.value.length == 0) {
                alert ("Please enter your e-mail address.");
                form.email.focus();
            }
            else
                ok = true;

                clicked = ok;

            return ok;
        }

        function verifyPPLInput (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();
            form.email.value = form.email.value.ftrim();
            form.phone.value = form.phone.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();
            }
            else if (form.phone.value.length == 0) {
                alert ("Please enter your primary phone number.");
                form.phone.focus();
            }
            else if (form.email.value.length == 0) {
                alert ("Please enter your e-mail address.");
                form.email.focus();
            }
            else
                ok = true;

                clicked = ok;

            return ok;
        }

        function verifySZipcode (form) {

            var ok = false;

            form.szip.value = form.szip.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.szip.value.length != 5) &&
                     (form.szip.value.length != 6)) {
                        alert ("Please enter your shipping zip code.");
                        form.szip.focus();        
            }
            else
            	ok = true;
            	
			clicked = ok;

            return ok;
        }


        function verifyBZipcode (form) {

            var ok = false;

            form.zip.value = form.zip.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if ((form.zip.value.length != 5) &&
                     (form.zip.value.length != 6)) {
                        alert ("Please enter your billing zip code.");
                        form.zip.focus();        
            }
            else
            	ok = true;
            	
			clicked = ok;

            return ok;
        }

	function showEnlarged (picture, height, width) {
	
    	    var x = (640 - width)/2
    	    var y = (480 - height)/2;

	    if (screen) {
		y = (screen.availHeight - height)/2;
		x = (screen.availWidth - width)/2;
	    }

	    var newWind=window.open (picture,"display","status=no,toolbar=no,menubar=no,location=no,scrollbars=0,width=" + (parseFloat(width) + 20)  + ",height=" + (parseFloat(height) + 20) + ",screenX="+x+",screenY="+y+",top="+y+",left="+x);
	    
	    if (newWind.opener == null) {
		newWind.opener = window;
	   }
	   
	   newWind.focus();
	}


        function verifyPPLContactInput (form) {

            var ok = false;

            form.email.value = form.email.value.ftrim();
            form.phone.value = form.phone.value.ftrim();

            if (clicked) {
                alert ("Please wait for the next page. Thank you.");
            }
            else if (form.phone.value.length == 0) {
                alert ("Please enter your primary phone number.");
                form.phone.focus();
            }
            else if (form.email.value.length == 0) {
                alert ("Please enter your e-mail address.");
                form.email.focus();
            }
            else
            	ok = true;
            	
           	clicked = ok;
           	
            return ok;
        }

