﻿// JScript source code for write in web kazakh words
/*create and debugging by Oylan-欧伊岚
* E-mail: oylan11@gmail.com 
* http://www.kazakhsoft.com
* 2008-09-26. Pishan.
* can write kazakh words all the web browser. IE, firefox, safari, opera, chrome
*/ 
//**** qazaqsha cazilatin textbox pen textarea Id nemese Name ati ****//
kzEdits="txtTranSoz:sText:q:query:txtUserName";
attachAll = true ; 
noKzEdits="ctl00$ContentPlaceHolder1$txtCnSoz:ctl00$ContentPlaceHolder1$txtPY" ;
//********************KazakhSoft-Oylan********************************//;
var imode = 0 ; // input mode, default is khazakh
var qmode = 0 ; // quote mode, 0 for opening, 1 for closing
var keymap = new Array ( 128 ) ;
var i ;
var inited = 0 ;

// right and left quotes in khazakh
//var OQUOTE = 0x00AB ; // for opening quote (oh quote)
//var CQUOTE = 0x00BB ; // for closing quote  

var OQUOTE = 0x2039 ; // for opening quote (oh quote)
var CQUOTE = 0x203A ; // for closing quote  

// returns a char code for a given character
function gac ( ascii )
{
    var str = "" + ascii ;
    return str.charCodeAt(0) ;
}

var ua = navigator.userAgent.toLowerCase();
var isIE = ((ua.indexOf("msie") != -1) && (ua.indexOf("opera") == -1) && (ua.indexOf("webtv") == -1)) ;
var isGecko = ((ua.indexOf("gecko") != -1) && (ua.indexOf("safari") != -1) || (ua.indexOf("gecko") != -1) && (ua.indexOf("firefox") != -1) || (ua.indexOf("opera") != -1) ) ;
var isMaxthon = ((ua.indexOf("msie") != -1) && (ua.indexOf("maxthon") != -1)) ;

function init ( ) {
  if ( inited ) {
     return ;
  }

  inited = 1 ;

  // zero-out all entries first
  for ( i = 0 ; i < keymap.length ; i++ ) {
     keymap[i] = 0 ;
  }
	
  // Khazakh Unicode character map
  keymap[gac('A')] = 0x2014 ;//0x0675  0x0627 ;
  keymap[gac('a')] = 0x06BE ;
  keymap[gac('B')] = 0x0628 ;
  keymap[gac('b')] = 0x0628 ;
  keymap[gac('C')] = 0x0639 ; // 0x0643 ;
  keymap[gac('c')] = 0x0639 ; // 0x0643 ;
  keymap[gac('D')] = 0x062F ;
  keymap[gac('d')] = 0x062F ;
  keymap[gac('E')] = 0x06D5 ;
  keymap[gac('e')] = 0x0621 ;
  keymap[gac('F')] = 0x0641 ;
  keymap[gac('f')] = 0x0627 ;
  keymap[gac('G')] = 0x06AF ;
  keymap[gac('g')] = 0x06D5 ;
  keymap[gac('H')] = 0x062D ; // 0x06BE ;
  keymap[gac('h')] = 0x0649 ; // 0x06BE ;
  keymap[gac('I')] = 0x06AD ; //0x0678 0x0649 ;
  keymap[gac('i')] = 0x06AD ;
  keymap[gac('J')] = 0x062C ;
  keymap[gac('j')] = 0x0642 ;
  keymap[gac('K')] = 0x06C6 ;//0x0643 ;
  keymap[gac('k')] = 0x0643 ;
  keymap[gac('L')] = 0x0644 ;
  keymap[gac('l')] = 0x0644 ;
  keymap[gac('M')] = 0x0645 ;
  keymap[gac('m')] = 0x0645 ;
  keymap[gac('N')] = 0x0646 ; // 0x0646 ;
  keymap[gac('n')] = 0x0646 ;
  keymap[gac('O')] = 0x0648 ; //0x0676 0x0648 ;
  keymap[gac('o')] = 0x0648 ;
  keymap[gac('P')] = 0x067E ;
  keymap[gac('p')] = 0x067E ;
  keymap[gac('Q')] = 0x0686 ; // 0x0642 ;
  keymap[gac('q')] = 0x0686 ; // 0x0642 ;
  keymap[gac('R')] = 0x0631 ;
  keymap[gac('r')] = 0x0631 ;
  keymap[gac('S')] = 0x0633 ;
  keymap[gac('s')] = 0x0633 ;
  keymap[gac('T')] = 0x062A ;
  keymap[gac('t')] = 0x062A ;
  keymap[gac('U')] = 0x06C7 ; //0x0677 0x06C7 ;
  keymap[gac('u')] = 0x06C7 ; // 0x06CB ;
  keymap[gac('V')] = 0x06C6 ; // 0x06CB ;
  keymap[gac('v')] = 0x06C6 ; // 0x06CB ;
  keymap[gac('W')] = 0x06CB ;
  keymap[gac('w')] = 0x06CB ;
  keymap[gac('X')] = 0x0634 ; // 0x062E ;
  keymap[gac('x')] = 0x0634 ; // 0x062E ;
  keymap[gac('Y')] = 0x064A ;
  keymap[gac('y')] = 0x064A ;
  keymap[gac('Z')] = 0x0632 ;
  keymap[gac('z')] = 0x0632 ;

  // punctuation marks
  keymap [ gac ( ';' ) ] = 0x061B ;
  keymap [ gac ( '?' ) ] = 0x061F ;
  keymap [ gac ( ',' ) ] = 0x060C ;

  // adapt parens, brackets, and braces for right-to-left typing
  keymap [ gac ( '<' ) ] = gac ( '»' ) ;
  keymap [ gac ( '>' ) ] = gac ( '«' ) ;
  keymap [ gac ( '{' ) ] = gac ( '}' ) ;
  keymap [ gac ( '}' ) ] = gac ( '{' ) ;
  keymap [ gac ( '[' ) ] = gac ( ']' ) ;
  keymap [ gac ( ']' ) ] = gac ( '[' ) ;
  keymap [ gac ( '(' ) ] = gac ( ')' ) ;
  keymap [ gac ( ')' ) ] = gac ( '(' ) ;
}

