/**
* remoteCP 4
* ütf-8 release
*
* @package remoteCP
* @author hal.sascha
* @copyright (c) 2006-2008
*/
Tabs = new Class(
{
	ajax: false,
	tabobjects: '',

	initialize: function()
	{
		// setup tabs
		$$('ul[class="tabs"]').each(function(el)
		{
			$$(el.getElementsByTagName('li')).each(function(el)
			{
				var link = $(el.getElementsByTagName('a')[0]);

				// click event and load
				if(link.getAttribute('rel'))
				{
					// set url
					var url = link.getAttribute('href').replace(/^http:\/\/[^\/]+\//i, 'http://'+window.location.hostname+'/');
					link.setAttribute('href', url);

					// click event
					link.addEvent('click', function(e)
					{
						// create new link event
						e = new Event(e);
						e.stop();

						// load
						this.Load(link);
					}.bind(this));
				}
			}.bind(this));

			// request first tab(s)
			var starttab = el.getElementsByTagName('a')[0];
			if(starttab.getAttribute('rel')) this.Load(starttab);
		}.bind(this));
	},

	Load: function(element)
	{
		element	= $(element);
		var url = element.href;
		var rel = element.getAttribute('rel');
		var ref = element.getAttribute('ref');

		// remove all sel classes
		var sellist = element.parentNode.parentNode.getElementsByTagName('li');
		for(var i = 0; i < sellist.length; i++)
		{
			$(sellist[i]).removeClass('sel');
		}

		// set current sel class
		var selected = element.parentNode;
		$(selected).addClass('sel');

		// AJAX Powaaah!
		this.ajax = new Ajax(url,
		{
			method: 'get',
			update: $(rel),
			onRequest: function()
			{
				$(rel).addClass('loading');
			}.bind(this),
			onComplete: function()
			{
				$(rel).removeClass('loading');
				rcp_Actions.Linkinizer();
				rcp_Modal.Linkinizer();
			}.bind(this),
			onFailure: function()
			{
				$(rel).removeClass('loading');
				$(rel).setHTML('failure @ ajax request');
			}.bind(this)
		});
		this.ajax.request();

		// load css/js files
		if(ref != null && ref != '')
		{
			var objs = ref.split(/\s*,\s*/);
			for(var i = 0; i < objs.length; i++)
			{
				var file = objs[i];
				if(this.tabobjects.indexOf(file) == -1)
				{
					if(file.indexOf('.js') != -1)
					{
						new Asset.javascript(file);
						this.tabobjects += file+' ';
					} else if(file.indexOf('.css') != -1) {
						new Asset.css(file);
						this.tabobjects += file+' ';
					}
				}
			}
		} 
	}
});
