function addBookmark(url, title)
{
    if (!url) url = location.href;
    if (!title) title = document.title;

    if ((typeof window.sidebar == "object") && (typeof window.sidebar.addPanel == "function")) window.sidebar.addPanel (title, url, "");
    else if (typeof window.external == "object") window.external.AddFavorite(url, title);
    else if (window.opera && document.createElement)
    {
        var a = document.createElement('A');
        if (!a) return false; //IF Opera 6
        a.setAttribute('rel','sidebar');
        a.setAttribute('href',url);
        a.setAttribute('title',title);
        a.click();
    }
    else return false;

    return true;
}

function ltrim(str) {
	for(var k = 0; k < str.length && isWhitespace(str.charAt(k)); k++);
	return str.substring(k, str.length);
}

function rtrim(str) {
    for(var j=str.length-1; j>=0 && isWhitespace(str.charAt(j)) ; j--) ;
    return str.substring(0,j+1);
}

function isWhitespace(charToCheck) {
	var whitespaceChars = " \t\n\r\f\.\-";
	return (whitespaceChars.indexOf(charToCheck) != -1);
}

function doSearch() {
    var searchform_errorfield = document.getElementById('search_form_error'), searchform = document.getElementById('searchForm');

    if (!searchform) return false;

    f();

    var q_raw = searchform.query.value.substr(0, 90);


    if(q_raw.length<1){
    	b();
    	 return false;
    }
	q_raw = q_raw.replace(/[\,\.]/g, "-");
	q_raw = q_raw.replace(/[\/\\]/g, " ");
	//q_raw = q_raw.replace(/[\[\]{}!@#\$%\^\&\*\(\);:\+\?\<\>]/g, " ");
	q_raw = q_raw.replace(/[\u0020-\u002F\u003A-\u0040\u005B-\u0060\u007B-\u007E\u00D7\u00F7\u02B0-\u0385\u0387\u038B\u038D\u03A2\u03CF\u0482-\u0489\u0514-\u0530\u0557-\u0560\u0588-\u05CF\u05EB-\u0620\u063B-\u0640\u064B-\u065F\u066A-\u066D\u0674\u06D4\u06D6-\u06ED]/g, " "); 
	//alert(q_raw);
	
    var q_a = q_raw.split(/[\s\\\/\-\+\?\'\"\`,_ ]+/g);

    var q = '';
    for(i in q_a){
        q_aa = q_a[i].split('/(?=v?(?:\d+?\.)+)(v?(?:\d+?\.?)+)|(\w+)/');

        for(j in q_aa){
            if(q_aa[j] != ''){
                q += '-'+rtrim(q_aa[j]);
            }
        }
    }
//    var href_str = searchform.action + encodeURIComponent(ltrim(q.toLowerCase()));
    var href_str = '/result.html?q=' + encodeURIComponent(ltrim(q.toLowerCase()));
//    if (content_type == "video") {href_str = href_str + "-11112111";}
//    href_str += '/'; 
    top.location.href = href_str;
    return false;
}

function encodeSearchShortURI() {
	var pageNumber = '1', fileType = 0, hostingId = 0, daysForSearch = 0, sizeMin = 0, sizeMax = 0;
	var encodedURI = '1';
	if (pageNumber > 0) {
		encodedURI += '1'+pageNumber.length+pageNumber;
	}
	else {
		encodedURI += '111'
	}
	if (fileType > 0) encodedURI += '2'+fileType.length+fileType;
	if (hostingId > 0) encodedURI += '3'+hostingId.length+hostingId;
	if (daysForSearch > 0) encodedURI += '4'+daysForSearch.length+daysForSearch;
	if (sizeMin > 0) {
		zerosCount = substr_count(sizeMin, '0');
		zerosCount = zerosCount>0?zerosCount:'';
		sizeMin = sizeMin.replace(/0/g, '');
		encodedURI += '5'+sizeMin.length+sizeMin+zerosCount;
	}
	if (sizeMax > 0) {
		zerosCount = substr_count(sizeMax, '0');
		zerosCount = zerosCount>0?zerosCount:'';
		sizeMax = sizeMax.replace(/0/g, '');
		encodedURI += '6'+sizeMax.length+sizeMax+zerosCount;
	}
	sum = 0;
	$.each(encodedURI, function(index, elem) {
			sum += parseInt(elem);
		}
	);
	return encodedURI+(sum%encodedURI.length);
}

function substr_count (haystack, needle, offset, length) {
    var pos = 0, cnt = 0;
    haystack += '';
    needle += '';
    if (isNaN(offset)) {offset = 0;}
    if (isNaN(length)) {length = 0;}
    offset--;
    while ((offset = haystack.indexOf(needle, offset+1)) != -1){
        if (length > 0 && (offset+needle.length) > length){
            return false;
        } else{
            cnt++;
        }
    }
    return cnt;
}

function externalLinks() {  
	 if (!document.getElementsByTagName) return;  
	 var anchors = document.getElementsByTagName("a");  
	 for (var i=0; i<anchors.length; i++) {  
	   var anchor = anchors[i];  
	   if (anchor.getAttribute("href") &&  
	       anchor.getAttribute("rel") == "external")  
	     anchor.target = "_blank";  
	 }  
	}  
	window.onload = externalLinks;

function getGlobalIntersect(query, type){
	if (type == null) {
		type = "";
	}
	if(typeof PingerData == 'undefined' || !PingerData || !PingerData.length)
	    return false;
	
	if (isBotRequest())
		return false;
	var resultset = new Array();
	var ReferrerQueryString = GetReferrerQueryString();
	if (ReferrerQueryString)
	    queryArr = ReferrerQueryString.toString().toLowerCase().split(" ");
	else
	    queryArr = query.toString().toLowerCase().split(" ");
	if (!queryArr || !queryArr.length || queryArr.length>10)
		return false;
	for (i in queryArr) {
		if (queryArr[i].length > 25)
			return false;
	}
	
	
	if (type == 'video') result = 100;
	else {
		for(i=0;i<PingerData.length;i++){
		   resultset.push(PingerData[i].replace(/<\/?[^>]+>/gi, '').replace(/\..*/,''));
		}
		if (resultset && resultset.length)
			var result = getIntersect(resultset,prepareQueryResultArrays(queryArr));
	}
	if (result){
	    if (ReferrerQueryString || currentPage < 2)
		$.post(
			'/_pinger/', {
				type: type,
				key: getQuery(query),
				ref: ReferrerQueryString,
				intersect: result
			}
		);
	}
}

function in_array(what, where) {
	for(var i=0; i<where.length; i++)
		if(what == where[i]) 
			return true;
	return false;
}
                            
function prepareQueryResultArrays(item){
	var stopWords = new Array(
		'de', 'la', 'the', 'isna', 'do', 'by', 'so', 'za','of', 'da', 'sur', 'el', 'los', 'en', 'wo', 'jo', 'ko', 'al', 'di', 'con', 'in', 'to', 'por',
		'on', 'at', 'ich', 'para', 'del', 'em', 'me', 'xxxcom', 'pb', 'mi', 'ex', 'mu', 'ki', 'su', 'las', 'iso', 'br', 'pl', 'pdf', 'descarga', 'ix', 'xx', 'ggw', 'si', 'lex', 'ni', 'as', 'mi', 'sus',
		'download', 'free', 'ver', 'descargar', 'gratis', 'www', 'com', 'and', 'online',
		'rar', 'zip', 'wmw', 'avi', 'exe'
	);
	var fordel = new Array();
	var length = item.length;
	for(var i=0; i<length;i++){
		if (item[i].length < 2 || in_array(item[i],stopWords)){
			item.splice(i,1);
			length--;
			i--;
		}
	}
	return array_unique(item);
}

function getIntersect(items,aQuery){
	var intersect=0;
	if (items){
		for (i=0;i<items.length;i++){
			itemArr = prepareQueryResultArrays(items[i].toString().toLowerCase().split(" "));
			var current_intersect = Math.round(across(itemArr,aQuery).length / (aQuery.length) * 100);
			if ( current_intersect > intersect ){
				intersect = current_intersect;
			}
		}
		if ( intersect > 0) return intersect;
	}
	
	return 0;
}

function across(a1, a2){
	var arez=new Array();
	if (a1.length==0 || a2.length==0)
		return arez;
	a1 = array_unique(a1);
	a2 = array_unique(a2);
	var i=0,j;
	while (i<a1.length){
		j=0;
		while (j<a2.length){
				if (a1[i]==a2[j]) {
				   arez.push(a1[i]);
				   break;
				}
			   j++;
		}
		i++;
	}
	return array_unique(arez);
}

function array_unique( array ) {
	var p, i, j;
	for(i = array.length; i;){
		for(p = --i; p > 0;){
			if(array[i] === array[--p]){
				for(j = p; --p && array[i] === array[p];);
				i -= array.splice(p + 1, j - p).length;
			}
		}
	}

	return array;
}

function GetReferrerQueryString() {
	var referer = document.referrer ;
	if(!referer)
		return false;

	var matches_array = referer.match(/(google|yahoo|bing|rapiddigger)/g);
	if(matches_array)
	{
		var referer_query = decodeURIComponent(referer.replace(/\+/g, '%20'));
		if (matches_array[0]=='google' || matches_array[0]=='bing'){
			var found = referer_query.match(/q=(.*?)&.*/);
			if (found && found[0]){
				return getQuery(found[1]);
			}
		}
		else if (matches_array[0]=='yahoo'){
			var found = referer_query.match(/p=(.*?)&.*/);
			if (found && found[0]){
				return getQuery(found[1]);
			}
		}
	}
	return false;
}

function getQuery(aQuerystr) {
	if (!aQuerystr ) return false;
	aQuerystr = decodeURIComponent(aQuerystr.replace(/\+/g, '%20'));
	return aQuerystr
		.replace(/\)|\(|\*|\&|\^|%|\$|#|@|\!|\}|\{\|"|'|;|`|:|\/|=|\+|\~|<|>|,|\?|\[|\]|\|/g, "")
		.replace(/([v|b|vol])(\.)(\d+)/g, "$1!$3")
		.replace(/(\.)(\d)/g, "^$2")
		.replace(/([a-zA-Z]{1,})(\^)/g, "$1 ")
		.replace(/\.|_/g, ' ')
		.replace(/\^|\!/g, '.')
		.replace(/(\.)(\d+[a-zA-Z])/g, " $2")
		.replace(/[\-]{2,999}/g, '-')
		;//.replace(/([\pM\pS\pZ\pP])+/g, ' ');
}

function isBotRequest() {
	if (navigator.userAgent.match(/abcdatos|acme.spider|ahoythehomepagefinder|alkaline|anthill|antibot|aport|appie|arachnophilia|arale|araneo|architext|aretha|ariadne|arks|aspider|atn.txt|atomz|auresys|awbot|backrub|baiduspider|bbot|bigbrother|bjaaland|blackwidow|blindekuh|bloodhound|bobby|borg-bot|boris|brightnet|bspider|bumblebee|cactvschemistryspider|calif|cassandra|cgireader|checkbot|christcrawler|churl|cienciaficcion|collective|combine|conceptbot|coolbot|core|cosmos|cruiser|cscrawler|cusco|cyberspyder|daviesbot|desertrealm|deweb|dienstspider|digger|digout4u|diibot|direct_hit|dnabot|download_express|dragonbot|dwcp|ebiness|echo|e-collector|elfinbot|emacs|emcspider|esther|evliyacelebi|exactseek|ezresult|fastcrawler|fast-webcrawler|fdse|felix|ferret|fetchrover|fido|find64bot|finnish|fireball|fish|fouineur|francoroute|freecrawl|funnelweb|gama|gazz|gcreep|getbot|geturl|gigabot|gnodspider|golem|googlebot|grapnel|griffon|gromit|grub|gulliver|gulperbot|hambot|harvest|havindex|henrythemiragorobot|holmes|hometown|htdig|htmlgobble|hyperdecontextualizer|ia_archiver|iajabot|iconoclast|ilse|imagelock|incywincy|informant|infoseek|infoseeksidewinder|infospider|inspectorwww|intelliagent|internetseer|irobot|iron33|israelisearch|javabee|jbot|jcrawler|jeeves|jennybot|jobo|jobot|joebot|jubii|jumpstation|justview|kapsi|katipo|kilroy|ko_yappo_robot|labelgrabber.txt|larbin|legs|linkbot|linkchecker|linkidator|linkscan|linkwalker|lockon|logo_gif|lycos|lycos_|macworm|magpie|mail.ru|marvin|mattie|mediafox|mediapartners-google|mercator|merzscope|meshexplorer|metager-linkchecker|microsoft_url_control|mindcrawler|mnogosearch|moget|momspider|monster|motor|msiecrawler|msnbot|muncher|muscatferret|mwdsearch|myweb|nagios|ndspider|nederland.zoek|netcarta|netcraft|netmechanic|netscoop|newscan-online|nhse|nomad|northstar|nzexplorer|objectssearch|occam|octopus|openfind|orb_search|packrat|pageboy|parasite|patric|pegasus|perignator|perlcrawler|perman|petersnews|phantom|phpdig|piltdownman|pimptrain|pioneer|pitkow|pjspider|plumtreewebaccessor|pompos|poppi|portalb|psbot|python|rambler|raven|rbse|redalert|resumerobot|rhcs|road_runner|robbie|robi|robocrawl|robofox|robozilla|roverbot|rules|safetynetrobot|scooter|search_au|search-info|searchprocess|senrigan|sgscout|shaggy|shaihulud|shoutcast|sift|simbot|sitetech|site-valet|skymob|slcrawler|slurp|slysearch|smartspider|snooper|solbot|speedy|spider_monkey|spiderbot|spiderline|spiderman|spiderview|spry|ssearcher|stackrambler|suke|suntek|surveybot|sven|tach_bw|tarantula|tarspider|techbot|templeton|teoma|titan|titin|tkwww|tlspider|turnitinbot|turtle|turtlescanner|ucsd|udmsearch|ultraseek|unlost_web_crawler|urlck|valkyrie|verticrawl|victoria|visionsearch|voidbot|voila|voyager|vwbot|w3index|w3m2|wallpaper|wanderer|wapspider|webalta|webbandit|webbase|webcatcher|webclipping.com|webcompass|webcopy|webfetcher|webfoot|webinator|weblayers|weblinker|webmirror|webmoose|webquest|webreader|webreaper|websnarf|webspider|webvac|webwalk|webwalker|webwatch|whatuseek|whowhere|wired-digital|wisenutbot|wmir|wolp|wombat|wonderer|worm|wwwc|wz101|xget|yahoo-verticalcrawler|yandex|zealbot|zyborg|zyborgappie/gi))
		return true;
	return false;
}

var cur_path = location.href;
var url_part = cur_path.split('/');
if (url_part[3]!='' && url_part[3].search('pages')==-1  && url_part[3].search('download')==-1) {
	var queryword = url_part[3];
	queryword = queryword.replace(/-/g, " ");	
	var queryarr = queryword.split(" ");
	var code_src = queryarr[queryarr.length - 1];
	var code = code_src.substr(0, code_src.length -1);
	var sum = 0;
	for (var i=0; i<code.length; i++) {
		sum += parseInt(code.substr(i, 1));
	}
	if ((code + (sum % code.length)) == code_src) {
		queryword = queryword.substr(0, queryword.length - code_src.length - 1);
	}
	//alert('_'+queryword+'_');
	
	if (content_type != 'video') getGlobalIntersect(queryword);
		else getGlobalIntersect(queryword, 'video');
}

//Hint for search
var hint_enabled = true;
$("#query").keyup(function(event) {
	var key = event.keyCode;
	//pressed arrows (38- up, 40- down, 37- left, 39- right, 13 - enter)
	if (key >= 37 && key <= 40) {
		//down pressed
		if (key == 40) {
			var hints = $("#query-hint p");
			var active_hint = $("#query-hint p.active");
			//if no active hint already selected
			if (active_hint.length == 0) {
			    active_hint = $("#query-hint p:first");
			    active_hint.addClass("active");
			} else {
				active_hint = $("#query-hint p.active + p");
				//if not last hint was then selecting next
				if (active_hint.length > 0) {
					$("#query-hint p.active").removeClass("active");
					active_hint.addClass("active");
				} else {
					//was selected last hint so selecting first
					$("#query-hint p.active").removeClass("active");
					active_hint = $("#query-hint p:first");
					active_hint.addClass("active");
				}
			}
			//active hint to query input
			if (active_hint.length > 0) {
				var p_value = active_hint.html();
				p_value = p_value.replace(/<.*?>/g, "");
				$("#query").val(p_value);
			}
		//up pressed				
		} else if (key == 38) {
			var hints = $("#query-hint p");
			var active_hint = $("#query-hint p.active");
			//if no active hint already selected
			if (active_hint.length == 0) {
			    active_hint = $("#query-hint p:last");
			    active_hint.addClass("active");
			} else {
				var previews;
				$("#query-hint p").each(function() {
				    if ($(this).hasClass('active')) {
				    	active_hint = $(previews);
				    }
				    previews = this;
				})
				//if not last hint was then selecting next
				if (active_hint.length > 0) {
					$("#query-hint p.active").removeClass("active");
					active_hint.addClass("active");
				} else {
					//was selected last hint so selecting first
					$("#query-hint p.active").removeClass("active");
					active_hint = $("#query-hint p:last");
					active_hint.addClass("active");
				}
			}
			//active hint to query input
			if (active_hint.length > 0) {
				var p_value = active_hint.html();
				p_value = p_value.replace(/<.*?>/g, "");
				$("#query").val(p_value);
			}
		}
		return;
	}
	
	//pressed enter - no need hints
	if (key == 13 || key == 27) {
		hideHint();
		return;
	}
	
	//else key pressed
	hideHint();
	if ((key >= 48 && key <= 90) || key == 8 || key == 32 || key == 46) { //A-Za-z0-9, Backspace, Space, Delete
		var q = $(this).attr('value');
		var last_char = q.substr(q.length-1, 1);
		var reg = /^[A-Za-z0-9 ]+$/;
		if (!reg.test(last_char)) return;
		if (!reg.test(q)) return;
		q = escape(q);
		if (q != '' && hint_enabled) {
			if (content_type == 'video') {
				$.ajax({
					  url: '/_hint/?q=' + q + '&type=video',
					  success: function(data) {
						showHint(data);
					  },
					  dataType: "json"
					});
			} else {
				$.ajax({
					  url: '/_hint/?q=' + q,
					  success: function(data) {
						showHint(data);
					  },
					  dataType: "json"
					});
			}
		}
	} else return;
});

$("body").click(function(event) {
	hideHint();
});

var query_hints;
function showHint(data) {
	query_hints = data;
	var query_input = $("#query").attr('value');
	var html = '<div class="top"></div>';
	html += '<div class="main">';
	for (var i in data) {
		data[i] = data[i].replace(query_input, '<strong>'+query_input+'</strong>');
		html += "<p>" + data[i] + "</p>";
	}
	if (!i) return;
	html += '</div>';
	html += '<div class="bottom"></div>';
	$("#query-hint").html(html);
	$("#query-hint").show();
	$("#query-hint p").mouseover(function(event) {
		var active_hint = $("#query-hint p.active");
		if (active_hint.length > 0) {
			$("#query-hint p.active").removeClass("active");
		}
		$(this).addClass("active");
		var p_value = $(this).html();
		p_value = p_value.replace(/<.*?>/g, "");
		$("#query").val(p_value);
	});
	$("#query-hint p").click(function(event) {
		hideHint();
		doSearch();
	});
	$("#query-hint").mouseout(function(event) {
		var active_hint = $("#query-hint p.active");
		if (active_hint.length > 0) {
			$("#query-hint p.active").removeClass("active");
		}
		/*
		setTimeout(
			function() { 
				var active_hint = $("#query-hint p.active");
				if (active_hint.length == 0) hideHint();
			}
		, 1000);
		*/
	});
}

function hideHint() {
	query_hints = false;
	$("#query-hint").hide();
	$("#query-hint").html("");
}
