var W3CDOM = (document.createElement && document.getElementsByTagName);
var e = {
	addEvent : function(obj, evType, fn, useCapture){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, useCapture);
			return true;
		}else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}else {
			return false;
		}
	}
}

/** XHConn - Simple XMLHTTP Interface - bfults@gmail.com - 2005-04-08        **
 ** Code licensed under Creative Commons Attribution-ShareAlike License      **
 ** http://creativecommons.org/licenses/by-sa/2.0/                           **/
function XHConn(){
	var xmlhttp, bComplete = false;
	try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
	catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
	catch (e) { try { xmlhttp = new XMLHttpRequest(); }
	catch (e) { xmlhttp = false; }}}
	if (!xmlhttp) return null;
	this.connect = function(sURL, sMethod, sVars, fnDone){
		if (!xmlhttp) return false;
		bComplete = false;
		sMethod = sMethod.toUpperCase();

		try {
			if (sMethod == "GET"){
				xmlhttp.open(sMethod, sURL+"?"+sVars, true);
				sVars = "";
			}else{
				xmlhttp.open(sMethod, sURL, true);
				xmlhttp.setRequestHeader("Method", "POST "+sURL+" HTTP/1.1");
				xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
			}
			xmlhttp.onreadystatechange = function(){
			if (xmlhttp.readyState == 4 && !bComplete){
				bComplete = true;
				fnDone(xmlhttp);
			}};
			xmlhttp.send(sVars);
		}
		catch(z) { return false; }
		return true;
	};
	return this;
}

var ajax={
	sendRecommend:function(){
		var NAME = document.getElementById("r_remitente").value;
		var EMAIL = document.getElementById("r_email").value;
		var FRIENDS =document.getElementById("r_emailAmigo").value;
		var COMMENTS = document.getElementById("r_comentarios").value;
		var URL = document.getElementById("r_url").value;

		var PARAMS = "name="+NAME+"&email="+EMAIL+"&friends="+FRIENDS+"&comments="+COMMENTS+"&url="+URL;

		var myConn = new XHConn();
		if (!myConn) alert("XMLHTTP not available. Try a newer/better browser.");
		var fnWhenDone = function (oXML) {
			if(oXML.responseText=='1'){

document.getElementById("r_exito").getElementsByTagName('span')[0].innerHTML = 
document.getElementById("r_emailAmigo").value.split(',').join(', ');
document.getElementById("r_exito").style.display = "block";

					// volvemos a activar el submit
document.getElementById("r_enviar").disabled = false;
					// borramos los campos
document.getElementById("r_remitente").value = "";
document.getElementById("r_email").value = "";
document.getElementById("r_emailAmigo").value = "";
document.getElementById("r_comentarios").value = "";
			}else{
				alert("error /ajax/enviar");
			}
		};
		
		myConn.connect("/ajax/enviar", "POST", PARAMS, fnWhenDone);
	}
}

