$(function() {
	var path = $("#rutaAjaxCitaPrevia").val();

	var pad = function(n) {
		return (parseInt(n)<10)? '0'+parseInt(n):n;	
	};
	var paso = {
		doLoad : function() {
			$("#cp_loading").fadeIn();
		},
		doUnLoad : function(callback) {
			$("#cp_loading").fadeOut(callback);
		},
		citaSel : null,
		val : null,
		optica : null,
		fecha : null,
		tipocita : null,
		hora : null,
		reset : function() {
			paso.val = null;
			paso.optica = null;
			paso.fecha = null;
			paso.tipocita = null;
			paso.hora = null;
		},
		showCal : function(r,callback) {

			var festivos = r['festivos'];
			var maxDate = r['maxDate'];
			var minDate = r['minDate'];

			$("#chooseFechaCitaFestivo").datepicker({
				dateFormat : 'dd/mm/yy',
				minDate : new Date(minDate[0],minDate[1]-1, minDate[2]),
				maxDate : new Date(maxDate[0],maxDate[1]-1, maxDate[2]),
				beforeShowDay:function(date) {
					var date_str = [
						date.getFullYear(),
						pad(date.getMonth()+1),
						pad(date.getDate())
					].join('');
					if (festivos[date_str] == true) return [false,''];														
					return [true,''];
				},
				onSelect : callback
			});
		},		
		uno : function() {
			paso.reset();
			paso.doLoad();	
			$("#cp_paso1, #cp_paso2, #cp_paso3,#cp_paso4,#cp_paso5,#cp_pasofinal").hide().children('div.field').empty();
			$.getJSON(path,{op:'uno',tipo:paso.citaSel},function(r) {
				paso.doUnLoad(function() {
					var dPaso1 = $("#cp_paso1");
					if (r.error) {
						$("div.field",dPaso1).hide();
						$("label",dPaso1).html(r.error);
						dPaso1.addClass("ferror").fadeIn();
						return;
					}
					$("div.field",dPaso1).show().html(r.field);
					$("label",dPaso1).html(r.label);
					dPaso1.removeClass("ferror").fadeIn();

					$("select",dPaso1).bind("change",function() {
						if ($(this).val() == '') return;
						paso.val = $(this).val();
						paso.dos();
					});
				});
			});
			
		},
		dos : function() {
			$("#cp_paso2, #cp_paso3, #cp_paso4,#cp_paso5,#cp_pasofinal").slideUp().children('div.field').empty();
			paso.doLoad();
			
			$.getJSON(path,{op:'dos',tipo:paso.citaSel,val:paso.val},function(r) {
				paso.doUnLoad(function() {
					var dPaso2 = $("#cp_paso2");
					if (r.error) {
						$("div.field",dPaso2).hide();
						$("label",dPaso2).html(r.error);
						dPaso2.addClass("ferror").fadeIn();
						return;
					}
					$("label",dPaso2).html(r.label).removeClass("ferror");
					$("div.field",dPaso2).show().html(r.field);
		
					
					dPaso2.removeClass("ferror").fadeIn();
					if($("#chooseFechaCitaFestivo").length>0) {
						$("#valueFechaCitaFestivo").fadeOut().bind("click",function() {
							paso.dos();					
						});
						paso.showCal(r,function(date,o) {
							$(this).hide();
							$("#valueFechaCitaFestivo span").html(date);
							paso.fecha = date;
							$("#valueFechaCitaFestivo").fadeIn();
							paso.tres();						
						});
					} else {
						var elems = $("input",dPaso2);
						if (document.attachEvent) elems.bind("click",function() { $(this).trigger("change"); });
						elems.bind("change",function() {
							window.setTimeout(function() {
								var selTemp = $("input:checked",dPaso2).val();
								if (selTemp == paso.tipocita) return;
								paso.tipocita = selTemp;
								paso.tres();
							},100);
						});
					
					}
					
				});
			});
		},
		tres : function() {
			$("#cp_paso3, #cp_paso4,#cp_paso5,#cp_pasofinal").slideUp().children('div.field').empty();
			paso.doLoad();
			$.getJSON(path,{op:'tres',tipo:paso.citaSel,val:paso.val,fecha:paso.fecha},function(r) {
				paso.doUnLoad(function() {
					var dPaso3 = $("#cp_paso3");
					if (r.error) {
						$("div.field",dPaso3).hide();
						$("label",dPaso3).html(r.error);
						dPaso3.addClass("ferror").fadeIn();
						return;
					}
					$("div.field",dPaso3).show().html(r.field).removeClass("ferror");
					$("label.lab",dPaso3).html(r.label);				
					dPaso3.removeClass("ferror").fadeIn();
					var elems = $("input",dPaso3);
					if(elems.length == 0) {
						$("#valueFechaCitaFestivo").fadeOut().bind("click",function() {
							paso.tres();					
						});
						paso.showCal(r,function(date,o) {
							$(this).hide();
							$("#valueFechaCitaFestivo span").html(date);
							paso.fecha = date;
							$("#valueFechaCitaFestivo").fadeIn();
							paso.cuatro();						
						});
					} else {
						
						if (document.attachEvent) elems.bind("click",function() { $(this).trigger("change"); });
						elems.bind("change",function() {
							window.setTimeout(function() {
								var selTemp = $("input:checked",dPaso3).val();
								if (selTemp == paso.tipocita) return;
								paso.tipocita = selTemp;
								paso.cuatro();
							},100);
						});
					}
				});
			});
		},
		cuatro : function() {
			$("#cp_paso4,#cp_paso5,#cp_pasofinal").slideUp().children('div.field').empty();
			paso.doLoad();
			$.getJSON(path,{op:'cuatro',tipo:paso.citaSel,val:paso.val,fecha:paso.fecha,tipoCita:paso.tipocita},function(r) {
				paso.doUnLoad(function() {
					var dPaso4 = $("#cp_paso4");
					if (r.error) {
						$("div.field",dPaso4).hide();
						$("label",dPaso4).html(r.error);
						dPaso4.addClass("ferror").fadeIn();
						return;
					}
					$("div.field",dPaso4).show().html(r.field).removeClass("ferror");
					$("label.lab",dPaso4).html(r.label);				
					dPaso4.removeClass("ferror").fadeIn();
					if (r.horas) {
						var horas = r.horas;
						
						$("select",dPaso4).bind("change",function() {
								paso.hora = $(this).val();
								$("p",$("#cp_listadoOpticasHoras")).css("display","none");
								for (var _i in horas[paso.hora]) $("#moSelHoraOptica_"+horas[paso.hora][_i]).parent("p").show();
						
						});
						var elems = $("input",dPaso4);
						if (document.attachEvent) elems.bind("click",function() { $(this).trigger("change"); });
						elems.bind("change",function() {
							window.setTimeout(function() {
								var selTemp = $("input:checked",dPaso4).val();
								if (selTemp == paso.optica) return;
								paso.optica = selTemp;
								paso.cinco();
							},100);
						});
						
					} else {
						$("select",dPaso4).bind("change",function() {
							if ($(this).val() == '') paso.cuatro();
							else {
								paso.hora = $(this).val();
								paso.cinco();
							}
						});
					}
				});
			});
			
		},
		cinco : function() {
			$("#cp_paso5,#cp_pasofinal").slideUp().children('div.field').empty();
			paso.doLoad();
			$.getJSON(path,{op:'cinco',tipo:paso.citaSel},function(r) {
				paso.doUnLoad(function() {
					var dPaso5 = $("#cp_paso5");
					if (r.error) {
						$("div.field",dPaso5).hide();
						$("label",dPaso5).html(r.error);
						dPaso5.addClass("ferror").fadeIn();
						return;
					}
					$("div.field",dPaso5).show().html(r.field);
					$("label.lab",dPaso5).html(r.label);
					dPaso5.fadeIn();
					$("div.field input:eq(0)",dPaso5).focus();

					$("input[name=nologueado]",dPaso5).bind("click",function() {
					    var m = "logueado";
					    var o = "deslogueado";
					    if ($(this).attr('checked')) {
					        m = "deslogueado";
					        o = "logueado";
					    }
					    $(this).attr("disabled","disabled");
				        $("#cp_"+o,dPaso5).slideUp(function(){
				            $("#cp_"+m,dPaso5).slideDown(function(){
				                $("input[name=nologueado]",dPaso5).removeAttr("disabled");
				            });
				        });
					});

					$("input[type=button]",dPaso5).show().bind("click",function() {
						$(this).attr("disabled","disabled");
						var nombre = $("input[name=nombre]",dPaso5).val();
						var apellidos = $("input[name=apellidos]",dPaso5).val();
						var email = $("input[name=email]",dPaso5).val();
						var nologueado = ($("input[name=nologueado]",dPaso5).attr('checked'))? "true":"false";
						if (!$("input[name=nologueado]",dPaso5).is("input")) {
						    nologueado = "true";
						}
						var error = false;

						if (nologueado == "true") {
    						if (nombre == '') {
    							$("input[name=nombre]",dPaso5).css("border","1px solid red");
    							error = true; 
    						} else {
    							$("input[name=nombre]",dPaso5).css("border","1px solid black");
    						}
    						
    						if (apellidos == '') {
    							$("input[name=apellidos]",dPaso5).css("border","1px solid red");
    							error = true; 
    						} else {
    							$("input[name=apellidos]",dPaso5).css("border","1px solid black");
    						}
						}

						if (error) {
							$(this).removeAttr("disabled");
							return;
						}

						var button = $(this);
						paso.doLoad();
						if (paso.citaSel == "tipoCitaPrevia2") paso.val = paso.optica;

						$.getJSON(path,{op:'final',tipo:paso.citaSel,val:paso.val,fecha:paso.fecha,tipoCita:paso.tipocita,hora:paso.hora,nombre:nombre,apellidos:apellidos,email:email,nologueado:nologueado},function(r) {
							paso.doUnLoad(function() {

								var final = $("#cp_pasofinal");

								if (r.error)  {
									button.removeAttr("disabled");
									$("label",final).html(r.error);
									final.addClass("ferror").fadeIn();
									return;

								}
								button.hide();
								$("#cp_paso0, #cp_paso1, #cp_paso2, #cp_paso3,#cp_paso4,#cp_paso5").hide();
								final.removeClass("ferror").show();
								$("label",final).html(r.resultado);
							});
						
						});
					
					});
				});
			});
		},
		foo : false
	};

	$(".paso1trigger").live("click",function(e) {
		e.stopPropagation();
		e.preventDefault();
		paso.uno();
	});	
	
	$(".paso2trigger").live("click",function(e) {
		e.stopPropagation();
		e.preventDefault();
		paso.dos();
	});
	
	$(".paso3trigger").live("click",function(e) {
		e.stopPropagation();
		e.preventDefault();
		paso.tres();
	});
	
	$(".paso5trigger").live("click",function(e) {
		e.stopPropagation();
		e.preventDefault();
		paso.cinco();
	});
	
	
	if (document.attachEvent) $("#tipoCitaPrevia1,#tipoCitaPrevia2").bind("click",function() { $(this).trigger("change"); });
	$("#tipoCitaPrevia1,#tipoCitaPrevia2").bind("change",function() {
		window.setTimeout(function() {
			var selTemp = $("#fCitaprevia input[name=tipoCitaPrevia]:checked").attr("id");
			if (selTemp == paso.citaSel) return;
			paso.citaSel = selTemp;
			paso.uno();
		},100);
	});


});