function initKaz ( ) {
  if ( inited ) {
     return ;
  }
  inited = 1 ;
  for ( i = 0 ; i < keymap.length ; i++ ) {
     keymap[i] = 0 ;
  }
  keymap[gac('A')] =0x0424;
  keymap[gac('a')] = 0x0444;
  keymap[gac('B')] = 0x0418 ;
  keymap[gac('b')] = 0x0438 ;
  keymap[gac('C')] = 0x0421;
  keymap[gac('c')] = 0x0441;
  keymap[gac('D')] = 0x412;
  keymap[gac('d')] = 0x0432;
  keymap[gac('E')] = 0x423;
  keymap[gac('e')] = 0x0443;
  keymap[gac('F')] = 0x0410;
  keymap[gac('f')] = 0x0430;
  keymap[gac('G')] = 0x041F;
  keymap[gac('g')] = 0x043F;
  keymap[gac('H')] = 0x0420;
  keymap[gac('h')] = 0x0440;
  keymap[gac('I')] = 0x0428;
  keymap[gac('i')] = 0x0448;
  keymap[gac('J')] = 0x041E;
  keymap[gac('j')] = 0x043E;
  keymap[gac('K')] = 0x041B;
  keymap[gac('k')] = 0x043B;
  keymap[gac('L')] = 0x0414;
  keymap[gac('l')] = 0x434;
  keymap[gac('M')] = 0x42C;
  keymap[gac('m')] = 0x044C;
  keymap[gac('N')] = 0x0422;
  keymap[gac('n')] = 0x0442;
  keymap[gac('O')] = 0x0429;
  keymap[gac('o')] = 0x0449;
  keymap[gac('P')] = 0x0417;
  keymap[gac('p')] = 0x0437;
  keymap[gac('Q')] = 0x0419;
  keymap[gac('q')] = 0x0439;
  keymap[gac('R')] = 0x041A;
  keymap[gac('r')] = 0x043A;
  keymap[gac('S')] = 0x042B;
  keymap[gac('s')] = 0x044B;
  keymap[gac('T')] = 0x0415;
  keymap[gac('t')] = 0x0435;
  keymap[gac('U')] = 0x0413;
  keymap[gac('u')] = 0x0433;
  keymap[gac('V')] = 0x041C;
  keymap[gac('v')] = 0x043C;
  keymap[gac('W')] = 0x0426;
  keymap[gac('w')] = 0x0446;
  keymap[gac('X')] = 0x0427;
  keymap[gac('x')] = 0x0447;
  keymap[gac('Y')] = 0x041D;
  keymap[gac('y')] = 0x043D;
  keymap[gac('Z')] = 0x042F;
  keymap[gac('z')] = 0x044F;

  // adapt parens, brackets, and braces for right-to-left typing
  keymap [ gac ( '<' ) ] = gac ( '»' ) ;
  keymap [ gac ( '>' ) ] = gac ( '«' ) ;
  keymap [ gac ( '{' ) ] = gac ( '}' ) ;
  keymap [ gac ( '}' ) ] = gac ( '{' ) ;
  keymap [ gac ( '[' ) ] = gac ( ']' ) ;
  keymap [ gac ( ']' ) ] = gac ( '[' ) ;
  keymap [ gac ( '(' ) ] = gac ( ')' ) ;
  keymap [ gac ( ')' ) ] = gac ( '(' ) ;
  keymap [ gac ( ',' ) ] = 0x0431 ;
  keymap [ gac ( '<' ) ] = 0x0411;
  keymap [ gac ( '.' ) ] = 0x044E;
  keymap [ gac ( '>' ) ] = 0x042E;
  keymap [ gac ( '/' ) ] = 0x0451;
  keymap [ gac ( ';' ) ] = 0x0436;
  keymap [ gac ( ':' ) ] = 0x0416;
  keymap [ 0x0027 ] = 0x044D;
  keymap [ 0x201C ] = 0x042D;
  keymap [ gac ( '[' ) ] = 0x0445;
  keymap [ gac ( '{' ) ] = 0x0425;
  keymap [ gac ( ']' ) ] =0x044A;
  keymap [ gac ( '}' ) ] = 0x042A;

  keymap [ gac ( '`' ) ] = 0x0028;
  keymap [ gac ( '~' ) ] = 0x0029;
  keymap [ gac ( '1' ) ] = 0x0022;
  keymap [ gac ( '!' ) ] = 0x0021;
  keymap [ gac ( '2' ) ] = 0x04D9;
  keymap [ gac ( '@' ) ] = 0x04D8;
  keymap [ gac ( '3' ) ] = 0x0456;
  keymap [ gac ( '#' ) ] = 0x0406;
  keymap [ gac ( '4' ) ] = 0x04A3;
  keymap [ gac ( '$' ) ] = 0x04A2;
  keymap [ gac ( '5' ) ] = 0x0493;
  keymap [ gac ( '%' ) ] = 0x0492;
  keymap [ gac ( '6' ) ] = 0x042C;
  keymap [ gac ( '^' ) ] = 0x043A;
  keymap [ gac ( '7' ) ] = 0x002E;
  keymap [ gac ( '&' ) ] = 0x003B;
  keymap [ gac ( '8' ) ] = 0x04AF;
  keymap [ gac ( '*' ) ] = 0x04AE;
  keymap [ gac ( '9' ) ] = 0x04B1;
  keymap [ gac ( '(' ) ] = 0x04B0;
  keymap [ gac ( '0' ) ] = 0x049B;
  keymap [ gac ( ')' ) ] = 0x049A;
  keymap [ gac ( '-' ) ] = 0x04E9;
  keymap [ gac ( '_' ) ] = 0x04E8;
  keymap [ gac ( '=' ) ] = 0x04BB;
  keymap [ gac ( '+' ) ] = 0x04BA;
}

