YAHOO.namespace("fxc.container.dialogs");

D = YAHOO.fxc.container.dialogs;
D.baseURL = "./?dialogid=";
D.namePref = "dialog-";
D.className = "dialog";
D.rootNodeName = "main";
D.key = null;
D.data = {};
D.items = {};
D.itemsRE = new RegExp(encodeRE(D.namePref) + '([\\w\\-]+)', 'i');

D.handleSuccess = function(o)
{
    if (o.responseText !== undefined) {
        D.data[D.key] = eval(o.responseText);
        if (D.data[D.key]) D.setDialog(D.key);
    }
}

D.callback =
{
    success:D.handleSuccess,
    failure:null
};

D.getDialog = function(o)
{
    if (typeof D.dialog == undefined) return;

    var key = this.getAttribute("dlgKey");
    if (key) {
        if (!D.data[key]) {
            D.key = key;
            //D.dialog.setBody("...");
            var request = YAHOO.util.Connect.asyncRequest('GET', D.baseURL + key, D.callback);
        } else {
            D.setDialog(key);
        }
    }
}

D.setDialog = function(key)
{
    if (typeof D.data[key].header != undefined) D.dialog.setHeader(D.data[key].header);
    if (typeof D.data[key].body != undefined) D.dialog.setBody(D.data[key].body);
    if (typeof D.data[key].config != undefined) {
        D.data[key].config = eval(D.data[key].config);
        for (i in D.data[key].config) {
            D.dialog.cfg.queueProperty(i, D.data[key].config[i]);
        }
    }
    D.dialog.render();
    D.dialog.show();
}

D.getItems = function(el) {
    var className = el.className.toLowerCase();
    if (-1 != className.indexOf(D.namePref.toLowerCase())) {
        var match = className.match(D.itemsRE);
        if (match && match[1]) {
            el.setAttribute("dlgKey", match[1]);
            return true;
        }
    }
    return false;
}

D.initDialog = function()
{
    D.items = YAHOO.util.Dom.getElementsBy(D.getItems, "", D.rootNodeName);
    
    YAHOO.util.Dom.addClass(D.items, D.className);

    var dlg = document.createElement("div");
    dlg.setAttribute("id", "dlg");
    YAHOO.util.Dom.get(D.rootNodeName).appendChild(dlg);
    
    D.dialog = new YAHOO.widget.Dialog(dlg.id, {
        fixedcenter:true,
        constraintoviewport:true,
        //modal:true,
        width:"250px",
        //buttons:[{text:"Yes"}],
        visible:false
    });

    YAHOO.util.Event.addListener(D.items, "click", D.getDialog);
}

YAHOO.util.Event.addListener(window, "load", D.initDialog);
