// ----------------------
// Barullo
// ----------------------
// Productos
// ----------------------

$(document).ready(function() {
	
	// escalado de las imágenes
	$("#content_center .product a img").cjObjectScaler({
	    destObj: $("#content_center .product a .img_container"),
	    method: "fit", // fit o fill
	    fade: 1000 // 0 para que no haya fadeIn
	});
	
	// botón de añadir al carrito con rollover
	
	/*<div id="carrito_combo">
		<p>Antes de añadir al carrito tienes que elegir:</p>
		<form name="form_listado" id="form_listado" action="#" method="post" enctype="multipart/form-data">
			<label for="campo_talla">TALLA:</label>
			<select name="campo_talla" id="campo_talla">
				<option value="3/4">3/4</option>
				<option value="4/5">4/5</option>
			</select>
			<label for="campo_color">COLOR:</label>
			<select name="campo_color" id="campo_color">
				<option value="TALLA">TALLA</option>
			</select>
		</form>
	</div>*/
	
	var idProdOver = 0;
	var productOver = false;
	var productItemOver = null;
	var idFocus = "";
	

	$(".#content_center .product a.carrito").hover(function(e){
		// si tiene que mostrarlo, lo hace
		var id = String($(this).parent().attr("id"));
		if (id!=""){
			productOver = true;
			//TALLA|true|3/4|4/5*COLOR|false|TALLA
			//315*TALLA|true|2/3|3/4*COLOR|false||*STOCK|true|4|0*PRECIO|false|14.9|14.9
			var opciones = id.split('*');
			
			idProdOver = opciones[0];
			
			var tallasOpciones = opciones[1].split('|');
			var tallasVisible = (tallasOpciones[1] == "true");
			var tallasClass = (tallasOpciones[1] == "true")? '' : ' style="display:none"';
			var tallas = [];
			for (var i=2; i<tallasOpciones.length; i++){
				tallas[i-2] = tallasOpciones[i];
			}
			
			var coloresOpciones = opciones[2].split('|');
			var coloresVisible = (coloresOpciones[1] == "true");
			var coloresClass = (coloresOpciones[1] == "true")? '' : ' style="display:none"';
			var colores = [];
			for (var i=2; i<coloresOpciones.length; i++){
				colores[i-2] = coloresOpciones[i];
			}
			
			
			function sortTallas(a, b){
				//Compare "a" and "b" in some fashion, and return -1, 0, or 1
				var aa = parseInt(a.split("-")[0]);
				var bb = parseInt(b);
				return (aa > bb)? 1 : (aa < bb)? -1 : 0;
			}

			var htemele  = '<p>Antes de añadir al carrito tienes que elegir:</p><form name="form_listado" id="form_listado" action="#" method="post" enctype="multipart/form-data">';
				htemele += '<label for="campo_talla"'+tallasClass+'>TALLA:</label>';
				htemele += '<select name="campo_talla" id="campo_talla"'+tallasClass+'>';
				
				tallas.sort(sortTallas);
				for (var i=0; i<tallas.length; i++){
					htemele += '<option value="'+tallas[i]+'">'+tallas[i]+'</option>';
				}
				htemele += '</select>';
				htemele += '<label for="campo_color"'+coloresClass+'>COLOR:</label>';
				htemele += '<select name="campo_color" id="campo_color"'+coloresClass+'>';
				
				colores.sort();
				for (var i=0; i<colores.length; i++){
					htemele += '<option value="'+colores[i]+'">'+colores[i]+'</option>';
				}
				htemele += '</select>';
				htemele += '<label for="campo_unidades">UNIDADES:</label>';
				htemele += '<input name="campo_unidades" id="campo_unidades" value="1" />';
				htemele += '</form>';
				
				// ahora se muestra siempre porque está el input con las unidades	
			//if (tallasVisible || coloresVisible) {
				$(this).parent().append($("#carrito_combo"));
				if (productItemOver == this) $("#carrito_combo").fadeIn("slow");
				else $("#carrito_combo").html(htemele).hide().fadeIn("slow");	
			//} else {
			//	$("#carrito_combo").html(htemele).fadeOut("normal");
			//}
			
			$("#carrito_combo select").focus(function () { idFocus = $(this).attr('id'); });
			$("#carrito_combo select").blur(function () { idFocus = ""; });
	
			// el input de cantidad sólo acepta números y con el enter se hace submit
			$("#carrito_combo input").keypress(function (e){
				if( e.which!=8 && e.which!=0 && (e.which<48 || e.which>57)){
					var oldVal = $(this).val();
					var newVal = oldVal.substr(0, oldVal.length);
					$(this).val(newVal);
					
					if (e.which==13){
						// hacemos submit
						$(this).parent().parent().parent().find("a.carrito").click();
					}
					
					return false;
				}
			});
		}
	}, function(e){
		productItemOver = this;
		productOver = false;
		window.setTimeout(function(){ if (!productOver && idFocus=="") $("#carrito_combo").fadeOut('normal'); }, 100);
	});
	
	$("#carrito_combo").hover(function(e){
		productOver = true;
	}, function (e){
		productOver = false;
		window.setTimeout(function(){ if (!productOver && idFocus=="") $("#carrito_combo").fadeOut('normal'); }, 100);
	});
	
	
	
	// añadir al carrito
	form_listado_sending = false;
	$("#content_center .product a.carrito").click(function(e){
		if (!form_listado_sending) addToCartProduct(this);
		return false;
	});
	
	function addToCartProduct(item) {
		// comprobamos que no haya cambiado nada
		var id = String($(item).parent().attr("id"));
		var tallaIndex = $('#campo_talla')[0].selectedIndex;
		var colorIndex = $('#campo_color')[0].selectedIndex;
		var selIndex = (colorIndex!=0)? colorIndex : (tallaIndex!=0)? tallaIndex : 0;
		
		var opciones = id.split('*');
		
		// comprobamos que el precio haya cambiado o no
		var preciosOpciones = opciones[4].split('|');
		var precioCambia = (preciosOpciones[1] == "true");
		//if (precioCambia){
			var precios = [];
			for (var i=2; i<preciosOpciones.length; i++){
				precios[i-2] = preciosOpciones[i];
			}
			var precioOriginal = precios[0];
			var precioFinal = precios[selIndex];
			if (precioOriginal!=precioFinal){
				alert("Atención:\nEl precio para esta configuración del producto ha cambiado respecto al que aparece en la ficha.\nEl precio es de "+precioFinal+"€.\nSi lo desea puede eliminarlo después del carrito de la compra.")
			}	
		//}
		
		// comprobamos que el stock haya cambiado o no
		var stocksOpciones = opciones[3].split('|');
		var stockCambia = (stocksOpciones[1] == "true");
		//if (stockCambia){
			var stocks = [];
			for (var i=2; i<stocksOpciones.length; i++){
				stocks[i-2] = stocksOpciones[i];
			}
			var stockOriginal = stocks[0];
			var stockFinal = stocks[selIndex];
			if (stockFinal < 3){
				alert("Lo sentimos, el producto no está disponible para esta talla/color. Si lo desea puede seleccionar otra talla-color, esperar hasta que esté disponible o contactar con nosotros.");
				//alert("Lo sentimos.\nPero no hay disponibilidad del producto en esta configuración talla-color.\nPruebe con otra configuración, espere hasta que haya disponibilidad o contacte con nosotros.");
				return true;	
			}	
		//}
		
		// recogemos los valores
		var idValue = idProdOver;
		var tallaValue = $('#campo_talla').val();
		var colorValue = $('#campo_color').val();
		var unidadesValue = $("#campo_unidades").val();
		var ajaxUrl = BASE+"ajax/add_to_cart.php";
		var ajaxData = "id="+idValue+"&size="+tallaValue+"&color="+colorValue+"&quantity="+unidadesValue;
		
		// los enviamos por POST
		
		form_listado_sending = true;
		$("#carrito_combo").fadeOut("fast");
		$(item).fadeOut("slow", function(){
			$.ajax({
		        type:	"POST",
		        url:	ajaxUrl,
		        data:	ajaxData,
		        success: function(data){
					$(item).fadeIn("normal", function(){
						
			        	envioOk = data.indexOf("OK-")!=-1;
			        	data = (envioOk)? data.split("OK-")[1] : data.split("ERROR-")[1];
			        	errorCampos = data.indexOf("|")!=-1;
			        	
			        	if (envioOk) {
			        		// se ha enviado, avisamos
							$(item).parent().append($("#carrito_combo"));
							$("#carrito_combo").html('<p>El producto se ha añadido al carrito. Puede seguir comprando o bien <a href="'+BASE+'carrito-de-la-compra">proceder a la compra.</a></p>').fadeIn("slow");
							// y también hay que poner el precio nuevo en todos los sitios
							$("#header #user_navigation #shop_price").hide().html("("+data+" €)").fadeIn("slow");
						} else {
							// mostramos el error
							if (!errorCampos) {
								alert("ha ocurrido un error");
							}
						}
						
						form_listado_sending = false;
			        });
		      	}
			});
		});
	}
	
	// cambiar el valor de los combos (y realizar búsqueda de nuevo)
	$("#Order").change(function(){
		var valueOk = $(this).val();
		$("#OrderBottom option[value='"+valueOk+"']").attr('selected', 'selected');

		document.forms["form_paginador"].submit();
	});
	
	$("#OrderBottom").change(function(){
		var valueOk = $(this).val();
		$("#Order option[value='"+valueOk+"']").attr('selected', 'selected');

		document.forms["form_paginador"].submit();
	});
	
	$("#ProductsPerPage").change(function(){
		var valueOk = $(this).val();
		$("#ProductsPerPageBottom option[value='"+valueOk+"']").attr('selected', 'selected');

		document.forms["form_paginador"].submit();
	});
	
	$("#ProductsPerPageBottom").change(function(){
		var valueOk = $(this).val();
		$("#ProductsPerPage option[value='"+valueOk+"']").attr('selected', 'selected');

		document.forms["form_paginador"].submit();
	});
	
	// desactivamos el click del paginador apagado
	$("#content_center .paginador a.pagina_anterior.disabled").click(function(){
		return false;
	});
	$("#content_center .paginador a.pagina_siguiente.disabled").click(function(){
		return false;
	})
	
});	
