function Reference(){
	
    this.init = function() {
    }
    
    this.add = function(type) {
    	//alert(type);
    	if(type == "colorisationReference") {
        	// check if Form is valid
    		dijit.byId('referenceForm').validate();
    		if(dijit.byId('referenceForm').isValid())
    		{
    			dijit.byId('calculatingDialog').show();
    			
		        dojo.xhrPost({
		            url: "/reference/add",
		            form: "referenceForm",
		            load: function(response, ioArgs){
	        			file.deselectFile();
		        		reference.refreshTabs(0);
		        		dijit.byId('calculatingDialog').hide();
	        			errorHandler.show();
		                return response;
		            },
		            error: function(response, ioArgs){
		            	dijit.byId('calculatingDialog').hide();
		                return response;
		            },
		            handleAs: "text"
		        });
    		}
    		else {
    			//errorHandler.addWarning(translation.translate('formValidationError'));
    			errorHandler.show();
    		}
    	}
    	else if(type == "dotGainReference") {
    		dijit.byId('referenceDotGainForm').validate();
    		if(dijit.byId('referenceDotGainForm').isValid())
    		{
	    		dijit.byId('calculatingDialog').show();
		        dojo.xhrPost({
		            url: "/reference/add-dot-gain",
		            form: "referenceDotGainForm",
		            load: function(response, ioArgs){
		        		file.deselectFile();
	        			reference.refreshTabs(0);
		        		dijit.byId('calculatingDialog').hide();
		        		errorHandler.show();
		                return response;
		            },
		            error: function(response, ioArgs){
		            	dijit.byId('calculatingDialog').hide();
		                return response;
		            },
		            handleAs: "text"
		        });
    		}
    		else {
    			//errorHandler.addWarning(translation.translate('formValidationError'));
    			errorHandler.show();
    		}
    	}
    	else if(type == "iqipDotGainReference") {
    		dijit.byId('referenceIqipDotGainForm').validate();
    		if(dijit.byId('referenceIqipDotGainForm').isValid())
    		{
	    		dijit.byId('calculatingDialog').show();
		        dojo.xhrPost({
		            url: "/reference/add-iqip-dot-gain",
		            form: "referenceIqipDotGainForm",
		            load: function(response, ioArgs){
		        		file.deselectFile();
	        			reference.refreshTabs(0);
		        		dijit.byId('calculatingDialog').hide();
		        		errorHandler.show();
		                return response;
		            },
		            error: function(response, ioArgs){
		            	dijit.byId('calculatingDialog').hide();
		                return response;
		            },
		            handleAs: "text"
		        });
    		}
    		else {
    			//errorHandler.addWarning(translation.translate('formValidationError'));
    			errorHandler.show();
    		}
    	}
    	else if(type == "iqipPrintingReleaseData") {
    		dijit.byId('categoryOkSelect_1').validate();
    		dijit.byId('categoryOkSelect_2').validate();
    		dijit.byId('categoryOkSelect_3').validate();
    		dijit.byId('categoryOkSelect_4').validate();
    		dijit.byId('categoryOkSelect_5').validate();
    		dijit.byId('referenceIqipPrintingReleaseData').validate();
    		if(dijit.byId('categoryOkSelect_1').isValid() && dijit.byId('categoryOkSelect_2').isValid() && dijit.byId('categoryOkSelect_3').isValid() && dijit.byId('categoryOkSelect_4').isValid() && dijit.byId('categoryOkSelect_5').isValid() && dijit.byId('referenceIqipPrintingReleaseData').isValid())
    		{
		        dojo.xhrPost({
		            url: "/reference/add-iqip-printing-release-data",
		            load: function(response, ioArgs){
		        		if(response == "success"){
			        		file.deselectFile();
		        			reference.refreshTabs(0);
			        		errorHandler.show();
			                return response;
		        		}
		            },
		            error: function(response, ioArgs){
		                return response;
		            },
		            handleAs: "text"
		        });
    		}
    	}
    	else if(type == "cicolorReference") {
        	// check if Form is valid
    		dijit.byId('cicolorReferenceForm').validate();
    		if(dijit.byId('cicolorReferenceForm').isValid())
    		{
    			dijit.byId('calculatingDialog').show();
    			
		        dojo.xhrPost({
		            url: "/reference/add-cicolor",
		            form: "cicolorReferenceForm",
		            load: function(response, ioArgs){
	        			file.deselectFile();
		        		reference.refreshTabs(0);
		        		dijit.byId('calculatingDialog').hide();
	        			errorHandler.show();
		                return response;
		            },
		            error: function(response, ioArgs){
		            	dijit.byId('calculatingDialog').hide();
		                return response;
		            },
		            handleAs: "text"
		        });
    		}
    		else {
    			//errorHandler.addWarning(translation.translate('formValidationError'));
    			errorHandler.show();
    		}
    	}
    }
    
    this.refreshTabs = function(showMoreThanInfo) {
    	// Only Show Info Tab - Hide all others
    	if(showMoreThanInfo == 0) {
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "none";
    		
    		//show info tab
    		self.showTab("infoTab", "/upload/index");
    		
    		//hide categoryTreeTab
    		self.hideTab('referenceTab');
    		self.hideTab('iqipPrintingReleaseDataTab');
    		self.hideTab('iqipCicolorReferenceTab');
    	}
    	
    	if(showMoreThanInfo == 1) {
    		
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("referenceTab", "/reference/show-reference-form");
    		
    		// hide info-tab
    		self.hideTab("infoTab");
    	}
    	
    	
    	if(showMoreThanInfo == 2) {
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("referenceTab", "/reference/show-reference-dot-gain-form");
    		
    		// hide info-tab
    		self.hideTab("infoTab");
    	}
    	
    	if(showMoreThanInfo == 3) {
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("referenceTab", "/reference/show-reference-iqip-dot-gain-form");
    		
    		// hide info-tab
    		self.hideTab("infoTab");
    	}
    	
    	if(showMoreThanInfo == 4) {
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("iqipPrintingReleaseDataTab", "/reference/show-reference-iqip-printing-release-data-form");
    		
    		// hide info-tab
    		self.hideTab("infoTab");
    	}    	
    	
    	if(showMoreThanInfo == 5) {
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("iqipCicolorReferenceTab", "/reference/show-cicolor-reference-form");
    		
    		// hide info-tab
    		self.hideTab("infoTab");
    	}   
    }
    
    this.showTab = function(tabId, href) {
    	var tabs = dijit.byId("mainTabContainer");
    	
		if(!dijit.byId(tabId)){
    		var pane = new dijit.layout.ContentPane({ id: tabId, title: translation.translate(tabId+"Title"), href: href});
    		tabs.addChild(pane);
		}
    }
    
    this.hideTab = function(tabId) {    	
    	var tabs = dijit.byId("mainTabContainer");
    	
		if(dijit.byId(tabId)){
			tabs.removeChild(dijit.byId(tabId));
			dijit.byId(tabId).destroyRecursive();
		}
    }
    
    this.updateSessionValue = function(field, value){
        dojo.xhrPost({
	            url: "/reference/update-session-value/",
	            postData: "field=" + field + "&value=" + value ,
	            load: function(response, ioArgs){
	                return response;
	            },
	            error: function(response, ioArgs){
	                //dojo.byId("files").innerHTML = "An error occurred, with response: " + response;
	                return response;
	            },
	            handleAs: "text"
	    });
	    
	    if(field = 'dotGain_user_id'){
        	referenceDotGainStore.close();
			dijit.byId('referenceDotGain_id').setValue("");
			dijit.byId('referenceDotGain_id').validate();
	    }
    }
    
    var self = this;
}

var reference = new Reference();

dojo.addOnLoad(
  function(){
    reference.init();
  }
);



