window.i3.popup = {iterator: 0, array: [], url: [], defaults: {title: ''}}

window.i3.popup.displayLoader = function(message, options)
{
    if (!options)
        options = {};
    
    if ($('.popup.loader').length > 0)
        $('.popup.loader').dialog('destroy').remove();
    
    return i3.popup.displayPopup({
        'message': "<img src='/_ui/media/general/loader.gif'><div class='loaderMessage'>"+(message ? message : "Please wait while content is loaded")+"</div>",
        'title': false,
        'class': "loader",
        options: options
    });
}

window.i3.popup.displayPopup = function(options, callback)
{
    if (!options)
        options = {};
        
    if (options.onbeforeopen)
         options.onbeforeopen();
         
    if (options.open)
        options.onopen = options.open;
        
    if (options.close)
        options.onclose = options.close;
        
    if (options.onbeforeclose && typeof(options.onbeforeclose) != 'function')
        options.onbeforeclose = i3.std.string.toFunction(options.onbeforeclose);
        
    if (options.onclose && typeof(options.onclose) != 'function')
        options.onclose = i3.std.string.toFunction(options.onclose);
        
    if (options.onopen && typeof(options.onopen) != 'function')
        options.onopen = i3.std.string.toFunction(options.onopen);
        
    var title = i3.std.def(options.title, i3.popup.defaults.title) || '';
    var id = options.id ? options.id : "popup-"+i3.popup.iterator;
    var message = options.message || '';
    var popup = i3.popup.array[i3.popup.iterator] = $("<div id='"+id+"' class='popup"+(options['class'] ? " "+options['class'] : "")+"'>"+message+"</div>'").dialog({
        autoOpen: true,
        show: 'drop',
        closeText: 'x',
        hide: 'drop',
        dialogClass: options.dialogClass,
        modal: i3.std.def(options.modal, true),
        title:  options.title == false || options.title == "false" || title.length == 0 ? null : title,
        resizable: options.title == false || options.title == "false" || title.length == 0 ? false : true,
        width:  i3.std.def(options.w, options.width, 'auto'),
        height: i3.std.def(options.h, options.height, 'auto'),
        beforeclose: function(ev)
        {
            if (options.onbeforeclose)
                options.onbeforeclose(popup);
        },
        close: function()
        {
            if ($('#'+id).dialog)
            {
                if (window.tinyMCE)
                $('#'+id).find('.tinyEditor').each(function()
                {
                    tinyMCE.execCommand('mceFocus', true, $(this).attr('id'));
                    tinyMCE.execCommand('mceRemoveControl', true, $(this).attr('id'));
                });
                
                
                $('#'+id+' *').remove();
                $('#'+id).dialog('destroy').remove();
                $('body > .ui-effects-wrapper').remove();
                
                if (options.onclose)
                    options.onclose(popup);
            }
        },
        open: function()
        {
            if ($('.popup.loader').length > 0)
                $('.popup.loader').dialog('destroy').remove();
            
            // to make sure that the popup is open
            window.setTimeout(function()
            {
                if (options.single)
                    while (i3.popup.array.length > 0)
                        $(i3.popup.array.pop()).dialog('close');
                
                i3.std.globalInherit(id);
                
                $(document.body).unbind("click.i3").bind("click.i3", function(ev)
                {        
                    if ($(ev.target).parents('#'+id+", .ui-widget, [id^=fancybox]").length == 0 && !$(ev.target).is("[id^=fancybox]") && $(ev.target).parents('body').length != 0)
                        $('#'+id).dialog('close');
                });
                
                if (options.onopen)
                    options.onopen(popup);
            }, 1);
        },
        buttons: options.buttons
    });
    
    if (options.title == false || options.title == 'false' || title.length == 0)
    {
         $('#'+id).parents('.ui-dialog').addClass('no-title');
         $('#'+id).siblings('.ui-dialog-titlebar').css('display','none');
    }
    
    if (options['class'])
        $(popup).parents('.ui-dialog').addClass(options['class']);
     
    if(options.callback)
        options.callback();
        
    if(callback)
        callback();
        
    i3.popup.iterator++;
    
    return popup;
}

window.i3.popup.displaySimplePopup = function(data, callback)
{
    if (data.template)
    {
        if (!data.params)
            data.params = {};
        
        data.params.template = data.template;
        
        $.ajax({
         url: "/pages_actions/std/cms_content.popup.php",
         type: 'POST',
         dataType: "html",
         data: i3.std.array.httpBuildQuery(data.params),
         success: function(response)
         {
             data.message = response;
             i3.popup.displayPopup(data, callback);
         }
        });
    }
    else
        i3.popup.displayPopup(data, callback);
}

