/*****************
 *    UPLOAD
 ****************/

var uploadInstance = null;

function goToCreateCategoryPage(){
	var backCall = function(){
		listCategories('createGategory');
	};
	selectPage('listCategories', backCall);
	return false;
}

function uploadPage(categoryType, categoryId){
	$(".makeMeAbutton").button();
	changeType(categoryType, categoryId);
	
	$('#type').change(function(){
		changeType();
	});
	
	$('#categories, #generateFileName, #removeFileExtension').change(function(){
		$('#fsUploadProgress, #btnCancel').hide();
		$('#uploadButton').hide();
		readyToUpload();
	});
	
	$("#addCategoryImgUpload").tipTip({
		delay: 0,
		edgeOffset: 7,
		defaultPosition: "top"
	});
	
	removeAjaxEvents = function(){
		$('#type, #categories, #readyUpload').unbind();
		$('#textContainer').close();
		$("#tiptip_holder").remove();
		if (uploadInstance != null)
			uploadInstance.destroy();
	};
}

function changeType(categoryType, categoryId){
	
	var containerId = "";
	$('#textContainer').mb_close();
	
	containerId = createMbContainer('#textContainer', "textContainer", containerId);
		
	var type;
	if (categoryType != undefined)
		type = categoryType;
	else
		type = $('#type').val();
	$.ajax({
	   type: "POST",
	   url: 'getCategoriesJson' + extension,
	   dataType: 'json',
	   data: {type: type},
	   success: function(json) {
		  if (json.code != 0){
			  $.jGrowl('',{
					theme: 	'error',
					header: json.message,
					life:	5000,
					sticky: false
			  }); 
		  } else {
			  var options = '';
		      for (var i = 0; i < json.list.length; i = i + 3) {
		        options += '<option value="' + json.list[i] + '">';
		        if (json.list[i+2] != "")
		        	options += json.list[i+2] + '/';
		        options += json.list[i+1] + '</option>';
		      }
		      $('#categories').html(options);
		      
			  if (categoryId != undefined && categoryType != undefined){
				  type = categoryType;
				  $('#type').val(categoryType);
				  $('#categories').val(categoryId);
			  }
		      
			  $(containerId).mb_open('upload' + type + 'InfoLanguageAjax' + extension, function(){
				  $(containerId + ' .n').text(getText(type + "UploadInfo"));
				  return false;
			  });
			  readyToUpload();
		  }
	   },
	   error : function(res){
		   $.jGrowl('',{
				theme: 	'error',
				header: getText('Error'),
				life:	5000,
				sticky: false
			});
	   }
	});
}

function readyToUpload(){
	var type = $('#type').val(); 
	var category = $('#categories').val();
	var categoryName = $('#categories :selected').text();
	$.ajax({
	   type: "POST",
	   url: 'userFileInfoJson' + extension,
	   dataType: 'json',
	   data: {type: type, category: category, categoryName: categoryName},
	   success: function(json) {
		  if (json.code == 1 || json.list == null || json.list.length < 3){
			  $.jGrowl('',{
					theme: 	'error',
					header: json.message,
					life:	5000,
					sticky: false
			  }); 
		  } else { 
			  var allowedExtension = json.list[0];
			  var allowedSize = json.list[1];
			  var readableAllowedSize = json.list[2];
			  var allowedNbFiles = json.list[3];
			  
			  $.jGrowl('',{
					header: json.message,
					life:	15000,
					sticky: false
			  });
			  //$('#fsUploadProgress').show();
			  $("#uploadButton").show().html('<span id="spanButtonPlaceholder"></span>');
				var removeFileExtension = $('#removeFileExtension').is(':checked');
				var generateFileName = $('#generateFileName').is(':checked');
				//var uploadParams = '?userId=' + $('#userId').val() + '&type=' + type + '&category=' + category + '&extension=' + extension + '&removeExtension=' + removeFileExtension + '&generateFileName=' + generateFileName + '&sessionId=' + sessionId;
				var uploadParams = '?userId=' + $('#userId').val() + '&type=' + type + '&category=' + category + '&extension=' + extension + '&removeExtension=' + removeFileExtension + '&generateFileName=' + generateFileName;
				
				if (uploadInstance != null)
					uploadInstance.destroy();
				
				//swfUpload(uploadParams, allowedExtension, allowedSize, allowedNbFiles);
				allowedExtension = allowedExtension.split(','); //*.jpg;*.jpeg;*.gif;*.png
				var allowedExt = [];
				for (pos = 0; pos < allowedExtension.length; pos++){
					allowedExt[pos] = allowedExtension[pos];
				}
				if (allowedNbFiles > 0){
					var uploaderContent = new qq.FileUploader({
						message: getText('SelectFiles'),
					    element: document.getElementById('uploadContent'),
					    action: "servletUpload" + uploadParams,
					    //action: "uploadAjax" + extension + uploadParams,
						params: {mode: 'newContent'},
						allowedExtensions: allowedExt,
						sizeLimit: allowedSize,
						debug: false,
						multiple: true,
						onSubmit: function(id, fileName){},
						onProgress: function(id, fileName, loaded, total){},
						onComplete: function(id, fileName, responseJSON){
							if ((responseJSON.userUploadSizeLeft != undefined) && (responseJSON.userUploadNbLeft != undefined)){
								allowedSize = responseJSON.userUploadSizeLeft;
								allowedNbFiles = responseJSON.userUploadNbLeft;
								$('#uploadInfo').html(getText("FilesLeft") + " : " + allowedNbFiles + "<br />" + getText("SizeLeft") + " : " + getReadableSize(allowedSize) + "<br />");
							}
							if (responseJSON != undefined && responseJSON.message != undefined && responseJSON.message != 'success'){
								$.jGrowl('',{
									theme: 	'error',
									header: fileName + " : " + responseJSON.message,
									sticky: true
								});
								$('#uploadInfo').append(fileName + " : " + responseJSON.message + "<br />");
								return;
							}
							if (allowedNbFiles == 0){
								$('#uploadContent').empty();
							}
						},
						onCancel: function(id, fileName){},
						messages: {
							typeError: getText("typeError"),
				            sizeError: getText("sizeError"),
				            minSizeError: "{file} is too small, minimum file size is {minSizeLimit}.",
				            emptyError: "{file} is empty, please select files again without it.",
				            onLeave: getText("onLeave")
						},
						showMessage: function(message){
							$.jGrowl('',{
								theme: 	'error',
								header: message,
								life:	5000,
								sticky: false
							});
						}
					});
				} else {
					$('#uploadContent').html(getText('QuotaUpReached'));
				}
		  }
	   },
	   error : function(res){
		   $.jGrowl('',{
				theme: 	'error',
				header: getText('Error'),
				life:	5000,
				sticky: false
			});
	   }
	});
}
