var passDefVal = Array();

function replacePass(obj){
	inputFocus(obj);
	var newO=document.createElement("input");
	newO.setAttribute("type", "password");
	newO.setAttribute("id", obj.getAttribute("id"));
	passDefVal[obj.id] = obj.getAttribute("value");
	
	newO.defaultValue = obj.defaultValue;
	newO.setAttribute("value", "");
	
	newO.setAttribute("onkeydown", obj.getAttribute("onkeydown"));
	newO.onblur = function(){replaceToPass(this);};
	newO.onfocus = function(){inputFocus(this);};
    newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
	newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
	obj.parentNode.replaceChild(newO, obj);
	newO.focus();
	newO.focus();
}

function replaceToPass(obj){
	inputBlur(obj);
	if ((obj.value == null)||(obj.value == "")){
		var newO=document.createElement("input");
		newO.setAttribute("type", "text");
		
		newO.defaultValue = obj.defaultValue;
		newO.setAttribute("onkeydown", obj.getAttribute("onkeydown"));
        newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
		newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
		
		newO.setAttribute("value", passDefVal[obj.id]);
		newO.setAttribute("id", obj.getAttribute("id"));
		newO.onfocus = function(){replacePass(this);};
		obj.parentNode.replaceChild(newO, obj);
		newO.blur();
	}
}

var InputDefVal = Array();

function goTo(o, n){
	if(!document.all){
		var end = o.value.length;  
		o.setSelectionRange(n,n);  
		o.focus();  
	}
	else{      
		var r = o.createTextRange();      
		r.collapse(true);
        r.moveStart("character", n);
        r.moveEnd("character", 0);
        r.select();
	}
}

function replaceInput(obj, no_clear){
	var carPos = getCaretPos(obj);
	
	inputFocus(obj);
	var newO=document.createElement("input");
	newO.setAttribute("type", "text");
	newO.setAttribute("id", obj.getAttribute("id"));
	
	newO.defaultValue = obj.defaultValue;
	if (no_clear == true){newO.setAttribute("value", obj.defaultValue);}
	else {newO.setAttribute("value", "");}
	
	InputDefVal[obj.id] = obj.getAttribute("value");
	newO.onblur = function(){replaceToInput(this, no_clear);};
	newO.onfocus = function(){inputFocus(this);};
	newO.setAttribute("onkeydown", obj.getAttribute("onkeydown"));
    newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
	newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
	obj.parentNode.replaceChild(newO, obj);
	
	goTo(newO, carPos);
	
	newO.focus();
	newO.focus();
}

function replaceToInput(obj, no_clear){
	inputBlur(obj);
	if ((obj.value == null)||(obj.value == "")){
		var newO=document.createElement("input");
		newO.setAttribute("type", "text");
		
		newO.defaultValue = obj.defaultValue;
		newO.setAttribute("onkeydown", obj.getAttribute("onkeydown"));
        newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
		newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
		
		newO.setAttribute("value", InputDefVal[obj.id]);
		newO.setAttribute("id", obj.getAttribute("id"));
		newO.onfocus = function(){replaceInput(this, no_clear);};
		obj.parentNode.replaceChild(newO, obj);
		newO.blur();
	}
}

function replaceInputEdit(obj){
	obj.parentNode.className = obj.parentNode.className + "-focused";
}

function replaceToInputEdit(obj){
	obj.parentNode.className = obj.parentNode.className.replace("-focused", "");
}

var TextAreaDefInner = Array();

function replaceTextArea(obj){
	inputFocus(obj);
	var newO=document.createElement("textarea");
	newO.setAttribute("id", obj.getAttribute("id"));
	TextAreaDefInner[obj.id] = obj.innerHTML;
	
	newO.defaultValue = obj.defaultValue;
	newO.innerHTML = "";
	
	newO.onblur = function(){replaceToTextArea(this);};
	newO.onfocus = function(){inputFocus(this);};
    newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
	newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
	obj.parentNode.replaceChild(newO, obj);
	newO.focus();
	newO.focus();
}

