function input_onkeydown(IsNumeric, ArrowNavigation)
{
	if (ArrowNavigation)
	{
		if (window.event.keyCode == 40)
 		{
 			if (window.event.ctrlKey) return
	 		
 			for (i=window.event.srcElement.sourceIndex+1; i<document.all.length; i++)
     		{
     			var e = document.all(i);
     			if ((e.tagName == 'INPUT' || e.tagName == 'SELECT') && (e.disabled==false))
     			{
     				try
     				{
     					e.focus();
     					window.event.keyCode = 0;
     					window.event.returnValue=false;
     					return
     				}
     				catch (e) {}
     			}
     		}
	     	
     		return
 		}


 		if (window.event.keyCode == 38)
 		{
 			if (window.event.ctrlKey) return
	 		
 			for (i=window.event.srcElement.sourceIndex-1; i>=1; i--)
     		{
     			var e = document.all(i);
     			if ((e.tagName == 'INPUT' || e.tagName == 'SELECT') && (e.disabled==false))
     			{
     				try
     				{
     					e.focus();
     					window.event.keyCode = 0;
     					window.event.returnValue=false;
     					return
     				}
     				catch (e)
     					{}
	     			
     			}
     		}
	     	
     		return
 		}
 	}
     	
    if (IsNumeric == true)
    {
		if (window.event.keyCode == 120) 
		{
			ValidateNumInput();
			return
		}

		if ((window.event.keyCode >= 48 && window.event.keyCode <= 57) 
			|| (window.event.keyCode == 187 && window.event.shiftKey) 
			|| (window.event.keyCode == 189 && (window.event.shiftKey==false)) 
			|| (window.event.keyCode == 56 && window.event.shiftKey) 
 			|| window.event.keyCode == 190 
 			|| window.event.keyCode == 191 
 			|| window.event.keyCode == 106 
 			|| window.event.keyCode == 107 
 			|| window.event.keyCode == 109 
 			|| window.event.keyCode == 111 
			|| window.event.keyCode == 8 
			|| window.event.keyCode == 46 
			|| window.event.keyCode == 35 
			|| window.event.keyCode == 36 
			|| window.event.keyCode == 37 
			|| window.event.keyCode == 39 
			|| window.event.keyCode == 9){}
	 	else
	 	{
	 		window.event.returnValue=false;
	 		return
	 	}
	}	
}

function ValidateNumInput()
{
    window.event.srcElement.value = Calc(window.event.srcElement.value, 1);
}

function Calc(Formula, Operation) 
{
	var vOpSymbol, p, vOperation

    vOperation = Operation;

	switch (vOperation)
	{
		case 1:
			vOpSymbol = '-';
			break;
		case 2:
			vOpSymbol = '+';
			break;
		case 3:
			vOpSymbol = '/';
			break;
		case 4:
			vOpSymbol = '*';
			break;
	}

	p = Formula.indexOf(vOpSymbol);

    if (p>-1)
    {
		switch (vOperation)
		{
			case 1:
				    return Calc(Formula.substr(0, p), vOperation) - Calc(Formula.substr(p + 1), vOperation);
				    break;
			case 2:
				    return Calc(Formula.substr(0, p), vOperation) + Calc(Formula.substr(p + 1), vOperation);
				    break;
			case 3:
				    return Calc(Formula.substr(0, p), vOperation) / Calc(Formula.substr(p + 1), vOperation);
				    break;
			case 4:
				    return Calc(Formula.substr(0, p), vOperation) * Calc(Formula.substr(p + 1), vOperation);
				    break;
		}
	}        
    else
	{	    
        if (vOperation < 4)
        {
            vOperation = vOperation + 1;
            return Calc(Formula, vOperation);
        }
        else
        {
            return parseNum(Formula);
        }
    }
}

function parseNum(Source)
{
	return(parseFloat(Source.replace(',','')));
}
