var siteRoot = "";

Array.prototype.inArray = function (value) {
	var i;
	for (i=0; i < this.length; i++) {
		if (this[i] === value) {
			return true;
		}
	}
	return false;
};

$(document).ready(function() {
	$("#selector_lenguaje")
	/*
	.blur(
		function() {
			$("#elegir_lenguaje").hide();
		}
	)
	*/
	.click(
		function() {
			var $elegir_lenguaje = $("#elegir_lenguaje");
			$elegir_lenguaje.is(":visible") ? $elegir_lenguaje.hide() : $elegir_lenguaje.show();
		}
	);
	
	$("#elegir_lenguaje a").click(
		function() {
			var id = $(this).attr("href");
			$("#idioma_usuario").val(id);
			$("form[name=idioma_usuario]").submit();
			return false;
		}
	);
	
	$("a#imprimir").click(
		function() {
			print();
			return false;
		}
	);
	
	$("a.gastos_envio").click(
		function() {
			$("#nextBtn, #prevBtn").hide(); // para corregir problema de z-index en ie7
			$("div#gastos_envio").show();
			
			return false;
		}
	);
	
	$("div.layer a.cerrar").click(
		function() {
			$("#nextBtn, #prevBtn").show(); // para corregir problema de z-index en ie7
			$(this).closest("div.layer").hide();
			
			return false;
		}
	);
		
	if (window.page != null) { // se ha declarado?
		// dispatch evento init
		switch (page) {
			case "referencia":
				referencia();
				break;
			case "bolsa":
				bolsa();
				break;
			case "bolsaPaso2":
				bolsaPaso2();
				break;
			case "bolsaPaso3":
				bolsaPaso3();
				break;
			case "perfil":
				perfil();
				break;
			case "catalogo":
				catalogo();
				break;
			case "distribuidores":
				distribuidores();
				break;
			case "recordarContrasena":
				recordarContrasena();
				break;
		}
	}
});

function referencia() {
	$("button#anadir").click(
		function() {
			if ($("select[name=talla]").val() == "") {
				$(this).formError(labels['a_Te has olvidado de poner la talla que necesitas']);
				return false;
			}
			if (!$("input[name=unidades]").mandatory(labels['a_Unidades'])) return false;
			if (!$("input[name=unidades]").validateInteger(labels['a_Unidades'])) return false;
			
			var unidades = $("input[name=unidades]").val();
			if (unidades > 0) {
				var data = "referenciaId="+$("input[name=referenciaId]").val()+"&referenciaColorId="+$("input[name=referenciaColorId]").val()+"&referenciaTallaId="+$("select[name=talla]").val()+"&unidades="+unidades+"&action=insert";
				$.ajax({
					type: "POST",
					url: siteRoot + $("input[name=pathIdioma]").val() + "ajax_updatebolsa/",
					data: data,
					success: function(msg) {
						$("div#mi_bolsa span").html(msg);
						
						$("div#finalizar_compra").show();
						
						$("p#anadido").show();
						setTimeout(
							function() {
								$("p#anadido").fadeOut(2000);
							}, 1000);
					}
				});
			}
			
			return false;
		}
	);
	
	$("ul.colores a").click(
		function() {
			var id = $(this).attr("href").split("-")[1];
			$("input[name=referenciaColorId]").val(id);
			
			// se sustituye la foto
			$("div#foto img").attr("src", $("input[name=pathReferenciaColor]").val() + $("input[name=referenciaColor["+id+"]]").val());
			// se sustituye el nombre
			$("div#foto span").html($(this).children("img").attr("alt"));
			
			// se selecciona el color
			$("ul.colores li").removeClass("selected");
			$(this).parent("li").addClass("selected");
			return false;
		}
	);
	
	$("a.calcular").click(
		function() {
			$("div#cambios").show();
			
			return false;
		}
	);
	
	$("div#consultar_tallas a.consultar_tallas").click(
		function() {
			$("div#consultar_tallas div.layer").show();
			
			return false;
		}
	);
	
	$("div#consultar_tallas a.imprimir").click(
		function() {
			window.open($(this).attr("href"),'','width=731,height=500');
			return false;
		}
	);
}

