// JavaScript Document
 oReserva = new function(){

		var erEmail = RegExp('^[a-z0-9_\.\-]+@[a-z0-9_\-]+(\.[a-z0-9_\-]{2,5})*\.[a-z]{2,4}$');
		var erNumero = RegExp('^[0-9]+$');
		var erFecha = RegExp('^(0[1-9]|[1-2][0-9]|3[0-1])/(0[1-9]|1[0-2])/[1-2][0-9]{3}$');
		var erSiNo = RegExp('^[01]$');
		var errorClass = 'fieldsetError';
		var cargandoForm = false;
		var oCalFechaIngreso = null;

		//A
		this.analizarTecla = function(e){
			if(e.keyCode == 13)FireEvent($('enviarReserva'),'click');
		}
		

		//E
		this.enviarReserva = function(evt){
			if(!iniciado)inicializarReserva();
			var error = false, t = '';
			
			if(evt){ StopEvent(evt); }
			if(wait){ return false; }
			
			

			nombre.onblur();
			if(nombre.parentNode.className == errorClass){ error = true; }
			
			apellido.onblur();
			if(apellido.parentNode.className == errorClass){ error = true; }
			
			email.onblur();
			if(email.parentNode.className == errorClass){ error = true; }
			
			pais.onblur();
			if(pais.parentNode.className == errorClass){ error = true; }
			
			
			provincia.onblur();
			if(provincia.parentNode.className == errorClass){ error = true; }
			
			ciudad.onblur();
			if(ciudad.parentNode.className == errorClass){ error = true; }

			telefono.onblur();
			if(telefono.parentNode.className == errorClass){ error = true; }
			
			comentario.onblur();
			if(comentario.parentNode.className == errorClass){ error = true; }
			

			
			
			if(error){
				divError.style.display = 'block';
				return false;
			}
			

			
			wait = true;
			reqType = 'reservar';
			
			t += getDatosPersonales();
			t += 'comentario' + SEP_IGUAL + comentario.value + SEP_AND;
			t += 'fechaEgreso' + SEP_IGUAL + trim(fechaEgreso.value) + SEP_AND;
			t += 'fechaIngreso' + SEP_IGUAL + trim(fechaIngreso.value) + SEP_AND

			t += 'tipoHabitacion' + SEP_IGUAL + trim(tipoHabitacion.value) + SEP_AND 
			t += 'visitantes' + SEP_IGUAL + trim(visitantes.value) + SEP_AND 
			t += 'traslado' + SEP_IGUAL + ((trasladoSi.checked)? 1 : 0) + SEP_AND;
			t += 'celular' + SEP_IGUAL + trim(celular.value) + SEP_AND			
			t += 'codPais' + SEP_IGUAL + trim(codPais.value) + SEP_AND; 
			t += 'codArea' + SEP_IGUAL + trim(codArea.value) + SEP_AND;
			
			Loader.show();
			Blocker.show();
			req.pedir(DIR_SERVER_ROOT + 'requests/reserva.php', t);
		}		
		//G
		var getDatosPersonales = function(){
			datosPersonales = '';
			datosPersonales += 'nombre' + SEP_IGUAL + trim(nombre.value) + SEP_AND;
			datosPersonales += 'apellido' + SEP_IGUAL + trim(apellido.value) + SEP_AND;
			datosPersonales += 'email' + SEP_IGUAL + trim(email.value) + SEP_AND;
			datosPersonales += 'idPais' + SEP_IGUAL + trim(pais.value) + SEP_AND;
			datosPersonales += 'idProvincia' + SEP_IGUAL + trim(provincia.value) + SEP_AND;
			datosPersonales += 'idCiudad' + SEP_IGUAL + trim(ciudad.value) + SEP_AND;
			datosPersonales += 'nombreProvincia' + SEP_IGUAL + trim(provinciaN.value) + SEP_AND;
			datosPersonales += 'nombreCiudad' + SEP_IGUAL + trim(ciudadN.value) + SEP_AND;
			datosPersonales += 'telefono' + SEP_IGUAL + trim(telefono.value) + SEP_AND;
			
			oCookie.set('datosPersonales', datosPersonales);
			return datosPersonales;
		}		
	
		this.inicializarReserva = function(){
			
			
			nombre = $('nombreReserva');
			if(!nombre.onblur){
				nombre.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(nombre);
			}
			
			apellido = $('apellidoReserva');
			if(!apellido.onblur){
				apellido.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(apellido);
			}
			
			email = $('emailReserva');
			if(!email.onblur){
				email.onblur = function(){
					var v = trim(this.value);
					if(v == '' || !erEmail.test(v)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(email);
			}
			
			pais = $('paisReserva');
			if(!pais.onchange){
				pais.onchange = function(){
					provincia.disabled = ciudad.disabled = true;
					
					provinciaN.style.display = ciudadN.style.display = 'none';
					
					reqType = 'provincias';
					
					var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
					v += 'idPais' + SEP_IGUAL + pais.value + SEP_AND;
					
					req.pedir(DIR_SERVER_ROOT + 'requests/zonas_geograficas.php', v);
				};
			}
			
			if(!pais.onblur){
				pais.onblur = function(){
					var v = trim(this.value);
					if(v == '' || !erNumero.test(v)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''}
				}.closure(pais);
			}
			
			
			provincia = $('provinciaReserva');
			if(!provincia.onchange){
				provincia.onchange = function(){
					
					var v = trim(provincia.value);
					
					ciudad.disabled = true;
					provinciaN.style.display = (v == '0')? '' : 'none';
					ciudadN.style.display = 'none';
					
					if(erNumero.test(v) && v != ''){
						
						reqType = 'ciudades';
						
						var v = 'tipo' + SEP_IGUAL + reqType + SEP_AND;
						v += 'idProvincia' + SEP_IGUAL + provincia.value + SEP_AND;
						
						req.pedir(DIR_SERVER_ROOT + 'requests/zonas_geograficas.php', v);
					}
				};
			}
			if(!provincia.onblur){
				provincia.onblur = function(){
					provinciaN.onblur();
				}.closure(provincia);
			}
			
			provinciaN = $('provinciaNombreReserva');
			if(!provinciaN.onblur){
				provinciaN.onblur = function(){
					var v = trim(this.value);
					if(provincia.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(provinciaN);
			}
			
			ciudad = $('ciudadReserva');
			if(!ciudad.onchange){
				ciudad.onchange = function(){
					
					var v = trim(ciudad.value);
					
					ciudadN.style.display = (v == '0')? '' : 'none';

					
				};
			}
			if(!ciudad.onblur){
				ciudad.onblur = function(){
					ciudadN.onblur();					
				}.closure(ciudad);
			}
			
			ciudadN = $('ciudadNombreReserva');
			if(!ciudadN.onblur){
				ciudadN.onblur = function(){
					var v = trim(this.value);
					if(ciudad.value == '0' && (v == '' || v.length < 3)){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(ciudadN);
			}
					
			telefono = $('telefonoReserva');
			if(!telefono.onblur){
				telefono.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(telefono);
			}
			
			comentario = $('comentarioReserva');
			if(!comentario.onblur){
				comentario.onblur = function(){
					var v = trim(this.value);
					if(v == '' || v.length < 3){ this.parentNode.className = errorClass; }
					else{ this.parentNode.className = ''; }
				}.closure(comentario);
			}
			
			
			celular = $('celularReserva');
			tipoHabitacion = $('tipoHabitacion');
			visitantes = $('visitantesReserva');
			trasladoSi = $('trasladoSiReserva');
			trasladoNo = $('trasladoNoReserva');
			codPais = $('codPaisReserva');
			codArea = $('codAreaReserva');
			divError = $('errorReserva');
			
			
			var oCalFechaIngreso = new Calendario({'idInput' : 'fechaIngreso','anexo' : 'FechaIngreso','limiteInferior' : LIMITE_INICIO_BOOKING,'A_CALTPL' : A_CALTPL});
			oCalFechaIngreso.cuandoAbro = function(){
				$('popFechaEgreso').style.display = 'none';
			}
			var oCalFechaEgreso = new Calendario({'idInput' : 'fechaEgreso','anexo' : 'FechaEgreso','limiteInferior' : LIMITE_INICIO_BOOKING,'A_CALTPL' : A_CALTPL});			
			oCalFechaEgreso.cuandoAbro = function(){
				$('popFechaIngreso').style.display = 'none';
			}
			
			if(Nav.esIE7){
				$('popFechaIngreso').style.marginLeft = '0px';
				$('popFechaEgreso').style.marginLeft = '0px';			
			}
			
			fechaIngreso = $('fechaIngreso');
			fechaEgreso = $('fechaEgreso');			
			$('fechaIngreso').value = '';
			$('fechaEgreso').value = '';			
			iniciado = true;
		}	
		
		var abrirCalendarioFechaIngreso = function(){
			oCalFechaIngreso.limiteInferior = LIMITE_INICIO_BOOKING;
			if($('fechaIngreso').value == '')$('fechaIngreso').value = oCalFechaIngreso.limiteInferior;			
			oCalFechaIngreso.f_show();
			$('popFechaIngreso').style.display = 'block';

		}			
		
	
		var cerrarCalendarioFechaIngreso = function(n_date,forzar){
			if (n_date){
				oCalFechaIngreso.e_input.value = oCalFechaIngreso.f_generDate(new Date(n_date));
				if(oCalFechaIngreso.e_input)FireEvent(oCalFechaIngreso.e_input,'blur');
			}
			if(n_date || forzar){
				$('popFechaIngreso').style.display = 'none';
			}

		}.closure(this);			
		
		
		//L
		var listener = function(){
			var d = req.respuestaXML;
			wait = false;
			
			if(!d){ 
				alert(req.respuestaHTML); 
				Blocker.hide();
				Loader.hide();				
			}
			//

			else if(reqType == 'reservar'){
			
				if(d.getAttribute('exito') != 'si'){
					LayError.onAccept = LayError.onCancel = function(){
						LayError.hide();
						Blocker.hide();
					}
					LayError.show(nodo.firstChild.data);
					Loader.hide();
				}
				else{
					Exito.onAccept = function(){
						fechaIngreso.value = '';
						fechaEgreso.value = '';
						visitantes.value = '';
						comentario.value = '';
						$('habitacionDefecto').selected = true;
						trasladoNo.checked = true;
						comentario.value = '';
						Blocker.hide();
					};
					Exito.show(d.firstChild.data);
					Loader.hide();
				}
			}
			//
			else if(reqType == 'provincias'){
				
				while(provincia.hasChildNodes()){ provincia.removeChild(provincia.firstChild); }
				
				for(var i = 0, t = d.childNodes.length; i < t; i++){
					var opt = document.createElement('option');
					opt.value = d.childNodes[i].getAttribute('value');
					opt.innerHTML = d.childNodes[i].firstChild.data;
					
					provincia.appendChild(opt);
				}
				provincia.disabled = false;
			}
			//
			else if(reqType == 'ciudades'){
				
				while(ciudad.hasChildNodes()){ ciudad.removeChild(ciudad.firstChild); }
				
				for(var i = 0, t = d.childNodes.length; i < t; i++){
					var opt = document.createElement('option');
					opt.value = d.childNodes[i].getAttribute('value');
					opt.innerHTML = d.childNodes[i].firstChild.data;
					
					ciudad.appendChild(opt);
				}
				ciudad.disabled = false;
			}
			//
			//
		}.closure(this);
		
		
		// Envio de Consulta del Clasificado
		var datosPersonales = (oCookie.get('datosPersonales') == '')? '' : oCookie.get('datosPersonales');
		var nombre, apellido, email, comentario, pais, provincia, provinciaN, 
		ciudad, ciudadN, direccion, cp, telefono, error, cargando, exito,celular,tipoHabitacion,visitantes,trasladoSi,trasladoNo,codPais,codArea,fechaIngreso,fechaEgreso;
		
		
		var clasInfo;
		var wait = false, reqType;
		var req = new Request(listener);
		var iniciado = false;

		
	
	}
