/*
freak_menu - By Freak
*/

(function($){

	//alert("freak_menu is loading ...");
	//Resize image on ready or resize
	jQuery.fn.freak_menu = function(options) {
		var _freak_menu_links_names = "freak_menu_link";
		var _freak_menu_divs_links_names = "freak_menu_link";
		var _freak_menu_current_link = null;
		var _freak_menu_current_div = null;
		var _freak_menu_divs = new Array();

		var options = jQuery.extend(jQuery.fn.freak_menu.defaults, options);

		var scroll_attribute = options.scroll_attribute;
		var links_class = options.links_class;
		var divs_class = options.divs_class;

		i=0;
		jQuery(this).find("."+links_class).each(function () {
			//alert(jQuery(this).attr("id"));
			//alert(span.html())
			jQuery(this).bind("mouseover", function(){
				span = (jQuery(this).find(".subIdSpan:first"));
				//alert(span.html())
				_hover_link(jQuery(this).attr("id"), span.html());
			});
			jQuery(this).bind("mouseout", function(){
				span = (jQuery(this).find(".subIdSpan:first"));
				_out_link(jQuery(this).attr("id"), span.html());
			});
			i++;
		});
		//alert(i);
		
		i=0;
		jQuery(this).find("."+divs_class).each(function () {
			_freak_menu_divs[jQuery(this).attr("id")]=new Array();
			_freak_menu_divs[jQuery(this).attr("id")]['on_it']=false;
			//alert(jQuery(this).attr("id"));
			jQuery(this).bind("mouseover", function(){
				_hover_div(jQuery(this).attr("id"));
			});
			jQuery(this).bind("mouseout", function(){
				_out_div(jQuery(this).attr("id"));
			});
			i++;
		});
		//alert(i);		

		function _hover_link (element_id, sub_id) {
			//alert("_hover_link::element_id = " + element_id + " :: sub_id = "+sub_id);
			if (_freak_menu_divs[sub_id]) _freak_menu_divs[sub_id]['on_it']=true;
			_freak_menu_current_link=element_id;

			setTimeout( function(){ _real_show(element_id, sub_id) ; }, options.timeout_show) ;
			
			return;
		}

		function _out_link (element_id, sub_id) {
			if (_freak_menu_divs[sub_id]) _freak_menu_divs[sub_id]['on_it']=false;
			if (_freak_menu_current_link==element_id) _freak_menu_current_link=null;
			//alert("_out_link");
			setTimeout( function(){ _real_hide(element_id, sub_id) ; }, options.timeout) ;
			return;
		}

		function _hover_div (div_id) {
			_freak_menu_divs[div_id]['on_it']=true;
			//alert("_hover_link::sub_id = "+sub_id);
			_freak_menu_current_div=div_id;
			//alert("_hover_div::_freak_menu_current_div = "+_freak_menu_current_div);
			return;
		}

		function _out_div (div_id) {
			_freak_menu_divs[div_id]['on_it']=false;
			if (_freak_menu_current_div==div_id) _freak_menu_current_div=null;
			//alert("_out_link");
			setTimeout( function(){ _real_hide(null, div_id) ; }, options.timeout) ;
			return;
		}

		function _real_hide (element_id, sub_id) {
			if (!_freak_menu_divs[sub_id]) _freak_menu_divs[sub_id]=new Array();
			if (!_freak_menu_divs[sub_id]['on_it']) _freak_menu_divs[sub_id]['on_it']=false;
			
			if ((!_freak_menu_current_link || sub_id!=_freak_menu_current_div) && 
				!_freak_menu_divs[sub_id]['on_it']){
				
				jQuery("#"+sub_id).slideUp(options.up_speed);
			}
		}

		function _real_show (element_id, sub_id) {
			//alert(element_id + " : " + sub_id);

			if (!_freak_menu_divs[sub_id]) _freak_menu_divs[sub_id]=new Array();
			if (!_freak_menu_divs[sub_id]['on_it']) _freak_menu_divs[sub_id]['on_it']=false;

			if (_freak_menu_divs[sub_id]['on_it']){
				//alert("#"+element_id);
				level = (jQuery("#"+element_id).find(".levelSpan:first")).html()
				//if (level != "1") alert(level);

				if (level==2) display_type=options.level_2_display_type;
				else display_type=options.level_1_display_type;

				if (display_type=="slideright"){
					jQuery("#"+sub_id).slideToggle(options.down_speed);
				}
				else if (display_type=="fadein"){
					jQuery("#"+sub_id).fadeIn(options.down_speed);
				}			
				else{
					jQuery("#"+sub_id).slideDown(options.down_speed);
				}
			}
		}
	};	
	//alert($.fn.freak_menu);
	//alert("freak_menu loaded ...");

	jQuery.fn.freak_menu.defaults = { 
			links_class: "freak_menu_link",
			divs_class: "freak_menu_div",
			down_speed: 500,
			up_speed: 300,
			timeout: 500,
			timeout_show: 300,
			level_1_display_type: "slidedown",
			level_2_display_type: "slideright"
	};

})(jQuery);
