/**
 * @author Bog Imp
 */
var bk_w = 1000;
var bk_h = 800;
var bk_selected;
var bk_obj;
var bk_selection;
var curr_search_query;

function on_bk_select(img, selection){
    if (!selection.width || !selection.height) {
        bk_selected = false;
        $(".btnbkmrk").css("display", "none")
        return;
    }
    
    $(".btnbkmrk").css("display", "")
    
    bk_selected = true;
    
    bk_selection = selection;
}

function sp_mousewheel_bkmrk(){
    var cim = $('.prw');
    var im = $('.mwh');
    var hr = im.parent().attr("href");
    var pp = im.parent().parent();
    var txt = $('h3.r', pp).text();
    var desc = $('div.s', pp).text();
    var vurl = $('cite', cim.parent().parent()).html()
    //
    var im = $('.mwh');
    var hr = im.parent().attr("href");
    var pp = im.parent().parent();
    //
    var sX = cim.width() / bk_w
    var sY = cim.height() / bk_h
    //
    var url = "/bookmarks/bookmark_add.php";
    var data = {
        x1: bk_selection.x1 / sX,
        x2: bk_selection.x2 / sX,
        y1: bk_selection.y1 / sY,
        y2: bk_selection.y2 / sY,
        iw: cim.width(),
        ih: cim.height(),
		title: txt,
        url: hr,		
        description: desc,
		image: cim.attr("src")
    }
    //
	addToBookmarks(data);	
	//
    sp_mousewheel_del();
}
/**
 * Mouse Wheeel
 */
function sp_mousewheel_del(){
    bk_selected = false;
    bk_obj = null;
    
    $('.mwh').each(function(index, elem){
        $(this).removeClass("mwh");
    });
    $('.dmwh').remove();
}

function spd_mousewheel(event, delta){
    if (bk_selected) 
        return;
    
    var w = $(".prw", this).attr("width") + (delta * 10);
    if (w < 320) 
        w = 320;
    if (w > 400) {
        if (!$(this).hasClass("loading")) {
            $(this).addClass("loading");
            $(this).append($('<img class="updating" src="/im/update.gif" style="top:0;left:0;margin:2px 5px;position:absolute;"/>'));
            //
            var im = $('.mwh');
            var l = im.parent().attr("href");
            //
            $(".prw", this).load(function(){
                $(".updating").remove();
            })
            // $(".prw", this).attr("src",
            // "/getwebshot.php?url="+l+"&w="+bk_w+"&h="+bk_h);
            //
            $(".prw", this).attr("src", "//scr1.searchgby.com/getwebshot.php?url=" + l +
            "&w=" +
            bk_w +
            "&h=" +
            bk_h);
        }
    }
    $(".prw", this).css("width", w);
    $(".prw", this).css("height", "auto");
    
    return false;
}

function sp_mousewheel(event, delta){
    if (!$(this).hasClass("mwh")) {
        $(this).addClass("mwh");
        $(this).removeClass("hvr");
        $(this).css("z-index", "2");
        $(this).css("width", "100px");
        $(this).css("height", "75px");
        
        var p = $(this).position();
        bk_obj = $(this);
        
        $("<div/>")
			.addClass("dmwh")
			.css("left", p.left)
			.css("top", p.top)
			.css("z-index", "90")
			.bind('mousewheel', spd_mousewheel)
			.appendTo($(this).parent().parent().parent().parent())
			.append(
				$("<img/>")
					.addClass("prw")
					.css("cursor", "crosshair")
					.attr("src", $(this).attr("src"))
					.imgAreaSelect({
            			parent: ".dmwh",
            			zIndex: 92,
            			handles: true,
            			fadeSpeed: 200,
            			onSelectChange: on_bk_select
        			}))
			.append(
				$("<img/>")
					.addClass("btncls")
					.attr("src", '/im/close.gif')
					.attr("title", 'Close')
					.click(sp_mousewheel_del)
					.css("z-index", "99")
				)
			.append(
				$("<img/>")
					.addClass("btnbkmrk")
					.attr("src", '/im/bookmark.gif')
					.attr("title", 'Bookmark')
					.click(sp_mousewheel_bkmrk)
					.css("display", "none")
					.css("z-index", "99")
				)
			.append(
				$("<div class='hintbkmrk'> Some Hint here </div>")
			)
    }
    return false;
}

