if (typeof(TimeToFade)=='undefined') { TimeToFade=300; }
if (typeof(reloadTimer)=='undefined') { reloadTimer=60; }
if (typeof(locCheckTimeout)=='undefined') { locCheckTimeout=300; }
if (typeof(dProcess)=='undefined') { dProcess=false; }
if (typeof(template_name)=='undefined') { template_name="default"; }
if (typeof(noSelectClassList)=='undefined') { noSelectClassList=[]; }
if (typeof(noSelectIdList)=='undefined') { noSelectIdList=[]; }
if (typeof(imgCacheList)=='undefined') { imgCacheList=[]; }
if (typeof(imgCacheArr)=='undefined') { imgCacheArr=[]; }
if (typeof(waitText)=='undefined') { waitText=''; }
if (typeof(waitTimeout)=='undefined') { waitTimeout=1; }
if (typeof(emptyPageText)=='undefined') { emptyPageText=''; }
if (typeof(mhash)=='undefined') { mhash=''; }
if (typeof(config)=='undefined') { config=[]; }
if (typeof(cacheGetRequest)=='undefined') { cacheGetRequest=true; }
if (typeof(cachePostRequest)=='undefined') { cachePostRequest=false; }
if (typeof(cachedPages)=='undefined') { cachedPages=[]; }
if (typeof(cachedPagesSize)=='undefined') { cachedPagesSize=8; }
if (typeof(requestTimeout)=='undefined') { requestTimeout=20; }
if (typeof(xmlHttpReq)=='undefined') { xmlHttpReq=null; }

locChecked=false;

function pgStart() {
	setTimeout("reloadImage()",reloadTimer);
	cacheImg();
	if (window.pgStartTemplate) { pgStartTemplate(); }
}

function chkStartPage() {
	var page = '', ptype = 0, defpage="page="+config['site_defpage'].toString(); locChecked=false;
	if (window.location.hash!=null && window.location.hash!="" && window.location.hash!="#") {
		ptype = 1; page = window.location.hash.toString().substr(1);
	} else if (window.location.search!=null && window.location.search!="" && window.location.search!="?") {
		ptype = 2; page = window.location.search.toString().substr(1);
	} else {
		ptype = 1; page = defpage;
	}
	if (page!=defpage) {
		var windowBody=document.getElementById("data_body-1");
		if (windowBody!=null) { windowBody.regState=0; windowBody.style.visibility='hidden'; }
		var windowHeader=document.getElementById("data_header-1");
		if (windowHeader!=null) { windowHeader.innerHTML='&raquo;&nbsp;&raquo;&nbsp;&raquo;'; }
		document.title=config['site_title'];
	}
}

function showPage() {
	var target=document.getElementById("data_body-1"); if (target!=null) { target.style.visibility=''; }
}

function contentLoad() {
}

function reloadImage() {
	var images = getElementsByStyleClass("reload");
	for(i=0;i<images.length;i++){
		link=explode("?",images[i].src);link=link[0];
		if (link!="") {
			images[i].src=link+"?"+new Date().getTime();;
		}
	}
	setTimeout("reloadImage()",reloadTimer*1000);
}

function changeBgImage(id,src) {
	if (document.getElementById(id)!=null) {
		if (src!="") {
			document.getElementById(id).style.backgroundImage='url("'+src+'")';
		} else {
			document.getElementById(id).style.backgroundImage='';
		}
	}
}

function locationCheck() {
	if (locChecked == true) {
		if (mhash != window.location.hash) {
			contentLoad();
		} else {
			setTimeout("locationCheck();",locCheckTimeout);
		}
	}
}

