//
// Functions for numeric, decimal and amount validations.
//
// To use these functions:
// For validation of positive integers :
// Invoke the following
//     onkeypress="return doKey(this)"  - To allow only entry of integers
//     onfocus="this.value = removeComma(this.value)" - To remove comma
//     onblur="this.value = addComma(this.value)" - To add comma
//
// For validation of negative integers : 
// same as above, use doKeyNeg instead of doKey
//
// For validation of positive decimals :
//     onkeypress="return doKeyDecimal(this)"  - Decimals can be input
//     onfocus="this.value = removeCommaDecimal(this.value)" - To remove comma
//     onblur="this.value = addCommaDecimal(this.value)" - To add comma
// For validation of positive decimals upto four digits after 
// the decimal point use doKeyDecimal4Digits
//     onKeyPress="return doKeyDecimal4Digits(this);
//
// For validation of negative decimals : 
// same as positive decimal, use doKeyNegDecimal instead of doKeyDecimal
//
// If the decimal is an amount field :
// same as decimal validation. Add another event:
//     onKeyUp="return truncAmt(this)"
//
// If the decimal is a quantity field :
// same as amount field, use truncQty instead of truncAmt
//
function getBrowser()
{
  if ( navigator.appName.indexOf("Netscape") != -1 )
    return "ne";
  else if ( navigator.appName.indexOf("Microsoft") != -1 )
    return "ie";
  else
    return "mac";
}

function trim(str)
{

        //left trimming first
	    var strtrimmed  = "";
	    var strleft     = "";
	    var strright    = "";
	    var i=0;
	    while(str.substring(i,i+1) == ' ' && i <= (str.length-1))
	    {
		    i++;
	    } 
	    strleft = str.substring(i,str.length);
	    var j=strleft.length;
	    while(strleft.substring(j-1,j) == ' ' && j >= 1)
	    {
		    j--;
	    } 
	    strtrimmed = str.substring(0,j);
	    return strtrimmed;
}

function doKey(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which; 
else
  var whichASC = eventObj.keyCode; 
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13");
   for (i = 0; i < 13; i++) 
	{
		if(	whichASC == ascKey[i])
		{
			return true;
			break;	
		}
	}
return false;
}

function doKeyNeg(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var strlen = value2.length;
var ascKey = new Array("45","48","49","50","51","52","53","54","55","56","57","8","13");
   for (i = 0; i < 13; i++) 
	{
		if(strlen != 0)
		{
			if(whichASC == 45)
			{
				return false;
				break;
			}
		} 
		if(	whichASC == ascKey[i])
		{
			return true;
			break;	
		}
	}
return false;
}

function doKeyDecimal(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 

if(value2.length == 0)
{
	dotvalue = 0;
}
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13","46");
   for (i = 0; i < 13; i++) 
	{

		if(	whichASC == ascKey[i])
		{
			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
				dotvalue++;
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}
	
			

	
			return true;
			break;
			}
			return true;
			break;	
		}
	 
	}
return false;
}
function doKeyDecimal4Digits(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13","46");
if(value2.length == 0)
{
	dotvalue = 0;
}

   for (i = 0; i < 13; i++) 
	{
		if(	whichASC == ascKey[i])
		{
			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
			  dotvalue++;
			  if (value2.length == value2.indexOf(".") + 5)
			  {
			    return false;
			    break;
			  }
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}	
			return true;
			break;
			}
			return true;
			break;		
			}
 	  	}
return false;
}

function doKeyDecimal3Digits(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13","46");
if(value2.length == 0)
{
	dotvalue = 0;
}

   for (i = 0; i < 13; i++) 
	{
		if(	whichASC == ascKey[i])
		{
			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
			  dotvalue++;
			  if (value2.length == value2.indexOf(".") + 4)
			  {
			    return false;
			    break;
			  }
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}	
			return true;
			break;
			}
			return true;
			break;		
			}
 	  	}
return false;
}



