// upload media-file functions

dojo.require("dojo.io.script");
dojo.require("dojo.io.iframe");

var uploadingFile = false;

function startUploading(tempFileBrowser,fieldName){
	if(uploadingFile){ 
	    var parentNode = tempFileBrowser.parentNode;
	    var newFileInput = _createInputFile(fieldName);
	    parentNode.replaceChild(newFileInput,tempFileBrowser);//reset input
	    alert('Hay un archivo subiendose. Aguarde su finalización y vuelva a intentarlo.');
	}
	else{
	  uploadFile(tempFileBrowser,fieldName);
	}
}

function uploadFile(fileObj,fieldName) {
	uploadingFile = true;
	
	//get tranfer form
	var formUpload = document.getElementById('formUpload');
	if(!formUpload){ formUpload = createFileTranferForm();}
	
	var newFileInput = _createInputFile(fieldName);
	var fileNode = fileObj.parentNode.replaceChild(newFileInput,fileObj);
	fileNode.name = 'mediaFile';
 	formUpload.appendChild(fileNode);

	//set progress bar
 	var progressBar = 'progress_bar_'+fieldName;
 	document.getElementById(progressBar).style.display='block';
	document.getElementById('load_bar_'+fieldName).style.width='0%';
	document.getElementById('load_text_'+fieldName).innerHTML = '<img src="/webexperto/img/media/progress.gif" align="absmiddle" />';
	document.getElementById('fileBrowser_' + fieldName).style.display='none';

	var uploadId = getUploadIdentifier(fieldName);
	var rand = Math.round(100*Math.random());

	var kw = {
		form: "formUpload",
		url: "/webexperto/resources/upload.cgi?fileUploadId=" + uploadId + "&_nocache=" + rand,
		handleAs: "text",
		method: "POST",
		load: function(response){
			var resp = response.match("finishUploadOK");
			if (resp) {
				var mediaData = addMediaFile(uploadId);
 				document.getElementById(fieldName).value = mediaData.MediaId;

				document.getElementById(fieldName + '_browser_block').style.display='none';
 				document.getElementById(progressBar).style.display='none';

				//show uploaded file
 				var nodeFileName = document.createTextNode(mediaData.MediaName);
				var objFileName = document.getElementById(fieldName + '_fileName');
 				objFileName.replaceChild(nodeFileName, objFileName.firstChild);
				document.getElementById(fieldName + '_file_block').style.display='block';
				document.getElementById(fieldName + '_icon').src = "/webexperto/img/icons_doc/otro.gif";

				fileNode.parentNode.removeChild(fileNode);//remueve file del formUpload
				uploadingFile = false;
			}
		},
		error: function(response){
			alert("An error occurred: " + response);
		}
	};

	dojo.io.iframe.send(kw);	
	getProgressBar(uploadId,fieldName);
}

function getUploadIdentifier(hiddenFileId) {
	var uploadId;
	var rand = Math.round(100*Math.random());
	dojo.xhrGet({
	    url: "/index.cgi?accion=getPlugin&pluginName=get_upload_unique_identifier&inputFileName="+hiddenFileId+"&_nocache="+rand, 
	    handleAs: "text",
	    sync:true,
	    timeout: 10000, 
	    load: function(response, ioArgs) {
		uploadId = response;
	    },
	    error: function(response, ioArgs) {
	      alert("HTTP status code: ", ioArgs.xhr.status + " error: " + response); 
	    }
        });
	return uploadId;
}

function addMediaFile(uploadIdentifier) {
	var rand = Math.round(100*Math.random());
	var mediaData;
	dojo.xhrGet({
		url: "/index.cgi?accion=getPlugin&pluginName=do_add_media&hiddenMode=true&uploadIdentifier="+uploadIdentifier+"&_nocache="+rand,
		handleAs: "json",
		sync:true,
		load: function(response, ioArgs) {
			  if (response.Status == 'ok_mediaAdded') {
				  mediaData = response;
			  }
			  else {
				  alert("error_addMedia: "+response.ErrorDescription);
			  }
		},
		error: function(response, ioArgs) {
		  alert("HTTP status code: ", ioArgs.xhr.status + " error: " + response);
		}
	});
	return mediaData;
}


function getProgressBar(uploadIdentifier,hiddenFileId) {
	var barName = "load_bar_"+hiddenFileId;
	var textName = "load_text_"+hiddenFileId;

	var rand = Math.round(100*Math.random());
	dojo.xhrGet({
		url: "/index.cgi?accion=getPlugin&pluginName=get_upload_status&uploadIdentifier="+uploadIdentifier+"&_nocache="+rand,
		handleAs: "json",
		sync:true,
		load: function(response, ioArgs) {
			    if (response.Status == 'finish') {

			    }
			    else if (response.Status == 'uploading') {
				    var size = response.TotalUploadedFileSize;
				    var totalSize = response.TotalFileSize;
				    var percent = size * 100 / totalSize;
				    if ((size != undefined) && (totalSize != undefined)) {
					    document.getElementById(barName).style.width = percent+"%";
					    document.getElementById(textName).innerHTML = "Cargando "+Math.floor(Math.round(size/1024*100)/100)+" de "+Math.floor(Math.round(totalSize/1024*100)/100)+" Kb";
				    }
				    setTimeout( "getProgressBar('"+uploadIdentifier+"', '"+hiddenFileId+"')", 300 );
			    }
			    else {
				    if(uploadingFile) {setTimeout( "getProgressBar('"+uploadIdentifier+"', '"+hiddenFileId+"')", 300 );}
			    }
		},
		error: function(response, ioArgs) {
		  alert("HTTP status code: ", ioArgs.xhr.status + " error: " + response); 
		}
	});
}

function deleteFile(fieldName) {
	if(!confirm("¿Esta seguro que desea eliminar el archivo?"))return;

	var mediaIdObj = document.getElementById(fieldName);
	var rand = Math.round(100*Math.random());
	dojo.xhrGet({
	    url:"/webexperto/index.pl?_c=MediaManager&_a=delMediaContent&mediaContentId="+ mediaIdObj.value +"&_nocache="+rand,
	    handleAs: "text",
	    sync:true,
	    timeout: 10000, 
	    load: function(response, ioArgs) {
			    mediaIdObj.value = '';
			    //show file input and hide file name
			    document.getElementById(fieldName + '_browser_block').style.display='block';
			    document.getElementById(fieldName + '_file_block').style.display='none';
			    document.getElementById('fileBrowser_' + fieldName).style.display='block';
			    document.getElementById(fieldName + '_widget_preview').style.display='none';
	    },
	    error: function(response, ioArgs) {
	      alert("HTTP status code: ", ioArgs.xhr.status + " error: " + response); 
	    }
        });

}

function downloadFile(fieldName) {
	var mediaIdObj = document.getElementById(fieldName);
 	window.location.href = "/webexperto/index.pl?_c=MediaManager&_a=downloadMediaFile&mediaContentId=" + mediaIdObj.value ;
}


//--------------------private functions------------------//

function createFileTranferForm(){
      var formContainer = document.createElement("div");
      formContainer.style.display = "none";
      document.body.appendChild(formContainer);
      var f = document.createElement("form");
      formContainer.appendChild(f);
      f.method = "POST";
      f.id = "formUpload";
      f.name = "formUpload";
      f.encoding = "multipart/form-data";
      return f;
}

function _createInputFile(fieldName){
    var newFileInput = document.createElement('input');
    newFileInput.setAttribute('type', 'file');
    newFileInput.onchange = function (){startUploading(this,fieldName);};
    return newFileInput;
}
