var domain = "esb.mari.ru";
var contact  =  "esb@" + domain;
var email  =  "ok@" + domain;
var shift_x = 0;

var csshoverReg = /(^|\s)(([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active)/i,
currentSheet, doc = window.document, hoverEvents = [], activators = {
	onhover:{on:'onmouseover', off:'onmouseout'},
	onactive:{on:'onmousedown', off:'onmouseup'}
}

	function parseStylesheet(sheet) {
		if(sheet.imports) {
			try {
				var imports = sheet.imports, l = imports.length;
				for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);
			} catch(securityException){}
		}

		try {
			var rules = (currentSheet = sheet).rules, l = rules.length;
			for(var j=0; j<l; j++) parseCSSRule(rules[j]);
		} catch(securityException){}
	}

	function parseCSSRule(rule) {
		var select = rule.selectorText, style = rule.style.cssText;
		if(!csshoverReg.test(select) || !style) return;

		var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');
		var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);
		var className = (/\.([a-z0-9_-]*on(hover|active))/i).exec(newSelect)[1];
		var affected = select.replace(/:(hover|active).*$/, '');
		var elements = getElementsBySelect(affected);
		if(elements.length == 0) return;

		currentSheet.addRule(newSelect, style);
		for(var i=0; i<elements.length; i++)
			new HoverElement(elements[i], className, activators[pseudo]);
	}

function HoverElement(node, className, events) {
	if(!node.hovers) node.hovers = {};
	if(node.hovers[className]) return;
	node.hovers[className] = true;
	hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });
	hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });
}
	function hookHoverEvent(node, type, handler) {
		node.attachEvent(type, handler);
		hoverEvents[hoverEvents.length] = { 
			node:node, type:type, handler:handler 
		};
	}

	function unhookHoverEvents() {
		for(var e,i=0; i<hoverEvents.length; i++) {
			e = hoverEvents[i]; 
			e.node.detachEvent(e.type, e.handler);
		}
	}

function getElementsBySelect(rule) {
	var parts, nodes = [doc];
	parts = rule.split(' ');
	for(var i=0; i<parts.length; i++) {
		nodes = getSelectedNodes(parts[i], nodes);
	}	return nodes;
}
	function getSelectedNodes(select, elements) {
		var result, node, nodes = [];
		var identify = (/\#([a-z0-9_-]+)/i).exec(select);
		if(identify) {
			var element = doc.getElementById(identify[1]);
			return element? [element]:nodes;
		}
		
		var classname = (/\.([a-z0-9_-]+)/i).exec(select);
		var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');
		var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;
		for(var i=0; i<elements.length; i++) {
			result = tagName? elements[i].all.tags(tagName):elements[i].all; 
			for(var j=0; j<result.length; j++) {
				node = result[j];
				if(classReg && !classReg.test(node.className)) continue;
				nodes[nodes.length] = node;
			}
		}	
		
		return nodes;
	}

function parseStylesheets() {
	if(!/MSIE (5|6)/.test(navigator.userAgent)) return;
	window.attachEvent('onunload', unhookHoverEvents);
	var sheets = doc.styleSheets, l = sheets.length;
	for(var i=0; i<l; i++) 
		parseStylesheet(sheets[i]);
}

function updateLinks() {
	if (document.getElementsByTagName) {
		links_list = document.getElementsByTagName('a');
		for(i=0; i<links_list.length; i++) {
			if (0 == links_list[i].rel.indexOf('ext:')) {
				links_list[i].target = links_list[i].rel.substring(4, links_list[i].rel.length);
			}
		}
	}
}

function lightswitch(page) {
	var sky = document.getElementById("night-sky");
	var nlbg = document.getElementById("night-lightbg");
	if ("" == sky.style.display) {
		sky.style.display = "block";
		if("" != page) nlbg.style.display = "block";
		document.getElementById("switches").style.background = "url(/design/images/switch" + page + "1.gif) no-repeat";
		document.getElementById("area").title = "включить свет"
	} else {
		sky.style.display = "";
		if("" != page) nlbg.style.display = "";
		document.getElementById("switches").style.background = "url(/design/images/switch" + page + ".gif) no-repeat";
		document.getElementById("area").title = "выключить свет"
	}
}

if (document.images) {
		path = "/design/images/";
		sw1 = new Image(); sw1.src = path + "switch1.gif";
		sw2 = new Image(); sw2.src = path + "switch_m1.gif";
		night = new Image(); night.src = path + "nightsky.png";
		nlbg = new Image(); nlbg.src = path + "citynight.gif";
}

function updatebg() {
	// Прверка на поддержку getElementById, на наличие слоя sky и на браузер отличный от IE
	if (document.getElementById && document.getElementById("sky") && (!/MSIE (5|6)/.test(navigator.userAgent))) {
		shift_x = shift_x + 1;
		document.getElementById("sky").style.background = "url('/design/images/clouds.jpg') repeat-x " + shift_x + "px 0px";
		if (shift_x >= 744) shift_x = 0;
		setTimeout('updatebg()', 60);
	}
}

function OpenLink(wname, wlink, wwidth, wheight) {
	if (IE) { wwidth += 20; }
	window.open(wlink, wname, "height="+wheight+",width="+wwidth+",xposition=10,yposition=10,top=10,left=10,toolbar=0,location=0,status=1,menubar=1,scrollbars=1,resizable=0");
}

function showhide(ident) {
	// secont parentNode
	listContainer = ident.parentNode.parentNode;
	list_li = listContainer.getElementsByTagName('ul');
	for (i = 0; i < list_li.length; i++) {
		if ("" == list_li[i].style.display) {
			list_li[i].style.display = "block";
			list_li[i].className = "iefix";
		} else {
			list_li[i].style.display = "";
			list_li[i].className = "";
		}
	}
}

function showhide_li(id) {
	if("" == document.getElementById(id).style.display) {
		document.getElementById(id).style.display = "block";
	} else {
		document.getElementById(id).style.display = "";
	}
}