function sp_img_click(e)
{
	var lnk = $(this); 
	var img = $('img', lnk);
	img = $(img[0]);
	// 
	img.css("z-index", "99");
	img.animate({
		width: 320,
		height: 240
	}, "fast", sp_mousewheel);
	
	//$.ga.trackPageview("/thumbnail/click/");
	
	return false;
}

function sp_img_over(d){
    if ($(this).hasClass("mwh")) 
        return;
    if ($(this).hasClass("hvr")) 
        return;
    //
	$(this).addClass("hvr");
	//
	//
	$(this).append($("<img src='/im/zb.png' id='zab'/>"))
}

function sp_img_out(d){
    if ($(this).hasClass("mwh")) 
        return;
    if (!$(this).hasClass("hvr")) 
        return;
    //	
    $(this).removeClass("hvr");
	//
	$("#zab").remove();
	/*
	$(this).animate({
        marginTop: '0',
        width: 100,
        height: 75
    }, "fast", null, function(){
        $(this).css("z-index", "2")
    });
    */
}
/**
 * Bookmarks
 */
/**
 * Add to Bookmarks
 * @param {String} url
 * @param {String} title
 * @param {String} desc
 * @param {String} image
 */
var gritterID = null;		
function addToBookmarks(data)
{	
	$.authBookmarks(function(rdata){
		//
		if (rdata.auth == "false") {
			//
			function showLoginDialog(e){
				$("<div/>")
					.append(
						$("<iframe frameborder='no'/>")
							.attr("src", "/auth/")
							.attr("width", "400px")							
							.attr("height", "150px")
						)
					.dialog({
						title:  "Login",
						bgiframe: true,
						width: 450,
						height: 300,
						modal: true,
						position: ['top', 100],
						buttons: {
							Ok: function() {
								$(this).dialog('close');
									$.gritter.remove(gritterID);
									gritterID = null;														
								}
						}
					});
				return false;
			}			
			//
			if(gritterID == null)
			{
				var html = $("<div> Login first </div>");
				html.append($("<button>Login</button>").button().click(showLoginDialog));
				//
				gritterID = $.gritter.add({
					title: "Login",
					text: "<div id='bookmark-auth'>Loading..</div>",
					sticky: true,
					time: ''				
				});			
				//
				$('#bookmark-auth').html(html);
			}
		}else{
			$.gritter.add({
				title: data.title,
				text: data.description,
				image: data.image,
				sticky: false,
				time: 2000
			});			
			$.addToBookmarks(data)
		}
	});
}
/**
 * FastPreview
 */