function postReqToID(strURL,postData,targetID,pexID,clearCache,recheck) {
	if (clearCache==null) { clearCache=true; }
	clearCache=parseInt(clearCache); if (clearCache>0) { clearCache=true; } else { clearCache=false; }
	if (recheck==null) { recheck=false; }
	if (document.getElementById(targetID)==null) { return false; }
	var target=document.getElementById(targetID);
	if (pexID==3) {  target.style.visible=''; target.style.display=''; target.innerHTML=waitText; }
	var data=postData;
	var temp="";
	if (strURL!="") { strURL=trim(strURL,"&"); }
	if (cacheGetRequest==true && clearCache==true) { temp=hex_sha1(location.hash); cachedPages[temp]=""; }
	if (xmlHttpReq!=null && recheck!=-2) { if (target.reqState==null || recheck) { target.reqState=-1; if (clearCache) { temp="true"; } else { temp="false"; } setTimeout("postReqToID('"+quoteShield(strURL)+"','"+quoteShield(postData)+"','"+quoteShield(targetID)+"','"+quoteShield(pexID)+"',"+quoteShield(temp)+",true);", 555); temp=""; } return false; }
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return false;
	}
	target.reqState=1;
	if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
		funcExec(pexID,data,targetID,-1);
	} else {
		setTimeout(pexID+'("'+data+'","'+targetID+'",-1)',0);
	}
	xmlHttpReq.open('POST', strURL, true);
	xmlHttpReq.timeout=parseInt(requestTimeout)*1000;
	xmlHttpReq.setRequestHeader("Cache-Control", "no-store");
	xmlHttpReq.setRequestHeader("Cache-Control", "no-cache");
	xmlHttpReq.setRequestHeader("Cache-Control", "must-revalidate");
	xmlHttpReq.setRequestHeader("Cache-Control", "post-check=0");
	xmlHttpReq.setRequestHeader("Cache-Control", "pre-check=0");
	xmlHttpReq.setRequestHeader("Pragma", "no-cache");
	xmlHttpReq.setRequestHeader("Cache-Control", "max-age=0");
	xmlHttpReq.setRequestHeader("Expires", "Mon, 27 May 1985 00:00:00 GMT");
	xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttpReq.setRequestHeader("Content-length", postData.length);
	xmlHttpReq.setRequestHeader("Connection", "close");
	xmlHttpReq.onreadystatechange = function() {
		if (xmlHttpReq.readyState == 4) {
			target.reqState=4;
			postReqAfter(strURL,postData,targetID,pexID,xmlHttpReq.responseText,xmlHttpReq.status);
			xmlHttpReq=null; target.reqState=null;
		}
	}
	xmlHttpReq.ontimeout = function() {
		xmlHttpReq=null; target.reqState=null;
		postReqAfter(strURL,postData,targetID,1,"",404);
	}
	xmlHttpReq.send(postData);
	target.reqState=3;
}

function postReqAfter(strURL,postData,targetID,pexID,respText,respStatus) {
	if (document.getElementById(targetID)==null) { return false; }
	var target=document.getElementById(targetID);
	var data=postData;
	var temp="";
	if (respText!="" && respStatus==200) {
		if (parseInt(pexID)==2) {
			var response = explode(chr(1),respText);
			if (response.length>0) {
				document.title=response[0];
				textPaste(response[1],'data_header-1');
				textPaste(response[2],targetID);
			}
		} else {
			textPaste(respText,targetID);
		}
		target.style.visibility=''; target.style.display='';
		evalGlobal(parseJS(respText));
		if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
			funcExec(pexID,data,targetID,1);
		} else {
			setTimeout(pexID+'("'+data+'","'+targetID+'",1)',0);
		}
	} else {
		textPaste("",targetID); target.style.visibility='';
		if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
			funcExec(pexID,data,targetID,0);
		} else {
			setTimeout(pexID+'("'+data+'","'+targetID+'",0)',0);
		}
	}
}