window.i3.popup.displaySubmit = function(data, callback)
{
    data.buttons = {'Submit': function() 
    {
        $(this).dialog('close');
        
        if (data.submit)
            data.submit();
    }};

    i3.popup.displaySimplePopup(data, callback);
}

window.i3.popup.displaySimpleQuestion = function(data, callback)
{
    data.buttons = {'Yes': function() 
    { 
        $(this).dialog('close');
        
        if (data.yes) 
            data.yes(); 
            
    }, 'No': function()
    {
        $(this).dialog('close');
        
        if (data.no)
            data.no();
    }};
    
    i3.popup.displaySimplePopup(data, callback);
}

window.i3.popup.displayOptions = function(data, callback)
{
    data.message += "<br/><br/><select name='options'>";
    if (data.options)
    for(var i in data.options)
        data.message += "<option value='"+i+"'>"+data.options[i]+"</option>";
    data.message += "</select>";
    
    i3.popup.displaySubmit(data, callback);
}

window.i3.popup.displayTagFile = function(path, additional)
{
    if (!additional)
        additional = {};
    
    if (!additional.options)
        additional.options = ['describe','categorise','tag']
        
    $.getJSON('/pages_actions/std/cms_files_get_info.php',{src: path},function(data)
    {                        
        for (var index in additional)
            data[index] = additional[index];

        data.show = additional.options;
        i3.popup.displayDescribeForm(path, data);
    });
}

window.i3.popup.displayDescribeForm = function(file, data)
{
  var tagData = {title: 'Please describe your file', width: 440}
  tagData.message = "<form class='popUpForm'><div id='tagForm'><div class='tabs'>";
  
  for (var i=0; i<data.show.length; i++)
    tagData.message += "<span class='tab' rel='"+data.show[i]+"'><span class='transLightDarkktopLeft'></span><span class='transLightDarkktopRight'></span>"+data.show[i]+"</span>";
  
  tagData.message += "<span class='clearAll'></span></div><div class='content'>";
  
  if (inArray('describe', data.show))
  {
      var describe = "<div id='describe' class='hidden'><p><label class='bWidth'>File title: </label><input class='txtF' type='text' name='title' value='"+data.title+"'></p><p><label class='bWidth'>File description: </label><textarea style='height: 200px;' class='txtA' name='description'>"+data.description+"</textarea></p></div>";
      tagData.message += describe;
  }
  
  if (inArray('categorise', data.show))
  {
      var categorise = "<div id='categorise' class='hidden'><p><label class='bWidth'>Category: <br /><small>Hold ctrl+click to select multiple</small></label> <div style='overflow: auto; height: 300px'>"+data.categories+"</div></p></div>";
      tagData.message += categorise;
  }
  
  if (inArray('tag', data.show))
  {
      var tag = "<div id='tag' class='hidden'><p><label class='bWidth'>Tag: </label><textarea name='tags' style='height:200px;' class='txtA'>"+data.tags+"</textarea></div></p>";
      tagData.message += tag;
  }
  
  tagData.message += "</div></div></form>";
  
  tagData.submit = function()
  {
    var title = $('#tagForm').find('[name=title]').val();
    var description = $('#tagForm').find('[name=description]').val();
    var tags = $('#tagForm').find('[name=tags]').val();
    var categories = $('#tagForm').find('[name^=categories]').val();
    var category = "";
    
    if (title != data.title || description != data.description || data.changed)
    i3.popup.updateFileInfo({title: title, description: description, "categories[]": categories, tags: tags}, file, function()
    {
        if (data.submit)
            data.submit();
    });
  };
  
  tagData.close = function()
  {
      if (data.close)
        data.close();
  }      
  
  i3.popup.displaySubmit(tagData);
  
  // actions performed after showing the dialog
  $('#tagForm').find('[name^=categories], [name=tags]').change(function()
  {
      data.changed = true;
  });
  
  $('#tagForm').find('.tab').click(function()
  {
      $('#tagForm').find('.tab.selected').removeClass('selected');
      $(this).addClass('selected');
      
      $('#tagForm .content > div').hide();
      $('#tagForm').find("#"+$(this).attr('rel')).show();
  });
  
  $('#tagForm .tab:first').addClass('selected');
  $('#tagForm .tab.selected').click();
}

