﻿function ErrorManagerJQ(errorContainer)
{
    //PROPERTIES
    this.ErrorContainer = errorContainer;
    this.ErrorElements = new Object();
    this.ErrorMessages = new Object();
    this.ErrorMessageClassNames = new Object();
}

ErrorManagerJQ.prototype.AddErrorMessage = 
    function(element, message, className)
    {
        if(className == null)
        {
            className = TextStyles.Error;
        }
        
        if(element != null)
        {
            if(!element.hasClass(className))
            {
                element.addClass(className);
            }
            
            this.ErrorMessages[element.attr("id")] = message;
            this.ErrorMessageClassNames[element.attr("id")] = className;
            this.ErrorElements[element.attr("id")] = element;
        }
    };

ErrorManagerJQ.prototype.AddServerErrorMessage = 
    function(message)
    {
        this.ErrorMessages[Math.floor(Math.random()*110)] = message;
    };

    ErrorManagerJQ.prototype.RemoveErrorMessage =
    function(element)
    {
      if (element != null)
      {
        var cl = this.ErrorMessageClassNames[element.attr("id")];
        if (cl != null)
        {
          element.removeClass(cl);
        }
        this.ErrorMessages[element.attr("id")] = "";
        this.ErrorMessageClassNames[element.attr("id")] = "";
        this.ErrorElements[element.attr("id")] = "";
      }
    };
    
ErrorManagerJQ.prototype.RemoveErrorItems = 
    function()
    {
        $("li.errorManagerJQItem").remove();
    };    
    
ErrorManagerJQ.prototype.ClearErrors = 
    function()
    {
        for(errorElementId in this.ErrorElements)
        {
            var element = this.ErrorElements[errorElementId];
            var className = this.ErrorMessageClassNames[errorElementId];
            
            if(element != null && className!=null && className.length > 0)
            {
                if(element.hasClass(className))
                {
                    element.removeClass(className);
                }
            }
        } 
        
        this.RemoveErrorItems();
        this.ErrorMessages = new Object();
        this.ErrorMessageClassNames = new Object();
        this.ErrorElements = new Object();
    	this.ErrorContainer.hide();
    };

ErrorManagerJQ.prototype.ErrorCount = 
    function()
    {
        var count = 0;
        
        for(errorElementId in this.ErrorMessages)
        {
            var errorMessage = jQuery.trim(this.ErrorMessages[errorElementId]);
            if(errorMessage.length > 0)
            {
                count++;
            }
        }    
        
        return count;
    };

ErrorManagerJQ.prototype.ShowErrors =
    function()
    {
        if (this.ErrorCount() > 0)
        {
            this.RemoveErrorItems();
            
            var thisList = this.ErrorContainer.find("ul");
            
            for (errorElementId in this.ErrorMessages)
            {
                var errorMessage = jQuery.trim(this.ErrorMessages[errorElementId]);
                if ((errorMessage != null) && (errorMessage.length > 0))
                {
                    thisList.append("<li class='errorManagerJQItem'>"+errorMessage+"</li>");
                }
            }
            
            this.ErrorContainer.show();
        }
        else
        {
            this.ClearErrors();
        }
    };    

function isArray(variable) 
{
    return (variable.constructor == Array);
}