function replaceToTextArea(obj){
	inputBlur(obj);
	if ((obj.value == null)||(obj.value == "")){
		var newO=document.createElement("textarea");
		
		newO.defaultValue = obj.defaultValue;
		newO.setAttribute("onkeydown", obj.getAttribute("onkeydown"));
        newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
		newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
		
		newO.innerHTML = TextAreaDefInner[obj.id];
		newO.setAttribute("id", obj.getAttribute("id"));
		newO.onfocus = function(){replaceTextArea(this);};
		obj.parentNode.replaceChild(newO, obj);
		newO.blur();
	}
}

function getCaretPos(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;
	}
	return 0;
}

var CommAreaDefInner = Array();

function replaceCommArea(obj, no_clear){
	var carPos = getCaretPos(obj);

	inputFocus(obj);
	var newO=document.createElement("textarea");
	newO.setAttribute("id", obj.getAttribute("id"));
	CommAreaDefInner[obj.id] = obj.innerHTML;
	
	newO.defaultValue = obj.defaultValue;
	if (no_clear == true){newO.value = obj.defaultValue;}
	else {newO.value = "";}
	
	newO.onblur = function(){replaceToCommArea(this, no_clear);};
	newO.onfocus = function(){inputFocus(this);};
	
	newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
	newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
	newO.style.height="70px";
	obj.parentNode.replaceChild(newO, obj);
	
	textareaAutoHeight(newO, 200);
	
	goTo(newO, carPos);
	
	newO.focus();
	newO.focus();
    
    //if (document.getElementById("new-add-comm-len-hidden")) document.getElementById("new-add-comm-len-hidden").style.display = "block";
    //if (document.getElementById("add_img_iframe_hidden")) document.getElementById("add_img_iframe_hidden").style.display = "block";
}

var t4;

function replaceToCommArea(obj, no_clear){
t4 = setTimeout(function(){
if (!obj.focused){

	inputBlur(obj);
	if ((obj.value == null)||(obj.value == "")){
		var newO=document.createElement("textarea");
		
		newO.defaultValue = obj.defaultValue;
		newO.setAttribute("onkeypress", obj.getAttribute("onkeypress"));
		newO.setAttribute("onkeyup", obj.getAttribute("onkeyup"));
		
		newO.innerHTML = CommAreaDefInner[obj.id];
		newO.setAttribute("id", obj.getAttribute("id"));
		newO.onfocus = function(){replaceCommArea(this, no_clear);};
		obj.parentNode.replaceChild(newO, obj);
		newO.blur();
        
        //if (document.getElementById("new-add-comm-len-hidden")) document.getElementById("new-add-comm-len-hidden").style.display = "none";
        //if (document.getElementById("add_img_iframe_hidden")) document.getElementById("add_img_iframe_hidden").style.display = "none";
	}
}
}, 200);
}

function declOfNum(number, titles){  
    cases = [2, 0, 1, 1, 1, 2];  
    return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];  
}  

function commLen(comm_text, lenText){
    if (!lenText){var lenText = "comm_len";}
	var comlen = comm_text.value.length;
	if (comlen >= 1000){
        comlen = 1000;
        comm_text.value = comm_text.value.substring(0, 1000);
    }
	document.getElementById(lenText).innerHTML = declOfNum(1000-comlen, ['Остался ', 'Осталось ', 'Осталось ']) + "<b>" + (1000-comlen) + "</b>" + declOfNum(1000-comlen, [' символ', ' символа', ' символов']);
}

function inputLenCut(textInput, maxLen){
    if (!maxLen){var maxLen = 100;}
	var inputLen = textInput.value.length;
	if (inputLen > maxLen){
        inputLen = maxLen;
        textInput.value = textInput.value.substring(0, maxLen);
    }
}

