var arr_editFloaters = new Array();
var arr_gadgets = new Array();
var bit_hasGadgets = false;
var bit_gadget_sticky_menus = 0;
var int_gadgets_loaded = 0;
var int_gadgets_requested = 0;


var loadGadget = function(id, callbackFn, obj_get_vars) { /* {{{ */
	if (callbackFn == null) {
		callbackFn = function() {};
	}

	if (id == 0) {
		buildEmpty(callbackFn);
		return;
	}

	obj_data = {
		action		: 'getObject',
		objectid	: id,
		JSON		: '1'
	}

	if (typeof(obj_get_vars) != 'undefined') {
		$J.each(obj_get_vars, function(index, value) {
			obj_data[index] = value;
		});
	}

	int_gadgets_requested++;

	var obj_cont = $J(".gadget-" + id);
	obj_cont.html("<span>Loading...&nbsp;&nbsp;</span><img src=\"/education/graphics/v8/Icons/Global/v8_loading.gif\" />");

	$J.ajax({
		url		:	'/education/components/layout/ajax.layout.php',
		data	:	obj_data,
		success	:	function(data) {
			arr_gadgets[id] = data;
			if (arr_gadgets[id].status == "success") {
				bit_hasGadgets = true;
				obj_cont.empty();

				// append title
				if (arr_gadgets[id].pref && arr_gadgets[id].pref.title) {
					var str_title = arr_gadgets[id].pref.title.value;
					if (str_title && arr_gadgets[id].pref.show_title) {
						var obj_title = $J(document.createElement("div"));
						obj_title.addClass("gadget-title gadget-title-" + id);
						obj_title.text(str_title);
						obj_title.appendTo(obj_cont);
					}
				}

				// append style
				if (typeof arr_gadgets[id].css != "undefined") {
					if (arr_gadgets[id].css != "") {
						obj_style = $J('<style type="text/css">' + arr_gadgets[id].css + '</style>');
						$J("head").append(obj_style);
					}
				}

				// append html
				var obj_html = $J(document.createElement("div"));
				obj_html.addClass("gadget-content gadget-type-" + arr_gadgets[id].typestring);
				obj_html.html(arr_gadgets[id].html);
				obj_html.appendTo(obj_cont);

				// append js
				var head = document.getElementsByTagName('head')[0];
				if (typeof arr_gadgets[id].js != "undefined") {
					if (arr_gadgets[id].js != "") {
						var obj_script = document.createElement("script");
						obj_script.text = arr_gadgets[id].js;
						head.appendChild(obj_script);
					}
				}

			} else {
				obj_cont.addClass("gadget-0");
				obj_cont.removeClass("gadget-" + id);
				buildEmpty();
			}
			
			try {
				if (int_edit_mode_version == 2) {
					if (!arr_gadgets[id].nomenu) {
						bit_hide_settings = arr_gadgets[id].bit_hide_settings;
						bit_hide_delete = arr_gadgets[id].bit_hide_delete;
						bit_hide_move = arr_gadgets[id].bit_hide_move;
						if (arr_gadgets[id].bit_alt_menu && arr_gadgets[id].arr_alt_menu_def) {
							arr_alt_menu_def = arr_gadgets[id].arr_alt_menu_def;
						} else {
							arr_alt_menu_def = false;
						}
						addFloaterToGadget(id, obj_cont, bit_hide_settings, bit_hide_delete, bit_hide_move, arr_alt_menu_def);
					}
				}
			} catch(e) {}

			callbackFn();
			int_gadgets_loaded++;

			//window.setTimeout(function() {$J(document).trigger('refreshGadgetMenus');}, 500);
			pollGadgetsLoadedCheck(1);
			

			if (typeof bit_printer_friendly != "undefined") {
				if (bit_printer_friendly) {
					int_gadgets_loading--;
					if (int_gadgets_loading == 0) {
						window.print();
					}
				}
			}
		}
	});
} /* }}} */