function bolsa() {
	// arrayTimeout permite gestionar un retardo antes de hacer la llamada ajax 
	// para evitar llamadas cuando se ha modificado el valor rápidamente

	// arrayValues permite evitar llamadas ajax inútiles caundo el valor  no ha 
	// cambiado	
	$.extend({arrayValues: new Array(), arrayTimeout: new Array(), processPromocion: false});
	
	// Se inicializa con los valores iniciales 
	$("form[name=paso1] input[name=unidades]").each(
		function() {
			var id = $(this).closest("tr").attr("id");
			$.arrayValues[id] = $(this).val();
		}
	);
	
	$("form[name=paso1] input[name=unidades]").setMask({
		mask: '999', 
		autoTab: false,
		selectCharsOnFocus: false,
		onValid: function() {
			var o = $(this);
			// necesito un timeout por que si no el valor del campo no llega actualizado
			setTimeout(function() {
				var val = o.val();
				var $row = o.closest("tr");
				var id = $row.attr("id");
				if ($.arrayValues[id] != val) {
					$.arrayValues[id] = val;
					if ($.arrayTimeout[id] != null) {
						// si hay un timeout corriendo para esta prenda, se para para que vuelva a empezar
						clearTimeout($.arrayTimeout[id]);
					}
					$.arrayTimeout[id] = setTimeout(
						function() {
							var $spanColumna = $row.children("td.subtotal").children("strong");
							var arr = id.split("_");
							arr = arr[1].split("-");
							if (val == "") val = 0;
							var data = "referenciaId="+arr[0]+"&referenciaColorId="+arr[1]+"&referenciaTallaId="+arr[2]+"&unidades="+val+"&action=update";
							$.ajax({
								type: "POST",
								url: siteRoot + "ajax_updatebolsa/",
								async: true,
								data: data,
								success: function(msg) {
									//alert (msg);
									var json = eval('(' + msg + ')');
									var result = json.result;
									// actualiza el precio de la columna
									$spanColumna.html(result[0] + " &euro;");
									// actualiza precio final
									$("#importe").html(result[2]);
									// subtotal
									$("#subtotal").html(result[1]);
								}
							});
						}, 1000);
				}
			}, 1);
		}
	});
	
	$("form[name=paso1] a.eliminar").click(
		function() {
			var id = $(this).closest("tr").attr("id");
			var arr = id.split("_");
			arr = arr[1].split("-");
			var data = "referenciaId="+arr[0]+"&referenciaColorId="+arr[1]+"&referenciaTallaId="+arr[2]+"&action=delete";
			$.ajax({
				type: "POST",
				url: siteRoot + "ajax_updatebolsa/",
				data: data,
				success: function(msg) {
					//alert (msg);
					$("#"+id).remove();
					
					var json = eval('(' + msg + ')');
					var result = json.result;
					
					// actualiza precio final
					$("#importe").html(result[1]);
					// subtotal
					$("#subtotal").html(result[0]);
					
					//aplica clase a la última prenda
					$("table tr.prenda").removeClass("prenda_last");
					$("table tr.prenda:last").addClass("prenda_last");
					
					if ($("table tr.prenda[id]").size() == 0) {
						var html = '\
									<tr class="prenda">\
										<td class="eliminar"></td>\
										<td class="foto"></td>\
										<td class="producto"></td>\
										<td class="precio"></td>\
										<td class="unidades"></td>\
										<td class="subtotal"></td>\
										<td class="relleno">&nbsp;</td>\
									</tr>\
						';
						$("table tbody").prepend(html);
					}
				}
			});
			
			return false;
		}
	);
	
	var checkPromocion = function() {
		$.processPromocion = true;
		if (!$("input[name=promocion]").mandatory(labels['a_C&oacute;digo'])) {
			$.processPromocion = false;
			return false;
		}
		
		var data = "promocion="+$("input[name=promocion]").val();
		$.ajax({
			type: "POST",
			url: siteRoot + $("input[name=pathIdioma]").val() + "ajax_promocion/",
			data: data,
			success: function(msg) {
				var json = eval('(' + msg + ')');
				var result = json.result;
				if (result == 0) {
					alert (labels['a_Error en el c&oacute;digo de promoci&oacute;n. Int&eacute;ntelo de nuevo, gracias.']);
				} else {
					$("span.promocion_ok").show();
					var importe = $("span#subtotal").html() * ((100 - result) / 100);
					$("span#importe").html(importe.toFixed(2));
				}
			}
		});
		$.processPromocion = false;
	}
	
	$("tr#promocion a").click(
		function() {
			checkPromocion();
			return false;
		}
	);
	
	$("input[name=promocion]").keydown(
		function(e) {
			var characterCode = e.keyCode;
			if (characterCode == 13) {
				checkPromocion();
				return false;
			}
		}
	);
	
	$("form[name=paso1]").submit(
		function() {
			if ($.processPromocion) return false;
			
			if ($("table tr.prenda[id]", $(this)).size() == 0 || $("span#importe").html() == 0) {
				alert (labels['a_Para continuar debe tener alguna prenda en la bolsa.']);
				
				return false;
			}
		}
	);
}

