function ErrorHandler(){
    
	var error = new Array();
	var warning = new Array();
	var message = new Array();
	var timer = null;
	var security_timer = null;
	
    this.init = function() {
    	self.show();
    	window.setTimeout("errorHandler.securityPing()", 300000);
    }
    
    this.show = function() {
    	if(timer)
    	window.clearTimeout(timer)

        dojo.xhrPost({
            url: "/error/show-json",
            load: function(data){
                //dojo.byId("fileWrapper").innerHTML = response;
        		//console.log(data);
        		//alert(response);
        		//console.log(data.error.length);
        		for (i=0;i<data.error.length;i++){
        			self.addError(data.error[i]);
        		}
        		for (i=0;i<data.warning.length;i++){
        			self.addWarning(data.warning[i]);
        		}    
        		for (i=0;i<data.message.length;i++){
        			self.addMessage(data.message[i]);
        		}        		
        		self.doShow();
        		timer = window.setTimeout("errorHandler.clearOld()", 5000);
        		return data;
            },
            error: function(response, ioArgs){
                return response;
        		self.doShow();
        		timer = window.setTimeout("errorHandler.clearOld()", 5000);
            },
            handleAs: "json"
        });
    }
    
    this.showUserFiles = function() {
    	dijit.byId('fileWrapper').attr('href', '/file/show-user-folder');
    }
    
    this.display = function(){
    	
    }
    
    this.securityPing = function() {
    	dojo.xhrPost({
            url: "/error/security-ping",
            load: function(data){
				if(parseInt(data) > 0) {
					window.location.href = "/auth/login";
				}
            },
            error: function(response, ioArgs){
                return response;
            },
            handleAs: "json"
        });
        
        
        security_timer = window.setTimeout("errorHandler.securityPing()", 300000);
        
    }
    
    
    this.doShow = function() {
    	//console.log(error);
    	dojo.byId("errorMessages").innerHTML = '';
    	dojo.byId("warningMessages").innerHTML = '';
    	dojo.byId("infoMessages").innerHTML = '';
    	
    	for (i=0;i<error.length;i++){
    		dojo.byId("errorMessages").innerHTML += error[i].message + '<br/>';
    	}
    	for (i=0;i<warning.length;i++){
    		dojo.byId("warningMessages").innerHTML += warning[i].message + '<br/>';
    	}
    	for (i=0;i<message.length;i++){
    		dojo.byId("infoMessages").innerHTML += message[i].message + '<br/>';
    	}    	
    	
    	var currentHeight = dojo.byId("errorMessages").clientHeight;
    	//console.log(dojo.byId("errorMessages").clientHeight);
    	
    	if (error.length > 0){
			var increaseHeight = dojo.animateProperty(
				  {
					  	node: "errorMessagesWrapper",
					  	duration: 500,
					  	properties: {
					  		height: {end: currentHeight}
				  		}
				  });
    		increaseHeight.play();
    	}
    	else {
    		var decreaseHeight = dojo.animateProperty(
  				  {
  					  	node: "errorMessagesWrapper",
  					  	duration: 500,
  					  	properties: {
  					  		height: {end: 0}
  				  		}
  				  });
    		decreaseHeight.play();
    	}
    	
    	var currentHeight = dojo.byId("warningMessages").clientHeight;
    	    	
    	if (warning.length > 0){
			var increaseHeight = dojo.animateProperty(
				  {
					  	node: "warningMessagesWrapper",
					  	duration: 500,
					  	properties: {
					  		height: {end: currentHeight}
				  		}
				  });
    		increaseHeight.play();
    	}
    	else {
    		var decreaseHeight = dojo.animateProperty(
  				  {
  					  	node: "warningMessagesWrapper",
  					  	duration: 500,
  					  	properties: {
  					  		height: {end: 0}
  				  		}
  				  });
    		decreaseHeight.play();
    	}    	
    	
    	var currentHeight = dojo.byId("infoMessages").clientHeight;
    	
    	if (message.length > 0){
			var increaseHeight = dojo.animateProperty(
				  {
					  	node: "infoMessagesWrapper",
					  	duration: 500,
					  	properties: {
					  		height: {end: currentHeight}
				  		}
				  });
    		increaseHeight.play();
    	}
    	else {
    		var decreaseHeight = dojo.animateProperty(
  				  {
  					  	node: "infoMessagesWrapper",
  					  	duration: 500,
  					  	properties: {
  					  		height: {end: 0}
  				  		}
  				  });
    		decreaseHeight.play();
    	}
    }

    this.addError = function(currentError) {
    	var time = new Date();
    	var tmpError = new Object();
    	tmpError.ts = time.getTime();
    	tmpError.message = currentError;
    	error.push(tmpError);
    }
    
    this.addWarning = function(currentWarning) {
    	var time = new Date();
    	var tmpWarning = new Object();
    	tmpWarning.ts = time.getTime();
    	tmpWarning.message = currentWarning;
    	warning.push(tmpWarning);
    }  
    
    this.addMessage = function(currentMessage) {
    	var time = new Date();
    	var tmpMessage = new Object();
    	tmpMessage.ts = time.getTime();
    	tmpMessage.message = currentMessage;
    	message.push(tmpMessage);
    }  
    
    this.clearOld = function() {
    	var time = new Date();
    	currentTime = time.getTime();
    	
		for (i=error.length-1;i>=0;i--){
			if (error[i].ts <= currentTime-5000)
			error.splice(i,1);
		}    
		for (i=warning.length-1;i>=0;i--){
			if (warning[i].ts <= currentTime-5000)
			warning.splice(i,1);
		}    
		for (i=message.length-1;i>=0;i--){
			if (message[i].ts <= currentTime-5000)
			message.splice(i,1);
		}    
    	
		self.doShow();
    }    
    
    var self = this;
}

var errorHandler = new ErrorHandler();

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