function URLEncode(str) 
{ 
    str = escape(str); 
    while (str.indexOf("/")!=-1) 
    { 
        str = str.replace("/","%2F"); 
    } 
    return str; 
} 
function generateJcarFastPreview(val, carousel)
{
	var vmode = $.cookie('fpr_view_mode');
	if(!vmode)vmode = "normal";
	
	var wmw = 500;
	var wmh = 400;
	
	if(vmode == "big")
	{
		wmw = 700;
		wmh = 560;		
	}else if(vmode == "small"){
		wmw = 250;
		wmh = 200;	
	}
	
	if(val == undefined) return false;
	if(carousel.loading == undefined)carousel.loading = 0;	
	var lib = $('<li class="vdls-loading"></li>');
	
	var iurl = "";
	var alt = val.title;	
	var info = val.content;
		
	if (curr_search_type == "images") {
		//lic = '<iframe frameborder="0" style="width:720px; height:400px;" src="' + val.imageUrl + '"/></iframe>';
		iurl = val.imageUrl;
	}else{
		
		iurl = "//scr1.searchgby.com/getwebshot.php?url=" + URLEncode(val.url) + "&w=" + wmw + "&h=" + wmh;		
	}
	
	carousel.loading++;
	
	if($('.jcarousel-loading').length == 0)
	{
		var p = $('.jcarousel-next').position()
		$('<div class="jcarousel-loading"></div>')
			.css("top", p.top + 40)
			.css("left", p.left)
			.prependTo($('.jcarousel-container'))
	}
	
	var sim = $('<img />')
				.attr('src', iurl)
				.attr('alt', alt)
				.attr('width', wmw)
				.attr('height', wmh)
    			.load(function(){					
					var s = carousel.size()?carousel.size():0;
					carousel.add(s, lib);
					carousel.size(s+1);
					carousel.loading--;					
					if(carousel.loading == 0)
					{
						$('.jcarousel-loading').remove();
					}					
    			});
				
	lib.append(
		$('<a href="' + val.url + '" target="_blank"></a>')
			.append(
				$('<div class="preview" style="width:100%; display: block;"/>')
					.append(sim)
				)			
		);

	lib.append('<div class="info">' + info + '<div class="vu">' + generateUrl(val.url, 25) + '</div></div>')
	
	return lib;
}
function fastPreviewToolbarClick(e)
{
	$.cookie('fpr_view_mode', $(this).attr("class"));
	showFastPreview(); 
}
function showFastPreview()
{
	var w = $("#fstpr").width();
	if(w>800)w = 800;		
	var h = $(window).height()*.8;
	//
	var itemsMax = 5;
	var items = 0;
	var itemsData = [];			
	//
	var tbl = $('<ul id="vdls-fpr-tbl"><li class="big" title="Big"></li><li class="normal" title="Normal"></li><li class="small" title="Small"></li></ul>');	
	var jCar = $('<ul id="vdls-fpr-jcar" class="jcarousel-skin-tango"/>');	
	//	
	$.each(allTabData["google"].results, function(i, val){
		itemsData.push(val);				
	});
	$.each(allTabData["bing"].results, function(i, val){
		itemsData.push(val);				
	});
    /*
	$.each(allTabData["yahoo"].results, function(i, val){
		itemsData.push(val);				
	});
    */
	
	$("#fstpr").html("");
	jCar.append('<li class="vdls-loading"><a href="#"><div class="preview" style="width:100%; width:100%; height:400px; display: block;"/></a>' +
					'<div class="info">Loading...</div></li>')
	
	
	$('<div id="vdls-fpr"/>')
		.appendTo($("#fstpr"))
		.css("width", w)
		.append(tbl)
		.append(jCar)
		
	var lastIdx = itemsMax;
	
	var itemLoadCallback = function(carousel, state)
	{
		if(state == "init")
		{
			carousel.size(0);
			for(var i = 0; i< itemsMax; i++)
			{
				var iobj = itemsData.pop()
				if (iobj != undefined) {
					generateJcarFastPreview(iobj, carousel)
				}										
										
			}	
		}		
	};
		
	var itemLastInCallback = function(carousel, item, idx, state){
		if(idx == lastIdx - 2)
		{
			//carousel.lock();
			var ii = lastIdx;
			lastIdx = lastIdx + itemsMax;			
			for(var i = 0; i< itemsMax; i++)
			{
				var iobj = itemsData.pop()
				if (iobj != undefined) {
					generateJcarFastPreview(iobj, carousel)
				}										
			}						
		}
	}					
			
	jQuery('#vdls-fpr-jcar').jcarousel({
		scroll:1, 
		visible:1,
		itemLoadCallback: {onBeforeAnimation: itemLoadCallback},
		itemLastInCallback: itemLastInCallback
	});
	
	$("#vdls-fpr-tbl li")
		.click(fastPreviewToolbarClick)
		.mouseover(function(){
			var px = $(this).css("backgroundPosition").split(' ');									
			$(this).stop().animate({backgroundPosition:"(" + px[0] + " -20px)"}, {duration:200})
		})
		.mouseout(function(){
			var px = $(this).css("backgroundPosition").split(' ');
			$(this).stop().animate({backgroundPosition:"(" + px[0] + " 0)"}, {duration:200})
		})	
		
	var q = $('#search-query').attr("value");	
	//$.ga.trackPageview("/fast/" + curr_search_type + "/" + q);
}	
	
