﻿var messageBoxContainer = 0;

/*:::::::messageBoxType:::::*/
/* "wait"           */
/* "none"           */
/* "ok"             */
/* "ok/cancel"      */
/* "yes/no"         */
/* "yes/no/cancel"  */
/*------------------*/
function CSMessageBox(text, messageBoxType, okClick, yesClick, noClick, cancelClick) {

    //Property for dynamic message box ID. For example: MesageBox1
    messageBoxContainer++;

    //Set defaults
    if (messageBoxType == null) {
        messageBoxType = "ok";
    }

    if (okClick == null) {
        okClick = "";
    }
    if (yesClick == null) {
        yesClick = "";
    }
    if (noClick == null) {
        noClick = "";
    }
    if (cancelClick == null) {
        cancelClick = "";
    }

    //Init class names
    var bgElementClassName = 'messageBox-background';
    var msgWindowElementClassName = 'messageBox-window';
    var msgContentElementClassName = 'messageBox-content';
    var msgWindowHeaderElementClassName = 'messageBox-window-header';

    //Fixes for IE6
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion = new Number(RegExp.$1)

        if (ieversion <= 7) {
            bgElementClassName = 'messageBox-background-ie6';
            msgWindowElementClassName = 'messageBox-window-ie6';
            msgWindowHeaderElementClassName = 'messageBox-window-header-ie6';
        }
    }


    //Create messagebox elements
    var b = $('<div id="MessageBoxBackground' + messageBoxContainer + '" class="' + bgElementClassName + '"></div>');
    var m = $('<div id="MessageBoxElement' + messageBoxContainer + '" class="' + msgWindowElementClassName + '"><div id="MessageBoxHeader' + messageBoxContainer + '" class="' + msgWindowHeaderElementClassName + '"><span class="messageBox-window-header-caption">' + rc_message + '</span></div></div>');
    var w = $('<div id="MessageBoxContent' + messageBoxContainer + '" class="' + msgContentElementClassName + '"></div>');
    var contentCode = '<span>' + text + '</span>';

    if (messageBoxType != "none" && messageBoxType != "wait") {
        contentCode += '<br /><br />';
    }

    if (messageBoxType == "ok" || messageBoxType == "ok/cancel") {
        contentCode += "<a id=\"MessageBox_OK" + messageBoxContainer + "\" class=\"button-msg\" href=\"javascript:OnOKClick('" + okClick.replace(/'/g, "&quot;").replace(/\"/g, "&quot;") + "')\">" + rc_ok + "</a>";
    }
    if (messageBoxType == "yes/no/cancel" || messageBoxType == "yes/no") {
        contentCode += "<a id=\"MessageBox_Yes" + messageBoxContainer + "\" class=\"button-msg\" href=\"javascript:OnYesClick('" + yesClick.replace(/'/g, "&quot;").replace(/\"/g, "&quot;") + "')\">" + rc_yes + "</a>";
    }
    if (messageBoxType == "yes/no/cancel" || messageBoxType == "yes/no") {
        contentCode += "<a id=\"MessageBox_No" + messageBoxContainer + "\" class=\"button-msg\" href=\"javascript:OnNoClick('" + noClick.replace(/'/g, "&quot;").replace(/\"/g, "&quot;") + "')\">" + rc_no + "</a>";
    }
    if (messageBoxType == "yes/no/cancel" || messageBoxType == "ok/cancel") {
        contentCode += "<a id=\"MessageBox_Cancel" + messageBoxContainer + "\" class=\"button-msg\" href=\"javascript:OnCancelClick('" + cancelClick.replace(/'/g, "&quot;").replace(/\"/g, "&quot;") + "')\">" + rc_cancel + "</a>";
    }

    var c = $(contentCode);

    //Fixes for IE6
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion = new Number(RegExp.$1)
        if (ieversion <= 7) {
            b = $('<iframe id="MessageBoxBackground' + messageBoxContainer + '" class="' + bgElementClassName + '" frameborder="0" marginheight="0" marginwidth="0" scrolling="no"></iframe>');
        }
    }

    //Add messagebox elements to page
    $("body").append(b);
    $("body").append(m);
    $(m).append(w);
    $(w).append(c);

    //Round buttons
    $('a[class=button-msg]').corner('10px');    

    //Hover buttons
    jQuery('a[class=button-msg]').hover(function () {
        $(this).stop().animate({ backgroundColor: '#d9d8d5' });
    }, function () {
        $(this).stop().animate({ backgroundColor: 'white' });
    });

    //Allow MessageBox draggable
    $("#MessageBoxElement" + messageBoxContainer).draggable({
        containment: 'window',
        handle: '.' + msgWindowHeaderElementClassName
    });

    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var cornerSettingsHeader = {
            tl: { radius: 10 },
            tr: { radius: 10 },
            bl: { radius: 0 },
            br: { radius: 0 },
            antiAlias: true
        }
        var cornerSettingsWindow = {
            tl: { radius: 0 },
            tr: { radius: 0 },
            bl: { radius: 10 },
            br: { radius: 10 },
            antiAlias: true
        }

        curvyCorners(cornerSettingsHeader, "." + msgWindowHeaderElementClassName);
        curvyCorners(cornerSettingsWindow, "." + msgContentElementClassName);
    }
    else {
        $('.' + msgWindowHeaderElementClassName).corner('top 10px');
        $('.' + msgContentElementClassName).corner('bottom 10px');
    }

    //IF IE
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) {
        var ieversion = new Number(RegExp.$1)

        //Fix ie z-index
        $("#MessageBoxBackground" + messageBoxContainer).attr("src", rc_contentUrl + "/EmptyBlack.html");
            
        //Fix background position
        if ($("body").height() < $(window).height()) {
            $("#MessageBoxBackground" + messageBoxContainer).height($(window).height());
            $("#MessageBoxBackground" + messageBoxContainer).width($(window).width());
        }
        else {
            $("#MessageBoxBackground" + messageBoxContainer).height($("body").height());
            $("#MessageBoxBackground" + messageBoxContainer).width($("body").width());
        }

        //Center messagebox
        $("#MessageBoxElement" + messageBoxContainer).center();

        //Accept messageBox size and position
        $(window).scroll(function () {
                
            //Fix background position
            if ($("body").height() < $(window).height()) {
                $("#MessageBoxBackground" + messageBoxContainer).height($(window).height());
                $("#MessageBoxBackground" + messageBoxContainer).width($(window).width());
            }
            else {
                $("#MessageBoxBackground" + messageBoxContainer).height($("body").height());
                $("#MessageBoxBackground" + messageBoxContainer).width($("body").width());
            }

            //Center messagebox
            if (ieversion < 8) {
                $("#MessageBoxElement" + messageBoxContainer).center();
            }

        });
    }
    else {
        //Fix background position
        if ($("body").height() < $(window).height()) {
            $("#MessageBoxBackground" + messageBoxContainer).height($(window).height() + 20);
            $("#MessageBoxBackground" + messageBoxContainer).width($(window).width() + 20);
        }
        else {
            $("#MessageBoxBackground" + messageBoxContainer).height($("body").height() + 20);
            $("#MessageBoxBackground" + messageBoxContainer).width($("body").width() + 20);
        }

        //Center messagebox
        $("#MessageBoxElement" + messageBoxContainer).center();
    }

    //Show MessageBox
    $("#MessageBoxElement" + messageBoxContainer).hide().fadeIn(1000);

    //Scroll to messagebox
    if (messageBoxType == "ok" || messageBoxType == 'ok/cancel' || messageBoxType == 'yes/no/cancel' || messageBoxType == 'yes/no') {
        //
    } else {
        $('html, body').animate({ scrollTop: $("#MessageBoxElement" + messageBoxContainer).position().top - 100 }, 0);
    }

    //focus default button
    if (messageBoxType == "ok" || messageBoxType == "ok/cancel") {
        $('#MessageBox_OK' + messageBoxContainer).focus();
    }
    if (messageBoxType == "yes/no/cancel" || messageBoxType == "yes/no") {
        $('#MessageBox_Yes' + messageBoxContainer).focus();
    }

    //On keyup
    if (messageBoxType != "none" && messageBoxType != "wait") {
        $(document).keyup(function (e) {
            if (e.keyCode == 27) { DisposeMessageBox(); }   // esc
        });
    }

    return messageBoxContainer;
}


function DisposeMessageBox() {
    $('#MessageBoxBackground' + messageBoxContainer).fadeOut(0, function () {
        $('#MessageBoxBackground' + messageBoxContainer).remove();
        $('#MessageBoxElement' + messageBoxContainer).hide(0, function () {
            $('#MessageBoxElement' + messageBoxContainer).remove();
        });
    });
    $('#MessageBoxElement' + messageBoxContainer).remove();
    $('#MessageBoxBackground' + messageBoxContainer).remove();
    messageBoxContainer--;
}
function OnOKClick(funcName) {
    DisposeMessageBox();
    if (funcName != "") {
        eval(funcName);
    }
}

function OnYesClick(funcName) {
    DisposeMessageBox();
    if (funcName != "") {
        eval(funcName);
    }
}

function OnNoClick(funcName) {
    DisposeMessageBox();
    if (funcName != "") {
        eval(funcName);
    }
}

function OnCancelClick(funcName) {
    DisposeMessageBox();
    if (funcName != "") {
        eval(funcName);
    }
}

