﻿String.prototype.trim = function()
{
	if (this != undefined)
	{
		var strString = new String(this);

		if (strString != null)
			return strString.replace(/(^\s*)|(\s*$)/g, "");
		else
			return strString;
	}
	else
		return "";
}

function IsEmpty(strObject)
{
	var objObject = document.getElementById(strObject);
	var bolReturn = true;
	
	if (objObject != null)
	{
		bolReturn = (GetRealValue(objObject).trim().length == 0);
	}
	
	return bolReturn;
}

function CheckRequiredCheckBox(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;

	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = (objObject.checked == true);

		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}

	return bolReturn;
}

function CheckRequired(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = (GetRealValue(objObject).trim().length > 0);
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckZipCode(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;

	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = (IsZipCode(GetRealValue(objObject).trim()) == true);

		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}

	return bolReturn;
}

function CheckMinimumLength(strObject, strErrorObject, intMinimumLength)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;

	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = (GetRealValue(objObject).trim().length >= intMinimumLength);

		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}

	return bolReturn;
}

function CheckDate(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsDate(GetRealValue(objObject).trim());
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckSSN(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsSSN(GetRealValue(objObject).trim());
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckEmailAddress(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsEmailAddress(GetRealValue(objObject).trim());
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckEmailAddressNotRequired(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		if (GetRealValue(objObject).trim().length > 0)
		{
			bolReturn = IsEmailAddress(GetRealValue(objObject).trim());
			
			if (bolReturn == true)
			{
				objErrorObject.className = "Label";
			}
			else
			{
				objErrorObject.className = "LabelError";
			}
		}
		else
		{
			objErrorObject.className = "Label";
			bolReturn = true;
		}
	}
	
	return bolReturn;
}

function CheckMatch(strObject, strObjectToMatch, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objObjectToMatch = document.getElementById(strObjectToMatch);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objObjectToMatch != null) && (objErrorObject != null))
	{
		bolReturn = (GetRealValue(objObject).trim() == objObjectToMatch.value.trim());
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckPhoneNumber(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsPhoneNumber(GetRealValue(objObject).trim());
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckPhoneNumberNotRequired(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		if (GetRealValue(objObject).trim().length > 0)
		{
			bolReturn = IsPhoneNumber(GetRealValue(objObject).trim());
			
			if (bolReturn == true)
			{
				objErrorObject.className = "Label";
			}
			else
			{
				objErrorObject.className = "LabelError";
			}
		}
		else
		{
			objErrorObject.className = "Label";
			bolReturn = true;
		}
	}
	
	return bolReturn;
}

function CheckWholeNumberNotRequired(strObject, strErrorObject)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		if (GetRealValue(objObject).trim().length > 0)
		{
			bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
			
			if (bolReturn == true)
			{
				objErrorObject.className = "Label";
			}
			else
			{
				objErrorObject.className = "LabelError";
			}
		}
		else
		{
			objErrorObject.className = "Label";
			bolReturn = true;
		}
	}
	
	return bolReturn;
}

function CheckWholeNumberRange(strObject, strErrorObject, intMinValue, intMaxValue)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
		
		if (bolReturn == true)
		{
			var intValue = parseInt(GetRealValue(objObject).trim(), 10);
			
			if (isNaN(intValue) == true)
			{
				intValue = 0;
			}
			
			bolReturn = ((intValue >= intMinValue) && (intValue <= intMaxValue));
		}
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function CheckCurrencyRange(strObject, strErrorObject, dblMinValue, dblMaxValue)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;

	if ((objObject != null) && (objErrorObject != null))
	{
		bolReturn = IsCurrency(GetRealValue(objObject).trim());

		if (bolReturn == true)
		{
			var dblValue = parseFloat(GetRealValue(objObject).trim().replace(/^\$/gi, ''));

			if (isNaN(dblValue) == true)
			{
				dblValue = 0.00;
			}

			bolReturn = ((dblValue >= dblMinValue) && (dblValue <= dblMaxValue));
		}

		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}

	return bolReturn;
}

function CheckWholeNumberRangeNotRequired(strObject, strErrorObject, intMinValue, intMaxValue)
{
	var objObject = document.getElementById(strObject);
	var objErrorObject = document.getElementById(strErrorObject);
	var bolReturn = false;
	
	if ((objObject != null) && (objErrorObject != null))
	{
		if (GetRealValue(objObject).trim().length > 0)
		{
			bolReturn = IsWholeNumber(GetRealValue(objObject).trim());
			
			if (bolReturn == true)
			{
				var intValue = parseInt(GetRealValue(objObject).trim(), 10);
				
				if (isNaN(intValue) == true)
				{
					intValue = 0;
				}
				
				bolReturn = ((intValue >= intMinValue) && (intValue <= intMaxValue));
			}
		}
		else
		{
			bolReturn = true;
		}
		
		if (bolReturn == true)
		{
			objErrorObject.className = "Label";
		}
		else
		{
			objErrorObject.className = "LabelError";
		}
	}
	
	return bolReturn;
}