/**
 * Preview
 */
function previewSite(url, title)
{
	var w = $("#main-tabs").width() - 200;	
    var h = $(window).height()*.75;// - 60;       
	//
	var l = $("#main-tabs").tabs("length") + 1;
	var tab = $("#main-tabs").tabs("add",'#sp' + l, limitStr(title,20));
	//	
	//$("<div/>")
		//.addClass("site-preview")
		//.attr("id", "site-preview")
	$('#sp' + l)
		.css("width", w)
		.css("height", h)
		.append(
			$('<iframe/>')
			.attr("id", "site-preview-frame")
			.attr("frameborder", "0")
			.css("width", "100%")
			.css("height", "100%")
			.attr("src", url)
		)
	$("#main-tabs").append($('#pages'));
	
	//$('#pages').hide();
	
	//$.ga.trackPageview("/preview/" + url);
}
/**
 * Search
 */
var curr_search_type = "web";
//
function acFormatItem(row){
    if (row[1]) 
        return row[0];
		return row[0] + "<div class='sqitm'>" + row[1] + " </div>";
    return row
}
//
function generateUrl(url, nn){
	var _url  = url;
	if(!nn) nn = 50;
	if (_url.indexOf("http://")>0) {
		_url = url.substr(url.indexOf("http://") + 7);
	}
	if (_url.indexOf("https://")>0) {
		_url = url.substr(url.indexOf("https://") + 8);
	}
	if(_url.length > nn)
	{
		//_url = _url.substr(0, 25);
		//var nni = _url.indexOf("/", _url.indexOf("/")+1)+1
		//if(nni< nn)nni = nn;
		_url = _url.substr(0, nn) + "...";
	}
	if(_url[_url.length-1] == "/")_url = _url.substr(0, _url.length-1);	
	return _url; 
}