function getReqToID(strURL,targetID,pexID,restrictCache,recheck) {
	if (restrictCache==null) { restrictCache=false; }
	restrictCache=parseInt(restrictCache); if (restrictCache>0) { restrictCache=true; } else { restrictCache=false; }
	if (recheck==null) { recheck=false; }
	if (document.getElementById(targetID)==null) { return false; }
	var target=document.getElementById(targetID);
	if (pexID==3) { target.innerHTML=waitText; }
	var temp="";
	if (strURL!="") { strURL=trim(strURL,"&"); }
	if (xmlHttpReq!=null) { if (target.reqState==null || recheck) { target.reqState=-1; if (restrictCache) { temp="true"; } else { temp="false"; } setTimeout("getReqToID('"+quoteShield(strURL)+"','"+quoteShield(targetID)+"','"+quoteShield(pexID)+"',"+quoteShield(temp)+",true);", 555); temp=""; } return false; }
	if (restrictCache==true && cacheGetRequest==true) {
		temp=hex_sha1(location.hash);
		if (isset(cachedPages[temp]) && cachedPages[temp]!="") {
			getReqAfter(strURL,targetID,pexID,cachedPages[temp],200);
			return true;
		}
		temp="";
	}
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	} else {
		return false;
	}
	target.reqState=1;
	if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
		funcExec(pexID,"",targetID,-1);
	} else {
		setTimeout(pexID+'("","'+targetID+'",-1)',0);
	}
	xmlHttpReq.open('GET', strURL, true);
	xmlHttpReq.timeout=parseInt(requestTimeout)*1000;
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.setRequestHeader("Cache-Control", "no-store");
	xmlHttpReq.setRequestHeader("Cache-Control", "no-cache");
	xmlHttpReq.setRequestHeader("Cache-Control", "must-revalidate");
	xmlHttpReq.setRequestHeader("Cache-Control", "post-check=0");
	xmlHttpReq.setRequestHeader("Cache-Control", "pre-check=0");
	xmlHttpReq.setRequestHeader("Pragma", "no-cache");
	xmlHttpReq.setRequestHeader("Cache-Control", "max-age=0");
	xmlHttpReq.setRequestHeader("Expires", "Mon, 27 May 1985 00:00:00 GMT");
	xmlHttpReq.onreadystatechange = function() {
		if (xmlHttpReq.readyState == 4) {
			target.reqState=4;
			getReqAfter(strURL,targetID,pexID,xmlHttpReq.responseText,xmlHttpReq.status);
			xmlHttpReq=null; target.reqState=null;
		}
	}
	xmlHttpReq.ontimeout = function() {
		xmlHttpReq=null; target.reqState=null;
		postReqAfter(strURL,postData,targetID,1,"",404);
	}
	xmlHttpReq.send(null);
	target.reqState=3;
}

function getReqAfter(strURL,targetID,pexID,respText,respStatus) {
	var temp="";
	if (document.getElementById(targetID)==null) { return false; }
	target=document.getElementById(targetID);
	if (respText!="" && respStatus==200) {
		if (cacheGetRequest==true) {
			temp=hex_sha1(location.hash);
			if (cachedPagesSize>0 && cachedPages.length>=cachedPagesSize) { cachedPages.shift(); }
			cachedPages[temp]=respText;
			temp="";
		}
		if (parseInt(pexID)==2) {
			var response = explode(chr(1),respText);
			if (response.length>0) {
				document.title=response[0];
				textPaste(response[1],'data_header-1');
				textPaste(response[2],targetID);
			}
		} else {
			textPaste(respText,targetID);
		}
		target.style.visibility=''; target.style.display='';
		evalGlobal(parseJS(respText));
		if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
			funcExec(pexID,"",targetID,1);
		} else {
			setTimeout(pexID+'("","'+targetID+'",1)',0);
		}
	} else {
		textPaste("",targetID); target.style.visibility='';
		if (parseInt(pexID)>0 || pexID=="0" || pexID=="") {
			funcExec(pexID,"",targetID,0);
		} else {
			setTimeout(pexID+'("","'+targetID+'",0)',0);
		}
	}
}

