var clip, hosts, globalChecked, remoteColModel, remoteColNames;
var loaded_hosts = new Array();
var remoteProgress = new Array();
var remoteHostsAmt = new Array();
var all_hosts = ["Rapidshare", "Megaupload", "Hotfile", "Netload", "Megashares", "Fileserve"];
var selected_host = "";
var remoteDirect = "";
var editHost = "";
var directComplete = false;
var remoteUpload = false;
var remoteCheckAttempts;
var maxRemoteChecks = 100;
var remoteSubmit = 0;
var remoteComplete = 0;
var remoteFinished = false;
var muRemoteComplete = 0;
var rsRemoteComplete = 0;
var hfRemoteComplete = 0;
var rsCompleteLinks = [];

$.ajaxSetup({
	url: "api.php",
	type: "POST",
	cache: false,
        error: function()
        {
        	alert("Request to server failed :(");
        }
});

$(document).ready(function(){
	$("#file-grid, #remote-grid").html("");
	switch(page_name)
	{
		case "files":
			hosts = ["Megaupload", "Hotfile", "Netload", "Megashares", "Fileserve"];
		break;
		
		case "remote-upload":
			hosts = ["Rapidshare", "Megaupload", "Hotfile", "Netload"];
			remoteUpload = true;
		break;
		
		case "direct":
			hosts = ["Rapidshare", "Megaupload", "Hotfile", "Netload", "Megashares"];
		break;
		
		default:
			hosts = new Array();
		break;
	}
	load_from_cookie();
	loadHosts();
	make_buttons();
	if(page_name == "files")
	{
		filemanager_click();
	}
	if(page_name == "check")
	{
		$.ajax({
			data: "mode=supported_linkcheckers",
			success: function(msg){
				var ex = msg.split("\r\n");
				for(i=0;i<ex.length-1;i++)
				{
					ex2 = ex[i].split(",");
					$("#supported-hosts").append('<a href="' + ex2[1] + '" class="button filehost-link">' + ex2[0] + '</a>');
				}
				$("#supported-hosts a.button").button();
			}
		});
	}
	$("#apidoc").accordion({
		collapsible: true,
		autoHeight: false,
		navigation: true
	});
	$(".ajax-fc-container").captcha({
		formId: "contact-form",
		captchaDir: "template/css",
		url: "api.php?mode=contact&get_captcha=1"
	});
	
	$(".contact-button").click(function(){
		var postdata = "mode=contact&name=" + $("#name").val() + "&email=" + $("#email").val() + "&subject=" + $("#subject").val() + "&message=" + $("#message").val() + "&captcha=" + $("#captcha").val();
		$.ajax({
			data: postdata,
			success: function(msg){
				if(msg.indexOf("ERROR") > -1)
				{
					alert(msg);
				}
				else
				{
					alert("Thanks for contacting us, we will get back to your as soon as possible");
					window.location = "home";
				}
			}
		});
	});
	
	$("#chat-name, #chattext").keyup(function(event){
		if(event.keyCode == 13)
		{
			if($(this).attr("id") == "chat-name")
			{
				chat_login();
			}
			else
			{
				send_chat();
			}
		}
	});
});

function make_grid(colnames, colmodel, host, num)
{
	lastsel = "";
	$("#file-grid").jqGrid({ 
		url:"api.php?mode=filemanager&host=" + host + "&type=list&username=" + loaded_hosts[num][1] + "&password=" + loaded_hosts[num][2], 
		datatype: "json", 
		colNames:colnames,  
		colModel:colmodel, 
		pager: '#file-pager', 
		sortname: 'filename', 
		recordpos: 'left',
		scroll:1, 
		loadonce:true,
		viewrecords: true, 
		sortorder: "asc", 
		multiselect: true,
		autowidth: true,
		mtype: "POST", 
		pgbuttons: false,
		shrinkToFit: true,
		loadComplete: function(){ 
			if($("#copy_file-grid").html() == null)
			{
				grid_tooltips();
        			$("#search_file-grid").after('<td class="ui-pg-button ui-corner-all" id="copy_file-grid" title="Copy selected links"><div class="ui-pg-div"><span class="ui-icon ui-icon-document"></span></div></td>');
        			ZeroClipboard.setMoviePath( 'template/js/ZeroClipboard10.swf' );
				clip = new ZeroClipboard.Client();
				clip.setHandCursor(true);
				clip.glue('copy_file-grid');
				clip.addEventListener( 'onMouseDown', clipboard_copy );
				$(window).resize(function(){
        				clip.reposition();
       				});
       				$("#ZeroClipboardMovie_1").attr("title", "Copy selected links");
				
			}
		},
		/*onSelectRow: function(id){ 
				if(id && id!==lastsel)
				{ 
					$('#file-grid').jqGrid('restoreRow',lastsel); 
					$('#file-grid').jqGrid('editRow',id,true); 
					lastsel=id;
				} 
			}, */
		viewrecords: true, 
		height: "465px",
		pginput:false, 
		editurl: "api.php?mode=filemanager&host=" + host + "&type=edit&username=" + loaded_hosts[num][1] + "&password=" + loaded_hosts[num][2]
		}); 
		
	$("#file-grid").jqGrid(
		'navGrid',
		'#file-pager',
		{
			add:false,
			del:true,
			edit: ((host == "netload") ? false : true),
			refresh:false,
			position:'right'
		}
	);
}