function tag_add(tag_name){
    if (document.getElementById('tags').value == document.getElementById('tags').defaultValue){
        replaceTextArea(document.getElementById('tags'));
    }
	document.getElementById('tags').value += tag_name.innerHTML + ", ";
}

function doCheckbox(elem){
	elem.checked ? elem.parentNode.style.backgroundPosition = '0px -20px' : elem.parentNode.style.backgroundPosition='0px 0px';
}

function checkSet(){
	var el=document.getElementsByTagName('input');
	for (var i=0; i<el.length; i++){
		if (el[i].type.toLowerCase() == 'checkbox'){
			doCheckbox(el[i]);
		}
	}
}

var InputClasses = Array();

function inputFocus(elem){
	if (!InputClasses[elem.id]){InputClasses[elem.id] = elem.parentNode.className;}
	elem.parentNode.className = InputClasses[elem.id] + "-focused";
}

function inputBlur(elem){
	elem.parentNode.className = InputClasses[elem.id];
}

function textareaAutoHeight(textarea, maxHeight){
	if (!maxHeight) maxHeight = 400;
	textarea.style.height = '';
	if (textarea.scrollHeight < 70){
		textarea.style.height = '70px';
		textarea.style.overflowY = 'hidden';
	}
	else {
		if (textarea.scrollHeight > maxHeight){
			textarea.style.height = maxHeight+'px';
			textarea.style.overflowY = 'auto';
		}
		else {
  			textarea.style.height = textarea.scrollHeight + 'px';
  			textarea.style.height = parseInt(textarea.style.height) - (textarea.scrollHeight - parseInt(textarea.style.height)) + 'px';
  			textarea.style.overflowY = 'hidden';
   		}
   	}
}

var z;

function tst(x,x2,speed,obj)
{
	var t,t2;
	this.appear = function() {
		var op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100;
		if(op < x) {
			clearTimeout(t2);
			op += speed;
			obj.style.opacity = op;
			obj.style.filter='alpha(opacity='+op*100+')';
			t = setTimeout(arguments.callee,10);
		}
	}
	this.disappear = function() {
		var op = (obj.style.opacity)?parseFloat(obj.style.opacity):parseInt(obj.style.filter)/100;
		if(op > x2) {
			clearTimeout(t);
			op -= speed;
			obj.style.opacity = op;
			obj.style.filter='alpha(opacity='+op*100+')';
			t2 = setTimeout(arguments.callee,10);
		}
	}
}

function wheel(event){
        var delta = 0;
        if (!event) event = window.event;
        if (event.wheelDelta) { 
                delta = event.wheelDelta/120;
        } else if (event.detail) { 
                delta = -event.detail/3;
        }
        if (delta && typeof handle == 'function') {
                handle(delta);
                if (event.preventDefault) event.preventDefault();
                event.returnValue = false;
        }
}

function bodyScrollOff(){
	if (window.addEventListener){
		window.addEventListener('DOMMouseScroll', wheel, false);
	}
	window.onmousewheel = document.onmousewheel = wheel;

   	handle = noScroll;
	
	function noScroll(){return false;}
	
	//document.body.style.overflow = "hidden";
}

function bodyScrollOn(){
	if (window.remEventListener){
		window.remEventListener('DOMMouseScroll', wheel, false);
	}
	window.onmousewheel = document.onmousewheel = null;

	handle = null;
	
	document.body.style.overflow = "auto";
	//document.body.style.overflow = "auto";
}

function addEv(){
	if (window.addEventListener){
		window.addEventListener('DOMMouseScroll', wheel, false);
		window.addEventListener('onkeydown', stopScroll, false);
	}
	window.onmousewheel = document.onmousewheel = wheel;
	window.onkeydown = document.onkeydown = stopScroll;
}