function parseJS(text) {
	var result=[], temp="";
	temp="<br />"+text+"<br />";
	temp=temp.split(/<script ?[^>]*>\s*/i);
	if (typeof temp[1] !== 'undefined') {
		for (var i=1;i<temp.length;i++) {
			temp[i]=temp[i].split(/\s*<\/script>/i);
			if (typeof temp[i] == 'object' && typeof temp[i][1] !== 'undefined') {
				result[result.length]=temp[i][0];
			}
		}
	}
	return result;
}

function targetWaiting(targetID) {
	if (document.getElementById(targetID)==undefined || document.getElementById(targetID)==null) { return false; }
	target=document.getElementById(targetID);
	if (target.reqState!=null) {
		if (waitText!=null) {
			if (target.reqState<4) {
				textPaste(waitText,targetID); target.style.visibility='';
			}
		}
	}
}

function funcExec(pexID,data,targetID,result) {
	if (document.getElementById(targetID)==null) { return false; }
	target=document.getElementById(targetID);
	if (result==-1) {
		switch(pexID) {
			case 1:
				setTimeout("targetWaiting('"+targetID+"')",waitTimeout*1000);
			break;
			case 2:
				setTimeout("targetWaiting('"+targetID+"')",waitTimeout*1000);
			break;
			case 3:
				targetWaiting(targetID);
			break;
		}
		target.reqState=2;
	} else if (result==0) {
		switch(pexID) {
			case 0:
				if (emptyPageText!=null) {
					textPaste(emptyPageText,targetID); target.style.visibility='';
				}
			break;
			case 1:
				if (emptyPageText!=null) {
					textPaste(emptyPageText,targetID); target.style.visibility='';
				}
				if (window.location.hash!=defpage) { setTimeout("window.location.hash='#';location.reload(true);",1000); }
			break;
			case 2:
				if (emptyPageText!=null) {
					textPaste(emptyPageText,targetID); target.style.visibility='';
				}
				if (window.location.hash!=defpage) { setTimeout("window.location.hash='#';location.reload(true);",1000); }
			break;
			case 3:
				if (emptyPageText!=null) {
					textPaste(emptyPageText,targetID); target.style.visibility='';
				}
				if (window.location.hash!=defpage) { setTimeout("window.location.hash='#';location.reload(true);",1000); }
			break;
		}
		noSelect();
		target.reqState=5;
	} else if (result==1) {
		noSelect();
		target.reqState=5;
	}
}

function dataToArray(dataID,type) {
	var data=document.getElementById(dataID).innerHTML;
	switch(type) {
		case 1:
			var i=0, i2=0;
			data=explode(chr(1),data);
			for (i=0;i<count(data);i++) {
				data[i]=explode(chr(2),data[i]);
				for (i2=0;i2<count(data[i]);i2++) {
					data[i][i2]=explode(chr(3),data[i][i2]);
					data[i][i2][0]=base64_decode(data[i][i2][0]);
					data[i][i2][1]=base64_decode(data[i][i2][1]);
				}
			}
			return data;
		break;
	}
}

function disableSelection(target){
	if (target==null) { return false; }
	if (typeof target.onselectstart!="undefined") { //IE
		target.onselectstart=function(){return false};
	} else if (typeof target.style.MozUserSelect!="undefined") { //Firefox
		target.style.MozUserSelect="none";
	} else {
		target.onmousedown=function(){return false};
	}
	target.style.cursor = "default";
}

function noSelect(){
	var elements = [], i, j;
	if (noSelectClassList==null || noSelectIdList==null) { return false; }
	for (i = 0; i < noSelectClassList.length; i++) {
		elements = getElementsByStyleClass (noSelectClassList[i]);
		for (var j = 0; j < elements.length; j++) {
			disableSelection(elements[j]);
		}
		elements = [];
	}
	for (i = 0; i < noSelectIdList.length; i++) {
		disableSelection(document.getElementById(noSelectIdList[i]));
	}
}