function make_buttons()
{
	$(".filehost-details .host-name").button({text: false});
	
	$(".filehost-details .edit-button").button({
		icons: {
                	primary: 'ui-icon-pencil'
            	},
            	text: false
	});
	
	$(".add-edit-details .edit-button").button({
		icons: {
                	primary: 'ui-icon-pencil'
            	}
	});
	
	$(".filehost-details .remove-button").button({
		icons: {
                	primary: 'ui-icon-trash'
            	},
            	text: false
	});
	
	$(".add-button").button({
		icons: {
			primary: 'ui-icon-plus'
            	}
	});
	
	$(".cancel-button").button({
		icons: {
			primary: 'ui-icon-close'
            	}
	});
	
	$(".button").button();
	
	if($("#copy-complete").html() != null)
	{
		ZeroClipboard.setMoviePath( 'template/js/ZeroClipboard10.swf' );
		clip = new ZeroClipboard.Client();
		clip.setHandCursor(true);
		clip.glue('copy-complete');
		clip.addEventListener( 'onMouseDown', copy_complete );
		$(window).resize(function(){
        		clip.reposition();
       		});
	}
	
	$(':not([title=""])').tooltip({
		track: true,
		delay: 0,
		showURL: false 
	});
	
	$(".host-name span").each(function(){
		if($(this).html() == selected_host)
		{
			$(this).css({fontStyle: "italic"});
		}
	});
}

function clipboard_copy()
{
	s = $("#file-grid").jqGrid('getGridParam','selarrrow');
	var output = "";
	for(i=0;i<s.length;i++)
	{
		row = $("#file-grid").getRowData(s[i]);
		dat = row['link'];
		if(row['mvlink'] != null && row['mvlink'] != "N/A")
		{
			dat += "      " + row['mvlink'];
		}
		output += dat + "\r\n";
	}
	clip.setText($.trim(output));
	alert("Links successfully copied to clipboard!");
}

function copy_complete()
{
	clip.setText($.trim($("#direct-output").val()));
	alert("Links successfully copied to clipboard!");
}

function bookmarksite(title, url) 
{
	if (document.all) 
	{
		window.external.AddFavorite(url, title);
	}
	else if (window.sidebar) 
	{
		window.sidebar.addPanel(title, url, "")
	}
}

function load_from_cookie()
{
	var cookie = $.cookie('hosts');
	if($.cookie('hosts') == null)
	{
		cookie = "";
		for(i=0;i<7;i++)
		{
			cookie += all_hosts[i] + ";;;;;;%0A";
		}
	}
	else
	{
		cookie = decrypt2(cookie);
	}
	var ex = cookie.split("%0A");
	for(i=0;i<ex.length-1;i++)
	{
		var ex2 = ex[i].split(";;;");
		temp = new Array();
		for(j=0;j<ex2.length;j++)
		{
			temp.push(ex2[j]);
		}
		loaded_hosts.push(temp);
	}
}

function save_hosts()
{
	var temp = "";
	for(i=0;i<loaded_hosts.length;i++)
	{
		temp += loaded_hosts[i].join(";;;") + "%0A";
	}
	$.cookie('hosts', encrypt2(temp), { path: '/', expires: 365 });
}

//variable in oc(array)
function oc(a)
{
	var o = {};
  	for(var i=0;i<a.length;i++)
  	{
    		o[a[i]]='';
  	}
  	return o;
}

function showAdd()
{
	editHost = "";
	$(".add-edit-details span a.add-button").parent().removeClass("hidden");
	$(".add-edit-details span a.edit-button").parent().addClass("hidden");
	$("#filehost-select").html('<option id="blank-option" style="font-style:italic;">Select a host</option>');
	$("#filehost-select").parent().removeClass("hidden");
	$("#username").val("");
	$("#password").val("");
        for(i=(hosts.length-1);i > -1;i--)
        {
        	var flag = false;
        	for(j=0;j<loaded_hosts.length;j++)
        	{
        		if(loaded_hosts[j][0] == hosts[i] && loaded_hosts[j][1] != "")
        		{
        			flag = true;
        			break;
        		}
        	}
        	if(flag == false)
        	{
			$("<option>" + hosts[i] + "</option>").insertAfter("#blank-option");
		}
        }
	$(".filehost-details").slideUp("slow", function(){
		$(".add-edit-details").slideDown("slow");
	});
}

function saveAdd()
{
	var user = encodeURIComponent($("#username").val());
	var pass = encodeURIComponent($("#password").val());
	if(editHost == "")
	{
		var host = $("#filehost-select").val();
	}
	else
	{
		var host = editHost;
	}
	if(host == "Select a host" || user == "" || pass == "")
	{
		alert("Please fill in all required fields!");
	}
	else
	{
		$.ajax({
        		data: "mode=validate_details&username=" + user + "&password=" + pass + "&host=" + host.toLowerCase(),
               		success: function(msg){
                		if(msg == "false")
                		{
                			alert("Your account details were incorrect!");
                		}
                		else
                		{
                			for(i=0;i<loaded_hosts.length;i++)
                                  	{
                                  		if(loaded_hosts[i][0] == host)
                                  		{
                                  			loaded_hosts[i][1] = user;
                                  			loaded_hosts[i][2] = pass;
                                  		}
                                  	}
                                  	save_hosts();
                                  	loadHosts();
                                  	make_buttons();
                                  	filemanager_click();
                                  	cancelAddEdit();
                                  	editHost = "";
                		}
               		}
        	});
	}
}

