var req; 
var total_upload_size = 1;
var forceKB = 0;
var i_u =0 ;
var show_status = 1;
var upload_began = 0;
var timeout = null;
function doLoad(force, popup) {
	var query;
	var storage;
	var show_progress;
	if(popup)
	{
		query = opener.document.getElementById('progress_bar').value;
		storage = opener.document.getElementById('upload_host').value;
		show_progress = false;
	}
	else
	{
		query =  document.getElementById('progress_bar').value;
		storage = document.getElementById('upload_host').value;
		show_progress = document.getElementById('show_progress_bar').checked;
	}
	window.clearTimeout(timeout);
	
	if(show_progress == false)
	{
		req = new Subsys_JsHttpRequest_Js(); 
		req.onreadystatechange = function()
		{
			if(req.readyState == 4)
			{	
				if (i_u==0)
				{
					document.getElementById('progressMeter').style.display = 'block';
					document.getElementById('progressMeterText').innerHTML = 'Закачано: 0%';
					if(popup)
					{
						opener.document.getElementById('uploadbutton').disabled = true;
						opener.document.getElementById('uploadfilefield').readonly = true;
					}
					else
					{
						document.getElementById('uploadbutton').disabled = true;
						document.getElementById('uploadfilefield').readonly = true;
					}
					i_u=1;
				}
				if(show_status == 0)
				{
					document.getElementById('progressMeter').style.display = 'block';
					show_status = 1;
				}

				if(req.responseJS)
				{			
					if(req.responseJS.progress.size_total != 0)
					{
						total_upload_size = req.responseJS.size;
					}

					var completed_upload_size = req.responseJS.progress;
					if(completed_upload_size < 0) //may be finished or error
					{
						if(popup)
						{
							window.close();
						}
						return 0;
					}
					var elapsedtime = req.responseJS.elapsedtime;
					//alert('completed_upload_size(progress)'+completed_upload_size);
					//alert('total_upload_size(size)'+total_upload_size);
					//alert('elapsedtime()'+elapsedtime);
					var progressPercent = Math.ceil((completed_upload_size/total_upload_size)*100);

					document.getElementById('progressMeterText').innerHTML = 'Закачано: ' + progressPercent + '%';

					document.getElementById('progressMeterBarDone').style.width = parseInt(progressPercent*2.5) + 'px';

					var totaltime = parseInt((elapsedtime * 100) / progressPercent);
					var totaltime_forprint = format_timespan_with_unit(totaltime, '&nbsp;');
					var remainingtime_forprint = format_timespan_with_unit(eval(totaltime - elapsedtime), '&nbsp;');
					var elapsedtime_forprint = format_timespan_with_unit(elapsedtime, '&nbsp;');

					var force_MB = total_upload_size > 999999 ? 1 : 0;
					//alert('total--'+total_upload_size);
					//alert('force_MB'+force_MB);
					var total_upload_size_forprint = format_filesize_with_unit(total_upload_size, '&nbsp;', force_MB);
					var remaining_upload_size_forprint = format_filesize_with_unit(total_upload_size - completed_upload_size, '&nbsp;', force_MB);
					var completed_upload_size_forprint = format_filesize_with_unit(completed_upload_size, '&nbsp;', force_MB);

					var transfer_rate = format_filesize_with_unit(completed_upload_size/elapsedtime, '&nbsp;', force_MB);

					document.getElementById('donet').innerHTML = elapsedtime_forprint;
					document.getElementById('dones').innerHTML = completed_upload_size_forprint;

					document.getElementById('leftt').innerHTML = remainingtime_forprint;
					document.getElementById('lefts').innerHTML = remaining_upload_size_forprint;

					document.getElementById('totalt').innerHTML = totaltime_forprint;
					document.getElementById('totals').innerHTML = total_upload_size_forprint;

					document.getElementById('transferRate').innerHTML = 'Скорость закачки: ' + transfer_rate + '/s';

					if(popup)
					{
						window.setTimeout("doLoad(true, true)", 2000);
					}
					else
					{
						window.setTimeout("doLoad(true, false)", 2000);
					}
				}
				else
				{
					alert('Error: got a not-OK status code...');
				}
			}//status == 4
			else
			{
				alert(req.readyState);
				if(popup)
				{
					window.close();
				}
			}
		}//end function

		req.caching = false;
		req.open('POST', 'http://'+storage+'/status/'+query, true);
		var tt = Math.floor(Math.random()*(1000-0+1))+0;		
		
		req.send({ q: query, t: tt },query);
		//req.send({ q:});
	}//	if(show_progress == true)		
	else
	{
		document.getElementById('progressMeter').style.display = 'none';
		show_status = 0;
		if(popup)
		{
			if (i_u==0)
			{
				opener.document.getElementById('uploadbutton').disabled = true;
				opener.document.getElementById('uploadfilefield').readonly = true;
				i_u=1;
			}
			window.setTimeout("doLoad(true, true)", 700);
		}
		else
		{	
			if (i_u==0)
			{
				document.getElementById('uploadbutton').disabled = true;
				document.getElementById('uploadfilefield').readonly = true;
				i_u=1;
			}
			window.setTimeout("doLoad(true, false)", 700);
		}
    }
}

