var selpad; 
var kbdStyleSelected="krutidev";
function setSelectionRange(input, selectionStart, selectionEnd) {
  if (input.setSelectionRange) {
    input.focus();
    input.setSelectionRange(selectionStart, selectionEnd);
  }
  else if (input.createTextRange) {
    var range = input.createTextRange();
    range.collapse(true);
    range.moveEnd('character', selectionEnd);
    range.moveStart('character', selectionStart);
    range.select();
  }
}
function setCaretToEnd (input) {
  setSelectionRange(input, input.value.length, input.value.length);
}
function setCaretToBegin (input) {
  setSelectionRange(input, 0, 0);
}
function setCaretToPos (input, pos) {
  setSelectionRange(input, pos, pos);
}
function selectString (input, string) {
  var match = new RegExp(string, "i").exec(input.value);
  if (match) {
    setSelectionRange (input, match.index, match.index + match[0].length);
  }
}
function replaceSelection (input, replaceString) {
  if (input.setSelectionRange) {
    var selectionStart = input.selectionStart;
    var selectionEnd = input.selectionEnd;
    input.value = input.value.substring(0, selectionStart)
                  + replaceString
                  + input.value.substring(selectionEnd);
    if (selectionStart != selectionEnd) // has there been a selection
      setSelectionRange(input, selectionStart, selectionStart + replaceString.length);
    else // set caret
      setCaretToPos(input, selectionStart + replaceString.length);
  }
  else if (document.selection) {
    var range = document.selection.createRange();
    if (range.parentElement() == input) {
      var isCollapsed = range.text == '';
      range.text = replaceString;
      if (!isCollapsed)  { // there has been a selection
        //it appears range.select() should select the newly 
        //inserted text but that fails with IE
        range.moveStart('character', -replaceString.length);
        range.select();
      }
    }
  }
}

function filltxtbox(website)
{
   	  var editor= document.getElementById('TextBox4');
	  editor.focus();
	  editor.value=website;
}
function hideshow(hide,show)
{ 
    document.getElementById(hide).style.visibility='hidden'; 
    document.getElementById(show).style.visibility='visible'; 
} 
function setFormTarget(source)
{
    if((source == "TranslateWebsite"))
    {
        document.Form1.target="_blank";
    }
    else{
        if (source == "TypingPad")
        {
            document.Form1.target="_blank";
        }
        else
        {
            document.Form1.target="_top";
        }
     }
}
function markit(obj)
{
    selpad=obj;
}
function ChangeLang(select){
 	var language = document.getElementById('lang');
 	language.value=select.value;
}
function ChangeKeyboardStyle(select){
 	var kbdStyle = document.getElementById('kbdStyle');
 	kbdStyle.value=select.value;
 	kbdStyleSelected = select.value;
 	if (kbdStyleSelected == "Roman")
 	{
 	    romanTyping();
 	}    
}
function pad(myValue)
{ 
    var editor= selpad;
    editor.focus();
    var oldValue = editor.value;
    var newValue = oldValue+myValue;
    editor.value=newValue;
    document.getElementById('kbdStyle').value = kbdStyleSelected;
    editor.focus();

}
//function pad(myValue) {
//  	var editor= selpad;
// 	editor.focus(); 	
//    if (document.selection){
// 		var sel1 = document.selection.createRange();         
//        var val="";
//        var chr;
//        var sel3 = sel1.duplicate();         
//        sel3.moveToElementText(editor);         
//        if(editor.value.length>0 && sel3.offsetLeft!= sel1.offsetLeft)
//        {             
//            sel1.moveStart('character', -1);
//            val=sel1.text + myValue;                 
//            if (val.charCodeAt(0)==2367)
//            {
//                sel1.moveStart('character', -1);
//                val=sel1.text + myValue;
//            }
//            else
//            { 
//                sel1.text= myValue;
//            } 	
//        } 	
//        else 
//        { 	
//            editor.value= editor.value + myValue; 	
//        }
//    }     	
//} 

