function VoodooFormat(o,f,i)
{
	var count; var count2; var curchar; var curval;
	var newstring; var asccode; var dummy;
	var len = i.length;
	v = o.value;

	// First of all, we check the format property...
	// we check for upper case formatting
	if (f.indexOf("!")>=0)
		v = v.toUpperCase();
		
	// Alphabetic characters only. No spaces or punctuation marks...
	if (f.indexOf("A")>=0)
	{
		newstring = "";
		dummy = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		for (count=0; count < v.length; count++)
		{
			curchar = v.charAt(count);
			if (dummy.indexOf(curchar) >= 0)
				newstring += curchar;
		}
		v = newstring;
	}

	// Alphabetic characters, numbers and spaces...
	if (f.indexOf("N")>=0)
	{
		newstring = "";
		dummy = "1234567890 +-abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
		for (count=0; count < v.length; count++)
		{
			curchar = v.charAt(count);
			if (dummy.indexOf(curchar) >= 0)
				newstring += curchar;
		}
		v = newstring;
	}

	// Numbers and signs only...
	if (f.indexOf("9")>=0)
	{
		newstring = "";
		dummy = "1234567890+-";
		for (count=0; count < v.length; count++)
		{
			curchar = v.charAt(count);
			if (dummy.indexOf(curchar) >= 0)
				newstring += curchar;
		}
		v = newstring;
	}

	// Numbers only...
	if (f.indexOf("8")>=0)
	{
		newstring = "";
		dummy = "1234567890";
		for (count=0; count < v.length; count++)
		{
			curchar = v.charAt(count);
			if (dummy.indexOf(curchar) >= 0)
				newstring += curchar;
		}
		v = newstring;
	}
	
	// We check for the input mask...
	if (len > 0)
	{
		newstring = "";
		count2 = -1;
		for (count=0; count < i.length; count++)
		{
			count2++;
			curchar = i.charAt(count);
			if (v.length>count2)
				curval = v.charAt(count2);
			else
				curval = " ";
				
			switch (curchar)
			{
				case "9":	// Digits
					dummy = "0123456789";
					if (dummy.indexOf(curval) >=0)
						newstring = newstring + curval;
					else
						newstring = newstring + "0";
					break;
				case "#":	// Digits, spaces and signs, such as minus (-) sign can be entered
					dummy = "0123456789 -+";
					if (dummy.indexOf(curval) >=0)
						newstring = newstring + curval;
					else
						newstring = newstring + "0";
					break;
				case "A":	// Alphabetic characters only
					dummy = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
					if (dummy.indexOf(curval) >=0)
						newstring = newstring + curval;
					else
						newstring = newstring + " ";
					break;
				case "N":	// Alphabetic characters and digits only
					dummy = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ ";
					if (dummy.indexOf(curval) >=0)
						newstring = newstring + curval;
					else
						newstring = newstring + "0";
					break;
				case "!":	// Converts lower-case letters to upper cases...
					newstring = newstring + curval.toUpperCase();
					break;
				case "X":	// Any character
					newstring = newstring + curval;
					break;
				default:
					// We add the character to the string...
					newstring += curchar;
					if (curchar != curval)
						count2--;
					
			}
		}
		v = newstring;
	}
	
	if (o.value != v)
		o.value = v;
}
