DHTML_modalMessage = function() {
    var url;
    var htmlOfModalMessage;
    var divs_transparentDiv;
    var divs_content;
    var iframe;
    var layoutCss;
    var width;
    var height;
    var existingBodyOverFlowStyle;
    var dynContentObj;
    var cssClassOfMessageBox;
    var shadowDivVisible;
    var shadowOffset;
    var MSIE;
    this.url = '';
    this.htmlOfModalMessage = '';
    this.layoutCss = 'modal-message.css';
    this.height = 200;
    this.width = 400;
    this.cssClassOfMessageBox = false;
    this.shadowDivVisible = true;
    this.shadowOffset = 5;
    this.MSIE = false;
    if (navigator.userAgent.indexOf('MSIE') >= 0) this.MSIE = true;
}

DHTML_modalMessage.prototype = {
    setSource: function(urlOfSource) {
        this.url = urlOfSource;
    },
    setHtmlContent: function(newHtmlContent) {
        this.htmlOfModalMessage = newHtmlContent;
    },
    setSize: function(width, height) {
        if (width) this.width = width;
        if (height) this.height = height;
    },
    setCssClassMessageBox: function(newCssClass) {
        this.cssClassOfMessageBox = newCssClass;
        if (this.divs_content) {
            if (this.cssClassOfMessageBox)
                this.divs_content.className = this.cssClassOfMessageBox;
            else
                this.divs_content.className = 'modalDialog_contentDiv';
        }

    },
    setShadowOffset: function(newShadowOffset) {
        this.shadowOffset = newShadowOffset
    },
    display: function() {
        if (!this.divs_transparentDiv) {
            this.__createDivs();
        }
        this.divs_transparentDiv.style.display = 'block';
        this.divs_content.style.display = 'block';
        this.divs_shadow.style.display = 'block';
        if (this.MSIE) this.iframe.style.display = 'block';
        this.__resizeDivs();
        window.refToThisModalBoxObj = this;
        setTimeout('window.refToThisModalBoxObj.__resizeDivs()', 150);
        this.__insertContent();
    },
    setShadowDivVisible: function(visible) {
        this.shadowDivVisible = visible;
    },
    close: function() {
        this.divs_transparentDiv.style.display = 'none';
        this.divs_content.style.display = 'none';
        this.divs_shadow.style.display = 'none';
        if (this.MSIE) this.iframe.style.display = 'none';
    },
    addEvent: function(whichObject, eventType, functionName, suffix) {
        if (!suffix) suffix = '';
        if (whichObject.attachEvent) {
            whichObject['e' + eventType + functionName + suffix] = functionName;
            whichObject[eventType + functionName + suffix] = function() { whichObject['e' + eventType + functionName + suffix](window.event); }
            whichObject.attachEvent('on' + eventType, whichObject[eventType + functionName + suffix]);
        } else {
            whichObject.addEventListener(eventType, functionName, false);
        }
    },
    __createDivs: function() {
        this.divs_transparentDiv = document.createElement('DIV');
        this.divs_transparentDiv.className = 'modalDialog_transparentDivs';
        this.divs_transparentDiv.style.left = '0px';
        this.divs_transparentDiv.style.top = '0px';
        document.body.appendChild(this.divs_transparentDiv);
        this.divs_content = document.createElement('DIV');
        this.divs_content.className = 'modalDialog_contentDiv';
        this.divs_content.id = 'DHTMLSuite_modalBox_contentDiv';
        this.divs_content.style.zIndex = 100000;
        if (this.MSIE) {
            this.iframe = document.createElement('<IFRAME src="about:blank" frameborder=0>');
            this.iframe.style.zIndex = 90000;
            this.iframe.style.position = 'absolute';
            document.body.appendChild(this.iframe);
        }
        document.body.appendChild(this.divs_content);
        this.divs_shadow = document.createElement('DIV');
        this.divs_shadow.className = 'modalDialog_contentDiv_shadow';
        this.divs_shadow.style.zIndex = 95000;
        document.body.appendChild(this.divs_shadow);
        window.refToModMessage = this;
        this.addEvent(window, 'scroll', function(e) { window.refToModMessage.__repositionTransparentDiv() });
        this.addEvent(window, 'resize', function(e) { window.refToModMessage.__repositionTransparentDiv() });
    },
    __getBrowserSize: function() {
        var bodyWidth = document.documentElement.clientWidth;
        var bodyHeight = document.documentElement.clientHeight;
        var bodyWidth, bodyHeight;
        if (self.innerHeight) {
            bodyWidth = self.innerWidth;
            bodyHeight = self.innerHeight;
            bodyWidth = bodyWidth - 17;
        } else if (document.documentElement && document.documentElement.clientHeight) {
            bodyWidth = document.documentElement.clientWidth;
            bodyHeight = document.documentElement.clientHeight;
        } else if (document.body) {
            bodyWidth = document.body.clientWidth;
            bodyHeight = document.body.clientHeight;
        }
        return [bodyWidth, bodyHeight];
    },
    __resizeDivs: function() {
        var topOffset = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
        if (this.cssClassOfMessageBox)
            this.divs_content.className = this.cssClassOfMessageBox;
        else
            this.divs_content.className = 'modalDialog_contentDiv';
        if (!this.divs_transparentDiv) return;
        var st = Math.max(document.body.scrollTop, document.documentElement.scrollTop);
        var sl = Math.max(document.body.scrollLeft, document.documentElement.scrollLeft);
        window.scrollTo(sl, st);
        setTimeout('window.scrollTo(' + sl + ',' + st + ');', 10);
        this.__repositionTransparentDiv();
        var brSize = this.__getBrowserSize();
        var bodyWidth = brSize[0];
        var bodyHeight = brSize[1];
        this.divs_content.style.width = this.width + 'px';
        this.divs_content.style.height = this.height + 'px';
        var tmpWidth = this.divs_content.offsetWidth;
        var tmpHeight = this.divs_content.offsetHeight;
        this.divs_content.style.left = Math.ceil((bodyWidth - tmpWidth) / 2) + 'px'; ;
        this.divs_content.style.top = (Math.ceil((bodyHeight - tmpHeight) / 2) + topOffset) + 'px';
        if (this.MSIE) {
            this.iframe.style.left = this.divs_content.style.left;
            this.iframe.style.top = this.divs_content.style.top;
            this.iframe.style.width = this.divs_content.style.width;
            this.iframe.style.height = this.divs_content.style.height;
        }
        this.divs_shadow.style.left = (this.divs_content.style.left.replace('px', '') / 1 + this.shadowOffset) + 'px';
        this.divs_shadow.style.top = (this.divs_content.style.top.replace('px', '') / 1 + this.shadowOffset) + 'px';
        this.divs_shadow.style.height = tmpHeight + 'px';
        this.divs_shadow.style.width = tmpWidth + 'px';
        if (!this.shadowDivVisible) this.divs_shadow.style.display = 'none';
    },
    __repositionTransparentDiv: function() {
        this.divs_transparentDiv.style.top = Math.max(document.body.scrollTop, document.documentElement.scrollTop) + 'px';
        this.divs_transparentDiv.style.left = Math.max(document.body.scrollLeft, document.documentElement.scrollLeft) + 'px';
        var brSize = this.__getBrowserSize();
        var bodyWidth = brSize[0];
        var bodyHeight = brSize[1];
        this.divs_transparentDiv.style.width = bodyWidth + 'px';
        this.divs_transparentDiv.style.height = bodyHeight + 'px';

    },
    __insertContent: function() {
        if (this.url) {
            ajax_loadContent('DHTMLSuite_modalBox_contentDiv', this.url);
        } else {
            this.divs_content.innerHTML = this.htmlOfModalMessage;
        }
    }
}