function remEv(){
	if (window.remEventListener){
		window.remEventListener('DOMMouseScroll', wheel, false);
		window.remEventListener('onkeydown', stopScroll, false);
	}
    window.onmousewheel = document.onmousewheel = null;
    window.onkeydown = document.onkeydown = null;
}

function stopScroll(){
	clearInterval(t3);
	handle = null;
	remEv();
}

var t3;

function yOffset(){
	if (window.pageYOffset) var yOffset = window.pageYOffset;
	else var yOffset = document.documentElement.scrollTop;
	return yOffset;
}

function scrollToTop(){
	handle = stopScroll;
	clearInterval(t3);
	addEv();
	t3 = setInterval(function(){
		if(yOffset() > 0){
			window.scrollBy(0,-parseInt((yOffset()/document.documentElement.clientHeight)*100)-10);
		}
		else {
			clearInterval(t3);
			handle = null;
			remEv();
		}
	}, 30);
}

function scrollToLink(id){
	if (!document.getElementById(id)) return false;
    var position = getElementPosition(id);
	var topPos = position['top'];

	handle = stopScroll;
	clearInterval(t3);
	addEv();
	t3 = setInterval(function(){
		if(yOffset() < topPos){
			window.scrollBy(0,parseInt(((topPos-yOffset())/document.documentElement.clientHeight)*100)+10);
		}
		else {
			clearInterval(t3);
			handle = null;
			remEv();
		}
	}, 30);
}

function insertAtCaret(tObj, textV){
	if (textV == '' || !tObj) return;
	var ver = 8;
	if (document.all && !window.opera){
		if (tObj.createTextRange && tObj.caretPos){
			var caretPos = tObj.caretPos;
			caretPos.text = textV;
		} else tObj.value += textV;
	} else {
		var brows = navigator.userAgent.toString();
		var scrollTop, scrollLeft;
		if (tObj.type == 'textarea' && tObj.scrollTop){
			scrollTop = tObj.scrollTop;
			scrollLeft = tObj.scrollLeft;
		}                
		if (brows.search(/opera\/?(\d*.\d*)/i) != -1) ver = RegExp.$1;
		if (tObj.selectionStart >= 0 && ver >= 8){
			if (tObj.textLength != undefined || tObj.value.length != undefined){
				var selLength = tObj.textLength != undefined ? tObj.textLength : tObj.value.length;
				var selStart = tObj.selectionStart;
				var selEnd = tObj.selectionEnd;
				if (selEnd == 1 || selEnd == 2) selEnd = selLength;
				var s1 = (tObj.value).substring(0, selStart);
				var s2 = (tObj.value).substring(selEnd, selLength);
				tObj.value = s1 + textV + s2;
				tObj.setSelectionRange(selStart + textV.length, selStart + textV.length);
			} 
			if (typeof scrollTop != 'undefined'){
				tObj.scrollTop = scrollTop;
				tObj.scrollLeft = scrollLeft;
			}
		} else tObj.value += textV;
	}
}

function pasteN(text){
    if (text!='' && document.getElementById('comm')){
    	clearTimeout(t4);
    	document.getElementById('comm').focus();
    	if (document.getElementById('comm').value == '') nstr = '';
    	else nstr = (window.opera ? "\r" :"") + "\n";
		insertAtCaret(document.getElementById('comm'), nstr + nstr + "Для [" + text + "]: ");
		commLen(document.getElementById('comm'));
		textareaAutoHeight(document.getElementById('comm'));
	}
}

function pasteQuestN(text){
    if (text!='' && document.getElementById('ansver')){
    	clearTimeout(t4);
    	document.getElementById('ansver').focus();
    	if (document.getElementById('ansver').value == '') nstr = '';
    	else nstr = (window.opera ? "\r" :"") + "\n";
		insertAtCaret(document.getElementById('ansver'), nstr + nstr + "Для [" + text + "]: ");
		commLen(document.getElementById('ansver'));
		textareaAutoHeight(document.getElementById('ansver'));
	}
}