function loadHosts()
{
	$(".filehost-details").empty();
	$("#remote-hosts").empty();
	for(i=0;i<loaded_hosts.length;i++)
	{
		if(loaded_hosts[i][0] in oc(hosts) && loaded_hosts[i][1] != "" && loaded_hosts[i][2] != "")
		{
			var file_host = loaded_hosts[i][0].toLowerCase();
			$("#remote-hosts").append('<input type="checkbox" id="remote_' + file_host + '" /><label class="filehost-check" for="remote_' + file_host + '">' + loaded_hosts[i][0] + '</label>');
			$(".filehost-details").append('<span class="filehost-line"><a href="javascript:;" title="Username: ' + loaded_hosts[i][1] + '" class="host-name">' + loaded_hosts[i][0] + '</a> <a href="javascript:showEdit(\'' + loaded_hosts[i][0] + '\');" class="edit-button">Edit</a> <a href="javascript:deleteHost(\'' + loaded_hosts[i][0] + '\');" class="remove-button">Remove</a><br/></span>');
		}
	}
	$(".filehost-details").append('<span class="filehost-line"><a href="javascript:showAdd();" class="add-button">Add new</a></span>');
	$("#remote-hosts").buttonset();
}

function cancelAddEdit()
{
	$(".add-edit-details").slideUp("slow", function(){
		$(".filehost-details").slideDown("slow");
	});
}

function deleteHost(host)
{
	if(confirm("Are you sure you would like to delete these account details?"))
	{
		for(i=0;i<loaded_hosts.length;i++)
		{
			if(loaded_hosts[i][0] == host)
			{
				loaded_hosts[i][1] = "";
				loaded_hosts[i][2] = "";
				break;
			}
		}
		save_hosts();
		$("a[href='javascript:deleteHost(\'" + host + "\');']").parent().slideUp("slow", function(){
			$("a[href='javascript:deleteHost(\'" + host + "\');']").parent().remove();
		});
	}
}

function showEdit(host)
{
	editHost = host;
	$(".add-edit-details span a.add-button").parent().addClass("hidden");
	$(".add-edit-details span a.edit-button").parent().removeClass("hidden");
	$("#filehost-select").parent().addClass("hidden");
	for(i=0;i<loaded_hosts.length;i++)
	{
		if(loaded_hosts[i][0] == host)
		{
			$("#username").val(loaded_hosts[i][1]);
			$("#password").val(loaded_hosts[i][2]);
			break;
		}
	}
	$(".filehost-details").slideUp("slow", function(){
		$(".add-edit-details").slideDown("slow");
	});
}

function grid_tooltips()
{
	$('[role="gridcell"]').each(function(){
		$(this).attr("title", $(this).html()); 
	});
	
	$('[role="gridcell"]').tooltip({
		track: true,
		delay: 0
	});
	window.setTimeout(grid_tooltips, 1000); //This is incredibly dirty, but it works and I cba to find a better solution
}

function filemanager_click()
{
	$(".host-name").click(function(){
		selected_host = $("span", this).html();
		$(".host-name span").css({fontStyle: "normal"});
		$("span", this).css({fontStyle: "italic"});
		$("#file-grid").GridUnload();
        	$("#info-h3").fadeOut("slow", function(){
        		switch(selected_host)
        		{
        			case "Rapidshare":
        				host = "rapidshare";
					num = 0;
        				colnames = ['Filename', 'Link' ,'Size', 'Downloads', 'Last download'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true, editable: true},
        					{name:'link',index:'link', width:70, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}, 
        					{name:'lastdownload',index:'lastdownload', width:40, sortable:true}
					];
        				
        			break;
        			
        			case "Megaupload":
        				host = "megaupload";
					num = 1;
        				colnames = ['Filename', 'MU Link', 'MV link' ,'Size', 'Downloads', 'Last download'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true, editable: true},
        					{name:'link',index:'link', width:30, sortable:true},
        					{name:'mvlink',index:'mvlink', width:30, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}, 
        					{name:'lastdownload',index:'lastdownload', width:40, sortable:true}
					];
        			break;
        			
        			case "Hotfile":
        				host = "hotfile";
        				num = 2;
        				colnames = ['Filename', 'Link', 'Size', 'Downloads', 'Last download'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true, editable: true},
        					{name:'link',index:'link', width:30, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}, 
        					{name:'lastdownload',index:'lastdownload', width:40, sortable:true}
					];
        			break;
        			
        			case "Netload":
					host = "netload";
					num = 3;
        				colnames = ['Filename', 'Link', 'Size', 'Downloads'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true},
        					{name:'link',index:'link', width:30, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}
					];
        			break;
        			
        			case "Megashares":
        				host = "megashares";
					num = 4;
        				colnames = ['Filename', 'Link', 'Size', 'Downloads'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true, editable: true},
        					{name:'link',index:'link', width:30, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}
					];
        			break;
        			
        			case "Fileserve":
        				host = "fileserve";
					num = 5;
        				colnames = ['Filename', 'Link', 'Size', 'Downloads'];
        				colmodel = [ 
        					{name:'filename',index:'filename', width:50, sortable:true, editable: true},
        					{name:'link',index:'link', width:30, sortable:true},
        					{name:'size',index:'size', width:30, sortable:true}, 
        					{name:'downloads',index:'downloads', width:35, sortable:true, sorttype:'int'}
					];
        			break;
        		}
        		
        		make_grid(colnames, colmodel, host, num);
        	});
		
	});
}

function directLinks()
{
	var links = $("#direct-input").val();
	var all = parselinks(links);
	if(all[0] > 0)
	{
		progressBarInit();
		makedirectlinks(all);
	}
	else
	{
		alert("ERROR - no valid links were entered!");
	}
}

