﻿YAHOO.Numeric = {};

YAHOO.Numeric.formatCurrency = function(e)
{  
    var key = YAHOO.util.Event.getCharCode(e);
   
    if (key != 46 && key != 8 && (key < 48 || (key > 57 && (key < 96 || key > 105)))) 
	{
		return;
	}	
		     
    var result = "";
    var helper = this.value;

    var intIndexOfMatch = helper.indexOf(" ");
    while (intIndexOfMatch != -1)
    {
        helper = helper.replace(" ", "");
        intIndexOfMatch = helper.indexOf(" ");
    }

    while(helper != "")
    {
        if(result != "")
        {
            result = " " + result;
        }
        if(helper.length > 2)
        {
            result = helper.substr(helper.length - 3, helper.length) + result;
        }
        else
        {
            result = helper + result;
        }
        helper = helper.substr(0, helper.length - 3);
    }
    this.value = result;
};

YAHOO.Numeric.keypress = function(e)
{
    var key = YAHOO.util.Event.getCharCode(e);
    if(key == 13 && this.nodeName.toLowerCase() == "input")
	{
		return true;
	}
	else if(key == 13)
	{
        YAHOO.util.Event.preventDefault(e); 
        return false;
	}
		
	// allow Ctrl+A
	if((e.ctrlKey && key == 97 /* firefox */) || (e.ctrlKey && key == 65) /* opera */) return true;
	// allow Ctrl+X (cut)
	if((e.ctrlKey && key == 120 /* firefox */) || (e.ctrlKey && key == 88) /* opera */) return true;
	// allow Ctrl+C (copy)
	if((e.ctrlKey && key == 99 /* firefox */) || (e.ctrlKey && key == 67) /* opera */) return true;
	// allow Ctrl+Z (undo)
	if((e.ctrlKey && key == 122 /* firefox */) || (e.ctrlKey && key == 90) /* opera */) return true;
	// allow or deny Ctrl+V (paste), Shift+Ins
	//if((e.ctrlKey && key == 118 /* firefox */) || (e.ctrlKey && key == 86) /* opera */ || (e.shiftKey && key == 45)) return true;

    var allow = true;

    if (key < 48 || key > 57 ) 
    {
        if(
			key != 8 /* backspace */ &&
			key != 9 /* tab */ &&
			key != 13 /* enter */ &&
			key != 35 /* end */ &&
			key != 36 /* home */ &&
			key != 37 /* left */ &&
			key != 39 /* right */ &&
			key != 46 /* del */
		)
		{
			allow = false;
		}		
    }
    
    if (!allow)
    {
        YAHOO.util.Event.preventDefault(e); 
        return false;
    }
    
    return true;
};

YAHOO.util.Event.onDOMReady(function() {
    var fields = YAHOO.util.Dom.getElementsByClassName('numericInput');
    YAHOO.util.Event.on(fields, "keypress", YAHOO.Numeric.keypress);
    YAHOO.util.Event.on(fields, "keyup", YAHOO.Numeric.formatCurrency);    
    YAHOO.util.Event.on(fields, "contextmenu", function (e) {YAHOO.util.Event.preventDefault(e); return false;});
}); 