﻿// #########################################################################################################################
// #########################################################################################################################
// **************************                           Message Class                               ************************
// #########################################################################################################################
// #########################################################################################################################
function Message(isColorFade)
{
    this.MsgID = "Message" + msgEngine.GetNextID();
    this.DivID = "div" + this.MsgID;
    this.TblID = "tbl" + this.MsgID;
    this.ImgID = "img" + this.MsgID;
    this.SpnID = "spn" + this.MsgID;
    
    this.IsColorFade;
    
    this.FailImage = "Common/Images/flag_red.png";
    this.FailBorder = "f79646";
    this.FailMessage = "Failed";
    this.FailMsgClass = "FailMsgStyle";
    this.FailColorStart = "FFFFFF";
    this.FailColorEnd = "fde4d0";
    this.FailColorSteps = 50;
    this.FailColorSpeed = 1;
    
    this.SuccessImage = "Common/Images/flag_green.png";
    this.SuccessBorder = "9bbb59";
    this.SuccessMessage = "Success";
    this.SuccessMsgClass = "SuccessMsgStyle";
    this.SuccessColorStart = "FFFFFF";
    this.SuccessColorEnd = "cdddac";
    this.SuccessColorSteps = 50;
    this.SuccessColorSpeed = 1;
    
    this.CreateDivHere = function(isColorFade)
    {
        this.IsColorFade = (isColorFade != null)? isColorFade: true;
        
        this.HTML = 
        ' <div id="'+this.DivID+'" style="height:20px; overflow:hidden; display:none; margin-left: 12px; margin-right: 12px; margin-bottom: 10px;" height="20px;">                                                                                      ' +
        ' <table id="'+this.TblID+'" style="border: 1px solid;" cellspacing="0" cellpadding="0" class="warningStrip">               ' +
        '   <tr>                                                                                                                               ' +
        '       <td align="left" style="width: 100%; padding-left: 5px;">                                                                      ' +
        '           <span id="'+this.SpnID+'"> </span>                                                                                         ' +
        '       <td>                                                                                                                           ' +
        '       <td align="right" style="padding-right: 1px;">                                                                                 ' +
        '           <img style="vertical-align: middle;" id="'+this.ImgID+'" src="">                                                           ' +
        '       <td>                                                                                                                           ' +
        '   </tr>                                                                                                                              ' +
        '</table>' +
        '</div>';
        
        document.write(this.HTML);
    }
    
    // -----------------------------------------------------
    // FAILURE FUNCTIONS
    // -----------------------------------------------------
    this.SetFailSettings = function(failImage,failBorderClr,failMessage,failMsgClass,failColorStart,failColorEnd,failColorSteps,failColorSpeed)
    {
        this.FailImage      = (failImage!=null)? failImage: this.FailImage;
        this.FailBorder     = (failImage!=null)? failBorderClr: this.FailBorder;
        this.FailMessage    = (failMessage!=null)? failMessage: this.FailMessage;
        this.FailMsgClass   = (failMsgClass!=null)? failMsgClass: this.FailMsgClass;
        this.FailColorStart = (failColorStart!=null)? failColorStart: this.FailColorStart;
        this.FailColorEnd   = (failColorEnd!=null)? failColorEnd: this.FailColorEnd;
        this.FailColorSteps = (failColorSteps!=null)? failColorSteps: this.FailColorSteps;
        this.FailColorSpeed = (failColorSpeed!=null)? failColorSpeed: this.FailColorSpeed;
    }

    this.Fail = function(msg)
    {
        document.getElementById(this.DivID).style.display = "block";
        document.getElementById(this.TblID).style.borderColor = this.FailBorder;
        document.getElementById(this.ImgID).src = this.FailImage;
        document.getElementById(this.SpnID).className = this.FailMsgClass;
        document.getElementById(this.SpnID).innerHTML = (msg != null)? msg: this.FailMessage;
        
        
        if(!(document.getElementById(this.DivID).innerHTML.toLowerCase().indexOf("<br>") > 0))
            document.getElementById(this.DivID).innerHTML += "<br>";

        if(this.IsColorFade)
            colorFade(this.TblID,"background",this.FailColorStart,this.FailColorEnd,this.FailColorSteps,this.FailColorSpeed);
    }
    
    
    // -----------------------------------------------------
    // SUCCESS FUNCTIONS
    // -----------------------------------------------------
    this.SetSuccessSettings = function(successImage,successBorderClr,successMessage,successMsgClass,successColorStart,successColorEnd,successColorSteps,successColorSpeed)
    {
        this.SuccessImage      = (successImage!=null)? successImage: this.SuccessImage;
        this.SuccessBorder     = (successBorderClr!=null)? successBorderClr: this.SuccessBorder;
        this.SuccessMessage    = (successMessage!=null)? successMessage: this.SuccessMessage;
        this.SuccessMsgClass   = (successMsgClass!=null)? successMsgClass: this.successMsgClass;
        this.SuccessColorStart = (successColorStart!=null)? successColorStart: this.SuccessColorStart;
        this.SuccessColorEnd   = (successColorEnd!=null)? successColorEnd: this.SuccessColorEnd;
        this.SuccessColorSteps = (successColorSteps!=null)? successColorSteps: this.SuccessColorSteps;
        this.SuccessColorSpeed = (successColorSpeed!=null)? successColorSpeed: this.SuccessColorSpeed;
    }

    this.Success = function(msg)
    {
        document.getElementById(this.DivID).style.display = "block";
        document.getElementById(this.TblID).style.borderColor = this.SuccessBorder;
        document.getElementById(this.ImgID).src = this.SuccessImage;
        document.getElementById(this.SpnID).className = this.SuccessMsgClass;
        document.getElementById(this.SpnID).innerHTML = (msg != null)? msg: this.SuccessMessage;
        
        if(!(document.getElementById(this.DivID).innerHTML.toLowerCase().indexOf("<br>") > 0))
            document.getElementById(this.DivID).innerHTML += "<br>";

        if(this.IsColorFade)
            colorFade(this.TblID,"background",this.SuccessColorStart,this.SuccessColorEnd,this.SuccessColorSteps,this.SuccessColorSpeed);
    }

    
    // -----------------------------------------------------
    // OTHER FUNCTIONS
    // -----------------------------------------------------
    this.Show = function(msg,msgClass,borderClr,image,colorStart,colorEnd,colorSteps,colorSpeed)
    {
        document.getElementById(this.DivID).style.display = "block";
        document.getElementById(this.TblID).style.borderColor = borderClr;
        document.getElementById(this.ImgID).src = (image != null)? image: "";
        document.getElementById(this.SpnID).className =  (msgClass != null)? msgClass: "";
        document.getElementById(this.SpnID).innerHTML = (msg != null)? msg: "";
        
        if(!(document.getElementById(this.DivID).innerHTML.toLowerCase().indexOf("<br>") > 0))
            document.getElementById(this.DivID).innerHTML += "<br>";

        if(this.IsColorFade)
        {
            var clrStart = (colorStart!=null)? colorStart:this.SuccessColorStart;
            var clrEnd   = (colorEnd!=null)? colorEnd:this.SuccessColorEnd;
            var clrSteps = (colorSteps!=null)? colorSteps:this.SuccessColorSteps;
            var clrSpeed = (colorSpeed!=null)? colorSpeed:this.SuccessColorSpeed;
            
            colorFade(this.TblID,"background",clrStart,clrEnd,clrSteps,clrSpeed);
        }
    }

    this.Hide = function()
    {
        document.getElementById(this.DivID).style.display = "none";
        document.getElementById(this.DivID).innerHTML = document.getElementById(this.DivID).innerHTML.replace("<br>","");
    }
}

function MessageEngine()
{
    this.msgID = 0;
    
    this.GetNextID = function()
    {
        return this.msgID++;    
    }
}

var msgEngine = new MessageEngine();