var load={
	peticion:null,
	existeId:function(cid){
		if(document.getElementById(cid)) return true;
		return false;
	},
	setEvents:function(){
			
			Shadowbox.init();
			
			ocultarGrupos();	
			
			$("#telefonoRadio").click(function(){
				ocultarGrupos();	
				$("#teleGroup").find("li").css("display","block");
			});
			$("#emailRadio").click(function(){
				ocultarGrupos();	
				$("#mailGroup").find("li").css("display","block");
				
			});
			$("#correoPostalRadio").click(function(){
				ocultarGrupos();	
				$("#postalGroup").find("li").css("display","block");
			});
			
			//ocultar /desocultar  modulo de enviar a un amigo
			var enviarAmigo=$(".enviarAmigo01,.enviarAmigo02");
			if(enviarAmigo.length>0){
					enviarAmigo.css("display","none");
					$("a.enviarAmigo").click(function(){return false;});
					$("a.enviarAmigo").click(function(){
						enviarAmigo.slideDown("slow",function(){$(this).css("display","inline");});
						
						var targetOffset = 4000;
						$('html,body').animate({scrollTop: targetOffset}, 1000);					});
					$("a.cerrarAmigo").click(function(){return false;});
					$("a.cerrarAmigo").click(function(){enviarAmigo.slideUp("slow");});
					
			}
			
			
			//boton imprimir
			$("a.imprimir").click(function(){window.print();return false;})
			
			//boton volver
			$("a.volver").click(function(){return false});
			$("a.volver").click(function(){history.go(-1);});
			
			//redondear inputs
			var aux='<span class="curveInputTL"></span><span class="curveInputTR"></span>';
			var aux2='<span class="curveInputBL"></span><span class="curveInputBR"></span>';
			$(".curves input").after(aux);
			$(".curves input").before(aux2);
			
			
			//añadido metodos propios
			jQuery.validator.addMethod("listaAmigosSeparador",function(value){
				var num=value.split("@");
				var aux=value.split(",");
				if(num.length>aux.length+1 && num.length>1){
					return false
					}
				return true;
			});
			jQuery.validator.addMethod("listaAmigos",function(value){
				var aux=value.split(",");
				for (x in aux){
					aux[x]=jQuery.trim(aux[x]);
					if(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(aux[x]))?true:false)
						return false;
					}
				return true;
			});
			jQuery.validator.addMethod("telefonos",function(value){
				var aux=true;
				if($.trim($("#telefono1").attr("value"))=="" && $.trim($("#telefono2").attr("value"))=="")
					aux=false;
				
				return aux;
			});
			jQuery.validator.addMethod("horaLlamada",function(value,element){
				var aux=true;
				var valor=$(element).val();
				if(valor.toUpperCase()=="SELECCIONE")
					aux=false;
				
				return aux;
			});
			jQuery.validator.addMethod("dia",function(value,element){
				var aux=true;
				var valor=$(element).val();
				if(valor.toUpperCase()=="DÍA")
					aux=false;
				
				return aux;
			});
			jQuery.validator.addMethod("mes",function(value,element){
				var aux=true;
				var valor=$(element).val();
				if(valor.toUpperCase()=="MES")
					aux=false;
				
				return aux;
			});
			//opciones por defecto en los validadores
			jQuery.validator.setDefaults({
				onkeyup:false,
				onblur:false,
				onclick:false
			}
			);
			
			var errorNormal = $('#errorNormal');
			errorNormal.append("<ul></ul>");
			//validarFormularios
				//cita online
					
				var formulario=$(".citaOnline,.estandar");
				if(formulario.length>0){
					formulario.validate({
						errorContainer: errorNormal,
						errorLabelContainer: $("ul", errorNormal),
						wrapper: 'li',
						meta: "validate",
						showErrors:function(errorMap, errorList){
							if(document.getElementById("exitoMain")) {
								document.getElementById("exitoMain").style.display = "none";
							}
							
							formulario.find(".curves").removeClass("errorForm");
							formulario.find(".curves:has(input.error)").addClass("errorForm");
							var aux=[];
							for (y in this.settings.rules){
									for(x in errorList){
									if($(errorList[x]["element"]).attr("name")==y){
										aux.push(errorList[x]);
									}
									}
								}
							this.errorList=aux;
							this.settings.errorLabelContainer.html("");
							this.defaultShowErrors();
						},
						rules:{
							diaCita:{
								dia:true
							},
							mesCita:{
								mes:true
							},
							horaPreferente:{
								horaLlamada:true
							},
							clinica:{
								horaLlamada:true
							},
							motivo:"required",
							nombre:"required",
							apellidos:"required",
							telefono1:{
								telefonos:true,
								number:true,
								rangeLength: [9, 9]
								
							},
							telefono2:{
								number:true,
								rangeLength: [9, 9]
							},
							horaLlamada:{
								horaLlamada:true
							}
						},
						messages:{
							diaCita:"El día es requerido",
							mesCita:{
								mes:"El mes es requerido"
							},
							horaPreferente:{
								horaLlamada:"La hora preferente para la cita es requerida"
							},
							clinica:{
								horaLlamada:"La elección de clínica para su cita es obligatoria"
							},
							motivo:"El motivo de su cita es obligatorio",
							nombre:"Su nombre es requerido.",
							apellidos:"Sus apellidos son requeridos.",
							horaLlamada:{
								horaLlamada:"Debe seleccionar una hora preferente para que le llamemos."
							},
							telefono1:{
								telefonos:" El tel&eacute;fono es requerido",
								number:"El tel&eacute;fono debe ser num&eacute;rico.",
								rangeLength:"El teléfono se debe componer de 9 dígitos"
							},
							telefono2:{
								number:"El teléfono ha de ser numérico",
								rangeLength: "El teléfono se debe componer de 9 dígitos"
							}
						}
					});
				}
				
				$("#piso").click(function(){
					var aux=false;
					aux=$("#numVia").attr("disabled");
					$("#numVia").attr("disabled",!aux);
				});
				//info online
				var formulario=$(".infoOnline");
				if(formulario.length>0){
					formulario.validate({
						errorContainer: errorNormal,
						errorLabelContainer: $("ul", errorNormal),
						wrapper: 'li',
						meta: "validate",
						showErrors:function(errorMap, errorList){
							if(document.getElementById("exitoMain")) {
								document.getElementById("exitoMain").style.display = "none";
							}
							
							formulario.find(".curves").removeClass("errorForm");
							formulario.find(".curves:has(input.error)").addClass("errorForm");
							var aux=[];
							for (y in this.settings.rules){
									for(x in errorList){
									if($(errorList[x]["element"]).attr("name")==y){
										aux.push(errorList[x]);
									}
									}
								}
							this.errorList=aux;
							this.settings.errorLabelContainer.html("");
							this.defaultShowErrors();
						},
						rules:{
							clinica:{
								horaLlamada:true
							},
							comentariosCita:"required",
							nombre:"required",
							apellidos:"required",
							telefono:{
								required:"#telefonoRadio:checked",
								number:true,
								rangeLength: [9, 9]
								
								
							},
							emailInformacion:{
								required:"#emailRadio:checked",
								email:true
							},
							tipoVia:{
								required:"#correoPostalRadio:checked",
								horaLlamada:true
							},
							nombreVia:{
								required:"#correoPostalRadio:checked"
							},
							numVia:{
								required:function(element){
									if($("#correoPostalRadio").attr("checked")){
										if(jQuery.trim($(element).value)=="")
											if($("#piso").attr("checked"))
												return false;
											else
												return true;
									}else
									{
									return false
									}
								},
								number:true
							},
							provincia:{
								required:"#correoPostalRadio:checked",
								horaLlamada:true
							},
							ciudad:{
								required:"#correoPostalRadio:checked"
							},
							codPostal:{
								required:"#correoPostalRadio:checked",
								number:true
							},
							contacto:{
								required:function(element){
								var aux=$("input[name='contacto']:checked");
									if (aux.length==1){
										return false
									}
									else{
										$("#infoRec label").addClass("error");
										return true;
									}
								}
							}
							
							
							
						},
						messages:{
							comentariosCita:"Defina la información que necesita",
							clinica:{
								horaLlamada:"La clínica que le interesa es requerida"
							},
							nombre:"Su nombre es requerido.",
							apellidos:"Sus apellidos son requeridos.",
							telefono:{
								required:" Su tel&eacute;fono es requerido",
								rangeLength:"El teléfono se debe componer de 9 dígitos",
								number:"El formato de su tel&eacute;fono no es v&aacute;lido, debe ser num&eacute;rico."
							},
							emailInformacion:{
								required:"Su email es requerido",
								email:"El formato de su email no es v&aacute;lido."
							},
							tipoVia:{
								required:"El tipo de via es requerido",
								horaLlamada:"El tipo de via es requerido"
							},
							nombreVia:{
								required:"El nombre de via es requerido"
							},
							numVia:{
								required:"El número de vía es requerido",
								number:"El numero de via debe ser un numero"
							},
							provincia:"La provincia es requerida",
							ciudad:"La ciudad es requerida",
							codPostal:{
								required:"El codigo postal es requerido",
								number:"El codigo postal debe ser numérico"
							},
							contacto:"La selección de cómo quiere recibir la información es obligatoria"
						}
					});
				}
				var errorAmigo = $('#errorAmigo');
				errorAmigo.append("<ul></ul>");
				var formulario2=$(".amigo");
				
				if(formulario2.length>0){
					var formulario2Validator=formulario2.validate({
						errorContainer: errorAmigo,
						errorLabelContainer: $("ul", errorAmigo),
						wrapper: 'li',
						meta: "validate",
						event: "keyup",
						showErrors:function(errorMap, errorList){
							document.getElementById("r_exito").style.display = "none";
							formulario2.find(".curves").removeClass("errorForm");
							formulario2.find(".curves:has(input.error)").addClass("errorForm");
							var aux=[];
							for (y in this.settings.rules){
									for(x in errorList){
									if($(errorList[x]["element"]).attr("id")==y){
										aux.push(errorList[x]);
									}
									}
								}
							this.errorList=aux;
							this.settings.errorLabelContainer.html("");
							this.defaultShowErrors();
						},
						debug:true,
						submitHandler:function(){
							$('r_enviar').disabled = true;
							ajax.sendRecommend();
						},
						rules:{
							r_remitente:"required",
							r_email:{
								required:true,
								email:true
							},
							r_emailAmigo:{
								required:true,
								listaAmigosSeparador:true,
								listaAmigos:true
							}
							
						},
						messages:{
							r_remitente:" Su nombre es requerido.",
							r_email:{
								required:"Su email es requerido",
								email:"El formato de su email no es v&aacute;lido."
							},
							r_emailAmigo:{
								required:"El email de su amigo es requerido",
								listaAmigosSeparador:'Debe separar los emails de sus amigos con "comas".',
								listaAmigos:"El formato del email de su amigo no es v&aacute;lido."
							}
							
						}
					});
				}
	}
}

function ocultarGrupos(){
			$("#infoRec label").removeClass("error");
			if($("#teleGroup").find("li input[type='radio']").attr("checked")!=true){
					$("#teleGroup").find("li").css("display","none");
					$("#teleGroup").find("li input[type='radio']").parent().css("display","block");
				}
			if($("#mailGroup").find("li input[type='radio']").attr("checked")!=true){
					$("#mailGroup").find("li").css("display","none");
					$("#mailGroup").find("li input[type='radio']").parent().css("display","block");
				}			
			if($("#postalGroup").find("li input[type='radio']").attr("checked")!=true){
				$("#postalGroup").find("li").css("display","none");
				$("#postalGroup").find("li input[type='radio']").parent().css("display","block");
			}
				
			
		
			
			
}
if(W3CDOM) e.addEvent(window, "load", load.setEvents, false);