var Menu = function(elt) { // creates a menu on #elt with it's contents in #elt-menubody
	var obj = this;
	var nav = $(elt);
	var menubody = $('#' + $(elt).attr('id') + '-menubody');
	var mouseinmenu = false;
	var menuisdown = false;
	var timer = false;
	
	var menuUp = function() {
		if( mouseinmenu ) {
			if( timer !== false ) {
				clearTimeout(timer);
				timer = false;
			}
		}
		else {
			menubody.slideUp(100);
			menuisdown = false;
			timer = false;
		}
	};

	menubody.hover(
		function() {
			mouseinmenu = true;
		},
		function() {
			mouseinmenu = false;
			timer = setTimeout(menuUp, 250);
		}
	);
	
	nav.hoverIntent(
		function() {
			if( !menuisdown ) {
				menubody.slideDown(100);
				menuisdown = true;
			}
		},
		function() {
			timer = setTimeout(menuUp, 250);
		}
	);
};

$.fn.menu = function() {
	return this.each(function() {
		var element = $(this);
		if( element.data('menu') ) {
			return;
		}

		var menu = new Menu(this);
		element.data('menu', menu);
	});
};

var colorizeCartHandle = function() {
	if( $('#cart-num-items').val() > 0 ) {
		$('#carthandle').addClass('cart-has-items');
	}
	else {
		$('#carthandle').removeClass('cart-has-items');
	}
	$('#carthandle').addClass('cart-closed');
	$('#carthandle').removeClass('cart-open');
};



	/*
	(function(){
	  // if firefox 3.5+, hide content till load (or 4 seconds) to prevent FOUT
		  var d = document, e = d.documentElement, s = d.createElement('style');
		  if (e.style.MozTransform === ''){ // gecko 1.9.1 inference
		    s.textContent = 'body{visibility:hidden}';
		    e.firstChild.appendChild(s);
		    function f(){ s.parentNode && s.parentNode.removeChild(s); }
		    addEventListener('load',f,false);
		    setTimeout(f,4000);
		  }
	})();
	*/

jQuery.fn.center = function () {
    this.css("position","absolute");
    this.css("top", ( $(window).height() - this.height() ) / 2+$(window).scrollTop() + "px");
    this.css("left", ( $(window).width() - this.width() ) / 2+$(window).scrollLeft() + "px");
    return this;
}

