// CHECK FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

//Checks if valid text is entered (must not contain invalid chars '~')
//example: 1. CheckField('Email', document.Formname.Widget1, 'Please enter text.');
//         2. if (CheckField('Email', document.Formname.Widget1)) .....;
//#1 checks, alerts, returns true/false and puts the focus back on the widget if false.
//#2 simply checks and return a true or false.

function CheckField(type, field, alertMessage)
{
//alert(type)

	switch (type) {
		case 'Text':
			if (ValidField(field.value))
				return true;
			break;
		case 'RequiredText':
			if (ValidRequiredField(field.value))
				return true;
			break;
		case 'Money':
			if (ValidMoney(field.value))
				return true;
			break;
		case 'MoneyPositive':
			if (ValidMoneyPositive(field.value))
				return true;
			break;
		case 'Email':
			if (ValidEmail(field.value))
				return true;
			break;
		case 'PhoneAreaCode':
			if (ValidPhoneAreaCode(field.value))
				return true;
			break;
		case 'PhoneNumber':
			if (ValidPhoneNumber(field.value))
				return true;
			break;
		case 'PhoneExtension':
			if (ValidPhoneExtension(field.value))
				return true;
			break;
		case 'Zip':
			if (ValidZip(field.value))
				return true;
			break;
		case 'Zip4':
			if (ValidZip4(field.value))
				return true;
			break;
		case 'Number':
			if (ValidNumber(field.value))
				return true;
			break;
		case 'NumberPositive':
			if (ValidNumberPositive(field.value))
				return true;
			break;
		case 'NumberNaN':
			if (ValidNumberNaN(field.value))
				return true;
			break;
		case 'Integer':
			if (ValidInteger(field.value))
				return true;
			break;
		case 'Binary':
			if (ValidBinary(field.value))
				return true;
			break;
		case 'CreditCard':
			if (ValidCreditCard(field.value))
				return true;
			break;
		case 'Date':
			if (ValidDate(field.value))
				return true;
			break;
		case 'Date2':
			if (ValidDate(field))
				return true;
			break;
		case 'Year':
			if (ValidYear(field.value))
				return true;
			break;
		case 'YearPast':
			if (ValidYearPast(field.value))
				return true;
			break;
		case 'UserNumber':
			if (ValidUserNumber(field.value))
				return true;
			break;
		case 'VendorNumber':
			if (ValidVendorNumber(field.value))
				return true;
			break;
		case 'BuyerUserNumber':
			if (ValidBuyerUserNumber(field.value))
				return true;
			break;
		case 'VendorUserNumber':
			if (ValidVendorUserNumber(field.value))
				return true;
			break;
		case 'DiversityUserNumber':
			if (ValidDiversityUserNumber(field.value))
				return true;
			break;
		case 'BuyerNumber':
			if (ValidBuyerNumber(field.value))
				return true;
			break;
		case 'DiversityBaseNumber':
			if (ValidDiversityBaseNumber(field.value))
				return true;
			break;
		case 'TransactionNumber':
			if (ValidTransactionNumber(field.value))
				return true;
			break;
		case 'TransactionBaseNumber':
			if (ValidTransactionBaseNumber(field.value))
				return true;
			break;
		case 'SequenceNumber':
			if (ValidSequenceNumber(field.value))
				return true;
			break;
		default:
			alertMessage = field.name + ' Javascript field check incorrect.';
	}

	if (alertMessage > '' && type != 'Date2') 
	{
		alert(alertMessage);
		field.focus();
	}
	return false;
}

function CheckFieldLength(textString, checkType, checkLength, alertMessageBefore, alertMessageAfter)
{
//alert(checkType)
	switch (checkType) {
		case 'GreaterThan':
			var TrimmedText = TextTrim(textString.value);
			if (TrimmedText.length <= checkLength)
				return true;
			break;
		case 'LessThan':
			var TrimmedText = TextTrim(textString.value);
			if (TrimmedText.length >= checkLength)
				return true;
			break;
		default:
	}

	if (alertMessageBefore > '' && alertMessageAfter > '')
	{
		alert(alertMessageBefore + TrimmedText.length + alertMessageAfter);
		textString.focus();
	}
	else if (alertMessageBefore > '')
	{
		alert(alertMessageBefore);
		textString.focus();
	}
	return false;
}