function bolsaPaso2() {
	$("#mismos_facturacion").click(
		function() {
			$("#nombre_envio").val($("#nombre_facturacion").val());
			$("#apellidos_envio").val($("#apellidos_facturacion").val());
			$("#nombre_comercial_envio").val($("#nombre_comercial_facturacion").val());
			$("#direccion_envio").val($("#direccion_facturacion").val());
			$("#codigo_postal_envio").val($("#codigo_postal_facturacion").val());
			$("#ciudad_envio").val($("#ciudad_facturacion").val());
			$("#provincia_envio").val($("#provincia_facturacion").val());
			$("#pais_envio option[value="+$("#pais_facturacion option:selected").val()+"]").attr("selected", "selected");
			$("#telefono_envio").val($("#telefono_facturacion").val());
		}
	);
	
	$("input.tipo").click(
		function() {
			$("#datos_empresa").is(":visible") ? $("#datos_empresa").hide() : $("#datos_empresa").show();
		}
	);
	
	$("form[name=paso2]").submit(
		function() {
			if (!$("#nombre_facturacion").mandatory(labels['a_Nombre'])) return false;
			if (!$("#apellidos_facturacion").mandatory(labels['a_Apellidos'])) return false;
			if ($("input.tipo:checked").val() == 1) {
				//if (!$("#nombre_comercial_facturacion").mandatory(labels['a_Nombre comercial'])) return false;
				if (!$("#razon_social_facturacion").mandatory(labels['a_Raz&oacute;n social'])) return false;
				if (!$("#nif_facturacion").mandatory('NIF/CIF')) return false;
				//if (!$("#sector_facturacion").mandatory(labels['a_Sector'])) return false;
			}
			if (!$("#direccion_facturacion").mandatory(labels['a_Direcci&oacute;n'])) return false;
			if (!$("#codigo_postal_facturacion").mandatory(labels['a_C&oacute;digo postal'])) return false;
			if (!$("#ciudad_facturacion").mandatory(labels['a_Ciudad'])) return false;
			//if (!$("#provincia_facturacion").mandatory(labels['a_Provincia'])) return false;
			if (!$("#pais_facturacion").mandatory(labels['a_Pa&iacute;s'])) return false;
			if (!$("#telefono_facturacion").mandatory(labels['a_Tel&eacute;fono'])) return false;
			if (!$("#email_facturacion").mandatory('Email')) return false;
			
			if (!$("#nombre_envio").mandatory(labels['a_Nombre'])) return false;
			if (!$("#apellidos_envio").mandatory(labels['a_Apellidos'])) return false;
			if (!$("#direccion_envio").mandatory(labels['a_Direcci&oacute;n'])) return false;
			if (!$("#codigo_postal_envio").mandatory(labels['a_C&oacute;digo postal'])) return false;
			if (!$("#ciudad_envio").mandatory(labels['a_Ciudad'])) return false;
			//if (!$("#provincia_envio").mandatory(labels['a_Provincia'])) return false;
			if (!$("#pais_envio").mandatory(labels['a_Pa&iacute;s'])) return false;
			if (!$("#telefono_envio").mandatory(labels['a_Tel&eacute;fono'])) return false;
			var arrPaisesVenta = $("input[name=paisesVenta]").val().split(",");
			if (!arrPaisesVenta.inArray($("#pais_envio").val())) {
				alert (labels['a_Lo lamentamos pero no vendemos en este pa&iacute;s.']);
				return false;
			}
			
			if ($("input[name=acepto]").size()) {
				if (!$("input[name=acepto]").is(":checked")) {
					$(this).formError(labels["a_Debe aceptar las condiciones generales antes de poder continuar"]);
					return false;
				}
			}
			
			return true;
		}
	);
	
	$("a#clausula").click(
		function() {
			window.open($(this).attr("href"),'','width=794,height=320');
			return false;
		}
	);
}