function checkLinks()
{
	globalChecked = 0;
	progressBarInit();
	var links = $("#direct-input").val();
	var all = parselinks(links);
	if(all[0] > 0)
	{
        	all_links = "";
        	for(i=1;i<all.length;i++)
        	{
        		all_links += all[i].join("\r\n") + "\r\n";
        	}
        	all_links = ($.trim(all_links)).split("\r\n");
        	for(i=0;i<all_links.length;i++)
        	{
        		link = all_links[i];
        		if(link.length > 3)
        		{
                        	$.ajax({
                        		data: "mode=check_links&original=1&links=" + link,
                        		success: function(msg){
                        			s = msg.split("\r\n");
                        			if(s[0] == s[1])
                        			{
                        				$("#fail-links").val($("#fail-links").val() + s[1] + "\r\n");
                        			}
                        			else
                        			{
                        				$("#direct-output").val($("#direct-output").val() + s[1] + "\r\n");
                        			}
                        			globalChecked += 1;
                        			calculatePercent(globalChecked, all[0]);
                        		}
                        	});
                	}
                	else
                	{
                		globalChecked += 1;
                	}
        	}
	}
	else
	{
		calculatePercent(1, 1);
		unlockpage();
		alert("ERROR - no valid links were entered!");
	}
}

function progressBarInit()
{
	$("#progressbar").progressbar({
		value: 0,
		change: function(event, ui) 
		{
			var value = $(this).progressbar("option", "value");
			$("#progress-percent").html(value);
			if(value == 100)
			{
				$(".progress-container").slideUp(600);
				if(remoteUpload == false)
				{
        				unlockpage();
        				if(windowFocus != true)
        				{
        					thetitle();
        				}
        				$("#direct-output").val($.trim($("#direct-output").val().replace(/\.html/g, "")));
        				$("#fail-links").val($.trim($("#fail-links").val()));
				}
				else if(directComplete == false)
				{
					directComplete = true;
					remoteRestOf();
				}
			}
		}

	});
	$("#direct-output, #fail-links").val("");
	$(".progress-container").slideDown(600);
	if(remoteUpload == false)
	{
		lockpage();
	}
}

function sortLinks()
{
	$("#direct-output, #fail-links").val("");
	var links = $("#direct-input").val();
	var all = parselinks(links);
	if(all[0] > 1)
	{
        	lockpage();
        	$("#sort-status").html("Checking links");
        	all_links = "";
        	for(i=1;i<all.length;i++)
        	{
        		all_links += all[i].join("\r\n") + "\r\n";
        	}
        	all_links = $.trim(all_links);
        	$.ajax({
        		data: "mode=check_links&links=" + all_links,
        		success: function(msg2){
        			$("#fail-links").val(msg2);
        			$("#sort-status").html("Getting Megaupload filenames");
        			mulinks = "";
        			for(i=0;i<all[2].length;i++)
        			{
        				if(msg2.indexOf(all[2][i]) == -1)
        				{
        					mulinks += all[2][i] + "\r\n";
        				}
        			}
        			mulinks = $.trim(mulinks);
        			$.ajax({
        				data: "mode=getmufilenames&links=" + mulinks,
        				success: function(msg){
        					$("#sort-status").html("Sorting links");
        					var sort_names = [];
        					var sort_links = [];
        					if(msg.indexOf("ERROR") == -1)
        					{
                					mulinks = mulinks.split("\r\n");
                					munames = msg.split("\r\n");
                					for(i=0;i<mulinks.length;i++)
                					{
                						sort_names.push(munames[i]);
                						sort_links.push(mulinks[i] + String.fromCharCode(9,9) + munames[i]);
                						msg2 += mulinks[i] + "\r\n";
                					}
        					}
        					all_links = all_links.split("\r\n");
        					for(i=0;i<all_links.length;i++)
        					{
        						if(msg2.indexOf(all_links[i]) == -1)
        						{
        							ex = all_links[i].split("/");
        							sort_names.push(ex[ex.length-1]);
        							sort_links.push(all_links[i]);
        						}
        					}
        					for(i=0;i<sort_names.length;i++)
        					{
        						for(j=0;j<sort_names.length;j++)
        						{
        							if(sort_names[j] > sort_names[i])
        							{
        								temp = sort_names[j];
        								sort_names[j] = sort_names[i];
        								sort_names[i] = temp;
        								temp = sort_links[j];
        								sort_links[j] = sort_links[i];
        								sort_links[i] = temp;
        								
        							}
        						}
        					}
        					sort_links = sort_links.join("\r\n");
        					$("#direct-output").val(sort_links);
        					sortBoxes("#direct-output");
        					$("#sort-status").html("Links successfully sorted");
        					unlockpage();
        					if(windowFocus != true)
        					{
        						thetitle();
        					}
        				}
        			});
        		}
        	});
        }
        else
        {
        	alert("ERROR - no valid links were entered!");
        }
}

