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)
			{
				$('#upload_block').hide('slow');

				if (i_u==0)
				{

//					document.getElementById('progressMeter').style.display = 'block';

					$('#progressMeter').show('slow');
					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';
					$('#progressMeter').show('slow');
					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) + '%';

					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);
		}
    }
}

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);
		}

	}




function design_input_file( id )
{
	var fileInput = $('#'+id);
	var fileName = fileInput.siblings('.fileName');;
	var fakeButton = fileInput.siblings('.fakeButton');

	var wrap = fileInput.parent('.fileUploadWrapper');
	//fileName = fileInput.siblings('.fileName');
	fileInput.val('');

	//fakeButton = fileInput.siblings('.fakeButton');

	fileInput.change(function(){
		HandleChanges(fileInput, fileName);
	});

	fileInput.hover(function(){
		//alert($(this).attr('id'));
		fakeButton.css({
			backgroundImage:'url(/images/button_active.jpg)'
		});
	},function(){
		fakeButton.css({
			backgroundImage:'url(/images/button.jpg)'
		});
	});







//	var wrap = $('#file_upload_wrapper');

	//fileName.attr('id', 'FileName');
	//activeButton.attr('id', 'activeBrowseButton');




	/*

	fileInput.addClass('customFile');

	bl.addClass('blocker');
	bb.addClass('fakeButton');

	activeButton.addClass('fakeButton');

	wrap.append(bb)
		.append(bl)
		.append(activeButton)
		.append(fileName);
*/
};

function HandleChanges(fileInput, fileName)
{
	var file = fileInput.val();

    reWin = /.*[\\\/](.*)$/;
    var fileTitle = file.replace(reWin, "$1"); //выдираем название файла

//	fileName.text(fileTitle);

    var RegExExt =/.*\.(.*)$/;
    var ext = fileTitle.replace(RegExExt, "$1");//и его расширение
    //log(fileTitle);
    //log(ext);

    var pos;
    if (ext)
    {
        switch (ext.toLowerCase())
        {
            case 'doc':	pos = '0'; break;
            case 'bmp': pos = '16'; break;
            case 'jpg': pos = '32'; break;
            case 'jpeg': pos = '32'; break;
            case 'png': pos = '48'; break;
            case 'gif': pos = '64'; break;
            case 'psd': pos = '80'; break;
            case 'mp3': pos = '96'; break;
            case 'wav': pos = '96'; break;
            case 'ogg': pos = '96'; break;
            case 'avi': pos = '112'; break;
            case 'wmv': pos = '112'; break;
            case 'flv': pos = '112'; break;
            case 'pdf': pos = '128'; break;
            case 'exe': pos = '144'; break;
            case 'txt': pos = '160'; break;
            default: pos = '176'; break;
        };
		fileName.text(fileTitle).css({
			background:'url(/images/icons.png) no-repeat 0 -'+pos+'px'
		}).show();
    };

};

function MakeActive()
{
	activeButton.show();
};

function UnMakeActive()
{
	activeButton.hide();
};

