<!--
//###################################################################################
//THIS PAGE CONTAINS ALL THE COMMON SCRIPTS USED ON THE INTERNET SITE
//WRITTEN BY: PHILIP A. SEIDEL
//PHIL_SEIDEL@ATT.NET
//LAST UPDATED: MONDAY, SEPTEMBER 30, 2001
//BY: ALEXANDER DUTTON
//ZEN@ZENMASTER.COM
//###################################################################################

//################################ FORM VALIDATION ##################################

function ValidateForm(strform, arname, artype){
	//requires form name, elements names, elements types
	//arname is array seperated by comma
	//artype is array seperated by comma
	//call function in the following manner
	//onSubmit="return ValidateForm('form name', 'field1,field2', 'Type,Type');"
	//possible Types (T-Text, E-Email, N-number, D-date)
	var strvalue;
	var x = 0;
	var intlimit;
	var strerr = 'X';
	arname = arname.split(',');	//field names seperated by comma
	artype = artype.split(',');	//field type seperated by comma
	intlimit = arname.length;	//number of fields being checked
	for (x=0;x<intlimit;x++){	//for each field
		strvalue = document.forms[strform].elements[arname[x]].value;	//field value
		strerr = '';	//set to blank
		strerr = ValidateBlank(arname[x], strvalue);	//check for blank
		if (strerr.charAt(1) == 'X'){	//if not blank
			strerr = '';	//set to blank
		}
		if (strerr.charAt(1) == ''){	//passed blank check now check special
		switch (artype[x]){
			case 'E':	//check for valid email
				strerr = ValidateEmail(arname[x], strvalue);
				break;
			case 'N':	//check for valid number
				strerr = ValidateNumber(arname[x], strvalue);
				break;
			case 'D':	//check for valid date
				strerr = ValidateDate(arname[x], strvalue);
				break;
			case 'U':	//check for valid url
				strerr = ValidateUrl(arname[x], strvalue);
				break;
		}}
		if (strerr.length > 1){
			alert(strerr.toUpperCase());
			return false;
		}
	}
}

function ValidateBlank(strname, strvalue){	//checks for blank
	var strerr = '';
	if (strvalue.length <= 0) {	//if field is blank then alert user and exit function
		strerr = strname + ' is required.';	
	}else{
		strerr = 'X';
	}
	return strerr;	//return strerr value
}

function ValidateEmail(strname, strvalue){	//validates email
	var strerr = '';
	if (strvalue.length < 7) {	//valid email must be atleast 7 chars.
		strerr = strname + ' is not a valid email address.';
	}else{
		if (strvalue.indexOf('@') == -1){	//must contain @
			strerr = strname + ' is not a valid email address.';
		}else{
			strerr = 'X';
		}
	}
	return strerr;
}

function ValidateUrl(strname, strvalue){	//validates url
	var strerr = '';
	var strtemp = '';
	if (strvalue.length < 7) {	//valid url must be atleast 7 chars. http://
		strerr = strname + ' is not a valid url.';
	}else{
		strtemp = strvalue.toLowerCase();
		if (strtemp.substring(0, 7) != 'http://'){	//must contain http://
			strerr = strname + ' is not a valid url.';
		}else{
			strerr = 'X';
		}
	}
	return strerr;
}

function ValidateNumber(strname, strvalue){	//validates number
	var strerr = '';
	if (isNaN(strvalue) == true)  {
		strerr = strname + ' must be a number.';
	}else{
		strerr = 'X';
	}
	return strerr;
}

function ValidateDate(strname, strvalue){	//validates date
	var strerr = '';
	var dtdate = new Date();	//current date
	var dttemp;					//selected date
	var ardate;					//date array
	dtdate.setHours(0);
	dtdate.setMinutes(0);
	dtdate.setSeconds(0);
	dtdate.setMilliseconds(0);
	if (strvalue.indexOf('/') != -1){	//does entered date have slashes
		ardate = strvalue.split('/');	//split into 3 parts
		if (ardate.length == 3){	//proper format check for expiration
			ardate[0] = ardate[0] - 1;	//correction for month starting at 0
			dttemp = new Date(ardate[2], ardate[0], ardate[1]);	//create date selected date
			if (!(dttemp >= dtdate)){	//date has already past
				strerr = 'The date you entered has already past.'
			}
		}else{	//invalid number of date elements
			strerr = strname + ' must be a date. (mm/dd/yyyy)';
		}
	}else{	//invalid date b/c no slashes
		strerr = strname + ' must be a date. (mm/dd/yyyy)';
	}
	return strerr;
}
//############################### END FORM VALIDATION ##########################

function ConfirmAction(straction) { //display confirmation message
var strconfirm = false;
strconfirm = confirm(straction);
	if (strconfirm == true) {
	return true
	}else {
	return false
	}
}

function OpenWindow(straddress, inth, intw){
	if(inth == 0 || intw == 0){
		window.open(straddress);
	}else{
		window.open(straddress, '', 'height=' + inth + ',width=' + intw + ',scrollbars=yes,resizable=yes');
	}
	
}

