function retElementsArray(tagName,type,name)
{var specTag=new Array();var counter=0;var typeMatch=(type=="")?("true"):("document.getElementsByTagName(tagName)[i].type.toLowerCase() == type.toLowerCase()");var nameMatch=(name=="")?("true"):("document.getElementsByTagName(tagName)[i].name == name");for(var i=0;i<document.getElementsByTagName(tagName).length;i++)
if(eval(document.getElementsByTagName(tagName)[i].getAttribute("useFarsi"))&&eval(typeMatch)&&eval(nameMatch))
{specTag[counter]=document.getElementsByTagName(tagName)[i];++counter;}
return specTag;}
function changeDirectionAlignment(which,lang)
{switch(lang)
{case"eng":which.style.direction="ltr";which.style.textAlign="left";break;case"far":which.style.direction="rtl";which.style.textAlign="right";break;}}
function findEnglishRadioButton(radioButtArr)
{if(radioButtArr[0].getAttribute("value")=="eng"||radioButtArr[0].getAttribute("value")=="far")
return((radioButtArr[0].getAttribute("value")=="eng")?(0):(1));else
return(1);}
function easyFarsi()
{var textInputArr=retElementsArray("input","text","");var txtAreaArr=retElementsArray("textarea","","");var totalElements=textInputArr.concat(txtAreaArr);for(i in totalElements)
{if(!totalElements[i].getAttribute("language"))
totalElements[i].setAttribute("language","far");if(!totalElements[i].getAttribute("changeDirOnLangSet"))
totalElements[i].setAttribute("changeDirOnLangSet","false");totalElements[i].setAttribute("keyU","");totalElements[i].setAttribute("keyD","");if(totalElements[i].getAttribute("indicator"))
{indiType=totalElements[i].getAttribute("indicator").split(",")[0].toLowerCase();indiName=totalElements[i].getAttribute("indicator").split(",")[1];switch(indiType)
{case"radio":var radioButts=new Array();radioButts=retElementsArray("input","radio",indiName);if(radioButts.length==2)
{var engIndex=findEnglishRadioButton(radioButts);var farIndex=(engIndex==0)?(1):(0);}
else
{alert("Warning: A Radio Button called '"+indiName+"' has more or less than 2 instances and it's illegal,\n"+"the textareas and input texts that use these radio buttons will not work");break;}
if(!radioButts[0].callers)
{var callers=new Array();callers[0]=totalElements[i];radioButts[0].callers=callers;radioButts[1].callers=callers;radioButts[(callers[0].getAttribute("language")=="eng")?(engIndex):(farIndex)].checked=true;}
else
{var callers=radioButts[0].callers;callers[callers.length]=totalElements[i];radioButts[0].callers=callers;radioButts[1].callers=callers;}
totalElements[i].setAttribute("language",radioButts[0].callers[0].getAttribute("language"));changeDirectionAlignment(totalElements[i],totalElements[i].getAttribute("language"));radioButts[engIndex].onclick=function()
{for(i in this.callers)
{if(eval(this.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(this.callers[i],"eng");this.callers[i].setAttribute("language","eng");}}
radioButts[farIndex].onclick=function()
{for(i in this.callers)
{if(eval(this.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(this.callers[i],"far");this.callers[i].setAttribute("language","far");}}
totalElements[i].changeLanguage=function()
{var currentLang=this.getAttribute("language");var newLang=(currentLang=="far")?("eng"):("far");var indiName=this.getAttribute("indicator").split(",")[1];var radioButts=new Array();radioButts=retElementsArray("input","Radio",indiName);for(i in radioButts[0].callers)
{if(eval(radioButts[0].callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(radioButts[0].callers[i],newLang);radioButts[0].callers[i].setAttribute("language",newLang);}
var engIndex=findEnglishRadioButton(radioButts);var farIndex=(engIndex==0)?(1):(0);radioButts[(newLang=="eng")?(engIndex):(farIndex)].checked=true;}
break;case"button":var butts=new Array();butts=retElementsArray("input","button",indiName);if(butts.length==1)
{var butt=butts[0];}
else
{alert("Warning: A button called '"+indiName+"' has more or less than 1 instance and it's illegal,\n"+"the textareas and input texts that use this button will not work");break;}
if(!butt.callers)
{var callers=new Array();callers[0]=totalElements[i];butt.callers=callers;butt.value=butt.getAttribute(((callers[0].getAttribute("language")=="eng")?("far"):("eng"))+"Value");}
else
{var callers=butt.callers;callers[callers.length]=totalElements[i];butt.callers=callers;}
totalElements[i].setAttribute("language",butt.callers[0].getAttribute("language"));changeDirectionAlignment(totalElements[i],totalElements[i].getAttribute("language"));butt.onclick=function()
{var currentLang=this.callers[0].getAttribute("language");var toBeLang=(currentLang=="far")?("eng"):("far");this.value=this.getAttribute(currentLang+"Value");for(i in this.callers)
{if(eval(this.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(this.callers[i],toBeLang);this.callers[i].setAttribute("language",toBeLang);}}
totalElements[i].changeLanguage=function()
{var currentLang=this.getAttribute("language");var newLang=(currentLang=="far")?("eng"):("far");var indiName=this.getAttribute("indicator").split(",")[1];var butts=new Array();butts=retElementsArray("input","button",indiName);var butt=butts[0];for(i in butt.callers)
{if(eval(butt.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(butt.callers[i],newLang);butt.callers[i].setAttribute("language",newLang);}
butt.value=butt.getAttribute(currentLang+"Value");}
break;case"image":var imgs=new Array();imgs=retElementsArray("img","",indiName);if(imgs.length==1)
{var img=imgs[0];}
else
{alert("Warning: An image called '"+indiName+"' has more or less than 1 instance and it's illegal,\n"+"the textareas and input texts that use this image will not work");break;}
if(!img.callers)
{var callers=new Array();callers[0]=totalElements[i];img.callers=callers;var engSrc=img.getAttribute("engSrc");var farSrc=img.getAttribute("farSrc");var preloadTemp=Array();preloadTemp[0]=new Image;preloadTemp[1]=new Image;preloadTemp[0].src=engSrc.split(",")[0];preloadTemp[1].src=farSrc.split(",")[0];if(engSrc.split(",").length>1)
{preloadTemp[2]=new Image;preloadTemp[2].src=engSrc.split(",")[1];}
if(farSrc.split(",").length>1)
{preloadTemp[3]=new Image;preloadTemp[3].src=farSrc.split(",")[1];}
img.src=img.getAttribute(((callers[0].getAttribute("language")=="far")?("eng"):("far"))+"Src").split(",")[0];img.style.cursor="hand";}
else
{var callers=img.callers;callers[callers.length]=totalElements[i];img.callers=callers;}
totalElements[i].setAttribute("language",img.callers[0].getAttribute("language"));changeDirectionAlignment(totalElements[i],totalElements[i].getAttribute("language"));img.onmouseover=function()
{var currentSrc=(this.callers[0].getAttribute("language")=="far")?("engSrc"):("farSrc");if(this.getAttribute(currentSrc).split(",").length>1)
this.src=this.getAttribute(currentSrc).split(",")[1];}
img.onmouseout=function()
{var currentSrc=(this.callers[0].getAttribute("language")=="far")?("engSrc"):("farSrc");this.src=this.getAttribute(currentSrc).split(",")[0];}
img.onclick=function()
{var currentLang=this.callers[0].getAttribute("language");this.src=this.getAttribute(currentLang+"Src");var toBeLang=(currentLang=="far")?("eng"):("far");for(i in this.callers)
{if(eval(this.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(this.callers[i],toBeLang);this.callers[i].setAttribute("language",toBeLang);}
img.onmouseover();}
totalElements[i].changeLanguage=function()
{var currentLang=this.getAttribute("language");var newLang=(currentLang=="far")?("eng"):("far");var indiName=this.getAttribute("indicator").split(",")[1];var imgs=new Array();imgs=retElementsArray("img","",indiName);var img=imgs[0];for(i in img.callers)
{if(eval(img.callers[i].getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(img.callers[i],newLang);img.callers[i].setAttribute("language",newLang);}
img.src=img.getAttribute(currentLang+"Src").split(",")[0];}
break;}}
else
{changeDirectionAlignment(totalElements[i],totalElements[i].getAttribute("language"));totalElements[i].changeLanguage=function()
{var currentLang=this.getAttribute("language");var newLang=(currentLang=="far")?("eng"):("far");if(eval(this.getAttribute("changeDirOnLangSet")))
changeDirectionAlignment(this,newLang);this.setAttribute("language",newLang);return true;}}
totalElements[i].onkeyup=function(e)
{keyup(e||event,this);}
totalElements[i].onkeydown=function(e)
{keydown(e||event,this);}
totalElements[i].onkeypress=function(e)
{var key=(window.event)?(window.event.keyCode):(e.which);if(key==13)
return true;if(key>127)
return false;if(this.getAttribute("language")=="far")
{if(key==0x0020&&window.event.shiftKey)
window.event.keyCode=0x200C;else
window.event.keyCode=farsikeys[key-0x0020];if(farsikeys[key-0x0020]==92)
window.event.keyCode=0x0698;if(farsikeys[key-0x0020]==8205)
{window.event.keyCode=0x067E;}}
return true;}}}
function keyup(oEvent,element)
{var key=oEvent.keyCode;if(element.getAttribute("keyU")==element.getAttribute("keyD")!="")
{element.setAttribute("keyD","");element.setAttribute("keyU","");}
if((key==17&&element.getAttribute("keyD")==18)||(key==18&&element.getAttribute("keyD")==17))
element.changeLanguage();else
element.setAttribute("keyU",key);}
function keydown(oEvent,element)
{var key=oEvent.keyCode;if(element.getAttribute("keyU")==element.getAttribute("keyD")!="")
{element.setAttribute("keyD","");element.setAttribute("keyU","");}
element.setAttribute("keyD",key);}
var farsikeys=[0x0020,0x0021,0x061B,0x066B,0x00A4,0x066A,0x060C,0x06AF,0x0029,0x0028,0x002A,0x002B,0x0648,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037,0x0038,0x0039,0x003A,0x0643,0x003E,0x003D,0x003C,0x061F,0x066C,0x0624,0x200C,0x0698,0x0649,0x064D,0x0625,0x0623,0x0622,0x0651,0x0629,0x00BB,0x00AB,0x0621,0x004E,0x005D,0x005B,0x0652,0x064B,0x0626,0x064F,0x064E,0x0056,0x064C,0x0058,0x0650,0x0643,0x062C,0x005C,0x0686,0x00D7,0x0640,0x200D,0x0634,0x0630,0x0632,0x064A,0x062B,0x0628,0x0644,0x0627,0x0647,0x062A,0x0646,0x0645,0x067E,0x062F,0x062E,0x062D,0x0636,0x0642,0x0633,0x0641,0x0639,0x0631,0x0635,0x0637,0x063A,0x0638,0x007D,0x007C,0x007B,0x007E];