var int_gadget_loader_timer = 0;
var bit_polling_gadget_loader = 0;
var pollGadgetsLoadedCheck = function(bit_reset_poll) {
	if (bit_reset_poll) {
		int_gadget_loader_timer = 10;
		if (!bit_polling_gadget_loader) {
			bit_polling_gadget_loader = 1;
			window.setTimeout(function() {pollGadgetsLoadedCheck();}, 100);
		}
		//console.log('loader_timer:', int_gadget_loader_timer, ', requested: ', int_gadgets_requested, ', loaded:', int_gadgets_loaded, ' -- reset');		
		return ;
	}
	int_gadget_loader_timer--;
	//console.log('loader_timer:', int_gadget_loader_timer, ', requested: ', int_gadgets_requested, ', loaded:', int_gadgets_loaded);

	if (int_gadget_loader_timer <= 0) {
		if (int_gadgets_requested == int_gadgets_loaded) {
			// All gadgets have loaded
			//console.log('all gadgets done!');

			$J(document).trigger('gadgetsLoaded');
			return ;
		}
	}

	window.setTimeout(function() {pollGadgetsLoadedCheck();}, 100);
}


var toggleGadgetMenus = function(bit_show) {
	if ((int_edit_mode_version == 2) && (bit_gadget_sticky_menus)) {
		for (i in arr_editFloaters) {
			try {
				if (bit_show) {
					arr_editFloaters[i].enable();
					arr_editFloaters[i].positionMenu();
				} else {
					arr_editFloaters[i].disable();
				}
			} catch (e) {

			}
		}
	}
}

var alignCellHeights = function() { /* {{{ */
	var obj_rows = $J(".row");
	$J.each(obj_rows, function(key, val) {
		var int_rowHeight = 0;
		var obj_gadgets = $J(val).find(".gadget");
		$J(obj_gadgets).css("height", "auto");
		$J.each(obj_gadgets, function(key2,val2) {
			var int_height = $J(val2).height();
			if (int_height >= int_rowHeight) {
				int_rowHeight = int_height;
			}
		});
		$J(obj_gadgets).css("height", int_rowHeight + "px");
	});
} /* }}} */

var addFloaterToGadget = function(id, obj_cont, bit_hide_settings, bit_hide_delete, bit_hide_move, arr_alt_menu_def) { /* {{{ */
	//var int_parentid = getIdFromContainer($J(".gadget-" + id).parent());
	var int_parentid = getParentFromGadget(obj_cont);
	
	if (arr_alt_menu_def) {
		var obj_editItems = arr_alt_menu_def;
	} else {
		var obj_editItems = {}
	}

	if (!bit_hide_delete) {
		obj_editItems.del = {
			label	:	"Delete",
			href	:	"javascript: JQModalConfirm('Are you sure you wish to remove this gadget from the page?', function() { removeGadget(" + id + ", " + int_parentid + "); })",
			icon	:	"/education/graphics/v8/EditDropDown/v8_DeleteContentBox.gif"
		}
	}
	
	if (!bit_hide_settings) {
		obj_editItems.set = {
			label	:	"Settings",
			href	:	"javascript: editGadget(" + id + ", " + int_parentid + ");",
			icon	:	"/education/graphics/v8/EditDropDown/v8_PageSetings.gif"
		}
	}

	if (!bit_hide_move) {
		obj_editItems.mvg = {
			label	:	"Move",
			events	:	{
				mousedown	:	beginGadgetSort,
				mouseup		:	endGadgetSort
			},
			icon	:	"/education/graphics/v8/EditDropDown/v8_SortNewsGroupBox.gif"
		}
	}
	try {
		if (int_edit_mode_version == 2) {
			if (arr_editFloaters[$J(obj_cont).attr("id")]) {
				arr_editFloaters[$J(obj_cont).attr("id")].detach();
			}
			if (!bit_hide_delete || !bit_hide_settings || !bit_hide_move || arr_alt_menu_def) {	
				arr_editFloaters[int_parentid + "-" + id] = new EditFloater(obj_editItems, obj_cont);
			}
		}
	} catch (e) {}
} /* }}} */

var addFloaterToLayout = function(id, bit_hide_delete, bit_hide_move) { /* {{{ */
	var obj_cont = $J(".gadget-" + id);
	var obj_editItems = {}

	if (!bit_hide_delete) {
		obj_editItems.del = {
			label	:	"Delete",
			href	:	"javascript: JQModalConfirm('Are you sure you want to delete this layout?', function() { removeLayoutFromPage(" + id + ");})",
			icon	:	"/education/graphics/v8/EditDropDown/v8_DeleteContentBox.gif"
		}
	}
	
	if (!bit_hide_move) {
		obj_editItems.mvl = {
			label	:	"Move",
			events	:	{
				mousedown	:	beginLayoutSort,
				mouseup		:	endLayoutSort
			},
			icon	:	"/education/graphics/v8/EditDropDown/v8_SortNewsGroupBox.gif"
		}
	}

	if (!bit_hide_delete || !bit_hide_move) {	
		new EditFloater(obj_editItems, obj_cont);
	}

} /* }}} */

