var mode = 1;
var KeyBoardShouldBeEn = false;
var IsEn = false;
var IsFa = false;

function SetKeyBoardShouldBeEn()
{
	KeyBoardShouldBeEn = true;
}

function ToAscii(Str)
{
	var character = Str.substring(0,1);
	var code = character.charCodeAt(0);
	
	return code;
}

function ConvertToStandard(e,keyCode)
{
	var ChangedKeyCode = keyCode;
	
	if (mode == 1)
	{
		switch(keyCode)
		{
			case 1577     : ChangedKeyCode =  1578; break;
			case 1609     : ChangedKeyCode =  1610; break;
			case 1703     : ChangedKeyCode =  1601; break;
			case 1705     : ChangedKeyCode =  1603; break;
			case 1706     : ChangedKeyCode =  1603; break;
			case 1726     : ChangedKeyCode =  1607; break;
			case 1729     : ChangedKeyCode =  1607; break;
			case 1740     : ChangedKeyCode =  1610; break;
			case 1741     : ChangedKeyCode =  1610; break;
			case 1742     : ChangedKeyCode =  1610; break;
			case 1749     : ChangedKeyCode =  1607; break;
		}
	}
	
	if(window.event) {
		// for IE, e.keyCode or window.event.keyCode can be used
		e.keyCode = ChangedKeyCode; 
	}
	else if(e.which) {
		// netscape
		
		var newEvent = document.createEvent("KeyEvents")
	      newEvent.initKeyEvent("keypress", true, true, document.defaultView,
                          e.ctrlKey, e.altKey, e.shiftKey,
                          e.metaKey, 0, ChangedKeyCode);
    		e.preventDefault();
	      e.target.dispatchEvent(newEvent);
  
	}
	else {
		// no event, so pass through
		return true;
	}

    e.returnValue = true;
}

function ChangeToEnslish(e)
{
	var keyCode ;
	
	
	if(window.event) {
		// for IE, e.keyCode or window.event.keyCode can be used
		keyCode = e.keyCode; 
	}
	else if(e.which) {
		// netscape
		keyCode = e.which; 
	}
	else {
		// no event, so pass through
		return true;
	}

	if (keyCode < 43)
		return;
	
	if (keyCode > 127)
	{
		if(window.event) {
			// for IE, e.keyCode or window.event.keyCode can be used
			e.keyCode = 0; 
		}
		else if(e.which) {
			// netscape		
			/*var newEvent = document.createEvent("KeyEvents")
	      		newEvent.initKeyEvent("keypress", true, true, document.defaultView,
                          e.ctrlKey, e.altKey, e.shiftKey,
                          e.metaKey, 0, 0);
    			e.preventDefault();
	      	e.target.dispatchEvent(newEvent);*/
  
		}
		else {
			// no event, so pass through
			return true;
		}

		window.alert('Please set your keyboard language to English');
		
    	e.returnValue = true;
    	
    	return;
	}
	
	return;
		
}