function IsWholeNumber(strValue)
{
	var bolReturn = false;

	if (strValue != null)
	{
		strValue = RemoveCommas(strValue);
		bolReturn = (strValue.toString().trim().match(/^[0-9]+$/) != null);
	}
	
	return bolReturn;
}

function IsCurrency(strValue)
{
	var bolReturn = false;

	if (strValue != null)
	{
		strValue = RemoveCommas(strValue);
		bolReturn = (strValue.toString().trim().match(/^\$?[0-9]+\.?[0-9]{0,2}$/) != null);
	}

	return bolReturn;
}

function IsZipCode(strValue)
{
	var bolReturn = false;

	if (strValue != null)
	{	
		bolReturn = (strValue.toString().trim().match(/^[0-9]{5}$/) != null);
	}
	
	return bolReturn;
}

function IsPhoneNumber(strValue)
{
	var bolReturn = false;
	
	if (strValue != null)
	{
		bolReturn = (strValue.toString().trim().match(/^\(?[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}$/) != null);
	}
	
	return bolReturn;
}

function IsEmailAddress(strValue)
{
	var bolReturn = false;
	
	if (strValue != null)
	{
		bolReturn = (strValue.toString().trim().match(/^[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,}$/i) != null);
	}
	
	return bolReturn;
}

function IsDate(strValue)
{
	var bolReturn = false;

	if (strValue != null)
	{
		if (strValue.toString().trim().match(/^\b[0-9]{1,2}([\/-]{1})[0-9]{1,2}\1{1}([0-9]{2})?[0-9]{2}\b$/) != null)
		{
			var strParts = strValue.toString().trim().split(/(\/|-)/);
			var intMonth = 0;
			var intDay = 0;
			var intYear = 0;
			
			if (strParts.length == 3)
			{
				intMonth = parseInt(strParts[0].trim(), 10);
				intDay = parseInt(strParts[1].trim(), 10);
				intYear = parseInt(strParts[2].trim(), 10);
			}
			else if (strParts.length == 5)
			{
				intMonth = parseInt(strParts[0].trim(), 10);
				intDay = parseInt(strParts[2].trim(), 10);
				intYear = parseInt(strParts[4].trim(), 10);
			}
						
			intMonth -= 1;
			
			if ((intMonth < 12) && (intDay < 32))
			{
				var intDays = new Array();
				
				intDays[0] = 31;
				intDays[1] = GetFebruaryDays(intYear);
				intDays[2] = 31;
				intDays[3] = 30;
				intDays[4] = 31;
				intDays[5] = 30;
				intDays[6] = 31;
				intDays[7] = 31;
				intDays[8] = 30;
				intDays[9] = 31;
				intDays[10] = 30;
				intDays[11] = 31;
				
				if (intDay <= intDays[intMonth])
				{
					bolReturn = true;
				}
			}
		}
	}
	
	return bolReturn;
}

function GetFebruaryDays(intYear)
{
	var intDays = 28;
	
	if ((((intYear % 4) == 0) && ((intYear % 100) != 0)) || (intYear % 400) == 0)
	{
		intDays = 29;
	}
	
	return intDays;
}

function IsSSN(strValue)
{
	var bolReturn = false;

	if (strValue != null)
	{
		bolReturn = (strValue.toString().trim().match(/^(?:(^[0-9]{3}-[0-9]{2}-[0-9]{4}$)|(\b[0-9]{3}[0-9]{2}[0-9]{4}\b))$/) != null);
	}
	
	return bolReturn;
}

function RemoveCommas(strValue)
{
	var strReturn = strValue;

	if (strReturn != null)
	{
		strReturn = strReturn.toString().replace(/,/g, "");
	}

	return strReturn;
}

function StripNonNumeric(strValue)
{
	var strReturn = strValue;

	if (strReturn != null)
	{
		strReturn = strReturn.toString().replace(/[^0-9.]*/g, "");
	}

	return strReturn;
}

function FormatNumeric(intNumber)
{
	var strReturn = intNumber.toString();

	if (IsCurrency(strReturn) == true)
	{
		strReturn = StripNonNumeric(strReturn);

		var objRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');

		while (objRegExp.test(strReturn))
		{
			strReturn = strReturn.replace(objRegExp, '$1,$2');
		}
	}

	return strReturn;
}

function FormatNumericAsCurrency(intNumber)
{
	var strReturn = intNumber.toString();

	if (IsCurrency(strReturn) == true)
	{
		strReturn = StripNonNumeric(strReturn);

		var objRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');

		while (objRegExp.test(strReturn))
		{
			strReturn = strReturn.replace(objRegExp, '$1,$2');
		}

		var intCents = Math.floor(intNumber * 100) % 100;
		var strCents = ".00";

		if (intCents < 10)
		{
			strCents = ".0" + intCents.toString();
		}
	}

	return "$" + strReturn + strCents;
}