var getLayoutInfoFromContainer = function(obj_container) { /* {{{ */
	var str_id = $J(obj_container).attr("id");
	var arr_id = str_id.split("p");
	arr_id[0] = arr_id[0].slice(1);

	var obj_info = {
		layout	:	Number(arr_id[0]),
		pos		:	Number(arr_id[1])
	};

	return obj_info;
} /* }}} */

var getIdFromContainer = function(obj_container) { /* {{{ */
	var str_id = $J(obj_container).attr("id");
	var arr_id = str_id.split("-");
	str_id = arr_id[1];

	return str_id;
} /* }}} */

var getIdFromGadget = function(obj_gadget) { /* {{{ */
	var str_class = $J(obj_gadget).attr("class");

	var arr_match = str_class.match(/(gadget-)(\d)+/);
	if (arr_match[0]) {
		return arr_match[0].split("-")[1];
	}
} /* }}} */

var getParentFromGadget = function(obj_gadget) { /* {{{ */
	var int_parentid;
	var bit_parentfound = false;
	var obj_cont = obj_gadget;

	while (!bit_parentfound) {
		var obj_cont = $J(obj_cont).parent();

		if ($J(obj_cont).hasClass("gadget")) {
			int_parentid = getIdFromGadget(obj_cont);
			bit_parentfound = true;
		} else if ($J(obj_cont).attr("id") == "content") {
			int_parentid = nDetailID;
			bit_parentfound = true
		}
	}

	return int_parentid;
} /* }}} */

var obj_exposeAPI;
var buildEmpty = function(callbackFn) { /* {{{ */
	if (callbackFn == null) {
		callbackFn = function() {};
	}

	var obj_emptys = $J(".gadget-0");
	$J.each(obj_emptys, function(key,val) {
		$J(val).empty()
		var obj_container = $J(document.createElement("div"));
		obj_container.addClass("gadget-type-empty");
		obj_container.addClass("ui-corner-all");
		obj_container.appendTo(val);
		
		try {
			if (int_edit_mode_version == 2) { // edit mode
				var obj_span = $J(document.createElement("span"));
				obj_span.text("Click here, then select a gadget from the toolbar to add content.");
				obj_span.appendTo(obj_container);
				obj_container.click(function() {
					obj_exposeAPI = obj_container.expose({
						api				:	true,
						zIndex			:	4500,
						opacity			:	0.5,
						onBeforeLoad	:	function() { emptyGadgetClick(val) },
						onClose			:	function() { returnToLayoutScribbon() }
					});
					obj_exposeAPI.load();
				});
			}
		} catch (e) {}

	});

	callbackFn();
} /* }}} */

var buildColumn = function(id, callbackFn) { /* {{{ */
	if (callbackFn == null) {
		callbackFn = function() {};
	}

	try {
		if (int_edit_mode_version == 2) { // edit mode
			var obj_cont = $J("#col-" + id);
			var obj_gadget = $J(".gadget-" + id);
			obj_gadget.click(function(e) {

				var obj_target = $J(e.target)
				if (obj_target.hasClass("col-add-text") || obj_target.hasClass("column-gadget")) {
					obj_exposeAPI = obj_gadget.expose({
						api				:	true,
						zIndex			:	4500,
						opacity			:	0.5,
						onBeforeLoad	:	function() { containerClick(obj_cont) },
						onClose			:	function() { returnToLayoutScribbon() }
					});
					obj_exposeAPI.load();
				}
			});
		}

		callbackFn();
	} catch (e) {}

} /* }}} */

