//displays other buttons that are hidden initially
function showOtherButtons(){
	
	$("#otherButtons").css("visibility","visible").css("display","block"); 
}








//displays other buttons that are hidden initially
function replaceButtonsOnUpload(){
	
	$("#uploadContainer").css("visibility","hidden"); 
	
	$("#otherButtons").empty().append( '<br \/><input style="float:right;" type="button" id="cancelBtn" name="cancelBtn" value="' + __CANCEL_UPLOADS + '" \/>' ); 
	var cancelBtn 	= new YAHOO.widget.Button("cancelBtn"); 
	YAHOO.util.Event.addListener("cancelBtn", "click", cancelAllUploads ); 
	
	$("#uploadMsg").css("visibility","hidden").css("display","none");
	
	$("#upload_logo").css("visibility","hidden").css("display","none");
	$("#logo").css("visibility","visible").css("display","inline");

	$('#fileList').css('top','-30px');
}







//clears rge que
function cancelAllUploads() {
	
	__uploader.clearFileList();
	__uploader.cancel();
	
	$("#uploadPanel").empty().append( '<span class="msg_red">' + __UPLOADS_CANCELLED + '<\/span>' );
	
	window.location	=	__url;
}







//browsed and selected files
function onFileSelect(event) {
	
	showOtherButtons();
	
	
	if( 'fileList' in event && event.fileList != null) { 
	    __fileList = event.fileList; 
	} 
	
	var html	=	'';
	var count	=	0;
	var remove	=	0;
	jQuery.each( __fileList, function(i, val) {
		
		
		
		
		if( count > __max_num_files ){ 
			
			alert('slow down there cowboy!\n\nyou selected more than a max of ' + __max_num_files + ' files per upload...\n\n\nhave another go and take it easy this time ;) ');
			cancelAllUploads();
		}
		else{
			
			
			//check file size now
			if( val.size <= __min_size ){
				
				html	+=	'<div class="fname" id="fname__' + val.id + '" style="background-color:#FCE9E0;"><span class="prog" id="prog__' + val.id + '" ><a href="#" onclick="removeRow(\'' + val.id + '\', false);">x<\/a><\/span>&nbsp;<span style="text-decoration:line-through;">' 
				+ val.name + '<\/span> <span class="fsize">'
				+ convertToMegaBytes(val.size) + '<\/span><br \/><span class="msg_red">' + __FILE_TOO_SMALL + '  @ &lt; ' + convertToMegaBytes(__min_size) + '<\/span><\/div>';
				
				__uploader.removeFile( val.id );
			}
			else if( val.size >= __max_size ){
				
				html	+=	'<div class="fname" id="fname__' + val.id + '" style="background-color:#FCE9E0;"><span class="prog" id="prog__' + val.id + '"><a href="#" onclick="removeRow(\'' + val.id + '\', false);">x<\/a><\/span>&nbsp;<span style="text-decoration:line-through;">' 
				+ val.name + '<\/span> <span class="fsize">'
				+ convertToMegaBytes(val.size) + '<\/span><br \/><span class="msg_red">' + __FILE_TOO_LARGE + '  @ &gt; ' + convertToMegaBytes(__max_size) + '<\/span><\/div>';
				
				__uploader.removeFile( val.id );
			}
			else{
			
				html	+=	'<div class="fname" id="fname__' + val.id + '"><span class="prog" id="prog__' + val.id + '"><a href="#" onclick="removeRow(\'' + val.id + '\', true);">x<\/a><\/span>&nbsp;' 
				+ val.name + ' <span class="fsize">'
				+ convertToMegaBytes(val.size) + '<\/span><br \/><div class="progress" id="progress__' + val.id + '"><\/div><\/div>';
				
				count++;
			}
		}
		
		
	});
	
	__num_files	=	count;
	
	$("#fileList").empty().append( html );
}







//removes a row
function removeRow( id, do_remove ){
	
	if( do_remove == true ){
		
		__uploader.removeFile( id );
		__num_files--;
	}
	
	$('#fname__' + id).fadeOut(500, function() { $('#fname__' + id).remove(); });
}









//clears rge que
function handleClearFiles() {
	
	__uploader.clearFileList();
	__uploader.enable();
	
	$("#fileList").empty().append( '' );
}