window.i3.popup.updateFileInfo = function(data, path, callback)
{
    data.action = "update_file_info";
    data.path = path;
    
    $.ajax({
         url:'/admin/cms/magicfm/',
         type: 'POST',
         dataType: 'json',
         data: i3.std.array.httpBuildQuery(data),
         success: function(data)
         {
            if (callback)
                callback(data)
         }});
}

window.i3.popup.confirmPopup = function(e, handler, callback)
{
    try
    {
        if (e)
            e.preventDefault();
            
        $(handler).after('<div class="confirm_dialog" id="DelDialog" style="display:none"><p></p></div>');
        var path = i3.std.def($(handler).data('url'),handler.href);
        var dialog = $(handler).siblings('.confirm_dialog');
        dialog.attr('title',handler.title);

        var cancel = $(handler).attr('cancel') ? $(handler).attr('cancel') : 'Cancel';
        var confirm = $(handler).attr('confirm') ? $(handler).attr('confirm') : 'Confirm';
        var question = $(handler).attr('question') ? $(handler).attr('question') : 'Do you want to delete ' + ($(handler).attr('rel') ? $(handler).attr('rel') : '') + '?';

        dialog.children().append(question);

        var buttons = {};
        buttons[confirm] = function () {
            if (callback)
                callback();
            else
            {
                var loc = String(window.location);
                var sub = escape(loc.substring(loc.indexOf('/',7))); // url without http:// and escaped
                var where = path + (path.indexOf('?') == -1 ? '?' : '&') + 'location='+sub;
                window.location = where;
            }
            
            $(this).dialog('close');
            $(this).remove();
            $('.confirm_dialog').remove();
        };

        buttons[cancel] = function () {
            $(this).dialog('close');
            $(this).remove();
            $('.confirm_dialog').remove();
        };

        dialog.dialog({
            autoOpen: true,
            show: 'drop',
            resizable: false,
            minHeight: 140,
            modal: true,
            title: $(handler).attr('title') ? $(handler).attr('title') : 'Please confirm',
            overlay: {
              backgroundColor: '#000',
              opacity: 0.5
            },
            buttons: buttons
        });
        $('.ui-dialog-content').show();
    }
    catch(ex)
    {
        window.alert(ex);
    }
}


window.i3.popup.contextPopup = function(e, handler)
{
    if (e) e.preventDefault();
    
    var question = $(handler).attr('question') || "";
    var content = $(handler).attr('content') || "";
    var name = $(handler).attr('name') || "contextForm";
    var vars = "";
    
    if ($(handler).attr('variables'))
    {
        var variables = window.JSON ? JSON.parse($(handler).attr('variables')) :  i3.std.string.toObject($(handler).attr('variables'));
        for (var i=0; i<variables.length; i++)
            for (var index in variables[i])
                vars += "<input type='hidden' name='"+index+"' value='"+variables[i][index]+"'/>";
    }
    
    var data = {title: $(handler).attr('title'), message: "<div>"+question+"</div><form name='contextForm' method='post'><textarea name='content'>"+content+"</textarea><input type='hidden' name='"+name+"' value='true'/>"+vars+"</form>", submit: function()
    {
        $("[name=contextForm]").submit();
    }};
    
    i3.popup.displaySubmit(data);
}

//

window.i3.popup.assignPopup = function(object, params, options)
{
    try
    {
        for (var i=0; i<object.length; i++)
        {
            var url = $(object[i]).attr('href');
            if(!url)
                return;

            if (url.indexOf('?')!=-1)
                object[i].url = url.split('?')[0];
            else
                object[i].url = url;
            
            object[i].data = new Object();
            if (url.indexOf('?')!=-1)
                $.extend(object[i].data, i3.std.string.unserialize(url.split('?').pop()));
            
            if ($(object[i]).attr('params'))
                $.extend(object[i].data, i3.std.string.toObject($(object[i]).attr('params')));

            if (params)
                $.extend(object[i].data, params);
            
            object[i].options = new Object();
            if ($(object[i]).attr('rel'))
                $.extend(object[i].options, i3.std.string.toObject($(object[i]).attr('rel')));
                
            if (options)
                $.extend(object[i].options, options);
            
            $(object[i]).attr('href','#').removeAttr('params').removeAttr('rel');
            $(object[i]).unbind('click').click(function(ev)
            {
                ev.preventDefault();
                i3.popup.displayAdvancedPopup(this.url, this.data, this.options);
            });
        }
    }
    catch(e)
    {
        window.alert(e);
    }
}


