function popUp(URL, x, y, blnScroll, blnCenter) {
	x = x / 1;
	y = y / 1;
	day = new Date();
	id = day.getTime();
	if (blnScroll != "0")
		blnScroll = "1";
	if (blnCenter == "1") {
		var xPos, yPos;
		if ((screen.availWidth - x) > 0)
			xPos = (screen.availWidth - x) / 2;
		else
			xPos = 10;
		if ((screen.availHeight - y) > 0)
			yPos = (screen.availHeight - y) / 2;
		else
			yPos = 10;
		eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=' + blnScroll + ',location=0,statusbar=0,menubar=0,resizable=1,width=' + x + ',height=' + y + ',left=' + xPos + ',top=' + yPos);");
	}
	else {
		eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=' + blnScroll + ',location=0,statusbar=0,menubar=0,resizable=1,width=' + x + ',height=' + y);");
	}
} // Ends the "popUp" function

function popUpConfirm(URL, x, y, blnScroll, blnCenter) {
  var strMsg = "The data on this page has changed.\nAny unsaved data will be lost if you continue.\n\nDo you want to continue?";
	if (confirm(strMsg)) {
	  popUp(URL, x, y, blnScroll, blnCenter);
	}
} // Ends the "popUpConfirm" function

function RefreshOpener(strClose) {
	if(strClose == "Y") {
		if(!window.opener.closed) {
			//window.opener.location.reload();
			window.opener.location = window.opener.location;
		}
		window.close();
	}
}

/*
function RefreshOpener() {
	if(!window.opener.closed) {
		//window.opener.location.reload();
		window.opener.location = window.opener.location;
	}
}
*/

function trim(inputString) {
	// Removes leading and trailing spaces from the passed string. Also removes
	// consecutive spaces and replaces it with one space. If something besides
	// a string is passed in (null, custom object, etc.) then return the input.
	if (typeof inputString != "string") { return inputString; }
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ") { // Check for spaces at the beginning of the string
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ") { // Check for spaces at the end of the string
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
	}
	return retValue; // Return the trimmed string back to the user
} // Ends the "trim" function


function ZeroPad(intNum, intZeros) {
	var strTmp;
	for (x=1; x<=intZeros; x++) {
		strTmp = strTmp + "0";
	}
	strTmp = strTmp + intNum;
	return strTmp.substr(strTmp.length - intZeros, strTmp.length);
}

function fncIsEmail(email) {
	if (email.value == "") { return true; }
	
	var dotPos;
	var atPos;
	var dotLeft=0;
	var dotRight = 0;
	var i;
	var atCount = 0;
	var dotCount = 0;
	
	atPos = email.value.indexOf("@");
	dotPos = email.value.indexOf(".", atPos);
	
	dotLeft = dotPos - 1;
	dotRight = dotPos + 1;
	
	//** check string for only one @ sign
	for(i=0; i < email.value.length; i ++) {
		if(email.value.charAt(i) == "@") { atCount++; }
	}
		
	//** check for only one dot after the @ sign
	for(i=dotPos; i < email.value.length; i ++) {
		if(email.value.charAt(i) == ".") { dotCount++; }
	}
			
	if ( (email.value.charAt(dotLeft)) == "" || (email.value.charAt(dotLeft) == "@")
		|| (email.value.charAt(dotRight) == "") || (email.value.charAt(dotRight) == ".") 
		|| (atCount > 1 ) || (atCount < 1) || (dotCount < 1))
		{ return false; }
	else { return true; }
}

function isNum(argvalue) {
	argvalue = argvalue.toString();

	for (var n = 0; n < argvalue.length; n++) {
		if (argvalue.substring(n, n+1) < "0" || argvalue.substring(n, n+1) > "9") { return false; }
	}
	return true;
}