function limitStr(str, nn, ss){
	if(!ss) ss = "...";
	if(!nn) nn = 50;
	if(!str)return ""; 
	if(str.length > nn)
		return str.substr(0, nn) + ss;
	return str;
}
//
function parseSearchWebResult(data){
    var ul = $("<ul class='res web'/>");
    $.each(data.results, function(i, val){
        var li = $("<li class='g'/>")
        //li.html('<a href="' + val.url + '" title="' + val.titleNoFormatting + '" target="_blank">' + val.title + "</a> - " + val.content);
        //		
		var th_url = "//images.thumbshots.com/image.aspx?cid=nbSsaU8guJc%3d&v=1&w=300&url=" + val.url
		//
        $("<a/>")
			.addClass("th")
			.attr("href", val.url)
			//.attr("target", "_new")
			.click(sp_img_click)
			.hover(sp_img_over, sp_img_out)								
			.append(
				$("<img/>")
					.attr("src", th_url)
					.attr("width", "100")
					.attr("height", "75")
					.attr("alt", val.titleNoFormatting)
					).prependTo(li)
        //
        $("<a/>")
			.attr("href", val.url)
			.attr("target", "_new")
			.append(
				$("<h3 class='r'/>").html(limitStr(val.title, 50))
				)
			.appendTo(li)
		//			
		$("<div/>")
			.attr("title", "Preview Site")
			.addClass("pr")
			.text("Preview")
			.click(function(){
				previewSite(val.url, val.title)
			})			
			.appendTo(li)
		//
		$("<div/>")
			.attr("title","Add to Bookmarks")
			.addClass("bk")
			.text("Bookmark")
			.click(function(){
				addToBookmarks({
					url: val.url,
					title: val.title,
					description: val.content,
					image: th_url
				})
			})			
			.appendTo(li)		
        //
        $("<div class='s'/>").appendTo(li).html(limitStr(val.content,250))
		$("<div class='vu'/>").appendTo(li).html(generateUrl(val.url))
        //
        li.appendTo(ul);
    });
    return ul;
}
//
//
var optImageDialogWidth = "40%";
var optImageDialogHeight = "auto";
function parseSearchImagesResult(data){
    var ul = $("<ul class='res images'/>");
    $.each(data.results, function(i, val){
        var li = $("<li class='g'/>")
        //	
		var aaa = $("<a/>").click(function(evn){
				var t = $(evn.currentTarget);
				$("<div/>")
					.addClass("dlg-pr-im")					
					.append(
						$('<iframe/>')
							.attr("frameborder", "0")
							.css("width", "100%")
							.css("height", "100%")
							.attr("src", t.attr("href"))
						)
/*					
						$("<img/>")
							.attr("src", t.attr("href"))
							.css("width", "100%")							
						)
*/						
					.dialog({
						title:  t.attr("title"),
						bgiframe: true,
						modal: true,
						width: optImageDialogWidth,
						height: optImageDialogHeight,
						maxHeight: "40%",
						position: ['top', 100],
						beforeclose: function(event, ui) {
							optImageDialogWidth = $(this).width();								
							optImageDialogHeight = $(this).height();
						},
						buttons: {
							Ok: function() {
								optImageDialogWidth = $(this).width();								
								optImageDialogHeight = $(this).height();								
								$(this).dialog('close');
								}
						}
					});
					return false;
			})
		aaa.addClass("impr")
			.attr("href", val.url)
			.attr("title", val.titleNoFormatting)
			.html("<img src='"+val.tbUrl+"' width='"+val.tbWidth+"' height='"+val.tbHeight+"' alt='"+val.titleNoFormatting+"'/>")
			.prependTo(li)
        //
/*		
        $("<a/>")
			.attr("href", val.url)
			.append(
				$("<h3 class='r'/>")
				.html(val.title))
			.appendTo(li)
        //
        $("<div class='s'/>").appendTo(li).html(val.content)
* /        
		<div class="std">
		<div class="f">400 x 389 &ndash; 23 ÐšÐ±&nbsp;-&nbsp;jpg</div>
		<div class="a"><cite style="font-style: normal;">blogs.phoenixnewtimes.com</cite></div><div class="eft"><a href="//images.google.com.ua/images?q=bomb&amp;oe=utf-8&amp;client=firefox-a&amp;rlz=1R1GGLL_en&amp;um=1&amp;ie=UTF-8&amp;hl=uk&amp;tab=wi&amp;imgtype=i_similar&amp;sa=X&amp;ei=63qRS8jaBqjwmwO9u8CFCw&amp;ct=img-sim-l&amp;oi=image_sil&amp;resnum=1&amp;tbnid=CC5joW5zY_xnAM:" class="fl">Ð—Ð½Ð°Ð¹Ñ‚Ð¸ Ð¿Ð¾Ð´Ñ–Ð±Ð½Ñ– Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ�</a></div></div>
		*/
		$("<div class='s'/>").appendTo(li).html(limitStr(val.content,30))
		$("<div class='di'/>").appendTo(li).html(val.width + " x " + val.height)		
		$("<div class='vu'/>").attr("title", val.url).appendTo(li).html(generateUrl(val.url, 25))
        //
        li.appendTo(ul);
    });
    return ul;
}

