﻿/* Rad Danesh - raddanesh@yahoo.com */
/* Class Name = lang */
if(typeof HTMLElement!="undefined"&&!HTMLElement.prototype.insertAdjacentElement){HTMLElement.prototype.insertAdjacentElement=function(where,parsedNode){switch(where){case'beforeBegin':this.parentNode.insertBefore(parsedNode,this);break;case'afterBegin':this.insertBefore(parsedNode,this.firstChild);break;case'beforeEnd':this.appendChild(parsedNode);break;case'afterEnd':if(this.nextSibling)this.parentNode.insertBefore(parsedNode,this.nextSibling);else this.parentNode.appendChild(parsedNode);break;}};HTMLElement.prototype.insertAdjacentHTML=function(where,htmlStr){var r=this.ownerDocument.createRange();r.setStartBefore(this);var parsedHTML=r.createContextualFragment(htmlStr);this.insertAdjacentElement(where,parsedHTML);};HTMLElement.prototype.insertAdjacentText=function(where,txtStr){var parsedText=document.createTextNode(txtStr);this.insertAdjacentElement(where,parsedText);}};var FarsiType={farsiKey:[32,33,34,35,36,37,1548,1711,41,40,215,43,1608,45,46,47,48,49,50,51,52,53,54,55,56,57,58,1705,44,61,46,1567,64,1616,1584,125,1609,1615,1609,1604,1570,247,1600,1548,47,8217,1583,215,1563,1614,1569,1613,1601,8216,123,1611,1618,1573,126,1580,1688,1670,94,95,1662,1588,1584,1586,1740,1579,1576,1604,1575,1607,1578,1606,1605,1574,1583,1582,1581,1590,1602,1587,1601,1593,1585,1589,1591,1594,1592,60,124,62,1617],Type:true,counter:0,ShowChangeLangButton:1,KeyBoardError:0,ChangeDir:0,LanguageButtonHover:false}
FarsiType.enable_disable=function(Dis){var invis,obj;if(!Dis.checked){FarsiType.Type=true;disable=false;color='darkblue';}else{FarsiType.Type=false;disable=true;color='#ECE9D8';}if(FarsiType.ShowChangeLangButton==1){for(var i=1;i<=FarsiType.counter;i++){obj=document.getElementById('FarsiType_button_'+i);obj.disabled=disable;obj.style.backgroundColor=color;}}};FarsiType.Disable=function(){FarsiType.Type=false;var Dis=document.getElementById('disableFarsiType');if(Dis!=null){Dis.checked=true;}if(FarsiType.ShowChangeLangButton==1){for(var i=1;i<=FarsiType.counter;i++){obj=document.getElementById('FarsiType_button_'+i);if(obj){obj.disabled=true;obj.style.backgroundColor='#ECE9D8';}}}};FarsiType.init=function(){var Inputs=document.getElementsByTagName('INPUT');for(var i=0;i<Inputs.length;i++){if(Inputs[i].type.toLowerCase()=='text'&&(Inputs[i].lang.toLowerCase()=='fa'||Inputs[i].lang.toLowerCase()=='fa-ir')){FarsiType.counter++;new FarsiType.KeyObject(Inputs[i],Inputs[i].id,Inputs[i].accept);}}var Areas=document.getElementsByTagName('TEXTAREA');for(var i=0;i<Areas.length;i++){if(Areas[i].lang.toLowerCase()=='fa'||Areas[i].lang.toLowerCase()=='fa-ir'){FarsiType.counter++;new FarsiType.KeyObject(Areas[i],Areas[i].id,Areas[i].accept);}}var Dis=document.getElementById('disableFarsiType');if(Dis!=null){FarsiType.enable_disable(Dis);Dis.onclick=new Function("FarsiType.enable_disable (this);")}};FarsiType.KeyObject=function(z,x,d){var dn="visible";if(d=="1"){dn="hidden";}GenerateStr="";
if(FarsiType.ShowChangeLangButton==1){GenerateStr=GenerateStr+"<div style='float:right'><input tabindex='-1' type='button' src='images/lang_bk.gif' id='FarsiType_button_"+x+"' class='farsichangelang' style='visibility:"+dn+";' value='FA' /></div>";};if(FarsiType.ChangeDir==2){GenerateStr=GenerateStr +"<input tabindex='-1' type='button' id=FarsiType_ChangeDir_"+x+" style='visibility:"+dn+"; border: none; background-color:darkblue; font-size:11; color:white; font-family:tahoma; padding: 1px; margin: 1px; width: auto; height: auto; POSITION: absolute;' value='RTL' />"}z.insertAdjacentHTML("afterEnd",GenerateStr);if(FarsiType.ShowChangeLangButton==1){z.bottelm=document.getElementById("FarsiType_button_" + x);z.bottelm.title="Change lang to english";}if(FarsiType.ChangeDir==2){z.Direlm=document.getElementById('FarsiType_ChangeDir_' + x);}z.farsi=true;setSelectionRange=function(input,selectionStart,selectionEnd){input.focus();input.setSelectionRange(selectionStart,selectionEnd);}
ChangeDirection=function(e){if(z.dir=="rtl"){z.dir="ltr";z.align="left";z.Direlm.value="LTR";z.Direlm.title="Change direction: Right to Left";}else{z.dir="rtl";z.align="right";z.Direlm.value="RTL";z.Direlm.title="Change direction: Left to Right";}z.style.textAlign=z.align;z.style.direction=z.dir;z.focus();};LangOver=function(){FarsiType.LanguageButtonHover=true;};LangOut=function(){FarsiType.LanguageButtonHover=false;};hideLanguageButton=function(what){if(!FarsiType.LanguageButtonHover){window.setTimeout('document.getElementById("FarsiType_button_'+what+'").style.visibility="hidden";',100);}};showLanguageButton=function(what){var LanguageButton=document.getElementById("FarsiType_button_"+what);LanguageButton.style.visibility = "visible";};ChangeLang=function(e){if(e==null)e=window.event;var key=e.keyCode?e.keyCode:e.charCode;if(FarsiType.Type){if(key==119||!key){if(z.farsi){z.farsi=false;if(FarsiType.ShowChangeLangButton==1){z.bottelm.value="EN";z.bottelm.title="Change lang to persian";}if(FarsiType.ChangeDir==1){z.style.textAlign="left";z.style.direction="ltr";}}else{z.farsi=true;if(FarsiType.ShowChangeLangButton==1){z.bottelm.value="FA";z.bottelm.title="Change lang to english";};if(FarsiType.ChangeDir==1){z.style.textAlign="right";z.style.direction="rtl";}}z.focus();}}};Convert=function(e){if(FarsiType.Type){if(e==null)e=window.event;eElement=(e.srcElement)?e.srcElement:e.originalTarget;var key=e.keyCode?e.keyCode:e.charCode;if(navigator.userAgent.toLowerCase().indexOf('opera')>-1)key=e.which;if((e.charCode!=null)&&(e.charCode!=key))return;if(e.ctrlKey||e.altKey||e.metaKey||key==13||key==27||key==8)return;if(key>128){if(FarsiType.KeyBoardError==0){FarsiType.Disable();}else{alert("Please change your windows language to English");return false;}};if(z.farsi&&key>31&&key<128){if((key>=65&&key<=90)&&!e.shiftKey){alert("Caps Lock is On. To prevent entering farsi incorrectly, you should press Caps Lock to turn it off.");return false;}else if((key>=97&&key<=122)&&e.shiftKey){alert("Caps Lock is On. To prevent entering farsi incorrectly, you should press Caps Lock to turn it off.");return false;}
if(key==32&&e.shiftKey)key=8204;else key=FarsiType.farsiKey[key-32];try{e.keyCode=key}catch(error){try{e.initKeyEvent("keypress",true,true,document.defaultView,false,false,true,false,0,key,eElement);}catch(error){try{var nScrollTop=eElement.scrollTop;var nScrollLeft=eElement.scrollLeft;var nScrollWidth=eElement.scrollWidth;replaceString=String.fromCharCode(key);var selectionStart=eElement.selectionStart;var selectionEnd=eElement.selectionEnd;eElement.value=eElement.value.substring(0,selectionStart)+replaceString+eElement.value.substring(selectionEnd);setSelectionRange(eElement,selectionStart+replaceString.length,selectionStart+replaceString.length);
var nW=eElement.scrollWidth-nScrollWidth;if(eElement.scrollTop==0){eElement.scrollTop=nScrollTop}e.preventDefault()}catch(error){alert('Sorry! no FarsiType support');FarsiType.Disable();var Dis=document.getElementById('disableFarsiType');if(Dis!=null){Dis.disabled = true;}return false;}}}}}return true;};if(FarsiType.ShowChangeLangButton==1){z.bottelm.onmouseup=ChangeLang;}if(FarsiType.ChangeDir==2){z.Direlm.onmouseup=ChangeDirection;}z.onkeydown=ChangeLang;z.onkeypress=Convert;if(z.accept==1){z.bottelm.onmouseover=LangOver;z.bottelm.onmouseout=LangOut;z.onblur=new Function("hideLanguageButton('"+z.id+"');");z.onfocus=new Function("showLanguageButton('"+z.id+"');");}}
