// [dFilter] - A Numerical Input Mask for JavaScript
// Written By Dwayne Forehand - March 27th, 2003
// Please reuse & redistribute while keeping this notice.

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)
                {
                    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) )
                {
        dFilterNum=dFilterNum+String.fromCharCode(key);
                }

                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),'');
                }


                textbox.value = dFilterFinal;
    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;
}

function currencyFormat(fld, milSep, decSep, e) {
    var sep = 0;
    var key = '';
    var i = j = 0;
    var len = len2 = 0;
    var strCheck = '0123456789';
    var aux = aux2 = '';
    var whichCode = (window.Event) ? e.which : e.keyCode;
    if (whichCode == 13) return true;  // Enter
    key = String.fromCharCode(whichCode);  // Get key value from key code
    if (strCheck.indexOf(key) == -1) return false;  // Not a valid key
    len = fld.value.length;
    for(i = 0; i < len; i++)
    if ((fld.value.charAt(i) != '0') && (fld.value.charAt(i) != decSep)) break;
    aux = '';
    for(; i < len; i++)
    if (strCheck.indexOf(fld.value.charAt(i))!=-1) aux += fld.value.charAt(i);
    aux += key;
    len = aux.length;
    if (len == 0) fld.value = '';
    if (len == 1) fld.value = '0'+ decSep + '0' + aux;
    if (len == 2) fld.value = '0'+ decSep + aux;
    if (len > 2) {
    aux2 = '';
    for (j = 0, i = len - 3; i >= 0; i--) {
    if (j == 3) {
    aux2 += milSep;
    j = 0;
    }
    aux2 += aux.charAt(i);
    j++;
    }
    fld.value = '';
    len2 = aux2.length;
    for (i = len2 - 1; i >= 0; i--)
    fld.value += aux2.charAt(i);
    fld.value += decSep + aux.substr(len - 2, len);
    }
    return false;
}


