(function($) {
	$.fn.equalHeight = function() {
		var minimum = arguments[0] || 0;
		this.each(function() {
			if($(this).height() > minimum) {
				minimum = $(this).height();
			}
		});
		
		$(this).css("min-height",minimum+'px');
		if($.browser.msie){
			$(this).height(minimum).css('overflow','hidden');
		}
	}
})(jQuery);


jQuery(function($) {
 
	var Engine = {
		utils : {
			links : function(){
				$('a[rel*=external]').click(function(e){
					e.preventDefault();
					window.open($(this).attr('href'));						  
				});
			},
			mails : function(){
				$('a[href^=mailto:]').each(function(){
					var mail = $(this).attr('href').replace('mailto:','');
					var replaced = mail.replace('/at/','@');
					$(this).attr('href','mailto:'+replaced);
					if($(this).text() == mail) {
						$(this).text(replaced);
					}
				});
			},
			activeNav : function(navCssId,activeClass){				
				$('#' + navCssId + ' li a').each(function(){
					var path = document.location.href; 
					var current_href = this.getAttribute('href',2);
					if (path.split(".com")[1] == current_href) {
					  $(this).addClass(activeClass);
					  $(this).parents("li").addClass(activeClass);
					}
				});	
			},
			textValuePrefill : function(){
				$('#CLEmailAddress').focus(function(e){
					if ($(this).val() == 'Enter your email address') { $(this).val(''); }
				});
				$('#CLEmailAddress').blur(function(e){
					if ($(this).val() == '') { $(this).val('Enter your email address'); }
				});
				$('.EmailAddress').focus(function(e){
					if ($(this).val() == 'Enter your email address') { $(this).val(''); }
				});
				$('.EmailAddress').blur(function(e){
					if ($(this).val() == '') { $(this).val('Enter your email address'); }
				});
				$('#CLFullName').focus(function(e){
					if ($(this).val() == 'Enter your full name') { $(this).val(''); }
				});
				$('#CLFullName').blur(function(e){
					if ($(this).val() == '') { $(this).val('Enter your full name'); }
				});
			}
		},
		categorySlider : function(){
			var slider = $('#category-thumbs ul');
			if (slider.length === 0) {
				return;
			}
				
			var offset = slider.parent().width();	

			//sin suficientes elementos para paginar
			var items = $('#category-thumbs li');
			if (items.length < 5) {
				return;
			}

			//construir opciones HTML, y activación de primer eslabón
			$('.toy-of-month .join').after('<ul id="category-thumbs-options"></ul>');
			var opts = $('#category-thumbs-options');
			opts.prepend('<li class="prev"><a href="#">Previous</a></li>');
			for (var i = 0; i < Math.ceil(items.length / 4); i++) {
				opts.append('<li><a href="#">'+parseInt(i+1,10)+'</a></li>');	
			}
			opts.append('<li class="next"><a href="#">Next</a></li>');

			//activación de primer elemento
			opts.find('a').eq(1).addClass('active');
			
			var current = 1;			
			var activate = function(position){				
			
				//queremos llegar a puntos sólo en la lista de paginación (no corresponde al articulo anterior ni al siguiente)
				if (position < 1 || position > opts.find('li').length - 2) {
					return;
				}
				opts.find('a').removeClass('active').eq(position).addClass('active');
				current = position;
				
				var newMargin = parseInt(-(position-1) * offset, 10);
				slider.stop().animate({ 'marginLeft' : newMargin+'px' }, 500 );
			};
			
			opts.find('a').click(function(event){
				event.preventDefault();
				if ($(this).parent().hasClass('next')) {
					activate(current + 1);
				}
				else if ($(this).parent().hasClass('prev')) {
					activate(current - 1);
				}
				else {
					activate(opts.find('a').index(this));
				}
			});			
		},
		productSlider : function(slider, opts) {	

			slider = $(slider);

			if (slider.length === 0) {
				return;
			}
				
			var offset = slider.parent().width();	
			var items = slider.find('td');

			//no hay suficientes elementos
			if (items.length < 4) {
				return;
			}

			var current = 1;
			var activate = function(position){			
				//queremos llegar a puntos sólo en la lista de paginación (no anterior ni el próximo artículos)
				if (position < 1 || position > Math.ceil(items.length / 4) ) {
					return;
				}
				current = position;
				
				var newMargin = '-'+ (position-1) * offset +'px';
				slider.stop().animate({ 'marginLeft' : newMargin }, 800 );
			};
			
			$(opts).find('a').click(function(event){
				event.preventDefault();
				if ($(this).parent().hasClass('slide-next')) {
					activate(current + 1);
				}
				else if ($(this).parent().hasClass('slide-prev')) {
					activate(current - 1);
				}
			});						
		},
		relatedProductsSlider : function(){
			this.productSlider('#related-product-thumbs table tr','#related-product-options');
		},
		featuredProductsSlider : function(){
			this.productSlider('#featured-product-thumbs table tr','#featured-product-options');
		},
		productTabs: function(){
			$('.product-tabs .tabs a').click(function(e){
				e.preventDefault();
				$('.product-tabs .cont').hide();
				$('.product-tabs .tabs a').removeClass('active');
				$(this).addClass('active');
				$($(this).attr('href')).show();
			});	
		},
		gifts : function(){
			$('#botonesderechos dt').mouseenter(function(e){
				$('#botonesderechos dd').css('visibility','hidden');
				$(this).next('dd').css('visibility','visible');									   
			});
			
			$('.presentador').mouseleave(function(e){
				$('#botonesderechos dd').css('visibility','hidden');
			});
		},
		fixes : {
			topNavWrapSpan : function(){
				$('#nav_430517 li a').wrapInner('<span></span>');
			},
			breadcrumb : function (){
				if ($('.shop-breadcrumb').length === 0) { return; }
				var bc = $('.shop-breadcrumb').html().replace(':','&raquo;');
				$('.breadcrumb').html(bc)	
			},
			productDetail : function(){
				if (document.location.href.indexOf('_product_') != -1){					
					$('#side').remove();
					$('#main').addClass('long'); 
					$('#main').find('.breadcrumb').remove();
					$('#main').find('h1:first').remove();
					$('#main').find('.catalogueList').remove();
					$('#main').find('.catalog-description').remove();
				}
			},
			poplets : function(){
				// hace que el poplet se  abra sobre la imagen principal grande en lugar de en el lightbox

				$('.productSelectInput').change(function(e){
					Engine.fixes.poplets();
				});
								
				if ($('.productPopletsItem a').size() === 0){ return; }
				
				$('.productPopletsItem a').removeAttr('onclick');
				$('.productPopletsItem a').removeAttr('rel');
				
				$('.productPopletsItem a').click(function(e){
					e.preventDefault();
					$('.product-images .mainimg img').attr("src",$(this).attr('href'));
				});
				
			},
			equalize : function(){
				$('ul.productList li').equalHeight();
				$('ul.productList li h3').equalHeight();
			}
		},
		categoryList : function() {
			var toggle = "first";
			
			// Catalogo de pagina principal
			$('#cat-list ul li').each(function(){
				$(this).addClass(toggle);
				if (toggle == "first"){ toggle = "second"; }
				else if (toggle == "second"){ toggle = "third"; }
				else if (toggle == "third"){ toggle = "fourth"; }
				else { toggle = "first"; }
			});
			
			// Lista de catalogo normal
			$('.catalogueList li').each(function(){
				$(this).addClass(toggle);
				if (toggle == "first"){ toggle = "second"; }
				else if (toggle == "second"){ toggle = "third"; }
				else { toggle = "first"; }		   
			});
			
			$('.catalogueList').addClass('clearfix');
			$('.productList').addClass('clearfix');
			
			if ($('.catalogueItemNotFound').length == 1) { $('.catalogueList').remove(); }
			
			
			
		},
		enhancements : {
			shoppingCartSummary : function(){
				var summary = $('.cartSummaryItem').text();
				$('.sc-number').text("0");
				if (summary != 'Shopping cart is empty.'){
					var arr = summary.split(" ");	
					$('.sc-number').text(arr[0]);
				}			
			},	
			sidebarNavigation : function(){
				//agrega funcionalidad a la barra lateral expansión
				var hs = $('#nav-side li a.root');
				
				if (hs.length === 0) {
					return;
				}
									
				//ocultemos todos los elementos que no están abiertos
				hs.parent().not('active').next('ul').hide();

				//cambian de clase y ocultar/mostrar siguientes submenú
				$('ul#nav-side li a.root').click(function(e) { 	
					e.preventDefault(); 						
					var h = $(this).parent().toggleClass('active');
					h.next('ul').toggle(); 
				});
			},
			checkout : function(){
				//Revisión de artículos relacionados
				$("#SameAsShipping").bind("change", function(e){
					if($(this).checked){
						// desmarcado
					}else{
						// marcado
						$("#BillingAddress").val($("#ShippingAddress").val());
						$("#BillingCity").val($("#ShippingCity").val());
						$("#BillingState").val($("#ShippingState").val());
						$("#BillingZip").val($("#ShippingZip").val());
						$("#BillingCountry").val($("#ShippingCountry").val());
					}
				});	
				$('#order-summary-value').text('$' + $('input#Amount').val());
				if ($('input#Amount').val() === '0.00') {
					$('#PaymentMethodType_9').attr('checked','checked');
					$('#credit-card-information').css('display','none');	
				}
			},
			affiliateLink : function(){
				$('form.refer-friend').find('textarea#Message').text('Hi, I think you might be interested in ' + $('#affiliate-results a:first').attr('href'))
			}
		}
		
	};

	Engine.utils.links();
	Engine.utils.mails();
	Engine.utils.activeNav("nav_430517","active");	
	Engine.utils.activeNav("nav_430519","active");	
	Engine.utils.activeNav("nav_430521","active");	
	Engine.utils.activeNav("nav_430522","active");	
	Engine.utils.activeNav("nav_430524","active");
	Engine.utils.activeNav("nav_430525","active");	
	Engine.utils.textValuePrefill();
	Engine.categorySlider();
	Engine.relatedProductsSlider();
	Engine.featuredProductsSlider();
	Engine.productTabs();
	Engine.gifts();
	Engine.fixes.topNavWrapSpan();
	Engine.fixes.breadcrumb();
	Engine.fixes.productDetail();
	Engine.fixes.poplets();
	Engine.fixes.equalize();
	Engine.categoryList();
	Engine.enhancements.sidebarNavigation();
	Engine.enhancements.shoppingCartSummary();
	Engine.enhancements.checkout();
	Engine.enhancements.affiliateLink();
	
});
