//В обрабатывающий скрипт необходимо на выход прописать
//echo "<script>window.parent.".$_GET["dl_calledObject"].".ondone('".addslashes(preg_replace("/[\n\r]+/", "", $sOut))."');</script>";
function Executer(){
	window[this.insName="DL_"+Math.ceil(Math.random()*10000000000).toString()]=this;
	this.l=document.createElement("iframe");
	document.body.appendChild(this.l);
	this.l.style.display = "none";
	this.load = new Function("s","this.l.src=s+'&dl_calledObject='+this.insName;");
	this.ondone = new Function ("s","if(this.onload) this.onload(s, this);");
};
function onExecuteDone(s, oCaller){
	var id = oCaller.id;
	var oTarget = document.getElementById(id);
	oTarget.innerHTML = s;
	oTarget.loaded  = true;
};
function executePHP(id, script){
	var oTarget = document.getElementById(id);
	if (!oTarget){
		return false;
	}
	if (oTarget.style.display=='none'){
		oTarget.style.display='';
		oTarget.innerHTML = "...";
		var sUrl = script;
		var oLoader = new Executer();
		oLoader.id = id;
		oLoader.onload = onExecuteDone;
		oLoader.load(sUrl);
	}else{
		oTarget.style.display='none';
	}
};
function executeOwnPHP(id,script){
	var oTarget = document.getElementById(id);
	if (!oTarget){
		return false;
	}
	oTarget.innerHTML = "...";
	var sUrl = script;
	var oLoader = new Executer();
	oLoader.id = id;
	oLoader.onload = onExecuteDone;
	oLoader.load(sUrl);
};
function execute(id, url,while_loading) {
	var goal=document.getElementById(id);
	if (!goal){
		//alert("Object with id '"+id+"' doesn't exist");
		return false;
	}
	if (!while_loading){
		//goal.innerHTML="<span style='color: #FF0000;'>Req...</span>";
		goal.innerHTML="<img src='/themes/default/_img/loader.gif' width='16' height=16>";
	}else if(while_loading!='__empty__'){
		goal.innerHTML=while_loading;
	}
	var request   = false;
	var msxmlhttp = new Array('Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP' );

	if ( window.XMLHttpRequest ) {
		request = new XMLHttpRequest;
	} else if ( window.ActiveXObject ) {
		for ( var i = 0; i < msxmlhttp.length; i ++ ) {
			try {
				request = new ActiveXObject( msxmlhttp[i] );
			} catch ( e ) {
				request = false;
			}
		}
	}
	if ( !request ) {
		alert( 'Can\'t create XMLHTTP instance' );
		return false;
	}
	request.onreadystatechange = function() {
		if ( request.readyState == 4 ) {
			if ( request.status == 200 ) {
				goal.innerHTML=request.responseText;
			} else {
				alert( 'There was a problem with the request :(' );
			}
		}
	}
	//request.open( 'GET', url, true );
	var q_pos=url.indexOf('?');
	var q_data=(q_pos!=-1?url.substr(q_pos+1):'');
	var u_path=(q_pos!=-1?url.substr(0,q_pos):url);
	request.open( 'POST', u_path, true );
	request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	request.send(q_data);
	//request.send( null );
};
function execute_with_hiding(id,url){
	var resObj=document.getElementById(id);
	if (resObj){
		if (resObj.style.display=='none'){
			resObj.style.display='';
			execute(id,url);
		}else{
			resObj.style.display='none';
		}
	}
}
function showPRMaps(id, script){
	var oTarget = document.getElementById('prmap'+id);
	if (!oTarget){
		return false;
	}
	if (oTarget.style.display=='none'){
		oTarget.style.display='';
		var sUrl = script;
		var oLoader = new Executer();
		oLoader.id = 'prmap'+id;
		//oLoader.onload = onExecuteDone;
		oLoader.load(sUrl);
	}else{
		oTarget.style.display='none';
	}
};
function enlargeObj(id,size){
	var oDist=document.getElementById(id);
	if (oDist){
		var currentSize=new Number(oDist.style.height.substr(0,oDist.style.height.length-2));
		var newSize=currentSize+size;
		oDist.style.height=newSize+'px';
		return true;
	}
	return false;
};
function reduceObj(id,size){
	var oDist=document.getElementById(id);
	if (oDist){
		var currentSize=new Number(oDist.style.height.substr(0,oDist.style.height.length-2));
		if (currentSize<size)
		return false;
		var newSize=currentSize-size;
		oDist.style.height=newSize+'px';
		return true;
	}
	return false;
};
function showhideObj(id){
	var oDist=document.getElementById(id);
	if (oDist){
		if (oDist.style.display=='none')
		oDist.style.display='';
		else
		oDist.style.display='none';
	}
};
function plus(id,value){
	var obj=document.getElementById(id);
	if (obj){
		var val=new Number(obj.value);
		if (val+value>=0){
			obj.value=val+value;
		}
	}else{
		return false;
	}
};
function checkall_common(form,state,common){
	var elms=form.elements;
	for (i=0;i<elms.length;i++){
		if (elms[i].type=='checkbox' && (common=='' || elms[i].name.indexOf(common)!=-1)){
			elms[i].checked=state;
		}
	}
};
function valid_email(mail){
	preg_email=/^[a-zA-Z0-9_]+[-a-zA-Z0-9_\.]*@[a-zA-Z0-9]+[-a-zA-Z0-9_\.]*\.[a-zA-Z]+$/;
	if (mail.match(preg_email)){
		return true;
	}else{
		return false;
	}
};
function showhideHelp(){
	var help=document.getElementById('more_help');
	var helper=document.getElementById('more_helper');
	if (help.style.display==''){
		help.style.display='none';
		helper.innerHTML='подробнее';
	}else{
		help.style.display='';
		helper.innerHTML='скрыть';
	}
};

function submitter(formObjToSubmit){
	if (!formObjToSubmit){
		return '';
	}
	var submit_elms=formObjToSubmit.elements;
	var ret='';
	for (i=0;i<submit_elms.length;i++){
		if (submit_elms[i].type=='button'){
			continue;
		}
		if (submit_elms[i].type=='checkbox' && !submit_elms[i].checked){
			continue;
		}
		ret+='&'+URLEncode(submit_elms[i].name)+'='+URLEncode(submit_elms[i].value);
	}
	if (ret==''){
		return '';
	}
	return ret.substr(1);
};

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++){
	trans[i] = i - 0x350; // А-Яа-я
}
trans[0x401] = 0xA8;    // Ё
trans[0x451] = 0xB8;    // ё

function URLEncode(str){
  var ret = [];
  // Составляем массив кодов символов, попутно переводим кириллицу
  for (var i = 0; i < str.length; i++)
  {
    var n = str.charCodeAt(i);
    if (typeof trans[n] != 'undefined')
      n = trans[n];
    if (n <= 0xFF)
      ret.push(n);
  }
  return escape(String.fromCharCode.apply(null, ret));

};
function rand_num(){
	return Math.ceil(Math.random()*10000000000).toString();
}