function getElementsByStyleClass (className) {
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elements = [];
	var regex=RegExp("^"+className+"$");
	for (var e = 0; e < all.length; e++) {
		if (all[e].className!==undefined && all[e].className!==null) {
			if (all[e].className.match(regex)) {
				elements[elements.length] = all[e];
			}
		}
	}
	return elements;
}

function getElementsById (id) {
	var all = document.all ? document.all : document.getElementsByTagName('*');
	var elements = [];
	for (var e = 0; e < all.length; e++) {
		if (all[e].id!==undefined && all[e].id!==null) {
			if (all[e].id.match(RegExp("^"+id+"$"))) {
				elements[elements.length] = all[e];
			}
		}
	}
	return elements;
}

function textPaste(str,targetID) {
	if (document.getElementById(targetID)!=null) {
		document.getElementById(targetID).innerHTML=str;
	}
}

function textB64Paste(str,targetID) {
	if (document.getElementById(targetID)!=null) {
		document.getElementById(targetID).innerHTML=base64_decode(str);
	}
}

function textGet(targetID) {
	return (document.getElementById(targetID).innerHTML)?document.getElementById(targetID).innerHTML:'';
}

function valueGet(targetID) {
	return (document.getElementById(targetID).value)?document.getElementById(targetID).value:'';
}

function valueSet(targetID,data) {
	if (document.getElementById(targetID)!==undefined && document.getElementById(targetID).value!==undefined) {
		document.getElementById(targetID).value=data;
		return true;
	} else {
		return false;
	}
}

function setSelfAttrib(attribName,attribValue,self) {
	self.setAttribute(attribName,attribValue);
}

function classChange(newClass,self) {
	if (self!=null) {
		if (self.className!=newClass) {
			setSelfAttrib("class",newClass,self);
			setSelfAttrib("className",newClass,self);
		}
	}
}

function valClean(id) {
	var elm = document.getElementById(id);
	if(element == null) { return; }
	elm.value = '';
}

function blockFade(eid) {
	var element = document.getElementById(eid);
	if (!getOpacityProperty(element)) {
		return false;
	}
	if(element == null) { return; }
	if(element.FadeState == null) {
		if(element.style.opacity == null || element.style.opacity == '' || element.style.opacity == '1') {
			element.FadeState = 2;
		} else {
			element.FadeState = -2;
		}
	}
	if (element.FadeState == -2) {
		element.style.display = "";
	}
	if (element.FadeState == 1 || element.FadeState == -1) {
		element.FadeState = element.FadeState == 1 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade - element.FadeTimeLeft;
	} else {
		element.FadeState = element.FadeState == 2 ? -1 : 1;
		element.FadeTimeLeft = TimeToFade;
		setTimeout("animateFade(" + new Date().getTime() + ",'" + eid + "')", 33);
	}
}

function blockFadeIn(eid) {
	var element = document.getElementById(eid);
	setElementOpacity(element,0);
	element.FadeState = -2;
}

function blockFadeOut(eid) {
	var element = document.getElementById(eid);
	setElementOpacity(element,1);
	element.FadeState = 2;
}

function setElementOpacity(elem, nOpacity) {
	var opacityProp = getOpacityProperty(elem);
	if (!elem || !opacityProp) { return false; } // Если не существует элемент или браузер не поддерживает ни один из известных функции способов управления прозрачностью
	if (opacityProp=="filter") { // Internet Exploder 5.5+
		nOpacity *= 100;
		// Если уже установлена прозрачность, то меняем её через коллекцию filters, иначе добавляем прозрачность через style.filter
		var oAlpha = elem.filters['DXImageTransform.Microsoft.alpha'] || elem.filters.alpha;
		if (oAlpha) { 
			oAlpha.opacity = nOpacity; 
		} else {
			elem.style.filter += "progid:DXImageTransform.Microsoft.Alpha(opacity="+nOpacity+")"; // Для того чтобы не затереть другие фильтры используем "+="
		}
	} else  { // Другие браузеры
		elem.style[opacityProp] = nOpacity;
	}
}