// TODO to be added to some global file
var EditFloater = function(obj_items, obj_container) { /* {{{ */
	var scope = this;

	this.obj_container = obj_container;
	this.obj_floater;


	this.build = function(obj_items) {
		try {
			if (int_edit_mode_version == 2) {
				var obj_floater = $J(document.createElement("div"));
				var str_floater_class = "edit-floater";
				$J.each(obj_items, function(key,val) {
					if (val['transbg']) {
						str_floater_class = "edit-floater-trans";
					}
				});

				obj_floater.addClass(str_floater_class);
				$J(obj_floater).hide();
				$J.each(obj_items, function(key,val) {
					var obj_item = $J(document.createElement("div"));
					obj_item.addClass("edit-floater-item");
					obj_item.addClass(key);
					if (val.href) {
						var obj_a = $J(document.createElement("a"));
						obj_a.attr("href", val.href);
					} else {
						var obj_a = $J(document.createElement("span"));
					}

					if (val.events) {
						$J.each(val.events, function(key2,val2) {
							if (typeof(val2) == 'string') {
								eval('obj_a.bind("'+key2+'",'+val2+')');
							} else {
								obj_a.bind(key2,val2);
							}
						});
					}

					var obj_span = $J(document.createElement("span"));
					obj_span.text(val.label);
					obj_span.appendTo(obj_a);
					try {
						if (val.icon) {
							var obj_img = $J(document.createElement("img"));
							obj_img.attr("src", val.icon);
							obj_img.prependTo(obj_span);
						}
					} catch (e) {}
					
					try {
						if (val.sprite) {
							var obj_sprite = $J(document.createElement("div"));
							obj_sprite.css({
								'background-image'		: 'url("'+val.sprite.image+'")',
								'background-position'	: val.sprite.backpos,
								'width'					: val.sprite.width,
								'height'				: val.sprite.height,
								'float'					: 'left'
							});
							obj_sprite.prependTo(obj_span);
						}
					} catch (e) {}
	
					obj_a.appendTo(obj_item);
					obj_item.appendTo(obj_floater);
				});

				return obj_floater;
			}
		} catch (e) {}
	}

	this.attachTo = function(obj_container) {
		this.obj_container = obj_container;
		$J(this.obj_floater).prependTo(obj_container);

		this.enable();

		$J(scope.obj_container).mouseleave(function() {
			if (!bit_gadget_sticky_menus) {
				$J(scope.obj_floater).hide();
			}
		});
		if (bit_gadget_sticky_menus) {
			window.setTimeout(this.positionMenu, 500);
		}
		//this.positionMenu();
	}

	this.detach = function() {
		$J(this.obj_floater).detach();
	}

	this.enable = function() {
		$J(this.obj_container).mouseenter(function() {
			scope.positionMenu();
		});
	}

	this.positionMenu = function() {
		$J(scope.obj_floater).show();
		var obj_buttons = scope.obj_floater.find(".edit-floater-item");
		var int_width = 0;
		$J.each(obj_buttons, function(key,val) {
			int_width += $J(val).width();
		});
		$J(scope.obj_floater).css("width", int_width + 1);

		$J(scope.obj_floater).position({
			my			:	"right top",
			at			:	"right top",
			of			:	$J(scope.obj_container),
			collision	:	"none"
		});
	}

	this.disable = function() {
		$J(this.obj_floater).hide();
		$J(this.obj_container).unbind("mouseenter");
	}


	// constructor...
	this.obj_floater = this.build(obj_items);
	if (obj_container != null) {
		this.attachTo(obj_container);
	}
	if (!bit_gadget_sticky_menus) {
		this.obj_floater.hide();
	}
} /* }}} */

/** Gadget Resource Dependency  Manager {{{ **/

var GadgetsResourceManager = function () {};

GadgetsResourceManager.arr_file_state = {};
GadgetsResourceManager.arr_file_packages = {};
GadgetsResourceManager.arr_package_state = {};
GadgetsResourceManager.arr_package_files_ready = {};
GadgetsResourceManager.arr_pending_package_instance = {};
GadgetsResourceManager.State = function() {};
GadgetsResourceManager.State.REQUESTED = 1;
GadgetsResourceManager.State.LOADED = 2;
GadgetsResourceManager.State.FAILED = 3;


