
var isOpera = navigator.userAgent.indexOf('Opera') > -1;
var isIE = navigator.userAgent.indexOf('MSIE') > 1 && !isOpera;
var isMoz = navigator.userAgent.indexOf('Mozilla/5.') == 0 && !isOpera;
 
function textboxSelect (oTextbox, iStart, iEnd) {
 
   switch(arguments.length) {
       case 1:
           oTextbox.select();
           break;
 
       case 2:
           iEnd = oTextbox.value.length;
           /* falls through */
           
       case 3:          
           if (isIE) {
               var oRange = oTextbox.createTextRange();
               oRange.moveStart("character", iStart);
               oRange.moveEnd("character", -oTextbox.value.length + iEnd);      
               oRange.select();                                              
           } else if (isMoz){
               oTextbox.setSelectionRange(iStart, iEnd);
           }                    
   }
 
   oTextbox.focus();
}
 
function textboxReplaceSelect (oTextbox, sText) {
 
   if (isIE) {
       var oRange = document.selection.createRange();
       oRange.text = sText;
       oRange.collapse(true);
       oRange.select();                                
   } else if (isMoz) {
       var iStart = oTextbox.selectionStart;
       oTextbox.value = oTextbox.value.substring(0, iStart) + sText + oTextbox.value.substring(oTextbox.selectionEnd, oTextbox.value.length);
       oTextbox.setSelectionRange(iStart + sText.length, iStart + sText.length);
   }
 
   oTextbox.focus();
}
 
function autocompleteMatch (sText, arrValues) {
 
   for (var i=0; i < arrValues.length; i++) {
       if (arrValues[i].indexOf(sText) == 0) {
           return arrValues[i];
       }
   }
 
   return null;
 
}

function changecase(oTextbox, oEvent) {
 switch (oEvent.keyCode) {
       case 38: //up arrow  
       case 40: //down arrow
       case 37: //left arrow
       case 39: //right arrow
       case 33: //page up  
       case 34: //page down  
       case 36: //home  
       case 35: //end                  
       case 13: //enter  
       case 9: //tab  
       case 27: //esc  
       case 16: //shift  
       case 17: //ctrl  
       case 18: //alt  
       case 20: //caps lock
       case 8: //backspace  
       case 46: //delete
           return true;
           break;
 
       default:
           
           textboxReplaceSelect(oTextbox, String.fromCharCode(isIE ? oEvent.keyCode : oEvent.charCode));
           
           oTextbox.value = oTextbox.value.replace("\u03ac","\u0391");  //Ü
           oTextbox.value = oTextbox.value.replace("\u03ad","\u0395");  //Ý
           oTextbox.value = oTextbox.value.replace("\u03ae","\u0397");  //Þ
           oTextbox.value = oTextbox.value.replace("\u03af","\u0399");  //ß
           oTextbox.value = oTextbox.value.replace("\u03cc","\u039f");  //ü
           oTextbox.value = oTextbox.value.replace("\u03cd","\u03a5");  //ý
           oTextbox.value = oTextbox.value.replace("\u03ce","\u03a9");  //þ
           
          if (mylang == 0)
           {
                oTextbox.value = oTextbox.value.toUpperCase();
           }
           
 

           if (isIE)
		   {
	           event.cancelBubble = true;
	           if (typeof(event.stopPropagation) === "function") {
	               event.stopPropagation();
	           }
		   }           
           
           return false;
   }

}
 
function autocomplete(oTextbox, oEvent, arrValues) {
 
   switch (oEvent.keyCode) {
       case 38: //up arrow  
       case 40: //down arrow
       case 37: //left arrow
       case 39: //right arrow
       case 33: //page up  
       case 34: //page down  
       case 36: //home  
       case 35: //end                  
       case 13: //enter  
       case 9: //tab  
       case 27: //esc  
       case 16: //shift  
       case 17: //ctrl  
       case 18: //alt  
       case 20: //caps lock
       case 8: //backspace  
       case 46: //delete
           return true;
           break;
 
       default:
           
           textboxReplaceSelect(oTextbox, String.fromCharCode(isIE ? oEvent.keyCode : oEvent.charCode));
           var iLen = oTextbox.value.length;
           oTextbox.value = oTextbox.value.replace("\u03ac","\u0391");  //Ü
           oTextbox.value = oTextbox.value.replace("\u03ad","\u0395");  //Ý
           oTextbox.value = oTextbox.value.replace("\u03ae","\u0397");  //Þ
           oTextbox.value = oTextbox.value.replace("\u03af","\u0399");  //ß
           oTextbox.value = oTextbox.value.replace("\u03cc","\u039f");  //ü
           oTextbox.value = oTextbox.value.replace("\u03cd","\u03a5");  //ý
           oTextbox.value = oTextbox.value.replace("\u03ce","\u03a9");  //þ
           
           if (mylang == 0)
           {
                oTextbox.value = oTextbox.value.toUpperCase();
           }
           
           var sMatch = autocompleteMatch(oTextbox.value, arrValues);
 
           if (sMatch != null) {
               oTextbox.value = sMatch;
               
               textboxSelect(oTextbox, iLen, oTextbox.value.length);
           }  
           
           if (isIE)
		   {
	           event.cancelBubble = true;
	           if (typeof(event.stopPropagation) === "function") {
	               event.stopPropagation();
	           }
		   }           
           return false;
   }
}