var flagUpl = true;
var selectedUpl = false;

(function(jQuery) {
	//Main Method
	jQuery.fn.reportprogress = function(val,maxVal) {
		var max=100;
		if(maxVal)
			max=maxVal;
		return this.each(
			function(){
				var div=jQuery(this);
				var innerdiv=div.find(".progress");

				if(innerdiv.length!=1){
					innerdiv=jQuery("<div class='progress'></div>");
					div.append("<div class='text'>&nbsp;</div>");
					jQuery("<span class='text'>&nbsp;</span>").css("width",div.width()).appendTo(innerdiv);
					div.append(innerdiv);
				}
				var width=Math.round(val/max*100);
				innerdiv.css("width",width+"%");
				div.find(".text").html(width+" %");
			}
		);
	};
})(jQuery);

	jQuery.flashMovie = function(movieName)
	{ return (jQuery.browser.msie) ? window[movieName] : document[movieName]; }

	jQuery.uploader = function(options)
	{
		var defaults = { swfPath: "tcmfUploader.swf" };
		var opts = jQuery.extend(defaults, options);
		var flashvars = { allowScriptAccess: 'allways', onLoad: 'jQuery.uploader.loaded' };
		var attributes = { id: "tcmfUploader", name: "tcmfUploader" };

		jQuery('body').append('<div id="tcmfUploaderDiv"></div>');
		swfobject.embedSWF(opts['swfPath'], 'tcmfUploaderDiv', "0", "0", "9.0.0", "expressInstall.swf",  flashvars, {}, attributes);
	};

	jQuery.uploader.instance = 0;
	jQuery.uploader.time = 0;
	jQuery.uploader.instanceArr = new Array();
	jQuery.uploader.nextInstance = function()
    { return ++ jQuery.uploader.instance; };

	jQuery.fn.uploader = function(options)
	{
		var defaults = {
			types: { 'Image files (*.jpg, *.gif, *.png, *.jpeg)': '*.jpg; *.gif; *.png; *.jpeg' },
		    url: '/scripts/upload.php',
		    infoUrl: '/scripts/fileinfo.php',
		    name: null,
		    size:  null
		};
  		var opts = jQuery.extend(defaults, options);

        return this.each(
			function()
			{
				var index = jQuery.uploader.nextInstance();
        		var name = jQuery(this).attr('name');
        		jQuery.flashMovie('tcmfUploader').create(index, opts['types'], opts['url'], opts['infoUrl']);

       			jQuery(this)
       				.after(jQuery('<span></span>').attr('id', 'fileinfo_' + index).attr('class', 'tcmf_uploader_fileinfo'))
       				.replaceWith(jQuery('<input type="button" value="Browse" />')
        							.attr('id', 'upl_' + index)
        							.attr('paramName', name)
        							.attr('class', 'tcmf_uploader_button_browse')
        							.bind('click', { 'index': index }, function(event) { jQuery.uploader.browse(event.data.index); })
        		);

        		if (opts['name'] != null && opts['size'] != null)
        		{
        			jQuery('#upl_' + index).hide();
        			jQuery.uploader.onComplete(index, opts['name'], opts['size'], opts['infoUrl']);
                }
			}
		);
	};

	jQuery.uploader.browse = function(index)
	{ jQuery.flashMovie('tcmfUploader').browse(index); };

	jQuery.uploader.upload = function(index, callback)
	{
		if (callback == undefined)
			callback = null;
		jQuery.flashMovie('tcmfUploader').upload(index);
	};

	jQuery.uploader.remove = function(index)
	{
		flagUpl = true;
		selectedUpl = true;

		jQuery('.submitbtn').attr('disabled', 'disabled');
		jQuery('#fileinfo_' + index).html('');
		jQuery.flashMovie('tcmfUploader').remove(index);
		jQuery('#upl_' + index).show();
		jQuery('#upldiv').css('display', 'none');

		jQuery.uploader.time = 0;
	};

	jQuery.uploader.complete = function(index, md5)
	{

	}

//События аплоудера

	jQuery.uploader.onProgress = function(index, name, bytesLoaded, bytesTotal, procent)
	{
		jQuery.uploader.time ++;
		var elapsedSeconds = jQuery.uploader.time / 5;

		var speed = ((bytesLoaded / elapsedSeconds) / 1000).round(2);
		var sec = (((bytesTotal - bytesLoaded) / (speed * 1000))).round();
		speed += ' KB/s';
		var tm = (sec / 60).round() + ' min ' + (sec %  60).round() + ' sec';

		jQuery('#mediafname').html(name);
		jQuery('#mediafsent').html((bytesLoaded / 1000).round() + '/' + (bytesTotal / 1000).round(0) + ' KB (' + procent + '%)');
		jQuery('#mediafspeed').html(speed);
		jQuery('#mediaftime').html(tm);
		jQuery("#progressbar").reportprogress(procent);
	};

	jQuery.uploader.onError = function()
	{ jQuery.uploader.time =0; alert('Error in flash plugin.'); };

	jQuery.uploader.onSelect = function(index, name, size)
	{
		jQuery('#fileinfo_' + index)
			.html(' ' + name + ' (' + size + ' bytes) ')
			.append(
				jQuery('<span></span>')
					.attr('class', 'tcmf_uploader_progressbar')
					.attr('id', 'fileprogress_' + index)
			)
			.append(
				jQuery('<a></a>')
					.text('Upload')
					.attr('class', 'tcmf_uploader_button_upload')
					.attr('index', index)
					.attr('href', 'javascript:void(0)')
					.css('display',  'none')
					.bind('click', { 'index': index }, function(event) { jQuery(this).remove(); jQuery.uploader.upload(event.data.index); })
			)
			.append(
				jQuery('<a></a>')
					.text('Delete')
					.attr('class', 'tcmf_uploader_button_remove')
					.attr('href', 'javascript:void(0)')
					.bind('click', { 'index': index }, function(event) { jQuery.uploader.remove(event.data.index); })
			);
            jQuery('.submitbtn').removeAttr('disabled');
            flagUpl = true;
            selectedUpl = true;
			jQuery('#upl_' + index).hide();
	};


	jQuery.uploader.onComplete = function(index, name, size, infoUrl, callback)
	{
		jQuery.getJSON(infoUrl,
  				{ "name": name, "size": size, "index": index },
  				function(json)
  				{
					jQuery('#fileinfo_' + json.index)
					.html('<input id="uploadFileNameIz" name="' + jQuery('#upl_' + index).attr('paramName') + '" type="hidden" value="' + json['md5'] + '" /> <span id="uploadFileName" class="tcmf_uploader_done">' + json.name + ' (' + json.size + ' bytes) successfully uploaded.</span>')
					.append(
						jQuery('<a></a>')
							.text('Remove')
							.attr('href', 'javascript:void(0)')
							.attr('class', 'tcmf_uploader_button_remove')
							.bind('click', { 'index': index }, function(event) { jQuery.uploader.remove(event.data.index); })
					);

                    jQuery.uploader.time = 0;

					flagUpl = false;
					selectedUpl = false;
					eval('FinishUpload();');
				}
		);
	};



	jQuery(document).ready(function(){ jQuery.uploader({ swfPath: "/flash/tcmfUploader.swf" }); });