function pasteWorkN(text){
    if (text!='' && document.getElementById('work-comment')){
    	clearTimeout(t4);
    	document.getElementById('work-comment').focus();
    	if (document.getElementById('work-comment').value == '') nstr = '';
    	else nstr = (window.opera ? "\r" :"") + "\n";
		insertAtCaret(document.getElementById('work-comment'), nstr + nstr + "Для [" + text + "]: ");
		commLen(document.getElementById('work-comment'));
		textareaAutoHeight(document.getElementById('work-comment'));
	}
}

var addEvent = function(elem, type, eventHandle){
	if (elem == null || elem == undefined) return;
	if (elem.addEventListener){
        elem.addEventListener(type, eventHandle, false);
    } else if (elem.attachEvent){
        elem.attachEvent("on" + type, eventHandle);
    }
}

var remEvent = function(elem, type, eventHandle){
	if (elem == null || elem == undefined) return;
	if (elem.removeEventListener){
        elem.removeEventListener(type, eventHandle, false);
    } else if (elem.detachEvent){
        elem.detachEvent("on" + type, eventHandle);
    }
}

function onLoadListener(){
	/* for Mozilla */
	if (document.addEventListener) {
		document.addEventListener("DOMContentLoaded", init, false);
	}

	/* for Internet Explorer */
	/*@cc_on @*/
	/*@if (@_win32)
		document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
		var script = document.getElementById("__ie_onload");
		script.onreadystatechange = function() {
			if (this.readyState == "complete") {
				init(); // call the onload handler
			}
		};
	/*@end @*/

	/* for Safari */
	if (/WebKit/i.test(navigator.userAgent)) { // sniff
		var _timer = setInterval(function() {
			if (/loaded|complete/.test(document.readyState)) {
				init(); // call the onload handler
			
				// kill the timer
				if (_timer) {
					clearInterval(_timer);
					_timer = null;
				}	
			}
		}, 10);
	}

	/* for other browsers */
	window.onload = init;
}

function init() {
	// quit if this function has already been called
	if (arguments.callee.done) return;
	
	// flag this function so we don't do the same thing twice
	arguments.callee.done = true;
	
	replaceImgs();
	loadImgs();

	tooltipAddInit();
};

function getOffsetRect(elem){
    var box = elem.getBoundingClientRect()
    var body = document.body
    var docElem = document.documentElement
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var clientTop = docElem.clientTop || body.clientTop || 0
    var top  = box.top +  scrollTop - clientTop
    return Math.round(top);
}

function elOfTop(element){
	if (element.offsetTop != 0) var ofTop = element.offsetTop;
	else var ofTop = getOffsetRect(element);
	return ofTop;
}

function replaceImgs(){
	for (var i = 0; i < document.images.length; i++){
    	imgs['src'][i] = document.images[i].src;
    	imgs['offsetTop'][i] = elOfTop(document.images[i]);
    	document.images[i].src = "/images/default-img.jpg";
	}
}

function loadImgs(){
	for (var i = 0; i < document.images.length; i++){
        // ie: document.documentElement.clientHeight; other: document.body.clientHeight
		if (imgs['src'][i] != null){
			if ((yOffset() + document.documentElement.clientHeight + 100) >= imgs['offsetTop'][i]){
				document.images[i].src = imgs['src'][i];
   				imgs['src'][i] = null;
   				imgs['offsetTop'][i] = null;
   			} 		
   		}
	}
}

onLoadListener();

var imgs = new Array();
imgs['src'] = new Array();
imgs['offsetTop'] = new Array();

addEvent(window, "scroll", loadImgs);
window.onscroll = document.onscroll = loadImgs;

function set_cookie(name, value, expires){
	if (!expires){
		expires = new Date();
		expires.setTime(expires.getTime() + (1000 * 86400 * 365));
	}
	document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString() +  "; path=/";
}

