var HREF_PARAMS = window.location.search;
var _Q = HREF_PARAMS.indexOf("?");
HREF_PARAMS = HREF_PARAMS.replace("?","&");
//HREF_PARAMS = (_Q==-1?"?":"&")+HREF_PARAMS.substr(_Q+1, HREF_PARAMS.length-_Q-1);
if(typeof(HOME_PATH)=="undefined") var HOME_PATH="/";

function $(o) { return document.getElementById(o) }
function getAbsX(el) {
	var x =el.offsetLeft;
	while(el = el.offsetParent) x+=el.offsetLeft;
	return x;
}

function addEvent(element, eventName, handler) { 
	if (element.addEventListener) { 
		element.addEventListener(eventName, handler, false); 
	} else if (element.attachEvent) { 
		element.attachEvent("on" + eventName, handler); 
	} 
} 

function mouseX() {
	return window.event.clientX+document.body.scrollLeft;
}

function mouseY() {
	return window.event.clientY+document.body.scrollTop;
}




function Nav() {
	ua = navigator.userAgent;
	this.isMSIE = (navigator.appName == "Microsoft Internet Explorer");
	this.isMSIE5 = this.isMSIE && (ua.indexOf('MSIE 5') != -1);
	this.isMSIE5_0 = this.isMSIE && (ua.indexOf('MSIE 5.0') != -1);
	this.isMSIE7 = this.isMSIE && (ua.indexOf('MSIE 7') != -1);
	this.isGecko = ua.indexOf('Gecko') != -1;
	this.isSafari = ua.indexOf('Safari') != -1;
	this.isOpera = ua.indexOf('Opera') != -1;
	this.isMac = ua.indexOf('Mac') != -1;
	this.isNS7 = ua.indexOf('Netscape/7') != -1;
	this.isNS71 = ua.indexOf('Netscape/7.1') != -1;
}

var NAV = new Nav();

var SelDep = {
	dependence: {},
	objects: {},
	
	storeItems: function (objID) {
		if(typeof(this.objects[objID])!="undefined") return;
		this.objects[objID] = [];
		var obj = $(objID);
		for(var i=0;i<obj.options.length;i++) this.objects[objID][i] = obj.options[i];
	},
	
	clearItems: function (objID, all) {
		var obj = $(objID);
		for(var i=obj.options.length-1;i>=0;i--) if(obj.options[i].value>0 || all) obj.removeChild(obj.options[i]);
	},
	
	isDependence: function (name, value0, value1) {
		for(var i=0;i<this.dependence[name].length;i++) if(this.dependence[name][i][0]==value0 && this.dependence[name][i][1]==value1) return true;
		return false;
	},
	
	update: function (obj1_ID, obj2_ID, deptname, direct) {
		this.storeItems(obj2_ID);
		this.clearItems(obj2_ID, false);
		var obj_1 = $(obj1_ID);
		var obj_2 = $(obj2_ID);
		for(var i=0;i<this.objects[obj2_ID].length;i++) {
			var value1= direct?obj_1.value:this.objects[obj2_ID][i].value;
			var value2=!direct?obj_1.value:this.objects[obj2_ID][i].value;
			if(this.isDependence(deptname,value1, value2)||!(obj_1.value>0)) obj_2.appendChild(this.objects[obj2_ID][i]);
		}
	}
	
}


function getAbsY(el) {
	var y = el.offsetTop;
	while(el = el.offsetParent) y+=el.offsetTop;
	return y;
}

function oc(t,o,c) {
	t=$(t);
	var s=t.style.display=="none";
	t.style.display=s?"":"none";
	if(arguments.length==3) window.event.srcElement.innerHTML = s?c:o;
}

function getCookie (name, defaultValue)
{
    var arg  = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i    = 0;

    while (i < clen)
    {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg)
          return getCookieVal (j);
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return arguments.length==1?null:defaultValue;
}