function getOpacityProperty(elem) {
	if (!elem) { return false; }
	if (typeof elem.style.opacity == 'string') { // CSS3 compliant (Moz 1.7+, Safari 1.2+, Opera 9)
		return 'opacity';
	} else if (typeof elem.style.MozOpacity == 'string') { // Mozilla 1.6 и младше, Firefox 0.8 
		return 'MozOpacity';
	} else if (typeof elem.style.KhtmlOpacity == 'string') { // Konqueror 3.1, Safari 1.1
		return 'KhtmlOpacity';
	} else if (elem.filters && navigator.appVersion.match(/MSIE ([\d.]+);/)[1]>=5.5) { // Internet Exploder 5.5+
		return 'filter';
	} else {
		return false; //нет прозрачности
	}
}

function animateFade(lastTick, eid) {
	var curTick = new Date().getTime();
	var elapsedTicks = curTick - lastTick;
	var element = document.getElementById(eid);
	if (element.FadeTimeLeft <= elapsedTicks) {
		setElementOpacity(element,element.FadeState == 1 ? '1' : '0');
		element.FadeState = element.FadeState == 1 ? 2 : -2;
		if (element.FadeState==-2) {
			element.style.display="none";
		}
		return;
	}
	element.FadeTimeLeft -= elapsedTicks;
	var newOpVal = element.FadeTimeLeft/TimeToFade;
	if(element.FadeState == 1) { newOpVal = 1 - newOpVal; }
	setElementOpacity(element, newOpVal);
	setTimeout("animateFade(" + curTick + ",'" + eid + "')", 33);
}

function cacheImg() {
	imgCacheArr=[];
	if (imgCacheList==null) { return false; }
	for (i=0;i<imgCacheList.length;i++) {
		imgCacheArr[i] = new Image(); imgCacheArr[i].src = "/template/"+config['template']+"/img/"+imgCacheList[i];
	}
}

function chkValue(self,valMask) {
	if (!self.value.match(RegExp(valMask,'i'))) {self.style.color='red'; self.valid=false; return false; }else{self.style.color=''; self.valid=true; return true;}
}

function typeFilter(e,symbMask) {
	var kn=window.event?e.keyCode:e.which;
	if (kn==0 || kn==8 || kn==9 || kn==27 || kn==37 || kn==39 || kn==46) {return true;} 
	return String.fromCharCode(kn).match(RegExp(symbMask))?true:false;
}

function typeExec(e,charCode,execCode) {
	var kn=window.event?e.keyCode:e.which;
	if (kn==parseInt(charCode)) { evalGlobal(execCode); }
}

function resizeIframeToFitContent(iframe) {
	iframe.height = document.frames[iframe.id].document.body.scrollHeight;
}

function include(url,id) {
	var script = document.createElement('script'); script.setAttribute('type', 'text/javascript'); script.setAttribute('src', url); script.setAttribute('id', id);
	var scripts = document.getElementsByTagName('head').item(0).getElementsByTagName("script"), exist=false;
	for (var i=0;i<scripts.length;i++) { if (scripts[i].src!="") { if (scripts[i].src==script.src) { removeElement(scripts[i]); } } }
	if (document.getElementById(id)!==undefined && document.getElementById(id)!==null) { removeElement(document.getElementById(id)); }
	document.getElementsByTagName('head').item(0).appendChild(script);
}

function include_css(url,id) {
	var style = document.createElement('link'); style.setAttribute('rel', 'stylesheet'); style.setAttribute('type', 'text/css'); style.setAttribute('href', url); style.setAttribute('id', id);
	
	if (document.getElementById(id)!==undefined && document.getElementById(id)!==null) {
		if (document.getElementById(id).href==style.href) { return false; }
		removeElement(document.getElementById(id));
	}
	document.getElementsByTagName('head').item(0).appendChild(style);
	return true;
}