GadgetsResourceManager.request = function(obj_dependencies, callback) {
    //console.log("SRM Start");
    try {
    var str_package_name = obj_dependencies.pkg;
    var int_package_state = GadgetsResourceManager.arr_package_state[str_package_name];
    var int_dependency_count = 0;

    if (int_package_state == GadgetsResourceManager.State.REQUESTED) {
        //console.log("Package " + str_package_name + " is already requested, queuing callback");
        GadgetsResourceManager.addPendingPackageInstance(str_package_name, {callback: callback});
        return;
    }
    if (int_package_state == GadgetsResourceManager.State.LOADED) {
        //console.log("Package " + str_package_name + " is already loaded, calling callback");
        callback();
        return;
    }

    if (typeof GadgetsResourceManager.arr_package_state[str_package_name] == 'undefined') {
        GadgetsResourceManager.arr_package_state[str_package_name] = GadgetsResourceManager.State.REQUESTED;
    }

    $J.each(obj_dependencies.files, function (int_index, obj_file) {
        int_dependency_count++;
    });


    $J.each(obj_dependencies.files, function (int_index, obj_file) {
        var str_file = obj_file.name;
        var int_file_state = GadgetsResourceManager.arr_file_state[str_file];

        if (int_file_state == GadgetsResourceManager.State.REQUESTED) {
            if (typeof GadgetsResourceManager.arr_file_packages[str_file] == "undefined") {
                GadgetsResourceManager.arr_file_packages[str_file] = [];
            }
            GadgetsResourceManager.arr_file_packages[str_file].push([str_package_name, callback]);
            //console.log("Already requested: " + str_package_name + " - " + str_file + " Already Requested");
            return;
        }

        if ((int_file_state == GadgetsResourceManager.State.LOADED)) {

            if (typeof GadgetsResourceManager.arr_package_files_ready[str_package_name] == "undefined") {
                GadgetsResourceManager.arr_package_files_ready[str_package_name] = 0;
            }

            GadgetsResourceManager.arr_package_files_ready[str_package_name]++;

            if (GadgetsResourceManager.arr_package_files_ready[str_package_name] >= int_dependency_count) {
                //console.log("Package " + str_package_name + " ready");
                GadgetsResourceManager.arr_package_state[str_package_name] = GadgetsResourceManager.State.LOADED;
                callback();
            }

        } else {
            GadgetsResourceManager.arr_file_state[str_file] = GadgetsResourceManager.State.REQUESTED;

            var elm_script = document.createElement('script');
            elm_script.type = "text/javascript";
            elm_script.src = str_file;
            document.getElementsByTagName("head")[0].appendChild(elm_script);
            //console.log("Including script ", str_file);

            elm_script.onload = elm_script.onreadystatechange = function () {
                if (typeof this.readyState === "undefined" || /loaded|complete/.test(this.readyState)) {
                    elm_script.onload = elm_script.onreadystatechange = null;
                    GadgetsResourceManager.arr_file_state[str_file] = GadgetsResourceManager.State.LOADED;
                    //console.log("Finished loading ", str_file);
                    var packages = GadgetsResourceManager.arr_file_packages[str_file];
                    if (typeof packages == "undefined") {
                        packages = [[str_package_name, callback]];
                    } else {
                        packages.push([str_package_name, callback]);
                    }
                    $J.each(packages, function(k, obj_package_atom) {
						var str_package_name = obj_package_atom[0];
						var callback = obj_package_atom[1];

                        if (typeof GadgetsResourceManager.arr_package_files_ready[str_package_name] == "undefined") {
                            GadgetsResourceManager.arr_package_files_ready[str_package_name] = 0;
                        }

                        GadgetsResourceManager.arr_package_files_ready[str_package_name]++;

                        if (GadgetsResourceManager.arr_package_files_ready[str_package_name] >= int_dependency_count) {
                            //console.log("Package " + str_package_name + " ready");
                            GadgetsResourceManager.arr_package_state[str_package_name] = GadgetsResourceManager.State.LOADED;
                            callback();
                        }

                    });

                }
            }


        }
    });

    } catch (e) {
		alert("Resource Manager exception" + e);
        //console.log("Gadget ResourceManager exception: " , e);
    }

}

GadgetsResourceManager.addPendingPackageInstance = function(str_package, obj_instance) {
    if ((typeof GadgetsResourceManager.arr_pending_package_instance[str_package] == "undefined") 
        || (GadgetsResourceManager.arr_pending_package_instance[str_package]) == null) {
            GadgetsResourceManager.arr_pending_package_instance[str_package] = Array();
    }

    GadgetsResourceManager.arr_pending_package_instance[str_package].push(obj_instance);
    window.setTimeout(GadgetsResourceManager.checkPendingPackageInstances, 500);
}

