// framebuster, if you need to run our site in a frame please contact us first
if (top != self) top.location = location;

function formRecord(field, rnd, state) {this.field = field; this.rnd = rnd; this.state = state;}
var formsData = new Array();
var start_upload_time;

function getProgressID() {
	var uuid = Math.floor(Math.random()*999999999999999);
	var ajax = new Ajax.Request('/upload/progress', {
			method: 'get',
			requestHeaders: {"X-Progress-ID": uuid},
			onSuccess: function(res) {
				var upload = eval(res.responseText);
				if (upload.state != 'starting') setTineout('getProgressID()', 1000);
			},
			onFailure: function () {alert('Internal server error.')}
		}
	);

	return uuid;
}

function startUpload(sel) {
	if (!$('term').checked) {
		 alert("Please Agree to the Terms of Service.");
		 return false;
	}
	if (sel == 'videos' && String($('fileupload1').value).search(/\.flv|\.avi$/) == -1) {
		alert('Please select file "filename.(flv|avi)"');
		return false;
	}
	for(var i=1;i<=cnt_form;i++) {
		if (filenameFilter($('fileupload' + i).value)) {
			alert(ff_error);
			return;
		}
	}
	var verify_param = '';
	var cnt_form = $('main_table').rows.length - 5;
	for(var i=1;i<=cnt_form;i++) verify_param = verify_param + (i == 1 ? '' : ' ') + $('fileupload' + i).value;
	new Ajax.Request('/search/filename_filter?filename=' + verify_param, {
		method: 'get',
		onSuccess: function(res) {
			if (res.responseText.match(/true|false/) && res.responseText == 'false') {
				var rnd_group = Math.floor(Math.random()*999999999999999);
				var stats_param = '';
				start_upload_time = new Date();
				for(var i=1;i<=cnt_form;i++) {
					if (String($('fileupload' + i).value).replace(/\s/g, "") != '') {
						formsData.push(new formRecord(i, getProgressID(), 0));
						$('upload' + i).action = Scheme + '://' + Host + '/upload/files?ctime=' + String(start_upload_time.getTime()).replace(/\d{3}$/, '') + '&id_group=' + rnd_group + '&X-Progress-ID=' + formsData[formsData.length-1].rnd;
						stats_param += i + '=' + formsData[formsData.length-1].rnd + '&';
						$('fileupload' + i).name = formsData[formsData.length-1].rnd + $('fileupload' + i).name;
					}
				}
				if (formsData.length == 0) return false;

				mtime = new Date();
				stats_param = stats_param + '&ctime=' + String(start_upload_time.getTime()).replace(/\d{3}$/, '') + '&mtime=' + String(mtime.getTime()).replace(/\d{3}$/, '');
				updateStats(stats_param + '&host=' + Host, rnd_group);
				$('add_field').innerHTML="";
				$('send').value = 'Uploading...';
				$('send').disabled = true;
				$('menu').style.display = 'none';
				$('menu_body').style.display = 'none';
				$('waiting').innerHTML = '<img src="/img/large_loader.gif" width="32" height="32"><br><h1>Please Wait...</h1>';
				return;
			}
			alert(ff_error);
		},
		onFailure: function () {alert('Internal server error.')}
	});
}

function submitForms() {
	var cntUploading = 0;
	var result = '';
	for(var i=0; i<formsData.length; i++) {
		var status=$('status' + formsData[i].field);
		if (! status) return '';
		if (status && status.innerHTML == 'Uploading...') cntUploading++;
		if (status && status.innerHTML == 'Waiting for connection...' && formsData[i].state == 1) cntUploading++;
		if (formsData[i].state == 1) result += formsData[i].field + ',';
	}
	for(var i=0; i<formsData.length; i++) {
		if (formsData[i].state == 0) {
			if (cntUploading < 100) {
				$('upload' + formsData[i].field).submit();
				formsData[i].state = 1;
				cntUploading++;
			}
		}
	}
	return result;
}

function updateStats(param, rnd_group) {
	var refreshStats =  parseInt($('refreshStats').value);
	if (refreshStats) refreshStats = refreshStats * 1000
	else refreshStats = 10000;
	var mtime = new Date();
	param = param.replace(/mtime=\d+/, 'mtime=' + String(mtime.getTime()).replace(/\d{3}$/, ''));
	var submitParam = submitForms();
	var myAjax = new Ajax.Request("/upload/stats", {method: 'get', parameters: param + '&submitFiles=' + submitParam + '&rnd=' + Math.floor(Math.random()*999999999999999), onComplete: showStat, onFailure : showStatError});
	var fError = false;
	var fReady = false;
	for(var i=0; i<formsData.length; i++) {
		var status=$('status' + formsData[i].field);
		if (status && status.innerHTML == 'Internal error') fError = true;
		if (status && status.innerHTML == 'Connection broken') fError = true;
		if (status && status.innerHTML == 'Ready to use') fReady = true;
		if (status == null || (status.innerHTML != 'Ready to use' && status.innerHTML != 'Internal error' && status.innerHTML != 'Connection broken')) {
			setTimeout('updateStats("' + param + '",' + rnd_group + ')', refreshStats);
			return;
		}
	}
	if (fReady)
		if (fError) $('waiting').innerHTML = '<h2>Sorry, some of the files has been failed to upload due to an internal error.</h2><a href="/upload/change?group=' + rnd_group + '">Continue</a>';
		else {
			location.href='/upload/change?group=' + rnd_group;
			return;
		}
	else $('waiting').innerHTML = '<h2> Sorry, some of the files has been failed to upload due to an internal error.</h2>';
	setTimeout('updateStats("' + param + '",' + rnd_group + ')', refreshStats);
}

