/* Define variables */
var popUps = Array();
var click = false;
var curTolboxMenu;
var clippedToToolbox = [];

/* Attach Event helper */
function addLoadEvent(func) {
        var oldonload = window.onload;
        if (typeof window.onload != 'function') {
                window.onload = func;
        }
        else {
                window.onload = function(e) {
                        if (window.event) e=window.event;
                        oldonload(e);
                        func(e);
                }
        }
}

/* Load theme */
function loadBg (){
  	try {
		var res2 = window.screen.width;
		var body = document.getElementsByTagName("body")[0];
		if (res2 <= 1024) body.className = "bg-off";
	 	if (res2 == 1152) body.className = "r1152";
	 	if (res2 == 1280) body.className = "r1280";
	 	if (res2 > 1280) body.className = "r1680";
  	} catch(err) {
	}
	if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent)) { loadWings(); }
}

/* Hover for IE */
function sfHover() {
	if (document.getElementById("user-menu")){
		var sfEls = document.getElementById("user-menu").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			sfEls[i].onmouseover=function() {
				this.className+=" sfhover";
			}
			sfEls[i].onmouseout=function() {
				reg = new RegExp(" sfhover");
				this.className=this.className.replace(reg, "");
			}
		}
	}
}

function Hover(handler) {
			var list;
			if((list = handler.getElementsByTagName("UL")[0]) && document.all){
				list.className+=" sfhover";				
			}
}
function EscapeHover(handler) {
			var list;
			if((list = handler.getElementsByTagName("UL")[0]) && document.all){
				reg = new RegExp("sfhover");
				list.className=list.className.replace(reg, "");
			}
}

/* Form-control image imitation */
function nice(handler)
{
	var label = handler;
	var ininput = handler.firstChild;
	if(ininput.type == 'checkbox')
	{
		label.className = (label.className.indexOf(' on')+1) ? label.className.replace(' on',' off') : label.className.replace(' off',' on');
	}

	if(ininput.type == 'radio')
	{
		var siblings = label.parentNode.getElementsByTagName('input');
		var siblingsLnt = siblings.length;

		for(var j=0; j<siblingsLnt; j++)
		{
			if(siblings[j].name == ininput.name) {
				var check = siblings[j].parentNode;
					check.className = check.className.replace(' on',' off');
			}
		}
		label.className = label.className.replace(' off',' on');
	}
}

/* Theme changer */
function setStylesheet(name){ 
		var cacheobj = Array();
		cacheobj=document.getElementsByTagName("link");
		for (var i = 0; i < cacheobj.length; i++)
		{
			if (cacheobj[i].getAttribute('id') == "theme")
			{	
				cacheobj[i].setAttribute("href",name);
			}
		}
}

/* Cancel bubbler :) */
function cancel_bubble(evt) {
	evt = evt || window.event;
	evt.cancelBubble = true;
}

/* Show-Hider :) */
function ShowHide(handler,anc,dx,dy,absx,absy,func) {
var inArray;
element = document.getElementById(handler).style;

if (element.display == "none" || !element.display) {

if(anc) {
    var obj=document.getElementById(handler);
    var obj1=document.getElementById(anc);
    
    if(obj1) {
        var ox,oy;
        for(ox=oy=0;obj1;obj1=obj1.offsetParent) {
            ox+=obj1.offsetLeft;
            oy+=obj1.offsetTop;
        }
        
        if(dx) ox=ox+dx; 
        if(dy) oy=oy+dy; 
        if(absx) ox=absx;
        if(absy) oy=absy;
    
        obj.style.top=oy+"px"; obj.style.left=ox+"px";
    } else {
        pTop = document.documentElement.clientHeight>dy?document.documentElement.clientHeight-dy:0;
        obj.style.top=document.documentElement.scrollTop+(pTop)/2+"px";
        pLeft = document.documentElement.clientWidth>dx?document.documentElement.clientWidth-dx:0;
        obj.style.left=document.documentElement.scrollLeft+(pLeft)/2+"px";
	}
}

element.display = "block"; 
for (var i = 0; i <popUps.length; i++) {
	if (popUps[i].hwnd == handler){
		inArray = true;
	}
}
if (!inArray) {
	popUps.push({hwnd:handler,func:func,status:true});
}
click = true;
} else {
	element.display = "none";
	for (var i = 0; i <popUps.length; i++) {
		if (popUps[i].hwnd == handler){
			popUps[i].status= false;
		}
    }
	click = true;
}
return false;
}

function ShowHideSimple(handler) 
{
      	reg = new RegExp("active"); 

	var flip = document.getElementById(handler);

	if (reg.test(flip.className)) 
	{
		flip.className=flip.className.replace(reg, "answer-form"); 
		flip.style.display = "none"; 
		flip.style.visibility = "hidden";
	}
	else 
	{
		flip.className = "active answer-form"; 
		flip.style.display = "inline"; 
		flip.style.visibility = "visible";
		flip.childNodes[0].childNodes[1].focus();
		
	}

	fixie();
return false;		
}