window.i3.popup.ajaxValueCheck = function(obj, data, type)
{
    $(obj).find('input, textarea, select').each(function()
    {
        if ($(this).hasClass('error_red'))
        {
            $(this).removeClass('error_red');
            $(this).next().remove();
        }
        
        $(this).blur();
    });

    if (data.error == 1)
    {
        for (var index in data)
        {
            var msg = new Array();
            var sug = new Array();
            
            for (var error in data[index])
            {
                if (error != '__suggestion') 
                    msg.push(data[index][error]);
                else
                    sug.push(data[index][error]);
            }    
            
            var fields = $(obj).find('input[name='+index+'], textarea[name='+index+'], select[name='+index+']');
            if ($(fields).length == 0)
                fields = $(obj).find('input[name^='+index+'], textarea[name^='+index+'], select[name^='+index+']');
            
            $(fields).each(function()
            {
                $(this).addClass('error_red').after('<p class="error err">* '+msg.join(", ")+'</p>');
                if (sug.length > 0)
                    $(this).val(sug.join(", "));
            });
        }
        
        $('.tabWorks').each(function()
        {
            if ($(this).find('.error').length)
                $('[href=#'+$(this).attr('id')+']').click();
        });
    }
    else
    {
        $(obj).find("input[name=popup]").remove();
        $(obj).unbind('submit');
                
        var submit = $(obj).find("input").filter(function(){ return $(this).attr('type') == 'submit' });
        
        if ($(obj).find("[name="+submit.attr('name')+"]").length == 1)
            $(obj).append("<input type='hidden' name='"+submit.attr('name')+"' value='"+submit.val()+"'/>");

        $(obj).submit();
    }
}

window.i3.popup.ajaxValidate = function(obj, type)
{
    
    if (window.tinyMCE)
    $(obj).find('.tinyEditor').each(function()
    {        
        tinyMCE.execCommand('mceAddControl', true, $(this).attr('id'));
        tinyMCE.triggerSave();
    });
    
    var params = new Object();    
    $(obj).find("[name]").each(function()
    {
        if (!$(this).attr('disabled') && ($(this).attr('type') == 'checkbox' ? $(this).attr('checked') : true) && ($(this).attr('type') != 'file'))
            params[$(this).attr('name')] = $(this).val();
    });
    params['output'] = false;
    
    var url = String($(obj).attr('action') ? $(obj).attr('action') : window.location);
    var input = $(obj).find('input, textarea, select').filter(function() { return $(this).attr('type') != 'file'});
    var files = $(obj).find('input').filter(function(){ return $(this).attr('type') == 'file'});
    
    // files
    if (files.length > 0)
    {
        // please do not alter these lines - they do not make sense, just like IE - PT
        if($.browser.msie)
        {
            var frame = null;
            if (parseFloat($.browser.version) < 9)
                frame = document.createElement("<iframe name='__dummy'/>");
            else
            {
                frame = document.createElement("iframe");
                frame.name = "__dummy";
                frame.setAttribute("name", "__dummy");
            }
            frame.setAttribute("src", "");
            frame.style.display = "none";
            document.body.appendChild(frame);
            
            var form = frame.contentWindow.document.createElement("form");
            form.setAttribute('action', url);
            form.setAttribute('method', 'POST');
            form.setAttribute('target', '__dummy');
            form.setAttribute('enctype', 'multipart/form-data');
            form.setAttribute('encoding', 'multipart/form-data');            
            frame.appendChild(form);
        }
        else
        {
            var frame = $("<iframe id='__dummy' name='__dummy' style='display: none'></iframe>");
            $(document.body).append(frame);
            
            var form = $("<form method='post' action='"+url+"' target='__dummy' enctype='multipart/form-data'></form>").appendTo(frame); 
        }
        
        $(form, frame.contentWindow.document).append("<input type='hidden' name='output' value='false'/>");
        
        // INSANE! - PT
        if($.browser.msie ? parseFloat($.browser.version) > 7 : true)
        {        
            var length = obj.elements.length;            
            var elements = obj.elements;
            
            for(var i=0; i<length; i++)
            {            
                var element = $(elements[i]);
                
                if (!$(element).is('fieldset') && $(element).attr('name'))
                {
                    switch($(element).attr('type'))
                    {
                        case 'radio':
                            if ($(element).is(":checked"))
                                $(form, frame.contentWindow.document).append("<input type='hidden' name='"+$(element).attr('name')+"' value='"+$(element).attr('value')+"'/>");
                        break;
                        
                        case 'submit':
                            $(form, frame.contentWindow.document).append("<input type='hidden' name='"+$(element).attr('name')+"' value='"+$(element).attr('value')+"'/>");
                        break;
                        
                        case 'file':
                            $(element).clone(true).insertBefore(element);
                            $(form).append(element.remove());
                        break;
                        
                        default:
                            $(element).clone(true).val($(element).val()).insertBefore(element);
                            $(form).append(element.remove());
                    }
                }
            }
        }
        
        $(form).submit();        
        $(frame).load(function()
        {
            var response = $(this).contents() && $(this).contents().text() ? i3.std.string.toObject($(this).contents().text()) : null;
            
            if (response)
            {
                if (response.data && response.data.callback ? i3.std.string.toFunction(response.data.callback)() !== false : true)
                    i3.popup.ajaxValueCheck(obj, response, type);                            
            }
            else
                console.log("i3.popup.js","Invalid JSON result in "+url);
        });
    }
    
    // posted data
    else if (input.length > 0)
    {
        $.ajax({
            url: url.substring(0, url.indexOf('#') != -1 ? url.indexOf('#') : url.length),
            data: params,
            type: "POST",
            dataType: 'json',
            success: function(response)
            {
                if (response)
                {
                    if (response.data && response.data.callback ? i3.std.string.toFunction(response.data.callback)() !== false : true)
                        i3.popup.ajaxValueCheck(obj, response, type);                            
                }
                else
                    console.log("i3.popup.js","Invalid JSON result in "+url);
            }
        });
    }
}