function showStat(res) {
	var ie = res.responseXML.documentElement.getElementsByTagName('total').item(0).textContent == null;
	var items = res.responseXML.documentElement.getElementsByTagName('item');
	var total = ie ? res.responseXML.documentElement.getElementsByTagName('total')[0].text : res.responseXML.documentElement.getElementsByTagName('total').item(0).textContent;

	var today = new Date();
	var diff = new Date(today.valueOf()-start_upload_time.valueOf());
	var HTML = '<div class="tor-box" align="left">';
	for (var i=0; i<items.length; i++) {
		var number = ie ? items[i].getElementsByTagName('number')[0].text : items[i].getElementsByTagName('number').item(0).textContent;
		var size = ie ? items[i].getElementsByTagName('size')[0].text : items[i].getElementsByTagName('size').item(0).textContent;
		var bytes = ie ? items[i].getElementsByTagName('bytes')[0].text : items[i].getElementsByTagName('bytes').item(0).textContent;
		var id_group = ie ? items[i].getElementsByTagName('id_group')[0].text : items[i].getElementsByTagName('id_group').item(0).textContent;
		var progress = ie ? items[i].getElementsByTagName('progress')[0].text : items[i].getElementsByTagName('progress').item(0).textContent;
		var state = ie ? items[i].getElementsByTagName('state')[0].text : items[i].getElementsByTagName('state').item(0).textContent;
		var speed = ie ? items[i].getElementsByTagName('speed')[0].text : items[i].getElementsByTagName('speed').item(0).textContent;
		var remaining = ie ? items[i].getElementsByTagName('remaining')[0].text : items[i].getElementsByTagName('remaining').item(0).textContent;
		var complited = ie ? items[i].getElementsByTagName('complited')[0].text : items[i].getElementsByTagName('complited').item(0).textContent;

		HTML += '<div class="tor-box-num">' + number + '</div><h2>' + $('fileupload' + number).value + '</h2>';
		if (state == 'Ready to use') {
			HTML += '<div class="sub-title">Status: <b id="status' + number + '">' + state + '</b> / Size: ' + FormatSize(size) + ' / ';
			HTML += '<a target="_blank" href="/upload/change?group=' + id_group + '">Linking codes</a>';
		} else {
			HTML += '<div class="progressbar_cont"><div align="center" class="progressbar" style="width:' + progress + '">' + progress + '</div></div>';
			HTML += '<div class="sub-title">Status: <b id="status' + number + '">' + state + '</b>';
			if (state != 'Waiting for connection...') HTML += ' / Completed: ' + complited;
			if (state != 'Connection broken' && state != 'Internal error' && state != 'Waiting for connection...' && state != 'Pending' && state != 'In enqueue') HTML += ' / ' + FormatSize(bytes) + ' from ' + FormatSize(size) + '; to speed ' + speed + '; remain ' + remaining;
		}
		HTML += '</div>';
	}
	HTML += '<br /><h2>Total</h2>';
	HTML += '<div class="progressbar_cont"><div align="center" class="progressbar" style="width:' + total + '">' + total + '</div></div>';
	HTML += '<div class="sub-title">Completed: ' + (diff.getUTCHours() < 10 ? '0' + diff.getUTCHours() : diff.getUTCHours()) + ':' + (diff.getUTCMinutes() < 10 ? '0' + diff.getUTCMinutes() : diff.getUTCMinutes()) + ':' + (diff.getUTCSeconds() < 10 ? '0' + diff.getUTCSeconds() : diff.getUTCSeconds()) + '</div></div>';
	$('stats').innerHTML = HTML;
}

function showStatError(req) {
	$('stats').align = "center";
	$('stats').innerHTML = 'There was a problem retrieving the XML data : ' + req.statusText;
}

function str2file(str) {
	var re = /[^\w\d\-\.]/g;
	str = str.replace(re,"_");
	re = /_+/g;
	str = str.replace(re,"_");
	re = /^_/;
	str = str.replace(re,"");
	re = /_$/;
	str = str.replace(re,"");
	return str;
}

function changeName(id, evt) {
	var value = $('input_' + id).value;
	$('input_' + id).value = str2file(value);
	if (value != $('input_' + id).value) return;
	var pars = 'link=' + $('input_' + id).value + '&id=' + id;
	new Ajax.Request('/test_name', {method: 'get', parameters: pars, onComplete: displayName} );
}

function objFiles(host, filename, linkname, deleted, size, vol_num, vols_cnt) {
	this.host = host;
	this.filename = filename;
	this.linkname = linkname;
	this.deleted = deleted;
	this.size = size;
	this.vol_num = vol_num;
	this.vols_cnt = vols_cnt;
}

function FormatSize(size) {
	size = parseInt(size);
	if (size < Math.pow(2,10)) {return size + ' byte'}
	if (size >= Math.pow(2,10) && size < Math.pow(2,20)) {return round_rank(size/Math.pow(2,10), 3) + ' Kb'}
	if (size >= Math.pow(2,20) && size < Math.pow(2,30)) {return round_rank(size/Math.pow(2,20), 3) + ' Mb'}
	if (size >= Math.pow(2,30)) {return round_rank(size/Math.pow(2,30), 3) + ' GB'}
}

function refreshFiles(group) {
	var objSel = $('sel_files');
	var size = 0;
	var direct_link = '';
	var forum_link1 = '';
	var forum_link2 = '';
	var html_link = '';
	var delete_code = '';
	if (objSel.value == 'all') {
		for (var i=0; i<files.length;i++) {
			var sep = i+1 == files.length ? '' : "\n";
			var link = Scheme + '://' + files[i].host + '/' + files[i].linkname + '.html';
			var full_file = files[i].vol_num == 0 && files[i].vols_cnt > 0 ? (i > 0 ? "\n" : '') + "------------PREMIUM ONLY-----------\n" : '';
			sep += files[i].vol_num == 0 && files[i].vols_cnt > 0 ? "-----------------------------------\n" + (i == files.length-1 ? '' : "\n" ) : '';
			size = parseInt(size) + parseInt(files[i].size);
			direct_link += full_file + link + sep; 
			forum_link1 += full_file + '[url=' + link + ']' + files[i].filename + '[/url]' + sep;
			forum_link2 += full_file + '[url]' + link + '[/url]' + sep;
			html_link += full_file + '<a href="' + link + '">Click here to download ' + files[i].filename + '</a>' + sep;
		}
		delete_code = Scheme + '://' + files[0].host + '/delete?group=' + group;
	} else {
		var link = Scheme + '://' + files[objSel.value].host + '/' + files[objSel.value].linkname + '.html';
		var full_file = files[objSel.value].vol_num == 0 && files[objSel.value].vols_cnt > 0 ? "PREMIUM ONLY\n" : '';
		size = files[objSel.value].size;
		direct_link = full_file + link;
		forum_link1 = full_file + '[url=' + link + ']Click here to download ' + files[objSel.value].filename + '[/url]';
		forum_link2 = full_file + '[url]' + link + '[/url]';
		html_link = full_file + '<a href="' + link + '">Click here to download ' + files[objSel.value].filename + '</a>';
		delete_code = Scheme + '://' + files[objSel.value].host + '/delete?file=' + files[objSel.value].deleted;
	}
	$('size_file').innerHTML = FormatSize(size);
	$('direct_link').value = direct_link;
	$('forum_link1').value = forum_link1;
	$('forum_link2').value = forum_link2;
	$('html_link').value = html_link;
	$('delete_code').value = delete_code;
}

