function Meta(){
    var numberOfMetaTabs = 3;
    var sMtI = 0;
    var hasPrintingReleaseData = null;
    
    this.init = function() {
    }
    
    this.saveMetaDataForm = function() {
        dojo.xhrPost({
            url: "/meta/save-meta-data-form/",
            load: function(response, ioArgs){
        		dijit.byId('metaDataTab2').attr('href', '/meta/show-meta-data-formular-screen1');
        		dijit.byId('metaDataTab3').attr('href', '/meta/show-meta-data-formular-screen2');
        		errorHandler.show();
                return response;
            },
            error: function(response, ioArgs){
            	errorHandler.show();
            	return response;
            },
            handleAs: "text"
        });
    }
    
    this.updateReferences = function() {

        dojo.xhrPost({
            url: "/meta/set-references/",
            load: function(data){

        		errorHandler.show();
                return data;
            },
            error: function(data){
            	errorHandler.show();
                return data;
            },
            handleAs: "json"
        });

    }
    
    this.refreshTabs = function(showMoreThanInfo) {
    	sMtI = 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('categoryTreeTab');
    		self.hideTab('categoryPdfTreeTab');
    		self.hideTab('categoryCicolorTreeTab');
    		self.hideTab('categoryRegisterTreeTab');
    		self.hideTab("categoryRegisterCbs");
    		
    		//hide all others
    		for(i = 1; i <= numberOfMetaTabs; i++) 
        	self.hideTab("metaDataTab"+i);
    		
    		self.hideTab("metaDataEvents");
    	}
    	
    	
    	if(showMoreThanInfo == 1) {
    		
    		// show File Arrow
    		dojo.byId("fileArrow").style.display = "block";
    		
    		// show categorTreeTab
    		self.showTab("categoryTreeTab", "/category/show-category-dropdowns");
    		
    		// hide info-tab
    		self.hideTab("infoTab");

	        dojo.xhrPost({
	            url: "/meta/validate-and-more",
	            load: function(data){
	        	
	        		hasPrintingReleaseData = data['hasPrintingReleaseData'];
	        		
	        		// CATEGORY is COMPLETE
	        		if(data['categoryComplete']) {
	        			

	        			
	        			meta.showTab('metaDataTab1','/meta/show-meta-data-formular-screen1');
	        			
	        			dojo.byId("categoryTreeRightArrow").style.display = "block";
	
	        			if(data['hasPrintingReleaseData']) {
		        			if(dijit.byId("printingReleaseData")) {
		        				dijit.byId("printingReleaseData").setDisabled(false); 	
		        			}
	        			}
	        			else {
		        			if(dijit.byId("printingReleaseData")) {
		        				dijit.byId("printingReleaseData").setDisabled(true); 	
		        			}
	        			}	
	        			
	        			if(data['meta1Complete']) { // META 1 COMPLETE
	        				meta.showTab('metaDataTab2','/meta/show-meta-data-formular-screen2');
		        			
	        				if(dojo.byId("metaDataTab1RightArrow"))
				        	dojo.byId("metaDataTab1RightArrow").style.display = "block";
	        				if(data['meta2Complete']) { // META 2 COMPLETE
		        				meta.showTab('metaDataTab3','/meta/show-meta-data-formular-screen3');
		        				meta.showTab('metaDataEvents', '/meta/show-meta-data-events');
		        				
			        			if(dojo.byId("metaDataTab2RightArrow"))
					        		dojo.byId("metaDataTab2RightArrow").style.display = "block";
	        					}
	        					else {
		        					meta.hideTab('metaDataTab3');
		        					meta.hideTab('metaDataEvents');
		        					if(dojo.byId("metaDataTab2RightArrow"))
		    			        		dojo.byId("metaDataTab2RightArrow").style.display = "none";
	        					}
	        					if(dojo.byId('eventOptionsForm'))
	        						meta.updateEvents();
	        			}
	        			else {
		        			meta.hideTab('metaDataTab2');
		        			meta.hideTab('metaDataTab3');
		        			meta.hideTab('metaDataEvents');
		        			
		        			if(dojo.byId("metaDataTab1RightArrow"))
			        		dojo.byId("metaDataTab1RightArrow").style.display = "none";
	        			}
	        		}
	        		else {
	        			meta.hideTab('metaDataTab1');
	        			meta.hideTab('metaDataTab2');
	        			meta.hideTab('metaDataTab3');
	        			meta.hideTab('metaDataEvents');
	        			
	        			if(dojo.byId("categoryTreeRightArrow"))
	        			dojo.byId("categoryTreeRightArrow").style.display = "none";
	        			
	        			if(dojo.byId("metaDataTab1RightArrow"))
	        			dojo.byId("metaDataTab1RightArrow").style.display = "none";
	        			
	        			if(dojo.byId("metaDataTab2RightArrow"))
		        		dojo.byId("metaDataTab2RightArrow").style.display = "none";
	        		}
	        		errorHandler.show();
	                return data;
	            },
	            error: function(data){
	            	errorHandler.show();
	                return data;
	            },
	            handleAs: "json"
	        });
    	}
    	
    	if(showMoreThanInfo == 2) {
    		// show File Arrow
    		//dojo.byId("categoryTreeRightArrow").style.display = "block";
    		
    		// show categoryPdfTreeTab
    		self.showTab("categoryPdfTreeTab", "/category/show-category-pdf-dropdowns");
    		
    		// hide info-tab
    		self.hideTab("infoTab");

	        dojo.xhrPost({
	            url: "/meta/validate-pdf-dropdown",
	            load: function(data){
	        		if (data != 'incomplete') {
	        		dojo.byId("pdfMoveButton").style.display = "block";
	        		dojo.byId("pdfMoveButton").href = 'javascript: file.moveSignaturePdf('+data+')';
	        		}
	        		else {
		        		dojo.byId("pdfMoveButton").style.display = "none";
		        		dojo.byId("pdfMoveButton").href = '';
	        		}
	        		errorHandler.show();
	                return data;
	            },
	            error: function(data){
	            	errorHandler.show();
	                return data;
	            },
	            handleAs: "json"
	        });
    	}
    	
    	if(showMoreThanInfo == 3) {
    		// show categoryPdfTreeTab
    		self.showTab("categoryCicolorTreeTab", "/category/show-category-cicolor-dropdowns");
    		
    		// hide info-tab
    		self.hideTab("infoTab");

	        dojo.xhrPost({
	            url: "/meta/validate-cicolor-dropdown",
	            load: function(data){
	        		if (data == 'complete') {
	        			dijit.byId("cicolorStatusprintrunDD").setDisabled(false); 
	        			dijit.byId("referenceCicolorDD").setDisabled(false);
		        		dojo.byId("cicolorAddButton").style.display = "block";
	        		}
	        		else if (data == 'statusprintrun') {
	        			dijit.byId("cicolorStatusprintrunDD").setDisabled(false); 
	        			dijit.byId("referenceCicolorDD").setDisabled(false); 
		        		dojo.byId("cicolorAddButton").style.display = "none";
	        		}
	        		else {
	        			dijit.byId('referenceCicolorDD').setValue("");
	        			dijit.byId("referenceCicolorDD").setDisabled(true);
	        			dijit.byId('cicolorStatusprintrunDD').setValue("");
	        			dijit.byId("cicolorStatusprintrunDD").setDisabled(true);
		        		dojo.byId("cicolorAddButton").style.display = "none";
	        		}
	        		errorHandler.show();
	                return data;
	            },
	            error: function(data){
	            	errorHandler.show();
	                return data;
	            },
	            handleAs: "json"
	        });
    	}
    	
    	if(showMoreThanInfo == 4) {
    		// show categoryPdfTreeTab
    		self.showTab("categoryRegisterTreeTab", "/category/show-category-register-dropdowns");
    		self.showTab("categoryRegisterCbs", "/category/show-register-cbs");
    		
    		// hide info-tab
    		self.hideTab("infoTab");

	        dojo.xhrPost({
	            url: "/meta/validate-register-dropdown",
	            load: function(data){
	        		if (data == 'complete') {
	        			dijit.byId("registerStatusprintrunDD").setDisabled(false); 
	        			
	        			if(dojo.byId("registerAddButton"))
		        		dojo.byId("registerAddButton").style.display = "block";
	        			
	        			dojo.byId("registerNextButton").style.display = "block";
	        		}
	        		else if (data == 'statusprintrun') {
	        			dijit.byId("registerStatusprintrunDD").setDisabled(false); 
	        			
	        			if(dojo.byId("registerAddButton"))
		        		dojo.byId("registerAddButton").style.display = "none";
	        			
		        		dojo.byId("registerNextButton").style.display = "none";
	        		}
	        		else {
	        			
	        			if(dijit.byId('registerStatusprintrunDD')){
		        			dijit.byId("registerStatusprintrunDD").setDisabled(true);
		        			dijit.byId('registerStatusprintrunDD').setValue("");
	        			}
	        			
	        			if(dojo.byId("registerAddButton"))
		        		dojo.byId("registerAddButton").style.display = "none";
	        			
		        		dojo.byId("registerNextButton").style.display = "none";
	        		}
	        		errorHandler.show();
	                return data;
	            },
	            error: function(data){
	            	errorHandler.show();
	                return data;
	            },
	            handleAs: "json"
	        });
    	}
    }
    
    this.jumpToTab = function(tabId) {
    	var tabs = dijit.byId("mainTabContainer");
    	
    	if(dijit.byId(tabId))
    	tabs.selectChild(dijit.byId(tabId));
    	
    	meta.refreshTabs();
    }
    
    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});
    		
   
			dojo.connect(dijit.byId(tabId), 'onLoad', function(){
				meta.refreshTabs(sMtI);
				
				if(tabId == 'metaDataTab1')
					meta.updateReferences();
					
			});
			
    		
    		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.updateEvents = function() {
	    dojo.xhrPost({
	        url: "/meta/update-events/",
	        form: "eventOptionsForm",
	        load: function(response, ioArgs){
		 		errorHandler.show();
		 		return response;
	        },
	        error: function(response, ioArgs){
	            return response;
	        },
	        handleAs: "text"
	    });
    }
    
    this.updateSessionValue = function(field, value){
        dojo.xhrPost({
	            url: "/meta/update-session-value/",
	            postData: "field=" + field + "&value=" + value ,
	            load: function(response, ioArgs){

	    			if(dijit.byId('categoryTreeTab'))
	        		meta.refreshTabs(1);
	
	        		if(dijit.byId('categoryPdfTreeTab'))
		        	meta.refreshTabs(2);
	        		
	        		if(dijit.byId('categoryCicolorTreeTab'))
			        meta.refreshTabs(3);
	        		
	        		if(dijit.byId('categoryRegisterTreeTab'))
				    meta.refreshTabs(4);
        			
        			if(field == "sheetformat") {
        				if(dijit.byId("metaDataTab3"))
        					dijit.byId('metaDataTab3').attr('href', '/meta/show-meta-data-formular-screen3');
        			}
        			
        			if(field == "outputintend" || field == "paperclassification" || field == "dotGainReference") {
        				meta.updateReferences();
        			}
        			
        			if(field == "controlstripalignment") {
        				metaDataControlstriptypeStore.close();
        				dijit.byId('controlstriptype').setValue("");
        				dijit.byId('controlstriptype').validate();
        			}
        			
        			errorHandler.show();
	                return response;
	            },
	            error: function(response, ioArgs){
	            	errorHandler.show();
	                return response;
	            },
	            handleAs: "text"
	    });
    }
    
    this.updateSessionRegisterValue = function(field, value){
        dojo.xhrPost({
	            url: "/meta/update-session-value/",
	            postData: "field=" + field + "&value=" + value ,
	            load: function(response, ioArgs){

	    			if(dijit.byId("categoryRegisterCbs"))
	        		dijit.byId("categoryRegisterCbs").refresh();
        			
        			errorHandler.show();
	                return response;
	            },
	            error: function(response, ioArgs){
	            	errorHandler.show();
	                return response;
	            },
	            handleAs: "text"
	    });
    }    
    

    this.updateSessionControlStripValue = function(field, value){
        dojo.xhrPost({
	            url: "/meta/update-session-value/",
	            postData: "field=" + field + "&value=" + value ,
	            load: function(response, ioArgs){
        			errorHandler.show();
	                return response;
	            },
	            error: function(response, ioArgs){
	            	errorHandler.show();
	                return response;
	            },
	            handleAs: "text"
	    });
    }
    
    this.setListField = function(field){
    	dijit.byId('mGLTab1').attr('href', '/meta/match-lists/'+ field);
    	
    	// reset colors
    	var categoryDivs = tools.getElementsByClass("selectedField");
    	
        for(i=0; i < categoryDivs.length; i++) {
        	 dojo.removeClass(categoryDivs[i], 'selectedField');
        }
        
    	// higlight with red color
        dojo.addClass('categoryDiv_' + field, 'selectedField');
    }
    
    this.chooseUserItem = function(item_id){
    	dojo.byId("inputUserListItem").value = item_id;
    	
    	dojo.byId('globalName').value = dijit.byId('globalDD').attr('displayedValue', dojo.byId("userListItem_" + item_id).innerHTML);
    	
    	// reset colors
    	var userListItems = tools.getElementsByClass("GLentry");
    	
        for(i=0; i < userListItems.length; i++) {
        	dojo.removeClass(userListItems[i], 'selectedField');
        }
        
    	// higlight with red color
        dojo.addClass('userListItem_' + item_id, 'selectedField');
        
        // show checkmark if form complete
        self.checkIfGLIsValid();
    }
    
    this.checkIfGLIsValid = function() {
        if(dijit.byId("matchListsForm").isValid())
        	dojo.byId("matchListsCheckMark").style.display = "block";
        else
        	dojo.byId("matchListsCheckMark").style.display = "none";
    }
    
    this.createGlobal = function(field){
    	//preset name input field in DialogBox
    	dojo.byId('globalName').value = dijit.byId('globalDD').attr('displayedValue');
    	
    	dijit.byId('createGlobalDialog').show();
    	dojo.byId('inputGlobalCategory').value = field;
    }
    
    this.doCreateGlobal = function(globalName){
    	dojo.byId("inputGlobalName").value = globalName;
        dojo.xhrPost({
            url: "/meta/create-global-item",
            //postData: "globalName=" + globalName,
            form: "matchListsForm",
            load: function(response, ioArgs){
        		
        		globalDDStore.close(); 
        		dijit.byId("globalDD").setValue(parseInt(response)); 
        		dijit.byId("globalDD").validate();
        		errorHandler.show();
        		
                return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    }
    
    this.doCreateProposal = function(field, proposal){
        dojo.xhrPost({
            url: "/meta/create-proposal",
            postData: "fielld="+field+"&proposal=" + proposal,
            load: function(response, ioArgs){
        		errorHandler.show();
                return response;
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "text"
        });
    }
    
    this.matchLists = function(field){
    	dojo.byId('inputGlobalCategory').value = field;
        dojo.xhrPost({
            url: "/meta/do-match-lists/",
            form: "matchListsForm",
            load: function(response, ioArgs){
        		dijit.byId('mGLTab1').refresh();
        		errorHandler.show();
                return response;
            },
            error: function(response, ioArgs){
            	errorHandler.show();
                return response;
            },
            handleAs: "text"
        });
    }
    
    var self = this;
}

var meta = new Meta();

dojo.addOnLoad(
  function(){
	  meta.init();
  }
);



