	var adminConf = { 
		cargador: ""
	};

	/*
		funcion: xmlhttpPost
	*/
	function xmlhttpPost(URL, opciones) {
		
	    var xmlHttpReq = null, temporizador = null;
		var READY_STATE_UNINITIALIZED=0;
		var READY_STATE_LOADING=1;
		var READY_STATE_LOADED=2;
		var READY_STATE_INTERACTIVE=3;
		var READY_STATE_COMPLETE=4;
		var TIEMPO_MAXIMO_ESPERA=50000;
		
		var Ajax = {
			probar: function() {
				var objeto;
		
				for (var i = 0; i < arguments.length; i++) {
			  		var probarObjeto = arguments[i];
				  	try {
						objeto = probarObjeto();
						break;
				  	} catch (e) { 
						//shita la payasa no es este.
					}
				}
			
				return objeto;
			}
		}
		
		xmlHttpReq = Ajax.probar(
					 	function() {return new ActiveXObject('Msxml2.XMLHTTP')},
						function() {return new ActiveXObject('Microsoft.XMLHTTP')},
						function() {return new XMLHttpRequest()}
					 ) || false;
		
		if (xmlHttpReq) {
		
			//timeout de 5 segundos
			temporizador = setTimeout(function() {
				xmlHttpReq.abort();
				alert("UPS, parece ke esto esta demorando mas de lo habitual. Porfavor reintenta");
				cargando("cargador", null, false);
			}, TIEMPO_MAXIMO_ESPERA);
			
			xmlHttpReq.open(opciones.metodo, URL, true);
			xmlHttpReq.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
			xmlHttpReq.setRequestHeader("Content-length", opciones.parametros.length);
			xmlHttpReq.setRequestHeader("Connection", "close");
			xmlHttpReq.onreadystatechange = function() {
				if (xmlHttpReq.readyState == READY_STATE_COMPLETE) {
						if (xmlHttpReq.status == 200) {
							
							//si todo ok limpio el temporizador
							clearTimeout(temporizador);
							//Ejecuto el onExito
							if (opciones.onExito != null) {
								opciones.onExito(xmlHttpReq);
							}
						}
				};
				if (xmlHttpReq.readyState == READY_STATE_LOADING) {
					/*if (opciones.cargador != null) {
						adminConf.cargador = opciones.cargador;
						cargando(opciones.cargador, null, true);
					}*/
					cargandov2(true);
				}
			};
			xmlHttpReq.send(opciones.parametros);
		} else {
			alert("Cambia tu navegador");
		}
    }
	
	/*
		funcion: cargando
	*/
	function cargando(box, clase, activar, imagen) {
		var imagenes = new Array(Array("loading3.gif", "25", "25"), Array("loading.gif", "128", "128"));
		var imagen = (imagen == null ? 0:imagen);
	
		if (!$(box)) {
			var obj = document.createElement('div');
			obj.id = box;
			$("top").appendChild(obj);
		} else {
			var obj = $(box);
		}
		
		if (activar) {
			obj.innerHTML = "";
			obj.className = clase;
			obj.innerHTML = "<img src=\"img/int/"+ imagenes[imagen][0] +"\" width=\""+ imagenes[imagen][1] +"\" height=\""+ imagenes[imagen][2] +"\" />";
		} else {
			obj.className = "";
			obj.innerHTML = "";
		}
	}
	
	/*
		clase: PreReserva
	*/
	var PreReserva = Class.create();
	PreReserva.prototype = {
		initialize: function (idioma) {
			this.modulo = "preReserva";
			this.idioma = idioma;
		},
		
		/*getHabitaciones: function (hotel)*/
		getHabitaciones: function (hotel) {
			switch(parseInt(hotel, 10)) {
				case 1:
						$('imagen_calendario').src = 'img/contacto/calendario.temporada.25sep.'+this.idioma+'.gif'; 
						$('imagen_season_value').src = 'img/contacto/titulo.value.25sep.'+this.idioma+'.gif';
						break;
				case 2:
						$('imagen_calendario').src = 'img/contacto/calendario.temporada.'+this.idioma+'.gif';
						$('imagen_season_value').src = 'img/contacto/titulo.value.'+this.idioma+'.gif';
						break;
				case 3:
						$('imagen_calendario').src = 'img/contacto/calendario.temporada.'+this.idioma+'.gif';
						$('imagen_season_value').src = 'img/contacto/titulo.value.'+this.idioma+'.gif';
						break;	
			}
			
			var parametros = $H({
					accion: this.modulo,
					queHacer: "getHabitaciones",
					lang: this.idioma,
					hotel: hotel
			});
			xmlhttpPost("include/funciones_parser.php",	{
						 cargador: "cargador",
						 parametros: parametros.toQueryString(), 
						 metodo: 'POST', 
						 onExito: this.getHabitaciones_handler.bind(this), 
						 onFracaso: function  () { alert("ERROR");}
			});	
		},
		
		/*getHabitaciones_handler: function (response)*/
		getHabitaciones_handler: function (response) {
			cargandov2(false);
			
			switch (parseInt($('hotel').value, 10)) {
				case 1:
						cal_entrada.maxDate = new Date(2009,8,25);
						cal_entrada.minDate = new Date(2009,5,12);
		
						cal_salida.maxDate = new Date(2009,8,25);
						cal_salida.minDate = new Date(2009,5,12);
						
						cal_entrada.reDraw();
						cal_salida.reDraw();
						break;
				case 2:
						cal_entrada.maxDate = new Date(2009,9,4);
						cal_entrada.minDate = new Date(2009,5,12);
		
						cal_salida.maxDate = new Date(2009,9,4);
						cal_salida.minDate = new Date(2009,5,12);
						
						cal_entrada.reDraw();
						cal_salida.reDraw();
						break;	
				case 3:
						cal_entrada.maxDate = new Date(2009,9,4);
						cal_entrada.minDate = new Date(2009,5,12);
		
						cal_salida.maxDate = new Date(2009,9,4);
						cal_salida.minDate = new Date(2009,5,12);
						
						cal_entrada.reDraw();
						cal_salida.reDraw();
						break;		
			}
			
			if (response.responseText != "") {
				$("habitacionesBOX").innerHTML = response.responseText;
			} else {
				switch (this.idioma) {
					case "esp":
						$("habitacionesBOX").innerHTML = "<select name=\"habitacion\" id=\"habitacion\"> \
															<option value=\"\">Escoja Habitaciones</option> \
														  </select>";
						break;
					case "eng":
						$("habitacionesBOX").innerHTML = "<select name=\"habitacion\" id=\"habitacion\"> \
															<option value=\"\">Choose type of room</option> \
														  </select>";
						break;
					case "por":
						$("habitacionesBOX").innerHTML = "<select name=\"habitacion\" id=\"habitacion\"> \
															<option value=\"\">Escolha tipo de quarto</option> \
														  </select>";
						break;
				}
			}
		},
		
		/*validarPreReserva: function()*/
		validarPreReserva: function() {			
			var habitacion = document.getElementById("habitacion").value;
			var fA = document.getElementById("fechaArribo").value;
			var fS = document.getElementById("fechaSalida").value;
			var errors = '', fA_array = '', fS_array = '';
			var sw = 1;
			
			fA_array = fA.split("/");
			fS_array = fS.split("/");
			
			fA_day = fA_array[0];
			fA_month = fA_array[1];
			
			fS_day = fS_array[0];
			fS_month = fS_array[1];
			
			if (fA == '') {
				errors += ' - Fecha de llegada es requerida.\n';
				document.getElementById("fechaArribo").className = "errorEntrada";
				sw=0;			
			} 
			if (fS == '') {
				errors += ' - Fecha de salida es requerida.\n';
				document.getElementById("fechaSalida").className = "errorEntrada";
				sw=0;			
			}
			if (fS_month < fA_month) {
				errors += ' - Fecha de salida no puede ser anterior a fecha de llegada.\n';
				sw=0;
			} else {
				if ((fS_day < fA_day) && (fS_month <= fA_month)) {
					errors += ' - Fecha de salida no puede ser anterior a fecha de llegada.\n';
					sw=0;				
				}
			}
			
			if (habitacion == "") {
				errors += ' - Debe escoger una habitaci&oacute;n.\n';
				sw=0;
			} 
			
			if (sw == 0 ) {
				alert(errors);
			} else {
				var parametros = $H({
						accion: this.modulo,
						queHacer: "validarPreReserva",
						fA: document.getElementById("fechaArribo").value,
						fS: document.getElementById("fechaSalida").value,
						hotel: document.getElementById("hotel").value
				});
				xmlhttpPost("include/funciones_parser.php",	{
							 cargador: "cargador",
							 parametros: parametros.toQueryString(), 
							 metodo: 'POST', 
							 onExito: this.validarPreReserva_handler.bind(this), 
							 onFracaso: function  () { alert("ERROR");}
				});
			}
		},
		
		validarPreReserva_handler: function(response) {			
			cargandov2(false);
			
			var json_datos = response.responseText;
			var respuesta = json_datos.parseJSON();

			respuesta = respuesta.respuesta;
			
			if (respuesta.estado == "NO") {
				alert(respuesta.estado_mensaje);
			} else {
				//$('formPrereserva').submit();
			}
		}
	}
	
	function validarRut(obj) {
		var rut = obj;
		var tmpRUT = rut.value;
		var tmpstr = "";
		var i;
		
		//obtener solo los digitos del rut
		for ( i=0; i < tmpRUT.length ; i++ ) {
			if ( tmpRUT.charAt(i) != ' ' && tmpRUT.charAt(i) != '.' && tmpRUT.charAt(i) != '-' ) {
				tmpstr = tmpstr + tmpRUT.charAt(i);
			}
		}
		
		tmpRUT = tmpstr;
		
		var dvr = '0';
		var suma = 0;
		var mul = 2;
		var res;
		dv = tmpRUT.charAt(tmpRUT.length - 1);
		
		for (i= tmpRUT.length - 2 ; i >= 0; i--) {
			suma = suma + tmpRUT.charAt(i) * mul;
			if (mul == 7) {
				mul = 2;
			} else {
				mul++;
			}
		}
		
		res = suma % 11;
		
		if (res == 1) {
			dvr = 'k';
		} else if (res == 0) {
			dvr = '0';
		} else {
			dvi = 11 - res;
			dvr = dvi + "";
		}
		//13549660k
		if (dvr != dv.toLowerCase()) {
			return false;
		} else {
			return true;
		}
	}
	
	function formatearRUT(rut) {
		var invertido = "";
		var drut = "";
		var largo;
		var i;
		var tmpstr = "";
		
		//obtener solo los digitos del rut
		for ( i=0; i < rut.length ; i++ ) {
			if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' ) {
				tmpstr = tmpstr + rut.charAt(i);
			}
		}
		
		rut = tmpstr;
		largo = rut.length;
		
		for ( i=(largo-1),j=0; i>=0; i--,j++ ) {
			invertido = invertido + rut.charAt(i);
		}
		
		drut = drut + invertido.charAt(0);
		drut = drut + '-';
		cnt = 0;
		
		for ( i=1,j=2; i<largo; i++,j++ ) {
			if ( cnt == 3 ) {
				drut = drut + '.';
				j++;
				drut = drut + invertido.charAt(i);
				cnt = 1;
			} else {
				drut = drut + invertido.charAt(i);
				cnt++;
			}
		}
		
		invertido = "";
		
		for ( i=(drut.length-1),j=0; i>=0; i--,j++ ) {
			invertido = invertido + drut.charAt(i);
		}
		
		return invertido;
	}
	
	function Trim(TRIM_VALUE) {
		if (TRIM_VALUE.length < 1) {
			return "";
		}
		TRIM_VALUE = RTrim(TRIM_VALUE);
		TRIM_VALUE = LTrim(TRIM_VALUE);
		if (TRIM_VALUE == "") {
			return "";
		} else {
			return TRIM_VALUE;
		}
	} //End Function

	function RTrim(VALUE) {
		var w_space = String.fromCharCode(32);
		var v_length = VALUE.length;
		var strTemp = "";
		if (v_length < 0) {
			return "";
		}
		var iTemp = v_length -1;

		while (iTemp > -1) {
			if (VALUE.charAt(iTemp) == w_space) {
				//
			} else {
				strTemp = VALUE.substring(0,iTemp +1);
				break;
			}
			iTemp = iTemp-1;
		} //End While
		return strTemp;
	} //End Function

	function LTrim(VALUE) {
		var w_space = String.fromCharCode(32);
		if (v_length < 1) {
			return"";
		}
		var v_length = VALUE.length;
		var strTemp = "";
		var iTemp = 0;

		while (iTemp < v_length) {
			if (VALUE.charAt(iTemp) == w_space) {
				//
			} else {
				strTemp = VALUE.substring(iTemp,v_length);
				break;
			}
			iTemp = iTemp + 1;
		} //End While
		return strTemp;
	} //End Function
	
	function MM_validateForm() { //v4.0
	  if (document.getElementById){
		var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
		for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=document.getElementById(args[i]);
		  if (val) { nm=val.title; if ((val=val.value)!="") {
			if (document.getElementById(args[i]).name == "rut") {
				if (!validarRut(document.getElementById(args[i]))) { errors+='- '+nm+' debe ser valido.\n'; } else { document.getElementById(args[i]).value = formatearRUT(val); }
			}	
			if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
			  if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe ser una direccion de email verdadera.\n';
			} else if (test!='R') { num = parseFloat(val);
			  if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
			  if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
				min=test.substring(8,p); max=test.substring(p+1);
				if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
		  } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es requerido.\n'; }
		} if (errors) alert('Han Ocurrido los sgtes errores:\n'+errors);
		document.MM_returnValue = (errors == '');
	} }
	
	function MM_openBrWindow(theURL,winName,features) { //v2.0
	  window.open(theURL,winName,features);
	}
	
	function MM_findObj(n, d) { //v4.01
	  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
		d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	  if(!x && d.getElementById) x=d.getElementById(n); return x;
	}
	function MM_validateForm_esp() { //v4.0
	  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm_esp.arguments;
	  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.title; if ((val=val.value)!="") {
		  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
			if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe contener una direccion de mail valida.\n';
		  } else if (test!='R') { num = parseFloat(val);
			if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
			if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
			  min=test.substring(8,p); max=test.substring(p+1);
			  if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es requerido.\n'; }
	  } if (errors) alert('Han ocurrido los siguientes errores :\n'+errors);
	  document.MM_returnValue = (errors == '');
	}
	function MM_validateForm_por() { //v4.0
	  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm_por.arguments;
	  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.title; if ((val=val.value)!="") {
		  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
			if (p<1 || p==(val.length-1)) errors+='- '+nm+' debe contener una direccion de mail valida.\n';
		  } else if (test!='R') { num = parseFloat(val);
			if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
			if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
			  min=test.substring(8,p); max=test.substring(p+1);
			  if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' es requerido.\n'; }
	  } if (errors) alert('Han ocurrido los siguientes errores :\n'+errors);
	  document.MM_returnValue = (errors == '');
	}
	function MM_validateForm_eng() { //v4.0
	  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm_eng.arguments;
	  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
		if (val) { nm=val.title; if ((val=val.value)!="") {
		  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
			if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
		  } else if (test!='R') { num = parseFloat(val);
			if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
			if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
			  min=test.substring(8,p); max=test.substring(p+1);
			  if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
		} } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
	  } if (errors) alert('The following error(s) occurred:\n'+errors);
	  document.MM_returnValue = (errors == '');
	}
	
	function flash(src, id, w, h, vars){
		return AC_FL_RunContent(
			'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0',
			'width', w,
			'height', h,
			'src', src,
			'quality', 'high',
			'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
			'align', 'middle',
			'play', 'true',
			'loop', 'true',
			'scale', 'noscale',
			'wmode', 'transparent',
			'devicefont', 'false',
			'id', 'obj'+Math.random(),
			'name', 'obj'+Math.random(),
			'menu', 'false',
			'allowFullScreen', 'false',
			'allowScriptAccess','sameDomain',
			'movie', src,
			'FlashVars', vars,
			'salign', 'lt'
			); //end AC code*/
	}
	
	function cargandov2(mostrar) {
		if (mostrar) {
			$("loadingBox").setStyle({'display': 'block'});
		} else {
			$("loadingBox").setStyle({'display': 'none'});
		}
	}
	
	function banner_home() {
		staticbar();
		if (typeof bannerActivo != "undefined") {
			if (bannerActivo.activo) {
				myLightbox = new Lightbox();
				myLightbox.start($(bannerActivo.banner), bannerActivo.tipo, {marco: bannerActivo.marco});
			}			
		}
	}
	
	var _lightbox_home = function(galeria, modulo) {
		if (Trim(galeria) != "") {
			var parametros = $H({
					accion: "galeria_home",
					galeria: galeria,
					modulo: modulo
			});
			
			xmlhttpPost("include/funciones_parser.php",	{
						 parametros: parametros.toQueryString(), 
						 metodo: 'POST', 
						 cargador: null,
						 onExito: _lightbox_home_parser,
						 onFracaso: function  () { alert("ERROR");}
			});
		}
	}
	
	var _lightbox_home_parser = function(response) {
		cargandov2(false);
		
		var json_datos = response.responseText;
		var respuesta = json_datos.parseJSON();
		respuesta = respuesta.respuesta;
		
		$(respuesta.box).innerHTML = "";
		
		for (var c = 0; c < respuesta.galeria.length; c++) {
			var objLink = document.createElement("a");
			objLink.setAttribute('href', respuesta.galeria[c]);
			objLink.setAttribute('id', respuesta.galeria_name + c);
			objLink.setAttribute('rel', "lightbox[galeria]");
			objLink.setAttribute('title', "");
			$(respuesta.box).appendChild(objLink);
		}
		
		myLightbox.start($(respuesta.galeria_name + "0"), "image", {marco: true});
	}
	
	Event.observe(window, 'load', function() {changeElementsToFlash();}, false);
	Event.observe(window, 'load', function() {banner_home();}, false);
	
	/* BOX LOADING */	
		var persistclose = 0;
		var startX = 10
		var startY = 5;
		var verticalpos = "fromtop" ;
		
		function iecompattest(){
			return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
		}
		
		function staticbar() {
			barheight=document.getElementById("loadingBox").offsetHeight
			var ns = (navigator.appName.indexOf("Netscape") != -1) || window.opera;
			var d = document;
			function ml(id) {
				var el = d.getElementById(id);
				el.style.visibility = "visible"
				if(d.layers) {
					el.style = el;
				}
				el.sP = function(x,y) { 
					this.style.right = x+"px";
					this.style.top = y+"px";
				};
				el.x = startX;
				if (verticalpos=="fromtop") {
					el.y = startY;
				} else {
					el.y = ns ? pageYOffset + innerHeight : iecompattest().scrollTop + iecompattest().clientHeight;
					el.y -= startY;
				}
				return el;
			}
			window.stayTopLeft = function() {
				if (verticalpos=="fromtop") {
					var pY = ns ? pageYOffset : iecompattest().scrollTop;
					ftlObj.y += (pY + startY - ftlObj.y)/8;
				} else {
					var pY = ns ? pageYOffset + innerHeight - barheight: iecompattest().scrollTop + iecompattest().clientHeight - barheight;
					ftlObj.y += (pY - startY - ftlObj.y)/8;
				}
				ftlObj.sP(ftlObj.x, ftlObj.y);
				setTimeout("stayTopLeft()", 10);
			}
			
			ftlObj = ml("loadingBox");
			stayTopLeft();
		}
	/* FIN BOX LOADING*/