/*****************************************************************\
|*  In the name of Allah, The Most Gracious, The Most Merciful   *|
|*****************************************************************|
|*          ####  #     ####  ####  ####  ####  ####             *|
|*          #  #  #     #     #  #  #  #  #  #  #                *|
|*          ####  #     ###   ####  ####  #  #  ####             *|
|*          #  #  #     #     #     #     #  #     #             *|
|*    www.  #  #  ####  ####  #     #     ####  ####  .net       *|
|*****************************************************************|
|*  aleppos version 1.0.0
|*****************************************************************|
|* Copyright ©2005–2006 Aleppos Network Ltd. All Rights Reserved *|
|*This file may not be redistributed in whole or significant part*|
|* http://www.aleppos.net           ALEPPOS IS NOT FREE SOFTWARE *|
\*****************************************************************/

/**
* Array to store initialized AL_AJAX_Tab objects
*
* @var	array
*/
var AL_Tab = new Array();
var AL_Tab = {
	'tabobj_prefix'  : 'tabobj_',
	'tabs'           : new Array()
};


// #############################################################################
// AL_AJAX_style
// #############################################################################

function AL_AJAX_Tab_Init(obj)
{
	var uls = fetch_tags(obj, 'ul');
	for (var i = 0; i < uls.length; i++)
	{
		if (uls[i].id && uls[i].id.substr(0, AL_Tab['tabobj_prefix'].length) == AL_Tab['tabobj_prefix'])
		{

			var defaultid = 0;
			var lis = fetch_tags(uls[i], 'li');

			var defaultdiv = fetch_object(uls[i].id.substr(AL_Tab['tabobj_prefix'].length) + '_' + lis[0].id);
			if (defaultdiv)
			{
				AL_Tab['tabs'][uls[i].id.substr(AL_Tab['tabobj_prefix'].length)] = defaultdiv;
			}
			else
			{
				AL_Tab['tabs'][uls[i].id.substr(AL_Tab['tabobj_prefix'].length)] = uls[i];
			}

			for (var n = 0; n < lis.length; n++)
			{
				lis[n].pid = uls[i].id.substr(AL_Tab['tabobj_prefix'].length);
				lis[n].onclick = AL_AJAX_Tab.prototype.tab_click;
				lis[n].oclassName = lis[n].className;

				if (lis[n].title == 'default')
				{
					lis[n].title = '';
					defaultid = n;

				    defaultdiv = fetch_object(uls[i].id.substr(AL_Tab['tabobj_prefix'].length) + '_' + lis[n].id);
					if (defaultdiv)
					{
						AL_Tab['tabs'][uls[i].id.substr(AL_Tab['tabobj_prefix'].length)] = defaultdiv;
					}
				}
			}

			AL_AJAX_Tab_Switch(uls[i].id.substr(AL_Tab['tabobj_prefix'].length), lis[defaultid].id);
		}
	}
};

function AL_AJAX_Tab_Switch(objid, tabid)
{
	if (fetch_object(objid + '_' + tabid))
	{
		AL_AJAX_Tab.prototype.switch_tab(objid, tabid);
		return false;
	}
	else if (AJAX_Compatible)
	{
		var AJAX_tab = new AL_AJAX_Tab();
		AJAX_tab.objid = objid;
		AJAX_tab.tabid = tabid;
		AJAX_tab.fetch_tab();

		return false;
	}
	else
	{
		return true;
	}
};

function AL_AJAX_Tab()
{
	// AJAX handler
	this.xml_sender = null;

	// Tabid
	this.tabid = '';
	this.objid = '';

	this.tabtimer = null;

	// Closure
	var me = this;

	/**
	* OnReadyStateChange callback. Uses a closure to keep state.
	* Remember to use me instead of this inside this function!
	*/
	this.handle_ajax_response = function()
	{
		if (me.xml_sender.handler.readyState == 4 && me.xml_sender.handler.status == 200)
		{
			if (me.xml_sender.handler.responseXML)
			{
				var content = me.xml_sender.fetch_data(fetch_tags(me.xml_sender.handler.responseXML, 'content')[0]);
				if (content)
				{
					me.switch_tab(me.objid, me.tabid);

					var newdiv = fetch_object(me.objid + '_' + me.tabid);
					if (!newdiv)
					{
						newdiv = document.createElement('div');
						newdiv.id = me.objid + '_' + me.tabid;

						AL_Tab['tabs'][me.objid].parentNode.insertBefore(newdiv, AL_Tab['tabs'][me.objid].nextSibling);
					}
					newdiv.innerHTML = content;
					AL_AJAX_Tab_Init(newdiv);
				}
			}

			if (is_ie)
			{
				me.xml_sender.handler.abort();
			}
		}
	}
};

/**
* Submits the form via Ajax
*/
AL_AJAX_Tab.prototype.fetch_tab = function()
{
	this.xml_sender = new AL_AJAX_Handler(true);
	this.xml_sender.onreadystatechange(this.handle_ajax_response);
	this.xml_sender.send(ALURL + '/al_ajax.php?do=tab&tabid=' + this.tabid, 'do=tab&tabid=' + this.tabid);
};

AL_AJAX_Tab.prototype.switch_tab = function(objid, name)
{
	var next = -1;
	var lis = fetch_tags(fetch_object(AL_Tab['tabobj_prefix'] + objid), 'li');
	for (var i = 0; i < lis.length; i++)
	{
		var content_object = fetch_object(objid + '_' + lis[i].id);
		if (lis[i].id == name)
		{
			if (i)
			{
				lis[i-1].className = 'first';
			}

			lis[i].className = 'on';

 			if (content_object)
			{
				content_object.style.display = '';
				content_object.className = content_object.className; /* Fix IE7 position:relative*/
			}

			next = lis[i+1] ? i+1 : 0;
		}
		else
		{
			lis[i].className = (next == i ? 'last' : lis[i].oclassName);
			if (content_object)
			{
				content_object.style.display = 'none';
			}
		}
	}

/*
	clearTimeout(this.tabtimer);			
	this.tabtimer = setTimeout("AL_AJAX_Tab_Switch('" + objid + "', '" + lis[next].id + "');", 1000 * 60 * 2); // two min 1000 * 60 * 2
*/
};

AL_AJAX_Tab.prototype.save_tab = function(objid, name)
{
	var expires = new Date();
	expires.setTime(expires.getTime() + (1000 * 86400 * 365));
	set_cookie('aleppos_tab[' + objid  + ']', name, expires);
}

/**
* Handles the form 'submit' action
*/
AL_AJAX_Tab.prototype.tab_click = function(e)
{

    AL_AJAX_Tab.prototype.save_tab(this.pid, this.id);

	return AL_AJAX_Tab_Switch(this.pid, this.id);
};

/*****************************************************************\
|*  CVS: $RCSfile: aleppos_ajax_style.js,v $ - $Revision: 1.0 $
\*****************************************************************/