function ShowHideSimple_(handler) 
{

	var element = document.getElementById(handler).style;

	if (element.display == "none" || !element.display) 
	{

		element.display = "block"; 
		element.visibility = "visible";
	}
	else 
	{

		element.display = "none"; 
		element.visibility = "hidden";

	}

	fixie();
return false;		
}


function IsVisible(handler) {
    element = document.getElementById(handler).style;
    return (element.display && element.display != "none");
}


function JustShow(handler,anc,dx,dy,absx,absy,func) {
    if (!IsVisible(handler)) {
        ShowHide(handler,anc,dx,dy,absx,absy,func);
    }
}

function JustHide(handler,anc,dx,dy,absx,absy,func) {
    if (IsVisible(handler)) {
        ShowHide(handler,anc,dx,dy,absx,absy,func);
    }
}


function hideAll (evt) {
	if ('function'==typeof(bg_click)) bg_click(evt);

	if (curTolboxMenu && click != true) {
	   reg = new RegExp(" clicked");
	   curTolboxMenu.className=curTolboxMenu.className.replace(reg, "");
	   curTolboxMenu = '';
	   
	   hideAllClipped();
	}
    if (typeof(evt)!='undefined' && evt.button && evt.button == 2) return false;    //evt.button
	if (click == false) {
		for (var i = 0; i <popUps.length; i++) {
			if (popUps[i].status!=false){ 
				document.getElementById(popUps[i].hwnd).style.display = "none";
				if(popUps[i].func)popUps[i].func(popUps[i]);
			}
		}
		popUps = [];
	} else {
		click = false;
	}
}

function roll(handler) {
	var flip = testnode(handler);
	if (handler.className == "active")
	{
		handler.className = "";
		flip.className = "";
	}
	else
	{
		handler.className = "active";
		flip.className = "active";
	}
	fix("b-help");
}


function ClipToToolbox(handler) {
    JustShow(handler);

    clippedToToolbox.push(handler);
}


function hideAllClipped() {
    for (i = 0; i < clippedToToolbox.length; i++) {
        JustHide(clippedToToolbox[i]);
    }
    
    clippedToToolbox = [];
}
/* Toolbox menu Show and Hide 
------------------------------------------------------- */
function ToolboxShowHide(handler)  {
	reg = new RegExp(" clicked");
	if (!curTolboxMenu) {
		curTolboxMenu=handler;
		var firstclick = true;
	}
	if (curTolboxMenu == handler && firstclick == true){
		curTolboxMenu.className += " clicked"
		firstclick = false;
	}
	else if (curTolboxMenu == handler) {
		curTolboxMenu.className=curTolboxMenu.className.replace(reg, "");
		curTolboxMenu = '';
		hideAllClipped();
	}
	else if (curTolboxMenu != handler) {
		curTolboxMenu.className=curTolboxMenu.className.replace(reg, "");
		hideAllClipped();
		curTolboxMenu = handler;
		curTolboxMenu.className += " clicked";
	}
	click = true;
}

/* IE Bug Fixer (buben-dancing) */
function fix(element) {
	if (document.all){
		d =$(element);
		if(d)d.style.position = "static"; 
		if(d)d.style.position = "relative";
	}
}
function fixie() {
fix("b-comments");
fix("on-topic-new");
fix("on-topic-section");
}
/* Ie-FF DOM textnode checker */
function testnode(node) {
		(node.nextSibling.nodeType == 3 ? node = node.nextSibling.nextSibling : node = node.nextSibling);
		return node;
}

/* Hotspot changer */
var ids = 0;
function clearTimer() {
	clearTimeout(ids);
	clearTimeout(r_timer);
	r_timer=setTimeout("r_initHotspot()",8000);
}

function initHotspot(btn) {
	bestClassname = document.getElementById("best").className;
	if (bestClassname.charAt(bestClassname.length - 1) != btn){
		document.getElementById("best").className = "item" + btn;
	}
}

function activateHotspot(btn) {
	if (ids){
		clearTimer(ids);
	}
	ids = setTimeout("initHotspot("+btn+")",300);
	clearTimeout(r_timer);
	r_current=btn;
}

/* FixPNG
------------------------------------------------------- */
/*
function fixPNG(element)
{
    var src;
    src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
      if (src)
      {
        src = src[1];
        element.runtimeStyle.backgroundImage="none"; 
      }
    if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
}
*/

