function JsHttpRequest(){var i=this;i.onreadystatechange=null;i.readyState=0;i.responseText=null;i.responseXML=null;i.status=200;i.statusText="OK";i.responseJS=null;i.caching=false;i.loader=null;i.session_name="PHPSESSID";i._0=null;i._1=[];i._3=null;i._5={inv_form_el:"Invalid FORM element detected: name=%, tag=%",must_be_single_el:"If used, <form> must be a single HTML element in the list.",js_invalid:"JavaScript code generated by backend is invalid!\n%",url_too_long:"Cannot use so long query with GET request (URL is larger than % bytes)",unk_loader:"Unknown loader: %",no_loaders:"No loaders registered at all, please check JsHttpRequest.LOADERS array",no_loader_matched:"Cannot find a loader which may process the request. Notices are:\n%",no_headers:"Method setRequestHeader() cannot work together with the % loader."};i.abort=function(){with(this){if(_0&&_0.abort){_0.abort()}_6();if(readyState==0){return}if(readyState==1&&!_0){readyState=0;return}_4(4,true)}};i.open=function(a,b,c,f,d){with(this){try{if(document.location.search.match(new RegExp("[&?]"+session_name+"=([^&?]*)"))||document.cookie.match(new RegExp("(?:;|^)\\s*"+session_name+"=([^;]*)"))){b+=(b.indexOf("?")>=0?"&":"?")+session_name+"="+this.escape(RegExp.$1)}}catch(e){}_3={method:(a||"").toUpperCase(),url:b,asyncFlag:c,username:f!=null?f:"",password:d!=null?d:""};_0=null;_4(1,true);return true}};i.send=function(a){if(!this.readyState){return}this._4(1,true);this._0=null;var b=[];var c=[];if(!this._7(a,null,b,c)){return}var f=null;if(this.caching&&!c.length){f=this._3.username+":"+this._3.password+"@"+this._3.url+"|"+b+"#"+this._3.method;var d=JsHttpRequest.CACHE[f];if(d){this._8(d[0],d[1]);return false}}var j=(this.loader||"").toLowerCase();if(j&&!JsHttpRequest.LOADERS[j]){return this._2("unk_loader",j)}var k=[];var g=JsHttpRequest.LOADERS;for(var l in g){var h=g[l].loader;if(!h){continue}if(j&&l!=j){continue}var m=new h(this);JsHttpRequest.extend(m,this._3);JsHttpRequest.extend(m,{queryText:b.join("&"),queryElem:c,id:(new Date().getTime())+""+JsHttpRequest.COUNT++,hash:f,span:null});var n=m.load();if(!n){this._0=m;JsHttpRequest.PENDING[m.id]=this;return true}if(!j){k[k.length]="- "+l.toUpperCase()+": "+this._9(n)}else{return this._2(n)}}return l?this._2("no_loader_matched",k.join("\n")):this._2("no_loaders")};i.getAllResponseHeaders=function(){with(this){return _0&&_0.getAllResponseHeaders?_0.getAllResponseHeaders():[]}};i.getResponseHeader=function(a){with(this){return _0&&_0.getResponseHeader?_0.getResponseHeader():[]}};i.setRequestHeader=function(a,b){with(this){_1[_1.length]=[a,b]}};i._8=function(a,b){with(this){if(caching&&_0){JsHttpRequest.CACHE[_0.hash]=[a,b]}if(a!==null||b!==null){status=4;responseText=responseXML=a;responseJS=b}else{status=500;responseText=responseXML=responseJS=null}_4(2);_4(3);_4(4);_6()}};i._9=function(a){var b=0,c=0,f=this._5[a[0]];while((c=f.indexOf("%",c))>=0){var d=a[++b]+"";f=f.substring(0,c)+d+f.substring(c+1,f.length);c+=1+d.length}return f};i._2=function(a){a=this._9(typeof(a)=="string"?arguments:a);a="JsHttpRequest: "+a;if(!window.Error){throw a;}else{if((new Error(1,"test")).description=="test"){throw new Error(1,a);}else{throw new Error(a);}}};i._7=function(a,b,c,f){if(b==null){b=""}if(a instanceof Object){var d=false;for(var j in a){var k=a[j];if(k instanceof Function){continue}var g=b?b+"["+this.escape(j)+"]":this.escape(j);var l=k&&k.parentNode&&k.parentNode.appendChild&&k.tagName;if(l){var h=k.tagName.toUpperCase();if(h=="FORM"){d=true}else{if(h=="INPUT"||h=="TEXTAREA"||h=="SELECT"){}else{return this._2("inv_form_el",(e.name||""),e.tagName)}}f[f.length]={name:g,e:k}}else{if(k instanceof Object){this._7(k,g,c,f)}else{if(k===null){continue}c[c.length]=g+"="+this.escape(""+k)}}if(d&&f.length>1){return this._2("must_be_single_el")}}}else{c[c.length]=a}return true};i._6=function(){var a=this._0;if(!a){return}JsHttpRequest.PENDING[a.id]=false;var b=a.span;if(!b){return}a.span=null;var c=function(){b.parentNode.removeChild(b)};JsHttpRequest.setTimeout(c,50)};i._4=function(a,b){with(this){if(b){status=statusText=responseJS=null;responseText=""}readyState=a;if(onreadystatechange){onreadystatechange()}}};i.escape=function(a){return escape(a).replace(new RegExp("\\+","g"),"%2B")}}JsHttpRequest.COUNT=0;JsHttpRequest.MAX_URL_LEN=2000;JsHttpRequest.CACHE={};JsHttpRequest.PENDING={};JsHttpRequest.LOADERS={};JsHttpRequest._b=function(){};JsHttpRequest.TIMEOUTS={s:window.setTimeout,c:window.clearTimeout};JsHttpRequest.setTimeout=function(a,b){window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.s;if(typeof(a)=="string"){c=window.JsHttpRequest_tmp(a,b)}else{var c=null;var f=function(){a();delete JsHttpRequest.TIMEOUTS[c]};c=window.JsHttpRequest_tmp(f,b);JsHttpRequest.TIMEOUTS[c]=f}window.JsHttpRequest_tmp=null;return c};JsHttpRequest.clearTimeout=function(a){window.JsHttpRequest_tmp=JsHttpRequest.TIMEOUTS.c;delete JsHttpRequest.TIMEOUTS[a];var b=window.JsHttpRequest_tmp(a);window.JsHttpRequest_tmp=null;return b};JsHttpRequest.query=function(a,b,c,f){var d=new this();d.caching=!f;d.onreadystatechange=function(){if(d.readyState==4){c(d.responseJS,d.responseText)}};var j=null;if(a.match(/^((\w+)\.)?(GET|POST)\s+(.*)/i)){d.loader=RegExp.$2?RegExp.$2:null;j=RegExp.$3;a=RegExp.$4}d.open(j,a,true);d.send(b)};JsHttpRequest.dataReady=function(a){var b=this.PENDING[a.id];delete this.PENDING[a.id];if(b){b._8(a.text,a.js)}else{if(b!==false){throw"dataReady(): unknown pending id: "+a.id;}}};JsHttpRequest.extend=function(a,b){for(var c in b){a[c]=b[c]}};JsHttpRequest.LOADERS.xml={loader:function(d){JsHttpRequest.extend(d._5,{xml_no:"Cannot use XMLHttpRequest or ActiveX loader: not supported",xml_no_diffdom:"Cannot use XMLHttpRequest to load data from different domain %",xml_no_headers:"Cannot use XMLHttpRequest loader or ActiveX loader, POST method: headers setting is not supported, needed to work with encodings correctly",xml_no_form_upl:"Cannot use XMLHttpRequest loader: direct form elements using and uploading are not implemented"});this.load=function(){if(this.queryElem.length){return["xml_no_form_upl"]}if(this.url.match(new RegExp("^([a-z]+)://([^\\/]+)(.*)","i"))){if(RegExp.$2.toLowerCase()==document.location.hostname.toLowerCase()){this.url=RegExp.$3}else{return["xml_no_diffdom",RegExp.$2]}}var a=null;if(window.XMLHttpRequest){try{a=new XMLHttpRequest()}catch(e){}}else{if(window.ActiveXObject){try{a=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}if(!a){try{a=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){}}}}if(!a){return["xml_no"]}var b=window.ActiveXObject||a.setRequestHeader;if(!this.method){this.method=b?"POST":"GET"}if(this.method=="GET"){if(this.queryText){this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText}this.queryText="";if(this.url.length>JsHttpRequest.MAX_URL_LEN){return["url_too_long",JsHttpRequest.MAX_URL_LEN]}}else{if(this.method=="POST"&&!b){return["xml_no_headers"]}}this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+(d.caching?"0":this.id)+"-xml";var c=this.id;a.onreadystatechange=function(){if(a.readyState!=4){return}a.onreadystatechange=JsHttpRequest._b;d.status=null;try{d.status=a.status;d.responseText=a.responseText}catch(e){}if(!d.status){return}try{eval("JsHttpRequest._a = function(id) { var d = "+d.responseText+"; d.id = id; JsHttpRequest.dataReady(d); }")}catch(e){return d._2("js_invalid",d.responseText)}JsHttpRequest._a(c);JsHttpRequest._a=null};a.open(this.method,this.url,true,this.username,this.password);if(b){for(var f=0;f<d._1.length;f++){a.setRequestHeader(d._1[f][0],d._1[f][1])}a.setRequestHeader("Content-Type","application/octet-stream")}a.send(this.queryText);this.span=null;this.xr=a;return null};this.getAllResponseHeaders=function(){return this.xr.getAllResponseHeaders()};this.getResponseHeader=function(a){return this.xr.getResponseHeader(a)};this.abort=function(){this.xr.abort();this.xr=null}}};JsHttpRequest.LOADERS.script={loader:function(j){JsHttpRequest.extend(j._5,{script_only_get:"Cannot use SCRIPT loader: it supports only GET method",script_no_form:"Cannot use SCRIPT loader: direct form elements using and uploading are not implemented"});this.load=function(){if(this.queryText){this.url+=(this.url.indexOf("?")>=0?"&":"?")+this.queryText}this.url+=(this.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+this.id+"-script";this.queryText="";if(!this.method){this.method="GET"}if(this.method!=="GET"){return["script_only_get"]}if(this.queryElem.length){return["script_no_form"]}if(this.url.length>JsHttpRequest.MAX_URL_LEN){return["url_too_long",JsHttpRequest.MAX_URL_LEN]}if(j._1.length){return["no_headers","SCRIPT"]}var a=this,b=document,c=null,f=b.body;if(!window.opera){this.span=c=b.createElement("SCRIPT");var d=function(){c.language="JavaScript";if(c.setAttribute){c.setAttribute("src",a.url)}else{c.src=a.url}f.insertBefore(c,f.lastChild)}}else{this.span=c=b.createElement("SPAN");c.style.display="none";f.insertBefore(c,f.lastChild);c.innerHTML="Workaround for IE.<script></script>";var d=function(){c=c.getElementsByTagName("SCRIPT")[0];c.language="JavaScript";if(c.setAttribute){c.setAttribute("src",a.url)}else{c.src=a.url}}}JsHttpRequest.setTimeout(d,10);return null}}};JsHttpRequest.LOADERS.form={loader:function(r){JsHttpRequest.extend(r._5,{form_el_not_belong:"Element \"%\" does not belong to any form!",form_el_belong_diff:"Element \"%\" belongs to a different form. All elements must belong to the same form!",form_el_inv_enctype:"Attribute \"enctype\" of the form must be \"%\" (for IE), \"%\" given."});this.load=function(){var g=this;if(!g.method){g.method="POST"}g.url+=(g.url.indexOf("?")>=0?"&":"?")+"JsHttpRequest="+g.id+"-form";if(r._1.length){return["no_headers","FORM"]}if(g.method=="GET"){if(g.queryText){g.url+=(g.url.indexOf("?")>=0?"&":"?")+g.queryText}if(g.url.length>JsHttpRequest.MAX_URL_LEN){return["url_too_long",JsHttpRequest.MAX_URL_LEN]}var l=g.url.split("?",2);g.url=l[0];g.queryText=l[1]||""}var h=null;var m=false;if(g.queryElem.length){if(g.queryElem[0].e.tagName.toUpperCase()=="FORM"){h=g.queryElem[0].e;m=true;g.queryElem=[]}else{h=g.queryElem[0].e.form;for(var n=0;n<g.queryElem.length;n++){var i=g.queryElem[n].e;if(!i.form){return["form_el_not_belong",i.name]}if(i.form!=h){return["form_el_belong_diff",i.name]}}}if(g.method=="POST"){var s="multipart/form-data";var t=(h.attributes.encType&&h.attributes.encType.nodeValue)||(h.attributes.enctype&&h.attributes.enctype.value)||h.enctype;if(t!=s){return["form_el_inv_enctype",s,t]}}}var o=h&&(h.ownerDocument||h.document)||document;var q="jshr_i_"+g.id;var p=g.span=o.createElement("DIV");p.style.position="absolute";p.style.visibility="hidden";p.innerHTML=(h?"":"<form"+(g.method=="POST"?" enctype=\"multipart/form-data\" method=\"post\"":"")+"></form>")+"<iframe name=\""+q+"\" id=\""+q+"\" style=\"width:0px; height:0px; overflow:hidden; border:none\"></iframe>";if(!h){h=g.span.firstChild}o.body.insertBefore(p,o.body.lastChild);var u=function(a,b){var c=[];var f=a;if(a.mergeAttributes){var f=o.createElement("form");f.mergeAttributes(a,false)}for(var d=0;d<b.length;d++){var j=b[d][0],k=b[d][1];c[c.length]=[j,f.getAttribute(j)];f.setAttribute(j,k)}if(a.mergeAttributes){a.mergeAttributes(f,false)}return c};var v=function(){top.JsHttpRequestGlobal=JsHttpRequest;var a=[];if(!m){for(var b=0,c=h.elements.length;b<c;b++){a[b]=h.elements[b].name;h.elements[b].name=""}}var f=g.queryText.split("&");for(var b=f.length-1;b>=0;b--){var d=f[b].split("=",2);var j=o.createElement("INPUT");j.type="hidden";j.name=unescape(d[0]);j.value=d[1]!=null?unescape(d[1]):"";h.appendChild(j)}for(var b=0;b<g.queryElem.length;b++){g.queryElem[b].e.name=g.queryElem[b].name}var k=u(h,[["action",g.url],["method",g.method],["onsubmit",null],["target",q]]);h.submit();u(h,k);for(var b=0;b<f.length;b++){h.lastChild.parentNode.removeChild(h.lastChild)}if(!m){for(var b=0,c=h.elements.length;b<c;b++){h.elements[b].name=a[b]}}};JsHttpRequest.setTimeout(v,100);return null}}};
function $(id){ return document.getElementById(id); }


function change_class(e){
 if (e!=null && e.value!='') e.className = 'inp_text';
}

// перерисовка страницы
function reloadPage() {
	document.body.style.display="inline";
	document.body.style.display="block";
}


function books(e,book_id,letter){
	e.value = (e.value);
	
  	var req = new JsHttpRequest();
	req.open(null, '/js/_ajax/book/load_titles.php', true);
	var data = { 'word': e.value, 'book_id': book_id, 'letter': letter};
    	req.send(data);

		req.onreadystatechange = function() {
			//$('debug').innerHTML = req.responseText;
			if (req.readyState == 4) {
			var html = req.responseJS.html;
			$('book').innerHTML = (html != undefined) ? html : '';
			reloadPage();
			}


		}

}


// Функция trim удаляет пробелы
// в начале и в конце строки
function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}


function _key(event)	{

if (event) {
	 var k = event.keyCode;
	 if(k==0) { k=event.charCode; return false; }
	 if(k==37 && event.ctrlKey && $('prev_page'))  {
		   // left
		    if ($('prev_page').href.length>0) location.href = $('prev_page').href;
	 }
	 if(k==39 && event.ctrlKey && $('next_page')) { 
		   // right
		   if ($('next_page').href.length>0) location.href = $('next_page').href;
	 }
}

}
