/*
|--------------------------------------------------------------------------
| Amedia Creative Frontend Framework > Tabs
|--------------------------------------------------------------------------
|
| @package		Amedia Creative
| @subpackage	Frontend Framework
| @company		Amedia Creative, Inc.
| @phone		310/651/8733
| @fax			310/388/1210
| @author		Joey Avino
| @email		joey@amediacreative.com 
| @link			http://www.amediacreative.com
| @copyright	2008 Amedia Creative, Inc.
| @requires 	mootools.1.2.js
|
*/

/*
|--------------------------------------------------------------------------
| Amedia Creative Frontend Framework > Tabs > Core JavaScript
|--------------------------------------------------------------------------
|
*/

	/**
	* Tabs Class
	*
	* @name 	Tabs
	* @access 	public
	* @param 	var-type none
	* @return 	none
	* @author 	Joey Avino
	* @email	joey@amediacreative.com
	*/ 
	var Tabs = new Class({

		Implements: Options, options: {

			event: 'click',
			tab_menu_id: '#pagename_tab',
			tab_class: '.tab_option',
			content_id: '#pagename_content',
			content_class: '.tab_page',
			default_tab: 0

		},

		/**
		* Initialize the Tabs class.
		*
		* @name 	AccordionFx
		* @access 	public
		* @param 	var-type none
		* @return 	none
		* @author 	Joey Avino
		* @email	joey@amediacreative.com
		*/
		initialize: function(options) {

			this.setOptions(options);
			var tabs = $$(this.options.tab_menu_id + ' ' + this.options.tab_class);
			var pages = $$(this.options.content_id + ' ' + this.options.content_class);

			var functions = {

				hide_all: this.hide_all,
				remove_selected: this.remove_selected

			};

			functions.hide_all(pages, null);

			tabs.each(function(e) {

				e.addEvent('mouseenter', function() {

					var a_tag = e.getElement('.tab_link'); // Get the link classes.	
					var li_tag = a_tag.getParent(); // Get the li.
					var check_hover = e.getElement('.selected');

					if (!check_hover) { // If the tab is selected, don't apply the hover.

						a_tag.addClass('hover');
						li_tag .addClass('hover');

					}
				});

				e.addEvent('mouseleave', function() {

					var a_tag = e.getElement('.tab_link'); // Get the link classes.	
					var li_tag = a_tag.getParent(); // Get the li.

					a_tag.removeClass('hover');
					li_tag .removeClass('hover');

				 });

				e.addEvent('click', function() {

					var page = $(this.get('title'));
					functions.hide_all(pages);
					page.setStyle('display', 'block');
					functions.remove_selected(tabs); // Remove the selected class.

					var a_selected = e.getElement('.tab_link'); // Get the link classes.
					var li_selected = a_selected.getParent(); // Get the li classes.

					a_selected.addClass('selected'); // Add the selected class (CSS) to the tab.
					a_selected.removeClass('hover');

					li_selected.addClass('selected'); // Add the selected class (CSS) to the li above the tab.
					li_selected.removeClass('hover');

				});	
			});

			pages[this.options.default_tab].setStyle('display', 'block');
	
			var default_tab = tabs[this.options.default_tab].getElement('.tab_link');
			var default_li = default_tab.getParent();
	
			default_tab.addClass('selected'); // Add the selected class to the default tab.
			default_li.addClass('selected'); // Add the selected class to the default tab.

		},





		/**
		* Hides all tabs and divs.
		*
		* @name 	hide_all
		* @access 	public
		* @param 	var-type none
		* @return 	none
		* @author 	Joey Avino
		* @email	joey@amediacreative.com
		*/
		hide_all: function(obj) {

			obj.each(function(e) {

				e.setStyle('display', 'none');
	
			});
	
		},





		/**
		* Removes the selected class
		* when a new tab becomes active.
		*
		* @name 	remove_selected
		* @access 	public
		* @param 	var-type none
		* @return 	none
		* @author 	Joey Avino
		* @email	joey@amediacreative.com
		*/
		remove_selected: function(obj) {

			obj.each(function(e) {

				var a_selected = e.getElement('.tab_link');
				var li_selected = a_selected.getParent();

				a_selected.removeClass('selected');
				li_selected.removeClass('selected');

			});
		}

	});