function checkmoney(objName) {
	var x = objName.value;
	//var regex = /(^\$?\d+$)|(^\$?\d+\.\d+$)/;
	var regex = /(^\d+$)|(^\d+\.\d+$)/;
	
	if (x != "") {
		if (regex.test(x)) { return true; }
		else { return false; }
	}
	else { return true; }
}

function checknumber(objName) {
	var x = objName.value;
	var regex = /(^\d+$)|(^\d+\.\d+$)/;
	
	if (x != "") {
		if (regex.test(x)) { return true; }
		else { return false; }
	}
	else { return true; }
}
		
function checkdate(objName) {
var datefield = objName;
	if (objName.value != "") {
		if (chkdate(objName) == false) { return false; }
		else { return true; }
	}
	else { return true; }
}

	
function chkdate(objName) {
	var strDatestyle = "US"; //United States date style
	//var strDatestyle = "EU";  //European date style
	var strDate;
	var strDateArray;
	var strDay;
	var strMonth;
	var strYear;
	var intday;
	var intMonth;
	var intYear;
	var booFound = false;
	var datefield = objName;
	var strSeparatorArray = new Array("-"," ","/",".");
	var intElementNr;
	var err = 0;
	var strMonthArray = new Array(12);
	strMonthArray[0] = "Jan";
	strMonthArray[1] = "Feb";
	strMonthArray[2] = "Mar";
	strMonthArray[3] = "Apr";
	strMonthArray[4] = "May";
	strMonthArray[5] = "Jun";
	strMonthArray[6] = "Jul";
	strMonthArray[7] = "Aug";
	strMonthArray[8] = "Sep";
	strMonthArray[9] = "Oct";
	strMonthArray[10] = "Nov";
	strMonthArray[11] = "Dec";

	strDate = objName.value;
	if (strDate.length < 1) {
		return true;
	}
		for (intElementNr = 0; intElementNr < strSeparatorArray.length; intElementNr++) {
			if (strDate.indexOf(strSeparatorArray[intElementNr]) != -1) {
				strDateArray = strDate.split(strSeparatorArray[intElementNr]);
				if (strDateArray.length != 3) {
					err = 1;
					return false;
				}
			else {
				strDay = strDateArray[0];
				strMonth = strDateArray[1];
				strYear = strDateArray[2];
			}
			booFound = true;
		}
	}
	if (booFound == false) {
		if (strDate.length>5) {
			strDay = strDate.substr(0, 2);
			strMonth = strDate.substr(2, 2);
			strYear = strDate.substr(4);
		}
	}
	// US style
	if (strDatestyle == "US") {
		strTemp = strDay;
		strDay = strMonth;
		strMonth = strTemp;
	}
	intday = parseInt(strDay, 10);
	if (isNaN(intday)) {
		err = 2;
		return false;
	}
	intMonth = parseInt(strMonth, 10);
	if (isNaN(intMonth)) {
		for (i = 0;i<12;i++) {
			if (strMonth.toUpperCase() == strMonthArray[i].toUpperCase()) {
				intMonth = i+1;
				strMonth = strMonthArray[i];
				i = 12;
			}
		}
		if (isNaN(intMonth)) {
			err = 3;
			return false;
		}
	}
	intYear = parseInt(strYear, 10);
	if (isNaN(intYear)) {
		err = 4;
		return false;
	}

	if (strYear.length <= 2) {
		strYear = ZeroPad(strYear, 2)
		if (strYear < '10') {
			strYear = '20' + strYear;
		}
		else {
			if (strYear >= '10') {strYear = '19' + strYear};
		}
	}
	else if (strYear.length != 4) {
		return false;
	}
	if (intMonth>12 || intMonth<1) {
		err = 5;
		return false;
	}
	if ((intMonth == 1 || intMonth == 3 || intMonth == 5 || intMonth == 7 || intMonth == 8 || intMonth == 10 || intMonth == 12) && (intday > 31 || intday < 1)) {
		err = 6;
		return false;
	}
	if ((intMonth == 4 || intMonth == 6 || intMonth == 9 || intMonth == 11) && (intday > 30 || intday < 1)) {
		err = 7;
		return false;
	}
	if (intMonth == 2) {
		if (intday < 1) {
			err = 8;
			return false;
		}
		if (LeapYear(intYear) == true) {
			if (intday > 29) {
				err = 9;
				return false;
			}
		}
		else {
			if (intday > 28) {
				err = 10;
				return false;
			}
		}
	}
	if (strDatestyle == "US") {
		datefield.value = ZeroPad(intMonth, 2) + "/" + ZeroPad(intday, 2) + "/" + strYear;
		//datefield.value = strMonthArray[intMonth-1] + " " + intday+" " + strYear;
	}
	else {
		datefield.value = intday + " " + strMonthArray[intMonth-1] + " " + strYear;
	}
	return true;
}