//Welcome to the most shittily written function in the whole script
function makedirectlinks(arr)
{
	var done = 0;
	var max = arr[0];
	
	if(arr[1].join(" ").length > 5 && loaded_hosts[0][1] != "")
	{
        	//rapidshare
        	$.ajax({
        		data: "mode=check_links&links=" + arr[1].join("\r\n"),
        		success: function(msg){
        			newlinks = [];
        			for(i=0;i<arr[1].length;i++)
        			{
        				if(msg.indexOf(arr[1][i]) == -1)
        				{
        					newlinks.push(arr[1][i]);
        				}
        				else
        				{
        					$("#fail-links").val($("#fail-links").val() + arr[1][i] + "\r\n");
        					done += 1;
        					calculatePercent(done, max);
        				}
        			}
                        	$.ajax({
                        		data: "mode=direct_links&host=rapidshare&username=" + loaded_hosts[0][1] + "&password=" + loaded_hosts[0][2] + "&links=" + newlinks.join("\r\n"),
                        		success: function(link){
                        			if(link.indexOf("ERROR - ") == -1)
                        			{
                        				if(remoteUpload == false)
                        				{
                        					$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                        				}
                        				else
                        				{
                        					remoteDirect += $.trim(link) + "\r\n";
                        				}
                        			}
                        			done += newlinks.length;
                        			calculatePercent(done, max);
                        		}
                        	});
                	}
        	});
	}
	else
	{
		done += arr[1].length;
                calculatePercent(done, max);
	}
	
	if(arr[2].join(" ").length > 5 && loaded_hosts[1][1] != "")
	{
        	//megaupload
        	$.ajax({
        		data: "mode=check_links&links=" + arr[2].join("\r\n"),
        		success: function(msg){
                              	for(i=0;i<arr[2].length;i++)
                              	{
                              		arr[2][i] = $.trim(arr[2][i]);
                              		if(msg.indexOf(arr[2][i]) == -1)
                              		{
                                  		$.ajax({
                                  			data: "mode=direct_links&host=megaupload&username=" + loaded_hosts[1][1] + "&password=" + loaded_hosts[1][2] + "&links=" + arr[2][i],
                                  			success: function(link){
                                  				if(link.indexOf("ERROR - ") == -1)
                                  				{
                                  					if(remoteUpload == false)
                                  					{
                                  						$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                                  					}
                                  					else
                                  					{
                                  						remoteDirect += $.trim(link) + "\r\n";
                                  					}
                                  					done += 1;
                                  					calculatePercent(done, max);
                                  				}
                                  			}
                                  		});
                              		}
                              		else
                              		{
                              			$("#fail-links").val($("#fail-links").val() + arr[2][i] + "\r\n");
                              			done += 1;
                              			calculatePercent(done, max);
                              		}
                              	}
                        }
        	});
	}
	else
	{
		done += arr[2].length;
                calculatePercent(done, max);
	}
	
	if(arr[3].join(" ").length > 5 && loaded_hosts[2][1] != "")
	{
        	//Hotfile
        	$.ajax({
        		data: "mode=check_links&links=" + arr[3].join("\r\n"),
        		success: function(msg){
                          	for(i=0;i<arr[3].length;i++)
                          	{
                          		if(msg.indexOf(arr[3][i]) == -1)
                              		{
                          			link = arr[3][i].replace("http://", "http://" + loaded_hosts[2][1] + ":" + loaded_hosts[2][2] + "@");
                          			if(remoteUpload == false)
                                  		{
                                  			$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                                  		}
                                  		else
                                  		{
                                  			remoteDirect += $.trim(link) + "\r\n";
                                  		}
                          		}
                          		else
                          		{
                          			$("#fail-links").val($("#fail-links").val() + arr[3][i] + "\r\n");
                          		}
                          		done += 1;
                          	}
                          	calculatePercent(done, max);
        		}
        	});
	}
	else
	{
		done += arr[3].length;
                calculatePercent(done, max);
	}
	
	if(arr[4].join(" ").length > 5 && loaded_hosts[3][1] != "")
	{
        	//Netload
        	$.ajax({
        		data: "mode=check_links&links=" + arr[4].join("\r\n"),
        		success: function(msg){
                          	for(i=0;i<arr[4].length;i++)
                          	{
                          		if(msg.indexOf(arr[4][i]) == -1)
                              		{
                          			link = arr[4][i].replace("http://", "http://" + loaded_hosts[3][1] + ":" + loaded_hosts[3][2] + "@");
                          			if(remoteUpload == false)
                                  		{
                                  			$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                                  		}
                                  		else
                                  		{
                                  			remoteDirect += $.trim(link) + "\r\n";
                                  		}
                          		}
                          		else
                          		{
                          			$("#fail-links").val($("#fail-links").val() + arr[4][i] + "\r\n");
                          		}
                          		done += 1;
                          	}
                          	calculatePercent(done, max);
        		}
        	});
	}
	else
	{
		done += arr[4].length;
                calculatePercent(done, max);
	}
	
	if(arr[5].join(" ").length > 5 && loaded_hosts[4][1] != "")
	{
        	//Megashares
        	$.ajax({
        		data: "mode=check_links&links=" + arr[5].join("\r\n"),
        		success: function(msg){
                        	for(i=0;i<arr[5].length;i++)
                        	{
                        		if(msg.indexOf($.trim(arr[5][i])) == -1)
                        		{
                                		$.ajax({
                                			data: "mode=direct_links&host=megashares&username=" + loaded_hosts[4][1] + "&password=" + loaded_hosts[4][2] + "&links=" + $.trim(arr[5][i]),
                                			success: function(link){
                                				if(link.indexOf("ERROR - ") == -1)
                                				{
                                					if(remoteUpload == false)
                                  					{
                                  						$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                                  					}
                                  					else
                                  					{
                                  						remoteDirect += $.trim(link) + "\r\n";
                                  					}
                                					done += 1;
                                					calculatePercent(done, max);
                                				}
                                			}
                                		});
                        		}
                        		else
                              		{
                              			$("#fail-links").val($("#fail-links").val() + arr[5][i] + "\r\n");
                              			done += 1;
                              			calculatePercent(done, max);
                              		}
                        	}
        		}
        	});
	}
	else
	{
		done += arr[5].length;
                calculatePercent(done, max);
	}
	
	if(arr[6].join(" ").length > 5)
	{
        	//Other (http or ftp)
        	$.ajax({
        		data: "mode=check_links&links=" + arr[6].join("\r\n"),
        		success: function(msg){
                          	for(i=0;i<arr[6].length;i++)
                          	{
                          		if(msg.indexOf(arr[6][i]) == -1)
                              		{
                          			link = arr[6][i];
                          			if(remoteUpload == false)
                                  		{
                                  			$("#direct-output").val($("#direct-output").val() + $.trim(link) + "\r\n");
                                  		}
                                  		else
                                  		{
                                  			remoteDirect += $.trim(link) + "\r\n";
                                  		}
                          		}
                          		else
                          		{
                          			$("#fail-links").val($("#fail-links").val() + arr[6][i] + "\r\n");
                          		}
                          		done += 1;
                          	}
                          	calculatePercent(done, max);
        		}
        	});
	}
}