function showit(fn){ var s=document.getElementById("tejbottom"); if (s){s.src=fn;return false;}else{return false;} 
}
function showHideLayerDefault(layer1,layer2){ 	 try { 	 if (document.getElementById(layer1).style.display == "none") { 	 document.getElementById(layer1).style.display = ""; 	 HideLayerDefault(layer2); 	 } 	 else 	   document.getElementById(layer1).style.display = "none"; 	 } catch(e){} 
}
function HideLayerDefault(layer){ 	 try { 	   document.getElementById(layer).style.display = "none"; 	 } catch(e){} 
}
//function markLen(){     var editor = document.getElementById('q');     var TxtLen=document.getElementById('Len');     var btn=document.getElementById('BtnSave');     var btn2=document.getElementById('BtnEmail');     var lbl=document.getElementById('lblMsg');     var limit=10000;     var ThisLen=editor.value.length;     TxtLen.value = ThisLen;     if (ThisLen > limit || ThisLen<=0){         btn.disabled=true;         btn2.disabled=true;         if(ThisLen > limit){lbl.innerText="ਤੁਸੀਂ ਨਿਰਧਾਰਿਤ " + limit +" ਅੱਖਰਾਂ ਤੋਂ ਵੱਧ ਨਹੀਂ ਜਾ ਸਕਦੇ"}     }     else {         btn.disabled=false;         btn2.disabled=false;     } }
function romanTyping()
{
     var options = {
                    sourceLanguage: 'en', 
                    destinationLanguage: ['hi'],
                    shortcutKey: 'ctrl+g',
                    transliterationEnabled: true        
                   };
     var control = new google.elements.transliteration.TransliterationControl(options);
     var ids = ["unitext"];
     control.makeTransliteratable(ids);
     //control.showControl('translControl');
     //google.setOnLoadCallback(romanTyping);
    return false;
}
function GurEvents(evt)
{
	    var editor = selpad;
	    //var keyCode = evt.keyCode;
	    var keyCode = evt.keyCode ? evt.keyCode : evt.charCode
	    var lang= document.getElementById('lang');
	    if (keyCode==13 || keyCode==8 || keyCode==40 || keyCode==38 || keyCode==37)
	    { 
	        return true;
	    }
        else 
            if ((kbdStyleSelected=="krutidev") || (kbdStyleSelected=="anmolhindi"))
            {
                if (evt.type=='keypress')
                {
 	                if (lang.value==1)
 	                {
 	                    //var kbdStyle=document.getElementById('kbdStyle');
 	                    if (kbdStyleSelected=="krutidev")
 	                    {
 	                        var myValue= keyMapUnicodeGur_krutidev(keyCode); 
 	                    }
 	                    else
 	                    {
 	                        var myValue= keyMapUnicodeGur_anmolhindi(keyCode); 
 	                    }
 	                    if (myValue == "ि")
 	                    {
 	                            myValue=String.fromCharCode(8204)+"ि";
 	                    }
 	                }
		            else
		            {
		                var myValue=String.fromCharCode(keyCode);
		            }   
		            editor.value= editor.value + myValue;  
	                kbdStyleSelected=document.getElementById('kbdStyle').value;
                }
                editor.focus();
	            return false;
	        }
}
function combiningWords()
{
 	      var txtFld = selpad; 
 	      
          	      
 	      var checkString = String.fromCharCode(8204)+ "ि(.)";
 	      var regexp = new RegExp(checkString,"");
 	      txtFld.value= txtFld.value.replace(regexp,"$1ि");
 	      
 	      
 	      var checkString = " ि(.)";
 	      var regexp = new RegExp(checkString,"");
 	      txtFld.value= txtFld.value.replace(regexp," $1ि"); 
 	      
 	      var checkString = "िि(.)";
 	      var regexp = new RegExp(checkString,"");
 	      txtFld.value= txtFld.value.replace(regexp,"ि$1ि");
            
 	      
 	      
 	      var regexp = new RegExp("(.)ि्","");  
 	      var newChar="$1्"+String.fromCharCode(8204)+"ि"
 	      txtFld.value= txtFld.value.replace(regexp,newChar);
 	      var regexp = new RegExp("ख्ा");
          txtFld.value= txtFld.value.replace(regexp,"ख");
 	      var regexp = new RegExp("क़्");
          txtFld.value= txtFld.value.replace(regexp,"क़्");
 	      var regexp = new RegExp("ख़्");
          txtFld.value= txtFld.value.replace(regexp,"ख़्");
 	      var regexp = new RegExp("ग़्");
          txtFld.value= txtFld.value.replace(regexp,"ग़्");
          var regexp = new RegExp("ज़्");
          txtFld.value= txtFld.value.replace(regexp,"ज़्");
          var regexp = new RegExp("ज़्");
          txtFld.value= txtFld.value.replace(regexp,"ज़्");
          
          var regexp = new RegExp("म्ा");
          txtFld.value= txtFld.value.replace(regexp,"म");
          var regexp = new RegExp("त्ा");
          txtFld.value= txtFld.value.replace(regexp,"त");
          var regexp = new RegExp("ज्ा");
          txtFld.value= txtFld.value.replace(regexp,"ज");
          var regexp = new RegExp("ल्ा");
          txtFld.value= txtFld.value.replace(regexp,"ल");
          var regexp = new RegExp("न्ा");
          txtFld.value= txtFld.value.replace(regexp,"न");
          var regexp = new RegExp("प्ा");
          txtFld.value= txtFld.value.replace(regexp,"प");
          var regexp = new RegExp("व्ा");
          txtFld.value= txtFld.value.replace(regexp,"व");
          var regexp = new RegExp("च्ा");
          txtFld.value= txtFld.value.replace(regexp,"च");
          var regexp = new RegExp("क्ष्ा");
          txtFld.value= txtFld.value.replace(regexp,"क्ष");
          var regexp = new RegExp("क्ा");
          txtFld.value= txtFld.value.replace(regexp,"क");
          var regexp = new RegExp("थ्ा");
          txtFld.value= txtFld.value.replace(regexp,"थ");
          var regexp = new RegExp("भ्ा");
          txtFld.value= txtFld.value.replace(regexp,"भ");
          var regexp = new RegExp("स्ा");
          txtFld.value= txtFld.value.replace(regexp,"स");
          var regexp = new RegExp("ण्ा");
          txtFld.value= txtFld.value.replace(regexp,"ण");
          var regexp = new RegExp("ध्ा");
          txtFld.value= txtFld.value.replace(regexp,"ध");
          var regexp = new RegExp("ग्ा");
          txtFld.value= txtFld.value.replace(regexp,"ग");
          var regexp = new RegExp("ब्ा");
          txtFld.value= txtFld.value.replace(regexp,"ब");
          var regexp = new RegExp("घ्ा");
          txtFld.value= txtFld.value.replace(regexp,"घ");
          var regexp = new RegExp("ष्ा");
          txtFld.value= txtFld.value.replace(regexp,"ष");
          var regexp = new RegExp("श्ा");
          txtFld.value= txtFld.value.replace(regexp,"श");    
          var regexp = new RegExp("ाे");
          txtFld.value= txtFld.value.replace(regexp,"ो");
          var regexp = new RegExp("एे");
          txtFld.value= txtFld.value.replace(regexp,"ऐ");
          var regexp = new RegExp("ाै");
          txtFld.value= txtFld.value.replace(regexp,"ौ");
           var regexp = new RegExp("इर्");
          txtFld.value= txtFld.value.replace(regexp,"ई");
          var regexp = new RegExp("इर्");
          txtFld.value= txtFld.value.replace(regexp,"ई");
          var regexp = new RegExp("अा");
          txtFld.value= txtFld.value.replace(regexp,"आ");
          var regexp = new RegExp("आे");
          txtFld.value= txtFld.value.replace(regexp,"ओ");
          var regexp = new RegExp("आै");
          txtFld.value= txtFld.value.replace(regexp,"औ");
          var regexp = new RegExp("उू");
          txtFld.value= txtFld.value.replace(regexp,"ऊ");
          var regexp = new RegExp("ाॅ");
          txtFld.value= txtFld.value.replace(regexp,"ॉ");
          var regexp = new RegExp("अॉ");
          txtFld.value= txtFld.value.replace(regexp,"ऑ");
          var regexp = new RegExp("ॅं");
          txtFld.value= txtFld.value.replace(regexp,"ँ");
          var regexp = new RegExp("डि़");
          txtFld.value= txtFld.value.replace(regexp,"ड़ि");
          var regexp = new RegExp("कि़");
          txtFld.value= txtFld.value.replace(regexp,"क़ि");
          var regexp = new RegExp("खि़");
          txtFld.value= txtFld.value.replace(regexp,"ख़ि");
          var regexp = new RegExp("गि़");
          txtFld.value= txtFld.value.replace(regexp,"ग़ि");
          var regexp = new RegExp("जि़");
          txtFld.value= txtFld.value.replace(regexp,"ज़ि");
          var regexp = new RegExp("ढि़");
          txtFld.value= txtFld.value.replace(regexp,"ढ़ि");
          var regexp = new RegExp("फि़");
          txtFld.value= txtFld.value.replace(regexp,"फ़ि");
          var regexp = new RegExp("यि़");
          txtFld.value= txtFld.value.replace(regexp,"य़ि");
          var regexp = new RegExp("नि़");
          txtFld.value= txtFld.value.replace(regexp,"ऩि");
          var regexp = new RegExp("रि़");
          txtFld.value= txtFld.value.replace(regexp,"ऱि");
          var regexp = new RegExp("ळि़");
          txtFld.value= txtFld.value.replace(regexp,"ऴि");
          kbdStyleSelected=document.getElementById('kbdStyle').value;
          return false;
}
function keyMapUnicodeGur_anmolhindi(keyValue){
        var uniValue=keyValue;
        kbdStyleSelected=document.getElementById('kbdStyle').value; 
        switch (String.fromCharCode(keyValue)){
            case '’': return 'ृ';	break; 
            case '1': return '१';	break;	
            case '2': return '२';	break;
            case '3': return '३';	break;
            case '4': return '४';	break;
            case '5': return '५';	break;
            case '6': return '६';	break;
            case '7': return '७';	break;
            case '8': return '८';	break;
            case '9': return '९';	break;
            case '0': return '०';	break;
            case '-': return '-';	break;
            case '=': return '=';	break;
            case '~': return 'र्';	break;
            case '!': return '!';	break;
            case '@': return 'क्ष';	break;
            case '#': return 'क्';	break;
            case '$': return 'ख्';	break;
            case '%': return 'घ्';	break;
            case '^': return 'ग्';	break;	
            case '&': return 'ण्';	break;
            case '*': return '*';	break;
            case '(': return '(';	break;
            case ')': return ')';	break;
            case '_': return 'र्ं ';	break;	
            case '+': return '+';	break;
            case 'q': return 'त';	break;
            case 'w': return 'ा';	break;
            case 'e': return 'इ';	break;	
            case 'r': return 'र';	break;
            case 't': return 'ट';	break;
            case 'y': return 'े';	break;
            case 'u': return 'ु';	break;
            case 'i': return 'ि';	break;
            case 'o': return 'ो';	break;
            case 'p': return 'प';	break;	
            case '[': return '।';	break;
            case ']': return '।';	break;
            case '|': return 'ङ';	break;	
            case 'Q': return 'थ';	break;
            case 'W': return 'ाँ';	break;	
            case 'E': return 'ए';	break;	
            case 'R': return ',';	break;	
            case 'T': return 'ठ';	break;
            case 'Y': return 'ै';	break;
            case 'U': return 'ू';	break;
            case 'I': return 'ी';	break;
            case 'O': return 'ौ';	break;
            case 'P': return 'फ';	break;	
            case '{': return 'रु';	break;
            case '}': return 'रू';	break;	
            case '\\': return 'ञ';	break;	
            case 'a': return 'उ';	break; 	
            case 's': return 'स';	break;	
            case 'd': return 'द';	break;	
            case 'f': return 'ड';	break;	
            case 'g': return 'ग';	break;	
            case 'h': return 'ह';	break;	
            case 'j': return 'ज';	break;	
            case 'k': return 'क';	break;	
            case 'l': return 'ल';	break;	
            case ';': return ';';	break;	
            case '‘': return '\'';	break;	
            case 'A': return 'अ';	break;	
            case 'S': return 'श';	break;	
            case 'D': return 'ध';	break;	
            case 'F': return 'ढ';	break;	
            case 'G': return 'घ';	break;	
            case 'H': return 'ह्';	break;	
            case 'J': return 'झ';	break;	
            case 'K': return 'ख';	break;	
            case 'L': return 'ळ';	break;	
            case ':': return '"';	break;	
            case '“': return 'भ';	break;	
            case 'z': return 'ज्ञ';	break;	
            case 'x': return 'ण';	break;	
            case 'c': return 'च';	break;	
            case 'v': return 'व';	break;	 
            case 'b': return 'ब';	break;	 
            case 'n': return 'न';	break;
            case 'm': return 'म';	break;	
            case ',': return ',';	break;	
            case '.': return '.';	break;	
            case '/': return '/';	break;	
            case 'Z': return 'त्र';	break;	
            case 'X': return 'य';	break;	 
            case 'C': return 'छ';	break;	 
            case 'V': return 'ड़';	break;	 
            case 'B': return 'भ';	break;	
            case 'N': return 'न्';	break; 
            case 'M': return 'म्';	break;	
            case '<': return 'ं';	break;	
            case '>': return 'ँ';	break;	
            case '?': return '?';	break;	
            case '\'':return 'श्';   break;
            case '"':return 'ष्';    break;
            default: return String.fromCharCode(keyValue);
   }
}

