var uploader;
// Variable for holding the selected file ID.
var fileID = null;

var Filename;
var Progressbar;

var RolloverButton = '<a class="rolloverButton" href="#" onClick="yupload(); return false;"></a>';

var x;
var y;

function initUploader(){
	// Instantiate the uploader and write it to its placeholder div.
	YAHOO.widget.Uploader.SWFURL = "/site/js/yuiup/uploader.swf";

	uploader = new YAHOO.widget.Uploader( "uploaderUI" );

	// Add event listeners to various events on the uploader.
	// Methods on the uploader should only be called once the
	// contentReady event has fired.

	uploader.addListener('contentReady', handleContentReady);
	uploader.addListener('fileSelect',onFileSelect)
	uploader.addListener('uploadStart',onUploadStart);
	uploader.addListener('uploadProgress',onUploadProgress);
	uploader.addListener('uploadCancel',onUploadCancel);
	uploader.addListener('uploadComplete',onUploadComplete);
	uploader.addListener('uploadCompleteData',onUploadResponse);
	uploader.addListener('uploadError', onUploadError);
}

// When contentReady event is fired, you can call methods on the uploader.
function handleContentReady () {
	Filename = $("#fileName");

	var pb = $("#progressBar");
	if (!pb.find('div').length > 0)
		pb.html('<div class="progress"></div>');

	Progressbar = pb.find('div');

    // Allows the uploader to send log messages to trace, as well as to YAHOO.log
	uploader.setAllowLogging(true);
	
	// Restrict selection to a single file (that's what it is by default,
	// just demonstrating how).
	uploader.setAllowMultipleFiles(false);
	
	// New set of file filters.
	
	var type = $('#kind').val();
	
	switch(type) {
		case '1':
		     	var ff = new Array({description:"Images", extensions:"*.jpg;*.jpeg;*.png;*.gif"});
					break;
		case '2':
		     	ff = new Array({description:"Videos", extensions:"*.avi;*.mov;*.mpg; *.mp4; *.mpeg; *.3gp; *.wmv; *.flv; *.asx; *.vob"});
					break;
		case '4':
		     	ff = new Array({description:"Flash", extensions:"*.swf"});
					break;
		case '5':
		     	ff = new Array({description:"Flash", extensions:"*.swf"});
					break;
		case '11':
		     	ff = new Array({description:"Animated Gifs", extensions:"*.gif"});
					break;
		default:
				ff = new Array({description:"Images", extensions:"*.jpg;*.jpeg;*.png;*.gif"},
		                   {description:"Videos", extensions:"*.avi;*.mov;*.mpg; *.mp4; *.mpeg; *.3gp; *.wmv; *.flv; *.asx; *.vob"},
											 {description:"Flash", extensions:"*.swf"});
	     
	}
	                   
	// Apply new set of file filters to the uploader.
	uploader.setFileFilters(ff);
}

// Initiate the file upload. Since there's only one file, 
// we can use either upload() or uploadAll() call. fileList 
// needs to have been populated by the user.
function yupload() {
	if (fileID != null) {
		uploader.upload(fileID, "/ajax/upload");
		fileID = null;
	}
}

function handleClearFiles() {
	uploader.cancel();
	uploader.clearFileList();
	uploader.enable();
	
	$("#upb").html(RolloverButton);
	fileID = null;
	
	$('#ajaxFile').val('');
	$('#ajaxFileName').val('');
	
	Filename.text('');
	Progressbar.css('width', '0');
	
	var text = '';
	
	$("#upkb2").hide();
	
	$("#upkb").html(text) ;
	
	$("#submitButton").attr('disabled', 'disabled');
	
	UploadStart = false;
}

// Fired when the user selects files in the "Browse" dialog
// and clicks "Ok".
function onFileSelect(event) {
	for (var item in event.fileList) {
	    if(YAHOO.lang.hasOwnProperty(event.fileList, item)) {
			YAHOO.log(event.fileList[item].id);
			fileID = event.fileList[item].id;
		}
	}
	uploader.disable();
	
	Filename.html(event.fileList[fileID].name);
	
	$('#ajaxFileName').val(event.fileList[fileID].name);
	
	Progressbar.css('width', '0');
}

// Do something on each file's upload start.
function onUploadStart(event) {
	$('#progressBar').show();
	//$("#upb").html('<img src="' + SCRIPT_URL + 'site/' + SITE_NAME + '/images/aload3.gif"/>');
}

UploadStart = false;

// Do something on each file's upload progress event.
function onUploadProgress(event) {
	if(!UploadStart){
		if(!checkFileSize(event["bytesTotal"]))
			return;
		
		$("#submitButton").attr('disabled', 'disabled');
		UploadStart = true;
	}

	x = event["bytesLoaded"]/1024;
	y = event["bytesTotal"]/1024;
	x = Math.round(x - 1);
	y = Math.round(y);

	var text = x + 'Kb out of ' + y +'Kb uploaded';

	prog = Math.round(100*event["bytesLoaded"]/event["bytesTotal"]);

	$("#upkb").html(text) ;
	
	Progressbar.css('width', prog+'%');
}

// Do something when each file's upload is complete.
function onUploadComplete(event){
	uploader.clearFileList();
	uploader.enable();
	
	x++;

	var text = x + 'Kb out of ' + y +'Kb uploaded';
	
	$("#upkb").html(text);
	
	$("#submitButton").removeAttr('disabled');
	$("#upb").html(RolloverButton) ;
	Progressbar.css('width', '100%');
	
//	sendFormSuccess();
	
	UploadStart = false;
}

// Do something if a file upload throws an error.
// (When uploadAll() is used, the Uploader will
// attempt to continue uploading.
function onUploadError(event) {
	if(!UploadStart) return;

	$('#progressBar').hide();
	Progressbar.css('width', 0);	
	dialog.alert('Could not upload your file :(');

	$("#submitButton").removeAttr('disabled');
	//$("#upb").html(RolloverButton) ;
	UploadStart = false;
}

// Do something if an upload is cancelled.
//this function doesn't working... @pawel
function onUploadCancel(event) {
	$('#progressBar').hide();
}

// Do something when data is received back from the server.
function onUploadResponse(event) {
	var data = event.data;
	if (data.charAt(0) == '#') { //show the error
		FJ.alert('Could not upload your file. Reason: ' + data.substring(1));
		
		Progressbar.css('width', 0);
	}
	else {//put the filename in the input
		$('#ajaxFile').val(data);
	}
	
	UploadStart = false;
}

function checkFileSize($size){
	sizeMB = $size / (1024*1024);
	
	if (typeof MaxFileSize != 'undefined' && MaxFileSize > 0 && sizeMB > MaxFileSize)
	{
		uploader.cancel();
		
		Progressbar.css('width', '0')
		$("#submitButton").removeAttr('disabled');
		$("#upb").html(RolloverButton);
		
		var resp = $('form[name="submitcontent"]').find('.ajaxResponse');
		resp.text('File is too big, max file size for this type of content is '+MaxFileSize+' MB');
		
		return false;
	}
	
	return true;
}