function ToKkSoft( tmp ){
	var str1 = "" ;
	for( var i=0;i<tmp.length;i++ ){
		ch = tmp.charAt(i) ;
		switch( ch )
		{
			case '\u06D5':
			case '\u0629':
				str1 += '\u06D5' ;
				break ;
			case '\u0643':
			case '\u06A9':
				str1 += '\u0643' ;
				break ;
			case '\u06AD':
			case '\u062B':
				str1 += '\u06AD' ;
				break ;
			case '\u06CB':
			case '\u0624':
				str1 += '\u06CB' ;
				break ;
			case '\u06C7':
			case '\u0630':
				str1 += '\u06C7' ;
				break ;
			case '\u06BE':
			case '\u0647':
				str1 += '\u06BE' ;
				break ;
			case '\u0649':
			case '\u0626':
				str1 += '\u0649' ;
				break ;
			default :
				str1 += ch ;
				break ;
		}
	}
	return str1 ;
}

// attach event handlers to textareas and textfields
function attachEvents ( )
{    
   if ( typeof(attachAll)=="undefined" || attachAll == null ) {
       attachAll = false ;
   }
   if ( typeof(kzEdits) != "undefined" && kzEdits && kzEdits.length != 0 ) {
      allowed_names = kzEdits.split ( ':' ) ;
   } else {
      allowed_names = null ;
   }    
   if ( typeof(noKzEdits) != "undefined" && noKzEdits && noKzEdits.length != 0 ) {
      denied_names = noKzEdits.split ( ':' ) ;
   } else {
      denied_names = null ;
   }      
       
   var tas = document.getElementsByTagName("TEXTAREA") ; // textareas
   var tfs = document.getElementsByTagName("INPUT") ; // input fields
     
   for ( i = 0 ; i < tas.length ; i++ ) {
     // if object already has a onKeyPress event handler, we don't attach another.
     if ( tas[i].onkeypress != null ) {
        continue ;
     }

     if ( ! shouldAttach(tas[i].name) ) { // we should not attach keypress event to this object
        continue ;
     }

     if ( isIE ) {
        tas[i].attachEvent ( 'onkeypress', nAddKzChar ) ;
     } else if ( isGecko ) {
        tas[i].addEventListener ( 'keypress', nAddKzChar, false ) ;
     }
   }

   for ( i = 0 ; i < tfs.length ; i++ ) {
     ttype = tfs[i].type.toLowerCase() ;
     if ( ttype == "text" ) {

       // if object already has a onKeyPress event handler, we don't attach another.
       if ( tfs[i].onkeypress != null ) {
          continue ;
       }

       if ( ! shouldAttach(tfs[i].name) ) { // we should not attach keypress event to this object
          continue ;
       }

       if ( isIE ) {
          tfs[i].attachEvent ( 'onkeypress', nAddKzChar ) ;
       } else if ( isGecko ) {
          tfs[i].addEventListener ( 'keypress', nAddKzChar, false ) ;
       }
     }
   }
}


