var agt	= navigator.userAgent.toLowerCase(); 
var iex	= (document.all);
var nav	= (document.layers);
var n_6	= (window.sidebar || agt.indexOf("safari") != -1);
var opr = (agt.indexOf("Opera")!= -1)
var old	= (navigator.appName == "Netscape" && !document.layers && !document.getElementById);

document.write('<div id="hover" class="hoverbox" style="visibility: hidden;"></div>');
document.write('<div id="popedit" class="popedit" style="visibility: hidden;">.</div>');
document.write('<div id="languages_selector" class="popedit_languages" style="visibility:hidden;">.</div>'); 

function getObject(id) {
	var object;

	if (document.getElementById) {
		object = document.getElementById(id);
	} else if (document.all) {
		object = document.all[id];
	} else {
		object = null;
	}

	return object;
}


var hover = getObject("hover");
var hover_offset_x = 0;
var hover_offset_y = 0;
var hover_start_x = 0;
var hover_start_y = 0;
var hover_set_visible = false;

var pop = getObject("popedit");
var pop_offset_x = 0;
var pop_offset_y = 0;
var pop_start_x = 0;
var pop_start_y = 0;
var pop_set_visible = false;
writeObjectContent(pop, "");

var lang = getObject("languages_selector"); 
var lang_offset_x = 0; 
var lang_offset_y = 0; 
var lang_start_x = 0; 
var lang_start_y = 0; 
var lang_set_visible = false; 
writeObjectContent(lang, ""); 

function writeObjectContent(object, content) {
	if (nav) {
		object.document.open();
		object.document.write(content);
		object.document.close();
	}
  object.innerHTML = content;
}

function readObjectContent(object) {
	if (nav) {
    return object.document;
	}
  return object.innerHTML;
}

function mouseMoveHover(x, y) {
	if (hover_set_visible) {
		hover.style.visibility	= "visible";
		hover.style.overflow	= "visible";
		hover_set_visible		= false;
		hover_start_x			= x;
		hover_start_y			= y;
	}

	if (hover.style.visibility == "visible") {
		// Kui asukoht on ebanormaalselt palju muutunud siis varjame kindlasti
		if (Math.abs(hover_start_x - x) > 200) hideHover();
		if (Math.abs(hover_start_y - y) > 200) hideHover();

		var content = getObject("hover_content");
		var offset_width = content.offsetWidth;

		var sum = x + hover_offset_x + offset_width;

		if (isNaN(window.scrollX)) {
			var size = document.body.clientWidth + document.body.scrollLeft;
		} else {
			var size = window.innerWidth + window.pageXOffset;
		}

		if (sum > size) {
			hover.style.left	= size - offset_width - 18 + 'px';
		} else {
			hover.style.left	= x + hover_offset_x + 'px';
		}
		hover.style.top		= y + hover_offset_y + 'px';
	}
}

function showHover(content, width) {
	if (old) return;
	
	writeObjectContent(hover, content);

	hover.style.width		= width;
	hover.style.height	= 'auto';
	hover_set_visible		= true;
}


function hideHover() {
	if (old) return;

	hover_set_visible		= false;
	hover.style.visibility	= "hidden";
	hover.style.overflow	= "hidden";
	hover.style.width		= '0px';
	hover.style.height		= '0px';
	hover.style.left		= '-1000px';
	hover.style.top			= '-1000px';
	writeObjectContent(hover, '');
}

function showTextHover(text, width) {
	width = typeof(width) != 'undefined' ? width : '200px';
	var content = '';

	content += '<div class="hover" id="hover_content">';
	content += text;
	content += '</div>';

	hover_offset_x = 15;
	hover_offset_y = 15;

	showHover(content, width);
}

function showTextHoverNewService(text, width) {
	width = typeof(width) != 'undefined' ? width : 'auto';
	var content = '';

	content += '<div class="hover" id="hover_content">';
	content += text;
	content += '</div>';

	hover_offset_x = 15;
	hover_offset_y = 15;

	showHover(content, width);
}

var cursor_x, cursor_y;

if (nav) document.captureEvents(Event.MOUSEMOVE);
if (n_6) document.addEventListener("mousemove", getMouse, true);
if (nav || iex) document.onmousemove = getMouse;

function getMouse(e) {	
		
	if (nav || n_6){
		cursor_x = e.pageX;
		cursor_y = e.pageY;
	}
	if (iex){
    
		cursor_x = event.clientX;
		cursor_y = event.clientY;
	}
	
	mouseMoveHover(cursor_x, cursor_y);
}

function mouseX(e) {
	if (e.pageX) return e.pageX;
	else if (e.clientX)
	   return e.clientX + (document.documentElement.scrollLeft ?
	   document.documentElement.scrollLeft :
	   document.body.scrollLeft);
	else return null;
}
function mouseY(e) {
	if (e.pageY) return e.pageY;
	else if (e.clientY)
	   return e.clientY + (document.documentElement.scrollTop ?
	   document.documentElement.scrollTop :
	   document.body.scrollTop);
	else return null;
}