// Џ®¤¤Ґа¦Є  § Јаг§ЄЁ ¤ ­­ле Ї® в ©¬- гвг (1 бҐЄг­¤  Ї®б«Ґ
// Ї®б«Ґ¤­ҐЈ® ®вЇгбЄ ­Ёп Є« ўЁиЁ ў вҐЄбв®ў®¬ Ї®«Ґ).

function doLoadUp() {
	if (timeout) clearTimeout(timeout);
	timeout = setTimeout(doLoad, 1000);
}



function updateProgress()
{

}

function startprogress()
{
//	document.getElementById('progressMeter').style.display = 'block';
//	document.getElementById('progressMeterText').innerHTML = 'Закачано: 0%';
//	document.getElementById('uploadbutton').disabled = true;
//	document.getElementById('uploadfilefield').readonly = true;
	upload_began = 1;
	window.setTimeout("doLoad(true, false)", 1200);
}

function popup_startprogress()
{
	upload_began = 1;
	window.setTimeout("doLoad(true,true)", 1200);
}

function format_filesize_with_unit(num,space,forceMB)
{
	var unit;
	if(   ((num > 999999)  ||  forceMB)   &&   !forceKB)
	{
		num = num/(1024*1024);
		num = num.toString();

		// note extra escaping necessary since we're printing this JS code from Perl...
		var testnum = num.replace( /^(\d+\.\d).*/, '$1' ); // show 1 decimal place.
	
		if(testnum == '0.0')
		{
			testnum = num.replace( /^(\d+\.\d\d).*/, '$1' ); // show 2 decimal places.
		}
		if(testnum == '0.00')
		{
			testnum = num.replace( /^(\d+\.\d\d\d).*/, '$1' ); // show 3 decimal places.
		}
		num = testnum;

		unit = 'MB';
	}
	else
	{
		num = parseInt(num/(1024));
		unit = 'KB';
	}
	return num + space + unit;
}
function format_timespan_with_unit(num,space)
{
	var unit;
	if(num >= (60*60))
	{
		var secs_left = num % (60*60);
		var mins_left = secs_left / 60;
		mins_left = mins_left.toString();
		// note extra escaping necessary since we're printing this JS code from Perl...
		mins_left = mins_left.replace( /^(\d+)\..*/, '$1' ); // show no decimal places.
		mins_left = mins_left.replace( /^(\d)$/, '0$1' ); // for single-digits, prepend a zero.

		num = num/(60*60);
		num = num.toString();
		// note extra escaping necessary since we're printing this JS code from Perl...
		num = num.replace( /^(\d+)\..*/, '$1' ); // show no decimal places.

		num = num + space + 'h' + space + mins_left + space + 'm';
		space = '';
		unit = '';
	}
	else if(num >= 60)
	{
		var secs_left = num % 60;
		secs_left = secs_left.toString().replace( /^(\d)$/, '0$1' ); // for single-digits, prepend a zero.

		num = num/60;
		num = num.toString();
		// note extra escaping necessary since we're printing this JS code from Perl...
		num = num.replace( /^(\d+)\..*/, '$1' ); // show no decimal places.
		num = num.replace( /^(\d)$/, '0$1' ); // for single-digits, prepend a zero.

		num = num + space + 'm' + space + secs_left + space + 's';
		space = '';
		unit = '';
	}
	else
	{
		unit = 's';
	}
	return num + space + unit;
}
function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

	var intImageUpl = 2;


	function swapImage_set_cookie() {
		
		var IMG1 = document.getElementById('IMGUPL');

		switch (intImageUpl){
			case 1:
				IMG1.src = "/images/check_n.gif";
				intImageUpl = 2;
				createCookie('show_progress',2,365);
				document.forms["theuploadform"].show_progress_bar.checked = false;
				if(show_status == 1 && upload_began ==1)
				{
					document.getElementById('progressMeter').style.display = 'none';
					show_status = 0;
				}
				return(false);
			case 2:
				
				IMG1.src = "/images/check_y.gif";
				if(show_status == 0 && upload_began ==1)
				{
					document.getElementById('progressMeter').style.display = 'block';
					show_status = 1;
					
				}
				intImageUpl = 1;
				createCookie('show_progress',1,365);
				document.forms["theuploadform"].show_progress_bar.checked = true;
				return(false);
		}
		
	}
