// JavaScript Document

// Инициализируем таблицу перевода
var trans = [];
for (var i = 0x410; i <= 0x44F; i++)
  trans[i] = i - 0x350; // А-Яа-я
trans[0x401] = 0xA8;    // Ё
trans[0x404] = 0x87;    // Є
trans[0x406] = 0x8B;    // І
trans[0x407] = 0x8D;    // Ї
trans[0x451] = 0xB8;    // ё
trans[0x454] = 0x86;    // є
trans[0x456] = 0x8A;    // і
trans[0x457] = 0x8C;    // ї

// Сохраняем стандартную функцию escape()
/*var escapeOrig = window.escape;

// Переопределяем функцию escape()
window.escape = function(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 escapeOrig(String.fromCharCode.apply(null, ret));
}
*/

myescape = function(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 window.escape(String.fromCharCode.apply(null, ret));
}

function Query2Array(arr) {
	start = (location.search.indexOf("?") == -1) ? 0 : location.search.indexOf("?")+1;
	end = (location.search.indexOf("%23") == -1) ? location.search.length : location.search.indexOf("%23");
	query = location.search.substring(start, end);
	parts = query.split(/&/);
	for(i=0; i<parts.length; i++){
	  pieces = parts[i].split(/=/);
	  arr[pieces[0]] = pieces[1];
	}
}

function replUrl(newList) {
  var _GET = new Array();
  Query2Array(_GET);
  for (i = 0; i < newList.length; i++){	
	qq = newList[i].split(/=/);
	_GET[qq[0]] = qq[1];
  }  
  newsearch = '';
  for(name in _GET) { 
    if ((_GET[name] != '') && (typeof (_GET[name]) != 'undefined'))
	  newsearch = newsearch + '&' + name+'='+_GET[name];
  }
  newsearch = newsearch.replace(/&/,'?');
  location.href = location.pathname+newsearch;
}
  function orderBy_change(v) {
	oo  = "o=" + v;
    replUrl([oo]);
  } 
  function sortBy_change(v) {
	ss  = "s=" + v;
    replUrl([ss]);
  } 
  function ordsort_change(v) {
	oo  = "o=" + document.getElementById('orderBy').value;
    ss = "s=" + document.getElementById('sortBy').value;
    replUrl([oo,ss]);
  } 
  function perp_change(v) {
	pp = "pp=" + v;
	cp = "cp=1";
    replUrl([pp,cp]);
  }
  function srch_click(srch) {
	es="es="+myescape(trim(srch));
  	cp = "cp=1";
	replUrl([es,cp]);	
  }

function str_replace(search, replace, subject) {
  return subject.split(search).join(replace);
}

function intrim( str, charlist ) {   
    // http://kevin.vanzonneveld.net   
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)   
    // +   improved by: mdsjack (http://www.mdsjack.bo.it)   
    // +   improved by: Alexander Ermolaev (http://snippets.dzone.com/user/AlexanderErmolaev)   
    // +      input by: Erkekjetter   
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)   
    // *     example 1: trim('    Kevin van Zonneveld    ');   
    // *     returns 1: 'Kevin van Zonneveld'   
    // *     example 2: trim('Hello World', 'Hdle');   
    // *     returns 2: 'o Wor'   
    charlist = !charlist ? ' \\s\\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1'); 
    var re = new RegExp('^[' + charlist + ']+|[' + charlist + ']+$', 'g');   
    return str.replace(re, '');   
}  

/**
*
*  Javascript trim, ltrim, rtrim
*  http://www.webtoolkit.info/
*	Without the second parameter, they will trim these characters:
*	" " (ASCII 32 (0x20)), an ordinary space.
*	"\t" (ASCII 9 (0x09)), a tab.
*	"\n" (ASCII 10 (0x0A)), a new line (line feed).
*	"\r" (ASCII 13 (0x0D)), a carriage return.
*	"\0" (ASCII 0 (0x00)), the NUL-byte.
*	"\x0B" (ASCII 11 (0x0B)), a vertical tab.
*	
**/
 
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 check_email(strEmail){	
//	var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
//	/^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$/
//	return (pattern.test(strEmail));
//  return (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,7})+$/.test(strEmail));
//  return (/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/.test(strEmail));
  return (/^[0-9a-z_.-]+@[0-9a-z_^\.-]+\.[a-z]{2,7}$/i.test(strEmail));
//      var template = /^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z])+$/;
//    return template.test(strEmail);
//	return strEmail.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
}

