//#######################################################################
// WebCatalog Creator 2003 Script build 159 - webcat.js
//

// © 1999-2003 Grafix Network, Inc.  This software and software source code 

// is protected by copyright law and international treaties.  Unauthorized 

// use of this program, or any portion of it, will result in criminal and 

// civil prosecution to the maximum extent of the law.

//#######################################################################



var notice_no_default = "You can not submit the default value for the customized text.";

var notice_required = "You must specify a value for the customized text.";

var notice_beyond_max = "Please limit your response to XX characters";

var notice_invalid_character = "You can not use the '|' symbol in this field";

var notice_specify_value = "You must specify a value for";

var notice_email_invalid = "The email address you've entered is invalid";

var notice_cc_invalid = "The credit card number you've entered is invalid";

var notice_max_length = "Please limit the number of characters in your response to";



//######################################

function Order_Form_Validate(theForm) {

for (var i=0; i<theForm.elements.length; i++) {

	var validateObj = theForm.elements[i];

	var params = validateObj.id.split("|");

	if ((params[1] == "True") || (params[2] != 0))

	{

	    if (params[2] == 1) { //email address

			if (!(emailCheck (validateObj.value))) {

				alert(notice_email_invalid);

				validateObj.focus();

				return (false);

			}

	    }

	    if (params[2] == 2) { //credit card number

	        if (validateObj == "") {

	            alert(notice_cc_invalid);

	            return (false);

	        }

	        if (!(checkCard(validateObj.value))) {

	            alert(notice_cc_invalid);

	            validateObj.focus();

	            return (false);

	        }

	    }

	    if (validateObj.value == "") {

	            alert(notice_specify_value + " " + params[0]);

	            validateObj.focus();

	            return (false);

	    }

		if (params[3] > 0) {

	        if (validateObj.value.length > params[3]) {

	            alert(notice_max_length + " " + params[3]);

	            validateObj.focus();

	            return  (false);

	        }

		}

	} 

}

return (true);

}

//#################################

//Drop Down Selection

function selectaplace(form) {

	var appname= navigator.appName;

	var appversion=parseInt(navigator.appVersion);

	if (appname == "Netscape" && appversion >= 3) {

		var formindex=form.select1.selectedIndex;

		var storage=form.select1.options[formindex].text;

		if (form.select1.options[formindex].value != "none") {

			var msg=storage+"You are now being transferred to the -> "+storage;

			for (var spot=0;spot<msg.length-storage.length;spot++) {

			var x=msg.substring(spot,msg.length);

			form.select1.options[formindex].text=x;

			for(var d=0;d<150;d++) { };

		}

			window.location=form.select1.options[formindex].value;

			form.select1[formindex].text=storage;

	} else  {

		form.select1[formindex].text="Not a real option!";

		for(var d=0;d<1250;d++) { };

		form.select1[formindex].text=storage;

	   }

	}

		else {

		var formindex=form.select1.selectedIndex;

		window.location=form.select1.options[formindex].value;

   	}	

}



//#################################

//Cart Validate

function cart_validate(theForm)

{

	var stemp;

	if (theForm.personalized_info.value !== "")

	{

		 var parray = theForm.personalized_info.value.split("|");

		 if ((parray[3] == 0) && (theForm.personalized.value == parray[2]) && (theForm.personalized.value !== ""))

			 {

			 	alert(notice_no_default);

			 	return (false);

			 }

		 if ((parray[4] == -1) && (theForm.personalized.value == ""))

			 {

			 	alert(notice_required);

			 	return (false);

			 }

		if ((theForm.personalized.value.length > parray[1]) && (parray[1] > 0))

			{

			 	alert(notice_beyond_max);

			 	return (false);

			}

		for (var i=0; i<theForm.personalized.value.length; i++) {

			stemp = theForm.personalized.value.substring(i, i+1);

			if (stemp == "|")

			{

			 	alert(notice_invalid_character);

			 	return (false);

			}

		}

	}

  	return (true);

}



//######################################

function emailCheck (emailStr) {

var emailPat=/^(.+)@(.+)$/

var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"

var validChars="\[^\\s" + specialChars + "\]"

var quotedUser="(\"[^\"]*\")"

var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/

var atom=validChars + '+'

var word="(" + atom + "|" + quotedUser + ")"

var userPat=new RegExp("^" + word + "(\\." + word + ")*$")

var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")

var matchArray=emailStr.match(emailPat)

if (matchArray==null) {

	return false

}

var user=matchArray[1]

var domain=matchArray[2]

if (user.match(userPat)==null) {

    return false

}

var IPArray=domain.match(ipDomainPat)

if (IPArray!=null) {

	  for (var i=1;i<=4;i++) {

	    if (IPArray[i]>255) {

		return false

	    }

    }

    return true

}

var domainArray=domain.match(domainPat)

if (domainArray==null) {

    return false

}

var atomPat=new RegExp(atom,"g")

var domArr=domain.match(atomPat)

var len=domArr.length

if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>5) {

   return false

}

if (len<2) {

   var errStr="This address is missing a hostname!"

   return false

}

return true;

}



//######################################

function checkCardNumWithMod10(cardNum) {

	var i;

	var cc = new Array(16);

	var checksum = 0;

	var validcc;

	for (i = 0; i < cardNum.length; i++) {

		cc[i] = Math.floor(cardNum.substring(i, i+1));

	}

	for (i = (cardNum.length % 2); i < cardNum.length; i+=2) {

		var a = cc[i] * 2;

		if (a >= 10) {

			var aStr = a.toString();

			var b = aStr.substring(0,1);

			var c = aStr.substring(1,2);

			cc[i] = Math.floor(b) + Math.floor(c);

		} else {

			cc[i] = a;

		}

	}

	for (i = 0; i < cardNum.length; i++) {

		checksum += Math.floor(cc[i]);

	}

	validcc = ((checksum % 10) == 0);

	return validcc;

}



//######################################

function cleanCardNum(cardNum) {

	var i;

	var ch;

	var newCard = "";

	var pattern = /[0-9]/;

	i = 0;

	while (i < cardNum.length) {

		ch = cardNum.substring(i, i+1);

		if (pattern.test(ch)) {

			newCard += ch;

		}

		i++;

	}

	return newCard;

}

//######################################

function checkCard(cardNum) {

	var validCard;

	var cardLength;

	var cardLengthOK;

	var cardStart;

	var cardStartOK;

	validCard = cleanCardNum(cardNum);

	if (validCard != "") {

		cardStart = validCard.substring(0,1);

		cardStartOK = ( (cardStart == "4") || (cardStart == "5") || (cardStart == "3") || (cardStart == "6") );

		cardLength = validCard.length;		

		if (cardStart == 3) {

		       if (cardLength != 15) { return false; }

		}

		if (cardStart == 4) {

		        if ((cardLength != 13) && (cardLength != 16)) { return false; }

		}

		if (cardStart == 5) {

		        if (cardLength != 16) { return false; }

		}

		if (cardStart == 6) {

		        if (cardLength != 16) { return false; }

		}

		if (checkCardNumWithMod10(validCard)) {

			return true;

		} else {

			return false;

		}

	} else {

		return false;

	}

}