function get_cookie(name){
	cookie_name = name + "=";
	cookie_length = document.cookie.length;
	cookie_begin = 0;
	while (cookie_begin < cookie_length){
		value_begin = cookie_begin + cookie_name.length;
		if (document.cookie.substring(cookie_begin, value_begin) == cookie_name){
			var value_end = document.cookie.indexOf (";", value_begin);
			if (value_end == -1){
				value_end = cookie_length;
			}
			return unescape(document.cookie.substring(value_begin, value_end));
		}
		cookie_begin = document.cookie.indexOf(" ", cookie_begin) + 1;
		if (cookie_begin == 0){
			break;
		}
	}
	return null;
}

/*
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf("msie") != -1){
	alert("ie");
}
*/

var ie = !-[1,];
if (ie){
	if (get_cookie("ie_bad_hide") != "yes"){
		document.write("<div id='ie_bad'><p><b>Внимание!</b> Используемый вами интернет-браузер <b>(Microsoft Internet Explorer)</b> не соответствует многим веб-стандартам, из-за чего в нем этот и многие другие сайты могу отображаться не правильно; частично или полностью не работать. Так же, данный браузер, из-за многих ошибок, подвергает ваш компьютер большому риску заражения <s>вирусами</s> всякой компьютерной нечистью. А еще он работает медленнее, чем все остальные.</p><p>Советуем вам установить <s>человеческий</s> другой, хороший браузер: <b><a href='http://ru.opera.com/browser/' rel='nofollow' onclick='return !window.open(this.href);'>Opera</a>, <a href='http://www.mozilla-europe.org/ru/firefox/' rel='nofollow' onclick='return !window.open(this.href);'>Mozilla Firefox</a></b> или <b><a href='http://www.google.com/chrome/?hl=ru' rel='nofollow' onclick='return !window.open(this.href);'>Google Chrome</a>.</b> Они бесплатны, устанавливаются очень быстро и просто. Приятного времяпрепровождения!</p><p style='text-align: center;'><b><a href='#' onclick='set_cookie(\"ie_bad_hide\", \"yes\"); document.documentElement.style.backgroundPosition=\"0px 0px\"; document.getElementById(\"ie_bad\").parentNode.removeChild(document.getElementById(\"ie_bad\"));'>[ больше не показывать данное сообщение ]</a></b></p></div>");
		document.documentElement.style.backgroundPosition="0px " + document.getElementById('ie_bad').clientHeight + "px";
	}
}

var hide = true;

function moveTooltip(elem, event){
	if (!event) event = window.event;
    if (elem.getAttribute("tooltip")){var word = elem.getAttribute("tooltip");}
    else {var word = elem.tooltip;}

    word = word.replace(/\r\n|\r|\n/g,"<br />");
	if (word == "") word = "Автор забыл здесь что-либо написать...";

    _x = event.clientX;
	_y = event.clientY;
	_dx = 5;
	left = false;
	right = false;

    var tooltipBox = document.getElementById("tooltipBox");
    
	if(_dx + _x + tooltipBox.clientWidth > document.body.clientWidth){
		_x = document.body.clientWidth - tooltipBox.clientWidth - _dx;
		left = true;
	} 
	if(_dx + _y + tooltipBox.clientHeight > document.body.clientHeight){
		_y = document.body.clientHeight - tooltipBox.clientHeight - _dx;
		right = true;
	} 
	if(left && right) _y = document.body.clientHeight - tooltipBox.clientHeight - _dx*4; 

	var position = getElementPosition(elem.id);
	var leftPos = position['left'] + 13;
	var topPos = position['top'] + 22;

	tooltipBox.style.left = leftPos + "px";
	tooltipBox.style.top = topPos + "px"; 
    
    if(document.getElementById("imgBoxOverlay")) document.getElementById("imgBoxOverlay").style.visibility = "visible";

	if(hide){
		tooltipBox.innerHTML = word; 
		tooltipBox.style.visibility = "visible"; 
		hide = false; 
	}
}