function getWindowWidth(){
	var docwidth = 700;
	//opera Netscape 6 Netscape 4x Mozilla 
	if (window.innerWidth){ 
	docwidth = window.innerWidth; 
	} 
	//IE Mozilla 
	if (document.body.clientWidth){ 
	docwidth = document.body.clientWidth; 
	} 
	return docwidth;
}

function getWindowHeight(){
	var docheight = 600;
	//opera Netscape 6 Netscape 4x Mozilla 
	if (window.innerHeight){ 
	docheight = window.innerHeight; 
	} 
	//IE Mozilla 
	if (document.body.clientHeight){ 
	docheight = document.body.clientHeight; 
	}
	return docheight;
}


// pop div stuff
////////////////

var popVisible = false;
var popTime = 100;
var clickedObject = null; 

function popEdit(clickedObj,text,topoffset,leftoffset,width,autohide){
	if (old) return;
	if(!pop_set_visible){
		
		writeObjectContent(pop, text);
		
		pop.style.width		= 'auto';
		pop.style.height	= 'auto';
		pop.style.top		= getY(clickedObj) + topoffset + 'px';
		pop.style.left		= getX(clickedObj) + leftoffset + 'px';
		if(autohide) {
			pop.onmouseover 	= function() {popVisible=true;};
			pop.onmouseout		= function() {popCloseTimer(1000), clickedObj};
		}
		pop_set_visible		= true;
		if(!iex) pop.style.display	= "table";
		pop.style.visibility	= "visible";
	} else {
		closePopEdit();
	}
}

function closePopEdit(){
	pop_set_visible		= false;
	pop.style.visibility	= "hidden";
	if(!iex) pop.style.display	= "none";
	writeObjectContent(pop, '');
}

function popCloseTimer(time, obj){
	obj = typeof(obj) != 'undefined' ? obj : null;
	popVisible = false;
	popTime = time;
	setTimeout("if(!popVisible){closePopEdit();}",time);
	if(clickedObject == obj){ 
		setTimeout("if(!popVisible){closePopEdit();}",time);
	}
}

function showPop(clickedObj, contentID, autohide, distanceY, distanceX, newClass){
	autohide = typeof(autohide) != 'undefined' ? autohide : true;
	distanceY = typeof(distanceY) != 'undefined' ? distanceY : 17;
	distanceX = typeof(distanceX) != 'undefined' ? distanceX : 0;
	newClass = typeof(newClass) != 'undefined' ? newClass : "popedit";
	
	pop.className = newClass;
	var contentObj = getObject(contentID);
	popEdit(clickedObj, readObjectContent(contentObj), distanceY, distanceX, 40, autohide);
	popVisible = true;
	clickedObject = clickedObj; 
}

function popLang(clickedObj,text,topoffset,leftoffset,width,autohide) {
	if (old) return;
	if(!lang_set_visible){
		
		writeObjectContent(lang, text);
		
		lang.style.width		= 'auto';
		lang.style.height	= 'auto';
		lang.style.top		= getY(clickedObj) + topoffset + 'px';
		lang.style.left		= getX(clickedObj) + leftoffset + 'px';
		if(autohide) {
			lang.onmouseover 	= function() {langVisible=true;};
			lang.onmouseout		= function() {langCloseTimer(1000)};
		}
		lang_set_visible		= true;
		if(!iex) lang.style.display	= "table";
		lang.style.visibility	= "visible";
	} else {
		closeLang();
	}
}

function showLang(clickedObj, contentID, autohide, distanceY, distanceX, newClass){
	autohide = typeof(autohide) != 'undefined' ? autohide : true;
	distanceY = typeof(distanceY) != 'undefined' ? distanceY : 17;
	distanceX = typeof(distanceX) != 'undefined' ? distanceX : 0;
	newClass = typeof(newClass) != 'undefined' ? newClass : "popedit_languages";
	lang.className = newClass;
	var contentObj = getObject(contentID);
	popLang(clickedObj, readObjectContent(contentObj), distanceY, distanceX, 40, autohide);
	langVisible = true;
	clickedObject = clickedObj;
}

function closeLang(){
	lang_set_visible		= false;
	lang.style.visibility	= "hidden";
	if(!iex) lang.style.display	= "none";
	
	writeObjectContent(lang, '');
}

function langCloseTimer(time){
	langVisible = false;
	langTime = time;
	setTimeout("if(!langVisible){closeLang();}",time);
}

function getX(obj) {
    xPos = obj.offsetLeft;
    tempEl = obj.offsetParent;
	while (tempEl != null) {
		xPos += tempEl.offsetLeft;
		tempEl = tempEl.offsetParent;
	}
    return xPos;
}

function getY(obj) {//
    yPos = obj.offsetTop;
    tempEl = obj.offsetParent;
    while (tempEl != null) {
		yPos += tempEl.offsetTop;
		tempEl = tempEl.offsetParent;
	}
    return yPos;
}

function pausecomp(millis)
{
	var date = new Date();
	var curDate = null;

	do { curDate = new Date(); }
	while(curDate-date < millis);
}