function addField(num, sel) {
	var newRow = $('main_table').insertRow(num);
	var cellNumber = newRow.insertCell(0);
	var cellUpload = newRow.insertCell(1);
	cellNumber.innerHTML = num + "&nbsp;";
	cellNumber.align = 'right';
	cellUpload.innerHTML = '<form target="if_upload'+num+'" style="margin: 0px; padding: 0px;" name="upload'+num+'" id="upload'+num+'" method="post" enctype="multipart/form-data"><input id="fileupload'+num+'" type="file" class="file" name="fileupload'+num+'" size=50 maxLength="255" onChange="document.getElementById(\'send\').value=\'Click here to start Uploading\'; document.getElementById(\'send\').disabled=false"></form><iframe name=if_upload'+num+' style="display: none"></iframe>';

	if (sel == '') {
		var advSetting = '<input type="button" value="Advanced settings" onclick="applyAdvSettings(\'show\')" />';
		if (num != 6) {
			$('add_field').innerHTML = '<div align="left"><input id="but_addfield" type="button" value="More files..." onClick="addField('+(num+1)+',\'\')"> ' + advSetting + ' </div>';
			$('but_addfield').focus();
		} else {
			$('add_field').innerHTML = '<div align="left">' + advSetting + '</div>';
		}
	}
}

function applyAdvSettings(action) {
	$('advSettings').style.display = action == 'hide' ? 'none' : '';
}

function ResendActivate() {
	$('frm_login').action = '/recent_activate';
	$('frm_login').submit();
}

var typeUpload = 'url';
function SelectSourceTorrent(type) {
	if (type == 'url') {
		$('url').disabled=false;
		typeUpload = 'url';
		$('filename').disabled=true;
		$('filename').value='';
	}
	if (type == 'filename') {
		$('url').disabled=true;
		typeUpload = 'filename';
		$('filename').disabled=false;
		$('url').value='';		
	}
}

function redirect_page(timer, url) {
	if (timer == 0) location.href = url;
	$('span_time').innerHTML = timer;
	timer--;
	setTimeout('redirect_page(' + timer + ', "' + url + '" )', 1000);
}

function trVerifyPlimus(uniq_key, start_time) {
	var str = $('tr_status').innerHTML;
	var params = 'uniq_key=' + uniq_key + '&start_time=' + start_time;
	if (str.indexOf('Processing') != -1 || str.indexOf('There was a problem') != -1) {
		var myAjax = new Ajax.Updater( {success:'tr_status'}, "/billing/plimus/verify", {method:'get', parameters: params, onFailure : showTrErr, evalScripts: true} );
		setTimeout('trVerifyPlimus("' + uniq_key + '", ' + start_time + ')', 1500);
	}
}

function trVerifyPayPal(txn_id, start_time) {
	var str = $('tr_status').innerHTML;
	var params = 'txn_id=' + txn_id + '&start_time=' + start_time;
	if (str.indexOf('Processing') != -1 || str.indexOf('There was a problem') != -1) {
		var myAjax = new Ajax.Updater( {success:'tr_status'}, "/billing/paypal/verify", {method:'get', parameters: params, onFailure : showTrErr, evalScripts: true} );
		setTimeout('trVerifyPayPal("' + txn_id + '", ' + start_time + ')', 1500);
	}
}

function trVerifyDaoPay(uniq_key, start_time) {
	var str = $('tr_status').innerHTML;
	var params = 'uniq_key=' + uniq_key + '&start_time=' + start_time;
	if (str.indexOf('Processing') != -1 || str.indexOf('There was a problem') != -1) {
		var myAjax = new Ajax.Updater( {success:'tr_status'}, "/billing/daopay/verify", {method:'get', parameters: params, onFailure : showTrErr, evalScripts: true} );
		setTimeout('trVerifyDaoPay("' + uniq_key + '", ' + start_time + ')', 1500);
	}
}

function showTrErr(req) {
    $('tr_status').align = "center";
    $('tr_status').innerHTML = 'There was a problem retrieving the XML data : ' + req.statusText;
}

function VerifyPinCode() {
	var msg = '';
	if ($('pincode').value == '') msg = 'Pin Code cannot be empty';
	if (String($('pincode').value).length != 10) msg = 'Invalid Pin Code';

	if (msg != '') alert(msg);
	return msg == '' ? true : false;
}

function HideDisplayErrorBox(tid) {
	$('err_msg_' + tid).style.display = $('err_msg_' + tid).style.display == 'none' ? '' : 'none';
}

var currSaveTorID = '';
function HideDisplayOptionTorrent(id) {
	$('option_torrent_' + id).style.display = $('option_torrent_' + id).style.display == 'none' ? '' : 'none';
}

function SaveOptionTorrent(id) {
	var params = 'id=' + id;
	if ($('seed_to_size_' + id).value != '') params += '&seed_to_size=' + $('seed_to_size_' + id).value + '&measure=' + $('measure_' + id).value;
	if ($('seed_to_ratio_' + id).value != '') params += '&seed_to_ratio=' + $('seed_to_ratio_' + id).value;
	$('btn_save_options_seed_' + id).value = 'Saving';
	$('btn_save_options_seed_' + id).disabled = true;
	$('seed_to_size_' + id).disabled = true;
	$('seed_to_ratio_' + id).disabled = true;
	$('measure_' + id).disabled = true;
	$('err_msg_' + id).style.display = 'none';
	var myAjax = new Ajax.Request('/users/files/save_options', {method: 'get', parameters: params, onComplete: showResSaveOptionTorrent ,onFailure: showResSaveOptionTorrent});
	currSaveTorID = id;
}

