// [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&&textbox.value.length!=0)
		{
		 	dFilterNum = dFilterNum.substring(0,dFilterNum.length-1);
		}
 	 	else if ((key>47&&key<58) && dFilterNum.length<dFilterMax(dFilterMask) )
		{
        	dFilterNum=dFilterNum+String.fromCharCode(key);
		}
		else if ((key>95&&key<106) && dFilterNum.length<dFilterMax(dFilterMask) ) {
			var temp = '';
			switch (key){
				case 96:
					temp = '0';
					break;
				case 97:
					temp = '1';
					break;
				case 98:
					temp = '2';
					break;
				case 99:
					temp = '3';
					break;
				case 100:
					temp = '4';
					break;
				case 101:
					temp = '5';
					break;
				case 102:
					temp = '6';
					break;
				case 103:
					temp = '7';
					break;
				case 104:
					temp = '8';
					break;
				case 105:
					temp = '9';
					break;
			}
			dFilterNum = dFilterNum + temp;
		}

		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),'');
		}

		if (dFilterFinal == '--' || dFilterFinal == '-') {
			dFilterFinal = '';
		}
		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 phoneFilter(form, format) {

	var input = form.value;

	if(input.length > 0) { //do not perform if empty input

		var numbers = ""; //store all the numbers here

		//process to remove non-numbers and spaces
		for(var i = 0; i < input.length; i++) {
			var pchar = input.charAt(i);
			if(!(isNaN(pchar) || pchar == " ")) numbers += pchar;
		}

		//remove country code, if any
		if(numbers.substring(0, 2) == "47") numbers = numbers.substring(2, numbers.length);

		var output = ""; //assign numbers here

		//assign numbers to chosen format
		var n = 0, i = 0;
		while(i < format.length && n < numbers.length) {
			var pchar = format.charAt(i);
			if(pchar == "#") {
				output += numbers.charAt(n++)
			} else {
				output += pchar;
			}
			i++;
		}

		/*give alert if length is less than 8.
		if(numbers.length < 8) {
			alert("The number must be of length 8");
			form.select();
		}*/

		form.value = output; //output to form
	}
}