﻿var dFilterStep

function dFilterStrip (dFilterTemp, dFilterMask)
{   
    dFilterMask = replace(dFilterMask,'#','');
    for (dFilterStep = 0; dFilterStep < dFilterMask.length++; dFilterStep++)
            {
                dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
            }
   
            return dFilterTemp;
}

function dFilterMax (dFilterMask)
{
    dFilterTemp = dFilterMask;
    for (dFilterStep = 0; dFilterStep < (dFilterMask.length+1); dFilterStep++)
            {
                        if (dFilterMask.charAt(dFilterStep)!='#')
                        {
                    dFilterTemp = replace(dFilterTemp,dFilterMask.charAt(dFilterStep),'');
                        }
            }
            return dFilterTemp.length;
}


function dFilter (key, textbox, dFilterMask)
{
      dFilterNum = dFilterStrip(textbox.value, dFilterMask);
      
      if (key==9 || textbox.readOnly)
      {
            return true;
      }
      else if (key==8&&dFilterNum.length!=0)
      {
            dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
      }
      else if ( ((key>47&&key<58)||(key>95&&key<106)) && dFilterNum.length<dFilterMax(dFilterMask) )
      {
            if(key>95&&key<106)
            {
                  key = key - 48;
            }
            
          dFilterNum=dFilterNum+String.fromCharCode(key);
      }
      else if (key == 13)
      {     
          // when the user presses the Enter key
          // today's date is set as the element value                 
          var SPLIT = '_';        
          var names = textbox.id.split(SPLIT);
          var defaultname = names[0] + SPLIT + names[1];
          var BUTTONDEFAULT = "_BUTTONDEFAULT";
          var imgname = defaultname + BUTTONDEFAULT;
          ExecuteDefaultCalendar(imgname);
                
          return true;
      }

      var dFilterFinal='';
    for (dFilterStep = 0; dFilterStep < dFilterMask.length; dFilterStep++)
      {
        if (dFilterMask.charAt(dFilterStep)=='#')
            {
                  if (dFilterNum.length!=0)
                  {
                        dFilterFinal = dFilterFinal + dFilterNum.charAt(0);
                        dFilterNum = dFilterNum.substring(1,dFilterNum.length);
                  }
                  else
                  {
                        dFilterFinal = dFilterFinal + "";
                  }
            }
            else if (dFilterMask.charAt(dFilterStep)!='#')
            {
                  dFilterFinal = dFilterFinal + dFilterMask.charAt(dFilterStep);                
            }
//              dFilterTemp = replace(dFilterTemp,dFilterMask.substring(dFilterStep,dFilterStep+1),'');
      }

      var dValueIsNumeric = false;
      for (i = 0; i < dFilterFinal.length; i++)
      {
            if (!isNaN(dFilterFinal.substring(i, i + 1)))
            {
                  dValueIsNumeric = true;
                  break;
            }
      }
      
      if (dValueIsNumeric)
            textbox.value = dFilterFinal;
      else
            textbox.value = '';
    return false;
}

function replace(fullString,text,by) {
// Replaces text with by in string
    var strLength = fullString.length, txtLength = text.length;
    if ((strLength == 0) || (txtLength == 0)) return fullString;

    var i = fullString.indexOf(text);
    if ((!i) && (text != fullString.substring(0,txtLength))) return fullString;
    if (i == -1) return fullString;

    var newstr = fullString.substring(0,i) + by;

    if (i+txtLength < strLength)

        newstr += replace(fullString.substring(i+txtLength,strLength),text,by);

    return newstr;
}