function removeElement(element) {
	element.parentNode.removeChild(element);
}

function getSelectionStart(obj) {
	obj.focus(); if(obj.selectionStart) {
		return obj.selectionStart;
	} else if (document.selection) {
		var sel = document.selection.createRange();
		var clone = sel.duplicate();
		sel.collapse(true);
		clone.moveToElementText(obj);
		clone.setEndPoint('EndToEnd', sel);
		return clone.text.length;
	} else { return 0; }
}

function chrCounter(self, limit, counterid) {
	var hidden=true;
	if (counterid!==undefined) { var counter=document.getElementById(counterid); } else { var counter=null; }
	if (self.value.length > limit) {
		if (self.value && self.undo) {
			self.value = self.undo.substring(0, limit);
			return false;
		}
	}
	if (counter) {
		if (counter.value) {
			counter.value = limit - self.value.length;
		} else {
			counter.innerHTML = limit - self.value.length;
		}
	}
	if (self.selection) { hidden=false; }
	self.undo=self.value;
	if (hidden==false) { self.focus(); }
	return true;
}

function evalGlobal(code) {
	var evcode='if (typeof base64_decode != "function") { function base64_decode (data) { var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = []; if (!data) { return data; } data += ""; do { h1 = b64.indexOf(data.charAt(i++)); h2 = b64.indexOf(data.charAt(i++)); h3 = b64.indexOf(data.charAt(i++)); h4 = b64.indexOf(data.charAt(i++)); bits = h1<<18 | h2<<12 | h3<<6 | h4; o1 = bits>>16 & 0xff; o2 = bits>>8 & 0xff; o3 = bits & 0xff; if (h3 == 64) { tmp_arr[ac++] = String.fromCharCode(o1); } else if (h4 == 64) { tmp_arr[ac++] = String.fromCharCode(o1, o2); } else { tmp_arr[ac++] = String.fromCharCode(o1, o2, o3); } } while (i < data.length); dec = tmp_arr.join(""); dec = this.utf8_decode(dec); return dec; }} ';
	if (typeof code == "object") {
		for (var i=0; i<code.length; i++) {
			if (code[i]!="") {
				evcode+='eval(base64_decode("'+base64_encode(code[i].toString())+'"));';
			}
		}
	} else {
		evcode+='eval(base64_decode("'+base64_encode(code.toString())+'"));';
	}
	setTimeout(evcode,0);
}

function getInnerHTML(id) {
	if (document.getElementById(id)!==undefined && document.getElementById(id)!==null) { return document.getElementById(id).innerHTML; } return "";
}

function setInnerHTML(id,data) {
	if (data==undefined) { data=""; } if (document.getElementById(id)!==undefined && document.getElementById(id)!==null) { document.getElementById(id).innerHTML=data; } return "";
}

function findInSelect(id,value,startIndex) {
	if (document.getElementById(id)==undefined || document.getElementById(id)==null) { return false; }
	if (startIndex==undefined || startIndex==null) { startIndex=0; }
	var preSearch=-1;
	target=document.getElementById(id);
	if (target.preSearchValue!==undefined && target.preSearchValue!==null && target.preSearchValue==value) { return false; }
	if (value.length<2) { return false; }
	target.preSearchValue=value;
	var values=explode(" ",value), matched=0;
	for (var i=startIndex; i<target.options.length; i++) {
		if (target.options[i].text.match(RegExp('^'+regexpShield(value),'gi'))) { target.value=target.options[i].value; return true; }
		if (preSearch<0) {
			for (var j=0; j<values.length; j++) { if (target.options[i].text.match(RegExp('(^| |\\(|\'|")'+regexpShield(values[j]),'gi'))) { matched++; } }
			if (matched==values.length) { preSearch=i; } else { matched=0; }
		}
	}
	if (preSearch>=0 || preSearch=="0") {
		target.value=target.options[preSearch].value;
		return true;
	}
	return false;
}

