/*
 * http://maquinar.us
 * Nishio
 * 
 */

(function($){
	



/****** PLUGIN PARA UPLOAD USANDO FLASH ****/

	$.fn.maqFileUpload = function(){

		var curr = $(this);
		if(curr.length==0){
			return false
		}else if(curr.attr('type') != 'file'){
			alert('[maqFileUpload] nao foi possivel converter'); return false;
		}
		
		// Configuracao
		var config = {
			name: '',
			swfPath: "/img/maquinarus/flash-upload.swf",
			swfBgColor: "#FFFFFF",
			serverGenerateCode: "/services/fileupload/generatecode",
			serverSaveFile: "/services/fileupload/save",
			serverViewThumbByCode: "/services/fileupload/viewthumbbycode",
			serverViewThumbByPath: "/services/fileupload/viewthumbbypath",
			serverDownload: "/services/fileupload/downloadbycode",
			fileType: "Todos-(*.*);*.*"
		}		
		$.extend(config, arguments[0]);
		
		/*
		 * Funcao executada no termino do envio
		 */
		jQuery.maqFileUpload_callBack = function(name, fileCode, fileName, fileSize, fileType){
			$("input[name=" + name+ "-remove]").attr("checked", true);
			$("#" + name + "-thumbHolder ").html("<img src='" + config.serverViewThumbByCode + "?code=" + fileCode + "' />");
			$("#" + name + "-holder div.infoHolder").html("<p>" + fileName + " (" + Math.round(fileSize * .001) + " kb)</p>");
			$("#" + name + "-holder input[name=" + name + "]").val(fileCode);
			jQuery.maqFileUpload_showButtons(name);
		};
		
		/*
		 * Funcao executada para remover/voltar um arquivo
		 */
		jQuery.maqFileUpload_onClick = function(){
			var name = $(this).attr("rel");
			switch($(this).attr("class")){
				case "current":
					jQuery.maqFileUpload_showCurrent(name)
				break;
				case "remove":
					$("#" + name + "-thumbHolder ").html("");
					$( "#" + name + "-holder div.infoHolder" ).html("");
					if($("#" + name + "-holder input[name=" + name + "-current]").val()!=""){
						$("#" + name + "-holder input[name=" + name + "]").val("delete");	
					}else{
						$("#" + name + "-holder input[name=" + name + "]").val("");
					}
				break;
			}
			jQuery.maqFileUpload_showButtons(name);
			return false;
		};

		/*
		 * Exibe o arquivo atual
		 */		
		jQuery.maqFileUpload_showCurrent = function(name){
			var current = $("#" + name + "-holder input[name=" + name + "-current]").val();	
			if(current != ""){
				$("#" + name + "-thumbHolder ").html("<img src='" + config.serverViewThumbByPath + "?path=" + current + "' />");
				$( "#" + name + "-holder div.infoHolder" ).html("<p><a href='" + current + "' target='_blank'>" + current + "</p>");
				$("#" + name + "-holder input[name=" + name + "]").val("");
			}
		}
		
		/*
		 * Ativar botoes de commando
		 */		
		jQuery.maqFileUpload_showButtons = function(name){
			var current = $("#" + name + "-holder input[name=" + name + "-current]").val();
			var remove = $("#" + name + "-holder input[name=" + name + "-remove]").is(":checked");
			var selected = $("#" + name + "-holder input[name=" + name + "]").val();
			if(current!='' && selected!=''){
				$( "#" + name + "-holder div.commandsHolder a.remove" ).hide();
				$( "#" + name + "-holder div.commandsHolder a.current" ).show();
			}else if(current!='' || selected!=''){
				$( "#" + name + "-holder div.commandsHolder a.remove" ).show();
				$( "#" + name + "-holder div.commandsHolder a.current" ).hide();				
			}else{
				$( "#" + name + "-holder div.commandsHolder a.remove" ).hide();
				$( "#" + name + "-holder div.commandsHolder a.current" ).hide();								
			}
		};
				
		// Construindo o botao flash
		$.each(curr, function(){
			var name = $(this).attr("name");
			var html = "";
			html += "<div id='" + name + "-holder' class='" +name + " maqFileUpload'>"
			html += "<div class='thumbHolder' id='" +name + "-thumbHolder' />";
			html += "<div class='flashHolder'><div id='" + name + "-flashHolder' /></div>";
			html += "<div class='commandsHolder'>";
			html += "<a href='javascript:' rel='" + name + "' class='current'>[ Voltar a atual ]</a>";
			html += "<a href='javascript:' rel='" + name + "' class='remove'>[ Remover ]</a>";
			html += "</div>";
			html += "<div class='infoHolder'></div>";
			html += "<input type='hidden' name='" + name + "' value='' />";				
			html += "<input type='hidden' name='" +name + "-current' value='";
			html += $("input[name=" + name + "-current]").val();
			html += "'>";	
			html +="</div>";
			$("input[type=hidden][name=" + name + "-current]").remove();
			$("input[type=checkbox][name=" + name + "-remove]").remove();
			$(this).replaceWith(html);
			
			// Carrega SWF
			swfobject.embedSWF(config.swfPath, name + "-flashHolder", 96, 26, "9.0.0", "/swf/expressInstall.swf", 
				{ // FlashVars
					serverGenerateCode: config.serverGenerateCode,
					serverSaveFile: config.serverSaveFile,
					jsCallBack: "jQuery.maqFileUpload_callBack",
					htmlId: name,
					fileType: config.fileType
					//fileType: $(this).attr("accept")					
				},
				{ // Parametros
					menu: 'false',
					bgcolor: config.swfBgColor
				},
				{ // Atributos
					name: name
				}
			);
			// Atualiza o view
			jQuery.maqFileUpload_showCurrent(name)
			jQuery.maqFileUpload_showButtons(name);
			// Eventos
			$("#" + name + "-holder div.commandsHolder a").click(jQuery.maqFileUpload_onClick);
		});
	}





})(jQuery);

