/**
 * Dialog
 *
 * @author Boz
 * @classDescription This is the MDP JavaScript app template.  It contains most all elements of our coding style preferences.
 **/

mdp.app.Dialog = function(msg,options) {
    /* ---[ CLASS VARIABLES ]--- */
    var options = options || {};
    var settings = {
        position:"center",
        offsetX:0,
        offsetY:0,
        width:200,
        height:200,
        coverAll:false,
        specialClass:null,
        onShow:function(){}
    };
    $.extend(settings,options);
    settings.onShow = options.onShow || function(){};

    /* public */

    /* private */

    /* ---[ CONSTRUCTOR ]--- */
    function dialog() {

        var mdpdialog = $("#mdpdialog").length > 0? $("#mdpdialog") : $("<div>").attr({"id":"mdpdialog","class":"share-dialog"});
        mdpdialog.addClass("activated");
        if(settings.specialClass!=null){
            mdpdialog.addClass(settings.specialClass);
        }
        if(settings.coverAll){
            mdpdialog.addClass("coverall");
        }

        var coords;
        switch(settings.position){
            case "center":
                coords = {
                    x:Math.ceil(($(window).width()/2) - (settings.width/2) + settings.offsetX),
                    y:Math.ceil(($(window).height()/2) - (settings.height/2) + settings.offsetY)
                };
            break;
            case "left":
                coords = {
                    x:settings.offsetX,
                    y:Math.ceil(($(window).height()/2) - (settings.height/2) + settings.offsetY)
                };
            break;
            case "right":
                coords = {
                    x:Math.ceil(($(window).width()) - (settings.width) + settings.offsetX),
                    y:Math.ceil(($(window).height()/2) - (settings.height/2) + settings.offsetY)
                };
            break;
            case "bottom":
                coords = {
                    x:Math.ceil(($(window).width()/2) - (settings.width/2) + settings.offsetX),
                    y:Math.ceil(($(window).height()) - (settings.height) + settings.offsetY)
                };
            break;
            case "top":
                coords = {
                    x:Math.ceil(($(window).width()/2) - (settings.width/2) + settings.offsetX),
                    y:settings.offsetY
                };
            break;
        }
        if(mdp.util.log){mdp.util.log("x:"+coords.x + " , y:" + coords.y);}
        mdpdialog.html('<div class="dialog-fixed"><div style="top:'+coords.y+'px; left:'+coords.x+'px; width:'+settings.width+'px; height:'+settings.height+'px;" class="dialog-wrapper"><div id="dialogclose"><span>X</span></div><div class="dialog-border"><div id="dialogmsg" class="dialog-msg"></div></div></div></div>');

        $(document.body).append(mdpdialog);

        $('#dialogclose').click(function(){
            $("#mdpdialog").remove();
        });

        mdp.sharebarItems   = $('body:first').find('div[id^=sb]');
        mdp.dialogParent = $('.dialog-fixed:first');

        $('body:first').unbind("click").click(function(e){
            if ($('#mdpdialog').length > 0) {
                var closeDialog = true;
                var target = e.target;
                if(target == undefined) target = event.srcElement;
                var hasThisChild = $.contains(mdp.dialogParent[0],target);
                var mdpdialog = $("mdpdialog");

                if(!hasThisChild[0] ) {
                    if (mdpdialog.hasClass("activated")){
                        mdpdialog.removeClass("activated");
                    } else {
                        mdpdialog.remove();
                    }
                }

            }
        });

        var msgdiv = $("#dialogmsg");
        if(typeof(msg) == "string"){
            msgdiv.html(msgdiv.html() + msg);
        }
        else{
            msgdiv.append(msg);
        }

        settings.onShow();
    }

    /* ---[ RUN ]--- */
    dialog();
};
