jQuery.noConflict();

jQuery(document).ready(function($) {

	var timeout				= 100;
	var sizewait			= 250;
	var sizetimer 		= 0;
	var closetimer 		= 0;
	var hoverParent 	= null;
	var hoverBin 			= null;
	var hoverSlots 		= null;
	var megaSlots = null;
	var hideOffset = -9000;
	var MENU_WIDTH = 1000;
	var candyBar = $("#candybar");
	var floaties = $("#floaters");
	var floatiesOffset = 0;
	var binPadding = 4;

	var megaBins = $('.megamenu-menu').find('.megamenu-bin');
	megaBins.css('top', hideOffset);

	function megamenu_open(){
		megamenu_canceltimer();
		megamenu_close();
		hoverParent = $(this).addClass('hovering');
		hoverBin = hoverParent.find('.megamenu-bin');

		/* display position */
		hoverBin.css('top', 'auto');
		/* display position end */

		/* Dynamically insert divs to hide candybar underneath megamenu-parent:hover */
		floatiesOffset = megaBins.eq(0).offset().left;  // border accounted for in megamenu-skins.css
		if ($(this).hasClass('first')) { floatiesOffset++ } // reset for first menu element
		floaties.css('left',($('.megamenu-menu').find('.hovering').offset().left - floatiesOffset ) + 'px');
		candyBar.css('margin-top','-2px');
		floaties.css('display','block');

		// Fix up firefox and ie css issues 
		// First check for IE 7 - take care of FF and IE 8 in else block
		if ($.browser.msie && ($.browser.version == "7.0")) {
			$(this).hover(
				function() {
					$(this).css('background-color','#FFF');
				}, 
				function() {
					$(this).css('background-color','transparent');
				}
			);
		} else {
			slot = hoverBin.find('.megamenu-slot');
			binSize = hoverBin[0].clientHeight - binPadding;
			slot.height(binSize);
		}
	}

	function megamenu_close(){

		if(hoverBin) hoverBin.css('top', hideOffset);
		if(hoverParent) hoverParent.removeClass('hovering');

		floaties.css('display','none');
		candyBar.css('margin-top','0px');

	}

	function megamenu_timer(){
		closetimer = window.setTimeout(megamenu_close, timeout);
	}

	function megamenu_canceltimer(){
		if (closetimer) {
			window.clearTimeout(closetimer);
			closetimer = null;
		}
	}

	function megamenu_sizetimer(){
		/* waits to resize on initial call to accomodate browser draw */
		sizetimer = window.setTimeout(megamenu_sizer, sizewait);
	}

  function megamenu_sizer(){

		for ( var k=0 ; k < megaBins.length ; k++ ) {

			/* resets to bin sizes and position before sizing */
			megaBins.eq(k).css('left', 0 + 'px');
			megaBins.eq(k).css('width', 0 + 'px');		

			var megaSlots = megaBins.eq(k).find('.megamenu-slot');

			/* auto bin width start */

			if(megaBins.eq(k).hasClass('megamenu-slots-horizontal')) {

				var slotTotalWidth = 0;
					for ( var i=0 ; i < megaSlots.length ; i++ ) {

						slotTotalWidth += megaSlots.eq(i).outerWidth(true);

						/* Out for the moment - checked and hidden if so below
						if (slotTotalWidth > $(window).width()) {
							slotTotalWidth = 0;
							for (var j=0 ; j < i ; j++) {
								slotTotalWidth += megaSlots.eq(i).outerWidth(true);				
							}
							break;
						}
						*/	 
					}
					megaBins.eq(k).css( 'width' , slotTotalWidth);
					megaBins.eq(k).width(slotTotalWidth);
			} 
			else {
				/* set bin width for vertical slots */
				for ( var i=0 ; i < megaSlots.length ; i++ ) {
				}
				megaBins.eq(k).css( 'width' , megaSlots.eq(0).outerWidth(true) );
			}		
			/* auto bin width end */

			/* correct for if bin exceeds right column limit */
			/* for the moment - don't show menus if browser width < width of the bin */
			if ($(window).width() >= megaBins.eq(k).outerWidth(true)) {
				var binOffset = 0;
				var binRightEdge = megaBins.eq(k).offset().left + megaBins.eq(k).outerWidth(true);
				var rightLimit = megaBins.eq(0).offset().left + MENU_WIDTH;

				if (binRightEdge > rightLimit) {
					binOffset = rightLimit - binRightEdge;
					megaBins.eq(k).css('left', (binOffset) + 'px');
				}
				/* end bin-right correction */
			}
			else {
					megaBins.eq(k).css('left', '-9000px');
			}

		}
	}


	$('.megamenu-parent').bind('mouseover', megamenu_open);
	$('.megamenu-parent').bind('mouseout', megamenu_timer);

	$(document).bind('click', megamenu_close);	

	$(window).bind('resize', megamenu_sizer);
	megamenu_sizetimer();
  
});