function showResSaveOptionTorrent(res) {
	var res_text = new String(res.responseText);
	if (res_text.search(/^\s*all_ok\s*$/) != -1) {
		$('old_seed_to_size_' + currSaveTorID).value = $('seed_to_size_' + currSaveTorID).value;
		$('old_seed_to_ratio_' + currSaveTorID).value = $('seed_to_ratio_' + currSaveTorID).value;
		$('old_measure_' + currSaveTorID).value = $('measure_' + currSaveTorID).value;
	} else {
		var err_msg = new String(res_text.search(/^\s*err_msg # /) != -1 ? res_text.replace(/^\s*err_msg # /, "") : 'There was a problem retrieving the HTML data: ' + res.statusText);
		$('err_msg_' + currSaveTorID).style.display = '';
		$('err_msg_' + currSaveTorID).innerHTML = err_msg;
	}
	$('seed_to_size_' + currSaveTorID).disabled = false;
	$('seed_to_ratio_' + currSaveTorID).disabled = false;
	$('measure_' + currSaveTorID).disabled = false;
	VerifySaveTorrent(currSaveTorID);
	currSaveTorID = '';
}

function VerifySaveTorrent(id) {
	var objBtnSave = $('btn_save_options_seed_' + id);
	objBtnSave.value = ($('old_seed_to_size_' + id).value == $('seed_to_size_' + id).value && $('old_seed_to_ratio_' + id).value == $('seed_to_ratio_' + id).value && $('old_measure_' + id).value == $('measure_' + id).value || $('seed_to_size_' + id).value == '' && $('seed_to_ratio_' + id).value == '') ? 'Saved' : 'Save';
	objBtnSave.disabled = (objBtnSave.value == 'Saved') ? true : false;
}

function VerifyDigit(evt, type) {
	evt = (evt) ? evt : event;
	var charCode = (evt.which) ? evt.which : event.keyCode;
	var result = (charCode > 31 && (charCode < 48 || charCode > 57)) ? false : true;
	if (charCode == 46 && type == 'float') result = true;
	return result;
}

function str2byte(str) {
	if (str.search(/^\d+\.?\d{0,}\s*(byte|Kb|Mb|GB)$/) == -1) return 0;
	var arrSize = str.split(' ');
	if (arrSize[1] == 'byte') return parseInt(arrSize[0]);
	if (arrSize[1] == 'Kb') return parseInt(arrSize[0] * Math.pow(2,10));
	if (arrSize[1] == 'Mb') return parseInt(arrSize[0] * Math.pow(2,20));
	if (arrSize[1] == 'GB') return parseInt(arrSize[0] * Math.pow(2,30));
}

function round_rank(num, rank) {
	if (rank == undefined) rank = 3;
	var str = new String(num);
	var exp = 0;
	var exp_sign = '-';
	if (str.search(/^\d+\.?\d{0,}e?[\+-]?\d{0,}$/)) return NaN;
	if (str.search(/e[-\+]/) != -1) {
		if (str.search(/e-/) == -1) exp_sign = '+';
		var arrNumber = str.split(/e[-\+]/);
		str = arrNumber[0];
		exp = parseInt(arrNumber[1]);
	}
	arrNumber = str.split('.');
	if (exp != 0) {
		if (exp_sign == '-') {
			var exp_length = Math.abs(exp-arrNumber[0].length);
			if (arrNumber[0].length < exp) {
				for(var i=0;i<exp_length;i++) arrNumber[0] = '0' + arrNumber[0];
				arrNumber[0] = '0.' + arrNumber[0];
			} else {
				if (exp_length == 0) arrNumber[0] = '0.' + arrNumber[0];
				else arrNumber[0] = arrNumber[0].substr(0, exp_length) + '.' + arrNumber[0].substr(exp_length);
			}
		} else for(var i=0;i<exp;i++) arrNumber[0] = arrNumber[0] + '0';
	}
	if (arrNumber[1] != undefined) arrNumber[0] = arrNumber[0] + (exp != 0 ? '' : '.') + arrNumber[1];
	str = arrNumber[0];
	arrNumber = str.split('.');
	if (arrNumber[1] != undefined && arrNumber[1].length > rank) {
		arrNumber[1] = parseInt(arrNumber[1].substr(rank,1)) > 4 ? parseInt(arrNumber[1].substr(0, rank)) + 1 : parseInt(arrNumber[1].substr(0, rank));
		arrNumber[1] = new String(arrNumber[1]);
		if (arrNumber[1].length != rank) {
			rank_length = rank - arrNumber[1].length;
			for(var i=0;i<rank_length;i++) arrNumber[1] = arrNumber[1] + '0';
		}
	}
	str = arrNumber[0] + (arrNumber[1] == undefined ? '' : '.' + arrNumber[1]);
	return str;
}

function SinhroOptionsFields(id, type, size) {
	var objSize = $('seed_to_size_' + id);
	var objRatio = $('seed_to_ratio_' + id);
	var objMeasure = $('measure_' + id);
	if (type == 'ratio' && parseFloat(objRatio.value) > 0) {
		size = FormatSize(parseFloat(objRatio.value) * size);
		arrSize = size.split(' ');
		objSize.value = arrSize[0];
		for (var i=0;i<objMeasure.length;i++) if (arrSize[1] == objMeasure.options[i].innerHTML) objMeasure.selectedIndex = i;
	}
	if ((type == 'measure' || type == 'size') && parseInt(objSize.value) > 0)
		objRatio.value = round_rank(str2byte(objSize.value + ' ' + objMeasure.value)/size, 2);
}

function VerifyPayInfo() {
	var err_msg = '';
	if (err_msg == '' && $('payee_name').value == '') err_msg = 'Field "Payee name" cannot be null. Please fill field "Payee name"!';
	if (err_msg == '' && $('contact_name').value == '') err_msg = 'Filed "Contact name" cannot be null. Please fill field "Contact name"!';
	if (err_msg == '' && $('address').value == '') err_msg = 'Field "Address" cannot be null. Please fill field "Address"!';
	if (err_msg == '' && $('city').value == '') err_msg = 'Field "City" cannot be null. Please fill field "City"!';
	if (err_msg == '' && $('state').value == '') err_msg = 'Field "State" cannot be null. Please fill field "State"!';
	if (err_msg == '' && $('zip').value == '') err_msg = 'Field "ZIP" cannot be null. Please fill field "ZIP"!';
	if (err_msg == '' && $('country').value == '') err_msg = 'Field "Country" cannot be null. Please fill field "Country"!';
	if (err_msg == '' && $('phone').value == '') err_msg = 'Field "Phone" cannot be null. Please fill field "Phone"!';
	if (err_msg == '' && $('terms_of_service') && !$('terms_of_service').checked) err_msg = 'You did not agree to the Terms of Use.';

	if (err_msg == '') return true;
	alert(err_msg);
	return false;
}

function VerifyChangeDataPayInfo() {
	var change = $('payee_name').value == $('saved_payee_name').value && $('contact_name').value == $('saved_contact_name').value && 
				 $('address').value == $('saved_address').value && $('city').value == $('saved_city').value && 
				 $('state').value == $('saved_state').value && $('zip').value == $('saved_zip').value && 
				 $('country').value == $('saved_country').value && $('phone').value == $('saved_phone').value && 
				 $('payment_type').value == $('saved_payment_type').value && $('payment_details').value == $('saved_payment_details').value;
	
	$('send_payinfo').disabled = change;
	$('send_payinfo').value = change ? 'Saved' : 'Save';
	$('terms_of_service').checked = change;
}

function setTypeTorrentsSearch(type) {
	if (type == 'st') {
		$('adv_search').style.display = 'none';
		$('st_d').checked = false;
		$('st_c').checked = false;
		$('action').selectedIndex = 0;
	} else {
		$('adv_search').style.display = '';
	}
}

function VerifyTorStatus() {
	if (!$('st_f').checked && !$('st_d').checked && !$('st_c').checked) $('st_f').checked = true;
}

function AppendFileToTorrent(type, id, bytes) {
	$('tr_' + id).style.display = type == 'add' ? 'none' : '';
	$('tr_add_' + id).style.display = type == 'add' ? '' : 'none';
	$('cnt_add_files').innerHTML = parseInt($('cnt_add_files').innerHTML) + (type == 'add' ? 1 : -1);
	$('cnt_exists_files').innerHTML = parseInt($('cnt_exists_files').innerHTML) + (type == 'add' ? -1 : 1);
	if ($('cnt_add_files').innerHTML == 0) {
		$('files_size').innerHTML = '0 byte';
	} else {
		$('files_size').innerHTML = FormatSize(str2byte($('files_size').innerHTML) + (type == 'add' ? bytes : -bytes));
	}
}

function VerifyCreateTorrent() {
	var err_msg = '';
	if (err_msg == '' && $('name').value == '') err_msg = 'Field "Name" cannot be null. Please fill field "Name"!';
	if (err_msg == '' && $('cnt_add_files').innerHTML == 0) err_msg = 'There are no files for creation torrent. It is necessary to add even one file.';
	
	if (err_msg != '') {
		alert(err_msg);
		return false;
	}
	
	var tblAddFiles = $('tbl_add_files');
	$('files').value = '';
	for(var i=0; i<tblAddFiles.rows.length; i++) {
		var row = tblAddFiles.rows[i];
		if (row.style.display == '') {
			var id = String(row.id).replace(/^tr_add_/, "");
			$('files').value += id + ',';
		}
	}
	$('files').value = String($('files').value).replace(/,$/, "");

	return true;
}

function SelectAffStatsDate(value) {
	$('date_month').disabled = value == 'date' ? false : true;
	$('date_day').disabled = value == 'date' ? false : true;
	$('date_year').disabled = value == 'date' ? false : true;
	$('period').disabled = value == 'period' ? false : true;
	$('start_month').disabled = value == 'dates' ? false : true;
	$('start_day').disabled = value == 'dates' ? false : true;
	$('start_year').disabled = value == 'dates' ? false : true;
	$('end_month').disabled = value == 'dates' ? false : true;
	$('end_day').disabled = value == 'dates' ? false : true;
	$('end_year').disabled = value == 'dates' ? false : true;
	$('ndate').value = value;
}

function toggleMoreLess(id) {
	el = $('more_' + id);
	toggler = $('aMoreLess_' + id);
	if(el.style.display == 'none') {
		el.style.display = '';
		toggler.innerHTML = 'Less...';
	}
	else {
		el.style.display = 'none';
		toggler.innerHTML = 'More...';
	}
}

function ShowAffiliateStats() {
	var objRadio = document.getElementsByTagName('input');
	var sdates = '';
	for (i=0; i < objRadio.length; i++)
		if (objRadio[i].type == 'radio' && objRadio[i].id == 'dselect' && objRadio[i].checked)
			sdates = objRadio[i].value;
	if (sdates == 'date') $('sdates').value = $('date_year').value + '-' + $('date_month').value + '-' + $('date_day').value;
	if (sdates == 'period') $('sdates').value = $('period').value;
	if (sdates == 'dates') $('sdates').value = $('start_year').value + '-' + $('start_month').value + '-' + $('start_day').value + ' ' + 
											   $('end_year').value + '-' + $('end_month').value + '-' + $('end_day').value;
	$('show_stats').submit();
}

var addTorId = 0;
var addTorType = '';
function AddTor(id, type, name) {
	if (addTorId != 0) return;
	addTorId = id;
	addTorType = type;
	var params = 'id=' + id + '&type=' + type + '&filename=' + name;
	var myAjax = new Ajax.Request( "/users/files/append", {method:'get', parameters: params, onComplete: resAddTor, onFailure: errAddTor} );
	$('spanAddTor_' + id).innerHTML = '<b>' + (type == 'getlink' ? 'Creating link' : 'Addition torrent') + '. Please wait...</b> /';
	$('divAddTorErr_' + id).style.display = 'none';
}

function errAddTor(req) {
	if (addTorId == 0) return;
	$('spanAddTor_' + addTorId).innerHTML = '<a href="javascript: AddTor(' + addTorId + ',\'' + addTorType + '\')">' + (addTorType == 'getlink' ? 'Get link' : 'Download later') + '</a> /';
	$('divAddTorErr_' + addTorId).innerHTML = 'There was a problem retrieving the HTML data : ' + req.statusText;;
	$('divAddTorErr_' + addTorId).style.display = '';
	addTorId = 0;
}

function resAddTor(res) {
	if (addTorId == 0) return;
	var ie = res.responseXML.documentElement.getElementsByTagName('statusCode').item(0).textContent == null;
	var statusCode = parseInt(ie ? res.responseXML.documentElement.getElementsByTagName('statusCode')[0].text : res.responseXML.documentElement.getElementsByTagName('statusCode').item(0).textContent);
	var text = ie ? res.responseXML.documentElement.getElementsByTagName('text')[0].text : res.responseXML.documentElement.getElementsByTagName('text').item(0).textContent;
	if (statusCode == 0) {
		if (addTorType == 'getlink') {
			$('spanAddTor_' + addTorId).innerHTML = '<a href="' + text + '">Download now</a> /';
			if (ie) window.clipboardData.setData("URL", text);
		} else $('spanAddTor_' + addTorId).style.display = 'none';
		$('used_disk_space').innerHTML = ie ? res.responseXML.documentElement.getElementsByTagName('used_disk_space')[0].text : res.responseXML.documentElement.getElementsByTagName('used_disk_space').item(0).textContent;
		$('count_files').innerHTML = ie ? res.responseXML.documentElement.getElementsByTagName('count_files')[0].text : res.responseXML.documentElement.getElementsByTagName('count_files').item(0).textContent;
	} else {
		$('spanAddTor_' + addTorId).style.display = 'none';
		$('divAddTorErr_' + addTorId).innerHTML = text;
		$('divAddTorErr_' + addTorId).style.display = '';
	}
	addTorId = 0;
}

function show_submenu (obj, name, type) {
	obj.focus();
	obj.className="selected";
	$(name).style.display = '';
	var offsetTop = type == 'down' ? obj.offsetHeight : 0;
	var offsetLeft = type == 'down' ? 0 : obj.offsetWidth;
	if (type == "right") obj.style.borderRight = '0px';
	Position.clone(obj, name, {offsetLeft: offsetLeft, offsetTop: offsetTop, setWidth: obj.offsetWidth > $(name).offsetWidth ? true : false});
	return false;
}

function hide_submenu (obj, name) {
	obj.style.borderRight = '1px solid #CCC';
	if (String(obj.innerHTML).search(/\(\w+\)/) == -1) obj.className="";
	setTimeout('if(document.getElementById("' + name + '")) document.getElementById("' + name + '").style.display="none"', 200);
}

function getCookieVal (offset) {
	var endstr = document.cookie.indexOf (";", offset);
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
	var arg = name + "=";
	var alen = arg.length;
	var clen = document.cookie.length;
	var i = 0;
	while (i < clen) {
		var j = i + alen;
		if (document.cookie.substring(i, j) == arg)
			return getCookieVal (j);
		i = document.cookie.indexOf(" ", i) + 1;
		if (i == 0) break;
	}
	return null;
}

function SetCookie(cookieName,cookieValue,nDays) {
	var today = new Date();
	var expire = new Date();
	if (nDays==null || nDays==0) nDays=1;
	expire.setTime(today.getTime() + 3600000*24*nDays);
	document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString();
}

function pageWidth() {
	return window.innerWidth != null? window.innerWidth: document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth:document.body != null? document.body.clientWidth:null;
}
	
function pageHeight() {
	return window.innerHeight != null? window.innerHeight: document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight:document.body != null? document.body.clientHeight:null;
}

function posLeft() {
	return typeof window.pageXOffset != 'undefined' ? window.pageXOffset:document.documentElement && document.documentElement.scrollLeft? document.documentElement.scrollLeft:document.body.scrollLeft? document.body.scrollLeft:0;
}

function posTop() {
	return typeof window.pageYOffset != 'undefined' ? window.pageYOffset:document.documentElement && document.documentElement.scrollTop? document.documentElement.scrollTop: document.body.scrollTop?document.body.scrollTop:0;
}

function scrollFix(){
	var obol = $('ol');
	obol.style.top = posTop() + 'px';
	obol.style.left = posLeft() + 'px'
}

function sizeFix(){
	var obol = $('ol');
	obol.style.height = pageHeight() + 'px';
	obol.style.width = pageWidth() + 'px';
}

function extendConfirmBox(title, msg, cmd) {
	if (msg == '' || !$('ex_conf_box') || !exConfBox || title == '') return false;
	if (navigator.appName == 'Konqueror') {
		if (confirm(msg)) setTimeout(cmd, 0);
		return;
	}

	var msgId = 0;
	for(var i=0; i<title.length; i++) msgId = msgId + title.charCodeAt(i);
	if (GetCookie('conf_box_' + msgId)) {
		setTimeout(cmd, 0);
		return false;
	}
	
	$('ecb_title').innerHTML = title;
	$('ecb_message').innerHTML = msg;
	var obol = $('ol');
	var obbxd = $('mbd');
	obbxd.innerHTML = $('ex_conf_box').innerHTML;
	obol.style.height = pageHeight() + 'px';
	obol.style.width = pageWidth() + 'px';
	obol.style.top = posTop() + 'px';
	obol.style.left = posLeft() + 'px';
	obol.style.display = 'block';
	var obbx = $('mbox');
	var tp = posTop() + ((pageHeight()-200) / 2) - 12;
	var lt = posLeft() + ((pageWidth())/2) - 12;
	obbx.style.top = (tp < 0 ? 0 : tp) + 'px';
	obbx.style.left = (lt < 0 ? 0 : lt) + 'px';
	obbx.style.display = 'block';
	var rect = obbx.getBoundingClientRect();
	obbx.style.left = (rect.left - (rect.right - rect.left)/2) + 'px';
	document.body.style.overflow = 'hidden';
	exConfBox.status = 'open';
	waitChoice(cmd, msgId);
	return false;
}

function waitChoice(cmd, msgId) {
	if (exConfBox.status == 'open') {
		setTimeout('waitChoice("' + cmd + '", ' + msgId + ')', 500);
		return false;
	}
	$('ol').style.display = 'none';
	$('mbox').style.display = 'none';
	if (exConfBox.value) {
		if (exConfBox.check) SetCookie('conf_box_' + msgId, 1, 1000);
		setTimeout(cmd, 0);
	}
	exConfBox.status = 'close';
	document.body.style.overflow = 'auto';
}

function init_message_box(){
	var obody = document.getElementsByTagName('body')[0];
	var frag = document.createDocumentFragment();
	var obol = document.createElement('div');
	obol.setAttribute('id','ol');
	obol.style.display = 'none';
	obol.style.position = 'absolute';
	obol.style.top = 0;
	obol.style.left = 0;
	obol.style.zIndex = 998;
	obol.style.width = '100%';
	frag.appendChild(obol);
	var obbx=document.createElement('div');
	obbx.setAttribute('id','mbox');
	obbx.style.display = 'none';
	obbx.style.position = 'absolute';
	obbx.style.zIndex = 999;
	var obl = document.createElement('span');
	obbx.appendChild(obl);
	var obbxd = document.createElement('div');
	obbxd.setAttribute('id','mbd');
	obl.appendChild(obbxd);
	frag.insertBefore(obbx,obol.nextSibling);
	obody.insertBefore(frag,obody.firstChild);
	window.onscroll = scrollFix;
	window.onresize = sizeFix;
}

window.onload = init_message_box;

function ActivateTab(name) {
	if ($(name + '_a').className == 'selected') return;

	var arrA = $('content').getElementsByTagName('a');
	var arrDiv = $('content').getElementsByTagName('div');
	for (var i = 0; i < arrA.length; i++)
		if (arrA[i].className == 'selected') arrA[i].className = '';
	for (var i = 0; i < arrDiv.length; i++)
		if (String(arrDiv[i].id).indexOf('_tab_body') != -1) arrDiv[i].style.display = 'none';
	$(name + '_a').className = 'selected';
	$(name + '_tab_body').style.display = '';
	
	return;
}

function AddBookmark() {
	if (document.all) window.external.AddFavorite(document.location.href, document.title)
	else window.sidebar.addPanel( document.title, document.location.href, '' );
}

function ShowRating(obj, action) {
	if (action == 'over') {
		obj.style.cursor = "pointer";
		var num = obj.id;
		num = parseInt(num.replace('r',''));
		for (var i = 1; i <= num; i++) $('r' + i).src = '/img/rating_over.gif';
		switch (obj.id) {
			case 'r1': $('rate_st').innerHTML = 'Awluf'; break;
			case 'r2': $('rate_st').innerHTML = 'Bad'; break;
			case 'r3': $('rate_st').innerHTML = 'Average'; break;
			case 'r4': $('rate_st').innerHTML = 'Good'; break;
			case 'r5': $('rate_st').innerHTML = 'Excellend'; break;
			default: $('rate_st').innerHTML = '';
		}
	} else {
		for (var i = 1; i <= 5; i++) $('r' + i).src = '/img/rating_out.gif';
		$('rate_st').innerHTML = '&nbsp;';
	}
}

function SaveRating(name, rate) {
	var myAjax = new Ajax.Updater( {success:'rate_st'}, "/rating/" + name + '/' + rate, {method:'get', onFailure : showRatingErr, evalScripts: true} );
}

function showRatingErr(req) {
	alert('There was a problem retrieving the XML data : ' + req.statusText);
}

function post_comment(url) {
	var param = 'txt=' + $('txt').value + ($('login') ? '&login=' + $('login').value + '&email=' + $('email').value : '');
	var myAjax = new Ajax.Request(url, {method: 'post', parameters: param, onComplete: showComm, onFailure : showCommError});
	$('btn_post_comment').value = 'Saving';
	$('btn_post_comment').disabled = true;
}

function showCommError(req) {
	$('msg').innerHTML = '<div class="warning_box">There was a problem retrieving the XML data : ' + req.statusText + '</div>';
	$('btn_post_comment').disabled = false;
	$('btn_post_comment').value = 'Post new comment';
}

function showComm(res) {
	var arrData = res.responseText.split('#separator#');
	var error = arrData[0];
	var message = arrData[1];
	var result = arrData[2];
	var ctime = arrData[3];
	var users = arrData[4];
	var txt = arrData[5];

	if (error == '' && message == '') $('msg').innerHTML = '';
	if (error != '') $('msg').innerHTML = error;
	if (message != '') $('msg').innerHTML = message;

	if (result == 'ok') {
		$('comments').innerHTML = '<li><h3 class="left"><b>' + users + '</b> at <b>' + ctime + '</b></h3>' + txt + '</li>' + $('comments').innerHTML;
		$('cnt_comments').innerHTML = parseInt($('cnt_comments').innerHTML) + 1;
		if ($('login')) {
			$('login').value = '';
			$('email').value = '';
		}
		$('txt').value = '';
	}

	$('btn_post_comment').value = 'Post new comment';
	$('btn_post_comment').disabled = false;
}

function ListVideos(id, num) {
	var obj = $('list_' + id);
	if (obj.style.cursor != 'pointer') return;
	obj.src = '/tb/' + id + '_' + num + '.jpg';
	setTimeout('ListVideos(' + id + ',' + (num == 6 ? 1 : num + 1) + ')', 500);
}

function filenameFilter(fn) {
	new Ajax.Request('/search/filename_filter?filename=' + fn, {
		method: 'get',
		onSuccess: function(res) {
			if (res.responseText.match(/true|false/)) {
				if (res.responseText == 'true') return true;
				else return false;
			} else {
				return true;
			}
		},
		onFailure: function () {
			return true;
		}
	});
	return true;
}

var last_message = '';
function verifyTorrent(type) {
	if ($(typeUpload == 'url' ? 'url' : 'filename').value == '') {
		alert('Please full field "' + typeUpload + '".');
		return;
	}

/*	$('mbd').innerHTML = '';
	var obol = $('ol');
	obol.style.height = pageHeight() + 'px';
	obol.style.width = pageWidth() + 'px';
	obol.style.top = posTop() + 'px';
	obol.style.left = posLeft() + 'px';
	obol.style.display = 'block';
	var obbx = $('mbox');
	var tp = posTop() + ((pageHeight()-200) / 2) - 12;
	var lt = posLeft() + ((pageWidth())/2) - 12 - 250;
	obbx.style.top = (tp < 0 ? 0 : tp) + 'px';
	obbx.style.left = (lt < 0 ? 0 : lt) + 'px';
	obbx.style.width = '500px';
	obbx.style.display = 'block';
	document.body.style.overflow = 'hidden';*/

	$('status').style.display = '';

	new Ajax.Request('/search/filename_filter?filename=' + $(typeUpload == 'url' ? 'url' : 'filename').value, {
		method: 'get',
		onSuccess: function(res) {
			if (res.responseText.match(/true|false/) && res.responseText == 'false') {
				$('add_torrent').disabled = true;
				$(typeUpload).disabled = true;
				$('type_url').disabled = true;
				$('type_filename').disabled = true;
				$('emailed').disabled = true;
				new Ajax.Request('/users/files/initialize?emailed=' + ($('emailed').checked ? 1 : 0) + '&type=' + typeUpload, {
					method: 'post',
					onSuccess: function(res) {
						if (res.responseText.match(/\d+/)) {
							$('id').value = res.responseText;
							$(typeUpload).disabled = false;
							$('frm_upload').submit();
							$(typeUpload).disabled = true;
							refreshStatus(res.responseText, type);
						}
					},
					onFailure: function () {verifyTorrentError()}
				});
				return;
			}
			$('status').innerHTML = ff_error;
		},
		onFailure: function () {verifyTorrentError()}
	});
}

function refreshStatus(id,type) {
	new Ajax.Request('/users/files/status?id=' + id + '&type=' + type, {
		method: 'get',
		onSuccess: function(transport) {
			var re = /<script type="text\/javascript">([^<]+)<\/script>/;
			var script = re.exec(transport.responseText)[1];
			if (script) eval(script);
			$('status').innerHTML = transport.responseText;
			$('status').style.display = '';
/*			last_message = transport.responseText;
			if (transport.responseText.search(/^Error while/) == -1) $('mbd').innerHTML = '<div class="tor-status">' + transport.responseText + '</div>';
			else $('mbd').innerHTML = '<div class="warning_box">' + transport.responseText + '</div>';
			$('mbd').style.display = 'block';*/
		},
		onFailure: function () {verifyTorrentError()}
	});
};

function verifyTorrentError () {
	$('emailed').disabled = false;
	$('add_torrent').disabled = false;
	$('type_filename').disabled = false;
	$('type_url').disabled = false;
	$(typeUpload).disabled = false;
	$('status').innerHTML = '<div align="center">Internal server error.</div>';
/*	$('mbd').style.display = 'block';
	$('mbd').innerHTML = '<div class="warning_box">Internal server error.</div>';
	last_message = 'Internal server error.';
	closeStatus(10);*/
}

function closeStatus(time) {
	if (parseInt(time) > 0) {
		if ($('status_close')) {
			$('status_close').innerHTML = 'Close this window per ' + time + ' second';
		} else {
			window.onclick = closeStatus;
			$('mbd').innerHTML = $('mbd').innerHTML + '<div id="status_close" class="tor-status-close" align="right">Close this window per ' + time + ' second</div>';
		}
		if ($('ol').style.display != 'none') setTimeout('closeStatus(' + (time - 1) + ')', 1000);
	} else {
		$('emailed').disabled = false;
		$('add_torrent').disabled = false;
		$('type_filename').disabled = false;
		$('type_url').disabled = false;
		$(typeUpload).disabled = false;
		if (!$('log')) $('last_messages').innerHTML = '<ol id="log"></ol>';
		$('log').innerHTML = '<li>' + (typeUpload == 'url' ? 'URL: ' : 'Filename: ') + '<b>' + $(typeUpload).value + '</b><br />' + last_message + '</li>' + $('log').innerHTML
		last_message = '';

		window.onclick = '';
		$('ol').style.display = 'none';
		$('mbox').style.display = 'none';
		document.body.style.overflow = 'auto';
	}
}

function startDownload(delay) {
	if (delay) {
		delay = delay - 1;
		$('free_download').value = 'Free Download (wait ' + delay + 's)';
		setTimeout('startDownload(' + delay + ')', 1000);
	} else {
		$('free_download').value = 'Free Download';
		$('free_download').disabled = false;
	}
}

function redirectIfPay(ref) {
	var utype = GetCookie('_utype');
	if (utype == 1) document.location.href = ref
	else setTimeout('redirectIfPay("' + ref + '")', 1500);
}

function highlightWord(node,word) {
	word = word.replace(/([\.\{\}\[\]\^\$\/\\\+\*\?\(\)])/g, "\\$1");
	var re = new RegExp("(>[^<]*?)(" + word + ")([^>]*?<)", 'gi');
	var str = node.innerHTML;
	var str = str.replace(re, '$1<span class="searchword">$2</span>$3');
	node.innerHTML = str;
	node = null; re = null; word = null;
	return str;
}

function SearchHighlight(search) {
	if (!document.createElement) return;

	var objs = document.getElementsByTagName('span');
	var ids = new Array();
	for (var i=0;i<objs.length;i++) {
		if(String(objs[i].id).search(/name_\d+$/) != -1) {
			ids[ids.length] = objs[i].id;
		}
	}

	var words = unescape(search.replace(/-/g,' ')).split(/\s+/);
	for (w=0;w<words.length;w++) {
		if (words[w].length > 3) words[w] = String(words[w]).replace(/s$/,'');
		if (words[w] != '') {
			for (var i=0;i<ids.length;i++) {
				var obj = document.getElementById(ids[i]);
				if (String(highlightWord(obj,words[w])).indexOf('<span class="searchword">') == -1) {
					$(ids[i] + '_files_match').style.display = '';
				}
			}
		}
	}
}

function set_selected(obj) {
	var trs=$('dservers').getElementsByTagName('tr');
	for (i=0;i < trs.length;i++) trs[i].className = '';
	obj.className = 'active';
	obj.getElementsByTagName('input')[0].checked = true;
	$('country').value = obj.id;
}


