/**
 * jQuery Introduction
 * @package: Site
 * @subpackage: Intro GUI
 */

var intro = 
{
	'auto': false,
	'autoInterval': 5000,
	'animSpeed': 'slow',
	'currentItem': 0,
	'parentElement': null,
	'buttonElement': null,
	'buttonNumbered': true,
	'buttonTitles': false,
	'buttonClass': 'button',
	'activeClass': 'buttonActive',
	
	'settings': function(obj, val) {
		if (typeof(obj) == 'object') {
			$.each(obj, function(i, o) {
				eval('intro.' + i + ' = "' + o + '";');
			});
		} else {
			eval('intro.' + obj + ' = "' + val + '";');	
		};
		
		return this;
	},
	
	'init': function() {
		$('<ul>').attr('id', this.buttonElement).appendTo($('#' + intro.parentElement).parent());
		
		this.settings('totalItems', parseInt($('#' + intro.parentElement + ' a').size()));
		
		for (var i = 0; i < intro.totalItems; i++) {
			$('<a>')
			.attr({
				'href': 'javascript:',
				'title': intro.buttonTitles ? $('#' + intro.parentElement + ' a:eq(' + i + ')').attr('title') : ''
			})
			.html(intro.buttonNumbered ? parseInt(i + 1) : '&nbsp;')
			.addClass(intro.buttonClass)
			.appendTo($('<li>').appendTo($('#' + intro.buttonElement)))
		};
		
		return this;
	},
	
	'startFade': function() {
		this.init();
		
		try {
			$('#' + intro.parentElement + ' a:not(:eq(' + intro.currentItem + '))').hide();
			$('#' + intro.buttonElement + ' a:eq(' + intro.currentItem + ')').addClass(intro.activeClass);
			
			if (this.auto) {
				intro.fadeClickHandler(0);
				intro.timestamp = setInterval(function() { intro.fadeClickHandler((intro.currentItem == (intro.totalItems - 1) ? 0 : (parseInt(intro.currentItem) + 1))); }, intro.autoInterval);
			};
			
			$.each($('#' + intro.buttonElement + ' a'), function(index) {
				$(this).click(function() {
					intro.fadeClickHandler(index);
				}).hover(
					function() { clearInterval(intro.timestamp); },
					function() {
						intro.fadeClickHandler(0);
						intro.timestamp = setInterval(function() { intro.fadeClickHandler((intro.currentItem == (intro.totalItems - 1) ? 0 : (parseInt(intro.currentItem) + 1))); }, intro.autoInterval);
					}
				);
			});
		} catch(exception) {};
	},
	
	'fadeClickHandler': function(index) {
		if (this.currentItem == index) {
			return false;
		};
			
		$('#' + intro.parentElement + ' a:eq(' + intro.currentItem + ')').fadeTo(intro.animSpeed, 0, function() {
			$('#' + intro.parentElement + ' a:eq(' + intro.settings('currentItem', index).currentItem + ')').fadeIn(intro.animSpeed);
			$('#' + intro.buttonElement).find('a').removeClass(intro.activeClass);
			$('#' + intro.buttonElement).find('a:eq(' + intro.currentItem + ')').addClass(intro.activeClass);
			$(this).css('opacity', 1).hide();
		});	
	}
};
