﻿ var r={
      'notnumbers':/[^\d,.]/g
    }

    function valid(o,w){
        
            var keyCode="";
           if(window.event)
           { 
                keyCode = window.event.keyCode; 
                evt = window.event; 
            }          
            
            if(keyCode==37 || keyCode==39 || keyCode==8 || keyCode==46|| keyCode==9 || keyCode==16)
            {
                    return;
            }
            
            if((keyCode>=48 && keyCode<=57) || (keyCode>=96 && keyCode<=106))
            {                  
               return;
            }                  
             
           o.value = o.value.replace(r[w],'');
        
    }
    
    function initDoubleFields() {
    
        // Allow backspace, delete, >, <, enter, tab, etc.
        if ((event.keyCode == null) || (event.keyCode == 0) || (event.keyCode == 8) || (event.keyCode == 9) || (event.keyCode == 13) || (event.keyCode == 27) || (event.keyCode == 33) || (event.keyCode == 34) || (event.keyCode == 35) || (event.keyCode == 36) || (event.keyCode == 37) || (event.keyCode == 38) || (event.keyCode == 39) || (event.keyCode == 40) || (event.keyCode == 46) || (event.keyCode == 190) || (event.keyCode == 110)) {

            if ((event.keyCode == 190) || (event.keyCode == 110)) {
                var fieldValue = this.value;
                var fieldArray = fieldValue.split(/\./);
                if (fieldArray.length > 1) {
                    event.preventDefault();
                }
            }
        }
        else {
            // Ensure that it is a number and stop the keypress
            if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
            }
            else {
                event.preventDefault();
            }
        }   
} 

    
    function replaceAll( str, from, to ) {
        var idx = str.indexOf( from );

        while ( idx > -1 ) {
            str = str.replace( from, to );
            idx = str.indexOf( from );
        }

        return str;
    }
    function getCommaSeperatedValue(someNum)
    {
       while (someNum.match(/^(.*\d)(\d{3}(\.|,|$).*$)/))
        {
           someNum =  someNum.replace(/^(.*\d)(\d{3}(\.|,|$).*$)/, '$1,$2');
        }
        return someNum;
    }
    function formatValue(textBox)
    {  
         var someNum = textBox.value;    
         var leftStr = "";
         var rightStr = "";
         someNum = replaceAll(someNum,',','');
         var idx = someNum.indexOf('.');
         if(idx>-1)
         {
           leftStr = someNum.substring(0,idx);
           rightStr = someNum.substring(idx);
           leftStr=getCommaSeperatedValue(leftStr);
           someNum = leftStr + rightStr;
         }
         else
         {
            someNum = getCommaSeperatedValue(someNum);    
         }
         textBox.value = someNum;    
    }
  
    
     function validFunc(o,w,x,y){  
            
            var keyCode="";
           
           if(window.event)
           { 
                keyCode = window.event.keyCode; 
                evt = window.event; 
            }       
               
           if(keyCode==37 || keyCode==39 || keyCode==8 || keyCode==46|| keyCode==9 || keyCode==16 || keyCode==36)
            {
                    return;
            }

        
            valid(o,w);
           
                         
         var someNum = o.value;    
        
         var leftStr = "";
         var rightStr = "";
         someNum = replaceAll(someNum,',','');
         var idx = someNum.indexOf('.');
         
         var degitBeforeDecimal = x;//x degit is allocated before decimal in database. In db the field is defined like Number (18,5)
        var degitAfterDecimal = y;//y degit is allocated after decimal in database. In db the field is defined like Number (18,5)
        

         if(idx>-1)
         {
           leftStr = someNum.substring(0,idx);
           rightStr = someNum.substring(idx);
           
           if(leftStr.length>degitBeforeDecimal) 
           {
              leftStr  = leftStr.substring(0,degitBeforeDecimal);
           }            

          if(rightStr.length>degitAfterDecimal+1) //1 for decimal point 
          {
             rightStr  = rightStr.substring(0,degitAfterDecimal+1);
          }         
           someNum = leftStr + rightStr;
         }
         else
         {
               if(someNum.length>degitBeforeDecimal) 
               {
                 someNum  = someNum.substring(0,degitBeforeDecimal);
               }               
         }  
       
        if(o.value !=someNum)
        {
            o.value =someNum; 
        }
    }