function ChangeToFarsi(e)
{
	var keyCode ;
	
	
	if(window.event) {
		// for IE, e.keyCode or window.event.keyCode can be used
		keyCode = e.keyCode; 
	}
	else if(e.which) {
		// netscape
		keyCode = e.which; 
	}
	else {
		// no event, so pass through
		return true;
	}

	
	if(KeyBoardShouldBeEn)
	{
		if(window.event)
		{
			if (keyCode >= 127)
			{
				ConvertToStandard(e,keyCode);
			
				return;
			}
		}
		else if(e.which) {
			if (keyCode >= 127)
			{
				IsEn = true;
				
				if(!IsFa)
				{
					ConvertToStandard(e,keyCode);
					
					return;
				}
				
				IsFa = false;
				IsEn = false;
					
			}
			else
			{
				IsFa = true;
			}
		}
	}
		
	if (keyCode < 38)
		return;
	
	if (keyCode > 127)
		return;
	
	var ChangedKeyCode = keyCode;
	var Key = String.fromCharCode(keyCode);
	
	if (mode == 1)
	{		
		switch(Key)
		{			
			case 'H'     : ChangedKeyCode =  1570; break;
			case 'h'     : ChangedKeyCode =  1575; break;
			case 'f'     :
			case 'F'     : ChangedKeyCode =  1576; break;
			case '`'     : ChangedKeyCode =  1662; break;
			case 'j'     :
			case 'J'     : ChangedKeyCode =  1578; break;
			case 'e'     :
			case 'E'     : ChangedKeyCode =  1579; break;
			case '['     : ChangedKeyCode =  1580; break;
			case ']'     : ChangedKeyCode =  1670; break;
			case 'p'     :
			case 'P'     : ChangedKeyCode =  1581; break;
			case 'o'     :
			case 'O'     : ChangedKeyCode =  1582; break;
			case 'n'     :
			case 'N'     : ChangedKeyCode =  1583; break;
			case 'b'     :
			case 'B'     : ChangedKeyCode =  1584; break;
			case 'v'     :
			case 'V'     : ChangedKeyCode =  1585; break;
			case 'c'     :
			case 'C'     : ChangedKeyCode =  1586; break;
			case '\\'    : ChangedKeyCode =  1688; break;
			case 's'     :
			case 'S'     : ChangedKeyCode =  1587; break;
			case 'a'     :
			case 'A'     : ChangedKeyCode =  1588; break;
			case 'w'     :
			case 'W'     : ChangedKeyCode =  1589; break;
			case 'q'     :
			case 'Q'     : ChangedKeyCode =  1590; break;
			case 'x'     :
			case 'X'     : ChangedKeyCode =  1591; break;
			case 'z'     :
			case 'Z'     : ChangedKeyCode =  1592; break;
			case 'u'     :
			case 'U'     : ChangedKeyCode =  1593; break;
			case 'y'     :
			case 'Y'     : ChangedKeyCode =  1594; break;
			case 't'     :
			case 'T'     : ChangedKeyCode =  1601; break;
			case 'r'     :
			case 'R'     : ChangedKeyCode =  1602; break;
			case ';'     : ChangedKeyCode =  1603; break;
			case '\''    : ChangedKeyCode =  1711; break;
			case 'g'     :
			case 'G'     : ChangedKeyCode =  1604; break;
			case 'l'     : ChangedKeyCode =  1605; break;
			case 'k'     : ChangedKeyCode =  1606; break;
			case 'K'     : ChangedKeyCode =  0161; break;
			case ','     : ChangedKeyCode =  1608; break;
			case 'i'     : 
			case 'I'     : ChangedKeyCode =  1607; break;
			case 'd'     : ChangedKeyCode =  1610; break;
			case 'D'     : ChangedKeyCode =  1609; break;
			case 'm'     :
			case 'M'     : ChangedKeyCode =  1574; break;
			case 'L'     : ChangedKeyCode =  1548; break;
			case '.'     : ChangedKeyCode =  1632; break;
			case '0'     : ChangedKeyCode =  1776; break;
			case '1'     : ChangedKeyCode =  1777; break;
			case '2'     : ChangedKeyCode =  1778; break;
			case '3'     : ChangedKeyCode =  1779; break;
			case '4'     : ChangedKeyCode =  1780; break;
			case '5'     : ChangedKeyCode =  1781; break;
			case '6'     : ChangedKeyCode =  1782; break;
			case '7'     : ChangedKeyCode =  1783; break;
			case '8'     : ChangedKeyCode =  1784; break;
			case '9'     : ChangedKeyCode =  1785; break;
		}
		
		if(ToAscii(Key) == 39) ChangedKeyCode =  1711;
		
	}
	
	if(window.event) {
		// for IE, e.keyCode or window.event.keyCode can be used
		e.keyCode = ChangedKeyCode; 
	}
	else if(e.which) {
		// netscape
		
		/*var newEvent = document.createEvent("KeyEvents")
	      newEvent.initKeyEvent("keypress", true, true, document.defaultView,
                          e.ctrlKey, e.altKey, e.shiftKey,
                          e.metaKey, 0, ChangedKeyCode);
    		e.preventDefault();
	      e.target.dispatchEvent(newEvent);*/
  
	}
	else {
		// no event, so pass through
		return true;
	}

    e.returnValue = true;
}


function ConvertAllTextFieldToPersian()
{
	x0=document.getElementsByTagName("input");

	for(mi=0;mi<x0.length;mi++)
	{
		if(x1=x0[mi].type)
		{
			if(x1 == "text")
			{
				x0[mi].onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToFarsi(e)};
			}
		}
	}
}

function ConvertAllTextFieldExceptArrayToPersian(ExpArray)
{
	x0=document.getElementsByTagName("input");
	
	var con = true;
	
	for(mi=0;mi<x0.length;mi++)
	{
		con = true;
		
		if(x1=x0[mi].type)
		{
			if(x1 == "text")
			{
				if(x0[mi].id != null && ExpArray != null)
				{
					try
					{
						for(var i in ExpArray)
						{
							if(ExpArray[i] == x0[mi].id) con = false;
						}
					}catch(exp){}
				}
			
				if(con)
					x0[mi].onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToFarsi(e)};
			}
		}
	}
}

function ConvertAllTextAriaToPersian()
{
	x0=document.getElementsByTagName("textarea");

	for(mi=0;mi<x0.length;mi++)
	{
		if(x1=x0[mi].type)
		{
			x0[mi].onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToFarsi(e)};
		}
	}
}

function ConvertAllTextAriaExceptArrayToPersian(ExpArray)
{
	x0=document.getElementsByTagName("textarea");
	
	var con = true;
	
	for(mi=0;mi<x0.length;mi++)
	{
		con = true;
		
		if(x1=x0[mi].type)
		{
			if(x0[mi].id != null && ExpArray != null)
			{
				try
				{
					for(var i in ExpArray)
					{
						if(ExpArray[i] == x0[mi].id) con = false;
					}
				}catch(exp){}
			}
			
			if(con)
				x0[mi].onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToFarsi(e)};
		}
	}
}


function ConvertInputFieldToPersian(InputID)
{
	x0=document.getElementsById(InputID);

	x0.onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToFarsi(e)};		
}


function ConvertInputFieldToEnglish(InputID)
{
	x0=document.getElementsById(InputID);

	x0.onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToEnslish(e)};		
}


function ConvertArrayToEnglish(InputArray)
{
	try
	{
		for(var i in InputArray)
		{
			x0=document.getElementsById(InputArray[i]);
			x0.onkeypress=function Set(e){if(window.event){e=window.event;}ChangeToEnslish(e)};
		}
	}
	catch(exp){}
}
