
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 (evt, textbox, dFilterMask)
{
    key = (evt.which) ? evt.which : evt.keyCode;
	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 >= 48 && key <= 57)||( key >= 97 && key <= 106)) && dFilterNum.length < dFilterMax(dFilterMask) ) {
        if((key >= 48 && key <= 57))
            dFilterNum = dFilterNum + String.fromCharCode(key);
            
        key = 0;
	}

    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); 			
        }
    }

    textbox.value = dFilterFinal;
    return false;
}

function replace(fullString,text,by) 
{
    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;
}
