// NUMERICINPUT.JS

// SABITLER

function NumericInputClass()
{
    function findDecimalSeperator(mvalue)
    {		
        if (mvalue.indexOf(".")!=-1) return ".";
        return ",";
    }
    
	function NumericInputKillExtraDigits(Val, Type, DecimalSeparator,Precision,IsZeroEmpty)
	{
		var precisionStr = "";
		var i = 0;
		
		if(Val != "")
		{
		    for(i=0;i<Precision;i++) precisionStr += "0";
    		
		    if(Type == 0)
			    return(Val);
		    if(Type == 1)
			    return(Val);
    		
		    if((parseFloat(Val.replace(DecimalSeparator,"."))==0) || 
		       isNaN(parseFloat(Val.replace(DecimalSeparator,".")))) Val = "0";
    		   
		    if(IsZeroEmpty && Val == "0") return '';
		    if(Precision>0)
		    {
		        var DotPos = Val.indexOf(DecimalSeparator);
	            if(DotPos == -1)
		            return(Val+DecimalSeparator+precisionStr);
        	    
	            Val += precisionStr;
	            return(Val.slice(0, DotPos + (Precision+1)));
	        }
	        else
	            return Val;
	    }return Val;
	}

    function removeNumericFields(newStr)
    {
        var DecimalSeparator=" 0123456789";
        var returnStr="";

        for(var i=0; i<newStr.length; i++)
		{
            var c=newStr.charAt(i);
            if (DecimalSeparator.indexOf(c.toUpperCase())==-1)
                returnStr=returnStr + c.toUpperCase();
		}
		return returnStr;
    }
    this.newStr=removeNumericFields;

    
	function Fix(This, Type, DecimalSeparator,Precision,IsZeroEmpty)
	{   
	    var Val = This.value;
	    DecimalSeparator=findDecimalSeperator(Val);
	            
        // Check if the value is within range
		var max=This.getAttribute('maxAmount');
		if(floatParse(Val)>floatParse(max)){Val=max}
		var min=This.getAttribute('minAmount');
		if(floatParse(Val)<floatParse(min)){Val=min}
		
		var NewVal = "";
		var GotDot = false;
		for(var i=0; i<Val.length; i++)
		{
			var c=Val.charAt(i);
			if(c == "-" && i == 0)
			{
				NewVal += c;
				continue;
			}
			// window.alert("new: '"+NewVal+"' c: '"+c+"'");
			if(c == DecimalSeparator)
			{
				if(Type == 0)
				{
					This.value = NewVal;
					return;
				}
				if(GotDot == true)
				{
					This.value = NumericInputKillExtraDigits(NewVal, Type, DecimalSeparator,Precision,IsZeroEmpty);
					return;
				}
				NewVal += c;
				GotDot = true;
				continue;
			}
			if(c >= '0' && c <= '9')
				NewVal += c;
		}
		This.value = NumericInputKillExtraDigits(NewVal, Type, DecimalSeparator,Precision,IsZeroEmpty);
	}
	this.Fix = Fix;
	
	function Chk(This, Type, DecimalSeparator)
	{   
		var Obj = event.srcElement;
		var Val = Obj.value;
		var Key = event.keyCode;
		var KeyAscii = String.fr
		
		DecimalSeparator=findDecimalSeperator(Val);
		if(KeyAscii == "-")
		{
			if(Obj.value != "")
			{
				event.returnValue = false;
				return;
			}
			return;
		}
		switch(Type)
		{
			case 0:		// integer
				if(KeyAscii < '0' || KeyAscii > '9')
				{
					event.returnValue = false;
					return;
				}
				return;

			case 1:		// Float
			case 2:		// Currency
				var DotPos = Val.indexOf(DecimalSeparator);
				if(KeyAscii == DecimalSeparator)
				{
					if( DotPos >= 0)
					{
						event.returnValue = false;
						return;
					}
					return;
				}
				if(KeyAscii < '0' || KeyAscii > '9')
				{
					event.returnValue = false;
					return;
				}
				return;		    
		}
	}
	this.Chk = Chk;
}
function floatParse(value)
{
    var decimalVal = 0;
    value = value.replace(",",".");
    if((parseFloat(value)!=0) && !isNaN(parseFloat(value)))
      decimalVal=parseFloat(value);
    return decimalVal;
}
var NI = new NumericInputClass();