function hideTooltip(){
    var tooltipBox = document.getElementById("tooltipBox");
	tooltipBox.style.visibility = "hidden"; 
	tooltipBox.innerHTML = ""; 
	tooltipBox.style.top = 0; 
	tooltipBox.style.left = 0; 
    if(document.getElementById("imgBoxOverlay")) document.getElementById("imgBoxOverlay").style.visibility = "hidden";
	hide = true; 
}

function getElementPosition(elemId){
    var elem = document.getElementById(elemId);

    var w = elem.offsetWidth;
    var h = elem.offsetHeight;
    
    var l = 0;
    var t = 0;

    while (elem){
        l += elem.offsetLeft;
        t += elem.offsetTop;
        elem = elem.offsetParent;
    }

    return {"left":l, "top":t, "width": w, "height":h};
}

var ids = 1;

function newTooltip(elem, event){
    if (!event) event = window.event;
	if (event.target){
        if (event.target.id != 'tooltipImage') return false;
    }
    else if (event.srcElement){
        if (event.srcElement.id != 'tooltipImage') return false;
    }
    else {
        
    }
	_x = event.clientX; 
	_y = event.clientY; 

	var tooltipIcon = document.createElement("div");
	tooltipIcon.id = "imgPopup_" + ids;
	tooltipIcon.className = "tooltipIcon";

    tooltipIcon.onmousemove = function(){moveTooltip(this, event);};
    tooltipIcon.onmouseout = function(){hideTooltip();};
    tooltipIcon.onclick = function(){delTooltip(this);};
    
    tooltipIcon.tooltip = "";

	_dx = 5;
	left = false;
	right = false; 
	
	if(_dx + _x + tooltipIcon.clientWidth > document.body.clientWidth){
		_x = document.body.clientWidth - tooltipIcon.clientWidth - _dx;
		left = true;
	}
	if(_dx + _y + tooltipIcon.clientHeight > document.body.clientHeight){
		_y = document.body.clientHeight - tooltipIcon.clientHeight - _dx;
		right = true;
	} 
	
	if(left && right) _y = document.body.clientHeight - tooltipIcon.clientHeight - _dx * 4; 

	var position = getElementPosition('imgBox');

	var leftPos = _x - position['left'] - 13;
	var topPos = _y + yOffset() - position['top'] - 22;
	if (leftPos > (position['width'] - 28)) leftPos = position['width'] - 28;
	if (topPos > (position['height'] - 23)) topPos = position['height'] - 23;
	if (leftPos < 0) leftPos = 0;
	if (topPos < 0) topPos = 0;
	tooltipIcon.style.left = leftPos + "px";
	tooltipIcon.style.top = topPos + "px";
	
	elem.appendChild(tooltipIcon);
	
	popupShow("<div class='new-reg-message'><div class='ok-title'>Введите текст отметки (до 500 символов)</div><a class='ok-close' href='#' id='imgPopup_" + ids + "_ok' onclick='imgPopupOk(this); clos(); return false;' title='Закрыть'></a>"	+ "<textarea id='imgPopup_" + ids + "_textarea' onkeypress='textareaAutoHeight(this); inputLenCut(this, 500);' onkeyup='textareaAutoHeight(this); inputLenCut(this, 500);' class='imgPopupTextarea'></textarea>" + "</div>");
	document.getElementById("imgPopup_" + ids + "_textarea").focus();

	ids++;
} 

function imgPopupOk(elem){
	elem.id.search(/(imgPopup_\d*)_ok/i);
	document.getElementById(RegExp.$1).tooltip = document.getElementById(RegExp.$1+"_textarea").value;
}

function delTooltip(elem){
	elem.parentNode.removeChild(elem);
	hideTooltip();
}