function parseSearchNewsResult(data){
    var ul = $("<ul class='res web'/>");
    $.each(data.results, function(i, val){
        var li = $("<li class='g'/>")
        //li.html('<a href="' + val.url + '" title="' + val.titleNoFormatting + '" target="_blank">' + val.title + "</a> - " + val.content);
        //
		var th_url = "//images.thumbshots.com/image.aspx?cid=nbSsaU8guJc%3d&v=1&w=300&url=" + val.url
		//
        $("<a/>")
			.addClass("th")
			.attr("href", val.url)
			//.attr("target", "_new")
			.click(sp_img_click)
			.hover(sp_img_over, sp_img_out)
			.append(
				$("<img/>")
					.attr("src", th_url)
					.attr("width", "100")
					.attr("height", "75")
					.attr("alt", val.titleNoFormatting)
					).prependTo(li)
        //
        $("<a/>")
			.attr("target", "_new")
			.attr("href", val.url)
			.append($("<h3 class='r'/>").html(val.title)).appendTo(li)
		//
		$("<div/>")
			.attr("title","Preview Site")
			.addClass("pr")
			.text("Preview")
			.click(function(){
				previewSite(val.url, val.title)
			})			
			.appendTo(li)
		//
		$("<div/>")
			.attr("title","Add to Bookmarks")
			.addClass("bk")
			.text("Bookmark")
			.click(function(){
				addToBookmarks({
					url: val.url,
					title: val.title,
					description: val.content,
					image: th_url
				})
			})			
			.appendTo(li)
        //
        $("<div class='s'/>").appendTo(li).html(limitStr(val.content,200))
		$("<div class='pu'/>").appendTo(li).html("<b>" + val.source + "</b> " + generateUrl(val.url, 30))        
		//
        li.appendTo(ul);
    });
    return ul;
}
function generatePages(page, pages)
{
	$("#pages").remove();
	//
	var ul = $("<ul>");
	var p = page - 6;
	if(p<0)p = 0;
	//
	var add = "/search/#" + curr_search_type + "/" + $('#search-query').attr("value");
	//
	if (pages > page + 5)pages = page + 5;
	//
	if (page <= 2) {
		pages = 7;		
	}
	
	//
	//if (pages > 7)pages = 7;
	//
	if (page > 0) {
		$("<li>").append($("<a/>").attr("href", add).attr("ref", (page-1)*8).click(function(e){
			search(null, null, $(this).attr("ref"))
		}).html($("<img src='images/arrow_left.png' alt='Prev'/>"))).appendTo(ul);
	}	
	//
	var i;
	for(i = p; i<pages; i++)
	{
   		if(i == page)
		{
			$("<li>").addClass("cur").text(i+1).appendTo(ul);
			/*
			?>
            <td class="cur">
                <span class="csb"/><?php echo $i+1; ?>
            </td>			
			<?php
			*/
		}else{
			var nnn = i;
			$("<li>").append(
				$("<a/>")
					.attr("href", add)
					.click(function(e){search(null, null, (this.text-1)*8)})
					.text(i+1)
				).appendTo(ul);
			/*
			?>
            <td>
                <a href="{search_url}&start=<?php echo $i*$search_per_page; ?>"><span class="csb ch"/><?php echo $i+1; ?></a>
            </td>			
			<?php
			*/			
		}
   }
	$("<li>").append(
		$("<a/>")
			.attr("href", add)
			.attr("ref", ((page+1) * 8))
			.click(function(e){search(null, null, $(this).attr("ref"))})
			.html($("<img src='images/arrow_right.png' alt='Next'/>"))
		).appendTo(ul);
   
	//
	$("<div id='pages'/>")
		.append(ul).appendTo('#main-tabs')
}

Array.prototype.uniqueResults = function(){
    var a = [];
    var l = this.length;
    for (var i = 0; i < l; i++) {
        for (var j = i + 1; j < l; j++) {
            if (this[i].url === this[j].url) 
                j = ++i;
        }
        a.push(this[i]);
    }
    return a;
};
var tmpUniqueSearchResults = [];
//
function uniqueSearchResults(arr){
    var a = [];
    var l = arr.length;
	for (var i = 0; i < l; i++) {
		var url = arr[i].url;
		var f = false;
		for (fa in tmpUniqueSearchResults)
		{
			if(fa == url)
			{
				f = true;
			}
		}
		if(!f)
		{
			tmpUniqueSearchResults.push(url);
			a.push(arr[i]);
		}
    }
    return a;
}

function sortResults(a, b){
    return a.n - b.n;
}

var allTabData = {}
var filterDublicates = false;

function parseAndGenerateSearchResult(data)
{
    if (data.type == "web") 
        ul = parseSearchWebResult(data);
    
    if (data.type == "images" || data.type == "Image") 
        ul = parseSearchImagesResult(data);
		
    if (data.type == "news") 
        ul = parseSearchNewsResult(data);
	
	if (data.type == "blogs") 
        ul = parseSearchWebResult(data);
    
	if (data.type == "twitter") 
        ul = parseSearchWebResult(data);
	
	return ul;
}