function check_date(strDate) {
	var pattern=/^\d{1,2}([-. \/])\d{1,2}\1\d{2,4}$/;
	return (pattern.test(strDate));
  //$is_ok = preg_match('/^\d{1,2}([-. /])\d{1,2}\1\d{2,4}$/', $text);
}

function check_fields(fldlist)
{
	var obj;
	for (i = 0; i < fldlist.length; i++){
	  obj = document.getElementById(fldlist[i]);
	  if (obj != null) {
      	if (trim(obj.value) == '') return false;
	  }
    }
	return true;	
}

function findOnPage(objid){
  obj = document.getElementById(objid);//'eqsearch'
  if (obj != null) findWhat = obj.value;
  if (findWhat != '') {
//	  sIgnore = '[^value="'+findWhat+'"]';
//	  sIgnore = '(?!value=\"'+findWhat+'\")';
//	sIgnore = '(?!\" maxlength)';
//	  alert (eval("/("+findWhat+")"+sIgnore+"/gi"));
//	  sRet = 'value="<span class="srchres">'+findWhat+'</span>"';
//  	document.body.innerHTML = document.body.innerHTML.replace(eval("/"+findWhat+"/gi"),"<b>"+findWhat+"</b>");
//  	document.body.innerHTML = document.body.innerHTML.replace(eval("/"+sIgnore+"("+findWhat+")/gi"),'<span class="srchres">$1</span>');	
//document.body.innerHTML = document.body.innerHTML.replace(eval("/("+findWhat+")"+sIgnore+"/gi"),'<span class="srchres">$1</span>');
//  clearObjVal(obj);
  document.body.innerHTML = document.body.innerHTML.replace(eval("/("+findWhat+")/gi"),'<span class="srchres">$1</span>');	
//document.body.innerHTML = document.body.innerHTML.replace(eval("/"+sIgnore+"(."+findWhat+")/gi"),'<span class="srchres">$1</span>');	
//  	document.body.innerHTML = document.body.innerHTML.replace(eval("/(?!value=\""+findWhat+"\")("+findWhat+")/gi"),'<span class="srchres">$1</span>');	

//$link = preg_replace("/href=[\"'](?!javascript:)[^\"']+[\"']/", "href='new link'", $link);

//  	document.body.innerHTML = document.body.innerHTML.replace(eval("/"+sRet+"/gi"),findWhat);	

//  	document.body.innerHTML = document.body.innerHTML.replace(/(полный)/gi,'<span class="srchres">$1</span>');		
//	.replace(/(\{|\}|\]|\[|\|)/gi,'<span class="kwrd">$1</span>')
    //value="офсет"
//    obj = document.getElementById('eqsearch');
//	obj.innerHTML = findWhat;
//    ss = 'Полный {комплекс}';
//	ss = ss.replace(/(\{|\}|\]|\[|\|)/gi,'<span class="srchres">$1</span>');
//	ss = ss.replace(/(полный)/gi,'<span class="srchres">$1</span>');
//	alert(ss);
  }
}

function retSearch(){
}

function setdis(fldlist,status)
{
	var obj;
	for (i = 0; i < fldlist.length; i++){
	  obj = document.getElementById(fldlist[i]);
	  if (obj != null) obj.disabled = status;     
    }
}

function showhide(objid)
{ 
  var obj=document.getElementById(objid);
  if (obj != null) {
	  if(obj.style.display=='none')
		obj.style.display='block';
	  else
		obj.style.display='none';
  }
}

function cursor_wait() {
/*  var cursor = 
     document.layers ? document.cursor :
     document.all ? document.all.cursor :
     document.getElementById ? document.getElementById('cursor') : null;*/	 
  document.body.style.cursor = 'wait';
}

function cursor_clear() {
  document.body.style.cursor = 'default';
}

