var Brw = new Object();

Brw.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');


function isValidChar(str,c_char) {
	var ret=false;
	for(var i=0; i < str.length; i++) {
		if(str.charAt(i)==c_char) ret=true;
	}
	return ret;
}
function findPosX(obj) {
        var curleft = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curleft += obj.offsetLeft;
                        obj = obj.offsetParent;
                }
        } else if (obj.x) curleft += obj.x;
        return curleft;
        var curtop = 0;
        if (obj.offsetParent) {
                while (obj.offsetParent) {
                        curtop += obj.offsetTop;
                        obj = obj.offsetParent;
                }
        } else if (obj.y) curtop += obj.y;
        return curtop;
}
function findPosY(obj)
{
	var curtop = 0;
	if(obj.offsetParent)
	while(1)
	{
		curtop += obj.offsetTop;
		if(!obj.offsetParent)
		break;
		obj = obj.offsetParent;
	}
	else if(obj.y)
	curtop += obj.y;
	return curtop;
}
var rq=new Object();
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/, ''); };
rq.send = function(url,data) {
        var req;
        if (window.XMLHttpRequest) {
                req = new XMLHttpRequest();
        } else if (window.ActiveXObject) {
                req = new ActiveXObject("Microsoft.XMLHTTP");
        }
         else return false;
        req.onreadystatechange = function() {
                if (req.readyState == 4) {// only if req shows "loaded"
                        if (req.status ==200) {// only if "OK"
                                callToolTipResponse(req,data);
                        }
			else return false;
                }
        }
	req.open("GET", url, true);
	req.send(null);
        return req;
}
var minInterval=5;
var start = new Date();
var ss = start.getTime();
var s_top=0;
var s_left=0;
var s_width=0;
var allchars='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzĆČŠĐŽćčšđžАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЮЯабвгдежзийклмнопрстуфхцчшщъьюя123456789';