function generateFiltered()
{
	var div = $("<div/>");	
	tmpUniqueSearchResults = [];
	//
	var newData = {}
	newData.results = uniqueSearchResults(allTabData["google"].results).sort(sortResults);
	newData.type = allTabData["google"].type;		
	div.append($("<div class='ggl-tb'></div>"));
	div.append(parseAndGenerateSearchResult(newData));
	//
	newData.results = uniqueSearchResults(allTabData["bing"].results).sort(sortResults);
	newData.type = allTabData["bing"].type;		
	div.append($("<div class='bng-tb'></div>"));
	div.append(parseAndGenerateSearchResult(newData));
	//
    /*
	newData.results = uniqueSearchResults(allTabData["yahoo"].results).sort(sortResults);
	newData.type = allTabData["yahoo"].type;		
	div.append($("<div class='yho-tb'></div>"));
	div.append(parseAndGenerateSearchResult(newData));
    */
	//
	tmpUniqueSearchResults = [];
	//	
	$('#filter').html(div);	
}
//
function generateAllTab(){
	var div = $("<div/>");
	//
	if (allTabData["google"].results.length > 0) {
		div.append($("<div class='ggl-tb'></div>"));
		div.append(parseAndGenerateSearchResult(allTabData["google"]));
	}
	//
	div.append($("<div class='bng-tb'></div>"));
	div.append(parseAndGenerateSearchResult(allTabData["bing"]));
	//		
    /*
	div.append($("<div class='yho-tb'></div>"));
	div.append(parseAndGenerateSearchResult(allTabData["yahoo"]));
    */
	//
	$('#gby').html(div);
}
function parseAllTab(data){
	if(!allTabData[data.search])
	{
		allTabData[data.search] = data;
	}
	//
	if(allTabData["google"] && allTabData["bing"] /*&& allTabData["yahoo"]*/)
	{
		var sTab = $("#main-tabs").tabs("option", "selected");
		if(sTab == 0)generateAllTab();
		if(sTab == 4)generateFiltered();
		if ($("#main-tabs").tabs("option", "selected") == 5) {
			showFastPreview();
		}		
		//	
		//
		// generate pages
		if(!allTabData["bing"].start)allTabData["bing"].start = 0;
		var ni = Math.floor(allTabData["bing"].start / 8);
		var ttl = /*1 * allTabData["yahoo"].totalResults +*/
		1 * allTabData["google"].totalResults +
		1 * allTabData["bing"].totalResults;
		//
		var buffer = '';
		var orig = '' + ttl;
		//
		var iteration = 0;
		//
		if (orig[0] != undefined) {
			for (var i = (orig.length - 1); i >= 0; --i) {
				if (((iteration % 3) == 0) && (iteration > 0)) {
					buffer = ' ' + buffer;
				}
				buffer = orig[i] + buffer;
				iteration++;
			}
			//
			$("#ttlres").html("Search Results <strong>" + buffer + "</strong>");
		}else{
			$("#ttlres").html("Search Results <strong>" + ttl + "</strong>");
		}		
		var np = allTabData["bing"].totalResults;
		var np_b = allTabData["bing"].totalResults;
		if(np > np_b)np = np_b;
		var np_y = allTabData["bing"].totalResults;
		if(np > np_y)np = np_y;
		//
		generatePages(ni,  Math.floor(np/8));
		//
		applyAdv();
	}
}

function renderTab(index){
	var cl;
	var data;
	var gat = ""
	switch (index) {
		case 0:
			generateAllTab();
			gat = "all";			
			break;		
		case 1:
			data = allTabData['google']	;		
			cl = "ggl-tb";
			gat = "google";
			break;
		case 3:
			data = allTabData['yahoo'];
			cl = "yho-tb";
			gat = "yahoo";
			break;
		case 2:
			data = allTabData['bing'];
			cl = "bng-tb";
			gat = "bing";
			break;
		case 4:
			generateFiltered();
			gat = "filter";
			break;		
	}	
	//$.ga.trackPageview("/tab/" + gat);	
	if(cl)
	{
		$('#' + data.search).html($("<div class='" + cl + "'></div>"));
		$('#' + data.search).append(parseAndGenerateSearchResult(data));
	}
	
}