function UrlJump(strurl){
	window.document.location = strurl;
}


//################################## CREDIT CARD VALIDATION ##########################

function mod10( cnumber ) { // LUHN Formula for validation of credit card numbers.
	var ar = new Array( cnumber.length );
	var i = 0,sum = 0;
	for( i = 0; i < cnumber.length; ++i ) {
		ar[i] = parseInt(cnumber.charAt(i));
	}
	for( i = ar.length -2; i >= 0; i-=2 ) {  // you have to start from the right, and work back.
		ar[i] *= 2;							 // every second digit starting with the right most (check digit)
		if( ar[i] > 9 ) ar[i]-=9;			 // will be doubled, and summed with the skipped digits.
	}										 // if the double digit is > 9, add those individual digits together 
	for( i = 0; i < ar.length; ++i ) {
		sum += ar[i];						 // if the sum is divisible by 10 mod10 succeeds
	}
	return (((sum%10)==0)?true:false);	  	
}

function expired( month, year ) {
	var now = new Date();							// this function is designed to be Y2K compliant.
	var expiresIn = new Date(year,month,0,0,0);		// create an expired on date object with valid thru expiration date
	expiresIn.setMonth(expiresIn.getMonth()+1);		// adjust the month, to first day, hour, minute && second of expired month
	if( now.getTime() < expiresIn.getTime() ) return false;
	return true;									// then we get the miliseconds, and do a long integer comparison
}

function validateCard(cnumber,ctype,cmonth,cyear) {
	if( cnumber.length == 0 ) {						//most of these checks are self explanitory
		alert("ENTER A VALID CARD NUMBER.");
		return false;				
	}
	for( var i = 0; i < cnumber.length; ++i ) {		// make sure the number is all digits.. (by design)
		var c = cnumber.charAt(i);
		if( c < '0' || c > '9' ) {
			alert("ENTER A VALID CARD NUMBER.  USE ONLY DIGITS.  DO NOT USE SPACES OR HYPHENS.");
			return false;
		}
	}
	var length = cnumber.length;			//perform card specific length and prefix tests
	switch( ctype ) {
		case '0':	//3
			if( length != 15 ) {
				alert("ENTER A VALID AMERICAN EXPRESS CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,2));
			if( prefix != 34 && prefix != 37 ) 
			{
				alert("ENTER A VALID AMERICAN EXPRESS CARD NUMBER.");
				return false;
			}
			break;
		case '3':	//4
			if( length != 16 ) {
				alert("ENTER A VALID DISCOVER CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,4));
			if( prefix != 6011 ) {
				alert("ENTER A VALID DISCOVER CARD NUMBER.");
				return false;
			}
			break;
		case '2':	//2
			if( length != 16 ) {
				alert("ENTER A VALID MASTERCARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,2));
			if( prefix < 51 || prefix > 55) {
				alert("ENTER A VALID MASTERCARD CARD NUMBER.");
				return false;
			}
			break;
		case '1':	//1
			if( length != 16 && length != 13 ) {
				alert("ENTER A VALID VISA CARD NUMBER.");
				return false;
			}
			var prefix = parseInt( cnumber.substring(0,1));
			if( prefix != 4 ) {
				alert("ENTER A VALID VISA CARD NUMBER.");
				return false;
			}
			break;
	}
	if( !mod10( cnumber ) ) {                             		// run the check digit algorithm
		alert("THIS IS NOT A VALID CREDIT CARD NUMBER.");
		return false;
	}
	if( expired( cmonth, cyear ) ) {							// check if entered date is already expired.
		alert("THE EXPIRATION DATE YOU HAVE ENTERED IS INVALID.");
		return false;
	}
	
	return true; // at this point card has not been proven to be invalid
}


function ImagePreload(){
	var x;
	var intlimit;
	intlimit = ImagePreload.arguments.length;
	for (x=0;x<intlimit;x++){
		var img = new Image();
		window.status = "Preloading Image: " + ImagePreload.arguments[x];
		img.src = ImagePreload.arguments[x];
	}
	window.status = "Done";
}

function ImageSwap(strname, strswap){
	document.images[strname].src = strswap;
}

function bcStyle(){	//browser check
//
//	UPDATE BY ALEXANDER DUTTON (ZEN@ZENMASTER.COM)
//	09.30.02 - new browser identification script
//

var isNS4, isNS6, isIE4, isIE5;

isNS4 = (document.layers) ? true : false;
isIE4 = (document.all && !document.getElementById) ? true : false;
isIE5 = (document.all && document.getElementById) ? true : false;
isNS6 = (!document.all && document.getElementById) ? true : false;

	if (isIE4)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isIE5)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isNS4)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else if (isNS6)
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
	else
		{document.write('<LINK REL="StyleSheet" HREF="static/default.css" type="text/css">');}
}


