function validateCurrency(objField,sErrorMsg)
{
	//alert(objField.value + " = " + (unformatNumber(objField.value) > 922337203685477))
	if(unformatNumber(objField.value) > 922337203685477)
	{
		alert("You must enter a number smaller than 922,337,203,685,477");
		objField.select();
		return false;
	}
	else
		return true;
}

function validateNumber(objField,sErrorMsg)
{
	if(objField.value != "")
	{
		var pattern= /[^0-9]/;
		var result = pattern.test(objField.value);
		
		if(!result)
		{
			return true;
		}
		else
		{
			alert(sErrorMsg);
			objField.select();
			return false;
		}
	}
	return true;
}

function validateEmailFormat(objEmail,sErrorMsg)
{
	if(objEmail.value != "")
	{
	
		var pattern = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;

		var result = pattern.test(objEmail.value);
		
		if(!result)
		{
			alert(sErrorMsg);
			objEmail.focus();
			return false;
		}
		else
		{
			return true;
		}
	}
	return true;
}


function validatePassword(objPassword,objReenterPassword,sErrorMsg)
{
	if(objPassword.value != objReenterPassword.value)
	{
		alert(sErrorMsg);
		objReenterPassword.focus();
		return false;
	}
	else
		return true;
}

function removeNonNumeric(number)
{
	var numberTemp = "";
	for(var i = 0; i < number.length; i++)
	{
		// allow 0-9 and "."
		if((number.charCodeAt(i) >= 48 && number.charCodeAt(i) <= 57) || (number.charCodeAt(i) == 46))
			numberTemp = numberTemp + number.charAt(i);
	}
	return numberTemp;
}

function unformatNumber(number)
{
	var temp = "";
	var arrNum = new Array();
	
	// ensure there is only one .
	number = number.toString() + ".00";
	arrNum = number.split(".");
	number = arrNum[0] + "." + arrNum[1];
	number = removeNonNumeric(number);	
	
	return number;	
}

function addCommas(number)
{
	var temp = "";
	while(number.length >= 3)
	{
		temp = number.substr(number.length-3,3) + "," + temp;
		number = number.substr(0,number.length-3);
	}
	if(number.length > 0)
		temp = number + "," + temp;
	temp = temp.substr(0,temp.length-1);
	
	return temp;
}

function formatDecimal(number)
{
	var isNegative;
	if (!isNaN(number)) {
		//maintain sign of negative numbers
		if (number < 0) isNegative = true;
	}
	
	var arrNum = new Array();
	// unformat # and round to 2 decimal values
	number = unformatNumber(number);
	number = (Math.round(Number(number) * 100) * .01).toString();
	arrNum = (number + ".00").split(".");
	
	// add commas
	number = addCommas(arrNum[0]);
	
	// reconnect decimals
	var sDecimal = arrNum[1].toString() + "00";
	sDecimal = sDecimal.substr(0,2);
	number = number + "." + sDecimal;

	if (isNegative) {
		return '-' + number;
	} else {
		return number;
	}
}

function formatFourDecimals(number)
{
	var arrNum = new Array();
	// unformat # and round to 4 decimal values
	number = unformatNumber(number);
	number = (Math.round(Number(number) * 10000) * .0001).toString();
	arrNum = (number + ".00").split(".");
	
	// add commas
	number = addCommas(arrNum[0]);
	
	// reconnect decimals
	var sDecimal = arrNum[1].toString() + "0000";
	sDecimal = sDecimal.substr(0,4);
	number = number + "." + sDecimal;
	
	// assuming above leaves 4 decimal places: don't show the last two trailing zeros
	if(number.charAt(number.length-1) == "0")
		number = number.substr(0, number.length-1);
	if(number.charAt(number.length-1) == "0")
		number = number.substr(0, number.length-1);

	return number;
}