function calculatePercent(done, max)
{
	percent = Math.ceil((done / max) * 100);
	$("#progressbar").progressbar({
		value: percent
	});
}

function resetForm()
{
	$(".progress-container").slideUp(600);
	unlockpage();
	$(".textarea").val("");
}

function lockpage()
{
	$(".textarea").attr("disabled", true).css({backgroundColor: "lightgrey"});
	$(".button").attr("disabled", true);
	$("#remote-hosts").slideUp();
}

function unlockpage()
{
	$(".textarea").attr("disabled", false).css({backgroundColor: "white"});
	$(".button").attr("disabled", false);
	sortBoxes("#fail-links");
	if(page_name != "sorter")
	{
		sortBoxes("#direct-output");
	}
}

function remoteUploadLinks()
{
	var flag = false;
	remoteColNames = ['Link'];
	remoteColModel = [{name:'link', index:'link', width:80}];
	$(".filehost-check").each(function(){
		if($(this).hasClass("ui-state-active") == true)
		{
			flag = true;
			selHost = $("span", this).html();
			remoteHostsAmt.push(selHost.toLowerCase());
			remoteColNames.push(selHost);
			remoteColModel.push({name:selHost.toLowerCase(), index:selHost.toLowerCase(), width:80});
		}
	});
	var links = $.trim($("#direct-input").val());
	if(links == "")
	{
		alert("Please enter some links to remote upload!");
	}
	else if(flag == false)
	{
		alert("You must select at least one filehost to remote upload links to!");
	}
	else
	{
        	lockpage();
        	var all = parselinks(links);
        	if(all[0] > 0)
        	{
        		progressBarInit();
        		makedirectlinks(all);
        	}
        	else
        	{
        		alert("ERROR - no valid links were entered!");
        	}
	}
}

function remoteRestOf()
{
	remoteDirect = $.trim(remoteDirect);
	if(remoteDirect.length > 5)
	{
        	links = remoteDirect.split("\r\n");
        	names = [];
        	for(i=0;i<links.length;i++)
        	{
        		ex = links[i].split("/");
        		names.push(ex[ex.length-1]);
        		temp = {
        			link: links[i],
        			rapidshare: "Submitting",
        			megaupload: "Submitting",
        			netload: "Submitting",
        			hotfile: "Submitting",
        			filename: ex[ex.length-1],
        			hf_id: "",
        			hf_server : ""
        		};
        		remoteProgress.push(temp);
        	}
        	$(".content-box").slideUp(600);
        	window.setTimeout(function(){
        		unlockpage();
        		remoteUploadGrid();
        		grid_tooltips();
        		$(".grid-box").slideDown(600);
        		window.setTimeout(function(){
        			for(i=0;i<remoteHostsAmt.length;i++)
        			{
        				submitLinks(remoteHostsAmt[i], links);
        			}
        		}, 600);
        	}, 600);
	}
	else
	{
		unlockpage();
		alert("ERROR - no links were remote uploaded as they were all dead");
		window.location = window.location;
	}
}

function checkForComplete(host)
{
	switch(host)
	{
		case "rapidshare":
			$.ajax({
				data: "mode=remote_upload&action=progress&host=rapidshare&username=" + loaded_hosts[0][1] + "&password=" + loaded_hosts[0][2],
				success: function(msg)
				{
					msg = $.trim(msg);
					ex = msg.split("\n");
					for(i=0;i<remoteProgress.length;i++)
					{
						link = remoteProgress[i].link;
						for(j=0;j<ex.length;j++)
						{
							var linkname = link.split("/");
							linkname = linkname[linkname.length-1];
							if(ex[j].indexOf(linkname) > -1)
							{
								ex2 = ex[j].split(",");
								remoteProgress[i].rapidshare = ex2[1];
								if(ex2[2] == 1 && rsRemoteComplete < remoteProgress.length && !(ex2[0] in oc(rsCompleteLinks)))
								{
									rsCompleteLinks.push(ex2[0]);
									remoteComplete += 1;
									rsRemoteComplete += 1;
								}
							}
						}
					}
					remoteUploadGrid();
					if(remoteCheckComplete() == false && rsRemoteComplete < remoteProgress.length)
          				{
          					window.setTimeout(function(){ checkForComplete("rapidshare"); }, 5000);
          				}
				}
			});
		break;
		
		case "megaupload":
			var fnames = "";
			for(i=0;i<remoteProgress.length;i++)
			{
				fnames += remoteProgress[i].link + "\r\n";
			}
			fnames = $.trim(fnames);
			$.ajax({
				data: "mode=remote_upload&action=progress&host=megaupload&username=" + loaded_hosts[1][1] + "&password=" + loaded_hosts[1][2] + "&links=" + fnames,
				success: function(msg)
				{
					msg = $.trim(msg);
					res = msg.split("\n");
					for(i=0;i<res.length;i++)
					{
						temp = res[i].split(";;;");
						remoteProgress[i].megaupload = temp[1];
						if(temp[2] == "1" && muRemoteComplete < remoteProgress.length)
						{
							remoteComplete += 1;
							muRemoteComplete += 1;
						}
						if(temp[3] && temp[3].length > 5)
						{
							$("#direct-output").val($("#direct-output").val() + temp[3] + "\r\n");
						}
					}
					remoteUploadGrid();
					if(remoteCheckComplete() == false && muRemoteComplete < remoteProgress.length)
          				{
          					window.setTimeout(function(){ checkForComplete("megaupload"); }, 5000);
          				}
				}
			});
		break;
		
		case "hotfile":
			for(j=0;j<remoteProgress.length;j++)
          		{
          			$.ajax({
          				data: "mode=remote_upload&action=progress&host=hotfile&username=" + loaded_hosts[2][1] + "&password=" + loaded_hosts[2][2] + "&j=" + j + "&hf_server=" + remoteProgress[j].hf_server + "&hf_id=" + remoteProgress[j].hf_id,
          				success: function(msg){
          					ex = msg.split(",");
          					remoteProgress[ex[0]].hotfile = ex[1];
          					remoteUploadGrid();
          				}
          			});
          		}
          		if(remoteCheckComplete() == false && hfRemoteComplete < remoteProgress.length)
          		{
          			window.setTimeout(function(){ checkForComplete("hotfile"); }, 5000);
          		}
		break;
	}
}

