﻿String.prototype.trim = function TrimString(toTrim)
{
	if(toTrim != undefined && toTrim != "")
	{
		var temp = "^" + toTrim + "*|" + toTrim + "*$";
		return this.replace(new RegExp(temp, "g"), "");
	}
	else
	{
		return this.replace(/^\s*|\s*$/g, "");
	}
}
String.prototype.formatDollar = function FormatDollar()
{
	num = this.trim().replace(/\$|\,/g,"");
	if(isNaN(num))
		num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
		cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+ num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
}
function ClearValidationControls()
{
    if (typeof(Page_Validators) != "undefined")
    {
        for (var i = 0; i < Page_Validators.length; i++)
        {
            Page_Validators[i].isvalid = true;
            ValidatorUpdateDisplay(Page_Validators[i]);
        }
    }
    if (typeof(Page_ValidationSummaries) != "undefined")
    {
        for(var i = 0; i < Page_ValidationSummaries.length; i++)
        {
            Page_ValidationSummaries[i].style.display = "none";
        }
    }
}
function ValidKeyPress(e, sender)
{
    return (e.charCode != undefined && e.charCode != 0) && (sender != undefined && sender.value != undefined) && !e.altKey && !e.ctrlKey;
}
function SSNKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789"))
    {
        if(sender.value.length == 3 || sender.value.length == 6)
        {
            sender.value += "-";
        }
        return true;
    }
    else
    {
        return false;
    }
}
function DateKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789"))
    {
        if(sender.value.length == 2 || sender.value.length == 5)
        {
            sender.value += "/";
        }
        return true;
    }
    else
    {
        return false;
    }
}
function PhoneKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789"))
    {
        if(sender.value.length == 3 || sender.value.length == 7)
        {
            sender.value += "-";
        }
        return true;
    }
    else
    {
        return false;
    }
}
function ZipKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789"))
    {
        if(sender.value.length == 5)
        {
            sender.value += "-";
        }
        return true;
    }
    else
    {
        return false;
    }
}
function IntegerKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789"))
    {
        return true;
    }
    else
    {
        return false;
    }
}
function DecimalKeyPress(e)
{
    if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target != undefined) ? e.target : e.srcElement;
    if(!ValidKeyPress(e, sender))
    {
        return true;
    }
    else if(!FilterKeyPress(e, sender, "0123456789."))
    {
        return true;
    }
    else
    {
        return false;
    }
}
function FilterKeyPress(e, sender, validPattern, singlePattern, doublePattern)
{
    var filtered = false;
    //get the code of the key that was pressed
	var code = (e.charCode) ? e.charCode : e.keyCode;
	//get the character that was pressed
	var charPressed = String.fromCharCode(code);
	//if it's an invalid character
	if(validPattern.indexOf(charPressed) == -1)
	{
	    filtered = true;
	}
	else
	{
	    //count the characters currently in the 
		var charCount = 0;
		var curPos = -1;
		do
		{
			curPos = sender.value.indexOf(charPressed, curPos + 1);
			if(curPos != -1)
			{			
				charCount++;
			}
		}while(curPos != -1);
		//if there is a single pattern
		if(singlePattern != undefined && singlePattern != "")
		{
		    //if the character is already in the string and in the single pattern
			if((charCount > 0 && singlePattern.indexOf(charPressed) != -1))
			{
			    filtered = true;
			}	
		}
		//if there is a double pattern
		if(doublePattern != undefined && doublePattern != "")
		{
		    //if the character is already in the string twice and in the double pattern
			if(charCount > 1 && doublePattern.indexOf(charPressed) != -1)
			{
		        filtered =  true;
			}
		}
	}
	if(filtered)
	{
	    e.returnValue = false;
	    e.cancelBubble = true;
	    if(e.preventDefault)
	    {
	        e.preventDefault();
	    }
	}
	return filtered;
}
function FormatDollar(e)
{	
	if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target) ? e.target : e.srcElement;
    var doFormatting = true;
	if(!sender || !sender.value)
	{
		return;
	}
    var unformatted = parseFloat(sender.value.trim().replace(/\$/g, ""));
    if(isNaN(unformatted))
    {
	    return;
    }
    var minus = "";
    if(unformatted < 0)
    {
	    minus = "-";
    }
    unformatted = Math.abs(unformatted);
    unformatted = parseInt((unformatted + .005) * 100);
    unformatted = unformatted / 100;
    var formatted = new String(unformatted);
    if(formatted.indexOf(".") == -1)
    {
	    formatted += ".00";
    }
    else if(formatted.indexOf(".") == (formatted.length - 2))
    {
	    formatted += "0";
    }
    sender.value = minus + formatted;
    if(ValidatorOnChange)
    {
        ValidatorOnChange(e);
    }
}
function FormatPercent(e)
{	
	if(!e && window.event)
    {
        e = window.event;
    }
    var sender = (e.target) ? e.target : e.srcElement;
	if(!sender || !sender.value)
	{
		return;
	}
	var unformatted = parseFloat(sender.value.trim().replace(/\%/g, ""));
	if(isNaN(unformatted))
	{
		return;
	}
	var minus = "";
	if(unformatted < 0)
	{
		minus = "-";
	}
	unformatted = Math.abs(unformatted);
	unformatted = parseInt((unformatted + .0005) * 1000);
	unformatted = unformatted / 1000;
	var formatted = new String(unformatted);
	var periodIndex = formatted.indexOf(".");
    if(periodIndex == -1)
	{
		formatted += ".000";
	}
	else
	{
	    var fractional = formatted.substr(periodIndex + 1, formatted.length - periodIndex);
	    if(fractional.length == 2)
	    {
	    formatted += "0";
	    }
	    else if(fractional.length == 1)
	    {
	        formatted += "00";
	    }
	}
	sender.value = minus + formatted;
}
