var load_process=0;

var windows_1251_table = '                                  !"#$%&\'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~__\'_":++_%_<_____\'\'""--_T_>____ Ўў_¤_¦§ЁcЄ<¬-RЇ°+___¶¶·ё№є>___їАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя';

function dectohex(value)
{
var str="";
var mask;
for (var i=0;i<2;i++)
    {
        mask=value&0xF;
         if (mask < 10) str = mask +str; else
            {
            if (mask%10==0) str = "a" +str;
            if (mask%10==1) str = "b" +str;
            if (mask%10==2) str = "c" +str; 
            if (mask%10==3) str = "d" +str; 
            if (mask%10==4) str = "e" +str; 
            if (mask%10==5) str = "f" +str;
            }
    value=value>>4; 
    }
return str;
}

function encode_win1251(s) {
	var result = '';
   	var i=0;	
	var re = /[0-9a-f\n \/]/i;
        while(ch = s.substr(i++,1)) {
             if (re.exec(ch)){
                if (ch == "\n"){
		  result+="%0A";
                }else if (ch == " "){
		  result+="+";
                }else if (ch == "/"){
		  result+="/";
                }else{
   		 result += ch;
		}
             }else{
	        var sym_code=windows_1251_table.indexOf(ch);
	        if(sym_code>-1){
  		  var cc = "%"+dectohex(sym_code);
		  result += cc;
		}
             }
	};
	return result;

};

var lastrequest;
var lasttarget;
function spell_handler(request,target) {
  lastrequest=request;
  lasttarget=target;
  return function() {
    if (request.readyState == 4 && request.status == 200) {
      var checkresult = request.responseXML.getElementsByTagName('result')[0];
      target.innerHTML = checkresult.firstChild.nodeValue;
      load_process=0;
    }else {
    }

  }
}

function stop_query(){
     if (load_process==1){
       lastrequest.abort();
       lasttarget.innerHTML = '';
       load_process=0;
     }
}

function spellcheck(text_value,result_name) {
  if (load_process==1) return;
  load_process=1;
 
  var request = false;
  if (window.XMLHttpRequest) {
    try { request = new XMLHttpRequest(); }
    catch (e) {}
  } else if (window.ActiveXObject) {
    try { request = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e) {
      try { request = new AciveXObject("Microsoft.XMLHTTP"); }
      catch (e) {}
    }
  }
  if (request){
    request.open("POST","/cgi-bin/spell/spellxml.pl",true);
    request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    request.onreadystatechange = spell_handler(request,document.getElementById(result_name),result_name,0);

    document.getElementById(result_name).innerHTML="<img src=http://www.liveinternet.ru/images/ajax_loading.gif width=32 height=32 align=left> Подготовка запроса к серверу";
    //sleep(1);
    var coded_text=encode_win1251(text_value);

    document.getElementById(result_name).innerHTML="<img src=http://www.liveinternet.ru/images/ajax_loading.gif width=32 height=32 align=left>Отправлен запрос на проверку правописания, дождитесь ответа";
    setTimeout("stop_query()",30000);
      try { request.send("go=1&text="+coded_text); }
      catch (e) {
	document.getElementById(result_name).innerHTML="Проверка орфографии временно не работает";
	}
    
  }else{
    
  }
}