function submitLinks(host, links)
{
	if(remoteSubmit < remoteHostsAmt.length)
	{
		remoteSubmit+= 1;
          	switch(host)
          	{
          		case "rapidshare":
          			links = links.join("\n");
          			$.ajax({
          				data: "mode=remote_upload&action=submit&host=rapidshare&username=" + loaded_hosts[0][1] + "&password=" + loaded_hosts[0][2] + "&links=" + links,
          				success: function(){
          					for(i=0;i<remoteProgress.length;i++)
          					{
          						remoteProgress[i].rapidshare = "Submitted";
          					}
          					remoteUploadGrid();
          					checkForComplete("rapidshare");
          				}
          			});
          		break;
          		
          		case "megaupload":
          			for(j=0;j<links.length;j++)
          			{
          				$.ajax({
          					data: "mode=remote_upload&action=submit&host=megaupload&username=" + loaded_hosts[1][1] + "&password=" + loaded_hosts[1][2] + "&j=" + j + "&links=" + links[j],
          					success: function(msg){
          						remoteProgress[msg].megaupload = "Submitted";
          						remoteUploadGrid();
          						msg = msg * 1;
          						if((msg+1) == links.length)
          						{
          							checkForComplete("megaupload");
          						}
          					}
          				});
          			}
          		break;
          		
          		case "hotfile":
          			for(j=0;j<links.length;j++)
          			{
          				$.ajax({
          					data: "mode=remote_upload&action=getvalues&host=hotfile&username=" + loaded_hosts[2][1] + "&password=" + loaded_hosts[2][2] + "&j=" + j + "&links=" + links[j],
          					success: function(msg){
          						ex = msg.split(",");
          						remoteProgress[ex[0]].hf_id = ex[1];
          						remoteProgress[ex[0]].hf_server = ex[2];
          						remoteProgress[ex[0]].hotfile = "Submitted";
          						remoteUploadGrid();
          						if((ex[0]+1) == links.length)
          						{
          							checkForComplete("hotfile");
          						}
          						$.ajax({
          							data: "mode=remote_upload&action=submit&host=hotfile&username=" + loaded_hosts[2][1] + "&password=" + loaded_hosts[2][2] + "&j=" + ex[0] + "&links=" + links[ex[0]] + "&hf_id=" + ex[1] + "&hf_server=" + ex[2],
          							success: function(msg)
          							{
          								ex = msg.split(",");
          								remoteProgress[ex[0]].hotfile = "Upload complete";
          								remoteUploadGrid();
          								$("#direct-output").val($("#direct-output").val() + ex[1] + "\r\n");
          								remoteComplete += 1;
          								hfRemoteComplete += 1;
          								remoteCheckComplete();
          							}
          						});
          					}
          				});
          			}
          		break;
          		
          		case "netload":
          			for(j=0;j<links.length;j++)
          			{
          				remoteProgress[j].netload = "Waiting for remote upload to complete";
          				$.ajax({
          					data: "mode=remote_upload&action=submit&host=netload&username=" + loaded_hosts[3][1] + "&password=" + loaded_hosts[3][2] + "&j=" + j + "&links=" + links[j],
          					success: function(msg)
          					{
          						ex = msg.split(",");
          						remoteProgress[ex[0]].netload = "Upload complete";
          						remoteUploadGrid();
          						$("#direct-output").val($("#direct-output").val() + ex[1] + "\r\n");
          						remoteComplete += 1;
          						remoteCheckComplete();
          					}
          				});
          			}
          			remoteUploadGrid();
          		break;
          	}
	}
}

function remoteCheckComplete()
{
	if(remoteFinished == true)
	{
		return true;
	}
	else if((remoteComplete / remoteHostsAmt.length) >= remoteProgress.length)
	{
		remoteFinished = true;
		var names = "";
		for(i=0;i<remoteProgress.length;i++)
		{
			names += remoteProgress[i].filename + "\r\n";
		}
		$.ajax({
			data: "mode=remote_upload&action=getcomplete&host=rapidshare&username=" + loaded_hosts[0][1] + "&password=" + loaded_hosts[0][2] + "&names=" + $.trim(names),
			success: function(msg){
				$("#direct-output").val(msg + $.trim($("#direct-output").val()));
				$(".content-box").slideUp(600, function(){
					sortBoxes("#direct-output");
					sortBoxes("#fail-links");
					$(".button").attr("disabled", false);
					$(".final-box").slideDown(600, function(){
						make_buttons();
						if(windowFocus != true)
						{
							thetitle();
						}
					});
				});
			}
		});
	}
	else
	{
		return false;
	}
}

function remoteUploadGrid()
{
	$("#remote-grid").GridUnload();
	$("#remote-grid").jqGrid({ 
		datatype: "local", 
		colNames:remoteColNames,  
		colModel:remoteColModel, 
		sortname: 'link',
		recordpos: 'left',
		scroll:1, 
		loadonce:true,
		viewrecords: true, 
		sortorder: "asc", 
		multiselect: true,
		autowidth: true,
		pgbuttons: false,
		shrinkToFit: true,
		viewrecords: true, 
		height: "485px",
		pginput:false
	});
	for(i=0;i<remoteProgress.length;i++)
	{
		$("#remote-grid").jqGrid('addRowData', i+1, remoteProgress[i]); 
	}
}