//Checks radio buttons and checkboxes (at least one must be selected)
//example: 1. checkRadio(document.Formname.Widget1, 'Please select a choice.');
//         2. if (checkRadio(document.Formname.Widget1)) .....;
//#1 checks, alerts, and returns true/false.  Focus on radio or checkbox is not supported.
//#2 simply checks and return a true or false.

function CheckRadio(what, alertMessage)
{
	var i;
	
	if (what.checked)
		return true;
	else
	{
		for (i=0; i<what.length; i++)
			if (what[i].checked)
				return true;
	}
		
	if (alertMessage > '')
		alert(alertMessage);
	return false;
}

function CheckMenu(what, alertMessage)
{
	if (what.options[what.selectedIndex].value!="")
	{	
		return true;
	}
		
	if (alertMessage > '')
		alert(alertMessage);
	return false;
}

// VALIDATION FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function ValidField(varText)
{
	if (!ValidChars(TextTrim(varText)))
	{
		return false;
	}

	return true
}

function ValidRequiredField(varText)
{
	if (TextTrim(varText) == "")
	{
		return false;
	}
	if (!ValidChars(TextTrim(varText)))
	{
		return false;
	}

	return true
}

function ValidChars(str)
{
	if (str.indexOf("~") >= 0)
	{
		return (false);
	}
	
	//if (str.indexOf("|") >= 0)
	//{
	//	return (false);
	//}

	return (true);
}

function ValidMoney(str)
{
	var allowed = '1234567890,.-';
	for (var i=0; i < str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}

	return(true);
}