//once uploader is loaded and ready
function handleContentReady () {
	
	__uploader.setAllowMultipleFiles(true);
}







//upload event
function upload() {
	
	replaceButtonsOnUpload();

	if( __num_files <= 0 ){
		
		alert('nothing to upload');
		cancelAllUploads();
	}
	else{
		
		__uploader.setSimUploadLimit(1);
		__uploader.uploadAll( __upload_url, "POST", null, "Filedata" );
	}
}







//once upload starts
function onUploadStart(event) {

}
	









// Do something on each file's upload progress event.
function onUploadProgress(event) {
	
	var prog = Math.round(100*(event["bytesLoaded"]/event["bytesTotal"]));
	$("#prog__" + event.id ).empty().append( prog + '%' );
	$("#progress__" + event.id ).css( 'width' , prog + "%" );
}








// Do something when each file's upload is complete.
function onUploadComplete(event) {
	

	//remove from q
	__num_files--;
	
	if( __num_files <= 0 ){
		
		onUploadCompleteSuccess();
	}
}






//all uploads successfull uploaded event
function onUploadCompleteSuccess() {
	
	$("#otherButtons").empty().append( '<span class="msg_green">' + __UPLOAD_SUCCESS + '<\/span>' );
}







// Do something if a file upload throws an error.
function onUploadError(event) {

	$("#fname__" + event.id ).css( 'background-color' , '#FCE9E0' );
	$("#progress__" + event.id ).css( 'background-color' , '#FCE9E0' ).css( 'height' , '15px' ).css( 'width' , '90%' );
	$("#progress__" + event.id  ).empty().append('<span class="msg_red">' + __UPLOAD_FAILED + '<\/span>');
	
	$("#otherButtons").empty().append( '' );
}





// Do something if an upload is cancelled.
function onUploadCancel(event) {

}






// Do something when data is received back from the server.
function onUploadResponse(event) {
	
	var response = json_decode( event.data ); //parse json
	
	if( response.status == "ok" ){


		html	=	'<span class="prog" id="prog__' + event.id + '">&nbsp;&nbsp;<a style="font-family:monospace; color: blue; font-size: 100%; font-weight: bold; " href="' + response.url + '">' 
		+ Url.decode( response.file_name ) + '<\/a> <span class="fsize" id="fsize__' + event.id + '">'
		+ convertToMegaBytes( response.file_size ) + '<\/span><br \/>'
		+ __SHORT_LINK + ':&nbsp;<input onClick="this.focus();this.select();" style="border: 1px solid green;width:145px;" type="text" name="short_link" id="short_link" value="' + __url + response.file_key + '" \/>&nbsp;&nbsp;' 
		+ __FULL_LINK + ':&nbsp;<input onClick="this.focus();this.select();" style="border: 1px solid blue;width:300px;" type="text" name="full_link" id="full_link" value="' + __url + response.file_key + '/' + response.file_name + '" \/>&nbsp;&nbsp;' 
		+ __DELETE_LINK + ':&nbsp;<input onClick="this.focus();this.select();" style="border: 1px solid red;width:145px;" type="text" name="delete_link" id="delete_link" value="' + __url + response.file_key + response.hash + '" \/>';
	
		
		$("#fname__" + event.id ).css( 'background-color' , '#E1FCE0' );
		$("#fname__" + event.id ).empty().append( html	);
		$("#fsize__" + event.id ).css( 'font-size' , '100%' );
	}
	else if( response.status == "error" ){
		
		$("#fname__" + event.id ).css( 'background-color' , '#FCE9E0' );
		$("#progress__" + event.id ).css( 'background-color' , '#FCE9E0' ).css( 'height' , '15px' );
		$("#progress__" + event.id  ).empty().append('<span class="msg_red">' + __UPLOAD_FAILED + '<\/span>  ' + response.message );
	}
	else{
		
		$("#fname__" + event.id ).css( 'background-color' , '#FCE9E0' );
		$("#progress__" + event.id ).css( 'background-color' , '#FCE9E0' ).css( 'height' , '15px' );
		$("#progress__" + event.id  ).empty().append('<span class="msg_red">' + __UPLOAD_FAILED + '<\/span>');
	}
}