function parseSearchResult(q, data){
	var sTab = $("#main-tabs").tabs("option", "selected");
	var r = false;
	if (sTab < 5) {
		var cl = "";
		switch (data.search) {			
			case "google":
				r = sTab == 1;
				cl = "ggl-tb";
				break;
			case "yahoo":
				r = sTab == 2;
				cl = "yho-tb";
				break;
			case "bing":
				r = sTab == 3;
				cl = "bng-tb";
				break;
			case "all":
				r = sTab == 0;
				cl = "all-tb";
				break;
		}
		if (r) {
			var ul = parseAndGenerateSearchResult(data)					
			$('#' + data.search).html($("<div class='" + cl + "'></div>"));
			$('#' + data.search).append(ul);
		}
	}
	parseAllTab(data);   
}

function search(q, t, s){
	$('#hs-' + curr_search_type).removeClass("curr");
	
	allTabData = {}	
	//
    if (!q) 
        q = $('#search-query').attr("value");

    if (!t) {
        t = curr_search_type;
    }
    else {
        curr_search_type = t;
    }

    curr_search_query = q;

	$.googleSearch({
        "q": q,
        "type": t,
		"start": s,
        "success": function(data){
            parseSearchResult(q, data)
        }
    });
    $.bingSearch({
        "q": q,
        "type": t,
		"start": s,
        "success": function(data){
            parseSearchResult(q, data)
        }
    });	
    /*
    $.yahooSearch({
        "q": q,
        "type": t,
		"start": s,
        "success": function(data){
            parseSearchResult(q, data)
        }
    });	
	*/
	$('#search-btn-a').attr("href", "/search/#" + t + "/" + q)
	$('#hs-web').attr("href", "/search/#web/" + q)	
	$('#hs-images').attr("href", "/search/#images/" + q)
	$('#hs-news').attr("href", "/search/#news/" + q)
	$('#hs-blogs').attr("href", "/search/#blogs/" + q)
	$('#hs-twitter').attr("href", "/search/#twitter/" + q)
	$('#search-form').attr("class", 'srch-' + t)
	$('#hs-' + t).addClass("curr");
	
	//if($.ga.trackPageview)$.ga.trackPageview("/search/" + t + "/" + q);

	sAdv(curr_search_query);
}
var adv_data = [];
function sAdv(q)
{
	$.ajax({
   		url: "/adv/ads/",
   		data: "subid=site&terms=" + encodeURIComponent(q) + "&ref=" + encodeURIComponent(window.location.href),
   		dataType: "json",
   		success: function(resp){
			/*adv_data = [];
            /*
			$(xmlres).find("listing").each(function(){
				adv_data.push({
					"title":$(this).find("title").text(),
					"url":$(this).find("url").text(),
					"redirect":$(this).find("redirect").text(),
					"description":$(this).find("description").text()
				});
			});
            /**/
			adv_data = resp.adv;
			applyAdv();
   		}
 	});
}

function applyAdv()
{
	if(adv_data && adv_data.length >0)
	{
		$(".vdls-adv").remove();
		$.template( "advtp", '<a id="pa1" href="${red}" class="noline"><li class="tas knavi" style="position: relative; "><h3>{{html title}}</h3>{{html desc}}<br><span><cite>${url}</cite></span></li></a>' );
		var ol = $.tmpl("advtp", adv_data);
		$('<div id="vdls-adv" class="vdls-adv"/>')
			.append($('<ol/>').html(ol))
			.prependTo($("#gby"));			
	}
}


function initMain()
{
	//$.ga.load("UA-17434452-1");
	
	$('#usrbr-login').click(showLoginDialog)
	$('#usrbr-register').click(showRegisterDialog)
	//
	$('#search-query').focus();
}

