function getObj(n) {if(document.getElementById) return document.getElementById(n); if(document.all) return document.all[n]; return null;}
sfHover = function() {
	var sfEls = document.getElementById("navi").getElementsByTagName("DIV");
	if(sfEls!=null)
	{
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
			}
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);


function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x) curleft += obj.x;
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y) curtop += obj.y;
	return curtop;
}

function getWindowWidth() {if (document.all) return document.body.scrollWidth; else return document.width;}
function getWindowHeight() {if (document.all) return document.body.scrollHeight; else return document.height;}
function getReference(name) {return getObj(name);}
function Change(idPic, picSrc,idDiv,act) {if(obj=getObj(idPic)) obj.src = picSrc;}
function Show(idDiv,act) {if(obj=getObj(idDiv)) obj.style.display = act;}
function preloadImages() 
{ //v3.0
	var d=document; if(d.images){ if(!d.pI) d.pI=new Array();
	var i,j=d.pI.length,a=preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.pI[j]=new Image; d.pI[j++].src=a[i];}}
}

function hideDiv(id) {var div=getReference(id);div.style.display="none";}
function showDiv(id) {var div=getReference(id);div.style.display="block";}
function trim(s) {return String(s).replace(/^[\s\t]+/g, "").replace(/[\s\t]+$/g, "");}
function escape_text(text) {return String(text).replace(/\&/g, "&amp;").replace(/\'/g, "&#039;").replace(/\"/g, '&quot;').replace(/</g, "&lt;").replace(/>/g, "&gt;");}
function unescape_text(text) {return String(text).replace(/\&amp;/g, "&").replace(/\&#039;/g, "'").replace(/\&quot;/g, '"').replace(/&lt;/g, "<").replace(/&gt;/g, ">");}

function is_opera()
{
	var nav=navigator.userAgent.toLowerCase(), ind=nav.indexOf('opera'), ver=0, sub='';
	if(ind!=-1) {sub=nav.substring(ind+6, nav.length); ver=parseFloat(sub); if(ver<8.5) return true; else return false;}
	return false;
}

function changeDivContent(id, page)
{
	var req = new XMLHttpRequest(), content='', message='Çàãðóçêà...'; 
	var loadingFlag=0;
	var div=document.getElementById(id);
	var divOldContent=div.innerHTML;
	if (req) 
	{
		req.onreadystatechange = function() 
			{
				if (req.readyState == 4) div.innerHTML=req.responseText;
				if (req.readyState==1)
					div.innerHTML='<br><b class="green">'+message+'</b> ';
				if (req.readyState==2)
					div.innerHTML='<br><b class="green">'+message+'</b> ';
				if (req.readyState==3)
					div.innerHTML='<br><b class="green">'+message+'</b> ';
			};
		req.open('GET', page); 
		req.send(null);
	}
}

function changeDivContentEx(id, page, esc, loadingMessage)
{
	var req = new XMLHttpRequest(), content='', message=loadingMessage, tmp; 
	var loadingFlag=0;
	var div=document.getElementById(id);
	var divOldContent=div.innerHTML;
	if (req) 
	{
		req.onreadystatechange = function() 
			{
				if (req.readyState == 4) 
				{
					tmp=escape_text(req.responseText);
					if(esc)
						div.innerHTML=tmp;
					else
						div.innerHTML=req.responseText;
				}
				if (req.readyState==1)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==2)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==3)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
			};
		req.open('GET', page); 
		req.send(null);
	}
}

function sendRequest(page, post)
{
	var req = new XMLHttpRequest();
	if (req)
	{
		req.onreadystatechange = function()
		{
			if (req.readyState == 4) {};
		};
		req.open('POST', page); 
		req.send(post);
	}
}

function sendPostData(id, script, POSTDATA)
{
	var req = new XMLHttpRequest(), content='', message='Îáðàáîòêà çàïðîñà...'; 
	var div=document.getElementById(id);
	var divOldContent=div.innerHTML;
	if (req)
	{
		req.onreadystatechange = function() 
			{
				if (req.readyState == 4) 
				{
					div.innerHTML=req.responseText;
				}
				if (req.readyState==1)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==2)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==3)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
			};
		req.open('POST', script); 
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		req.send(POSTDATA);
	}
}

function sendPostDataEx(id, script, POSTDATA, esc, loadingMessage)
{
	var req = new XMLHttpRequest(), content='', message=loadingMessage, tmp; 
	var div=document.getElementById(id);
	var divOldContent=div.innerHTML;
	if (req)
	{
		req.onreadystatechange = function() 
			{
				if (req.readyState == 4) 
				{
					tmp=escape_text(req.responseText);
					if(esc)
						div.innerHTML=tmp;
					else
						div.innerHTML=req.responseText;
				}
				if (req.readyState==1)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==2)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
				if (req.readyState==3)
					div.innerHTML='<br /><b class="green">'+message+'</b> ';
			};
		req.open('POST', script); 
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
		req.send(POSTDATA);
	}
}

function sendPostDataNoResponse(script, POSTDATA)
{
	var req = new XMLHttpRequest(); 
	if (req) 
	{
		req.onreadystatechange = function() 
			{
				if (req.readyState == 4) {}
				if (req.readyState!= 4 ) {}
			};
		req.open('POST', script); 
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		req.send(POSTDATA);
	}
}

function ue_r(text)
{
	var dec='éöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¸¨¹';
	for (i=0; i<dec.length; i++) eval('text=text.replace(/'+escape(dec.charAt(i), true)+'/g, "'+dec.charAt(i)+'");');
	text=text.replace(/%20/g, ' '); text=text.replace(/%29/g, ')'); text=text.replace(/%28/g, '('); text=text.replace(/%2C/g, ',');
	text=text.replace(/%26/g, '&'); text=text.replace(/%3B/g, ';');
	return text;
}

function getHTML(url, post, response_func, loading_func, response_func_param, loading_func_param)
{
	var req = new XMLHttpRequest();
	if (req)
	{
		req.onreadystatechange = function()
		{
			if (req.readyState==4) 
			{
				if(response_func_param==null)
					response_func(ue_r(req.responseText));
				else
					response_func(ue_r(req.responseText), response_func_param);
			}
			if (req.readyState!=4) loading_func(loading_func_param);
		};
		req.open('POST', url); 
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); 
		req.send(post);
	}
}

function getDateStr(date)
{
	var s='';
	s += date.getYear();
	s += date.getHours();
	s += date.getMinutes();
	s += date.getSeconds();
	s += date.getMilliseconds();
	s += (Math.floor(Math.random()*1000)-1);
	return s;
}

function navigator_opera_version() {
	var nav=navigator.userAgent.toLowerCase(), ind=nav.indexOf('opera'), ver=0, sub=''; 
	if(ind!=-1) {
		sub=nav.substring(ind+6, nav.length);
		ver=parseFloat(sub); 
		return ver;
	}
	return null;
}

function navigator_opera() {var nav=navigator.userAgent.toLowerCase(), ind=nav.indexOf('opera'); if(ind!=-1) return true; else return false }
function ws(text) {window.status=text;}
function debug(obj)
{
	var s='';
	for (i in obj)
	{
		s+=i+'::'+obj[i]+"\n";
	}
	return s;
}

function debugObj(obj) {
	nw = window.open('about:blank', '_blank');
	with (nw.document) {
		open();
		for (a in obj) writeln(a + ' = ' + obj[a] + '<br/>');
		close();
	}
}