function keyMapUnicodeGur_krutidev(keyValue){
        var uniValue=keyValue;
        kbdStyleSelected=document.getElementById('kbdStyle').value; 
        switch (String.fromCharCode(keyValue)){
            case '`': return 'ृ';	break;
            case '1': return '१';	break;
            case '2': return '२';	break;
            case '3': return '३';	break;
            case '4': return '४';	break;
            case '5': return '५';	break;
            case '6': return '६';	break;
            case '7': return '७';	break;
            case '8': return '८';	break;
            case '9': return '९';	break;
            case '0': return '०';	break;
            case '-': return 'ङ';	break;
            case '=': return 'त्र';	break;
            case '~': return '्';	break;
            case '!': return '!';	break;
            case '@': return '/';	break;
            case '#': return 'रु';	break;
            case '$': return '+';	break;
            case '%': return 'ः';	break;
            case '^': return '’';	break;
            case '&': return '-';	break;
            case '*': return 'ँ';	break;
            case '(': return 'ञ';	break;
            case ')': return 'द्ध';	break;
            case '_': return 'ऋ';	break;
            case '+': return '़';	break;
            case 'q': return 'ु';	break;
            case 'w': return 'ू';	break;
            case 'e': return 'म';	break;
            case 'r': return 'त';	break;
            case 't': return 'ज';	break;
            case 'y': return 'ल';	break;
            case 'u': return 'न';	break;
            case 'i': return 'प';	break;
            case 'o': return 'व';	break;
            case 'p': return 'च';	break;
            case '[': return 'ख्';	break;
            case ']': return ',';	break;
            case '|': return 'द्य';	break;
            case 'Q': return 'फ';	break;
            case 'W': return 'ॅ';	break;
            case 'E': return 'म्';	break;
            case 'R': return 'त्';	break;
            case 'T': return 'ज्';	break;
            case 'Y': return 'ल्';	break;
            case 'U': return 'न्';	break;
            case 'I': return 'प्';	break;
            case 'O': return 'व्';	break;
            case 'P': return 'च्';	break;
            case '{': return 'क्ष्';	break;
            case '}': return 'द्व';	break;
            case '\\': return '?';	break;
            case 'a': return 'ं';	break; 
            case 's': return 'े';	break;
            case 'd': return 'क';	break;
            case 'f': return 'ि';	break;
            case 'g': return 'ह';	break;
            case 'h': return 'ी';	break;
            case 'j': return 'र';	break;
            case 'k': return 'ा';	break;
            case 'l': return 'स';	break;
            case ';': return 'य';	break;
            case '‘': return '‘';	break;
            case 'A': return '।';	break;
            case 'S': return 'ै';	break;
            case 'D': return 'क्';	break;
            case 'F': return 'थ्';	break;
            case 'G': return 'ळ';	break;
            case 'H': return 'भ्';	break;
            case 'J': return 'श्र';	break;
            case 'K': return 'ज्ञ';	break;
            case 'L': return 'स्';	break;
            case ':': return 'रू';	break;
            case '“': return 'भ';	break;
            case 'z': return '्र';	break;
            case 'x': return 'ग';	break;
            case 'c': return 'ब';	break;
            case 'v': return 'अ';	break;
            case 'b': return 'इ';	break;
            case 'n': return 'द';	break;
            case 'm': return 'उ';	break;
            case ',': return 'ए';	break;
            case '.': return 'ण्';	break;
            case '/': return 'ध्';	break;
            case 'Z': return 'र्';	break;
            case 'X': return 'ग्';	break;
            case 'C': return 'ब्';	break;
            case 'V': return 'ट';	break;
            case 'B': return 'ठ';	break;
            case 'N': return 'छ';	break;
            case 'M': return 'ड';	break;
            case '<': return 'ढ';	break;
            case '>': return 'झ';	break;
            case '?': return 'घ्';	break;
            case '\'':return 'श्';   break;
            case '"':return 'ष्';    break;
            default: return String.fromCharCode(keyValue);
            
   }
}