function formatDecimals(value, decimalplaces, bCurrency)
{
	var isNegative;
	if (!isNaN(value)) {
		//maintain sign of negative numbers
		if (value < 0) isNegative = true;
	}
	
	if (isNaN(decimalplaces))
		decimalplaces = 0;
	else if(decimalplaces < 0)
		decimalplaces *= -1;
		
	value = unformatNumber(value);
	value = Number(value).toFixed(decimalplaces);
	
	var arrValue = value.split(".");
	var strWhole = arrValue[0];
	var strFract = arrValue[1];

	strWhole = addCommas(strWhole);
	if (isNegative)
		strWhole = "-" + strWhole;
	//alert(strWhole);
	if (decimalplaces == 0)
		return strWhole;
	else
	{
		while (strFract.substr(strFract.length-1,1) == "0")
		{
			if ((bCurrency)&&(strFract.length == 2))
				break;
			strFract = strFract.substr(0, strFract.length-1);
		}
			
		if (strFract.length > 0)
			return strWhole + "." + strFract;
		else
			return strWhole;
	}
}

function formatNumber(number)
{
	// unformat # and remove decimal
	number = unformatNumber(number);
	number = Math.round(Number(number)).toString();
	
	// add commas
	number = addCommas(number);
	
	return number;
}

function validateDate(source)
{
	if (source.value == "")
		return true;
	
	var d = new Date(source.value);
	var n = d.valueOf();
	var year, now;
	if (isNaN(n))
	{
		alert("Please enter a valid date. (MM/DD/YYYY)");
		source.select();
		return false;
	}
	else
	{
		now = new Date();
		year = d.getFullYear();
		while (year < 2000)
			{
				year += 100;
			}
		d.setFullYear(year);
		source.value = (d.getMonth()+1) + "/" + (d.getDate()) + "/" + d.getFullYear();
	}
	return true;
}

function validatePhone(obj)
{
	if (obj.value.length > 0)
	{
		var sVal = obj.value;
		var arrPhone = sVal.split("");
		var sPhone = "";
	
		for (i=0;i<arrPhone.length;i++)
			if ((arrPhone[i] >= "0")&&(arrPhone[i] <= "9"))
				sPhone += arrPhone[i];

		if ((sPhone.length < 10)||((sPhone.length < 11)&&(sPhone.substr(0,1) == "1")))
		{
			alert("Please enter your number in the following format (###) ###-#### including area code.");
			obj.select();
		}
		else
			obj.value = formatPhone(sPhone);
	}
}

function formatPhone(sPhone)
{
	var sExt = "";
	var sTemp = "";
	var sReturn = "";
	var bStartOne = false;
	var i
	
	if (sPhone.substr(0,1) == "1")
	{
		bStartOne = true;
		sPhone = sPhone.substr(1);
	}
	
	if (sPhone.length == 7)
		sReturn = sPhone.substr(0,3) + "-" + sPhone.substr(3);
	else if (sPhone.length == 10)
		sReturn = "(" + sPhone.substr(0,3) + ") " + sPhone.substr(3,3) + "-" + sPhone.substr(6);
	else if (sPhone.length < 7)
		sReturn = sPhone;
	else if (sPhone.length <= 9)
	{
		sExt = sPhone.substr(7);
		sPhone = sPhone.substr(0,7);
		for (i=0;i<sExt.length;i++)
			sTemp += "0";
		sReturn = formatPhone(sPhone);
	}
	else
	{
		sExt = sPhone.substr(10);
		sPhone = sPhone.substr(0,10);
		for (i=0;i<sExt.length;i++)
			sTemp += "0";
		sReturn = formatPhone(sPhone);
	}
	
	if (sExt.length > 0)
		if (sExt != sTemp)
			sReturn += "-" + sExt;
			
	if (bStartOne)
		sReturn = "1 " + sReturn;

	return sReturn;
}

function validateLength(obj, len, message)
{
	if ((obj.value.length < len)&&(obj.value.length != 0))
	{
		alert(message);
		obj.select();
	}
}

function validateRequiredTextField(obj, message)
{
	if(obj.value.length == 0)
	{
		alert(message);
		obj.focus();
		return false;
	}
	return true;
}

function validateRequiredSelect(obj, message)
{
	if (obj.selectedIndex == 0)
	{
		alert(message);
		obj.focus();
		return false;
	}
	return true;
}