function File(){
    
	var uploadsPending = false;
	var selectedFile = false;
	
    this.init = function() {
    }
    
    
    this.showUserFiles = function(){
    	if(dijit.byId('fileWrapper'))
    	dijit.byId('fileWrapper').attr('href', '/file/show-user-folder');
    }
    
    this.changeFolder = function(newfolder){
    	if(uploadsPending) {
    		dijit.byId('pendingUploadMessage').show();
    	}
    	else {
	        dojo.xhrPost({
	            url: "/file/user-change-folder",
	            postData: "newFolder=" + newfolder,
	            load: function(response, ioArgs){
        			if(selectedFile)
		            self.deselectFile();
	                //dojo.byId("fileWrapper").innerHTML = response;
	        		self.showUserFiles();

	        		errorHandler.show();
	        		
	        		if(dijit.byId('infoTab'))
	        		dijit.byId('infoTab').refresh();	
	        				
	                return response;
	            },
	            error: function(response, ioArgs){
	                //dojo.byId("fileWrapper").innerHTML = "An error occurred, with response: " + response;
	                return response;
	            },
	            handleAs: "text"
	        });
    	}
    }
    
    this.changeUser = function(user_id){
	        dojo.xhrPost({
	            url: "/file/change-user",
	            postData: "user_id=" + user_id,
	            load: function(response, ioArgs){
	                //dojo.byId("fileWrapper").innerHTML = response;
	        		self.showUserFiles();
	        		if(selectedFile)
		            self.deselectFile();
	        		errorHandler.show();
	        		
	        		if(dijit.byId('infoTab'))
	        		dijit.byId('infoTab').refresh();	
	        				
	                return response;
	            },
	            error: function(response, ioArgs){
	                //dojo.byId("fileWrapper").innerHTML = "An error occurred, with response: " + response;
	                return response;
	            },
	            handleAs: "text"
	        });
    }
    
    this.deselectFile = function(){
        dojo.xhrPost({
            url: "/file/user-select-file",
            postData: "selectedFile=false",
            load: function(response, ioArgs){
	    		selectedFile = false;
	    		self.showUserFiles();
	    		
	    		dijit.byId('rightArea').attr('href','/upload/index');
	    		
	    		if(dijit.byId('mainTabContainer'))
	    		dijit.byId('mainTabContainer').destroyRecursive();
	    		
                return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    }
    
    this.setUploadsPending  = function(bool) {
    	uploadsPending = bool;
    }
    
    this.selectFile = function(relativePath) {
    	dojo.byId("hiddenInputRelativePath").value = relativePath;
    	
    	if(selectedFile != false) {
    		self.deselectFile();
    		meta.refreshTabs(0);
    		reference.refreshTabs(0);
    		//return false;
    	}
    	
    	
    	if(selectedFile != relativePath) 
    		dijit.byId('chooseFileAction').show();
    	else
    		self.doSelectFile(relativePath, null);
    }
    
    this.doSelectFile = function(relativePath, fileAction) {
    	// highlight with color & de-select
    	if(selectedFile != relativePath) {
	    	if(dojo.byId("fileDiv_" + selectedFile)) {
	    		/*dojo.byId("fileDiv_" + selectedFile).style.backgroundColor = "";
	    		dojo.byId("fileDiv_" + selectedFile).style.color = "";*/
	    		dojo.removeClass("fileDiv_" + relativePath, "hoverRed");
	    	}
	    	
	    	if(dojo.byId("fileDiv_" + relativePath)) {
		        /*dojo.byId("fileDiv_" + relativePath).style.backgroundColor = "#ED1C24";*/
		        dojo.addClass("fileDiv_" + relativePath, "hoverRed");
		        /*dojo.byId("fileDiv_" + relativePath).style.color = "#fff";*/
	    	}
	    	
	    	selectedFile = relativePath;
    	}
    	else {
    		if(dojo.byId("fileDiv_" + selectedFile)) {
	    		/*dojo.byId("fileDiv_" + selectedFile).style.backgroundColor = "";
	    		dojo.byId("fileDiv_" + selectedFile).style.color = "";*/
    			dojo.removeClass("fileDiv_" + relativePath, "hoverRed");
    		}
    		
    		selectedFile = false;
    		//dijit.byId('rightArea').attr('href','/upload/index');
    		//dijit.byId('mainTabContainer').destroyRecursive();
    		meta.refreshTabs(0);
    		metaDisplay.refreshTabs(0);
    		reference.refreshTabs(0);
    	}
    	

        dojo.xhrPost({
            url: "/file/user-select-file",
            postData: "selectedFile=" + selectedFile,
            load: function(response, ioArgs){
	        	switch(fileAction) {
			    	case('iqipReferenceFile'):
			    		//dijit.byId('referenceDialog').show(); 
			    		reference.refreshTabs(1);
			    	break;
			    	case('iqipReferenceDotGainFile'):
			    		//dijit.byId('referenceDialog').show(); 
			    		reference.refreshTabs(2);
			    	break;
			    	case('iqipReferenceIqipDotGainFile'):
			    		//dijit.byId('referenceDialog').show(); 
			    		reference.refreshTabs(3);
			    	break;
			    	case('iqipPrintingReleaseData'):
			    		reference.refreshTabs(4);
			    	break;   	
			    	case('iqipCicolorReference'):
			    		//dijit.byId('referenceDialog').show(); 
			    		reference.refreshTabs(5);
			    	break;
			    	case('iqipPrintRunData'):
			    		//dijit.byId('rightArea').attr('href','/upload/index/show-meta-formular'); 
			    		meta.refreshTabs(1);
			    	break;
			    	case('iqipSignaturePdf'):
			    		//dijit.byId('rightArea').attr('href','/upload/index/show-meta-formular'); 
			    		meta.refreshTabs(2);
			    	break;
			    	case('iqipCicolorMeasurement'):
			    		//dijit.byId('rightArea').attr('href','/upload/index/show-meta-formular'); 
			    		meta.refreshTabs(3);
			    	break;
			    	case('iqipRegisterMeasurement'):
			    		//dijit.byId('rightArea').attr('href','/upload/index/show-meta-formular'); 
			    		meta.refreshTabs(4);
			    	break;
			    	case('iqipDisplayProofing'):
			    	    dojo.xhrPost({
			    	        url: "/file/prefetch-xmldata-display",
			    	        postData: "selectedFile=" + selectedFile,
			    	        load: function(response, ioArgs){
			            		errorHandler.show();
			            		metaDisplay.refreshTabs(1);
			    	            return response;
			    	        },
			    	        error: function(response, ioArgs){
			    	            return response;
			    	        },
			    	        handleAs: "text"
			    	    });
			    	break;
			    	default:
			    	break;
	        	}
                return response;
            },
            error: function(response, ioArgs){
                //dojo.byId("fileWrapper").innerHTML = "An error occurred, with response: " + response;
                return response;
            },
            handleAs: "text"
        });

    }
    
    this.createFolder = function() {
    	dijit.byId('createFolderDialog').show();
    	
    	dojo.connect(dojo.byId("createFolderDialog"), 'onkeypress', function(e) {
    		if (e.keyCode == dojo.keys.ENTER) {
    			var d = dijit.byId("createFolderDialog");
    			d.execute( d.getValues());
    			d.hide();
    		}
    	});
    }
    
    this.deleteFoF = function(relativePath){
    	dojo.byId("deleteFoFName").innerHTML = relativePath;
    	dijit.byId('ipFoFName').setValue(relativePath);
    	dijit.byId('deleteFoFDialog').show();
    	//alert(relativePath);
    }
    
    this.doDeleteFoF = function(deleteFoF) {
    	//alert(deleteFoF);
    	if(deleteFoF == selectedFile) {
    		self.deselectFile();
    		meta.refreshTabs(0);
    		reference.refreshTabs(0);
    	}
    	
	    dojo.xhrPost({
	        url: "/file/user-delete-fof",
	        postData: "deleteFoF=" + deleteFoF,
	        load: function(response, ioArgs){
	    		dojo.byId("folderName").value = "";
        		errorHandler.show();
	    		self.showUserFiles();
	            return response;
	        },
	        error: function(response, ioArgs){
	            return response;
	        },
	        handleAs: "text"
	    });
	};
	
    this.deleteAttachedFoF = function(relativePath,name){
    	dojo.byId("deleteFoFName").innerHTML = name;
    	dijit.byId('ipFoFName').setValue(relativePath);
    	dijit.byId('deleteFoFDialog').show();
    }
    
    this.doDeleteAttachedFoF = function(deleteFoF) {
	    dojo.xhrPost({
	        url: "/file/delete-attached-fof",
	        postData: "deleteFoF=" + deleteFoF,
	        load: function(response, ioArgs){
	        	if(dijit.byId('jobListWrapper'))
	    			dijit.byId('jobListWrapper').refresh();
	    		if(dijit.byId('plateCorretionOptionsWrapper'))
	    			dijit.byId('plateCorretionOptionsWrapper').refresh();
	    		
        		errorHandler.show();
	            return response;
	        },
	        error: function(response, ioArgs){
	            return response;
	        },
	        handleAs: "text"
	    });
	};	
    
    this.doCreateFolder = function(folderName) {
    	
        dojo.xhrPost({
            url: "/file/user-create-folder",
            postData: "createFolder=" + folderName,
            load: function(response, ioArgs){
                //dojo.byId("fileWrapper").innerHTML = response;
        		dojo.byId("folderName").value = "";
        		errorHandler.show();
        		fileJS.showUserFiles();
                return response;
            },
            error: function(response, ioArgs){
                //dojo.byId("fileWrapper").innerHTML = "An error occurred, with response: " + response;
                return response;
            },
            handleAs: "text"
        });
    };
    
    this.moveSignaturePdf = function(from,to){
        dojo.xhrPost({
            url: "/file/delete-all-signature-pdf-files",
            postData: "path=" + to,
            load: function(response, ioArgs){
        		if (response == "deleteSuccess") {
        			self.moveFile(from,to);
        		}
        		errorHandler.show();
        		return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });    	
    }
    
    this.moveFile = function(from,to) {
        dojo.xhrPost({
            url: "/file/move-file",
            postData: "from=" + from + "&to=" + to,
            load: function(response, ioArgs){
        		if (response == "moveFileSuccess") {
	        		meta.refreshTabs(0);
	        		self.deselectFile();
	        		//fileJS.showUserFiles();
        		}
        		errorHandler.show();
        		return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    };    
    
    /*this.downloadFile = function(file) {
    	
        dojo.xhrPost({
            url: "/file/download-file",
            postData: "file=" + file,
            load: function(response, ioArgs){
        		document.location.href = "/file/do-download-file/";
        		errorHandler.show();
        		return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    };     */
    
    this.openDirectInputDialog = function(){
    	dijit.byId('directInputDialog').show();
    	dijit.byId('fileName').setValue('');
    	dijit.byId('fileContent').setValue('');
    };
    
    this.saveDirectInput = function(filecontent,filename){
        dojo.xhrPost({
            url: "/file/save-direct-input",
            postData: "filecontent=" + filecontent + "&filename=" + filename,
            load: function(response, ioArgs){
        		if (response == "saveFileSuccess") {
        			self.showUserFiles();
        		}
        		errorHandler.show();
        		return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    }
    
    var self = this;
}

var file = new File();
var fileJS = file;

dojo.addOnLoad(
  function(){
    file.init();
  }
);