function LeapYear(intYear) {
	if (intYear % 100 == 0) {
		if (intYear % 400 == 0) { return true; }
	}
	else {
		if ((intYear % 4) == 0) { return true; }
	}
	return false;
}

function doDateCheck(from, to) {
	if (Date.parse(from.value) <= Date.parse(to.value)) { return true; }
	else {
		if (from.value == "" || to.value == "") { return false; }
		else { return false; }
	}
}

function isValidUSPhoneNumber(areaCode, prefixNumber, suffixNumber) {
	if (areaCode.value == "") return true;

	if (arguments.length == 1) {
		var returnNumber = areaCode;
		var phoneNumber = arguments[0].value;
		phoneNumber = phoneNumber.replace(/\D+/g, "");
		var length = phoneNumber.length;
		if (length == 10) {
			var areaCode = phoneNumber.substring(0, length-7);
			var prefixNumber = phoneNumber.substring(length-7, length-4);
			var suffixNumber = phoneNumber.substring(length-4);
			//returnNumber.value = areaCode + '-' + prefixNumber + '-' + suffixNumber;
		}
		else { return false; }
	}
	else if (arguments.length == 3) {
		var areaCode = arguments[0].value;
		var prefixNumber = arguments[1].value;
		var suffixNumber = arguments[2].value;
	}
	else { return true; }

	if (areaCode.length != 3 || !isNum(areaCode) || prefixNumber.length != 3 || !isNum(prefixNumber) || suffixNumber.length != 4 || !isNum(suffixNumber)) { return false; }
	return true;
}

function isValidZipcode(zipcode) {
   if (zipcode.value == "") { return true; }
   
   var returnZipCode = zipcode;
   zipcode = trim(zipcode.value);
   var length = zipcode.length;
   if (!(length == 5 || length == 9 || length == 10)) { return false; }
   if ((length == 5 || length == 9) && !isNum(zipcode)) { return false; }
   if (length == 10 && zipcode.search && zipcode.search(/^\d{5}-\d{4}$/) == -1) { return false; }
   
   /*
   if (length == 9) {
      var primary = zipcode.substring(0,length-4);
      var secondary = zipcode.substring(length-4);
      returnZipCode.value = primary + '-' + secondary;
   }
   */
   if (length == 10) {
      var primary = zipcode.substring(0,length-5);
      var secondary = zipcode.substring(length-4);
      returnZipCode.value = primary + secondary;
   }
   return true;
}

function IsValidSSN(ssn) {
	if (ssn.value == "") { return true; }
	
	var returnSSN = ssn;
	ssn = trim(ssn.value);
	var matchArr = ssn.match(/^(\d{3})-?\d{2}-?\d{4}$/);
	var numDashes = ssn.split('-').length - 1;
	if (matchArr == null || numDashes == 1) { return false; }
	else if (parseInt(matchArr[1],10) == 0) { return false; }
	else {
		var length = ssn.length;
		if (length == 11) {
			var start = ssn.substring(0, length-8);
			var middle = ssn.substring(length-7, length-5);
			var end = ssn.substring(length-4);
			returnSSN.value = start + middle + end;
		}
   }
   return true;
}
