// This doesn't work in Firefox
function ForceNumericInput(This, AllowDot, AllowMinus)
{
	if(arguments.length == 1)
	{
    	var s = This.value;
    	// if "-" exists then it better be the 1st character
    	var i = s.lastIndexOf("-");
    	if(i == -1)
        	return;
    	if(i != 0)
       		This.value = s.substring(0,i)+s.substring(i+1);
       	return;
    }

    var code = event.keyCode;
    switch(code)
    {
        case 8:     // backspace
        case 9:     // tab
        case 35:    // end
        case 36:    // home
        case 37:    // left arrow
        case 39:    // right arrow
        case 46:    // delete
            event.returnValue=true;
            return;
    }
    if(code == 189)     // minus sign
    {
    	if(AllowMinus == false)
    	{
            event.returnValue=false;
            return;
        }

        // wait until the element has been updated to see if the minus is in the right spot
        var s = "ForceNumericInput(document.getElementById('"+This.id+"'))";
        setTimeout(s, 250);
        return;
    }
    if(AllowDot && (code == 190 || code == 109))
    {
        if(This.value.indexOf(".") >= 0)
        {
        	// don't allow more than one dot
            event.returnValue=false;
            return;
        }
        event.returnValue=true;
        return;
    }
    // allow character of between 0 and 9
    if((code >= 48 && code <= 57)||(code >= 96 && code <= 105))
    {
        event.returnValue=true;
        return;
    }
    event.returnValue=false;
}

function ForceHyphenatedNumericInput(This)
{
    var code = event.keyCode;
    switch(code)
    {
        case 8:     // backspace
        case 9:     // tab
        case 35:    // end
        case 36:    // home
        case 37:    // left arrow
        case 39:    // right arrow
        case 46:    // delete
        case 109:   // minus sign
        case 189:   // minus sign
            event.returnValue = true;
            return;
    }

    // allow character of between 0 and 9
    if ( (code >= 48 && code <= 57) || (code >= 96 && code <= 105) )
    {
        event.returnValue = true;
        return;
    }

    event.returnValue = false;
}

function ForceHyphenatedAlphaNumericInput(This)
{
    var code = event.keyCode;
    switch(code)
    {
        case 8:     // backspace
        case 9:     // tab
        case 35:    // end
        case 36:    // home
        case 37:    // left arrow
        case 39:    // right arrow
        case 46:    // delete
        case 109:   // minus sign
        case 189:   // minus sign
            event.returnValue = true;
            return;
    }

    // allow character of between 0 and 9 and between a and z
    if ( (code >= 48 && code <= 57) || (code >= 96 && code <= 105) || (code >=65 && code <=90) )
    {
        event.returnValue = true;
        return;
    }

    event.returnValue = false;
}




function formatCurrency(num)
{
    if (num == "")
        return "";

    num = num.toString().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);
}