// we want to use onLoad event to trigger addEvents function. But in case an onLoad event handler
// has already been registered, we also want to execute that handler.
old_onLoad = null ;
add_onLoad() ;
function add_onLoad ( )
{
   old_onLoad = window.onload;
   window.onload = new_onLoad ;
}

function new_onLoad ( )
{
   attachEvents() ;
   if ( old_onLoad ) {
      odd_onLoad() ;
   }
}

function shouldAttach ( name )
{
   if ( attachAll == true ) {
      if ( denied_names == null ) {
         return true ;
      }

      for ( j = 0 ; j < denied_names.length ; j++ ) {
         if ( name == denied_names[j] ) {
            return false ;
         }
      }

      return true ;
   } else { // global attach is disabled, only attach those that are specified
      if ( allowed_names == null ) {
         return false ;
      }

      for ( j = 0 ; j < allowed_names.length ; j++ ) {
         if ( name == allowed_names[j] ) {
            return true ;
         }
      }

      return false ;
   }
}
var KazKK = false;
function addKzChar(content, event) 
{KazKK = false; inited = 0;
    return nAddKzChar(event) ;
}

function addKazChar(content, event) 
{
    KazKK = true;  inited = 0; 
    return nAddKzChar(event) ;
}

// nAddKzChar
function nAddKzChar(event)
{
   if ( !event ) {
      event = window.event ;
      if(isGecko){
        event = event;
        }
        else{
        event = window.event;
        }
   }

   var content ;

   if ( event.srcElement ) {
     content = event.srcElement ;
   } else if ( event.target ) {
     content = event.target ;
   }

   var key ;
   var itoggle = false;  // change ime for Kazakh or English
   var dirtoggle = false ;

   if ( !inited ) { if(KazKK){initKaz();} else init(); }

   if ( isIE ) {
     key = event.keyCode ;   //event.shiftKey  
     if ( event.ctrlKey ) { 
        if ( isMaxthon && key == 2 ) { // for Maxthon browser: Ctrl-B toggles imode
           qmode = 1; imode =1;
        }
        if ( key == 13 || key == 11 ) { // Ctrl+K or Ctrl+M pressed, toggle input mode
           itoggle = true ;
    }
    else if ( event.shiftKey && (key == 13 || key == 11) ) { // Ctrl+K or Ctrl+M pressed, toggle input mode
           itoggle = true ;
    }else if ( key == 20 ) { // control-T, toggle direction 
           dirtoggle = true ;
        }
     }
   } else { // assuming Gecko
     key = event.which ;
     if ( event.ctrlKey ) {qmode = qmode ? 0:1; imode =imode?0:1; // is opera press Ctrl toggle
        if ( key == 107 || key == 105 || key == 13 || key == 11) { // Ctrl+K Ctrl+Q pressed, toggle
           itoggle = true ;//alert(key + " " + itoggle);
 } if ( key == 116 ) { // control-T, toggle direction 
           dirtoggle = true ;
        } else { // enable default handling other keys for Mozilla/FireFox
          event.returnValue = true ;
          return true ;
        }
      }
   }

   if ( itoggle ) {
      imode = 1 - imode 
      if ( isGecko ) {
         event.preventDefault() ;
      }
      event.returnValue = false ;
      return false ;
   } else if ( dirtoggle ) {
      if ( content.style.direction == "rtl" ) {
         content.style.direction = "ltr" ;
      } else if ( content.style.direction == "ltr" ) {
         content.style.direction = "rtl" ;
      } else { // if nothing is defined, set it to left-to-right on toggle 
         content.style.direction = "ltr" ;
      }
      if ( isGecko ) {
         event.preventDefault() ;
      }
      event.returnValue = false ;
      return false ;
   }     

   if ( imode == 0 && ( keymap[key] != 0 || key == gac ('"') ) ) {
      if ( isIE ) {
         if ( key == gac ( '"' ) ) { if(!KazKK){
            if ( qmode == 0 ) { // opening quote
               event.keyCode = OQUOTE
            } else { // closing quote
               event.keyCode = CQUOTE
            }} else { event.keyCode = 0x042D; }
            qmode = 1 - qmode ; // toggle quote mode
         } else {
            event.keyCode = keymap[key] ;
         }
      } else if ( isGecko ) {
         var input ;
         // we cannot modify event.which in Mozilla/FireFox, have to do something more interesting
         if ( key == gac ( '"' )  ) {
            if ( qmode == 0 ) { // opening quote
               input = OQUOTE
            } else { // closing quote
               input = CQUOTE
            }
            qmode = 1 - qmode ; // toggle quote mode
         } else {
            input = keymap[ key ] ; 
         }

         var selstart = content.selectionStart ;
         var selend   = content.selectionEnd ;
         var insStr = String.fromCharCode ( input ) ; 
         content.value = content.value.substring (0, selstart) + insStr + content.value.substr ( selend ) ;
         content.setSelectionRange(selstart + insStr.length, selstart + insStr.length );

         if ( isGecko ) {
            event.preventDefault() ;
         }

         event.returnValue = false ;
         return false ;
      }
   } 
	
   event.returnValue = true ;
   return true ;
}

