var $toolboxes;
var $add_menu_item;
var active_toolbox = -1;
jQuery(function(){
    toolbox_init();
    if(jQuery('div.toolbox_container').length > 0){
        jQuery('a.toolbox_opener').css('display', 'inline');
        if(document.cookie.indexOf('tb=1') != -1) toolbox_toggle(jQuery('a.toolbox_opener')[0]);
    }
});

function toolbox_init(){
    $toolboxes = jQuery('div.toolbox_handle');
    $toolboxes.unbind('click');
        $toolboxes.click(function(e){
            e.stopPropagation();//this is here for the list_box div on the catalog pages. The entire div is clickable, so if we do not stop propogation you are sent on to th next page when you open a toolbox
            if (active_toolbox != -1) hideBox();
			if(jQuery(e.target).hasClass('toolbox_handle')){ //not sure why I put this in
                jQuery(jQuery(e.target).children()[0]).show().css('z-index',1000).parents('div.group_list_item,li.menu_item').css('z-index',999); // z-index modification is fix for IE 6/7, so that nothing covers the toolbox - YF
                active_toolbox = jQuery(e.target).children()[0];
		    }
	});
    $add_menu_item= jQuery('ul.top.menu li.admin_item');
    $add_menu_item.find('a').unbind('click').click(add_menu_item);
}
/**
 * refreshes toolbox.  to be used when an event causes additional toolboxes to be added
 */
function toolbox_refresh() {
    toolbox_init();
    if(jQuery('a.toolbox_opener').data.showing == 1){
        $toolboxes.css({'visibility':'visible'});
    } else {
        $toolboxes.css({'visibility':'hidden'});
    }
}
function toolbox_toggle(e){
    //$toolboxes.toggle(); //took a long time on big pages
    if(jQuery('a.toolbox_opener').data.showing == 1){
        $toolboxes.css({'visibility':'hidden'});
        $add_menu_item.hide();
        jQuery('.hidden_group, .new_group, .empty_group, .admin_item.menu_item').hide();
        jQuery('a.toolbox_opener').data.showing = 0;
        document.cookie = 'tb=0; ';
    } else {
        $toolboxes.css({'visibility':'visible'});
        $add_menu_item.show();
        jQuery('.hidden_group, .new_group, .empty_group, .admin_item.menu_item').show();
        jQuery('a.toolbox_opener').data.showing = 1;
        document.cookie = 'tb=1; ';
    }
    group_alt_rows_toggle();
    if (active_toolbox != -1) hideBox();
    jQuery(e).attr('title', jQuery(e).attr('title')[0] =='S'? 'Hide Toolboxes': 'Show Toolboxes');
}

function hideBox(){
    jQuery(active_toolbox).hide().css('z-index','').parents('div.group_list_item,li.menu_item').css('z-index','');
    }

/* assorted tools functions */

/**
 * menu item tool
 */
function add_menu_item(parent_id) {
    if (typeof(parent_id) != 'number') { //parent_id was not passed (called from frontend, from the menu itself)
        var $li_parent=jQuery(this).closest('li');
        if($li_parent.hasClass('admin_item')) {
            parent_id=$li_parent.attr('dbid');
        }
    }
    var cd = document.createElement('div');
    jQuery(cd).load('/menu_update.php?action=add_form&mid='+parent_id);
    var buttons = {};
    buttons[tg("Create Item")] = function(){
                if (validate_menu_form(jQuery(this))) {
                    jQuery(this).dialog('close');
                    post_ajax_form(jQuery(this).find('form'), true);
                }
            };
    buttons[tg("Cancel")] = function(){jQuery(this).dialog('close');};
    jQuery(cd).dialog({
        modal:true,
        title:tg('Add Menu Item'),
        width:'400px',
        buttons: buttons
    });
    return false;
}

/**
 * edit menu popup
 * @param object cur_el the current element
 */
function edit_menu_item(cur_el, no_drag) {
    if (typeof(cur_el) != 'number') { //actual id was not passed (called from frontend, from the menu itself)
        cur_el = jQuery(cur_el).parents('li').attr('dbid');
    }
    var cd = document.createElement('div');
    var url = '/menu_update.php?action=edit_form&mid='+cur_el;
    if(no_drag) {
        url += '&nodrag=1';
    }
    jQuery(cd).load(url);
    jQuery(cd).dialog({
        modal:true,
        title:tg('Edit Menu Item'),
        width:'400px',
        buttons:{
            "Save":function(){
                if (validate_menu_form(jQuery(this))) {
                    jQuery(this).dialog('close');
                    post_ajax_form(jQuery(this).find('form'), true);
                }
            },
            "Cancel":function(){jQuery(this).dialog('close');}
        }
    });
    return false;
}

/**
 * group description tool, from group catalog toolbox
 */
jQuery(init_group_description_editor);
function init_group_description_editor(){
    jQuery('.group_description_editor').click(function(){edit_group_description(this);});
}
function edit_group_description(e){
    var id_match = jQuery(e).attr('class').match(/group_id_(\d+)/);
    if(id_match==null) { // this is not a true group description editor
        return
    }
    var gid = id_match[1];
    if(typeof(gid) == 'undefined' || isNaN(gid) || gid < 1){
        return;
    }
    var cd = document.createElement('div');
    var url = '/admin/db_backend.php?action=group_description&gid='+gid;
    if(jQuery(e).hasClass('nb_description_edit')) {
        url += '&record_type='+'Name+Block';
    }
    jQuery(cd).load(url);
    jQuery(cd).dialog({
        modal:true,
        title:jQuery('.group_list_link', jQuery(e).parents('.product_list_box')).text(),
        width:'550px',
        buttons:{
            ok:function(){
                if(!jQuery('#group_description', cd).length){ // description has already been updated, and succes message has been displayed
                    jQuery(this).dialog('close');
                }
                else{
                    jQuery.post('/admin/db_backend.php?action=group_description&gid='+gid, jQuery('#group_description', cd), function(data){
                        jQuery(cd).html(data);
                    }, 'html');
                }
            },
            close:function(){jQuery(this).dialog('close');}
        }
    });
    //load content

}
function group_alt_rows_toggle() {
    if(jQuery('.row_even, .row_odd').length >0) {
        jQuery('.group_list_item:visible:odd').removeClass('row_even').addClass('row_odd');
        jQuery('.group_list_item:visible:even').removeClass('row_odd').addClass('row_even');
    }
}
