// abs_interface_1.5.0-7.js
// -------------------------------------------------------------------------------------------------
// Javascript functions to run the tabbed menu and floating promobox
// This depends on dmb0_lib_1.5.0-6.js (at /dmx/core/b0/js/dmb0_lib_1.5.0-6.js) for INFOTEXT ONLY
//
// Release    > 1.5.0-7
// Project    > dmClubNewYear08:S01_C35
// Changedate > 04-06-08
// Copyright  > (C) Digital Mail Limited (2005 - 2008)
// Author     > Richard Knight (RAK) for DML
// -------------------------------------------------------------------------------------------------

var sm; // Object modelling active sub-menu

var menu_show;

var dally = new Object();	// Stores timing dependent events for menu mouseovers
dally.state;				// Set to true if the user dallies on a main menu tab (as opposed to skimming over it)
dally.tab;					// Holds the id of the last main menu tab the user dallied on
dally.time = 500;			// Defines the minimum time that constitues 'to dally', in milliseconds
dally.wait = 50;			// Defines the time before a mousover causes a submenu to change, in milliseconds
dally.timout_id;			// The id returned by the setTimeout call that might hide the dally

var abs_layer_store = new Array(); // Stores references to DHTML objects
var abs_layer_count = 0;

var abs_editable = new Array(); // Stores IDs of editable DIVS

// -------------------------------------------------------------------------------------------------

function sub_menu_show(id)
{
	if (dally.next != undefined) clearTimeout(dally.next);
	if (dally.timeout_id != undefined) clearTimeout(dally.timeout_id);
	if (id != 'sub_menu_content')
	{
		dally.next = setTimeout('dally.next_visible = true; do_sub_menu_show(\'' + id + '\'); ', dally.wait);
	}
	else
	{
		dally.next = setTimeout('dally.next_visible = true; sub_menu_hide(); ', dally.wait);
	}
	dally.state = false;
	dally.timeout_id = setTimeout('dally.state = true; dally.tab = \'' + id + '\';', dally.time);
}

function do_sub_menu_show(id)
{
	if (sm != undefined && sm.visible) sm.style.display ='none';
	if (id != 'sub_menu_content')
	{
		sm = $(id);
		sm.style.display = 'block';
	}
	sm.visible = true;
}

function sub_menu_hide()
{
	if (sm == undefined || !sm.visible) return;
	sm.style.display = 'none';
	sm.visible = false;
}

function abs_do_they_dally()
{
	// If the cursor enters the submenu bar just moments after showing a submenu, revert to the previously visible submenu
	// 'just moments' is defined by dally.time
	clearTimeout(dally.next);
	clearTimeout(dally.timeout_id);
	if (!dally.state && dally.next_visible)
	{
		sub_menu_hide();
		if (dally.tab != undefined) do_sub_menu_show(dally.tab);
	}
	dally.next_visible = false;
	dally.state = true;
}

// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------

function abs_show_sidepage(id, x, y)
{
	// Show the sidepage with the DOM ID id, after assigning it to abs_later_store
	// If x AND y are NOT specified, position the sidepage (depending on the
	// vertical scroll position of the browser window) so it is on screen
	
	if (!$defined(abs_layer_store[id]))
	{
		abs_layer_store[id] = $(id);
		if (!$defined(x)) var x = abs_layer_store[id].getStyle('left');
		if (!$defined(y)) var y = abs_layer_store[id].getStyle('top');
		abs_layer_store[id].dd = new Drag.Move(
			id,
			{
				handle: id + '_handle',
				onComplete: function(el)
				{
					if (parseInt(el.getStyle('top')) < -100) el.setStyle('top', '-100px');
				}
			}
		);
		abs_layer_store[id].hide = function()
		{
			this.setStyle('display', 'none');
		};
	}
	else
	{
		var x = abs_layer_store[id].getStyle('left');
		var y = abs_layer_store[id].getStyle('top');
	}
	
	if (parseInt(y) < window.getScrollTop())
	{
		y = window.getScrollTop();
	}
	
	abs_layer_store[id].setStyles( { display: 'block', visibility: 'visible', left: x, top: y , zIndex: 1000 + abs_layer_count } );
	abs_layer_count++;
}

// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------

function abs_toggle_edit_buttons(url_of_editor_script)
{
	abs_edit_buttons == 'on' ? abs_unhighlight_editable() : abs_highlight_editable(url_of_editor_script);
	// Store state, so whether edit buttons are on or off is persistent from page-to-page
	var exp = dmb1_get_exp_date(1,0,0); // Set a cookie expiry 1 day from now
	dir = dmb1_get_cookie('abs_editmode');
	dir = dir.substring(0, dir.lastIndexOf('__'));
	dir += '__' + abs_edit_buttons;
	dmb1_set_cookie('abs_editmode', dir, exp, '/');
}

// -------------------------------------------------------------------------------------------------

function abs_highlight_editable(url_of_editor_script)
{
	for (var i=0; i<abs_editable.length; i++) {
		var div = get_DOM_ref(abs_editable[i]);
		var id = div.getAttribute('id');
		var panel_path = id.substring(0, id.lastIndexOf('/') + 1);
		var panel_name = id.substring(id.lastIndexOf('/') + 1);
		var eb = document.createElement('a');
		eb.setAttribute('href', url_of_editor_script + '?panel_path=' + id + '&return_url=' + document.URL);
		eb.setAttribute('class', 'editbutton');
		eb.setAttribute('onmouseover', 'dmb0_show_infotext(\'<b>' + panel_name + '<\/b><br>' + panel_path + '\', event);');
		eb.setAttribute('onmouseout', 'dmb0_hide_infotext();');
		var tx = document.createTextNode('EDIT');
		eb.appendChild(tx);
		switch(panel_name.substring(0,13))
		{
			case 'fragment--sp_':
				div = div.getElementsByTagName('div');
				div = div[0];
				div.className += ' editable_sp';
				break;
			default:
				div.className += ' editable';
		}
	div.insertBefore(eb, div.firstChild);
	}
	abs_edit_buttons = 'on';
}

// -------------------------------------------------------------------------------------------------

function abs_unhighlight_editable()
{
	for (var i=0; i<abs_editable.length; i++)
	{
		var div = get_DOM_ref(abs_editable[i]);
		var id = div.getAttribute('id');
		var panel_name = id.substring(id.lastIndexOf('/') + 1);
		switch(panel_name.substring(0,13))
		{
			case 'fragment--sp_':
				div = div.getElementsByTagName('div');
				div = div[0];
				break;
			default:
		}
		div.removeChild(div.firstChild);
		div.className = div.className.substring(0, div.className.lastIndexOf(' editable'));
	}
	abs_edit_buttons = 'off';
}

// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------
// -------------------------------------------------------------------------------------------------

function abs_xajax(params, target_id)
{
	// Get an XComponent using AJAX
	
	// Common request nodes
	params['dmb1_SessRef'] 	= dmb1_session_ref;
	params['ajax']			= '1',
	params['response_type']	= 'html';
	
	// POST request
	var xajax = new Ajax( '/dmx/core/php/xcom_server.php',
		{
			data: params,
			update: target_id,
			evalScripts: true
		}
	);
	xajax.request();
}