function fixPNG(element)
{
  if (/MSIE (5\.5|6).+Win/.test(navigator.userAgent))
  {
    var src;
	
    if (element.tagName=='IMG') 
    {
      if (/\.png$/.test(element.src))
      {
        src = element.src;
        element.src = "/i/1.gif";
      }
    }
    else 
    {
	  
      src = element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i);
      if (src)
      {
        src = src[1];
        element.runtimeStyle.backgroundImage="none"; 
      }
    }
    
    if (src) element.runtimeStyle.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "',sizingMethod='scale')";
  }
}
/* LoadWings
------------------------------------------------------- */
function loadWings () {
		var h=document.getElementById("l-wing"); var lItems=h?h.getElementsByTagName("LI"):[];
	 	var h=document.getElementById("r-wing"); var rItems=h?h.getElementsByTagName("LI"):[];
	 	for (var i = 0; i < lItems.length; i++){fixPNG(lItems[i])}
		for (var i = 0; i < rItems.length; i++){fixPNG(rItems[i])}
}


function Tree(id){obj = document.getElementById('tree'+id);if ( obj.style.display!="none" ) {obj.style.display="none";li = obj.parentNode;if (li.className=="rub-open")li.className="rub-clozed";if (li.className=="rub-open-active")li.className="rub-clozed-active";document.getElementById('ti'+id).src='/i/theme_desaturate/rubrics-bullet-plus.png';}
else{ obj.style.display="block"; li = obj.parentNode; if (li.className=="rub-clozed")li.className="rub-open"; if (li.className=="rub-clozed-active")li.className="rub-open-active"; document.getElementById('ti'+id).src='/i/theme_desaturate/rubrics-bullet-minus.png';}
return false;
}

function zoom(name){
        var p=window.open('/zoom.php?id='+name,'preview_window',"width=10,height=10,top=0,left=0,location=0,toolbar=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,fullscreen=0");
        if(p)p.focus();
  return false;
}

function isProperty( object, propertyName ){
  for( var name in object )
    if( name == propertyName )
      return true;
return false;
};

function checkP (pass_o,pass_c,object){
objD = $(object + 'passD');
if((pass_o!=pass_c)||(pass_o==''))
	{objD.innerHTML = 'Неверный пароль'; objD.style.display = 'block';} 
	else {objD.style.display = 'none';}
}



function popupTopOffset() {
	var h=document.getElementById('page');
	if(h && h.offsetTop>0) {
	var __b=new Array('user-reg-formz','user-login-formz','user-rem-formz','user-reent-formz','feedback-rez','feedback-win');
	for(var i=0;i<__b.length;i++) {
  	var b=document.getElementById(__b[i]);
  	if(b) b.style.top=(parseInt(b.style.top,10)+h.offsetTop)+'px';
 }
}
}

/* Вынесена из _login_popups.xsl */
function eRclear(){
var eN = document.getElementsByClassName('error-mes');
for (var i = 0; i < eN.length; i++) eN[i].style.display='none';
}

/* Вынесена из _login_popups.xsl */
function RegPopUp(){
 	sajax.XMLCmd('/ajx/kcaptcha.php',{'event':'GET','prefix':'reg'},document,'regcapI','hold','regcapD');
	ShowHideI('user-reg-formz','regname');
	return false;
}

function ShowHideI(name, field) {
	var fname=arguments[2]?arguments[2]:'', faction=arguments[3]?arguments[3]:'';
	if(fname!='' && faction!='') if($(fname)) $(fname).action=faction;
	ShowHide(name);
	if(field!='') $(field).focus();
}

function gId(nid) {return document.getElementById(nid);}

function addBookmark(a) { 
	var title = window.document.title; 
	var url = window.document.location;
	if ((window.sidebar != null) && (window.sidebar.classDescription == "Sidebar")) {
		console.log(window.sidebar);
		window.sidebar.addPanel(title, url, "");
		return false;
	}
	if (window.opera && window.print) {
		a.href = url;
		a.title = title;
		a.rel = 'sidebar';
		return true;
	}
	if (document.all) {
		window.external.AddFavorite(url, title);
		return false;
	}
	alert("Для добавления страницы в Избранное нажмите Ctrl+D");
	return false;
}

nodes= new Array ();


/* Attaching events */
/*addLoadEvent(loadBg); commented for spring theme*/
addLoadEvent(sfHover);

// возвращает cookie если есть или undefined
function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
	  "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	))
	return matches ? decodeURIComponent(matches[1]) : undefined 
}

// уcтанавливает cookie
function setCookie(name, value, props) {
	props = props || {}
	var exp = props.expires
	if (typeof exp == "number" && exp) {
		var d = new Date()
		d.setTime(d.getTime() + exp*1000)
		exp = props.expires = d
	}
	if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }

	value = encodeURIComponent(value)
	var updatedCookie = name + "=" + value
	for(var propName in props){
		updatedCookie += "; " + propName
		var propValue = props[propName]
		if(propValue !== true){ updatedCookie += "=" + propValue }
	}
	document.cookie = updatedCookie

}

