/**
 * Tekora Dialog
 * Created by JetBrains PhpStorm.
 * User: Nikita
 * Date: 11.09.11
 * Time: 21:32
 */

TekoraDialog = {

    mainBlock : null,
    rootPath : null,
    resultBlock : null,

    init: function(sSelector, rootPath){

        this.mainBlock = $(sSelector);
        this.rootPath = rootPath;

        var data = {};
        data["autoOpen"] = false;
        data["resizable"] = false;
        data["modal"] = true;
        data["draggable"] = false;
        this.mainBlock.dialog(data);

        this.mainBlock.prev().append('<div class="small-logo"><img width="163" height="37" alt="Small Tekora logo" src="' +
            this.rootPath + '/images/logo-small.png" class="logo-small"></div>');

        this.resultBlock = $('<div class="notify-message"><p></p></div>');
        this.mainBlock.after(this.resultBlock);
    },

    loadPage: function(page, data){
        data["page"] = page;
        $.post(data['href'], data, TekoraDialog.loadPageCallback);
    },

    loadPageCallback: function(html){
        TekoraDialog.mainBlock.html(html);
        TekoraDialog.mainBlock.dialog("open");
        $.scrollTo($("body"), 800);
    },

    executeAction: function(page, data, callback){
        data["page"] = page;
        $.post("/ajax.php", data, function(oResult){TekoraDialog.executeActionCallback(oResult, callback)});
    },

    executeActionCallback: function(oResult, callback){
        if (typeof(callback) == "undefined")
            return;

        try{
            oResult = $.parseJSON(oResult);
            oResult.success = !( typeof(oResult.success) == "undefined" || oResult.success == "false");
            callback(oResult);
        }catch(ex){
            oResult = {};
            oResult.success = false;
            oResult.text = "An error occurred, please try again later";
            callback(oResult);
        }
    },

    setErrorMessage: function(sText){
        TekoraDialog.resultBlock.find("p:first-child").html(sText);
		TekoraDialog.resultBlock.find("p:first-child").removeClass("good");
		TekoraDialog.resultBlock.find("p:first-child").addClass("bad");
        TekoraDialog.resultBlock.show();
        $("body").click(TekoraDialog.hideMessage);
    },

    setInformMessage: function(sText){
        TekoraDialog.resultBlock.find("p:first-child").html(sText);
		TekoraDialog.resultBlock.find("p:first-child").removeClass("bad");
		TekoraDialog.resultBlock.find("p:first-child").addClass("good");
        TekoraDialog.resultBlock.show();
        $("body").click(TekoraDialog.hideMessage);
    },

    hideMessage: function(){
        TekoraDialog.resultBlock.hide();
        if (TekoraDialog.resultBlock.find("p:first-child").hasClass("good"))
            TekoraDialog.mainBlock.dialog("close");
        $("body").unbind("click", TekoraDialog.hideMessage);
    },

    initLoadPageButton: function(sSelector, aParams){
        $(sSelector).click(function(){
            data = {};

            if ( typeof($(this).data("height")) != "undefined")
                data["height"] = $(this).data("height");
            if ( typeof($(this).data("width")) != "undefined")
                data["width"] = $(this).data("width");
            if ( typeof($(this).data("title")) != "undefined")
                data["title"] = $(this).data("title");



            TekoraDialog.mainBlock.dialog(data);

            data = {};
            if ( typeof(aParams) != "undefined")
                for (var key in aParams)
                    data[aParams[key]] = $(this).data(aParams[key]);

            data["href"] = $(this).attr("href");

            TekoraDialog.loadPage($(this).data("page"), data);
            return false;
        });
    }

};
