<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ar">
	<id>http://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-Transli.js</id>
	<title>ميدياويكي:Gadget-Transli.js - تاريخ المراجعة</title>
	<link rel="self" type="application/atom+xml" href="http://www.copticpedia.org/index.php?action=history&amp;feed=atom&amp;title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A%3AGadget-Transli.js"/>
	<link rel="alternate" type="text/html" href="http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Transli.js&amp;action=history"/>
	<updated>2026-04-08T05:22:52Z</updated>
	<subtitle>تاريخ التعديل لهذه الصفحة في الويكي</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Transli.js&amp;diff=8844&amp;oldid=prev</id>
		<title>Gerges: مراجعة واحدة</title>
		<link rel="alternate" type="text/html" href="http://www.copticpedia.org/index.php?title=%D9%85%D9%8A%D8%AF%D9%8A%D8%A7%D9%88%D9%8A%D9%83%D9%8A:Gadget-Transli.js&amp;diff=8844&amp;oldid=prev"/>
		<updated>2021-03-19T01:15:10Z</updated>

		<summary type="html">&lt;p&gt;مراجعة واحدة&lt;/p&gt;
&lt;p&gt;&lt;b&gt;صفحة جديدة&lt;/b&gt;&lt;/p&gt;&lt;div&gt;function addOptionsToSimpleSearch() {&lt;br /&gt;
	// To add checkbox for simple search box&lt;br /&gt;
	// Starts here&lt;br /&gt;
	var firstone =document.getElementById('p-search');&lt;br /&gt;
	if(firstone!= null) {&lt;br /&gt;
		try&lt;br /&gt;
		{&lt;br /&gt;
		var nextone=document.getElementById('h5');&lt;br /&gt;
		&lt;br /&gt;
		var transListBox = document.createElement(&amp;quot;select&amp;quot;);&lt;br /&gt;
		transListBox.style.position =&amp;quot;relative&amp;quot;;&lt;br /&gt;
		transListBox.style.fontSize=&amp;quot;95%&amp;quot;;&lt;br /&gt;
		transListBox.style.top=&amp;quot;0em&amp;quot;;&lt;br /&gt;
		if (transListBox.addEventListener)&lt;br /&gt;
			transListBox.addEventListener(&amp;quot;change&amp;quot;, writingStyleLBChanged, false);&lt;br /&gt;
		else if (transListBox.attachEvent) &lt;br /&gt;
			transListBox.attachEvent(&amp;quot;onchange&amp;quot;, writingStyleLBChanged);&lt;br /&gt;
		var numOfSchemes = transettings.schemes.length;&lt;br /&gt;
		for(var i=0; i &amp;lt; numOfSchemes; i++) {&lt;br /&gt;
			var schemeOption = document.createElement(&amp;quot;option&amp;quot;);&lt;br /&gt;
			schemeOption.appendChild( document.createTextNode(transettings.schemes[i].text) );&lt;br /&gt;
			schemeOption.value = transettings.schemes[i].text;&lt;br /&gt;
			if(transettings.default_scheme_index==i) schemeOption.selected=true;&lt;br /&gt;
			transListBox.appendChild( schemeOption );&lt;br /&gt;
		}&lt;br /&gt;
		 &lt;br /&gt;
		var chkboxelement = document.createElement(&amp;quot;input&amp;quot;);&lt;br /&gt;
		chkboxelement.setAttribute(&amp;quot;type&amp;quot;,&amp;quot;checkbox&amp;quot;);&lt;br /&gt;
		chkboxelement.setAttribute(&amp;quot;id&amp;quot;,&amp;quot;searchInputcb&amp;quot;);&lt;br /&gt;
		chkboxelement.style.position =&amp;quot;relative&amp;quot;;&lt;br /&gt;
		chkboxelement.style.right=&amp;quot;.2em&amp;quot;;&lt;br /&gt;
		chkboxelement.style.top=&amp;quot;-.1em&amp;quot;;&lt;br /&gt;
		chkboxelement.value = 'searchInput'; // specifying curresponding input filed.&lt;br /&gt;
		chkboxelement.checked = transettings.default_state;			&lt;br /&gt;
		 &lt;br /&gt;
		if (chkboxelement.addEventListener) &lt;br /&gt;
		chkboxelement.addEventListener(&amp;quot;click&amp;quot;, transOptionOnClick, false);&lt;br /&gt;
		else if (chkboxelement.attachEvent) &lt;br /&gt;
		chkboxelement.attachEvent(&amp;quot;onclick&amp;quot;, transOptionOnClick);&lt;br /&gt;
		 &lt;br /&gt;
		var chkboxlabel = document.createElement('chkboxlabel');&lt;br /&gt;
		chkboxlabel.style.fontSize = '.7em';&lt;br /&gt;
		//chkboxlabel.style.fontWeight = 'bold';&lt;br /&gt;
		chkboxlabel.style.position =&amp;quot;relative&amp;quot;;&lt;br /&gt;
		chkboxlabel.style.right=&amp;quot;.7em&amp;quot;;&lt;br /&gt;
		chkboxlabel.style.top=&amp;quot;-.7em&amp;quot;;&lt;br /&gt;
		 &lt;br /&gt;
		var linktohelp = document.createElement ('a');&lt;br /&gt;
		linktohelp.href= transettings.checkbox.link.href;&lt;br /&gt;
		linktohelp.title= transettings.checkbox.link.tooltip;&lt;br /&gt;
		linktohelp.appendChild( document.createTextNode(transettings.checkbox.simple_text) );&lt;br /&gt;
		chkboxlabel.appendChild(linktohelp);&lt;br /&gt;
		chkboxlabel.appendChild(document.createElement('br'));&lt;br /&gt;
		firstone.insertBefore(transListBox,nextone);&lt;br /&gt;
		firstone.insertBefore(chkboxelement,nextone);		&lt;br /&gt;
		firstone.insertBefore(chkboxlabel,nextone);&lt;br /&gt;
		firstone.style.position =&amp;quot;relative&amp;quot;;&lt;br /&gt;
		//firstone.style.top=&amp;quot;-1.6em&amp;quot;;&lt;br /&gt;
		}&lt;br /&gt;
		catch(ex)&lt;br /&gt;
		{&lt;br /&gt;
		//Error&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
	// Ends here&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// Transliteration regular expression rules table for IBM PC&lt;br /&gt;
&lt;br /&gt;
if(tr_ar== undefined) var tr_ar = {};&lt;br /&gt;
else tr_ar = {};&lt;br /&gt;
tr_ar.text = &amp;quot;IBM PC&amp;quot;;&lt;br /&gt;
tr_ar.description = &amp;quot;IBM PC&amp;quot;;&lt;br /&gt;
 // Normal rules&lt;br /&gt;
tr_ar.rules = [&lt;br /&gt;
['a', '','ش'],&lt;br /&gt;
['b', '','لا'],&lt;br /&gt;
['c', '','ؤ'],&lt;br /&gt;
['d', '','ي'],&lt;br /&gt;
['e', '','ث'],&lt;br /&gt;
['f', '','ب'],&lt;br /&gt;
['g', '','ل'],&lt;br /&gt;
['h', '','ا'],&lt;br /&gt;
['i', '','ه'],&lt;br /&gt;
['j', '','ت'],&lt;br /&gt;
['k', '','ن'],&lt;br /&gt;
['l', '','م'],&lt;br /&gt;
['m', '','ة'],&lt;br /&gt;
['n', '','ى'],&lt;br /&gt;
['o', '','خ'],&lt;br /&gt;
['p', '','ح'],&lt;br /&gt;
['q', '','ض'],&lt;br /&gt;
['r', '','ق'],&lt;br /&gt;
['s', '','س'],&lt;br /&gt;
['t', '','ف'],&lt;br /&gt;
['u', '','ع'],&lt;br /&gt;
['v', '','ر'],&lt;br /&gt;
['w', '','ص'],&lt;br /&gt;
['x', '','ء'],&lt;br /&gt;
['y', '','غ'],&lt;br /&gt;
['z', '','ئ'],&lt;br /&gt;
['A', '','\u0650'],//كسرة&lt;br /&gt;
['B', '','لآ'],&lt;br /&gt;
['C', '','}'],&lt;br /&gt;
['D', '',']'],&lt;br /&gt;
['E', '','\u064F'],//ضمة&lt;br /&gt;
['F', '','['],&lt;br /&gt;
['G', '','لأ'],&lt;br /&gt;
['H', '','أ'],&lt;br /&gt;
['I', '','÷'],&lt;br /&gt;
['J', '','ـ'],&lt;br /&gt;
['K', '','،'],&lt;br /&gt;
['L', '','/'],&lt;br /&gt;
['M', '','’'],&lt;br /&gt;
['N', '','آ'],&lt;br /&gt;
['O', '','×'],&lt;br /&gt;
['P', '','؛'],&lt;br /&gt;
['Q', '','\u064E'],//فتحة&lt;br /&gt;
['R', '','\u064C'],//ضمتان&lt;br /&gt;
['S', '','\u064D'],//كسرتان&lt;br /&gt;
['T', '','لإ'],&lt;br /&gt;
['U', '','‘'],&lt;br /&gt;
['V', '','{'],&lt;br /&gt;
['W', '','\u064B'],//فتحتان&lt;br /&gt;
['X', '','\u0652'],//سكون&lt;br /&gt;
['Y', '','إ'],&lt;br /&gt;
['Z', '','~'],&lt;br /&gt;
['~', '','\u0651'],//تشديد&lt;br /&gt;
['`', '', 'ذ'],&lt;br /&gt;
['\\[', '', 'ج'],&lt;br /&gt;
['\\]', '', 'د'],&lt;br /&gt;
[&amp;quot;'&amp;quot;, '', 'ط'],&lt;br /&gt;
['\\/', '', 'ظ'],&lt;br /&gt;
['\\.', '', 'ز'],&lt;br /&gt;
['\\,', '', 'و'],&lt;br /&gt;
[';', '', 'ك'],&lt;br /&gt;
['\\?', '', '\u061F'],//؟&lt;br /&gt;
['\\&amp;gt;', '', '.'],&lt;br /&gt;
['\\&amp;lt;', '', ','],&lt;br /&gt;
['\\:', '', '|'],&lt;br /&gt;
['\\}', '', '&amp;gt;'],&lt;br /&gt;
['\\{', '', '&amp;lt;'],&lt;br /&gt;
[&amp;quot;ی&amp;quot;, '', 'ي'],&lt;br /&gt;
['ک', '', 'ك'],&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Transliteration regular expression rules table for Mac&lt;br /&gt;
if(tr__armac== undefined) var tr__armac = {};&lt;br /&gt;
else tr__armac = {};&lt;br /&gt;
tr__armac.text = &amp;quot;Mac&amp;quot;;&lt;br /&gt;
tr__armac.description = &amp;quot;Mac&amp;quot;;&lt;br /&gt;
// Normal rules&lt;br /&gt;
tr__armac.rules = [&lt;br /&gt;
&lt;br /&gt;
['a', '','ش'],&lt;br /&gt;
['b', '','ز'],&lt;br /&gt;
['c', '','ذ'],&lt;br /&gt;
['d', '','ي'],&lt;br /&gt;
['e', '','ث'],&lt;br /&gt;
['f', '','ب'],&lt;br /&gt;
['g', '','ل'],&lt;br /&gt;
['h', '','ا'],&lt;br /&gt;
['i', '','ه'],&lt;br /&gt;
['j', '','ت'],&lt;br /&gt;
['k', '','ن'],&lt;br /&gt;
['l', '','و'],&lt;br /&gt;
['m', '','و'],&lt;br /&gt;
['n', '','ر'],&lt;br /&gt;
['o', '','خ'],&lt;br /&gt;
['p', '','ح'],&lt;br /&gt;
['q', '','ض'],&lt;br /&gt;
['r', '','ق'],&lt;br /&gt;
['s', '','س'],&lt;br /&gt;
['t', '','ف'],&lt;br /&gt;
['u', '','ع'],&lt;br /&gt;
['v', '','د'],&lt;br /&gt;
['w', '','ص'],&lt;br /&gt;
['x', '','ط'],&lt;br /&gt;
['y', '','غ'],&lt;br /&gt;
['z', '','ظ'],&lt;br /&gt;
['A', '','«'],&lt;br /&gt;
['B', '','أ'],&lt;br /&gt;
['C', '','ئ'],&lt;br /&gt;
['D', '','ى'],&lt;br /&gt;
['E', '','\u0650'],//كسرة&lt;br /&gt;
['H', '','آ'],&lt;br /&gt;
['I', '','\u0651'],//تشديد&lt;br /&gt;
['M', '','ؤ'],&lt;br /&gt;
['N', '','إ'],&lt;br /&gt;
['O', '','['],&lt;br /&gt;
['P', '',']'],&lt;br /&gt;
['Q', '','\u064E'],//فتحة&lt;br /&gt;
['R', '','\u064D'],//كسرتان&lt;br /&gt;
['S', '','»'],&lt;br /&gt;
['T', '','\u064F'],//ضمة&lt;br /&gt;
['U', '','\u0652'],//سكون&lt;br /&gt;
['V', '','ء'],&lt;br /&gt;
['W', '','\u064B'],//فتحتان&lt;br /&gt;
['Y', '','\u064C'],//ضمتان&lt;br /&gt;
['`', '', 'ـ'],&lt;br /&gt;
['\\?', '', '\u061F'],//؟&lt;br /&gt;
['\\,', '', '\u060C'],//،&lt;br /&gt;
[&amp;quot;'&amp;quot;, '', '؛'],&lt;br /&gt;
[';', '', 'ك'],&lt;br /&gt;
&lt;br /&gt;
];&lt;br /&gt;
&lt;br /&gt;
// Extended layout for Mac. Works in Firefox only&lt;br /&gt;
tr__armac.extended_keyboard = false;&lt;br /&gt;
&lt;br /&gt;
﻿// Trasliteration Tool&lt;br /&gt;
/** Settings */&lt;br /&gt;
var transettings = {};&lt;br /&gt;
// shortcut key settings&lt;br /&gt;
transettings.shortcut = {&lt;br /&gt;
    controlkey: false,&lt;br /&gt;
    shiftkey: false,&lt;br /&gt;
    altkey: false,&lt;br /&gt;
    metakey: false,&lt;br /&gt;
    key: '',&lt;br /&gt;
    toString:function() {&lt;br /&gt;
        var parts= [];&lt;br /&gt;
        if(this.controlkey) parts.push('Ctrl');&lt;br /&gt;
        if(this.shiftkey) parts.push('Shift');&lt;br /&gt;
        if(this.altkey) parts.push('Alt');&lt;br /&gt;
        if(this.metakey) parts.push('Meta');&lt;br /&gt;
        parts.push(this.key.toUpperCase());&lt;br /&gt;
        return parts.join('+');&lt;br /&gt;
    }&lt;br /&gt;
};&lt;br /&gt;
transettings.checkbox = {};&lt;br /&gt;
// change this value to &amp;quot;after&amp;quot; or &amp;quot;before&amp;quot; to position transliteration option check box&lt;br /&gt;
transettings.checkbox.position = 'after';&lt;br /&gt;
// checkbox text&lt;br /&gt;
transettings.checkbox.text = '';&lt;br /&gt;
// checkbox simple test&lt;br /&gt;
transettings.checkbox.simple_text = '';&lt;br /&gt;
transettings.checkbox.link = {};&lt;br /&gt;
transettings.checkbox.link.href = '';&lt;br /&gt;
transettings.checkbox.link.text = '';&lt;br /&gt;
transettings.checkbox.link.tooltip = '';&lt;br /&gt;
// Default tranliteration state&lt;br /&gt;
transettings.default_state = true;&lt;br /&gt;
// set this property &lt;br /&gt;
// transettings.current_scheme&lt;br /&gt;
// For multi scheme environment&lt;br /&gt;
transettings.schemes = [];&lt;br /&gt;
transettings.default_scheme_index = 0;&lt;br /&gt;
transettings.check_str_length = 6;&lt;br /&gt;
// defining to store state info&lt;br /&gt;
var trasliteration_fields = {};&lt;br /&gt;
// memory for previus key sequence&lt;br /&gt;
var previous_sequence = {};&lt;br /&gt;
// temporary disabling of transliteration&lt;br /&gt;
var temp_disable = {};&lt;br /&gt;
&lt;br /&gt;
function setDefaultSchmeIndex(index) {&lt;br /&gt;
    if(isNaN(index)) index = parseInt(index);&lt;br /&gt;
    if(index==null || index==undefined || index=='' || index &amp;lt; 0) transettings.default_scheme_index = 0;&lt;br /&gt;
    else transettings.default_scheme_index = index;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * from: http://stackoverflow.com/questions/3053542/how-to-get-the-start-and-end-points-of-selection-in-text-area/3053640#3053640&lt;br /&gt;
 */&lt;br /&gt;
function GetCaretPosition(el) {&lt;br /&gt;
    var start = 0, end = 0, normalizedValue, range,&lt;br /&gt;
    textInputRange, len, endRange;&lt;br /&gt;
&lt;br /&gt;
    if (typeof el.selectionStart == &amp;quot;number&amp;quot; &amp;amp;&amp;amp; typeof el.selectionEnd == &amp;quot;number&amp;quot;) {&lt;br /&gt;
        start = el.selectionStart;&lt;br /&gt;
        end = el.selectionEnd;&lt;br /&gt;
    } else {&lt;br /&gt;
        range = document.selection.createRange();&lt;br /&gt;
        if (range &amp;amp;&amp;amp; range.parentElement() == el) {&lt;br /&gt;
            len = el.value.length;&lt;br /&gt;
            normalizedValue = el.value.replace(/\r\n/g, &amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
            // Create a working TextRange that lives only in the input&lt;br /&gt;
            textInputRange = el.createTextRange();&lt;br /&gt;
            textInputRange.moveToBookmark(range.getBookmark());&lt;br /&gt;
&lt;br /&gt;
            // Check if the start and end of the selection are at the very end&lt;br /&gt;
            // of the input, since moveStart/moveEnd doesn't return what we want&lt;br /&gt;
            // in those cases&lt;br /&gt;
            endRange = el.createTextRange();&lt;br /&gt;
            endRange.collapse(false);&lt;br /&gt;
&lt;br /&gt;
            if (textInputRange.compareEndPoints(&amp;quot;StartToEnd&amp;quot;, endRange) &amp;gt; -1) {&lt;br /&gt;
                start = end = len;&lt;br /&gt;
            } else {&lt;br /&gt;
                start = -textInputRange.moveStart(&amp;quot;character&amp;quot;, -len);&lt;br /&gt;
                start += normalizedValue.slice(0, start).split(&amp;quot;\n&amp;quot;).length - 1;&lt;br /&gt;
&lt;br /&gt;
                if (textInputRange.compareEndPoints(&amp;quot;EndToEnd&amp;quot;, endRange) &amp;gt; -1) {&lt;br /&gt;
                    end = len;&lt;br /&gt;
                } else {&lt;br /&gt;
                    end = -textInputRange.moveEnd(&amp;quot;character&amp;quot;, -len);&lt;br /&gt;
                    end += normalizedValue.slice(0, end).split(&amp;quot;\n&amp;quot;).length - 1;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    return {&lt;br /&gt;
        start: start,&lt;br /&gt;
        end: end&lt;br /&gt;
    };&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * from: http://stackoverflow.com/questions/3274843/get-caret-position-in-textarea-ie&lt;br /&gt;
 */&lt;br /&gt;
function offsetToRangeCharacterMove(el, offset) {&lt;br /&gt;
    return offset - (el.value.slice(0, offset).split(&amp;quot;\r\n&amp;quot;).length - 1);&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * IE part from: http://stackoverflow.com/questions/3274843/get-caret-position-in-textarea-ie&lt;br /&gt;
 */&lt;br /&gt;
function setCaretPosition (el, iCaretPos)&lt;br /&gt;
{&lt;br /&gt;
    if (document.selection) // IE&lt;br /&gt;
    {&lt;br /&gt;
        endOffset = startOffset=iCaretPos;&lt;br /&gt;
        var range = el.createTextRange();&lt;br /&gt;
        var startCharMove = offsetToRangeCharacterMove(el, startOffset);&lt;br /&gt;
        range.collapse(true);&lt;br /&gt;
        if (startOffset == endOffset) {&lt;br /&gt;
            range.move(&amp;quot;character&amp;quot;, startCharMove);&lt;br /&gt;
        } else {&lt;br /&gt;
            range.moveEnd(&amp;quot;character&amp;quot;, offsetToRangeCharacterMove(el, endOffset));&lt;br /&gt;
            range.moveStart(&amp;quot;character&amp;quot;, startCharMove);&lt;br /&gt;
        }&lt;br /&gt;
        range.select();&lt;br /&gt;
    }&lt;br /&gt;
    else if (el.selectionStart || el.selectionStart == '0') // Firefox&lt;br /&gt;
    {&lt;br /&gt;
        el.setSelectionRange(iCaretPos, iCaretPos)&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function getLastNChars(str, caretPosition, numberOfChars)&lt;br /&gt;
{&lt;br /&gt;
    if(caretPosition &amp;lt;= numberOfChars ) return str.substring(0,caretPosition);&lt;br /&gt;
    else return str.substring(caretPosition-numberOfChars,caretPosition);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function replaceTransStringAtCaret(control, oldStringLength, newString, selectionRange)&lt;br /&gt;
{&lt;br /&gt;
    var text = control.value;&lt;br /&gt;
    var newCaretPosition;&lt;br /&gt;
    // firefox always scrolls to topmost position,&lt;br /&gt;
    // to scroll manually we keep original scroll postion.&lt;br /&gt;
    if(control.scrollTop || control.scrollTop=='0') {&lt;br /&gt;
        var scrollTop = control.scrollTop;&lt;br /&gt;
    }&lt;br /&gt;
    if(text.length  &amp;gt;= 1) {&lt;br /&gt;
        var firstStr = text.substring(0, selectionRange['start'] - oldStringLength + 1);&lt;br /&gt;
        var lastStr = text.substring(selectionRange['end'], text.length);&lt;br /&gt;
        control.value = firstStr+newString+ lastStr;&lt;br /&gt;
        newCaretPosition = firstStr.length+newString.length;&lt;br /&gt;
        setCaretPosition(control,newCaretPosition);&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        control.value = newString;&lt;br /&gt;
        newCaretPosition = newString.length;&lt;br /&gt;
        setCaretPosition(control,newCaretPosition);&lt;br /&gt;
    }&lt;br /&gt;
    // Manually scrolling in firefox, few tweeks or re-writing may require&lt;br /&gt;
    if (navigator.userAgent.indexOf(&amp;quot;Firefox&amp;quot;)!=-1) {&lt;br /&gt;
        var textLength = control.value.length;&lt;br /&gt;
        var cols = control.cols;&lt;br /&gt;
        if(newCaretPosition &amp;gt; (textLength-cols)) {&lt;br /&gt;
            //var height = parseInt(window.getComputedStyle(control,null).getPropertyValue('height'));&lt;br /&gt;
            var fontsize = parseInt(window.getComputedStyle(control,null).getPropertyValue('font-size'));&lt;br /&gt;
            //var lineheight = height/fontsize;&lt;br /&gt;
            control.scrollTop = scrollTop+fontsize;&lt;br /&gt;
        } else control.scrollTop = scrollTop;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This function will take a string to check against regular expression rules in the rules array.&lt;br /&gt;
 * It will return a two memeber array, having given string as first member and replacement string as&lt;br /&gt;
 * second memeber. If corresponding replacement could not be found then second string will be too given string&lt;br /&gt;
*/&lt;br /&gt;
function transli(lastpart,e, tr_rules)&lt;br /&gt;
{&lt;br /&gt;
    var rulesCount = tr_rules.length;&lt;br /&gt;
    var part1 = lastpart;&lt;br /&gt;
    var part2 = lastpart;&lt;br /&gt;
    var triple;&lt;br /&gt;
    for(var i=0 ; i &amp;lt; rulesCount; i++)&lt;br /&gt;
    {&lt;br /&gt;
        triple = tr_rules[i];&lt;br /&gt;
        var previousKeysMatch = true;&lt;br /&gt;
        var presentSeq = '(.*?)'+triple[0]+'$';&lt;br /&gt;
        var replaceSeq = '$1'+triple[2];&lt;br /&gt;
        if(triple[1].length &amp;gt; 0) {&lt;br /&gt;
            previousKeysMatch = (new RegExp('.*'+triple[1]+'$')).test(previous_sequence[(e.currentTarget || e.srcElement).id ]);&lt;br /&gt;
        }&lt;br /&gt;
        if((new RegExp(presentSeq)).test(lastpart) &amp;amp;&amp;amp; previousKeysMatch)&lt;br /&gt;
        {&lt;br /&gt;
            part1 = lastpart;&lt;br /&gt;
            part2 = lastpart.replace(RegExp(presentSeq), replaceSeq);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
    var pair = new Array(part1, part2);&lt;br /&gt;
    return pair;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * from: http://www.javascripter.net/faq/settinga.htm&lt;br /&gt;
 */&lt;br /&gt;
function setCookie(cookieName,cookieValue,nDays) {&lt;br /&gt;
    var today = new Date();&lt;br /&gt;
    var expire = new Date();&lt;br /&gt;
    if (nDays==null || nDays==0) nDays=1;&lt;br /&gt;
    expire.setTime(today.getTime() + 3600000*24*nDays);&lt;br /&gt;
    document.cookie = cookieName+&amp;quot;=&amp;quot;+escape(cookieValue)+ &amp;quot;;expires=&amp;quot;+expire.toGMTString();&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * from: http://www.javascripter.net/faq/readinga.htm&lt;br /&gt;
 */&lt;br /&gt;
function readCookie(cookieName) {&lt;br /&gt;
    var theCookie=&amp;quot;&amp;quot;+document.cookie;&lt;br /&gt;
    var ind=theCookie.indexOf(cookieName);&lt;br /&gt;
    if (ind==-1 || cookieName==&amp;quot;&amp;quot;) return &amp;quot;&amp;quot;;&lt;br /&gt;
    var ind1=theCookie.indexOf(';',ind);&lt;br /&gt;
    if (ind1==-1) ind1=theCookie.length;&lt;br /&gt;
    return unescape(theCookie.substring(ind+cookieName.length+1,ind1));&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function enableTrasliteration(controlID, enable) {&lt;br /&gt;
    if(enable==undefined) {&lt;br /&gt;
        enable = true;&lt;br /&gt;
    }&lt;br /&gt;
    var cookieValue;&lt;br /&gt;
    if(enable) {&lt;br /&gt;
        trasliteration_fields[controlID] = true;&lt;br /&gt;
        temp_disable[controlID] = false;&lt;br /&gt;
        cookieValue = 1;&lt;br /&gt;
    }&lt;br /&gt;
    else {&lt;br /&gt;
        trasliteration_fields[controlID] = false;&lt;br /&gt;
        cookieValue = 0;&lt;br /&gt;
    }&lt;br /&gt;
    var checkbox = document.getElementById(controlID+'cb');&lt;br /&gt;
    if(checkbox) {&lt;br /&gt;
        checkbox.checked = enable;&lt;br /&gt;
    }&lt;br /&gt;
    setCookie(&amp;quot;tr&amp;quot;+controlID, cookieValue);&lt;br /&gt;
}&lt;br /&gt;
// stop propagation of given event&lt;br /&gt;
function stopPropagation(event) {&lt;br /&gt;
    event.cancelBubble = true;&lt;br /&gt;
    event.returnValue = false;&lt;br /&gt;
    //event.stopPropagation works in Firefox.&lt;br /&gt;
    if (event.stopPropagation) event.stopPropagation();&lt;br /&gt;
    if(event.preventDefault) event.preventDefault();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function shortKeyPressed(event) {&lt;br /&gt;
    var e = event || window.event;&lt;br /&gt;
    var targetElement;&lt;br /&gt;
    if(e.target) targetElement=e.target;&lt;br /&gt;
    else if(e.srcElement) targetElement=e.srcElement;&lt;br /&gt;
    var code;&lt;br /&gt;
    if (e.keyCode) code = e.keyCode;&lt;br /&gt;
    else if (e.which) code = e.which;&lt;br /&gt;
&lt;br /&gt;
    var controlKey = false;&lt;br /&gt;
    var shiftKey = false;&lt;br /&gt;
    var altKey = false;&lt;br /&gt;
    var metaKey = false;&lt;br /&gt;
    if(e.ctrlKey)	controlKey = true;&lt;br /&gt;
    if(e.shiftKey)	shiftKey = true;&lt;br /&gt;
    if(e.altKey)	altKey = true;&lt;br /&gt;
    if(e.metaKey)   metaKey = true;&lt;br /&gt;
    var shortcut = transettings.shortcut;&lt;br /&gt;
    // If shortkey has been specified&lt;br /&gt;
    if((shortcut.controlkey || shortcut.shiftkey || shortcut.altkey || shortcut.metakey) &amp;amp;&amp;amp;&lt;br /&gt;
        (shortcut.controlkey==controlKey &amp;amp;&amp;amp; shortcut.shiftkey==shiftKey &amp;amp;&amp;amp; shortcut.altkey==altKey &amp;amp;&amp;amp; shortcut.metakey==metaKey) &amp;amp;&amp;amp;&lt;br /&gt;
        String.fromCharCode(code).toLowerCase()==shortcut.key.toLowerCase())&lt;br /&gt;
        {&lt;br /&gt;
        enableTrasliteration(targetElement.id, !trasliteration_fields[targetElement.id]);&lt;br /&gt;
        stopPropagation(e);&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
// event listener for trasliterattion textfield&lt;br /&gt;
// also listen for Ctrl+M combination to disable and enable trasliteration&lt;br /&gt;
function tiKeyPressed(event) {&lt;br /&gt;
    var e = event || window.event;&lt;br /&gt;
    var keyCode;&lt;br /&gt;
    if (e.keyCode) keyCode = e.keyCode;&lt;br /&gt;
    else if (e.which) keyCode = e.which;&lt;br /&gt;
&lt;br /&gt;
    //var charCode = e.charCode || e.keyCode;&lt;br /&gt;
    var charCode;&lt;br /&gt;
    if (e.keyCode) charCode = e.keyCode;&lt;br /&gt;
    else if (e.which) charCode = e.which;&lt;br /&gt;
&lt;br /&gt;
    var targetElement = (e.currentTarget || e.srcElement);&lt;br /&gt;
&lt;br /&gt;
    if (keyCode == 8 ) {&lt;br /&gt;
        previous_sequence[targetElement.id] = '';&lt;br /&gt;
        return true;&lt;br /&gt;
    } // Backspace&lt;br /&gt;
    // If this keystroke is a function key of any kind, do not filter it&lt;br /&gt;
    if (e.charCode == 0 || e.which ==0 ) return true;       // Function key (Firefox and Opera), e.charCode for Firefox and e.which for Opera&lt;br /&gt;
    // If control or alt or meta key pressed&lt;br /&gt;
    if(e.ctrlKey || (e.altKey &amp;amp;&amp;amp; !transettings.current_scheme.extended_keyboard) || e.metaKey) {&lt;br /&gt;
        //if (navigator.userAgent.indexOf(&amp;quot;Firefox&amp;quot;)!=-1) {&lt;br /&gt;
        //	return shortKeyPressed(event);&lt;br /&gt;
        //}&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
    if (charCode &amp;lt; 32) return true;             // ASCII control character&lt;br /&gt;
    if(trasliteration_fields[targetElement.id])&lt;br /&gt;
    {&lt;br /&gt;
&lt;br /&gt;
        var c = String.fromCharCode(charCode);&lt;br /&gt;
        var selectionRange = GetCaretPosition(targetElement);&lt;br /&gt;
        var lastSevenChars = getLastNChars(targetElement.value, selectionRange['start'], transettings.check_str_length);&lt;br /&gt;
        var oldString;&lt;br /&gt;
        var newString;&lt;br /&gt;
&lt;br /&gt;
        if(charCode ==62 &amp;amp;&amp;amp; previous_sequence[targetElement.id ].substring(previous_sequence[targetElement.id ].length-1)==&amp;quot;&amp;lt;&amp;quot;)&lt;br /&gt;
        {&lt;br /&gt;
            oldString = &amp;quot;&amp;lt;&amp;gt;&amp;quot;;&lt;br /&gt;
            newString = &amp;quot;&amp;quot;;&lt;br /&gt;
            temp_disable[targetElement.id] = !temp_disable[targetElement.id];&lt;br /&gt;
        }&lt;br /&gt;
        else {&lt;br /&gt;
            if(!temp_disable[targetElement.id])&lt;br /&gt;
            {&lt;br /&gt;
                var transPair;&lt;br /&gt;
                if(transettings.current_scheme.extended_keyboard &amp;amp;&amp;amp; e.altKey) {&lt;br /&gt;
                    transPair = transli(lastSevenChars+c, e, transettings.current_scheme.rules_x);&lt;br /&gt;
                }&lt;br /&gt;
                else transPair = transli(lastSevenChars+c, e, transettings.current_scheme.rules);&lt;br /&gt;
                oldString = transPair[0];&lt;br /&gt;
                newString = transPair[1];&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
                oldString = c;&lt;br /&gt;
                newString = c;&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
        replaceTransStringAtCaret(targetElement, oldString.length, newString , selectionRange);&lt;br /&gt;
        previous_sequence[targetElement.id ] += c;&lt;br /&gt;
        if(previous_sequence[targetElement.id ].length &amp;gt; 6 ) previous_sequence[targetElement.id ] = previous_sequence[targetElement.id ].substring(previous_sequence[targetElement.id ].length-6);&lt;br /&gt;
        stopPropagation(e);&lt;br /&gt;
        return false;&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function tiKeyDown(event) {&lt;br /&gt;
    var e = event || window.event;&lt;br /&gt;
    var targetElement;&lt;br /&gt;
    if(e.target) targetElement=e.target;&lt;br /&gt;
    else if(e.srcElement) targetElement=e.srcElement;&lt;br /&gt;
    if(transettings.current_scheme.extended_keyboard &amp;amp;&amp;amp; e.altKey &amp;amp;&amp;amp; !e.ctrlKey &amp;amp;&amp;amp; !e.metaKey &amp;amp;&amp;amp; temp_disable[targetElement.id]) stopPropagation(e);&lt;br /&gt;
    else if(e.ctrlKey || e.altKey || e.metaKey) {&lt;br /&gt;
        return shortKeyPressed(event);&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
}&lt;br /&gt;
/**&lt;br /&gt;
 * This is the function to which call during window load event for trasliterating textfields.&lt;br /&gt;
 * The funtion will accept any number of HTML tag IDs of textfields.&lt;br /&gt;
*/&lt;br /&gt;
function transliterate() {&lt;br /&gt;
    var len = arguments.length;&lt;br /&gt;
    for(var i=0;i&amp;lt;len; i++)&lt;br /&gt;
    {&lt;br /&gt;
        var element = document.getElementById(arguments[i]);&lt;br /&gt;
        if(element)&lt;br /&gt;
        {&lt;br /&gt;
            trasliteration_fields[arguments[i]] = transettings.default_state;&lt;br /&gt;
            previous_sequence[arguments[i]] = '';&lt;br /&gt;
            if (element.addEventListener){&lt;br /&gt;
                element.addEventListener('keydown', tiKeyDown, false);&lt;br /&gt;
                element.addEventListener('keypress', tiKeyPressed, false);&lt;br /&gt;
            } else if (element.attachEvent){&lt;br /&gt;
                element.attachEvent('onkeydown', tiKeyDown);&lt;br /&gt;
                element.attachEvent(&amp;quot;onkeypress&amp;quot;, tiKeyPressed);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function transOptionOnClick(event)&lt;br /&gt;
{&lt;br /&gt;
    var e = event || window.event;&lt;br /&gt;
    var checkbox =  (e.currentTarget || e.srcElement);&lt;br /&gt;
    if(checkbox.checked)&lt;br /&gt;
    {&lt;br /&gt;
        enableTrasliteration(checkbox.value,true);&lt;br /&gt;
    }&lt;br /&gt;
    else&lt;br /&gt;
    {&lt;br /&gt;
        enableTrasliteration(checkbox.value,false);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
// call this function to add checkbox to enable/disable transliteration&lt;br /&gt;
function addTransliterationOption()&lt;br /&gt;
{&lt;br /&gt;
    var len = arguments.length;&lt;br /&gt;
    for(var i=0;i&amp;lt;len; i++)&lt;br /&gt;
    {&lt;br /&gt;
        var element = document.getElementById(arguments[i]);&lt;br /&gt;
        if(element)&lt;br /&gt;
        {&lt;br /&gt;
            var checkbox = document.createElement('input');&lt;br /&gt;
            checkbox.id = arguments[i]+'cb';&lt;br /&gt;
            checkbox.type = 'checkbox';&lt;br /&gt;
            checkbox.value = arguments[i];&lt;br /&gt;
            checkbox.onclick = transOptionOnClick;&lt;br /&gt;
            checkbox.checked = transettings.default_state;&lt;br /&gt;
            var para = document.createElement('p');&lt;br /&gt;
            para.style.fontSize=&amp;quot;.8em&amp;quot;;&lt;br /&gt;
            para.appendChild(checkbox);&lt;br /&gt;
            var text = document.createTextNode(transettings.checkbox.text);&lt;br /&gt;
            para.appendChild(text);&lt;br /&gt;
            if(transettings.checkbox.position==&amp;quot;after&amp;quot;) element.parentNode.insertBefore(para, element.nextSibling);&lt;br /&gt;
            else if(transettings.checkbox.position==&amp;quot;before&amp;quot;) element.parentNode.insertBefore(para, element);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/**&lt;br /&gt;
 * This functions is to synchronize state transliteration state to fields from cookies&lt;br /&gt;
 */&lt;br /&gt;
function translitStateSynWithCookie() {&lt;br /&gt;
    var len = arguments.length;&lt;br /&gt;
    for(var i=0;i&amp;lt;len; i++)&lt;br /&gt;
    {&lt;br /&gt;
        var element = document.getElementById(arguments[i]);&lt;br /&gt;
        if(element)&lt;br /&gt;
        {&lt;br /&gt;
            var state = parseInt(readCookie(&amp;quot;tr&amp;quot;+arguments[i]));&lt;br /&gt;
            var enable = transettings.default_state;&lt;br /&gt;
            if(state == 1)  enable=true;&lt;br /&gt;
            else if(state==0) enable =false;&lt;br /&gt;
            enableTrasliteration(arguments[i],enable);&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function writingStyleLBChanged(event) {&lt;br /&gt;
    var e = event || window.event;&lt;br /&gt;
    var listBox =  (e.currentTarget || e.srcElement);&lt;br /&gt;
    transettings.current_scheme = transettings.schemes[listBox.selectedIndex];&lt;br /&gt;
    setCookie(&amp;quot;transToolIndex&amp;quot;, listBox.selectedIndex);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function initMultiScheme() {&lt;br /&gt;
    transettings.current_scheme = transettings.schemes[transettings.default_scheme_index];&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function transetup(event) {&lt;br /&gt;
	transettings.schemes[0] = tr_ar;&lt;br /&gt;
	transettings.schemes[1] = tr__armac;&lt;br /&gt;
	transettings.shortcut.controlkey =true;&lt;br /&gt;
	transettings.shortcut.key = 'M';&lt;br /&gt;
	transettings.checkbox.text =  &amp;quot;تعريب مجازي (&amp;quot;+transettings.shortcut.toString()+&amp;quot;)&amp;quot;;&lt;br /&gt;
	transettings.checkbox.link.href = &amp;quot;//ar.wikipedia.org/wiki/ويكيبيديا:تعريب_مجازي&amp;quot;;&lt;br /&gt;
	transettings.checkbox.simple_text = 'تعريب مجازي';&lt;br /&gt;
	transettings.checkbox.link.tooltip = &amp;quot;الكتابة بالأحرف العربية. الاختصار: &amp;quot;+transettings.shortcut.toString();&lt;br /&gt;
	setDefaultSchmeIndex(readCookie(&amp;quot;transToolIndex&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
	transliterate('searchInput', 'wpTextbox1', 'wpSummary', 'searchText', 'powerSearchText', 'wpNewTitle', 'wpReason', 'nsfrom', 'username', 'mwProtect-reason', 'nsto','wpText',  'wpUploadDescription', 'wpDestFile', 'wikieditor-toolbar-reference-text' );&lt;br /&gt;
	addTransliterationOption( 'searchText', 'powerSearchText', 'wpNewTitle', 'wpReason', 'nsfrom', 'username', 'mwProtect-reason', 'nsto','wpText', 'wpUploadDescription', 'wpDestFile', 'wikieditor-toolbar-reference-text' );&lt;br /&gt;
	transettings.checkbox.position = &amp;quot;before&amp;quot;;&lt;br /&gt;
	addTransliterationOption( 'wpTextbox1', 'wpSummary', 'wikieditor-toolbar-reference-text' );&lt;br /&gt;
	addOptionsToSimpleSearch();&lt;br /&gt;
	initMultiScheme();&lt;br /&gt;
	translitStateSynWithCookie('searchInput', 'wpTextbox1', 'wpSummary', 'searchText', 'powerSearchText', 'wpNewTitle', 'wpReason', 'nsfrom', 'username', 'mwProtect-reason', 'nsto', 'wpText', 'wikieditor-toolbar-reference-text' );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
if (window.addEventListener){&lt;br /&gt;
	window.addEventListener('load', transetup, false);&lt;br /&gt;
} else if (window.attachEvent){&lt;br /&gt;
	window.attachEvent('onload', transetup);&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Gerges</name></author>
	</entry>
</feed>