/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function($){$.fn.hoverIntent=function(f,g){var cfg={sensitivity:7,interval:100,timeout:0};cfg=$.extend(cfg,g?{over:f,out:g}:f);var cX,cY,pX,pY;var track=function(ev){cX=ev.pageX;cY=ev.pageY;};var compare=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);if((Math.abs(pX-cX)+Math.abs(pY-cY))<cfg.sensitivity){$(ob).unbind("mousemove",track);ob.hoverIntent_s=1;return cfg.over.apply(ob,[ev]);}else{pX=cX;pY=cY;ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}};var delay=function(ev,ob){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);ob.hoverIntent_s=0;return cfg.out.apply(ob,[ev]);};var handleHover=function(e){var p=(e.type=="mouseover"?e.fromElement:e.toElement)||e.relatedTarget;while(p&&p!=this){try{p=p.parentNode;}catch(e){p=this;}}if(p==this){return false;}var ev=jQuery.extend({},e);var ob=this;if(ob.hoverIntent_t){ob.hoverIntent_t=clearTimeout(ob.hoverIntent_t);}if(e.type=="mouseover"){pX=ev.pageX;pY=ev.pageY;$(ob).bind("mousemove",track);if(ob.hoverIntent_s!=1){ob.hoverIntent_t=setTimeout(function(){compare(ev,ob);},cfg.interval);}}else{$(ob).unbind("mousemove",track);if(ob.hoverIntent_s==1){ob.hoverIntent_t=setTimeout(function(){delay(ev,ob);},cfg.timeout);}}};return this.mouseover(handleHover).mouseout(handleHover);};})(jQuery);

/* --------------------------------------------
	 jQuery clear inputs on focus method / plugin
   --------------------------------------------  */

jQuery.fn.clearonfocus = function() {
	jQuery(this)
		.bind('focus', function() {
			// Set the default value if it isn't set
			if ( !this.defaultValue ) this.defaultValue = this.value;
			// Check to see if the value is different
			if ( this.defaultValue && this.defaultValue != this.value ) return;
			// It isn't, so remove the text from the input
			this.value = '';
		})
		.bind('blur', function() {
			// If the value is blank, return it to the defaultValue
			if ( this.value.match(/^\s*$/) )
				this.value = this.defaultValue;
		});
};