function regexpShield (str) {
	return (str+'').replace(RegExp("[\\.\\(\\)\\[\\]\\|\\?\\*\\+\\{\\}\"'\\\\]","g"), '\\$&');
}

function quoteShield (str,qtype) {
	if (qtype==undefined || qtype==null) { qtype=1; }
	if (parseInt(qtype)==1) {
		return (str+'').replace(RegExp("[\"']","g"), '\\$&');
	} else if (parseInt(qtype)==2) {
		return (str+'').replace(RegExp("[\"]","g"), '\\$&');
	} else if (parseInt(qtype)==3) {
		return (str+'').replace(RegExp("[']","g"), '\\$&');
	}
}

function getBlockStatus(num) {
	if (num==undefined || num==null) { num=0; }
	var blocks=""; num=parseInt(num);
	blocks=getCookie('CRMS_BLOCKS');
	blocks=explode("|",blocks);
	for (var i=0;i<blocks.length;i++) {
		if (parseInt(blocks[i])==num) { return true; }
		if (parseInt(blocks[i])==-num) { return false; }
	}
	return true;
}

function setBlockStatus(num,status,inverse) {
	if (num==undefined || num==null) { num=0; }
	if (inverse==undefined || inverse==null) { inverse=false; }
	var blocks="", changed=false; num=parseInt(num);
	if (inverse==true) {
		if (status==true) { status=false; } else { status=true; }
	}
	blocks=getCookie('CRMS_BLOCKS');
	blocks=explode("|",blocks);
	for (var i=0;i<blocks.length;i++) {
		if (parseInt(blocks[i])==num && status==true || parseInt(blocks[i])==-num && status==false) {
			return true;
		} else if (parseInt(blocks[i])==num && status==false || parseInt(blocks[i])==-num && status==true) {
			blocks[i]=-blocks[i]; changed=true;
		}
	}
	if (changed==false) { if (status==true) { blocks[blocks.length]=num; } else { blocks[blocks.length]=-num; } }
	blocks=implode("|",blocks);
	setCookie('CRMS_BLOCKS',blocks,cookie_expire_date);
	return true;
}

function saveBlockStatus(num,status) {
	if (num==undefined || num==null) { num=0; }
	var blocks="", num=parseInt(num);
	blocks=getCookie('CRMS_BLOCKS');
	blocks=explode("|",blocks);
	for (var i=0;i<blocks.length;i++) { if (parseInt(blocks[i])==num || parseInt(blocks[i])==-num) { return true; } }
	if (status==true) { blocks[blocks.length]=num; } else { blocks[blocks.length]=-num; }
	blocks=implode("|",blocks);
	setCookie('CRMS_BLOCKS',blocks,cookie_expire_date);
	return true;
}

function scrollToTop(scrollValue) {
	var VScroll=0;
	if (window.scrollTo==null) { return false; }
	if (scrollValue==undefined || scrollValue==null) { scrollValue=0; }
	if (document.body.scrollTop!==null) { if (document.body.scrollTop>0) { VScroll=document.body.scrollTop; } }
	if (window.pageYOffset!==null) { if (window.pageYOffset>0) { VScroll=window.pageYOffset; } }
	if (document.body.parentElement!=undefined) { if (document.body.parentElement.scrollTop>0) { VScroll=document.body.parentElement.scrollTop; } }
	if (VScroll<scrollValue) { return false };
	window.scrollTo(0,scrollValue);
}

function stopParentEvents (e) {
	if(!e) var e = window.event;
	if (e.cancelBubble!=undefined) { e.cancelBubble = true; }
	if (e.returnValue!=undefined) { e.returnValue = false; }
	if (e.stopPropagation!=undefined) { e.stopPropagation(); }
}