function doKeyDecimal2Digits(str,eventObj) 
{
var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser == "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13","46");
if(value2.length == 0)
{
	dotvalue = 0;
}

   for (i = 0; i < 13; i++) 
	{
		if(	whichASC == ascKey[i])
		{
		  
		    	
			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
			  dotvalue++;
			  if (value2.length == value2.indexOf(".") + 3)
			  {
			    return false;
			    break;
			  }
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}	
			return true;
			break;
			}
			return true;
			break;		
			}
 	  	}
return false;
}

function doKeyDecimal1Digits(str,eventObj) 
{

var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser = "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var ascKey = new Array("48","49","50","51","52","53","54","55","56","57","8","13","46");
if(value2.length == 0)
{
	dotvalue = 0;
}

   for (i = 0; i < 13; i++) 
	{
		if(	whichASC == ascKey[i])
		{
		  
		    	
			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
			  dotvalue++;
			  if (value2.length == value2.indexOf(".") + 2)
			  {
			    return false;
			    break;
			  }
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}	
			return true;
			break;
			}
			return true;
			break;		
			}
 	  	}
return false;
}

function doKeyNegDecimal(str,eventObj) 
{

var value1 = trim(str.value);
var value2 = value1;
var browser = getBrowser();
if ( browser = "ne" )
  var whichASC = eventObj.which;
else
  var whichASC = eventObj.keyCode; 
var len = value2.length;
if(value2.length == 0)
{
	dotvalue = 0;
}
var strlen = value2.length;

var ascKey = new Array("45","48","49","50","51","52","53","54","55","56","57","8","13","46");
   for (i = 0; i < 14; i++) 
	{

		if(	whichASC == ascKey[i])
		{

			if(whichASC == 45)
			{
		
				var numminus = 0;
				for(j=0; j<= str.value.length+1; j++)
				{
					var noofminus = value2.indexOf("-");
					if(noofminus != -1)
					{	
						numminus++;
					}
				
					if(numminus == 0)
					{
						var value3		= '-'+value2;
						var len = value3.length;
						document.test.txt_num.value	 = '';
						document.test.txt_num.value = value3.substring(1,len);
						document.test.txt_num.focus();
					}
					else if(numminus > 0)
					{
						return false;
						break;
					}
				}


			}


			var dotvalue = 0;
			for(j=0; j<= str.value.length; j++)
			{
			var nodots = value2.indexOf(".");
			if(nodots != -1)
			{	
				dotvalue++;
			}
			
			if(whichASC == 46)
			{
				dotvalue++;
				if(dotvalue > 1)
				{
					dotvalue--;
					return false;
					break;	
				}
			}
	
			

	
			return true;
			break;
			}
			return true;
			break;	
		}
	 
	}
return false;
}

function truncAmt(str,eventObj)
{
var value1 = trim(str.value);
var value2 = value1;
var dotindex = value2.indexOf(".");

		if(dotindex != -1)
		{
			var dotstr1   = value2.substring(0,dotindex+1);
			var dotstr   = value2.substring(dotindex+1,value2.length);
			var dotval   = trim(dotstr);
			if(dotstr.length > 2)
			{
				//eval(str+".value = "+dotstr1+"+value2.substring("+dotindex+"+1,"+dotindex+"+3)");
				document.test.txt_num.value	 = dotstr1+value2.substring(dotindex+1,dotindex+3);
				return true;
			} 
		}
}

function truncQty(str,eventObj)
{
var value1 = trim(str.value);
var value2 = value1;
var dotindex = value2.indexOf(".");

		if(dotindex != -1)
		{
			var dotstr1   = value2.substring(0,dotindex+1);
			var dotstr   = value2.substring(dotindex+1,value2.length);
			var dotval   = trim(dotstr);
			if(dotstr.length > 2)
			{
				//eval(str+".value = "+dotstr1+"+value2.substring("+dotindex+"+1,"+dotindex+"+5)");
				document.test.txt_num.value	 = dotstr1+value2.substring(dotindex+1,dotindex+5);
				return true;
			} 
		}
}