function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function getActList(objid, url) { 
	var xmlhttp = getXmlHttp()
	xmlhttp.open("GET", url, true);  // 	
	xmlhttp.onreadystatechange = 
	function() {
		if (xmlhttp.readyState == 4) {
			clearTimeout(timeout);
			timeout = null;
			cursor_clear();
			if (xmlhttp.status == 200) {
				var listArray = xmlhttp.responseText.split(",");
       			var lst = document.getElementById(objid);
       			if (lst != null) {
					lst.innerHTML="";
					for(var i=0; i<listArray.length; i+=2){
						o=document.createElement('option');
						o.text=listArray[i+1];
						o.value=listArray[i];
						lst.options.add(o);    
					 }
				}     
//			  alert(xmlhttp.responseText);
			} else 
				handleError(xmlhttp.statusText); 
		}
	}
 	xmlhttp.send(null);//("a=5&b=4");
	var timeout = setTimeout( function(){ xmlhttp.abort(); cursor_clear(); handleError("getActList: Превышено время ожидания ответа от сервера") }, 10000); // 10 секунд
    cursor_wait();
} 

function getActDislList(objid, url, sel, ll, fstop) {
//	alert(url+"; "+fstop);
	var xmlhttp = getXmlHttp()
	xmlhttp.open("GET", url, true);  // 	
	xmlhttp.onreadystatechange = 
	function() {
		if (xmlhttp.readyState == 4) {
			window.clearTimeout(timeout); 
			timeout = null;
			cursor_clear();
			if (xmlhttp.status == 200) {
				var listArray = xmlhttp.responseText.split(",");
       			var lst = document.getElementById(objid);
				if (lst != null) {
					lst.innerHTML="";
					for(var i=0; i<listArray.length; i+=2){
						o=document.createElement('option');
						o.text=listArray[i+1];
						o.value=listArray[i];
						if (listArray[i] == sel) o.selected=true;
						lst.options.add(o);    
					}
				}
				if ((!fstop) && (sel != "")) {
					url = 'getdisloc.php?r_id=' + sel; 
					getActDislList(ll[0],url,ll[1],null,true);	
				}				 
			} else 
				handleError(xmlhttp.statusText); 
		}
	}
 	xmlhttp.send(null);
	var timeout = window.setTimeout( function(){ xmlhttp.abort(); cursor_clear(); handleError("getActDislList: Превышено время ожидания ответа от сервера") }, 20000); // 20 секунд
    cursor_wait();
}

function getOrgParams(orgid, objlist, dislist) { 
	var xmlhttp = getXmlHttp()
	var url = 'getparams.php?org_id=' + orgid; 
	xmlhttp.open("GET", url, true);   	
	xmlhttp.onreadystatechange = 
	function() {
		if (xmlhttp.readyState == 4) {
			window.clearTimeout(timeout);
			timeout = null;
			cursor_clear();
			if (xmlhttp.status == 200) {
				var obj;
				var listArray = xmlhttp.responseText.split("|");
//				alert(listArray);
				for (i = 0; i < objlist.length; i++){
	       			obj = document.getElementById(objlist[i]);
					if (obj != null) obj.value = (listArray[i+3] == undefined) ? "" : listArray[i+3];
				}
				obj = document.getElementById(dislist[0]); //обл.центры
				if (obj != null) obj.value = listArray[2];
				if (listArray[0] != ""){
					obj = document.getElementById(dislist[1]); //области
					if (obj != null) obj.value = listArray[0];
					var url = 'getdisloc.php?o_id=' + listArray[0]; 
					var lst = document.getElementById(dislist[3]);
					if (lst != null) lst.innerHTML="";
					var ll = [dislist[3],listArray[2]];
					getActDislList(dislist[2],url,listArray[1],ll,false);	
				}    
			} else 
				handleError(xmlhttp.statusText); 
		}
	}
 	xmlhttp.send(null);//("a=5&b=4");
	var timeout = window.setTimeout( function(){ xmlhttp.abort(); cursor_clear(); handleError("getOrgParams: Превышено время ожидания ответа от сервера") }, 20000); // 20 секунд
    cursor_wait();
} 

function handleError(message) {
  alert("Ошибка: "+message);
}
