﻿// ********************************************************************
// DATE FUNCTIONS
// ********************************************************************
function FormatDate(pStrVal)
{
	var result = "";
	var twoDigitYear;
	if (pStrVal)
	{
		pStrVal = replaceChars(jsTrim(pStrVal), '- .', '/', true);
		if (!isNaN(Date.parse(pStrVal)))
		{
			if (pStrVal.substring(pStrVal.lastIndexOf('/') + 1).length < 4)
				result = pStrVal;
			else
			{
				firstSlash 		= pStrVal.indexOf('/');
				secondSlash		= pStrVal.lastIndexOf('/');
				mo 				= pStrVal.substring(0, firstSlash);
				mo 				= (mo.length < 2) ? '0' + mo : mo;
				d 				= pStrVal.substring(firstSlash + 1, secondSlash);
				d 				= (d.length < 2) ? '0' + d : d;
				yr 				= pStrVal.substring(secondSlash + 1);

				result = (mo + '/' + d + '/' + yr);
			}
		}
	}
	else
		result = '';

	return result;
}

function date_onkeypress(field, evt)
{
	var inputChar = document.all ? event.keyCode : evt.which ? evt.which : evt.keyCode ? evt.keyCode : evt.charcode;
	if(inputChar < 47 || inputChar > 57)
	{
		if (inputChar != 8 && inputChar != 9)
			return false;
	}
	if (inputChar == 47 && field.value.substring(field.value.length - 1) == '/')
		return false;
	if (countInstances(field.value, '/') == 2)
	{
		if (inputChar == 47)
			return false;
		else
		{
			if (field.value.substring(field.value.lastIndexOf('/') + 1).length == 4)
				return false;
		}
	}
	if (inputChar != 47 && field.value.length == 2 && field.value.indexOf('/') == -1)
		field.value += '/';
	if (inputChar != 47 && field.value.length == 5 && field.value.lastIndexOf('/') < 3)
		field.value += '/';
}

// ********************************************************************
// CURRENCY FUNCTION
// ********************************************************************
function currency_onkeypress(field, evt)
{
	var inputChar = document.all ? event.keyCode : evt.which ? evt.which : evt.keyCode ? evt.keyCode : evt.charcode;
	var leftOfDecimal = 6;
	var rightOfDecimal = 2;

	if (field.value.indexOf('.') != -1)
		var totalLength = eval((leftOfDecimal + rightOfDecimal + 1) + (field.value.indexOf('.') - leftOfDecimal));

	//Less thn 0 or greater than 9 and char is not a decimal then exit 
  	if((inputChar < 48 || inputChar > 57) && (inputChar != 46) && (inputChar != 9)) 
		return false;

	//if the length = the maxlength and nothing is selected then exit
	if (field.value.length == totalLength && document.selection.createRange().text == '')
		return false;

	//if char is a decimal and it is already in the field
	if (inputChar == 46 && field.value.indexOf('.', 0) > -1 && document.selection.createRange().text == '')
		return false;

	return true;
}

// ********************************************************************
// NUMERIC FUNCTION
// ********************************************************************
function number_onkeypress(field, evt)
{
	var inputChar = document.all ? event.keyCode : evt.which ? evt.which : evt.keyCode ? evt.keyCode : evt.charcode;

	//Less than 0 or greater than 9 and char is not a . or a - then exit
  	if((inputChar < 48 || inputChar > 57) && (inputChar != 9))
  		return false;

	return true;
}

// ********************************************************************
// PHONE FUNCTIONS
// ********************************************************************
function phone_onkeypress(field, evt)
{
	var inputChar = document.all ? event.keyCode : evt.which ? evt.which : evt.keyCode ? evt.keyCode : evt.charcode;

	if(inputChar < 48 || inputChar > 57)
	{
		if (inputChar != 8 && inputChar != 9)
			return false;
	}

	if (field.value.length == 12)
	{
		if (inputChar != 8 && inputChar != 9)
			return false;
	}

	if (field.value.length == 3 || field.value.length == 7)
		field.value += "-";	

	if (field.value.length == 4 &&  inputChar == 48)
		return false;
}
function phoneCopyToHiddenField(field, hiddenId)
{
	unformatted = field.value.replace(/\-/g, '');
	document.getElementById(hiddenId).value = unformatted.substring(0,10);

	if (unformatted.length > 3)
		unformatted = unformatted.substring(0,3) + '-' + unformatted.substring(3);
	if (unformatted.length > 6)
		unformatted = unformatted.substring(0, 7) + '-' + unformatted.substring(7);
	if (unformatted.length > 12)
		unformatted = unformatted.substring(0,12);

	field.value = unformatted;
}

// ********************************************************************
// SSN FUNCTIONS
// ********************************************************************
function ssn_onkeypress(field, evt)
{
	var inputChar = document.all ? event.keyCode : evt.which ? evt.which : evt.keyCode ? evt.keyCode : evt.charcode;

	if(inputChar == 13) return true;
	if(inputChar < 48 || inputChar > 57)
	{
		if (inputChar != 8 && inputChar != 9)
			return false;
	}

	if (field.value.length == 11)
	{
		if (inputChar != 8 && inputChar != 9)
			return false;
	}

	if (field.value.length == 3 || field.value.length == 6)
		field.value += "-";	
}
function ssnCopyToHiddenField(field, hiddenId)
{
	unformatted = field.value.replace(/\-/g, '');
	document.getElementById(hiddenId).value = unformatted.substring(0,9);

	if (unformatted.length > 3)
		unformatted = unformatted.substring(0,3) + '-' + unformatted.substring(3);
	if (unformatted.length > 6)
		unformatted = unformatted.substring(0, 6) + '-' + unformatted.substring(6);
	if (unformatted.length > 11)
		unformatted = unformatted.substring(0,11);

	field.value = unformatted;
}
// ********************************************************************
// UTILITY FUNCTIONS
// ********************************************************************
function jsTrim(theString) {
	if (theString)
	{
		rmchar = ' ';
		while (theString.charAt(theString.length-1) == rmchar)
			theString = theString.slice(0, theString.length-1);

		while (theString.charAt(0) == rmchar)
			theString = theString.slice(1)

		return (theString);
	}
	else
		return ('');
}

function replaceChars(theString, charsToRemove, replaceChar, ignoreCase) {
	if (!ignoreCase) { ignoreCase = true; }
	if (replaceChar == null) { replaceChar = ''; }
	var regExpFlags = 'g';
	if (ignoreCase) { regExpFlags += 'i'; }
	var re;
	var i;
	for (i=0; i<charsToRemove.length; i++)
	{
		re = new RegExp("\\"+charsToRemove.charAt(i), regExpFlags);
		theString = theString.replace(re, replaceChar);
	}
	return (theString);
}


function countInstances(string, character) 
{
	var substrings = string.split(character);
	return substrings.length - 1;
}

// ********************************************************************
// END UTILITY FUNCTIONS
// ********************************************************************

