﻿// JScript File
//Creates an AJAXMessage
//Uses yahoo-min.js and event-min for Event Handling

function AJAXMessageProps(id , ImgWait , ImgOk , ImgNok , CSSImgWait , CSSImgOk , CSSImgNok , AJAXMessagePosImg , AJAXMessagePosMsg , Message , MessageOk , MessageNOk, SingleTon)
{   
    if (typeof AJAXMessageProps._singleTon != 'undefined')
    {
        return AJAXMessageProps._singleTon;
    }
    else
    {
        this.id = id;
        this.Messageid = id;
        this.ImgWait = ImgWait;
        this.ImgOk = ImgOk;
        this.ImgNok = ImgNok;
        this.CSSImgWait = CSSImgWait;
        this.CSSImgOk = CSSImgOk;
        this.CSSImgNok = CSSImgNok;
        this.AJAXMessagePosImg = AJAXMessagePosImg;
        this.AJAXMessagePosMsg = AJAXMessagePosMsg;
        this.Message = Message;
        this.MessageOk = MessageOk;
        this.MessageNOk = MessageNOk;
        AJAXMessageProps._singleTon = this;   
    }
}

function AJAXMessage(id , ImgWait , ImgOk , ImgNok , CSSImgWait , CSSImgOk , CSSImgNok , StylePos , StyleCss , Message , MessageOk , MessageNOk , IsPositionRelative , OuterControl , singleTon)
{
    if (singleTon == "True")
    {
        if (typeof AJAXMessage._singleTon != 'undefined')
        {
            return AJAXMessage._singleTon;
        }
        else
        {
            this.id = id;
            this.ImgWait = ImgWait;
            this.ImgOk = ImgOk;
            this.ImgNok = ImgNok;
            this.CSSImgWait = CSSImgWait;
            this.CSSImgOk = CSSImgOk;
            this.CSSImgNok = CSSImgNok;
            this.AJAXMessagePosImg = StylePos;
            this.AJAXMessagePosMsg = StyleCss;
            this.Message = Message;
            this.MessageOk = MessageOk;
            this.MessageNOk = MessageNOk;
            this.OuterControl = OuterControl;
            this.IsPositionRelative = IsPositionRelative;
            AJAXMessage._singleTon = this;
        }
    }
    else
    {
        this.id = id;
        this.ImgWait = ImgWait;
        this.ImgOk = ImgOk;
        this.ImgNok = ImgNok;
        this.CSSImgWait = CSSImgWait;
        this.CSSImgOk = CSSImgOk;
        this.CSSImgNok = CSSImgNok;
        this.AJAXMessagePosImg = StylePos;
        this.AJAXMessagePosMsg = StyleCss;
        this.Message = Message;
        this.MessageOk = MessageOk;
        this.MessageNOk = MessageNOk;
        this.OuterControl = OuterControl;
        this.IsPositionRelative = IsPositionRelative;
    }
}
    
AJAXMessage.prototype.SetParams = function (id , ImgWait , ImgOk , ImgNok , StylePos , StyleCss , Message , MessageOk , MessageNOk , IsPositionRelative , OuterControl)
{
    this.id = id;
    this.ImgWait = ImgWait;
    this.ImgOk = ImgOk;
    this.ImgNok = ImgNok;
    this.AJAXMessagePosImg = StylePos;
    this.AJAXMessagePosMsg = StyleCss;
    this.Message = Message;
    this.MessageOk = MessageOk;
    this.MessageNOk = MessageNOk;
    this.OuterControl = OuterControl;
    this.IsPositionRelative = IsPositionRelative;
};

AJAXMessage.prototype.AJAXMessageinit = function () 
{
    this.addLoadEvent(this.CreateAJAXMessage , this);
};

AJAXMessage.prototype.AJAXMessageinitOut = function () 
{
    this.CreateAJAXMessage(this);
};

//Run onload
AJAXMessage.prototype.addLoadEvent = function (func, outer) 
{
    var oldonload = window.onload;
	if (typeof window.onload != 'function') 
	{
	    window.onload = function () 
	    {
		    func(outer);
        };
    }
    else 
    {
        window.onload = function () 
        {
		    oldonload();
		    func(outer);
        };
    }
};

AJAXMessage.prototype.InitEvents = function (objSubscribe) 
{
    objSubscribe.ResponseBack.subscribe(this.fnSubscriberonResponseBack, this);      
};

AJAXMessage.prototype.fnSubscriberonResponseBack = function (type, args, me) 
{  
    me.SetMessage(args[0]);
    me.SetImage(args[1]);
};

AJAXMessage.prototype.SetMessage = function (Msg)
{   
    document.getElementById('m' + this.id).innerHTML = Msg;
}; 

AJAXMessage.prototype.SetImage = function (Img)
{   
    if (Img == null)
    {
        document.getElementById('i' + this.id).style.visibility  = "hidden";
    }
    else
    {
        document.getElementById('i' + this.id).style.visibility  = "";
        //document.getElementById('i' + this.id).src = Img;
        document.getElementById('i' + this.id).className = Img;
    }
};

function findPosX(obj)
{
    var curleft = 0;
    if (obj.offsetParent)
    {
        while (1) 
        {
            curleft += obj.offsetLeft;
            if (!obj.offsetParent)
            {
                break;
            }                    
            obj = obj.offsetParent;
        }
    }
    else 
    {
        if (obj.x)
        {
            curleft += obj.x;
        }
    }
    return curleft;
}

function findPosY(obj)
{
    var curtop = 0;
    if (obj.offsetParent)
    {
        while (1)
        {
            curtop += obj.offsetTop;
            if (!obj.offsetParent)
            {
                break;
            }
            obj = obj.offsetParent;
        }
    }
    else 
    {
        if (obj.y)
        {
            curtop += obj.y;
        }
    }
    return curtop;
}

AJAXMessage.prototype.CreateAJAXMessage = function (outer)
{
    var objAJAXMessage = document.createElement('div');
    objAJAXMessage.id = outer.id;
    if (outer.IsPositionRelative == "True")
    {
        var outerControl = document.getElementById(outer.OuterControl);
        var opxX = findPosX(outerControl);
        var opxW = outerControl.style.width.split("px")[0];
        var xpx = findPosX(outerControl)  + (outerControl.style.width.split("px")[0]  / 2) + 'px';
        var ypx = findPosY(outerControl) + 10 + 'px';
        objAJAXMessage.style.marginLeft =  xpx;
        objAJAXMessage.style.marginTop  = ypx;
    }
    objAJAXMessage.className = outer.StylePos;
    var objAJAXImgDiv = document.createElement('div');
    objAJAXImgDiv.id = 'a' + outer.id;
    objAJAXMessage.appendChild(objAJAXImgDiv);
    //var objAJAXImg = document.createElement('img');
    var objAJAXImg = document.createElement('div');
    objAJAXImg.id = 'i' + outer.id;
    //objAJAXImg.src = outer.ImgWait;
    objAJAXImg.className = outer.CSSImgWait;
    //objAJAXMessage.appendChild(objAJAXImg);
    objAJAXImgDiv.appendChild(objAJAXImg);   
    var objAJAXMessageText = document.createElement('div');
    objAJAXMessageText.id = 'm' + outer.id;
    objAJAXMessageText.className = outer.AJAXMessagePosMsg;
    objAJAXMessageText.innerHTML = outer.Message;
    objAJAXMessage.appendChild(objAJAXMessageText);
    document.body.appendChild(objAJAXMessage);
};