window.i3.popup.displayAdvancedPopup = function(url, params, options, callback)
{
     if (!params)
        params = {};

     if (!options)
        options = {};
        
     if (options.loader)
        i3.popup.displayLoader();
        
     if(!options.data_type)
        options.data_type = 'html';        

     if (options.onbeforeopen)
         options.onbeforeopen();
         
     if (options.open)
        options.onopen = options.open;
        
    if (options.close)
        options.onclose = options.close;
        
    if (options.onbeforeclose && typeof(options.onbeforeclose) != 'function')
        options.onbeforeclose = i3.std.string.toFunction(options.onbeforeclose);
        
    if (options.onclose && typeof(options.onclose) != 'function')
        options.onclose = i3.std.string.toFunction(options.onclose);
        
    if (options.onopen && typeof(options.onopen) != 'function')
        options.onopen = i3.std.string.toFunction(options.onopen);
        
    if (options.onaftersubmit && typeof(option.onaftersubmit) != 'function')
        options.onaftersubmit = i3.std.string.toFunction(options.onaftersubmit);
        
    if (i3.popup.url[url])
        return false;
        
    i3.popup.url[url] = true;
        
     params.popup = true;  
     $.ajax({
         url: url,
         type: 'GET',
         dataType: options.data_type,
         data: i3.std.array.httpBuildQuery(params),
         success: function(response)
         {
             i3.popup.url[url] = false;
             
             if (options.single)
                 while (i3.popup.array.length > 0)
                    $(i3.popup.array.pop()).dialog('close');
             
             if ($('.popup.loader').length > 0)
                $('.popup.loader').dialog('destroy').remove();
             
             var html = null;
             var scripts = null;
             response = i3.std.string.stripW(response);
             
             if(options.data_type == 'json')
                html = response.html;
             else
             {
                 if (response.length > 0)
                     switch(response)
                     {
                         case 'permission_denied': 
                         case 'session_timeout':
                         default: 
                            scripts = $(response).filter("script");
                            response = $("<jQfix/>"+response+"<jQfix/>").filter(":not(script, jQfix)");
                            
                            scripts = $(scripts).add($(response).find('script').remove());
                            
                            html = $('<div/>').html(response);
                     }
                 else
                    html = $('<div/>').html("No response");
             }
                
             var id = options.id ? options.id : "popup-"+i3.popup.iterator;
             var title = i3.std.def(options.title, i3.popup.defaults.title) || $(html).find('h1:first, h2:first').remove().html() || '';
             
             // fix for IE action on form bug
             var action = [];
             $(html).find("form").each(function()
             {
                 action.push($(this).attr('action'));
                 $(this).removeAttr('action');
             })
             
             var popup = i3.popup.array[i3.popup.iterator] = $("<div id='"+id+"' class='popup"+(options['class'] ? " "+options['class'] : "")+"'>"+$(html).html()+"</div>'").dialog({
                autoOpen: true,
                show: 'drop',
                closeText: 'x',
                hide: 'drop',
                modal: i3.std.def(options.modal, true),
                title:  options.title == false || options.title == 'false' || title.length == 0 ? null : title,
                resizable: options.title == false || options.title == "false" || title.length == 0 ? false : true,
                width:  i3.std.def(options.w, options.width, 'auto'),
                height: i3.std.def(options.h, options.height, 'auto'),
                beforeclose: function()
                {
                  if (options.onbeforeclose)
                    options.onbeforeclose(popup);
                },
                close: function()
                {
                    if ($('#'+id).dialog)
                    {
                        if (window.tinyMCE)
                        $('#'+id).find('.tinyEditor').each(function()
                        {
                            tinyMCE.execCommand('mceFocus', true, $(this).attr('id'));
                            tinyMCE.execCommand('mceRemoveControl', true, $(this).attr('id'));
                        });
                        
                        $('#'+id+' *').remove();
                        $('#'+id).dialog('destroy').remove();
                        $('body > .ui-effects-wrapper').remove();                        

                        if (options.onclose)
                            options.onclose(popup);
                    }
                },
                open: function()
                {                    
                    // to make sure that the popup is open
                    window.setTimeout(function()
                    {
                        i3.std.globalInherit(id);
                        
                        $(document.body).unbind("click.i3").bind("click.i3", function(ev)
                        {
                            if ($(ev.target).parents('#'+id+", .ui-widget, [id^=fancybox]").length == 0 && !$(ev.target).is("[id^=fancybox]") && $(ev.target).parents('body').length != 0)
                                $('#'+id).dialog('close');
                        });
                        
                        $("#"+id).find("form").each(function()
                        {
                            $(this).attr('action', action.pop());
                            if (options.validate != false && options.validate != 'false')
                            {
                                $(this).append("<input type='hidden' value='true' name='popup'/>");
                                $(this).bind("submit.i3", function(ev)
                                {
                                    if ($(this).find('[name=popup]').length > 0)
                                    {
                                        ev.preventDefault();
                                        window.i3.popup.ajaxValidate(this, options.type);
                                    }
                                });
                                
                                if (options.onsubmit)
                                    $(this).data('onaftersubmit', options.onsubmit);
                            }
                        });
                        
                        if (scripts && scripts.length > 0)
                            $('#'+id).append(scripts);
                    
                        if (options.onopen)
                            options.onopen(popup);
                    }, 1);
                }
            });
                            
            if (options.title == false || options.title == "false" || title.length == 0)
            {
                 $('#'+id).parents('.ui-dialog').addClass('no-title');
                 $('#'+id).siblings('.ui-dialog-titlebar').css('display','none');
            }
                        
            if (options['class'])
                $(popup).parents('.ui-dialog').addClass(options['class']);
             
            if(options.callback)
                options.callback();
                
            if(callback)
                callback();
                
            i3.popup.iterator++;
         }
    });
}

