//----- Функция очищает все перехваченные события после выгрузки страницы, для предотвращения утечки памяти ------
//window.onunload=function () {while (__eventListeners.length > 0) {removeEventListener(__eventListeners[0]);}}
//----------------------------------------------------------------------------------------------------------------

var true_location=document.location.toString().match(/[^\?]*/gi)[0];

var current_visual_obj=false;
function ShowID(obj){
	if (typeof obj!="object") obj = document.getElementById(obj);
	if(obj){obj.style.display="block";current_visual_obj=obj;}
}
function HideID(obj){
	if (typeof obj!="object") obj = document.getElementById(obj);
	if(obj){obj.style.display="none";}
}
function ShowHide(obj){
	if (typeof obj!="object") obj = document.getElementById(obj);
	if(obj && getElementComputedStyle(obj,'display')=='none'){ShowID(obj);}else{HideID(obj);}
}

// Функция устанавливает объекту elm обработчик события evType функцией fn
// пример использования addEvent(document.getElementById("f5"),'keyup',mup,false);
function addEvent(elm, evType, fn, useCapture) {
        if (elm.addEventListener) {
            elm.addEventListener(evType, fn, useCapture);
        	return true;
        }else if (elm.attachEvent) {
            var r = elm.attachEvent('on' + evType, fn);
            return r;
        }else {
        	elm['on' + evType] = fn;
        }
}
// Функция возвращает текущий выделенный текст на странице
/*
function GetPageSelection(){
	var PageSelection = "";

	if(window.getSelection) { // Gecko, Opera
		PageSelection = window.getSelection();
	}else 
		if(document.selection) { // IE
			rng = document.selection.createRange();
			PageSelection = rng.text ? rng.text : "";
		}
	return PageSelection;
}
*/
// Функции для получения данных AJAX технология
function getXmlHttp(){
	var xmlhttp;
	try{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
			try{
				xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e1){xmlhttp = false;}
	}
	if (!xmlhttp && typeof XMLHttpRequest!="undefined"){xmlhttp = new XMLHttpRequest();}
	return xmlhttp;
}
// str_ - запрос, script_ - наименование скрипта обработчика запроса в папке /avk/datascript/; callback_ - функция в которую будут передан результат
// пример использования:
/*
function ShowKeyWords(res){
	if(res){
		var objSel = document.getElementById("myselect");
		objSel.options.length = 0;
		for (var i=0;i<res.length;i++){
			var oOption = document.createElement("option");
			oOption.appendChild(document.createTextNode(res[i][0]));
			oOption.setAttribute("value",res[i][1]);			
			objSel.appendChild(oOption);
		}		
	}
}
addEvent(document.getElementById("f5"),'keyup',mup,false);
function mup(){GetData(document.getElementById("f5").value,'keywords',ShowKeyWords);}
*/
function GetData(str_,script_,callback_) {
	var req = getXmlHttp();
	req.abort();
	req.open('GET',script_+'?r='+Math.random()+'&str='+encodeURIComponent(str_), true);
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if(req.status == 200) {
				if(callback_){callback_(req.responseText);}
			}
		}
	}
	req.send(null);
}
// Функция выделения всех CheckBox с именем cbName в указанной форме oForm, checked - выделить или сбросить
function checkAll(oForm, cbName, checked){
	if(oForm[cbName]){
		if(oForm[cbName].length){
			for (i=0; i < oForm[cbName].length; i++){ oForm[cbName][i].checked = checked;}
		}else{
			oForm[cbName].checked = checked;
		}
	}
}
/* Получение значения свойства стиля объекта */

function getElementComputedStyle(elem, prop){
  if (typeof elem!="object") elem = document.getElementById(elem);
  
  // external stylesheet for Mozilla, Opera 7+ and Safari 1.3+
  if (document.defaultView && document.defaultView.getComputedStyle){
    if (prop.match(/[A-Z]/)) prop = prop.replace(/([A-Z])/g, "-$1").toLowerCase();
    return document.defaultView.getComputedStyle(elem, "").getPropertyValue(prop);
  }
  
  // external stylesheet for Explorer and Opera 9
  if (elem.currentStyle){
    var i;
    while ((i=prop.indexOf("-"))!=-1) prop = prop.substr(0, i) + prop.substr(i+1,1).toUpperCase() + prop.substr(i+2);
    return elem.currentStyle[prop];
  }
  
  return "";
}

// подавляет дальнейшую обработку события event
/*
function blockEvent(e){
   	if (!e){e = window.event;}
   // if(event.stopPropagation) event.stopPropagation();
  //  else event.cancelBubble = true;
	e.cancelBubble = true;
	e.returnValue = false;
	
	if (e.stopPropagation) {
		e.stopPropagation();
		e.preventDefault();
	}
	return false;
   // if(event.preventDefault) {event.preventDefault();}
   // else event.returnValue = false;
}
*/