FichaTecnica = false;
function fileQueueError(file, errorCode, message) {
	try {
		var imageName = "error.gif";
		var errorName = "";
		if (errorCode === SWFUpload.errorCode_QUEUE_LIMIT_EXCEEDED) {
			errorName = "You have attempted to queue too many files.";
		}

		if (errorName !== "") {
			alert(errorName);
			return;
		}

		switch (errorCode) {
    		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
    			imageName = "zerobyte.gif";
    			break;
    		case SWFUpload.QUEUE_ERROR.FILE_EXCEEDS_SIZE_LIMIT:
    			imageName = "toobig.gif";
    			break;
            case SWFUpload.QUEUE_ERROR.QUEUE_LIMIT_EXCEEDED:
    			alert("Only is possible upload "+this.settings.file_upload_limit+" files");
                return;
    			break;
    		case SWFUpload.QUEUE_ERROR.ZERO_BYTE_FILE:
    		case SWFUpload.QUEUE_ERROR.INVALID_FILETYPE:
    		default:
    			alert(message);
    			break;
		}
        objSwf = this;
		addImage("uploader/images/" + imageName,file,objSwf);
	} catch (ex) {
		this.debug(ex);
	}

}

function fileDialogComplete(numFilesSelected, numFilesQueued) {
	try {
		if (numFilesQueued > 0) {
			this.startUpload();
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadProgress(file, bytesLoaded) {

	try {
		var percent = Math.ceil((bytesLoaded / file.size) * 100);

		var progress = new FileProgress(file,  this.customSettings.upload_target);
		progress.setProgress(percent);
		if (percent === 100) {
			progress.setStatus("Thumbnail working...");
			progress.toggleCancel(false, this);
		} else {
			progress.setStatus("Loading...");
			progress.toggleCancel(true, this);
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadSuccess(file, serverData) {
	try {
		var progress = new FileProgress(file,  this.customSettings.upload_target);

		if (serverData.substring(0, 7) === "FILEID:") {
            objSwf = this;
			addImage("uploader/managerFiles.php?action=thumbnail&id=" + serverData.substring(7),file,objSwf);
			progress.setStatus("Miniatura Creada");
			progress.toggleCancel(false);
		} else {
            objSwf = this;
			addImage("uploader/images/error.gif",file,objSwf);
			progress.setStatus("Error.");
			progress.toggleCancel(false);
			alert(serverData);
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadComplete(file) {
	try {
		/*  I want the next upload to continue automatically so I'll call startUpload here */
		if (this.getStats().files_queued > 0) {
			this.startUpload();
		} else {
			var progress = new FileProgress(file,  this.customSettings.upload_target);
			progress.setComplete();
            if(swfuploadInstance.customSettings.queue_cancelled_flag){
                progress.setStatus("Cancelled.");
                swfuploadInstance.customSettings.queue_cancelled_flag
            }
            else
                progress.setStatus("Files uploaded.");
			progress.toggleCancel(false);
		}
	} catch (ex) {
		this.debug(ex);
	}
}

function uploadError(file, errorCode, message) {
	var imageName =  "error.gif";
	var progress;
	try {
		switch (errorCode) {
		case SWFUpload.UPLOAD_ERROR.FILE_CANCELLED:
			try {
				progress = new FileProgress(file,  this.customSettings.upload_target);
				progress.setCancelled();
				progress.setStatus("Cancelled");
				progress.toggleCancel(false);
			}
			catch (ex1) {
				this.debug(ex1);
			}
			break;
		case SWFUpload.UPLOAD_ERROR.UPLOAD_STOPPED:
			try {
				progress = new FileProgress(file,  this.customSettings.upload_target);
				progress.setCancelled();
				progress.setStatus("Stopped");
				progress.toggleCancel(true);
			}
			catch (ex2) {
				this.debug(ex2);
			}
		case SWFUpload.UPLOAD_ERROR.UPLOAD_LIMIT_EXCEEDED:
			imageName = "uploadlimit.gif";
			break;
		default:
			alert(message);
			break;
		}
        objSwf = this;
		addImage("images/" + imageName,file,objSwf);

	} catch (ex3) {
		this.debug(ex3);
	}
}

function delImage(idImg){
    idImg = idImg.replace("thumb-","image_");
    idImg = idImg.replace("ecofile-","");    
    requestDelImage = new Request({
        url:"procesos/procesos_general.php",
        onSuccess: function(txt){ /* NADA */ }
    });
    dataSend = 'accion=borra_upload_id&upload_id='+idImg;
    if($('equ_id')){
        dataSend += "&equ_id="+$('equ_id').value;
    }
    requestDelImage.send({method:'post',data:dataSend});
}

function addImage(src,file,swfUploadObj) {
    
    VecImage = ( typeof(file) == 'string') ? file.split("_") : '';
    flagImg = true;
    if(VecImage.length == 3 && VecImage[0] == "image"){
        idImg = VecImage[1];
    }else{
        if(VecImage.length >0 && VecImage[0].length == 5){
            idImg = file;
            var newSpan = document.createElement("span"); 
            LinkFile = "<a href='doc_equipos/equipo_"+$('equ_id').value+"/"+file+"'>"+file+"</a>";
            LinkArchivo = "<table width='100%'><tr><td width='1%' align='right'><img id='ecofile-"+idImg+"' name='img_thumbnails' src='images/generarot.png' style='cursor:pointer;' onclick=\"discardImg(this.id,'"+swfUploadObj.customSettings.upload_tumb_container+"','"+swfUploadObj.customSettings.upload_object_id+"')\" /></td><td width='99%' align='left' class='etiqueta'>"+LinkFile+"</td></tr></table>";
            LinkElimina = "<table width='100%'><tr><td width='1%' align='right'><img id='ecofile-"+idImg+"' name='img_thumbnails' src='images/cancel.png' style='cursor:pointer;' onclick=\"discardImg(this.id,'"+swfUploadObj.customSettings.upload_tumb_container+"','"+swfUploadObj.customSettings.upload_object_id+"')\" /></td><td width='99%' align='left' class='etiqueta'>"+file+"</td></tr></table>";
            newSpan.innerHTML = (FichaTecnica) ? LinkArchivo : LinkElimina;
            newDiv = document.createElement("div");
            if(FichaTecnica)
                newDiv.setAttribute("style","float:left;width:50%");
            newDiv.appendChild(newSpan);
            newDiv.id = 'div-'+idImg;
            document.getElementById(swfUploadObj.customSettings.upload_tumb_container).appendChild(newDiv); 
            flagImg = false;    
        }else{
            arrData = src.split("&");
            idImg = arrData[1].split("=")[1];
            if(file.type != '.jpg' && file.type != '.JPG'){
                var newSpan = document.createElement("span");
                newSpan.innerHTML = (FichaTecnica) ? "<div>&nbsp;</div>" : "<table width='100%'><tr><td width='1%' align='right'><img id='ecofile-"+idImg+"' name='img_thumbnails' src='images/cancel.png' style='cursor:pointer;' onclick=\"discardImg(this.id,'"+swfUploadObj.customSettings.upload_tumb_container+"','"+swfUploadObj.customSettings.upload_object_id+"')\" /></td><td width='99%' align='left' class='etiqueta'>"+file.name+"</td></tr></table>";
                newDiv = document.createElement("div");
                newDiv.appendChild(newSpan);
                newDiv.id = 'div-'+idImg;
                document.getElementById(swfUploadObj.customSettings.upload_tumb_container).appendChild(newDiv); 
                flagImg = false;
            }
        }
    }
    
    if(flagImg){
        newDiv = document.createElement("div");
        document.getElementById(swfUploadObj.customSettings.upload_tumb_container).appendChild(newDiv); 
        newDiv.id = 'div-'+idImg;
        newDiv.className = 'div-thumbnails';
        newDiv.innerHTML = (FichaTecnica) ? "" : "<div style='width:100%'><table cellspacing='0' cellpadding='0' align='left'><tr><td width='20'><img class='pointer' id='thumb-"+idImg+"' src='uploader/images/delimage.png' onclick=\"discardImg(this.id,'"+swfUploadObj.customSettings.upload_tumb_container+"','"+swfUploadObj.customSettings.upload_object_id+"')\" ></td><td align='left'>Discard</td></tr></table></div>";
    
        var newImg = document.createElement("img");
        newImg.src = src;
        newImg.name = 'img_thumbnails';
        newImg.id = idImg;
        newDiv.appendChild(newImg);
        if(src.indexOf("_BACKEND") != -1){
            newImg.style.width = "100px";
            newImg.style.height = "100px";
        }
            
    	newImg.style.margin = "1px";
        if (newImg.filters){
    		try {
    			newImg.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 0;
    		}catch(e){
    			// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
    			newImg.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + 0 + ')';
    		}
    	} else{
    		newImg.style.opacity = 0;
    	}
    
        DivContainer = swfUploadObj.customSettings.upload_tumb_container;
        
    	newImg.onload = function () {
    		fadeIn(newImg, 0);
    	};
    }
}

function discardImg(idImg,idContainer, SwfObj){
    if($(idImg)){
        idFile = idImg.split("-")[1];
        idDiv = "div-" + idFile;
        $(idContainer).removeChild($(idDiv));  
        loadXMLDoc(idFile,idContainer);
        delImage(idImg);
        ObjectSwfupload = eval(SwfObj);
        ObjStats = ObjectSwfupload.getStats();
        ObjStats.successful_uploads--;
        ObjectSwfupload.setStats(ObjStats);
    }
}

function loadXMLDoc(idImg,divContainer)
{
    if (window.XMLHttpRequest)
        xmlhttp = new XMLHttpRequest();
    else
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        
    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200){
            CantElements = $(divContainer).getElements("div").length;
            if(CantElements == 0)
                $(divContainer).className = "";
        }
    }
    xmlhttp.open("GET","uploader/managerFiles.php?action=discard&id="+idImg,true);
    xmlhttp.send();
}

function fadeIn(element, opacity) {
	var reduceOpacityBy = 5;
	var rate = 30;	// 15 fps


	if (opacity < 100) {
		opacity += reduceOpacityBy;
		if (opacity > 100) {
			opacity = 100;
		}

		if (element.filters) {
			try {
				element.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity;
			} catch (e) {
				// If it is not set initially, the browser will throw an error.  This will set it if it is not set yet.
				element.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=' + opacity + ')';
			}
		} else {
			element.style.opacity = opacity / 100;
		}
	}

	if (opacity < 100) {
		setTimeout(function () {
			fadeIn(element, opacity);
		}, rate);
	}
}



/* ******************************************
 *	FileProgress Object
 *	Control object for displaying file info
 * ****************************************** */

function FileProgress(file, targetID) {
	this.fileProgressID = targetID + "_divFile";

	this.fileProgressWrapper = document.getElementById(this.fileProgressID);
	if (!this.fileProgressWrapper) {
		this.fileProgressWrapper = document.createElement("div");
		this.fileProgressWrapper.className = "progressWrapper";
		this.fileProgressWrapper.id = this.fileProgressID;

		this.fileProgressElement = document.createElement("div");
		this.fileProgressElement.className = "progressContainer";

		var progressCancel = document.createElement("a");
		progressCancel.className = "progressCancel";
		progressCancel.href = "#";
		progressCancel.style.visibility = "hidden";
		progressCancel.appendChild(document.createTextNode(" "));

		var progressText = document.createElement("div");
		progressText.className = "progressName";
		progressText.appendChild(document.createTextNode(file.name));

		var progressBar = document.createElement("div");
		progressBar.className = "progressBarInProgress";

		var progressStatus = document.createElement("div");
		progressStatus.className = "progressBarStatus";
		progressStatus.innerHTML = "&nbsp;";

		this.fileProgressElement.appendChild(progressCancel);
		this.fileProgressElement.appendChild(progressText);
		this.fileProgressElement.appendChild(progressStatus);
		this.fileProgressElement.appendChild(progressBar);

		this.fileProgressWrapper.appendChild(this.fileProgressElement);

		document.getElementById(targetID).appendChild(this.fileProgressWrapper);
		fadeIn(this.fileProgressWrapper, 0);

	} else {
		this.fileProgressElement = this.fileProgressWrapper.firstChild;
		this.fileProgressElement.childNodes[1].firstChild.nodeValue = file.name;
	}

	this.height = this.fileProgressWrapper.offsetHeight;

}
FileProgress.prototype.setProgress = function (percentage) {
	this.fileProgressElement.className = "progressContainer green";
	this.fileProgressElement.childNodes[3].className = "progressBarInProgress";
	this.fileProgressElement.childNodes[3].style.width = percentage + "%";
};
FileProgress.prototype.setComplete = function () {
	this.fileProgressElement.className = "progressContainer blue";
	this.fileProgressElement.childNodes[3].className = "progressBarComplete";
	this.fileProgressElement.childNodes[3].style.width = "";

};
FileProgress.prototype.setError = function () {
	this.fileProgressElement.className = "progressContainer red";
	this.fileProgressElement.childNodes[3].className = "progressBarError";
	this.fileProgressElement.childNodes[3].style.width = "";

};
FileProgress.prototype.setCancelled = function () {
	this.fileProgressElement.className = "progressContainer";
	this.fileProgressElement.childNodes[3].className = "progressBarError";
	this.fileProgressElement.childNodes[3].style.width = "";

};
FileProgress.prototype.setStatus = function (status) {
	this.fileProgressElement.childNodes[2].innerHTML = status;
};

FileProgress.prototype.toggleCancel = function (show, swfuploadInstance) {
	this.fileProgressElement.childNodes[0].style.visibility = show ? "visible" : "hidden";
	if (swfuploadInstance) {
		var fileID = this.fileProgressID;
		this.fileProgressElement.childNodes[0].onclick = function () {
            swfuploadInstance.cancelUpload();
            swfuploadInstance.customSettings.queue_cancelled_flag = true;
			return false;
		};
	}
};


/***************** Swfupload custom definition ****************/
function SWFUpload_Generate(swfupload_id,session_id,file_size_limit,file_types,file_types_description,file_upload_limit,button_placeholder_id,upload_target,upload_tumb_container,message_button) {
    message_button = (!message_button) ? "Browse files" : message_button;
    
	generalObjectSwfupload = new SWFUpload({
		// Backend Settings
		upload_url: "uploader/upload.php?type="+file_types_description.split(' ')[1],
		post_params: PostParamsSWF,

		// File Upload Settings
		file_size_limit : file_size_limit, //"2 MB",
		file_types : file_types, //"*.jpg",
		file_types_description : file_types_description, //"JPG Images",
		file_upload_limit : file_upload_limit, //"0",

		// Event Handler Settings - these functions as defined in Handlers.js
		//  The handlers are not part of SWFUpload but are part of my website and control how
		//  my website reacts to the SWFUpload events.
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,

		// Button Settings
		button_image_url : "uploader/images/SmallSpyGlassWithTransperancy_17x18.png",
		button_placeholder_id : button_placeholder_id, //"spanButtonPlaceholder",
		button_width: 180,
		button_height: 18,
		button_text : '<span class="button">'+message_button+'<span class="buttonSmall">('+file_size_limit+' Max)</span></span>',
		button_text_style : '.button { font-family: Arial, sans-serif; font-size: 11px; } .buttonSmall { font-size: 10px; }',
		button_text_top_padding: 0,
		button_text_left_padding: 18,
		button_window_mode: SWFUpload.WINDOW_MODE.TRANSPARENT,
		button_cursor: SWFUpload.CURSOR.HAND,
		
		// Flash Settings
		flash_url : "uploader/swfupload/swfupload.swf",

		custom_settings : {
			upload_target : upload_target, //"divFileProgressContainer",
            upload_tumb_container : upload_tumb_container, //"thumbnails"
            upload_object_id : swfupload_id,
            queue_cancelled_flag : false
		},
		
		// Debug Settings
		debug: false
	});
    return generalObjectSwfupload;
}
