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"]){
		aktrow++;
		
		//Generate Row
		var tr = tableRow.clone();
		
		if (ldata["thumbnail"])
		{
		//Thumbnail
		var colSize = tableCol.clone().setHTML(ldata["thumbnail"]);
		colSize.setProperty("class", "thumbnail");
		colSize.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);		

		var favouriteLink = tableCol.clone().setHTML("<a href=\"#\" id =\"favourite_"+ldata["link"]+"\" onClick=\"addfavourite('"+escape(ldata["thumbnail"])+"','"+ldata["title"]+"','"+ldata["link"]+"','"+ldata["duration"]+"','"+ldata["rating"]+"','favourite_"+ldata["link"]+"');\" style=\"float:right;\">(add to favourites)</a>");
		favouriteLink.setProperty("style", "float:right; padding-right:10px;");
		favouriteLink.injectInside(colTitle);	
		
		colTitle.injectInside(tr);
		
		//Download link
		var colDownload = tableCol.clone();
		
		var downloadLink = linkA.clone().setText("download");
		downloadLink.setProperty("href", "download_video.php?link="+ldata["link"]);
		downloadLink.setProperty("target", "_blank");
		downloadLink.injectInside(colDownload);
		colDownload.injectInside(tr);
		
		//Length
		var colSize = tableCol.clone().setText(ldata["duration"]);
		colSize.setProperty("class", "length");
		colSize.injectInside(tr);
		
		//Rating
		var colSeed = tableCol.clone().setText(ldata["rating"]);
		colSeed.setProperty("class", "rating");
		colSeed.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 addfavourite(thumbnail, title, link, length, rating, id) {
			var jSonRequest = new Json.Remote(baseurl + "/ajax/favourites_add.php", 
			{
				method: 'post',
				onComplete: function(results){
					$(id).setText("(favourite video)");
				},
				onTimeout: function(){
					alert("Error, please refresh");
				},
				onFailure: function(){
					alert("Error, please refresh");
				}
			}
			).send({'thumbnail': unescape(thumbnail), 'title': title, 'link': link, 'duration': length, 'rating': rating});
}

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;
} 
   
