
$(document).ready(function() {
    //$('.dialogbox').dialogbox();

    $("body").delegate("a.dialogbox", "click", function() {
        Dialogbox($(this)); 
        return false;
    });

});


Dialogbox = function(invoker, opts) {
    
    var url = invoker.attr('href');
    var dialog_object = null;    
    var dialog_id = 'dialog-' + new Date().getTime();
    $.ajax({
	    type : 'GET',
	    url : url,
	    dataType : 'html',
	    beforeSend: function() {
		    dialog_object = $('<div><span class="loading"></span></div>').dialog({
                resizable: false,
                width: '500px',
                title: 'loading...',
                open: function() {
                    $('.ui-dialog-titlebar').removeClass('ui-corner-all');
                },
                close: function() {
                    dialog_object.dialog('destroy');
                    dialog_object.remove();
                } 
            });
            dialog_object.attr('id', dialog_id);

	    },
	    success : function(content) { 
            var func = set_content(dialog_object);    
            func(content);   
        }
         
    });
    // -------------------------------------------------------------------------

    var set_content = function(dialog_object) {
        var dialog_object = dialog_object;
        
        return function(content) {
            var html_obj = $(content);
            html_obj.css('display', 'none');
            var title = html_obj.find('.dialog_header').html();
            dialog_object.html(html_obj);
            
            var width = dialog_object.children().width();
            dialog_object.dialog('option', 'width', parseInt(width) + 32);
            //dialog_object.dialog("option", "position", "center");
            dialog_object.dialog("option", "title", title);
            
            html_obj.css('display', 'block');
            
            init_forms(dialog_object, opts);        
            init_links(dialog_object);        
        }
        
    }


    var init_forms = function(dialog_object) {
        var forms = dialog_object.find('form.ajax');
        forms.unbind('submit');
         
        forms.ajaxForm({
            update: set_content(dialog_object),
        }); 

        
    }

    var init_links = function(dialog_object) {
        dialog_object.parent().find('a.dialoglink').click(function() {
            var url = $(this).attr('href');
            var invoker = $(this);        
            $.ajax({
		        type : 'GET',
		        url : url,
		        dataType : 'html',
		        beforeSend: function() {
			        dialog_object.find('.dialog_content').html('<div><span class="loading"></span></div>');
		        },
		        success : function(content) {
                    var func = set_content(dialog_object);    
                    func(content); 
                    if (invoker.hasClass('reload_page'))
                        $(document).trigger('reload_page');
                    
                    //Dialogbox.set_content(dialog_object, content);             
                }
            });       
            
            return false;
        });

    }
}


Dialogbox.set_content = function(dialog_object, opts) {
    var dialog_object = dialog_object;
    var opts = opts;
    return function(content) {
        var html_obj = $(content);
        html_obj.css('display', 'none');
        var title = html_obj.find('.dialog_header').html();
        dialog_object.html(html_obj);
        
        var width = dialog_object.children().width();
        dialog_object.dialog('option', 'width', parseInt(width) + 32);
        //dialog_object.dialog("option", "position", "center");
        dialog_object.dialog("option", "title", title);
        
        html_obj.css('display', 'block');
        
        Dialogbox.init_forms(dialog_object, opts);        
        Dialogbox.init_links(dialog_object);        
    }
    
}




Dialogbox.init_forms = function(dialog_object, opts) {
    var forms = dialog_object.find('form.ajax');
    forms.unbind('submit');
    
    var form_opts = {
        update: Dialogbox.set_content(dialog_object),
    };   
        
        
   
    forms.ajaxForm(form_opts); 

    
}


Dialogbox.init_links = function(dialog_object) {
        
    dialog_object.parent().find('a.dialoglink').click(function() {
        var url = $(this).attr('href');
        var invoker = $(this);        
        $.ajax({
		    type : 'GET',
		    url : url,
		    dataType : 'html',
		    beforeSend: function() {
			    dialog_object.find('.dialog_content').html('<div><span class="loading"></span></div>');
		    },
		    success : function(content) {
                var func = Dialogbox.set_content(dialog_object);    
                func(content); 
                if (invoker.hasClass('reload_page'))
                    $(document).trigger('reload_page');
                
                //Dialogbox.set_content(dialog_object, content);             
            }
        });       
        
        return false;
    });

}





/*
    
Dialogbox.set_content_func = function(dialog_object, content) {
    content = content.replace('%id%', dialog_object.attr('id'));  
    

    var html_obj = $(content);
    var title = html_obj.find('.dialog_header').html();
    dialog_object.html(content);
    var width = $(dialog_object.children()[0]).css('width').split('px')[0];
    var width = $($(dialog_object.children()[0])).width();
    dialog_object.dialog('option', 'width', parseInt(width) + 40);
    dialog_object.dialog("option", "position", "center");
    dialog_object.dialog("option", "title", title);

    Dialogbox.init_links(dialog_object); 
    
       
}
*/