function parselinks(links)
{
	/*
	Return array:
		0 => total amount of links
		1 => rapidshare
		2 => megaupload
		3 => hotfile
		4 => netload
		5 => megashares
		6 => Any other http/ftp links
	*/
	var regex = [
		'',
		/http:\/\/?(www\.|)rapidshare\.com\/files\/[0-9]+\/[\w._-]+/gi,
		/http:\/\/?(www\.|)megaupload\.com\/\?d=[0-9A-Za-z]+/gi,
		/http:\/\/?(www\.|)hotfile\.com\/dl\/[0-9]+\/\w+\/.+/gi,
		/http:\/\/?(www\.|)netload\.in\/datei\w+\/.+/gi,
		/http:\/\/d01\.megashares\.com\/\?d01=\w+/gi,
		/(ht|f)tp:\/\/.+/gi
	];
	var ret = [[],[],[],[],[],[],[]];
	ret[0] = 0;
	for(i=1;i<regex.length;i++)
	{
		matches = links.match(regex[i]);
		flag = false;
		if(i > 0 && i < 6 && page_name == "direct")
		{
			if($.trim(loaded_hosts[i-1][1]) == "")
			{
				flag = true;
			}
		}
		if(matches != null)
		{
			for(j=0;j<matches.length;j++)
			{
				links = links.replace(matches[j], "");
				if(flag == false)
				{
					ret[i][j] = matches[j];
					ret[0] += 1;
				}
			}
		}
	}
	return ret;
}

function sortBoxes(id)
{
	var links3 = $.trim($(id).val());
	links2 = parselinks(links3);
	links3 = links3.split("\n");
	for(i=0;i<links2[2].length;i++)
	{
		for(j=0;j<links3.length;j++)
		{
			if(links3[j].indexOf(links2[2][i]) > -1)
			{
				links2[2][i] = links3[j];
				break;
			}
		}
	}
	final_links = "";
	for(k=1;k<links2.length;k++)
	{
		var links4 = links2[k];
        	for(i=0;i<links4.length;i++)
        	{
        		for(j=i;j<links4.length;j++)
        		{
        			if(get_filename(links4[i]) > get_filename(links4[j]))
        			{
        				temp = links4[i];
        				links4[i] = links4[j];
        				links4[j] = temp;
        			}
        		}
        	}
        	final_links += links4.join("\r\n") + "\r\n";
	}
	final_links = $.trim(final_links);
	$(id).val(final_links);
}

function get_filename(link)
{
	if(link.indexOf(String.fromCharCode(9,9)) == -1)
	{
		ex = link.split("/");
	}
	else
	{
		ex = link.split(String.fromCharCode(9,9));
	}
	return ex[ex.length-1];
}

var topictitle = [">", ">", ">", "M", "i", "r", "r", "o", "r", "M", "a", "k", "e", "r", " ", "i", "s", " ", "d", "o", "n", "e", "<", "<", "<"];
var countery = 0;
var counterx = 0;
var temptopic = "";
var windowFocus = true;
var originalTitle = document.title;

function thetitle()
{
	if(windowFocus != true)
	{
        	if(countery < topictitle.length)
        	{
                	temptopic += topictitle[countery];
                	countery += 1;
                	document.title = temptopic;
                	setTimeout(thetitle, 40);
        	}
        	else
        	{
        		
        		setTimeout(trimtitle, 1000);
        	}
	}
	else
	{
		document.title = originalTitle;
	}
}

function setdetails()
{
	document.title = "";
	countery = 0;
	temptopic = "";
	thetitle();
}

function trimtitle()
{
	document.title = document.title.substr(1, document.title.length-1);
	if(document.title.length > 1 && document.title != window.location.href)
	{
		setTimeout(trimtitle,40);
	}
	else
	{
		setTimeout(setdetails,40);
	}
}

window.onblur = function() 
{
	windowFocus = false;
}

window.onfocus = function() 
{
	windowFocus = true;
}

var chatuser = "";

function chat_login()
{
	user = $("#chat-name").val();
	if($.trim(user) != "")
	{
        	$.ajax({
        		data: "mode=chat&action=login&username=" + user,
        		success: function(msg){
        			chatuser = msg;
        			$(".chat-login-box").slideUp(500, function(){
        				$(".hidden").slideDown(500);
        				chat_users();
        				chat_refresh();
        			});
        		}
        	});
	}
	else
	{
		alert("ERROR - please fill in a username!");
	}
}

function chat_users()
{
	$.ajax({
		data: "mode=chat&action=list_users",
		success: function(msg){
			$("#chat-users").html(msg);
			window.setTimeout(chat_users, 10000);
		}
	});
}

function chat_refresh()
{
	$.ajax({
		data: "mode=chat&action=list_chat",
		success: function(msg){
			original = $("#chat-container").html();
			if(original != msg)
			{
				$("#chatbox").animate({ scrollTop: $("#chatbox").attr("scrollHeight") }, 1000);
				$("#chat-container").html(msg);
			}
			window.setTimeout(chat_refresh, 1000);
		}
	});
}

function send_chat()
{
	if($.trim($("#chattext").val()) != "")
	{
		$("#chattext, #chatsend").attr("disabled", "true");
        	$.ajax({
        		data: "mode=chat&action=add_chat&message=" + $("#chattext").val(),
        		success: function(){
        			$("#chattext, #chatsend").attr("disabled", "");
        			$("#chattext").val("");
        		}
        	});
	}
	else
	{
		alert("Please enter a message!");
	}
}