function ValidMoneyPositive(str) 
{
	var allowed = '1234567890,.';
	for (var i=0; i < str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	if (str < 0) return false;

	return(true);
}

function ValidEmail(email)
{
		invalidChars = " /:,;~"
		if (email == "") 
		{
			return (false);
		}
		for (i=0; i<invalidChars.length; i++) 
		{
			badChar = invalidChars.charAt(i)
			if (email.indexOf(badChar,0) != -1) 
			{
				return (false);
			}
		}
		atPos = email.indexOf("@",1)
		if (atPos == -1) 
		{
			return (false);
		}
		if (email.indexOf("@",atPos+1) != -1) 
		{
			return (false);
		}
		periodPos = email.indexOf(".",atPos)
		if (periodPos == -1) 
		{
			return (false);
		}
		if (periodPos+3 > email.length)	
		{
			return (false);
		}
			
		return (true);
}

function ValidPhoneAreaCode(phoneArea)
{
	var regExp = new RegExp("[^1234567890]");
	var blnInvalidEntry = regExp.test(phoneArea);

	if ((blnInvalidEntry == true) || (phoneArea.length < 3)) { return (false) } else { return (true) };
}

function ValidPhoneNumber(phoneNumber)
{
	//check for valid phone numbers.  Alphanumeric is acceptable.
	phoneParts = new Array();
	var newPhone;
	regExp = new RegExp("[A-Za-z0-9]");

	if (phoneNumber.length <= 8)
	{
		newPhone = phoneNumber;
	        if (phoneNumber.indexOf("-") >= 0)
	        {
			phoneParts = phoneNumber.split("-");            		//remove the '-'
			newPhone = phoneParts.join("");               			//and join the parts together
		}
		else
			newPhone = phoneNumber;

		if (newPhone.indexOf(" ") >= 0)
		{
			phoneParts = newPhone.split(" ");        			//remove the ' ' (space)
			newPhone = phoneParts.join("");             			//and join the parts together
		}		
		if (regExp.test(newPhone)== false || newPhone.length != 7) 
		{
			return false;							//non-alphanumeric or < 7 chars
		}
		else
		{
				return true;
		}
	}
	else
	{	
	    return false;											//phone longer than 8 chars
	}
}

function ValidPhoneExtension(phoneExtension)
{
	var regExp = new RegExp("[^1234567890]");
	var blnInvalidEntry = regExp.test(phoneExtension);
	
	if (blnInvalidEntry == true) { return (false) } else { return (true) };
}

function ValidZip(zip)
{
	var regExp = new RegExp("[^1234567890]");
	var blnInvalidEntry = regExp.test(zip);

	if (zip.length==5)
	{
		if (blnInvalidEntry == true) { return (false) } else { return (true) };
	}
	else
	{
		return(false);
	}
}

function ValidZip4(zip4)
{
	var regExp = new RegExp("[^1234567890]");
	var blnInvalidEntry = regExp.test(zip4);

	if (zip4 == '') return true;
	if (zip4.length == 4)
	{
		if (blnInvalidEntry == true) { return (false) } else { return (true) };
	}
	else
	{
		return(false);
	}
}

function ValidNumber(str)
{
	var allowed = '1234567890,.';
	for (var i=0; i< str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	return(true);
}

function ValidNumberPositive(str)
{
	var allowed = '1234567890,.';
	for (var i=0; i < str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	if (str < 0) return false;

	return(true);
}

function ValidNumberNaN(str)
{
	if (isNaN(str))
		return(false);
	else
		return(true);
}

function ValidInteger(str)
{
	var allowed = '1234567890';
	for (var i=0; i< str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	return(true);
}

function ValidBinary(str)
{
	var allowed = '01';
	for (var i=0; i< str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	return(true);
}

function ValidCreditCard(cc) 
{
	if ((cc.length > 15) && (cc.length < 20)) 
	{
		var allowed = '1234567890- ';
		for (var i=0; i< cc.length; i++) {
		   if (allowed.indexOf(cc.charAt(i)) == -1)
		      return(false);
		}
		return(true);
	}
	else
	{
		return(false)
	}	
}

function ValidDate(txtDate)
{
	var flag = 0; counter = 0;

	for (var i=0; i< txtDate.length; i++) 
	{
		if (txtDate.charAt(i) == "/" || txtDate.charAt(i) == "-" || txtDate.charAt(i) == ".")
		{
			if (flag == 1)
			{
				return(false);
			}
			else
			{
				flag = 1;
			}
		}
		else
		{
			flag = 0;
		}
		counter = i;
	}

	if (counter > 0 && (txtDate.charAt(counter) == "/" || txtDate.charAt(counter) == "-" || txtDate.charAt(counter) == "."))
	{
		return(false);
	}

	var dateVal = Date.parse(txtDate);

	if (!isNaN(dateVal) && (GetInputDate(txtDate)) && dateVal > -2208963600000 && dateVal < 32504328000000)
	{
		if (String(txtDate).substring(String(txtDate).length,String(txtDate).length - 1) != "/")
		{
			return true;
		}
	}
	return false;
}

function ValidYear(str)
{
	var allowed = '1234567890';
	for (var i=0; i< str.length; i++) 
	{
	   if (allowed.indexOf(str.charAt(i)) == -1)
	      return(false);
	}
	if (str > 2030 || str < 1900)
	{
	      return(false);
	}

	return(true);
}

function ValidYearPast(str)
{
	var allowed = '1234567890';
	for (var i=0; i< str.length; i++) 
	{
		if (allowed.indexOf(str.charAt(i)) == -1)
			return(false);
	}
	if (str > 2030 || str < 1900)
	{
		return(false);
	}

	// year must be equal to or less than current year
	
	var TodaysDate = new Date();

	if (str > TodaysDate.getFullYear())
	{
		return(false);	
	}

	return(true);
}

function ValidUserNumber(userNumber)
{
	//if (userNumber.charAt(0) != "0")	// superuser
	if (userNumber.charAt(0) == "1")	// buyer user
	{
		if (userNumber.length = 12)
		{
			if (!ValidBuyerUserNumber(userNumber)) return false;
		}
	}
	else if (userNumber.charAt(0) == "2")	// vendor user
	{
		if (userNumber.length = 12)
		{
			if (!ValidVendorUserNumber(userNumber)) return false;
		}
		else
		{
			if (!ValidVendorNumber(userNumber)) return false;
		}
	}
	else if (userNumber.charAt(0) == "3")	// diversity user
	{
		if (userNumber.length = 12)
		{
			if (!ValidDiversityUserNumber(userNumber)) return false;
		}
	}
	//if (userNumber.charAt(0) != "4")	// public user
	else
	{
		return false;
	}

	return true;
}

function ValidVendorNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length < 8) return false;
		if (userNumber.length > 8) return false;
		if (userNumber.charAt(0) != "2") return false;
		var regExp = new RegExp("[^1234567890]");
		//var strUserNumber = userNumber.value
		var blnInvalidEntry = regExp.test(userNumber); //strUserNumber);
		if (blnInvalidEntry == true) return false;
	}
	return true;
}

function ValidBuyerUserNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length != 12) return(false);
		if (userNumber.charAt(8) != "-") return(false);
		if (userNumber.charAt(0) != "1") return(false);

		//userNumberParts = new Array();
		//var userNumberParts = userNumber.split(delimiter);
		var regExp = new RegExp("[^1234567890]");
		var strUserNumber = userNumber.substring(0,8) //userNumberParts[0].value;
		var strUserSequenceNumber = userNumber.substring(9,12) //userNumberParts[1].value;
		var blnInvalidEntry = regExp.test(strUserNumber);
		if (blnInvalidEntry == true) return false;
		var blnInvalidEntry = regExp.test(strUserSequenceNumber);
		if (blnInvalidEntry == true) return false;
	}
	return(true);
}

function ValidVendorUserNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length != 12) return(false);
		if (userNumber.charAt(8) != "-") return(false);
		if (userNumber.charAt(0) != "2") return(false);

		//userNumberParts = new Array();
		//var userNumberParts = userNumber.split(delimiter);
		var regExp = new RegExp("[^1234567890]");
		var strUserNumber = userNumber.substring(0,8) //userNumberParts[0].value;
		var strUserSequenceNumber = userNumber.substring(9,12) //userNumberParts[1].value;
		var blnInvalidEntry = regExp.test(strUserNumber);
		if (blnInvalidEntry == true) return false;
		var blnInvalidEntry = regExp.test(strUserSequenceNumber);
		if (blnInvalidEntry == true) return false;
	}
	return(true);
}

function ValidDiversityUserNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length != 12) return(false);
		if (userNumber.charAt(8) != "-") return(false);
		if (userNumber.charAt(0) != "3") return(false);

		//userNumberParts = new Array();
		//var userNumberParts = userNumber.split(delimiter);
		var regExp = new RegExp("[^1234567890]");
		var strUserNumber = userNumber.substring(0,8) //userNumberParts[0].value;
		var strUserSequenceNumber = userNumber.substring(9,12) //userNumberParts[1].value;
		var blnInvalidEntry = regExp.test(strUserNumber);
		if (blnInvalidEntry == true) return false;
		var blnInvalidEntry = regExp.test(strUserSequenceNumber);
		if (blnInvalidEntry == true) return false;
	}
	return(true);
}

function ValidBuyerNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length < 8) return false;
		if (userNumber.length > 8) return false;
		if (userNumber.charAt(0) != "1") return false;
		var regExp = new RegExp("[^1234567890]");
		//var strUserNumber = userNumber.value
		var blnInvalidEntry = regExp.test(userNumber); //strUserNumber);
		if (blnInvalidEntry == true) return false;
	}
	return true;
}

function ValidDiversityBaseNumber(userNumber)
{
	if (userNumber.value != "")
	{
		if (userNumber.length < 8) return false;
		if (userNumber.length > 8) return false;
		if (userNumber.charAt(0) != "3") return false;
		var regExp = new RegExp("[^1234567890]");
		//var strUserNumber = userNumber.value
		var blnInvalidEntry = regExp.test(userNumber); //strUserNumber);
		if (blnInvalidEntry == true) return false;
	}
	return true;
}

function ValidTransactionNumber(transactionNumber)
{
	if (transactionNumber.value != "")
	{
		if (transactionNumber.length != 12) return(false);
		if (transactionNumber.charAt(8) != "-") return(false);

		//transactionNumberParts = new Array();
		//transactionNumberParts = transactionNumber.split("-");
		var regExp = new RegExp("[^1234567890]");
		var strTransactionNumber = transactionNumber.substring(0,8) //transactionNumberParts[0].value;
		var strTransactionSequenceNumber = transactionNumber.substring(9,12) //transactionNumberParts[1].value;
		var blnInvalidEntry = regExp.test(strTransactionNumber);
		if (blnInvalidEntry == true) return false;
		var blnInvalidEntry = regExp.test(strTransactionSequenceNumber);
		if (blnInvalidEntry == true) return false;
	}
	return(true);
}

function ValidTransactionBaseNumber(baseNumber)
{
	if (baseNumber.value != "")
	{
		if (baseNumber.length < 8) return false;
		if (baseNumber.length > 8) return false;
		var regExp = new RegExp("[^1234567890]");
		//var strBaseNumber = baseNumber.value
		var blnInvalidEntry = regExp.test(baseNumber); //strBaseNumber);
		if (blnInvalidEntry == true) return false;
	}
	return true;
}