function tooltipAddInit(){
	var imgBoxObj = document.getElementById('imgBox');
	if (!imgBoxObj) imgBoxObj = document.getElementById('imgBoxModered');
	
	if(imgBoxObj){
		insertBef = document.getElementsByTagName("div")[0];
		if (imgBoxObj.id == "imgBox"){
			imgBoxObj.onclick = function(e){newTooltip(this, e);};
			if(!document.getElementById('tooltipTexts')){
				var tooltipTextsObj = document.createElement("div");
				tooltipTextsObj.id = "tooltipTexts";
				document.body.insertBefore(tooltipTextsObj, insertBef);
			}
		}
		if(!document.getElementById('tooltipBox')){
			var tooltipBoxObj = document.createElement("div");
			tooltipBoxObj.id = "tooltipBox";
			document.body.insertBefore(tooltipBoxObj, insertBef);
		}
	}
}

function hideTooltips(elem){
	var childNodeArray = document.getElementById('imgBoxModered').childNodes;
	for (var i = 0; i < childNodeArray.length; i ++){
		childNodeArray[i].id.search(/(imgPopup_)(\d*)/i);
        if(RegExp.$1 == 'imgPopup_') document.getElementById(RegExp.$1 + RegExp.$2).style.visibility = "hidden";
	}
    document.getElementById('tooltipsBar').style.visibility = "hidden";
    elem.innerHTML = "показать метки";
    elem.onclick = function(){showTooltips(this); return false;};
    return false;
}

function showTooltips(elem){
	var childNodeArray = document.getElementById('imgBoxModered').childNodes;
	for (var i = 0; i < childNodeArray.length; i ++){
		childNodeArray[i].id.search(/(imgPopup_)(\d*)/i);
        if(RegExp.$1 == 'imgPopup_') document.getElementById(RegExp.$1 + RegExp.$2).style.visibility = "visible";
	}
    document.getElementById('tooltipsBar').style.visibility = "visible";
    elem.innerHTML = "скрыть метки";
    elem.onclick = function(){hideTooltips(this); return false;};
    return false;
}

var winLocHash;
function ajax_url_wait(){
	if (window.location.hash != winLocHash){
 		winLocHash = window.location.hash;
 		
 		if (winLocHash.search(/^#(invite)$/i) != -1){invitedShow(); return false;}
 		
 		if (winLocHash.search(/^#(pc|wc|qa)(\d*)$/i) != -1){
			var type = RegExp.$1;
 			var num = RegExp.$2;
			
			if (!document.getElementById(type+num)){

				var links = document.getElementById('comm_list').getElementsByTagName("*");
				
				var comments = Array();
				
				for (var i = 0; i < links.length; i ++){
					if (links[i].id){
						if (links[i].id.search(/^(pc|wc|qa)(\d*)$/i) != -1){
							comments[i] = RegExp.$2;
						}
					}
				}

				var minComNum = comments[comments.length-1];

				if (num < minComNum){
					if (type == "pc"){
						comm_all(type+num);
						return false;
 					}
 					if (type == "wc"){
						work_comm_all(type+num);
 						return false;
 					}
 					if (type == "qa"){
						quest_ansvers_all(type+num);
 						return false;
 					}
				}
 			}
 			else {
 				var i = 255;
 				var tColorIn = setInterval(function(){
					document.getElementById(type+num).parentNode.parentNode.parentNode.style.background = "#"+rgb2hex(i,i,i);
					if (i == 240){
						clearInterval(tColorIn);
						var tColorOut = setInterval(function(){
							document.getElementById(type+num).parentNode.parentNode.parentNode.style.background = "#"+rgb2hex(i,i,i);
							if (i == 255){
								clearInterval(tColorOut);
								document.getElementById(type+num).parentNode.parentNode.parentNode.style.background = "";
							}
							i++;
						}, 500);
					}
					i--;
				}, 50);
 			}
 		}
 	}
}
// запускаем таймер
window.setInterval("ajax_url_wait()" , 1000);