function bolsaPaso3() {
	$("#cuerpo form").submit(
		function() {
			if ($("input[name=forma_pago]").size() > 0) {
				if (!$("input[name=forma_pago]").mandatory(labels['a_Forma de pago'])) return false;
				
				switch ($("input[name=forma_pago]:checked").val()) {
					case "1":
						break;
					case "2":
						$(this).attr("action", "dopagopaypal");
						break;
					case "3":
						$(this).attr("action", $("input[name=pathIdioma]").val()+"txok");
						break;
				}
			} else {
				$(this).attr("action", $("input[name=pathIdioma]").val()+"txok");
			}
		}
	);
}

function perfil() {
	$("form[name=perfil]").submit(
		function() {
			if (!$("#nombre_facturacion").mandatory(labels['a_Nombre'])) return false;
			if (!$("#apellidos_facturacion").mandatory(labels['a_Apellidos'])) return false;
			if ($("input.tipo]:checked").val() == 1) {
				if (!$("#nombre_comercial_facturacion").mandatory(labels['a_Nombre comercial'])) return false;
				if (!$("#razon_social_facturacion").mandatory(labels['a_Raz&oacute;n social'])) return false;
				if (!$("#nif_facturacion").mandatory('NIF/CIF')) return false;
				if (!$("#sector_facturacion").mandatory(labels['a_Sector'])) return false;
			}
			if (!$("#direccion_facturacion").mandatory(labels['a_Direcci&oacute;n'])) return false;
			if (!$("#codigo_postal_facturacion").mandatory(labels['a_C&oacute;digo postal'])) return false;
			if (!$("#ciudad_facturacion").mandatory(labels['a_Ciudad'])) return false;
			if (!$("#provincia_facturacion").mandatory(labels['a_Provincia'])) return false;
			if (!$("#pais_facturacion").mandatory(labels['a_Pa&iacute;s'])) return false;
			if (!$("#email_facturacion").mandatory('Email')) return false;
			if (!$("#password_facturacion1").mandatory(labels['a_Contrase&ntilde;a'])) return false;
			if (!$("#password_facturacion2").mandatory(labels['a_Contrase&ntilde;a'])) return false;
			if (!$("#password_facturacion1").validatePassword($("#password_facturacion2"))) return false;
			
			return true;
		}
	);
	
	$("input.tipo").click(
		function() {
			$("#datos_empresa").is(":visible") ? $("#datos_empresa").hide() : $("#datos_empresa").show();
		}
	);
	
	$("a.baja").click(
		function() {
			return confirm(labels['a_&iquest;Seguro que quieres darte de baja? Si decides darte de baja de la base de datos de Balneo todos tus datos ser&aacute;n eliminados inmediatamente y s&oacute;lo se conservaran para aspectos fiscales. Si lo que quieres es dejar de recibir nuestra Newsletter, puedes modificar tus datos y desactivar la opci&oacute;n de recibirla.']);
		}
	);
}

function catalogo() {
	$("form[name=catalogo]").submit(
		function() {
			if (!$("#nombre").mandatory(labels['a_Nombre'])) return false;
			if (!$("#apellidos").mandatory(labels['a_Apellidos'])) return false;
			if (!$("#sector").mandatory(labels['a_Sector'])) return false;
			if (!$("#email").mandatory('Email')) return false;
			
			if (!$("input[name=acepto]").is(":checked")) {
				$(this).formError(labels["a_Debe aceptar las condiciones generales antes de poder descargar el cat&aacute;logo"]);
				return false;
			}
			
			return true;
		}
	);
	
	$("a#clausula").click(
		function() {
			window.open($(this).attr("href"),'','width=794,height=320');
			return false;
		}
	);
}

function distribuidores() {
	$("#pais_distribuidor").change(
		function() {
			var data = "paisId="+$(this).val();
			$.ajax({
				type: "POST",
				url: siteRoot + $("input[name=pathIdioma]").val() + "ajax_distribuidorbypais/",
				data: data,
				success: function(html) {
					$("p#datos_distribuidor").empty();
					$("p#datos_distribuidor").append(html);
				}
			});
		}
	);
}

function recordarContrasena() {
	$("form.paso2").submit(
		function() {
			if (!$("#email").mandatory('Email')) return false;
			
			return true;
		}
	);
}