function ValidSequenceNumber(sequenceNumber)
{
	if (sequenceNumber.value != "")
	{
		if (sequenceNumber.length < 3) return false;
		if (sequenceNumber.length > 3) return false;
		var regExp = new RegExp("[^1234567890]");
		//var strSequenceNumber = sequenceNumber.value
		var blnInvalidEntry = regExp.test(sequenceNumber); //strSequenceNumber);
		if (blnInvalidEntry == true) return false;
	}
	return true;
}

// TEXT MANIPULATION FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

// Pass in string to be trimmed.
// Leading spaces will be removed.

function TextTrimLeft ( strIn )
{
	var iLen;
	var j;

	iLen = strIn.length;
	for ( j=0; j<iLen && strIn.substr(j,1) == " "; j++ );	// Find first (non-blank) char.
	return ( strIn.substr( j, iLen-j ) );
}

// Pass in string to be trimmed.
// Trailing spaces will be removed.

function TextTrimRight ( strIn )
{
	var	iLen;
	var	i;
	
	iLen = strIn.length;
	for ( i=iLen; i>0 && strIn.substr(i-1,1) == " "; i-- );	// Find last (non-blank) char.
	return ( strIn.substr( 0, i ) );
}

// Pass in string to be trimmed.
// Leading and trailing spaces will be removed.

function TextTrim ( strIn )
{
	var	strHold;
	strHold = TextTrimLeft ( strIn );
	strHold = TextTrimRight ( strHold );
	return ( strHold );
}

// NUMERIC FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function makeNum(number)
{
	return (TextTrim(number)=='' || isNaN(number) ? 0 : number);
}

// FORM SUBMISSION FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function SubmitForm(action) 
{
	if (CheckInput(document.forms[0]))
	{
		document.forms[0].Submit.value = action;
		document.forms[0].submit(); 
	}
}

// SubmitForm2 Update the Submit hidden control first before 
function SubmitForm2(action) 
{
	document.forms[0].Submit.value = action;
	SubmitForm(action)
}

// Submit Form without checking input
function SubmitFormNoCheck(action) 
{
	document.forms[0].Submit.value = action;
	document.forms[0].submit(); 
}

// Submit the form to the new window
function SubmitFormToNewWindow(url)
{
	var OldTarget = document.forms[0].target ;
	document.forms[0].target = "blank" ;
	document.forms[0].Submit.value = url;
	document.forms[0].submit(); 
	document.forms[0].target = OldTarget
}

// Submit a specific form in a page with multiple forms
function SubmitMultipleForm(action,formNumber)
{
	if (CheckInput(document.forms[formNumber]))
	{
		document.forms[formNumber].Submit.value = action;
		document.forms[formNumber].submit(); 
	}
}

// WINDOW FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function newWin(uid, url)
{
	if (uid == "")
	{
		uid = "0000";
	}

	windowName = "popup" + uid;
	set = "";
	set += "toolbar=0,";
	set += "location=0,";
	set += "directories=0,";
	set += "status=0,";
	set += "menubar=0,";
	set += "scrollbars=1,";
	set += "resizable=1,";
	set += "width=600,";
	set += "height=500";

	win = window.open(url, windowName , set); 
}

function newWinHelp(url) 
{
	windowName = "help";
	set = "";
	set += "toolbar=1,";
	set += "location=0,";
	set += "directories=0,";
	set += "status=0,";
	set += "menubar=0,";
	set += "scrollbars=1,";
	set += "resizable=1,";

	win = window.open(url, windowName , set); 
}

function TutorialWindow(url)
{
	windowName = "tutorialhelp";
	set = "";
	set += "toolbar=0,";
	set += "location=0,";
	set += "directories=0,";
	set += "status=0,";
	set += "menubar=0,";
	set += "scrollbars=0,";
	set += "resizable=0,";
	set += "width=730,";
	set += "height=690";

	win = window.open(url, windowName , set); 
}

function newWinBlank(url)
{
	windowName = "New" + Math.round(Math.random()*1000000000);
	win = window.open(url, windowName); 
}