function getCookieVal( offset )
{
    var endstr = document.cookie.indexOf (";", offset);

    if (endstr == -1)
        endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

/**
 * 	setCookie("name","val",exp,path, dom, sec);
 */
function setCookie( name, value )
{
    var argv    = setCookie.arguments;
    var argc    = setCookie.arguments.length;
    var expires = (argc > 2) ? argv[2] : null;
    var path    = (argc > 3) ? argv[3] : null;
    var domain  = (argc > 4) ? argv[4] : null;
    var secure  = (argc > 5) ? argv[5] : false;

    var k =
        name + "=" + escape (value) +
        ((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
        ((path == null) ? "" : ("; path=" + path)) +
        ((domain == null) ? "" : ("; domain=" + domain)) +
        ((secure == true) ? "; secure" : "");
    document.cookie = k;
}

function deleteCookie (name)
{
    var exp  = new Date();
    var cval = GetCookie (name);

    exp.setTime (exp.getTime() - 1);  // This cookie is history
    document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

function setLongCookie(name, val) {
	var d = new Date();
	d.setDate(d.getDate()+1000);
	setCookie(name, val, d);
	
}

getRequest = function () {
	if (window.XMLHttpRequest) return new XMLHttpRequest();
	if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP")||new ActiveXObject("Msxml2.XMLHTTP");
	return null;
}








function isChildNode(child, parent) {
	if(!child || child==document.body) return false;
	if(child==parent) return true;
	return isChildNode(child.parentNode, parent);
}

function markInTree(conteiner, textElement, spanClass) {
	if(arguments.length==2) var spanClass =  "searchmark";
	var text = typeof(textElement)=="object"?textElement.value:textElement;
	if(!text) return;
	if(typeof(conteiner)!="object") var conteiner = $(conteiner);
	var texts = text.split(" ");
	for(var i=0;i<texts.length;i++) {
		var range = window.document.body.createTextRange();
		while(range.findText(texts[i])) {
			if(isChildNode(range.parentElement(), conteiner)) range.pasteHTML("<span class='"+spanClass+"'>"+texts[i]+"</span>");
			else range.collapse(false);
			
		}
	}
}




function popupContent(contentID) {
	var o = $(contentID);
	if(o.style.display=="block") {
		o.style.display="none";
		return false;
	}
	var s = window.event.srcElement;
	o.style.display = "block";
	o.style.pixelLeft = getAbsX(s)-o.style.pixelWidth;
	o.style.pixelTop = getAbsY(s)+s.style.pixelHeight;
	o.onclick = function () {
		this.style.display = "none";
		return true;
	}
	return false;
}

var CONTEINERS = {};
function getConteiner(cID, cStyle, inner) {
	if(typeof(CONTEINERS[cID])!="object") {
		var e = $(cID);
		if(e) CONTEINERS[cID] = e;
		else  {
			CONTEINERS[cID] = document.createElement("DIV");
			CONTEINERS[cID].setAttribute("id", cID);
			document.forms[0].appendChild(CONTEINERS[cID]);
		}
	}
	if(cStyle!=null) CONTEINERS[cID].style.cssText = cStyle;
	if(arguments.length==3) CONTEINERS[cID].innerHTML = inner;
	return CONTEINERS[cID];
}



function popupImage(url) {
	var e = window.event.srcElement;
	if(e.tagName=="IMG") return false;
	var i = e.getElementsByTagName("IMG");
	if(i.length>0) {
		i[0].style.display = "block";
		return false;
	}
	
	var i = document.createElement("IMG");
	i.style.display = "none";
	e.appendChild(i);
	i.src = url+"&"+Math.random();
	i.style.cssText = "display: none;position: absolute; left:"+ (getAbsX(e)-100) +"px; top: "+ (getAbsY(e)-100) +"px; border: 1px solid #cccccc; cursor: hand;";
	i.alt = "Закрыть";
	i.onload = function() {  this.style.display = "block"; }
	i.onclick = function() { this.style.display = "none";  showBadElements(); }
	hideBadElements()
	return false;
}



function resizeCenter(e, w, h) {
	var ox = getAbsX(e);
	var oy = getAbsY(e);
	var ow = e.style.pixelWidth;
	var oh = e.style.pixelHeight;
	
	if(w<0) w=ow-w;
	if(h<0) h=oh-h;
	
	e.style.width = w;
	e.style.pixelHeight = h;
	e.style.posLeft -= (w-ow)/2;
	e.style.posTop -= (h-oh)/2;
}

function PWindow(content) {
	hideBadElements();
	content= '<img src="img/btn_close.gif" border="0" style="float: right; cursor: hand;" onclick="windowPopupClose(this.parentNode);" />'+content;
	var c = getConteiner("wpp",null,content);
	var st = $("searchtext");
	if(!st) return;
	st = st.value;
	markInTree(c, st);
//	resizeCenter(c, 300,300);
}

function windowPopup(url, x, y) {
	if(arguments.length==1) {
		var e = window.event.srcElement;
		var x = getAbsX(e);
		var y = getAbsY(e);
	}
	
	var c = getConteiner("wpp","position: absolute; overflow: auto; left:"+(x-150)+"px; top:"+(y-150)+"px; width: 400px!important; height: 400px!important; border: 2px solid #94D4F7; padding: 10px; background: white","<h3>Загрузка</h3>");
	var r = getRequest();
	if(!r) return false;
	r.onreadystatechange = function() { 
//		resizeCenter(c,-50,-50);
		if(r.readyState==4 && r.status==200) PWindow(r.responseText)
	}
	var _q = url.indexOf("?")==-1?"?":"&";
	r.open("GET",url+_q+"rand="+Math.random(), true);
	r.send(null);
}

function windowPopupClose(w) {
	w.style.display="none";
	showBadElements();
}








function findBadElements() {
	var sel = document.getElementsByTagName("SELECT");
	var obj = document.getElementsByTagName("OBJECT");
	var bad = [];
	for(var i=0;i<sel.length;i++) bad[bad.length] = sel[i];
	for(var i=0;i<obj.length;i++) bad[bad.length] = obj[i];
	return bad;
}
var BAD_ELEMENTS = -1;
var BAD_ELEMENTS_WIDTH = [];
function hideBadElements() {
	return;
	if(!NAV.isMSIE) return;
	if(BAD_ELEMENTS==-1) BAD_ELEMENTS = findBadElements();
	for(var i=0;i<BAD_ELEMENTS.length;i++) {
		BAD_ELEMENTS_WIDTH[i] = BAD_ELEMENTS[i].style.width;
		BAD_ELEMENTS[i].style.width = "0";
	}
}





function showBadElements() {
	return;
	if(!NAV.isMSIE || BAD_ELEMENTS==-1) return;
	for(var i=0;i<BAD_ELEMENTS.length;i++) BAD_ELEMENTS[i].style.width = BAD_ELEMENTS_WIDTH[i];
}


var Mover = {
	startX:0,
	startY:0,
	startMX:0,
	startMY:0,
	object: null,
	eventInit: false,
	type: 0,
	init: function () {
		if(Mover.eventInit) return;
		addEvent(window.document.body, "mousemove", Mover.move); 
		addEvent(window.document.body, "mouseup", Mover.up); 
		Mover.eventInit = true;
	},
	
	move: function() {
		if(!Mover.object) return true;
		var x=Mover.startX+mouseX()-Mover.startMX;
		var y=Mover.startY+mouseY()-Mover.startMY;
		switch(Mover.type) {
			case 0:	Mover.object.style.posLeft=x;
					Mover.object.style.posTop=y;
					break;
			case 1: Mover.object.style.width=x;
					Mover.object.style.height=y;
					break;
		}
	},
	up: function() {
		Mover.object = null;
	},
	
	
	
	
	start: function(obj_name, type) {
		Mover.type = arguments.length==1?0:type;
		Mover.object = $(obj_name);
		if(!Mover.object) return true;
		switch(Mover.type) {
			case 0: Mover.startX = getAbsX(Mover.object);
					Mover.startY = getAbsY(Mover.object);
					break;
			case 1:	Mover.startX = Mover.object.clientWidth;
					Mover.startY = Mover.object.clientHeight;
					break;
		}
		Mover.startMX = mouseX();
		Mover.startMY = mouseY();
		if(Mover.object.style.position!="absolute") {
			Mover.object.style.position="absolute";
			Mover.object.style.posLeft=Mover.startX;
			Mover.object.style.posTop=Mover.startY;
		}
		Mover.init();
		return false;
	}
}



function doRequest(request,display) {
	var d = $("doing");
	if(!d) { alert("Ошибка HTML"); return }
	if(!window.confirm("Вы действительно хотите "+display+":"+request)) return;
	$("doing").value = request;
	window.document.forms[0].submit();
	return true;
}

var RR="";

function setInnerHref(objID, href, type) {
	var r = getRequest();
	var o = $(objID);
	if(arguments.length==2) var type=1;
//	o.innerHTML = "Загрузка...";
	if(!r) {
		return;
	}
	r.onreadystatechange = function() { 
		if(r.readyState==4) {
			if(r.status==200) {
				switch(type) {
					case 1: o.innerHTML = r.responseText; break;
					case 2: o.outerHTML = r.responseText; break;
				}
				
//				alert(o.innerHTML);
			} else {
//				alert("ERROR CODE:"+r.status);
			}

		}
	}


	var _q = href.indexOf("?")==-1?"?":"&";
	if(href.indexOf("?")==-1) {
		href = href+"?"+"mrand="+Math.random()+HREF_PARAMS;
	} else {
		href = href.replace("?","?"+"mrand="+Math.random()+HREF_PARAMS+"&");
	}

//	r.open("GET",href+_q+Math.random()+HREF_PARAMS, true);
	r.open("GET",href, true);
	r.send(null);
	return false;
	
}

function ImgEWindow(title, imgSrc) {
	for(var i=1500;i-->0;title+="&nbsp;");
	var wn = 'mswin'+Math.random();
	wn = wn.replace(".","");
	var w= window.open('about:blank', wn,'location=0,directories=0,menubar=0,width=100,height=100,scrollbars=1,resizable=1');
	w.document.write('<html><head><title>'+title+'</title><'+'script>function rw() {var d=document;var aw = screen.availWidth;var ah = screen.availHeight;var nw = d.images[0].width +50;var nh = d.images[0].height +70;if(nw>aw) nw=aw;if(nh>ah) nh=ah;var px = (aw-nw)/2;var py = (ah-nh)/2;window.moveTo(px,py);window.resizeTo(nw,nh);}</'+'script></head><body topmargin="0" marginheight="0" leftmargin="0" marginwidth="0"><table width=100% height=100% bgcolor=#ffffff><tr><td align=center valign=middle><img src="'+imgSrc+'" onload="rw();" style="text-align: center;"></td></tr></table></body></html>');
}

function NewEWindow(href) {
	var wn = 'mswin'+Math.random();
	wn = wn.replace(".","");
	var w= window.open(href, wn,'location=0,directories=0,menubar=0,width=600,height=600');
	return false;
}

function go(url) {
	window.location.href=url;
}

function checkBoxCookies(obj, value) {
	obj.checked?setLongCookie(obj.id, value):deleteCookie(obj.id);
}


function extrRefreshInfo(tagID) {
	var rf = tagID.match(/\W+(RF)(\d+)\W+/i);
	return rf==null?null:[tagID,rf[2]];
}

function extractRefreshingTags(c) {
	if(!c) return;
	var h=[];
	return h;
	for(var i in c.childNodes) {
		var node = c.childNodes[i];
//		if(typeof(node)!="object") continue;
		
		var t=extractRefreshingTags(node); for(var j in t) h[h.length]=t[j];
		if(typeof(node.id)=="undefined" || node.id=="" || node.id.length<5 ) continue;
		if(node.id.indexOf("-")==-1) continue;
		var rf = extrRefreshInfo(node.id);
		if(rf==null) continue;
		h[h.length]=rf;
	}
	return h;
}


function refreshingPrecess() {
	var r = getRequest();
	if(!r) return;
	r.onreadystatechange = function() { 
		if(r.readyState==4) {
			if(r.status==200){
				var dt = r.responseText;
				dt = dt.split("\n");
				for(var i=0;i<dt.length;i+=2) {
					var o = $(dt[i]);
					if(o) o.innerHTML=dt[i+1];
				}
			}
			window.setTimeout(refreshingPrecess,5000);
		} 
	}
	r.open("POST","get.php?action=getmulty&rand="+Math.random(), true);
	r.setRequestHeader("Content-Type","application/x-www-form-urlencoded;"); // charset=windows-1251
	r.send(rfReq);
}

var rfTAGS = [];
var rfReq = "";
function refreshingStart() {
	
	
	
	rfTAGS = extractRefreshingTags(document.body);
//	alert(rfTAGS);
	if(rfTAGS.length>0) {
		var t=[];
		for(var i=0;i<rfTAGS.length;i++) t[t.length] = rfTAGS[i][0];
		rfReq = "tagids="+t.join(",");
		window.setTimeout(refreshingPrecess,2000);
	}
}





var tworks = {};
var twinited = false;
function initWorks() {
	if(twinited) return;
	for(var i in tworks) tworks[i].repaint();
	twinited = true;
}

function TWorks(alias) {
	this.alias = alias;
	this.tagName = alias;
	this.templates = {};
	this.itemsHTML = {};
	this.filters = {};
	document.write("<div id='"+this.tagName+"'>THIS</div>");
	
	this.repaint = function() {
		setLongCookie("ctest","Хорошие кукисы хорошему парню DVA YTRI");
		var h = "<a href='javascript:setInnerHref(\""+this.tagName+"\",\""+HOME_URL+"get.php?action=clientrequest&actionvalue=test&klk=3\")'>test</a>"
		$(this.tagName).innerHTML = "<h3>"+this.alias+"</h3>TWotks working "+h;
	}
	tworks[this.tagName] = this;
	addEvent(window, "load", initWorks); 
}




function filterClick(fname) {
	
	var form = $(fname+"-form");
	var img = $(fname+"-img");
	var opening = form.style.display!="block";
	
	if(opening) {
		form.style.posLeft = getAbsX(img)+16;
		form.style.posTop  = getAbsY(img)-16;
		form.style.display = "block";
	} else {
		form.style.display = "none";
	}
	
}


function doFilter(fname, target) {
	var id = target.split("-");
	id = id[id.length-1];
	filterClick(fname);
	setCookie(fname, $(fname).value, null, HOME_PATH); 
//	setCookie(fname, $(fname).value, null, HOME_PATH+"get.php"); 
//	setCookie(fname, $(fname).value); 
	setInnerHref(target, HOME_URL+"get.php?action=tracer&id="+id);
}


function clearFilter(fname, target) {
	var id = target.split("-");
	id = id[id.length-1];
	filterClick(fname);
	setCookie(fname, "", null, HOME_PATH); 
	setInnerHref(target, HOME_URL+"get.php?action=tracer&id="+id);
}



function navigatorClick(disp, target) {
//	alert(target);
	var id = target.split("-");
	id = id[id.length-1];
	setInnerHref(target, HOME_URL+"get.php?action=tracer&id="+id+"&"+disp);
	return false;
}


function orderClick(order_fid, target, direct) {
	var t = order_fid.split("_");
	var value = direct?"desc":"asc";
	value+="_"+t[1];
	
	var id = target.split("-");
	id = id[id.length-1];
	
	setCookie(target, value, null, HOME_PATH); 
//	setCookie(target, value); 

	setInnerHref(target, HOME_URL+"get.php?action=tracer&id="+id);
	
	
}

function array_merge(arr, arr2) {
	if(arr2) for(var i=0;i<arr2.length;i++) arr[arr.length] = arr2[i];
	return arr;
}


function getConteiterFormElements(conteiter) {
	var o = $(conteiter);
	var elements = [], look = ["select","input"];
	if(o) for(var i=0;i<look.length;i++) array_merge(elements, o.getElementsByTagName(look[i]));
	return elements;
}

function form2query(conteiner) {
	var  inputs = getConteiterFormElements(conteiner);
	var r = [];
	for(var i=0;i<inputs.length;i++) {
		var e = inputs[i], value="";
		switch(e.type) {
			case "select-multiple":	value = []; for(var io=0;io<e.length;io++) if(e.options[io].selected) value[value.length] = e.options[io].value;value = value.join(","); break;
			case "checkbox":		value = e.checked?1:0; break;
			default: value = e.value; //"text","select-one"
		}
		r[r.length] = e.name.replace("[]","")+"="+ escape(value);
	}
	return r.join("&");
}








function writeVote(votename, value) {
	if(value<0) {
		alert("Вы уже голосовали за эту запись");
//		writeMyVote(votename, 1);
		return;
	}
	for(var i=0,c,h="";i<5;i++) h+="<img src='img/vote/"+((c=value-(i<<1))<=0?0:c>1?1:5)+".gif' width=18 height=18>";
	var oVote = $(votename);
	if(!oVote) document.write("<span id='"+votename+"'>"+h+"</span>");
	else {
		oVote.innerHTML = h;
		$(votename+"c").innerHTML = 1+parseInt($(votename+"c").innerHTML);
	}
}

function writeMyVote(votename, voteOk) {
	var c = getCookie(votename,-1), h="";
	for(var i=0;i<5;i++) h+="<img id='"+votename+"_"+(i+1)+"' src='img/vote/"+(c>i?3:0)+".gif' width=18 height=18>";
	h="<span"+(c==-1?" onmousemove='votemove();' onmouseover='this.style.cursor=\"hand\"' onmouseout='voteout(\""+votename+"\")' onclick='voteclick();'":"")+">"+h+"</span>"
	if(arguments.length==1)	document.write(h);
	else $(votename+"_1").parentNode.outerHTML = h;
}

function voteout(votename) {
	for(var i=0;i<5;i++) {
		var img = $(votename+"_"+(i+1));
		img.src = img.src.replace("3.g","0.g");
	}
}

function votemove() {
	var e = window.event.srcElement;
	if(e.tagName!="IMG") return;
	var info = e.id.split("_");
	for(var i=0;i<5;i++) {
		var img = $(info[0]+"_"+(i+1));
		if(info[1]>i) img.src = img.src.replace("0.g","3.g");
		else img.src = img.src.replace("3.g","0.g");
	}
}

function voteclick() {
	var e = window.event.srcElement;
	if(e.tagName!="IMG") return;
	var info = e.id.split("_");
	setLongCookie(info[0], info[1])
	makeVote(info[0], info[1]);
	writeMyVote(info[0], true);
}

function makeVote(votename, votevalue) {
	var r = getRequest();
	r.onreadystatechange = function() { 
		if(r.readyState==4 && r.status==200) writeVote(votename, r.responseText);
	}
	r.open("GET",HOME_URL+"get.php?action=clientrequest&actionvalue=vote&votename="+votename+"&votevalue="+votevalue+"&rand"+Math.random()+HREF_PARAMS, true);
	r.send(null);
	
}


function markTableRow(color, hand) {
	var o = window.event.srcElement;
	if(o.tagName!="TD") return true;
	o = o.parentNode;
	for(var i=0;i<o.cells.length;i++) o.cells[i].style.backgroundColor = color;
	o.style.cursor = hand?"hand":"default";
}

function markSearchWords(zone, searchInput) {
	markInTree($(zone), "но");
	markInTree($(zone), "ов");
return;

	var txtSearch = $(searchInput).value;
	txtSearch = txtSearch.replace(/\"/,"");
	if(!txtSearch) return;
	var txtSearch = txtSearch.split(" ");
	for(var i=0;i<txtSearch.length;i++) {
		alert(txtSearch[i]);
		markInTree(document.body, txtSearch[i]);
	}
}
addEvent(window, "load", refreshingStart); 