function closeToolTip() {
	var container=document.getElementById("ttip_result_div");
	var dv=document.getElementById("tooltip");
	var cd=document.getElementById("tt_closediv");
	if(dv && container) {
		container.removeChild(dv);
		container.removeChild(cd);
	}
	var sc_bar=document.getElementById("sc_bar");
	if(sc_bar) {
		document.body.removeChild(sc_bar);
	}
}
function delayedSkipBack(obj) {
	obj.options.selectedIndex=0;
}
function delayedSkipForward(obj) {
	obj.options.selectedIndex=parseInt(obj.options.length-1,10);
}
function delayedSelectFirst(obj) {
	obj.focus();
	obj.options.selectedIndex=0;
}
function drawToolTip(arr) {
	if(document.getElementById("tooltip")) closeToolTip();
	var container=document.getElementById("ttip_result_div");
	var textinput=document.getElementById("c_keywords");
	var ul=Brw.isMozilla ? document.createElement("select") : document.createElement("<select multiple>");
	ul.multiple=true;
	ul.id="tooltip";
	ul.className=main_classname;
/*	ul.onfocus=function() {
		ul.firstChild.selected=true;
		ul.firstChild.focus();
	}*/
	ul.onkeydown=function() {
		if(!e) {
			var e=window.event;
		}
		var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
		keyCode=parseInt(keyCode);
		if(keyCode==9) {
			closeToolTip();
		}
		else if(keyCode==40) {
			if(ul.options[ul.options.selectedIndex].getAttribute("nr")==parseInt((ul.options.length-1),10)) {//last
				setTimeout(function() {delayedSkipBack(ul);},50);
				return false;
			}
		}
		else if(keyCode==38) {
			if(ul.options[ul.options.selectedIndex].getAttribute("nr")==0) {
				setTimeout(function() {delayedSkipForward(ul);},50);
				return false;
			}
		}
	}

	ul.onkeyup=function() {
			if(!e) {
				var e=window.event;
			}
			var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
			keyCode=parseInt(keyCode);
			switch(keyCode) {
				case 13:
					textinput.value=ul.value;
					textinput.focus();
					closeToolTip();
				break;
				case 27:
					closeToolTip();
					textinput.focus();
				break;
				case  38:
				default:
					return false;
				break;

			}
	}
	for(var i=0; i < arr.length;i++) {

		var aitem=document.createElement("option");
		aitem.setAttribute("nr",i);
		aitem.className="tip_txt";
		aitem.value=arr[i];
		aitem.innerHTML=arr[i];
		aitem.onclick=function() {
			textinput.value=this.value;
			textinput.focus();
			closeToolTip();
		}

		ul.appendChild(aitem);
	}

	var cl=document.createElement("div");
	cl.id="tt_closediv";
	cl.className="tooltip_closediv";
	cl.onclick=function() {
		closeToolTip();
	}
	if(Browser.isIE) {
		cl.style.position="relative";
		cl.style.top="-7px";
	}
	cl.innerHTML="close&nbsp;";

	container.appendChild(ul);
	container.appendChild(cl);

	if(Brw.isMozilla) {
		/* scroll bar */
		var dvv=document.createElement("div");
		dvv.id="sc_bar";
		dvv.className="sc_bar_"+main_classname;
		dvv.style.top=(s_top+21)+"px";		
		switch(main_classname) {
			case "tool_main_fp":
				dvv.style.top=(s_top+136)+"px"; // 115px from searchForm
				var inp_width = $('#c_keywords').offset().left + $('select.tool_main_fp').width() - 20;
				dvv.style.left=parseInt(s_left+inp_width-23)+"px";				
			break;
			case "tool_advanced":
				dvv.style.left=parseInt(s_left+inp_width-22)+"px";
			break;
			default:
				dvv.style.left=parseInt(s_left+inp_width-8)+"px";
			break;
		}

		document.body.appendChild(dvv);

	}
	return;
}
function verifTooltipKey(obj) {
	if(Browser.isOpera) return false;
	obj.setAttribute("autocomplete", "off");
	if(!e) {
		var e=window.event;
	}
	var keyCode = e.keyCode ? e.keyCode : e.which ? e.which : e.charCode;
	keyCode=parseInt(keyCode,10);
	if(keyCode == 9) {
		closeToolTip();
		return false;
	}
	else {
		callToolTip(obj,keyCode);
	}
}
function callToolTip(obj,keyCode) {
	if(keyCode == 13) {
		return false;
	}
	if(keyCode==27) {
		closeToolTip();
		return false;
	}
	if (keyCode == 40) {
		var dv=document.getElementById("tooltip");
		if(dv) {
			setTimeout(function() {delayedSelectFirst(dv);},20);
		}
		return;
	}
	var lastChar=obj.value.charAt(parseInt(obj.value.length-1));
	if(isValidChar(allchars,lastChar)==false) return false;
	if(obj.value.indexOf(lastChar)=="-1") {
		return false;
	}
	closeToolTip();
	var txt=obj.value.trim();
	if(txt.length < 3) return false;
	var end = new Date();
	var es = end.getTime();

	if(parseInt(es - ss)>minInterval) {
		url="http://www.bestjobs.bg/index/_tooltip/keyword/"+txt;
		rq.send(url,true);

		start = new Date();
		ss = start.getTime();
	}
	else {
		return false;
	}
}

function selectFirst(obj) {

}
function callToolTipResponse(response) {
	var rt=response.responseText;
	if(rt=="0") {
		closeToolTip();
	}
	else {
		rt=unescape(rt);
		drawToolTip(rt.split("|"));
	}
}
function afo(cont) {
	//document.getElementById("afo").innerHTML+=cont+"<br>";
}
window.onload=function() {
	var obj=document.getElementById("stext_container");
	if(obj) {
		s_top=findPosY(obj);
		s_left=findPosX(obj);
		
		var isRelocated = document.getElementById("searchForm");
		if (isRelocated)
		{
			var kwPos = $('#c_keywords').position();
			var posLeft = kwPos.left;
			var posTop = kwPos.top;
			
			s_left = posLeft;
			s_top = $.browser.msie ? posTop : posTop + 6; // 6 = total padding for c_keywords		
			//alert('s_left: ' + s_left + ', s_top: ' + s_top);
		}

		var obj1=document.getElementById("ttip_result_div");
		obj1.style.top=Brw.isMozilla ? parseInt(s_top+20)+"px" : parseInt(s_top+20)+"px";
		obj1.style.left=Brw.isMozilla ? parseInt(s_left+1)+"px" : parseInt(s_left)+"px";
	}
}