//opens up a pop-up window
function popUp(url)
{
	sealWin = window.open(url,"win",'toolbar=0,location=0,directories=0,status=1,menubar=1,scrollbars=1,resizable=1,width=500,height=450');
	self.name = "mainWin"; 
}

function userlogoff()
{
	if (window.confirm('Are you sure you want to log off and close this session?') == true)
	{
		window.top.location = '/LogOff.asp'
	}
}

function userlogoff2(sessionID)
{
	if (window.confirm('Are you sure you want to log off and close this session?') == true)
	{
		window.top.location = '/FrontPage/LogOff.asp?SessionID=' + sessionID + '&SessionFlag=$586vt9izser!!';
		//parent.frames("content").location = '/FrontPage/LogOff.asp?SessionID=' + sessionID;
		//self.location = '/FrontPage/LogOff.asp?SessionID=' + sessionID;
	}
}

// CREDIT CARD FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function isCreditCard(st) {
  // Encoding only works on cards with less than 19 digits
  if (st.length > 19)
    return (false);

  sum = 0; mul = 1; l = st.length;
  for (i = 0; i < l; i++) {
    digit = st.substring(l-i-1,l-i);
    tproduct = parseInt(digit ,10)*mul;
    if (tproduct >= 10)
      sum += (tproduct % 10) + 1;
    else
      sum += tproduct;
    if (mul == 1)
      mul++;
    else
      mul--;
  }

  if ((sum % 10) == 0)
    return (true);
  else
    return (false);
} 

function isVisa(cc)
{
  if (((cc.length == 16) || (cc.length == 13)) &&
      (cc.substring(0,1) == 4))
    return isCreditCard(cc);
  return false;
}
  
function isMasterCard(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 16) && (firstdig == 5) &&
      ((seconddig >= 1) && (seconddig <= 5)))
    return isCreditCard(cc);
  return false;
} 

function isAmericanExpress(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 15) && (firstdig == 3) &&
      ((seconddig == 4) || (seconddig == 7)))
    return isCreditCard(cc);
  return false;
} 

function isDinersClub(cc)
{
  firstdig = cc.substring(0,1);
  seconddig = cc.substring(1,2);
  if ((cc.length == 14) && (firstdig == 3) &&
      ((seconddig == 0) || (seconddig == 6) || (seconddig == 8)))
    return isCreditCard(cc);
  return false;
}

function isCarteBlanche(cc)
{
  return isDinersClub(cc);
}

function isDiscover(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) && (first4digs == "6011"))
    return isCreditCard(cc);
  return false;
} 

function isEnRoute(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 15) &&
      ((first4digs == "2014") ||
       (first4digs == "2149")))
    return isCreditCard(cc);
  return false;
}

function isJCB(cc)
{
  first4digs = cc.substring(0,4);
  if ((cc.length == 16) &&
      ((first4digs == "3088") ||
       (first4digs == "3096") ||
       (first4digs == "3112") ||
       (first4digs == "3158") ||
       (first4digs == "3337") ||
       (first4digs == "3528")))
    return isCreditCard(cc);
  return false;
}
 
function isAnyCard(cc)
{
  if (!isCreditCard(cc))
    return false;
  if (!isMasterCard(cc) && !isVisa(cc) && !isAmericanExpress(cc) && !isDinersClub(cc) &&
      !isDiscover(cc) && !isEnRoute(cc) && !isJCB(cc)) {
    return false;
  }
  return true;
} 

// OTHER FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+

function hiLite(origImg,newImg) 
{	
	document.images[origImg].src = eval(newImg + ".src");
}

function ClearDateField(DateInput)
{
	if (DateInput.value == "mm/dd/yyyy") {DateInput.value = ""}
}

function CheckInvalidChars(fld, invalidChars, msg)
{
  var checkNotOK = invalidChars;
  var checkStr = fld.value;
  var allValid = true;
  var blnFound = false;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    for (j = 0;  j < checkNotOK.length;  j++)
      if (ch == checkNotOK.charAt(j))
	  {
		blnFound = true;	
        break;
      }
    if (blnFound)
    {
	  alert(msg);
      fld.focus();
      allValid = false;
      break;
    }
  }
  return (allValid);
}