window.alert = function(string, options)
{
    if (!options)
        options = {};
    
    while (i3.popup.array.length > 0)
        $(i3.popup.array.pop()).dialog('close');
    
    var title = i3.std.def(options.title, i3.popup.defaults.title) || '';
    var id = options.id ? options.id : "popup-"+i3.popup.iterator;
    
    i3.popup.array[i3.popup.iterator] = $("<div id='"+id+"' class='alert'><div class='alertMessage'>"+string+"</div></div>'").dialog({
        autoOpen: true,
        show: 'drop',
        closeText: 'x',
        hide: 'drop',
        modal: true,
        title: options.title == false || options.title == "false" || title.length == 0 ? '' : title,
        close: function()
        {
            $('#'+id+' *').remove();
            $('#'+id).dialog('destroy').remove();
            $('body > .ui-effects-wrapper').remove();
        },
        open: function()
        {
            window.setTimeout(function()
            {
                $(document.body).unbind("click.i3").bind("click.i3", function(ev)
                {
                    if ($(ev.target).parents('#'+id+", .ui-widget, [id^=fancybox]").length == 0 && !$(ev.target).is("[id^=fancybox]") && $(ev.target).parents('body').length != 0)
                        $('#'+id).dialog('close');
                });
                
                if (options.onopen)
                    options.onopen(popup);
            }, 1);
        }});
        
    if (options.title == false || options.title == "false" || title.length == 0)
    {
         $('#'+id).parents('.ui-dialog').addClass('no-title');
         $('#'+id).siblings('.ui-dialog-titlebar').css('display','none');
    }
    
    i3.popup.iterator++;
}