GadgetsResourceManager.checkPendingPackageInstances = function() {
    var arr_packages = GadgetsResourceManager.arr_pending_package_instance;
    var bit_check_again = 0;

    //console.log("checking pending package instances");

    $J.each(arr_packages, function (str_package, arr_instances) {
        //console.log("package " + str_package + " state is " + GadgetsResourceManager.arr_package_state[str_package]);

        if ( GadgetsResourceManager.arr_pending_package_instance[str_package] == null) {
            // alrady executed all callbacks
        } else {
            if (GadgetsResourceManager.arr_package_state[str_package] == GadgetsResourceManager.State.LOADED) {
                //console.log("package " + str_package + " is ready");
                GadgetsResourceManager.arr_pending_package_instance[str_package] = null;
                $J.each(arr_instances, function (int_index, obj_instance) {
                    obj_instance.callback();
                });
            } else {
                bit_check_again = 1;
            }
        }
    });

    if (bit_check_again) {
        window.setTimeout( function() {window.setTimeout(GadgetsResourceManager.checkPendingPackageInstances, 500)}, 1);
    }

}
/* }}} */

getGadgetHashParams = function(int_gadget_id) { /* {{{ */
	var str_hash = window.location.hash;	
	str_hash = str_hash.substr(1);
	var arr_keyvalues = str_hash.split('&');

	var arr_params = [];
	var bit_found_gadget = 0;
	for (n = 0; n < arr_keyvalues.length; n++) {
		var str_key = arr_keyvalues[n].split('=')[0];
		var str_value = arr_keyvalues[n].split('=')[1];

		if (str_key == 'id') {
			if (bit_found_gadget == 0) {
			//console.log('Checking ' + str_value + ' == ' + int_gadget_id);
				if (str_value == int_gadget_id) {
					bit_found_gadget = 1;
					//console.log('gadget found!');
				}
			} else {
				bit_found_gadget = 0;
				break;
			}
		} else {
			if (bit_found_gadget) {
				//console.log('Adding k/v: ', arr_keyvalues[n]);
				arr_params[str_key] = str_value;
			}
		}
	}

	//console.log(arr_params);
	return arr_params;

} /* }}} */

modifyGadgetHashParams = function(int_gadget_id, arr_mods) { /* {{{ */

	var str_hash = window.location.hash;
	str_hash = str_hash.substr(1);
	var arr_keyvalues = str_hash.split('&');
	var str_new_hash = '';

	var arr_gadget_params = Array();
	var int_curr_gid = 0;

	// Convert browser params into an array
	for (n = 0; n < arr_keyvalues.length; n++) {
		var str_key = arr_keyvalues[n].split('=')[0];
		var str_value = arr_keyvalues[n].split('=')[1];
		
		if (str_key == 'id') {
			int_curr_gid = str_value;
			arr_gadget_params[int_curr_gid] = {};
		} else {
			if (int_curr_gid) {
				if (typeof str_value != 'undefined') {
					//console.log('key: ', str_key, 'value: ', str_value);
					arr_gadget_params[int_curr_gid][str_key] = str_value;
				}
			}
		}
	} // end for

	// Now merge that array with the mods passed in
	$J.each(arr_mods, function(str_mod_key, str_mod_val) {
		if (typeof arr_gadget_params[int_gadget_id] == 'undefined') {
			arr_gadget_params[int_gadget_id] = {};
		}
		arr_gadget_params[int_gadget_id][str_mod_key] = str_mod_val;
	});

	//console.log(arr_gadget_params);
	// Rebuild the hash string
	$J.each(arr_gadget_params, function(str_id, obj_params) {
		if (typeof obj_params != 'undefined') {
			str_new_hash += '&id=' + str_id;
			$J.each(obj_params, function(str_key, str_val) {
				str_new_hash += '&' + str_key + '=' + str_val;
			});
		}
	});
	//console.log(str_new_hash);

	window.location.hash = str_new_hash;

} /* }}} */


$J(document).bind('gadgetsLoaded', function (e) {
	
	$J(document).trigger('refreshGadgetMenus');

});

$J(document).bind('refreshGadgetMenus', function (e, bit_hide) {
	if (typeof int_edit_mode_version == "undefined") {
		return;
	}
	if (int_edit_mode_version == 2) {
		if (bit_gadget_sticky_menus) {
			for (i in arr_editFloaters) {
				try {
					if (!bit_hide) {
						arr_editFloaters[i].enable();
						arr_editFloaters[i].positionMenu();
					} else {
						arr_editFloaters[i].disable();
					}
				} catch (e) {

				}
			}
		}
	}
});

