var ie6 = (jQuery.browser.msie && jQuery.browser.version < 7);

var sl = {
	boot:function(o) {
		$J(function(){
			sl.search.init();

		});
	}
};


sl.check = function(e){
	if (e.keyCode == 40 || e.keyCode == 38 || e.keyCode == 9){
		e.stopPropagation();
        e.cancelBubble = true;
		e.preventDefault();
		return false;
	}
	return true;
};

sl.search = {
	timer: 0,
	timeout: 0,
	banner2hideSelector: "div.adv-main-top > div.t, div.h980 > b",
	links: [],
	topLink: 1,
	hasContainer: false,
	query: '',
	minChar: 2,
	delay: 100,
	
	clearTimer: function() {
		clearInterval(this.timer);
	},

	setTimer: function(){
		var me = this;
		this.timer = setInterval(function() {
			me.closeSuggestDiv();
		}, 2000);
	},

	suggest: function(input){
		var form = $J(input).parent();
		this.query = encodeURIComponent($J.trim($J(input).val()));
		if (!form.siblings("div.startlapSuggestionResults").size())
			$J('<div />').addClass('startlapSuggestionResults').insertAfter(form);
		clearTimeout(this.timeout);
		if (this.query.length >= this.minChar){
			this.timeout = setTimeout(this.queryChanged, this.delay);
		}
	},

	queryChanged: function(){
		var $this = sl.search;
		$this.showBusy();
		$J.getJSON(
			"http://www.startlapkereso.hu/suggest?q="+ $this.query +"&uid=165&cid=833&callback=?",
			$this.suggestionCallback
		);
	},

	showBusy: function(){
		if (!$J("div.startlapSuggestionResults").siblings("form").children(".indicator").size())
			$J('<div />').addClass('indicator').appendTo($("div.startlapSuggestionResults").siblings("form"));
		$J("div.startlapSuggestionResults").siblings("form").children(".indicator").show();
	},

	hideBusy: function(){
		$J("div.startlapSuggestionResults").siblings("form").children(".indicator").hide();
	},

	closeSuggestDiv: function(){
		this.clearTimer();
		$J("div.startlapSuggestionResults").hide();
		if (!$J("#container").hasClass("alt"))
			$J(this.banner2hideSelector).siblings().css("visibility", "visible");
	},

	showSuggestDiv: function(){
		if ($J("div.startlapSuggestionResults li").size()) {
			$J("div.startlapSuggestionResults").show();
			if (!$J("#container").hasClass("alt"))
				$J(this.banner2hideSelector).siblings().css("visibility", "hidden");
		}
	},

	strongEnough: function(str){
		return "<b>"+ str +"</b>";
	},

	suggestionCallback: function(links){
		$J("div.startlapSuggestionResults ul").empty();
		$this = sl.search;
		$this.hideBusy();
		$this.links = links;
		$this.topLink = 0;
		if ($this.links.length) {
			$this.topLink = 1;
			var aContent = '';
			var linksHTML = '';
			var regexp = new RegExp($this.query, "ig");
			for (var i = 0; i < $this.links.length; i++) {
				aContent = $this.links[i].replace($J($this.links[i]).text(), $J($this.links[i]).text().replace(regexp, $this.strongEnough));
				linksHTML += "<li>"+ aContent +"</li>";
			}
			if (!$this.hasContainer){
				linksHTML = "<div id=\"controll\"><div id=\"upa\"><a tabindex=\"100\" href=\"#\">&nbsp;</a></div><div id=\"downa\"><a tabindex=\"100\" href=\"#\">&nbsp;</a></div><ul>"+
							linksHTML +
							"</ul></div>";
				$J("div.startlapSuggestionResults").append(linksHTML);
				$this.hasContainer = true;
				$J(".search input#gq, div.startlapSuggestionResults")
				.mouseover(function(){
					$this.clearTimer();
				})
				.mouseout(function(){
					$this.setTimer();
				});
				$(".search input#gq")
				.click(function(){
					$this.showSuggestDiv();
				});
			}
			else {
				$J("div.startlapSuggestionResults ul").html(linksHTML);
			}
			$J("div.startlapSuggestionResults ul a").attr("tabindex", 100);
			$this.showSuggestDiv();
		}
		else {
			$this.closeSuggestDiv();
		}
		$J("div.startlapSuggestionResults ul").css({"marginTop" : "0px"});
		$this.refreshArrows();
	},

	refreshArrows: function(){
		var vars = {
			up : $J("#upa").children('a'),
			down : $J("#downa").children('a')
		};
		if (this.links.length <= 4) {//leszedjük a nyilakat
			vars.up.css("visibility", "hidden");
			vars.down.css("visibility", "hidden");
		}
		else {
			var me = this;
			vars.lh = 23;
			vars.ul = $J("div.startlapSuggestionResults ul");
			vars.mTop = parseInt($J("div.startlapSuggestionResults ul").css("marginTop"));
			vars.scrollCount = 4;
			var stepOneLine = function(up){
				var marginTop = 0;
				if (up){
					if (me.topLink > 1){
						if (me.topLink <= 5){
							marginTop = 0;
							me.topLink = 1;
						}
						else {
							marginTop = vars.mTop + vars.scrollCount * vars.lh;
							me.topLink -= vars.scrollCount;
						}
					}
				}
				else {
					if (me.topLink < me.links.length){
						if ((me.links.length - (me.topLink + 4)) <= 4){
							marginTop = -(me.links.length - 4) * vars.lh;
							me.topLink = me.links.length - 3;
						}
						else {
							marginTop = vars.mTop - vars.scrollCount * vars.lh;
							me.topLink += vars.scrollCount;
						}
					}
				}
				vars.up.unbind("click");
				vars.down.unbind("click");
				vars.ul.animate({"marginTop" : marginTop +"px"}, 200, "linear", function(){
					me.refreshArrows();
				});
			};
			if (me.topLink > 1)
				vars.up
				.css("visibility", "visible")
				.unbind("click")
				.click(function(e){
					e.preventDefault();
					stepOneLine(true);
				});
			else
				vars.up.css("visibility", "hidden");

			if ((me.links.length - me.topLink) >= 4)
				vars.down
				.css("visibility", "visible")
				.unbind("click")
				.click(function(e){
					e.preventDefault();
					stepOneLine();
				});
			else
				vars.down.css("visibility", "hidden");
		}
	},
	
	init: function(){
		$J("div.startlapSuggestionResults a")
		.live("keydown", sl.check)
		.live("keypress", sl.check)
		.live("keyup", sl.check);

		$J("div.search a.c").click(function(){
			$J(this).siblings("a.c").removeClass("selected").children("input").attr('checked', '' );
			$J(this).addClass("selected").children("input").attr('checked', 'checked' );
			return false;
		});

		var form = $J("div.search form");
		var input = $J("input#gq", form);

		$J("a.r", form).click(function(){
			sl.startSearch(form.get(0));return false;
		});

		if ($J("a[href=#google]").hasClass("selected")){//ha a google az alap
			$J("img", form).show();
			input.focus(function(){
			$J(this).siblings("img").hide();
			if (typeof delRefresh == "function")
				delRefresh(ref);
			}).blur(function(){
			if ($J(this).val() == '')
				$J(this).siblings("img").show();
			});
		}
		else {//ha a startlap az alap
			input.keyup(function(e){
				sl.search.suggest(this);
				sl.check(e);
			})
			.click(function(){
				sl.search.showSuggestDiv();
				if (typeof delRefresh == "function")
					delRefresh(ref);
			});
		}

		$J("a[href=#google]").click(function(){
			input
			.unbind("keyup focus click blur")
			.focus(function(){
				$J(this).siblings("img").hide();
				clearTimeout(sl.search.timeout);
				sl.search.closeSuggestDiv();
				if (typeof delRefresh == "function")
					delRefresh(ref);
			})
			.blur(function(){
				if ($J(this).val() == '')
				$J(this).siblings("img").show();
			});
			input.focus();
		});
		//villogás ellen
		$J("a[href=#startlap]").hover(
			function(){
				input.unbind("blur");
			}, function(){
				if ($J("a[href=#google]").hasClass("selected"))
				input.blur(function(){
					if ($J(this).val() == '')
					$J(this).siblings("img").show();
				});
		});
		$J("a[href=#startlap]").click(function(){
			$J("img", form).hide();
			input
			.unbind("blur")
			.keyup(function(e){
				sl.search.suggest(this);
				sl.check(e);
			})
			.click(function(){
				sl.search.showSuggestDiv();
				if (typeof delRefresh == "function")
					delRefresh(ref);
			});
			input.focus();
		});
	}
};

sl.startSearch = function(form){
	var searchModule = $J("div.search a.c.selected").attr("href");
	var url;
	switch(searchModule){
		case "#google":
			url = "http://www.startlap.hu/web/";
			break;
		case "#startlap":
			url = "http://www.startlapkereso.hu/searchresult.jsp";
			break;
	}
	form.action = url;
	form.submit();
}