$(document).ready(function() {

	$('#privacy').click(function() {
		$('#privacy-policy').show('fast');
	});
	
	$('#terms').click(function() {
		$('#terms-policy').show('fast');
	});
	
	$('#checkout').click(function() {
		/* nb: allow this event to default, also */
		var thingy = $('<div class="checkout-message"><img src="/image/data/loader.gif" />Please wait while we process your order.</div>');
		thingy.css('position','relative');
		thingy.css('top', "-400px");
		thingy.insertAfter('#payment');
		/*thingy.center();*/
	});
	
	$('#growingchart tr:even').addClass('even');
	$('#growingchart tr').hover(
		function(){ $(this).addClass('charthover'); },
		function(){ $(this).removeClass('charthover'); }
		);
	
	
	$('.st-detail-table-cell').click(function(event) {
		var elt = $(this).find('.st-detail-table-item');
		var loc = elt.attr('href');
		window.location = loc;
	});
	
	$(".scrollable").scrollable();

	$('#searchform').submit(function(event) {
		event.preventDefault();
		var searchval = $('#searchval').val();
		if( searchval.length == 0 ) {
			return false;
		}
		else {
			var uri = '/search/' + encodeURIComponent(searchval);
			window.location = uri;
			return false;
		}
	});
	
	/* ie 7 fixes to the purchase popups */
	
	var ttoffset = -170;
	
	if( $.browser.msie && $.browser.version < 9 ) {
		if( $.browser.version < 8 ) {
			ttoffset = 0;
		}
		/* $('.purchase').hide(); */
	}
		
	$('.varietylist-itemlink').tooltip({
		predelay: 		250,
		delay: 			30,
		position: 		'top center',
		offset: 		[ttoffset,0],
		tipClass: 		'varietylist-popup',
		onBeforeShow: 	function(event, position) {
       		this.getTip().appendTo(document.body);
       		return true;
    	},
     	onHide: 		function(){
    		var tip = this.getTip();
    		tip.appendTo(this.getTrigger());
    	}
	});
	
	$('.sparsetype-icon header').tooltip({
		predelay: 		250,
		delay: 			30,
		position: 		'top center',
		offset: 		[14,0],
		tipClass: 		'st-details',
		onBeforeShow: 	function(event, position) {
       		this.getTip().appendTo(document.body);
       		return true;
    	},
    	onHide: 		function(){
    		var tip = this.getTip();
    		tip.appendTo(this.getTrigger());
    	}
	});
	
	$('.sparsetype-icon-small header').tooltip({
		predelay: 		250,
		delay: 			30,
		position: 		'top center',
		offset: 		[14,0],
		tipClass: 		'st-details',
		onBeforeShow: 	function(event, position) {
       		this.getTip().appendTo(document.body);
       		return true;
    	},
	   	onHide: 		function(){
    		var tip = this.getTip();
    		tip.appendTo(this.getTrigger());
    	}
	});
	
	$('.sparsetype-icon').click(function() {
		var theform = $(this).find('form.go-to-type-detail');
		theform[0].submit();
	});
	
	$('.sparsetype-icon-small').click(function() {
		var theform = $(this).find('form.go-to-type-detail');
		theform[0].submit();
	});
	
	$('.st-variety-details form').hide();
	/*if( !$.browser.msie || $.browser.version >= 9 ) { */
		$('.st-variety-details').hoverIntent(
			function() { 
				$(this).find('form').stop(true);
				$(this).find('form').show('fast'); 
			},
			function() { 
				$(this).find('form').delay(1800).hide('fast'); 
			}
		);
	/*} */
	
	$('#carthandle').click(function() {
		if( $('#carthandle-menubody').css('display') == 'none' ) {
			$('#carthandle-menubody').slideDown('fast');
			$('#carthandle').removeClass('cart-closed');
			$('#carthandle').addClass('cart-open');
		}
		else {
			$('#carthandle-menubody').slideUp('fast');
			$('#carthandle').addClass('cart-closed');
			$('#carthandle').removeClass('cart-open');
		}
	});

	colorizeCartHandle();
	$('#carthandle').hover(
		function() { $(this).addClass('hover-vivid'); },
		function() { $(this).removeClass('hover-vivid'); }
	);
		
	$('#collapseable').click(function() {
		if( $('#collapseable-menubody').css('display') == 'none' ) {
			$('#collapseable-menubody').slideDown('fast');
			$('#collapseable').addClass('uncollapsed');
			$('#collapseable').removeClass('collapsed');
		}
		else {
			$('#collapseable-menubody').slideUp('fast');
			$('#collapseable').addClass('collapsed');
			$('#collapseable').removeClass('uncollapsed');
		}
	});
	
	$('#collapseable').hover(
		function() { $(this).addClass('hover-vivid'); },
		function() { $(this).removeClass('hover-vivid'); }
	);
	
	if( ! $.browser.msie || $.browser.version >= 8 ) {
		$('#herbs').menu();
		$('#veggies').menu();
		$('#flowers').menu();
		$('#bulbs').menu();
		$('#collections').menu();
		$('#covercrops').menu();
		$('#other').menu();
		/*$('#books').menu(); */
	}
	else {
		/*
		$('#categories li').click(function(evt) {
			evt.preventDefault();
			var m = $(this).attr('id');
			var menubody = $('#' + m + '-menubody');
			menubody.toggle('fast');
		});
		*/
	}
	
	$('.cell-remove').live('click', function() {
		var qtycell = $(this).parent().find('.item-qty');
		qtycell.val(0);
		qtycell.change();
	});
	
	$('.item-qty').live('change', function() {
		var qty  = $(this).val();
		var key  = $(this).attr('id').substring(9);
		var row  = $(this).parent().parent();
		var foot = row.parent().parent().children('tfoot');
		$.ajax({
			type:		'POST',
			url:		'index.php?route=module/cart/ajaxcartupdate',
			data:		{ 
							quantity:	qty,
							item:		key
						},
			success:	function(result) {
							var cart = $.parseJSON(result);
							if( !cart['success'] ) {
								$('<h5>Error: ' + cart['error'] + '</h5>').insertBefore('.content-table');
							}
							else {
								var item = cart['item'];
							 	if( item['quantity'] == 0 ) {
							 		row.remove();
							 		var n = parseInt($('#cart-num-items').val()) - 1;
									$('#cart-num-items').val(n);
									if( n == 0 ) {
										$('#cart-nav').hide();
										$('#carthandle').removeClass('cart-has-items');
										$('#cart-items-form').hide();
										$('#cart-nav').html('<span id="empty-cart-msg">The cart is empty</span><ul></ul>');
									}
							 	}
							 	else {
							 		row.find('.item-qty').val(item['quantity']);
							 		row.find('.item-totalprice').val(item['totalprice']);
							 	}
								var foothtml = '';
								$.each(cart['totals'], function(i, total) {
									foothtml += '<tr>';
									foothtml += '<td class="cell-cartsubtotal" colspan="5">' + total['title'] + '</td>';
									foothtml += '<td class="cell-cartotal">' + total['text'] + '</td>';
									foothtml += '</tr>';
								});
								foot.html(foothtml);
							}
						},
			datatype:	'json'
		});
	});
	
	$('.buybut').click(function(event) {
		event.preventDefault();
		var qtyfield = $(this).parent().parent().find('td.size-qty').children('input');
		var keystring = $(this).attr('id').substring(4);
		var qty = ( qtyfield.length > 0 ) ? qtyfield.val() : 1;
		
		if( $('#carthandle-menubody').css('display') == 'none' ) {
			$('#carthandle-menubody').slideDown('fast');
			$('#carthandle').removeClass('cart-closed');
			$('#carthandle').addClass('cart-open');
		}
		
		$.ajax({
			type:		'POST',
			url:		'index.php?route=module/cart/ajaxcartadd',
			data:		{
							keystring:	keystring,
							quantity: 	qty
						},
			success:	function(result) {
							var cart = $.parseJSON(result);
							if( !cart['success'] ) {
								$('<h5>Error: ' + cart['error'] + '</h5>').insertBefore('.content-table');
							}
							else {
								/* find the row with matching key and update it, or else create that row */
								var key = cart['cart']['key'];
								key = key.replace(':','\\:');
								var qty_input = $('#quantity-' + key);
								if( qty_input.length ) {
									qty_input.val(cart['cart']['quantity']);
								}
								else {
									if( $('.content-table tbody tr').length ) {
										var row =   $('<tr><td class="cell-remove">x</td>' +
													  '<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
										  			  '" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
										  			  '" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
										  			  '">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
										  			  '<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
										  			  '</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
										  			  '</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
										  			  '" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
										  			  '" readonly /></td></tr>');
										$('.content-table tbody tr:last').after(row);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									else { 
										$('#cart-items-form').show();
										$('#empty-cart-msg').remove();
										$('#carthandle').addClass('cart-has-items');
										$('#cart-nav ul').html('<li><a href="/checkout">checkout</a></li>');
										$('.content-table tbody').html(
											'<tr><td class="cell-remove">x</td>' +
											'<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
											'" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
											'" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
											'">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
											'<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
											'</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
											'</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
											'" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
											'" readonly /></td></tr>'
										);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									
								}
								$('.content-table tfoot tr').remove();
								var str = '';
								$.each(cart['totals'], function(index, value) {
									str = str + '<tr><td class="cell-carttotaltitle" colspan="5">' + value['title'] + '</td>';
									str = str + '<td class="cell-carttotal">' + value['text'] + '</td></tr>';
								});
								$('.content-table tfoot').html(str);
							}
						},
			datatype:	'json'
		});
	});
	
	$('.ie-buyselectbut').click(function(event) {
		event.preventDefault();
		
		/*
		<?=$id?>-<?=$opt['product_option_id']?>-<?=$option_value['product_option_value_id']
		*/
		var keystring = $(this).attr('id');
		var qty = 1;
		
		if( $('#carthandle-menubody').css('display') == 'none' ) {
			$('#carthandle-menubody').slideDown('fast');
			$('#carthandle').removeClass('cart-closed');
			$('#carthandle').addClass('cart-open');
		}
		
		$.ajax({
			type:		'POST',
			url:		'index.php?route=module/cart/ajaxcartadd',
			data:		{
							keystring:	keystring,
							quantity: 	qty
						},
			success:	function(result) {
							var cart = $.parseJSON(result);
							if( !cart['success'] ) {
								$('<h5>Error: ' + cart['error'] + '</h5>').insertBefore('.content-table');
							}
							else {
								/* find the row with matching key and update it, or else create that row */
								var key = cart['cart']['key'];
								key = key.replace(':','\\:');
								var qty_input = $('#quantity-' + key);
								if( qty_input.length ) {
									qty_input.val(cart['cart']['quantity']);
								}
								else {
									if( $('.content-table tbody tr').length ) {
										var row =   $('<tr><td class="cell-remove">x</td>' +
													  '<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
										  			  '" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
										  			  '" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
										  			  '">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
										  			  '<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
										  			  '</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
										  			  '</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
										  			  '" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
										  			  '" readonly /></td></tr>');
										$('.content-table tbody tr:last').after(row);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									else { 
										$('#cart-items-form').show();
										$('#empty-cart-msg').remove();
										$('#carthandle').addClass('cart-has-items');										
										$('#cart-nav ul').html('<li><a href="/checkout">checkout</a></li>');
										$('.content-table tbody').html(
											'<tr><td class="cell-remove">x</td>' +
											'<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
											'" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
											'" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
											'">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
											'<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
											'</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
											'</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
											'" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
											'" readonly /></td></tr>'
										);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									
								}
								$('.content-table tfoot tr').remove();
								var str = '';
								$.each(cart['totals'], function(index, value) {
									str = str + '<tr><td class="cell-carttotaltitle" colspan="5">' + value['title'] + '</td>';
									str = str + '<td class="cell-carttotal">' + value['text'] + '</td></tr>';
								});
								$('.content-table tfoot').html(str);
								$('#quantity-' + key).focus();
							}
						},
			datatype:	'json'
		});
	});

	$('.buyselectbut').click(function(event) {
		event.preventDefault();
		var select = $(this).parent().find('select');
		var keystring = select.val();
		var qty = 1;
		
		if( $('#carthandle-menubody').css('display') == 'none' ) {
			$('#carthandle-menubody').slideDown('fast');
			$('#carthandle').removeClass('cart-closed');
			$('#carthandle').addClass('cart-open');
		}
		
		$.ajax({
			type:		'POST',
			url:		'index.php?route=module/cart/ajaxcartadd',
			data:		{
							keystring:	keystring,
							quantity: 	qty
						},
			success:	function(result) {
							var cart = $.parseJSON(result);
							if( !cart['success'] ) {
								$('<h5>Error: ' + cart['error'] + '</h5>').insertBefore('.content-table');
							}
							else {
								/* find the row with matching key and update it, or else create that row */
								var key = cart['cart']['key'];
								key = key.replace(':','\\:');
								var qty_input = $('#quantity-' + key);
								if( qty_input.length ) {
									qty_input.val(cart['cart']['quantity']);
								}
								else {
									if( $('.content-table tbody tr').length ) {
										var row =   $('<tr><td class="cell-remove">x</td>' +
													  '<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
										  			  '" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
										  			  '" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
										  			  '">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
										  			  '<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
										  			  '</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
										  			  '</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
										  			  '" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
										  			  '" readonly /></td></tr>');
										$('.content-table tbody tr:last').after(row);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									else { 
										$('#cart-items-form').show();
										$('#empty-cart-msg').remove();
										$('#carthandle').addClass('cart-has-items');										
										$('#cart-nav ul').html('<li><a href="/checkout">checkout</a></li>');
										$('.content-table tbody').html(
											'<tr><td class="cell-remove">x</td>' +
											'<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
											'" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
											'" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
											'">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
											'<span class="option-value">' + cart['cart']['option'][0]['shortvalue'] +
											'</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
											'</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
											'" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
											'" readonly /></td></tr>'
										);
										var n = parseInt($('#cart-num-items').val()) + 1;
										$('#cart-num-items').val(n);
									}
									
								}
								$('.content-table tfoot tr').remove();
								var str = '';
								$.each(cart['totals'], function(index, value) {
									str = str + '<tr><td class="cell-carttotaltitle" colspan="5">' + value['title'] + '</td>';
									str = str + '<td class="cell-carttotal">' + value['text'] + '</td></tr>';
								});
								$('.content-table tfoot').html(str);
								$('#quantity-' + key).focus();
							}
						},
			datatype:	'json'
		});
	});
	
	$('.buygiftbut').click(function(event) { // gift certificate
		event.preventDefault();
				
		if( $('#carthandle-menubody').css('display') == 'none' ) {
			$('#carthandle-menubody').slideDown('fast');
			$('#carthandle').removeClass('cart-closed');
			$('#carthandle').addClass('cart-open');
		}
		
		$.ajax({
			type:		'POST',
			url:		'index.php?route=module/cart/ajaxcartaddgift',
			data:		{
							recipient_name : 	$('#recipient-name').val(),
							recipient_email :	$('#recipient-email').val(),
							sender_name:		$('#sender-name').val(),
							sender_email:		$('#sender-email').val(),
							voucher_value:		$('#voucher-value').val(),
							message:			$('#message').val(),
							gift_cert_key:		$('#gift-cert-key').val()
						},
			success:	function(result) {
							var cart = $.parseJSON(result);
							if( !cart['success'] ) {
								$('<h5>Error: ' + cart['error'] + '</h5>').insertBefore('.content-table');
							}
							else {
								/* find the row with matching key and update it, or else create that row */
								var key = cart['cart']['key'];
								key = key.replace(':','\\:');
								if( $('.content-table tbody tr').length ) {
									var row =   $('<tr><td class="cell-remove">x</td>' +
												  '<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
									  			  '" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
									  			  '" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
									  			  '">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
									  			  '<span class="option-value">redeemable for:' +
									  			  '</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
									  			  '</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
									  			  '" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
									  			  '" readonly /></td></tr>');
									$('.content-table tbody tr:last').after(row);
									var n = parseInt($('#cart-num-items').val()) + 1;
									$('#cart-num-items').val(n);
								}
								else { 
									$('#cart-items-form').show();
									$('#empty-cart-msg').remove();
									$('#carthandle').addClass('cart-has-items');
									$('#cart-nav ul').html('<li><a href="/checkout">checkout</a></li>');
									$('.content-table tbody').html(
										'<tr><td class="cell-remove">x</td>' +
										'<td class="cell-quantity"><input id="quantity-' + cart['cart']['key'] +
										'" class="item-qty" type="text" value="' + cart['cart']['quantity'] +
										'" size="3" /></td><td class="cell-product"><a href="' + cart['cart']['href'] +
										'">' + cart['cart']['name'] + '</a></td><td class="option-value">' +
										'<span class="option-value">redeemable for:' +
										'</span></td><td class="cell-unitprice">' + cart['cart']['price'] +
										'</td><td class="cell-totalprice"><input id="totalprice-' + cart['cart']['key'] +
										'" class="item-totalprice" size="3" type="text" value="' + cart['cart']['totalprice'] +
										'" readonly /></td></tr>'
									);
									var n = parseInt($('#cart-num-items').val()) + 1;
									$('#cart-num-items').val(n);
								}
					
								$('.content-table tfoot tr').remove();
								var str = '';
								$.each(cart['totals'], function(index, value) {
									str = str + '<tr><td class="cell-carttotaltitle" colspan="5">' + value['title'] + '</td>';
									str = str + '<td class="cell-carttotal">' + value['text'] + '</td></tr>';
								});
								$('.content-table tfoot').html(str);
							}
						},
			datatype:	'json'
		});
	});
	
	$('a.fancybox-gallery').fancybox({
		'transitionIn'	: 'elastic',
		'transitionOut'	: 'elastic',
		'overlayOpacity': 0.3,
		'type'          : 'image'
	});
	
	$('h5.variety-image-subtitle').click(function() {
		$('img.fancybox-keyimage').parent().click();
	});
	
	$('#agree_checkbox').click(function() {
		if( $(this).is(':checked') ) {
			$('#authorizenet_button').show(500);
		}
		else {
			$('#authorizenet_button').hide(500);
		}
	});
	
	$('#st-opencartdrawer').click(function(e) {
		e.preventDefault();
		$('#carthandle').click();
	});
	
});
