﻿function getCursorPosition(txt)
{
    if(document.selection)
    {
        txt.focus();
        var oSel = document.selection.createRange();
        oSel.moveStart('character', -txt.value.length);
        return oSel.text.length;
    } 
    else(txt.selectionStart) 
        return txt.selectionStart;
}
function CatchNonNumbers(e, negative, decimals, decimalSeparator, txt)
{
	var uni = e.keyCode? e.keyCode : e.charCode; // get the keyCode
	var decUni = getDecimalSeparatorCode(decimalSeparator); // get the decimal separator keyCode
	var evt = window.event? event : e; // event for crtl, alt and shift key
	if(evt.ctrlKey || evt.altKey || evt.shiftKey) 
		return true;
	else 
	{
	    switch(uni)
	    {
	        case 0:
	            // safari
	            return true;
	        case decUni:
	            if(txt.value.replace("-", "").length > 0 && ((getCursorPosition(txt) > 0 && txt.value.indexOf("-") == -1) || (getCursorPosition(txt) > 1 && txt.value.indexOf("-") > -1)) && txt.value.indexOf(decimalSeparator) == -1 && decimals)
	                return true;
	            else
	                return false;
	            break;
	        case 45: // minus sign
	            if(getCursorPosition(txt) == 0 && negative)
	                return true;
	            else
	                return false;
	            break;
	        default:
				return IsAllowed(uni);
				break;
	    }
	} 
}
function getDecimalSeparatorCode(separator)
{
    if(separator == ".")
        return 46;
    else
        return 44;
}
function CheckString(txt, negative, decimals, decimalSeparator) // check the string - because of the Ctrl + V keystroke
{
	var res = ""; 
	var decimalSeparatorUsed = false;
	for(i = 0; i < txt.value.length; i++)
	{ 
		if(i == 0 && txt.value.charAt(0) == "-" && negative) 
			res = "-";
		else 
		{ 
			if(IsNumber(txt.value.charAt(i)))
				res += txt.value.charAt(i); 
			else 
			{
				if(txt.value.charAt(i) == decimalSeparator && decimalSeparatorUsed == false && decimals)
				{ 
					res += txt.value.charAt(i);
					decimalSeparatorUsed = true;
				}
			}
		}
	}
	txt.value = res;
} 
function IsNumber(txt)
{
	var ok = "1234567890";
	if(ok.indexOf(txt) == -1)
		return false;
	else
		return true;
}
function IsAllowed(s) // Which characters are allowed
{ 
	var arr = new Array(8, 9, 13, 17, 35, 36, 37, 38, 
	    39, 40, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57);
	for(i = 0; i < arr.length; i++)
	{
	    if(arr[i] == s)
	        return true;
	}
	return false;
}