var aktengine = 0;
var aktrow = 0;
var edone = 0;
var aktpage = 1;

var tableRow = new Element("tr");
var tableCol = new Element("td");
var listUl = new Element("ul");
var listLi = new Element("li");
var linkA = new Element("a");
var resultsTable = ""

Json.Remote2 = Json.Remote.extend({
    send: function(){
    if (this.options.timeout) {
        this.timeoutTimer=window.setTimeout(this.callTimeout.bindAsEventListener(this), this.options.timeout);
        this.addEvent('onComplete', this.removeTimer);
    }
    this.parent();
    },
    callTimeout: function () {
        this.transport.abort();
        this.onFailure();
        if (this.options.onTimeout) {
            this.options.onTimeout();
        }
    },
    removeTimer: function() {
        window.clearTimeout(this.timeoutTimer);
    }
});

function enginebusy(engine,busy){
	if (busy == true){
		$(engine+"Loader").addClass("loading");
	}else{
		$(engine+"Loader").removeClass("loading");
	}
}

function addfoundstat(engine,founds){
	var ul = listUl.clone().addClass("foundresults");	
	listLi.clone().setText("Found: " + founds).injectInside(ul);
	ul.injectAfter($(engine+"Link"));
}

function beginsearch(){
	$("searchLoader").setStyle("display","block");
	$("pagetext").setStyle("display","block");
	aktengine = 0;
	edone = 0;
	$$("ul.foundresults").each(function(tag) { tag.remove(); })
	
	var jCountSearch = new Json.Remote(baseurl + "/ajax/dosearch.php", 
		{
			method: 'post'
		}
	).send({'q': query});
	
	dorequest();
}

function dorequest(){
	engines.each(function(aengine,aktengine){
		if (engines[aktengine]){
			enginebusy(engines[aktengine],true);
			if (engineCache[aktengine]){
				addlinks(engineCache[aktengine],engines[aktengine]);
			}else{
				var jSonRequest = new Json.Remote(baseurl + "/engines/" + engines[aktengine] + ".php", 
				{
					method: 'post',
					onComplete: function(results){
						addlinks(results,engines[aktengine]);
					},
					onTimeout: function(){
						addlinks(null,engines[aktengine]);
					},
					onFailure: function(){
						addlinks(null,engines[aktengine]);
					}
				}
				).send({'q': query});
			}
		}
	});
}

function enginedone(engine){
	enginebusy(engine,false);
	edone++;
	if(edone >= engines.length){
		setTimeout('fdTableSort.init("results")', 10);
		setTimeout('tablePaginater.init()', 10);
		$("searchLoader").setStyle("display","none");
	}
}

function addlink(ldata,engine,enginename){
	if (ldata["title"] && ldata["seeds"] < 1000000){
		aktrow++;
		
		//Generate Row
		var tr = tableRow.clone();
		
		//Date
		var colDate = tableCol.clone().setText(ldata["date"]);
		colDate.setProperty("class", "date");
		colDate.injectInside(tr);
		
		//Title
		
		var colTitle = tableCol.clone();
		colTitle.setProperty("class", "name");
		var titleLink = linkA.clone().setText(ldata["title"].replace("@", ""));
		titleLink.setProperty("href", ldata["link"]);
		titleLink.setProperty("target", "_blank");
		titleLink.injectInside(colTitle);
		colTitle.injectInside(tr);
		
		//Size
		var colSize = tableCol.clone().setText(ldata["size"]);
		colSize.setProperty("class", "size");
		colSize.injectInside(tr);
		
		//Seed
		var colSeed = tableCol.clone().setText(ldata["seeds"]);
		colSeed.setProperty("class", "seed");
		colSeed.injectInside(tr);
		
		//Leech
		var colLeech = tableCol.clone().setText(ldata["leechers"]);
		colLeech.setProperty("class", "leech");
		colLeech.injectInside(tr);
		
		//Page
		var colPage = tableCol.clone().setText(enginename);
		colPage.addClass("page");
		colPage.addClass(engine + "Engine");
		colPage.injectInside(tr);
		
		tr.injectInside(resultsTable);
		
		if(aktrow > rowsperpage && (aktrow % rowsperpage) == 1){
			tablePaginater.init();
			aktpage++;
			$('pagessum').setText(aktpage);
		}
	}
}

function sortFsize(a, b) {
	return fdTableSort.sortNumeric(a, b);
}
 
function sortFsizePrepareData(tdNode, innerText) {
        var exp = /(B|KB|MB|GB|TB)/i;
		var stype = innerText.search(exp) != -1 ? innerText.match(exp)[0] : "";
		
        switch (stype.toLowerCase()) {
                case "kb" :
                        mult = 1024;
                        break;
                case "mb" :
                        mult = 1048576;
                        break;
                case "gb" :
                        mult = 1073741824;
                        break;
				case "tb" :
                        mult = 1099511627776;
                        break;
                default :
                        mult = 1;
        }
        innerText = parseFloat(innerText.replace(/[^0-9\.\-]/g,''));
        return isNaN(innerText) ? "" : innerText * mult;
} 
   