function ascii(key){ return key.charCodeAt(); }
function KazKyrylWrite(event)
{
    var kazObj = this ;
    if(isGecko){
    if ( event.srcElement ) {
         kazObj = event.srcElement ;
    } else if ( event.target ) {
         kazObj = event.target ;
    }}
	var kazEvent, keyCode;
    if(isGecko){
        kazEvent = event;
        keyCode = kazEvent.which;        
    }
    else{
        kazEvent = window.event;
        keyCode = kazEvent.keyCode;
    }
	switch(keyCode)
	{
		case ascii('a'):keyCode = 0x0444;break;
		case ascii('A'):keyCode = 0x0424;break;
		case ascii('b'):keyCode = 0x0438;break;
		case ascii('B'):keyCode = 0x0418;break;
		case ascii('c'):keyCode = 0x0441;break;
		case ascii('C'):keyCode = 0x0421;break;
		case ascii('d'):keyCode = 0x0432;break;
		case ascii('D'):keyCode = 0x0412;break;
		case ascii('e'):keyCode = 0x0443;break;
		case ascii('E'):keyCode = 0x0423;break;
		case ascii('f'):keyCode = 0x0430;break;
		case ascii('F'):keyCode = 0x0410;break;
		case ascii('g'):keyCode = 0x043F;break;
		case ascii('G'):keyCode = 0x041F;break;
		case ascii('h'):keyCode = 0x0440;break;
		case ascii('H'):keyCode = 0x0420;break;
		case ascii('i'):keyCode = 0x0448;break;
		case ascii('I'):keyCode = 0x0428;break;
		case ascii('j'):keyCode = 0x043E;break;
		case ascii('J'):keyCode = 0x041E;break;
		case ascii('k'):keyCode = 0x043B;break;
		case ascii('K'):keyCode = 0x041B;break;
		case ascii('l'):keyCode = 0x0434;break;
		case ascii('L'):keyCode = 0x0414;break;
		case ascii('m'):keyCode = 0x044C;break;
		case ascii('M'):keyCode = 0x042C;break;
		case ascii('n'):keyCode = 0x0442;break;
		case ascii('N'):keyCode = 0x0422;break;
		case ascii('o'):keyCode = 0x0449;break;
		case ascii('O'):keyCode = 0x0429;break;
		case ascii('p'):keyCode = 0x0437;break;
		case ascii('P'):keyCode = 0x0417;break;
		case ascii('q'):keyCode = 0x0439;break;
		case ascii('Q'):keyCode = 0x0419;break;
		case ascii('r'):keyCode = 0x043A;break;
		case ascii('R'):keyCode = 0x041A;break;
		case ascii('s'):keyCode = 0x044B;break;
		case ascii('S'):keyCode = 0x042B;break;
		case ascii('t'):keyCode = 0x0435;break;
		case ascii('T'):keyCode = 0x0415;break;
		case ascii('u'):keyCode = 0x0433;break;
		case ascii('U'):keyCode = 0x0413;break;
		case ascii('v'):keyCode = 0x043C;break;
		case ascii('V'):keyCode = 0x041C;break;
		case ascii('w'):keyCode = 0x0446;break;
		case ascii('W'):keyCode = 0x0426;break;
		case ascii('x'):keyCode = 0x0447;break;
		case ascii('X'):keyCode = 0x0427;break;
		case ascii('y'):keyCode = 0x043D;break;
		case ascii('Y'):keyCode = 0x041D;break;
		case ascii('z'):keyCode = 0x044F;break;
		case ascii('Z'):keyCode = 0x042F;break;

		case ascii(','):keyCode = 0x0431;break;
		case ascii('<'):keyCode = 0x0411;break;
		case ascii('.'):keyCode = 0x044E;break;
		case ascii('>'):keyCode = 0x042E;break;
		case ascii('/'):keyCode = 0x0451;break;
		//case ascii('?'):keyCode = 0x042F;break;
		case ascii(';'):keyCode = 0x0436;break;
		case ascii(':'):keyCode = 0x0416;break;
		case 0x0027:keyCode = 0x044D;break;
		case ascii('"'):keyCode = 0x042D;break;
		case ascii('['):keyCode = 0x0445;break;
		case ascii('{'):keyCode = 0x0425;break;
		case ascii(']'):keyCode = 0x044A;break;
		case ascii('}'):keyCode = 0x042A;break;
		
		case ascii('`'):keyCode = 0x0028;break;
		case ascii('~'):keyCode = 0x0029;break;
		case ascii('1'):keyCode = 0x0022;break;		
		case ascii('!'):keyCode = 0x0021;break;		
		case ascii('2'):keyCode = 0x04D9;break;		
		case ascii('@'):keyCode = 0x04D8;break;		
		case ascii('3'):keyCode = 0x0456;break;		
		case ascii('#'):keyCode = 0x0406;break;		
		case ascii('4'):keyCode = 0x04A3;break;		
		case ascii('$'):keyCode = 0x04A2;break;		
		case ascii('5'):keyCode = 0x0493;break;		
		case ascii('%'):keyCode = 0x0492;break;		
		case ascii('6'):keyCode = 0x002C;break;		
		case ascii('^'):keyCode = 0x003A;break;		
		case ascii('7'):keyCode = 0x002E;break;		
		case ascii('&'):keyCode = 0x003B;break;		
		case ascii('8'):keyCode = 0x04AF;break;		
		case ascii('*'):keyCode = 0x04AE;break;		
		case ascii('9'):keyCode = 0x04B1;break;		
		case ascii('('):keyCode = 0x04B0;break;		
		case ascii('0'):keyCode = 0x049B;break;		
		case ascii(')'):keyCode = 0x049A;break;		
		case ascii('-'):keyCode = 0x04E9;break;		
		case ascii('_'):keyCode = 0x04E8;break;		
		case ascii('='):keyCode = 0x04BB;break;		
		case ascii('+'):keyCode = 0x04BA;break;						
		
		default:keyCode = window.event.keyCode;break;
	}	
	if (keyCode!=0 && !kazEvent.ctrlKey){
        if (isIE || isMaxthon){
            window.event.keyCode = keyCode;    
        }
        else if(isGecko){
            var selstart = kazObj.selectionStart ;
            var selend   = kazObj.selectionEnd ;
            var insStr = String.fromCharCode ( keyCode ) ;
            kazObj.value = kazObj.value.substring (0, selstart) + insStr + kazObj.value.substr ( selend ) ;
            kazObj.setSelectionRange(selstart + insStr.length, selstart + insStr.length );
            event.preventDefault() ;
            return false; 
        }
      }	
}
/************************************سالەم مەنىڭ قازاعىم-قازاقسوفت تورابى*************************************************/