function CheckValidChars(fld, validChar, msg)
{
  var checkOK = validChar;
  var checkStr = fld.value;
  var blnFound = false;
  for (i = 0;  i < checkStr.length;  i++)
  {
    ch = checkStr.charAt(i);
    
    if (checkStr.indexOf(ch,0) > 0)
    {
	  blnFound = true;
      break;
    }
  }
  if (!blnFound)
  {
    alert(msg);
    fld.focus();
    return (blnFound);
  }
  return (blnFound);
}

//returns the difference in number of days
//d1 and d2 are string formatted date values
function DateDiff(d1, d2)
{
	var a1 = Date.parse(d1);
	var a2 = Date.parse(d2);
	var date1 = new Date(a1);
	var date2 = new Date(a2);

    var difference =
        Date.UTC(y2k(date1.getYear()),(date1.getMonth()+1),date1.getDate())
      - Date.UTC(y2k(date2.getYear()),(date2.getMonth()+1),date2.getDate());

    return difference/1000/60/60/24;
}

function y2k(number) { 
	return (number < 1000 ? number + 1900 : number);
}

function EditForm(bookmark)
{
	document.forms[0].Bookmark.value = bookmark;
	SubmitFormNoCheck('EditForm');
}

// CALENDAR FUNCTIONS =+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
//------------------------------------------------------------------
// functions for supporting the calendar (see calendar.htm)
//
var g_MINY=1601;var g_MAXY=4500;var g_month=0;var g_day=0;var g_year=0;var g_yLow=1990;

function GetInputDate(t,f){var l=t.length;if(0==l)return false;var cSp='\0';var sSp1="";var sSp2="";
for(var i=0;i<t.length;i++){var c=t.charAt(i);if(c==' '||isdigit(c))continue;else if(cSp=='\0'&&(c=='/'||c=='-'||c=='.'))
{cSp=c;sSp1=t.substring(i+1,l);}else if(c==cSp)sSp2=t.substring(i+1,l);else if(c!=cSp)return false;}if(0==sSp1.length)return false;
var m;var d;var y;if(g_dFmt=="mmddyy"){m=atoi(t);d=atoi(sSp1);}else{d=atoi(t);m=atoi(sSp1);}
if(0!=sSp2.length)y=atoi(sSp2);else y=DefYr(m,d);if(y<100){y=1900+y;while(y<g_yLow)y=y+100;}if(y<g_MINY||y>g_MAXY||m<1||m>12)return false;
if(d<1||d>GetMonthCount(m,y))return false;g_month=m;g_day=d;g_year=y;return true;}

function DefYr(m,d){var dt=new Date();var yCur=(dt.getYear()<1000)?1900+dt.getYear():dt.getYear();
if(m-1<dt.getMonth()||(m-1==dt.getMonth()&&d<dt.getDate()))return 1+yCur;else return yCur;}

function atoi(s){var t=0;for(var i=0;i<s.length;i++){var c=s.charAt(i);if(!isdigit(c))return t;else t=t*10+(c-'0');}return t;}

function isdigit(c){return(c>='0'&&c<='9');}function GetMonthCount(m,y){var c=rgMC[m-1];if((2==m)&&IsLeapYear(y))c++;return c;}

function IsLeapYear(y){if(0==y%4&&((y%100!=0)||(y%400==0))) return true;else return false;}
var rgMC=new Array(12);rgMC[0]=31;rgMC[1]=28;rgMC[2]=31;rgMC[3]=30;rgMC[4]=31;rgMC[5]=30;rgMC[6]=31;rgMC[7]=31;rgMC[8]=30;rgMC[9]=31;rgMC[10]=30;rgMC[11]=31;
var g_eC=null;var g_eCV="";var g_dFmt="mmddyy";var g_fnCB=null;

