function isset(variable)
{
	return (typeof(variable) != 'undefined');
}
function MemberInObject(strMember, objObject)
{
	return (typeof(objObject) != 'undefined' && objObject && typeof(objObject[strMember]) != 'undefined' && objObject[strMember] != 'undefined');
}
function emptyVal(val) 
{
	if (val == null) {
		return true;
	}
	else if (val == 0) {
		return true;
	}
	else if (val == '') {
		return true;
	}
	else if (!val) {
		return true;
	}
	return false;
}

function getElement(inParam)
{
	if (emptyVal(inParam)) { 
		return (null); 
	}

	if (typeof(inParam) == 'string') {
		if (MemberInObject("getElementById", document)) {
			return (document.getElementById(inParam));
		}
		else if (MemberInObject("all", document)) {
			return (document.all[inParam]);
		}
		else if (MemberInObject("layers", document)) {
			return (document.layers[inParam]);
		}
	}
	else if (typeof(inParam) == 'object') {
		return (inParam);
	}
	return (null);
}
function getElementsByClassName(searchClass) 
{
	var classElements = new Array();
	var els = document.getElementsByTagName("*");
	var elsLen = els.length;
	var i, j;
	for (i = 0, j = 0; i < elsLen; i++) {
		if (els[i].className == searchClass) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function ResetForm(objForm)
{
	try {
	if (!objForm)
		objForm = document.forms[0]; 

	if ( !MemberInObject('elements', objForm) || !MemberInObject('length', objForm.elements) )
		return true; 

	var j = 0; 
	var strName = ""; 
	var strType = ""; 
	var objElement = null; 
	var bFocused = false; //da fokusirame pyrvoto tekstovo pole ili select na formata

	for (j = 0; j < objForm.elements.length; j++) {
		objElement = objForm.elements[j]; 
		strName = objElement.tagName.toLowerCase(); 
		strType = objElement.type.toLowerCase(); 
		if ((strName == 'textarea') || 
			(strName == 'input' && (strType == 'text' || strType == 'password'))) 
		{
			objElement.value = ''; 

			if (!bFocused) {
				objElement.focus();
				bFocused = true; 
			}
		}
		else if (strName == 'input' && strType == 'checkbox') {
			objElement.checked = false; 
		}
		else if (strName == 'select') {
			objElement.selectedIndex = 0; 

			if (!bFocused) {
				objElement.focus();
				bFocused = true; 
			}
		}
	}
	} catch (ex) {
		return false;
	}
	return true;
}
function SetInitialFocus()
{
	if (!MemberInObject('forms', document) || !MemberInObject('length', document.forms))
		return; 
	if (document.forms.length == 0) 
		return; 

	var i = 0; 
	var j = 0; 
	var objFrm = null; 
	var objTextEl = null; 
	var strName = ""; 
	var strType = ""; 
	for (i = 0; i < document.forms.length; i++) {
		objFrm = document.forms[i]; 
		for (j = 0; j < objFrm.elements.length; j++) {
			strName = objFrm.elements[j].tagName.toLowerCase(); 
			strType = objFrm.elements[j].type.toLowerCase(); 
			if ((strName == 'textarea') || 
				(strName == 'select') || 
				(strName == 'input' && (strType == 'text' || strType == 'password'))) 
			{
				objTextEl = objFrm.elements[j]; 
				break; 
			}
		}
		if (objTextEl != null) {
			objTextEl.focus(); 
			break;
		}
	}
}
function ShowElement(refEl, bShow)
{
 try {
    var objEl = getElement(refEl);
    if (!objEl) return;
	if (bShow && objEl.style.display == "none") { //show, and the element is currently hidden
		objEl.style.display = "";
	}
	else if (!bShow && objEl.style.display != "none") { //hide, and the element is currently shown
		objEl.style.display = "none";
	}
 } catch (ex) {alert(ex);}
}

function findLeft(objInParam)
{
	var curleft = 0;
	var obj = getElement(objInParam);
	if (!obj) return 0;

	if (MemberInObject("getElementById", document) || MemberInObject("all", document)) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (MemberInObject("layers", document)) {
		curleft += obj.x;
	}
	return curleft;
}

function findTop(objInParam)
{
	var curtop = 0;
	var obj = getElement(objInParam);
	if (!obj) return 0;

	if (MemberInObject("getElementById", document) || MemberInObject("all", document)) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (MemberInObject("layers", document)) {
		curtop += obj.y;
	}
	return curtop;
}

function findWidth(objInParam)
{
	var obj = getElement(objInParam);
	if (!obj) return 0;

	if (!emptyVal(obj)) {
		if (MemberInObject('offsetWidth', obj)) {
			return (obj.offsetWidth);
		}
		else if (MemberInObject('innerWidth', obj)) {
			return (obj.innerWidth);
		}
	}
	return 0;
}

function findHeight(objInParam)
{
	var obj = getElement(objInParam);
	if (!obj) return 0;

	if (!emptyVal(obj)) {
		if (obj.offsetHeight) {
			return (obj.offsetHeight);
		}
		else if (obj.innerHeight) {
			return (obj.innerHeight);
		}
	}
	return 0;
}

function setWidth(objInParam, iNewWidth)
{
	if (!emptyVal(objInParam)) {
		if (MemberInObject('style', objInParam)) {
			objInParam.style.width = '' + iNewWidth + 'px';
		}
	}
}

function setHeight(objInParam, iNewHeight)
{
	if (!emptyVal(objInParam)) {
		if (MemberInObject('style', objInParam)) {
			objInParam.style.height = '' + iNewHeight + 'px';
		}
	}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////
//ajax calls
var zXml /*:Object*/ = {
    useXmlHttp: (typeof XMLHttpRequest != "undefined"),
    useActiveX: (typeof ActiveXObject != "undefined"),
    XMLHTTP_VER: ""
};
zXml.ARR_XMLHTTP_VERS /*:Array*/ = [
"MSXML2.XmlHttp.6.0",
"Msxml2.XMLHTTP.5.0",
"Msxml2.XMLHTTP.4.0",
"MSXML2.XmlHttp.3.0",
"MSXML2.XMLHTTP",
"Microsoft.XMLHTTP"
];

function getRqObject()
{
    var http_request = null;
    try {
        if (zXml.useXmlHttp) {
            http_request = new XMLHttpRequest();
/*          if (typeof http_request.overrideMimeType != 'undefined') {
                http_request.overrideMimeType('text/xml'); // Фиксиране на някои проблеми
            }
*/      }
        else if (zXml.useActiveX) { //IE < 7.0 = use ActiveX
            if (zXml.XMLHTTP_VER) {
                http_request = new ActiveXObject(zXml.XMLHTTP_VER);
            }
            else {
                var i;
                for (i = 0; i < zXml.ARR_XMLHTTP_VERS.length; i++) {
                    try {
                        http_request = new ActiveXObject(zXml.ARR_XMLHTTP_VERS[i]);
                        zXml.XMLHTTP_VER = zXml.ARR_XMLHTTP_VERS[i];
                        break;
                    } catch (oError) {}
                }
            }
        }
    }catch(ex){alert(ex);}
    return http_request;
}
function getNodeData(xNode, def_val)
{
    if (!isset(def_val)) def_val = "";
    try{
    if (xNode.firstChild)
        return xNode.firstChild.nodeValue;
    }catch(ex){}
    return def_val;
}
function getItemData(xItems, row, col, def_val)
{
    if (!isset(def_val)) def_val = "";
    try{
    var xItem = (isset(xItems) && isset(xItems[row])) ? xItems[row] : null;
    if (!xItem) return def_val;
    var xCols = xItem.childNodes;
    if (!xCols || !MemberInObject('length', xCols) || !xCols.length) return def_val;
    return getNodeData(xCols[col], def_val);
    }catch(ex){}
    return def_val;
}
function getItemDataNm(xItems, row, col_name, def_val)
{
    if (!isset(def_val)) def_val = "";
    try{
    var xItem = (isset(xItems) && isset(xItems[row])) ? xItems[row] : null;
    if (!xItem) return def_val;
    var xCols = xItem.getElementsByTagName(col_name);
    if (!xCols || !MemberInObject('length', xCols) || !xCols.length) return def_val;
    return getNodeData(xCols[0], def_val);
    }catch(ex){}
    return def_val;
}

function DoHttpGet(strUrl, fnOnComplete)
{
    var RqObject = getRqObject();
    if (!RqObject) {
        return false;
    }
    RqObject.open('GET', strUrl, true);
    RqObject.onreadystatechange = function() { 
        if (RqObject.readyState == 4 || RqObject.readyState == 'complete') { // Проверка...
            if (RqObject.status == 200) {
                fnOnComplete(RqObject);
            }
        }
    };
    RqObject.send(null);
    return true;
}
function DoHttpGetX(strUrl, fnOnComplete)
{
    var RqObject = getRqObject();
    if (!RqObject) {
        return false;
    }
    RqObject.open('GET', strUrl, true);
    RqObject.onreadystatechange = function() { 
        if (RqObject.readyState != 4 && RqObject.readyState != 'complete') 
            return;
        if (RqObject.status != 200) 
            return;
        //alert(RqObject.responseText);
        var xmlDoc = RqObject.responseXML.documentElement;
        if (!xmlDoc)
            return;
        var xNodes = xmlDoc.getElementsByTagName("error");
        if (xNodes && xNodes.length) {
            //alert(xNodes[0].firstChild.nodeValue);
            return;
        }
        fnOnComplete(xmlDoc);
    };
    RqObject.send(null);
    return true;
}