function addCommaDecimal(szInput)
{
		var szOutStr='';
		var szInputParm=''; 
		var szDecimalParam = '';

		szInput = trim(szInput);
		var minus = szInput.indexOf("-");
		var dot = szInput.indexOf(".");
		var lenstr;
		var minusFlag = 0;
		var dotFlag = 0;

		if(minus != -1)
		{
			minusFlag = 1;
		}
		if(dot != -1)
		{
			dotFlag = 1;
			szDecimalParam = szInput.substring(dot+1,szInput.length);
		}
		else
		{
			dot = szInput.length;
		}	

		if(minusFlag == 0)
		{
			lenstr = szInput.substring(0,dot);
		}
		else
		{
			lenstr = szInput.substring(1,dot);
		}
		if(lenstr.length > 0)
		{
			lenstr = addComma(lenstr);
		}
		if(minusFlag == 0)
		{
			if(dotFlag == 0)
			{
				szOutStr = lenstr;
			}
			else
			{
				if(lenstr.length <= 0)
				{
					lenstr = '0';
				}
				szOutStr = lenstr+'.'+szDecimalParam;
			}
		}
		else
		{
			if(dotFlag == 0)
			{
				szOutStr = '-'+lenstr;
			}
			else
			{
				if(lenstr.length <= 0)
				{
					lenstr = '0';
				}
				szOutStr = '-'+lenstr+'.'+szDecimalParam;
			}
		}


	return	szOutStr
}// addComma

function removeCommaDecimal(szInput)
{
		var szOutStr='';
		var szInputParm=''; 
		var szDecimalParam = '';

		szInput = trim(szInput);
		var minus = szInput.indexOf("-");
		var dot = szInput.indexOf(".");
		var lenstr;
		var minusFlag = 0;
		var dotFlag = 0;

		if(minus != -1)
		{
			minusFlag = 1;
		}
		if(dot != -1)
		{
			dotFlag = 1;
			szDecimalParam = szInput.substring(dot+1,szInput.length);
		}
		else
		{
			dot = szInput.length;
		}	

		if(minusFlag == 0)
		{
			lenstr = szInput.substring(0,dot);
		}
		else
		{
			lenstr = szInput.substring(1,dot);
		}
		if(lenstr.length > 0)
		{
			lenstr = removeComma(lenstr);
		}
		if(minusFlag == 0)
		{
			if(dotFlag == 0)
			{
				szOutStr = lenstr;
			}
			else
			{
				szOutStr = lenstr+'.'+szDecimalParam;
			}
		}
		else
		{
			if(dotFlag == 0)
			{
				szOutStr = '-'+lenstr;
			}
			else
			{
				szOutStr = '-'+lenstr+'.'+szDecimalParam;
			}
		}


	return	szOutStr
}//removeComma

function addComma(szInputParm)
{
	var szOutStr = "";
     	if ( szInputParm != null && szInputParm != "")
       {
          var nLen = szInputParm.length / 3 + 1;
          var aThreeChar = new Array(nLen);
          var szRemaining  = "";
          szRemaining = szInputParm;
          nLen = szRemaining.length;

          var i = 0;
          while( nLen-3 > 0 )
          {
             aThreeChar[i]   = szRemaining.substring(nLen-3, nLen);
             szRemaining     = szRemaining.substring(0,nLen-3);
             nLen = szRemaining.length;
             i++;
	     	}
          if (szRemaining.length > 0 )
          {
           	aThreeChar[i] = szRemaining;
          }
          var j = 0;
          for(j=i ; j>0 ; j-- )
          {
           	szOutStr = szOutStr + aThreeChar[j] + ",";
          }
          szOutStr = szOutStr + aThreeChar[j];
    	}// if szInputParm not null
       else
       {
          szOutStr = null;
       }
return szOutStr;
}// addComma


function removeComma(szInputParm)
{
        var szOutStr = "";
        var nIndex = 0;
        var nPreIndex = 0;
           while( (nIndex = szInputParm.indexOf(",",nPreIndex)) != -1 )
            {
                szOutStr = szOutStr + szInputParm.substring(nPreIndex,nIndex);
                nPreIndex = nIndex + 1;
            }
            szOutStr = szOutStr + szInputParm.substring(nPreIndex);
            
    return szOutStr;
}