function ShowCalendar(eP,eD,eDP,dmin,dmax,fnCB){var dF=document.all.CalFrame;var wF=window.frames.CalFrame;
if(null==wF.g_fCalLoaded||false==wF.g_fCalLoaded){alert("Unable to load popup calendar.\r\nPlease reload the page.");return;}
dtMin=new Date();if(dmin==null){dtMin.setDate('1/1/'+g_MINY)}else{dtMin.setDate(dtMin.getDate()+dmin)};
dtMax=new Date();if(dmax==null){dtMax.setDate('1/1/'+g_MAXY)}else{dtMax.setDate(dtMax.getDate()+dmax)};wF.SetMinMax(new Date(dtMin),new Date(dtMax));g_fnCB=fnCB;
if(eD==g_eC&&"block"==dF.style.display){if(g_eCV!=eD.value&&GetInputDate(eD.value,g_dFmt)){wF.SetInputDate(g_day,g_month,g_year);wF.SetDate(g_day,g_month,g_year);g_eCV=eD.value;}
else dF.style.display="none";}else{if(GetInputDate(eD.value,g_dFmt)){wF.SetInputDate(g_day,g_month,g_year);wF.SetDate(g_day,g_month,g_year);}
else if(null!=eDP&&GetInputDate(eDP.value,g_dFmt)){wF.SetInputDate(g_day,g_month,g_year);wF.SetDate(g_day,g_month,g_year);}
else{var dt=new Date(dtMin);wF.SetInputDate(-1,-1,-1);wF.SetDate(dt.getDate(),dt.getMonth()+1,dt.getFullYear());}
var eL=0;var eT=0;var p=eP;while(p&&p.tagName!="BODY"){eT+=p.offsetTop;eL+=p.offsetLeft;p=p.offsetParent;}
var eH=eP.offsetHeight;var dH=dF.style.pixelHeight;var sT=document.body.scrollTop;dF.style.left=eL;
if(eT-dH>=sT&&eT+eH+dH>document.body.clientHeight+sT)dF.style.top=eT-dH;else dF.style.top=eT+eH;if("none"==dF.style.display)dF.style.display="block";g_eC=eD;g_eCV=eD.value;}}

function SetDate(d,m,y){var ds="/";g_eC.focus();if(g_dFmt=="mmddyy")g_eC.value=m+ds+d+ds+y;else g_eC.value=d+ds+m+ds+y;g_eCV=g_eC.value;if(null!=g_fnCB&&""!=g_fnCB)eval(g_fnCB);}

function GetDowStart(){return 0;}function GetDOW2(d,m,y){var dt=new Date(y,m-1,d);return(dt.getDay()+(7-GetDowStart()))%7;}

function LoadMonths(n){var dt=new Date();var m=dt.getMonth()+1;var y=dt.getFullYear();var rg=new Array(n);
for(i=0;i<n;i++){rg[i]=document.createElement("IMG");rg[i].src="/images/img_w"+GetDOW2(1,m,y)+"d"+GetMonthCount(m,y)+".gif";m++;if(12<m){m=1;y++;}}}LoadMonths(12);

function chkBrowser(){this.ver=navigator.appVersion;this.dom=document.getElementById?1:0;this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom)?1:0;this.ie4=(document.all && !this.dom)?1:0;
this.ns5=(this.dom && parseInt(this.ver) >= 5) ?1:0;this.ns4=(document.layers && !this.dom)?1:0;this.bVer=(this.ie5 || this.ie4 || this.ns4 || this.ns5);return this;}
bVer=new chkBrowser();
ns4 = (document.layers)? true:false;
ie4 = (document.all)? true:false;

function AttB(f){if(bVer.ie4)f.style.display='block';}

function AttN(f){if(bVer.ie4)f.style.display='none';}

function show(idLayer,idParent){cLayer=bVer.dom?document.getElementById(idLayer).style:bVer.ie4?document.all[idLayer].style:bVer.ns4?idParent?document[idParent].document[idLayer]:document[idLayer]:0;
cLayer.display='block';divLinksForm=(ns4)?document.divLinks.document.divLinks:document.divLinks;
var d=document.Wiz;if (idLayer=='car'){AttB(d.CKind);AttB(d.Ctime1);AttB(d.Ctime2);d.srch[2].status='true';}
else if (idLayer=='hot'){AttB(d.Hcadt);AttB(d.Hckid);d.srch[1].status='true';}
else{AttB(d.FcAdu);d.srch[0].status='true';if (idParent!='flt' && d.opts[1].checked) hide('dts','flt');}}

function hide(idLayer,idParent){cLayer=bVer.dom?document.getElementById(idLayer).style:bVer.ie4?document.all[idLayer].style:bVer.ns4?idParent?document[idParent].document[idLayer]:document[idLayer]:0;
var d=document.Wiz;if(idLayer!='flt')AttN(d.FcAdu);AttN(d.Hcadt);AttN(d.Hckid);AttN(d.CKind);AttN(d.Ctime1);AttN(d.Ctime2);cLayer.display='none'}
//
// end -- calendar support functions
//------------------------------------------------------------------