$(function() {

	if($("#age_verification").length) {
		
		// select the overlay element - and "make it an overlay"
		var age_overlay = $("#age_verification").overlay({
			// custom top position
			top: 260,
			mask: {
				color: '#fff',
				// load mask a little faster
				loadSpeed: 200,
				// very opaque
				opacity: 0.9
			},
			closeOnClick: false,
			// Don't allow closing of the overlay with the keyboard
			closeOnEsc: false,		
			// load it immediately after the construction
			load: false
			
		});
		
		// Set up event handler for submitting the form
		$("#form_age_verification").live('submit',function(evt) { 
	
	    // prevent submit
	    evt.preventDefault();
	    
	    // Call verification plugin, pass post vars
			$.post("/_components/verification/", $("#form_age_verification").serialize(), function(data) {
				
				
				if(data == 'pass') { 
	
					$("#age_verification > div").html("Thank You.");
					setTimeout(function() {
						age_overlay.overlay().close();
					},750);
					
				} else {
					
					data = $('<div />').append(data);
					$("#age_verification > div").html(data);									
	
				}
				
			});
	    
	  });

		// Must be get request to satisfy plugin logic
		$.get('/_components/verification/', function(data) {
	
			if(data == 'pass') { 
				
				$("#age_verification > div").html("Thank You.");
				setTimeout(function() {
					age_overlay.overlay().close();
				},750);
				
			} else {					
			
				data = $('<div />').append(data);
				// Replace contents of modal with ajax request data
				$("#age_verification > div").html(data);
				age_overlay.overlay({	closeOnEsc: false, onLoad:function(data) {$("#age_verification > div").html(data);}}).load();
			}
			
		});		
	
	} // if($("#age_verification").length)
		
	$('#wines_anchor a').bind('click',function(event){
		
	  var $anchor = $(this);
		
	  $('html, body').stop().animate({
			scrollTop: $($anchor.attr('href')).offset().top
	  }, 1000);
	  
	  event.preventDefault();
	  
	});

	$("#red-wine #nav_item_red-wine,#white-wine #nav_item_white-wine,#port #nav_item_port").remove();

	$('hr').replaceWith('<div class="hr"></div>');  

	$('.clearonfocus').clearonfocus();
	
	$("#pack_shots li").hide();
	
	$("#pack_shots li:first-child").fadeIn('slow');	
	
	var preventLoop = 0;
	
	if($("#carousel_slides li").length > 1) {
	
		// initialize scrollable
		var hero = $("#carousel_root").scrollable({
									items: "#carousel_slides",
									next: "#carousel_right",
									prev: "#carousel_left",
 									circular: true, 
									keyboard: true,
									onBeforeSeek: function(){ 

										var index 		= this.getIndex();

										if(index == -1) {

											return;

										} else {

											var length 		= this.getItems().length;
											var current 	= $("#pack_shots li")[index];			
											var nextIndex = index+1;
											
											if(nextIndex == length) {
												nextIndex = 0; 
											}
											var next = $("#pack_shots li")[nextIndex];						
											
											$(current).fadeOut(500, function() {
	
												var packHeight = $(current).find('img').height();
												
												$(current).hide();									
												
											});										

											$(next).fadeIn( 500 );
										  																										
										}
									},
									onSeek: function(){ 
									
										var index = this.getIndex();
										var current = $("#pack_shots li")[index];	
										
										//$(current).find('img.carousel_wine').fadeIn('slow');																												
										//jQuery("img.carousel_wine").fadeIn(100); 
									}
								})								
								.data("scrollable"); 
		
		// Enable autoscroll for hero's with more than one slide

		if(hero.getItems().length > 1) {
			$("#carousel_root").autoscroll({ interval:12000 });
		}	
		
		// Enable the thumbnail image navigation
		$("#carousel_controller li a").click(function() {
			hero.seekTo($(this).attr('href'),500);
			return false;
		});	
		
	}		
 
	function megaHoverOver(){

		$(this).find(".sub").stop().fadeTo('fast', 1).show();
			
		//Calculate width of all ul's
		(function($) { 
			jQuery.fn.calcSubWidth = function() {
				rowWidth = 0;
				//Calculate row
				$(this).find("ul").each(function() {					
					rowWidth += $(this).width(); 
				});	
			};
		})(jQuery); 
		
		if ( $(this).find(".row").length > 0 ) { //If row exists...
			var biggestRow = 0;	
			//Calculate each row
			$(this).find(".row").each(function() {							   
				$(this).calcSubWidth();
				//Find biggest row
				if(rowWidth > biggestRow) {
					biggestRow = rowWidth;
				}
			});
			//Set width
			$(this).find(".sub").css({'width' :biggestRow});
			$(this).find(".row:last").css({'margin':'0'});
			
		} else { //If row does not exist...
			
			$(this).calcSubWidth();
			//Set Width
			$(this).find(".sub").css({'width' : rowWidth});
			
		}
	}
	
	function megaHoverOut(){ 
	  $(this).find(".sub").stop().fadeTo('fast', 0, function() {
		  $(this).hide(); 
	  });
	}
 

	var nav_config = {    
		 sensitivity: 2, // number = sensitivity threshold (must be 1 or higher)    
		 interval: 100, // number = milliseconds for onMouseOver polling interval    
		 over: megaHoverOver, // function = onMouseOver callback (REQUIRED)    
		 timeout: 500, // number = milliseconds delay before onMouseOut    
		 out: megaHoverOut // function = onMouseOut callback (REQUIRED)    
	};
 
	$("#primary_nav ul li .sub").css({'opacity':'0'});
	$("#primary_nav ul li").hoverIntent(nav_config);

});
