//<![CDATA[

// Diciembre 2007. v1.0. Desarrollado por stanque.

var flash_instalado = false;

// Ponemos en marcha on load window el script principal

AttachEvent(window,"load",detectarFlash);
AttachEvent(window,"load",formatearElementos);


// ----------------------------------
// Funcion formatearElementos
// ----------------------------------

function formatearElementos() {


	// Con esta función definimos que eventos asignamos a cada elemento.

	var objetos;

	//
	// Objetos tipo "input"
	//---------------------

	objetos = document.getElementsByTagName("input");

	for(var no=0;no<objetos.length;no++){

		objetos[no].className = objetos[no].type + " " + objetos[no].className;
	
		// Navegadores diferentes a FF no interpretan clases separadas por espacios 
		// como clases diferentes asociadas al elemento (si en CSS). Hay que splitearlas.
		
		var classes = objetos[no].className;
	
		var class_array = classes.split(" ");
		
		for(var i=0;i<class_array.length;i++) {

			switch (class_array[i]) {
				case "text":
				break;

				case "submit":
				
					AttachEvent(objetos[no],"click",EncontrarFormulario);

					objetos[no].onclick = function() {return false;};
				
				break;

				case "button":

				break;
			} // end switch

		} // end for
		
	} // end for

	//
	// Objetos tipo "a"
	//-------------------
	
	objetos = document.getElementsByTagName("a");

	for(var no=0;no<objetos.length;no++){

		switch (objetos[no].className) {		
		
		case "seleccionar-fecha":
						
			AttachEvent(objetos[no],"click",seleccionarFecha);
			objetos[no].onclick = function() {return false;};
			
		break;
		
		} // end switch	

		switch (objetos[no].parentNode.parentNode.parentNode.className) {
		
		case "mini":
		
			// Si no estamos ante un caso de lightbox activamos el otro tipo de galerías

			if (objetos[no].rel.indexOf("lightbox") == -1) {

				AttachEvent(objetos[no],"click",abrirEnAmpliacion);
				objetos[no].onclick = function() {return false;};		
			
			}

		break;
		
		} // end switch	
		
	} // end for

	//
	// Objetos tipo "DIV"
	//-------------------
	
	objetos = document.getElementsByTagName("div");

	for(var no=0;no<objetos.length;no++){

		switch (objetos[no].className) {		
		
		case "galeria-flash":
		
			if(flash_instalado) {
						
				IncrustarFlash(objetos[no].id);
			
			}
			
		break;
		
		} // end switch	
	
	} // end for

	//
	// Objetos tipo "select"
	//---------------------

	objetos = document.getElementsByTagName("select");

	for(var no=0;no<objetos.length;no++){
	
		AttachEvent(objetos[no],"change",cambioEnSelect);
		
		AttachEvent(objetos[no],"focus",focusEnSelect);
		AttachEvent(objetos[no],"blur",blurEnSelect);
		objetos[no].onclick = function() {return false;};
		
	} // end for

}

// -------------------------------------------------------------------------
//  Función detectarFlash
//	
// -------------------------------------------------------------------------

function detectarFlash() {

	if (FlashDetect.installed) {
		flash_instalado = true;
	}
}

// -------------------------------------------------------------------------
//  Función seleccionarFecha
//	
// -------------------------------------------------------------------------

function seleccionarFecha(evt) {

	// Con este código obtenemos la referencia al elemento
	// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

	// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
	var ie_var = "srcElement";
	var moz_var = "target";

	var elemento;
	evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];

	// vamos subiendo por la estructura del DOM hasta que encontramos un elemento A

	var varnodeName = "";
	var varparentNode = "";
	
	if (elemento.nodeName != "A") {

		while(varnodeName != "A") {

			varparentNode = varparentNode + ".parentNode"; 

			varnodeName = eval("elemento" + varparentNode + ".nodeName;");

		}

	}

	elemento_a =  eval("elemento" + varparentNode);
	
	// Obtenemos las coordenadas del click (en realidad esta funcionalidad no la estamos usando todavía)
	
	var coordenadas_click = capturaMOUSE(evt);
	
	// En función del tipo de calendario que sea llamamos a abrirCalendario de una forma u otra

	switch (elemento_a.id) {		

	case "seleccionar-fecha-llegada":

		abrirCalendario('formulario_disponibilidad', 'fecha_llegada', '1', goingBackwards(), coordenadas_click);

	break;

	case "seleccionar-fecha-salida":

		abrirCalendario('formulario_disponibilidad', 'fecha_salida', '1', goingBackwards(), coordenadas_click);

	break;
	
	case "input-seleccionar-fecha-llegada":

		abrirCalendario('formulario_disponibilidad', 'fecha_llegada', '1', goingBackwards(), coordenadas_click);

	break;

	case "input-seleccionar-fecha-salida":

		abrirCalendario('formulario_disponibilidad', 'fecha_salida', '1', goingBackwards(), coordenadas_click);

	break;

	} // end switch		

	return false;
		
}

// ----------------------------------------------------------------
// Funcion abrirEnAmpliacion
//	Para su uso con galerías de imágenes (abrir en ampliación la mini)
// ----------------------------------------------------------------

function abrirEnAmpliacion(evt) {

	// Con este código obtenemos la referencia al elemento
	// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

	// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
	var ie_var = "srcElement";
	var moz_var = "target";

	var elemento;
	evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];
	
	// vamos subiendo por la estructura del DOM hasta que encontramos el enlace ya que el elemento capturado es la imagen
	
	var	elemento_a;
	
	if (elemento.tagName == "A") {
	
		elemento_a = elemento;
	
	} else {
	
		var vartagName = "";
		var varparentNode = "";
	
		while(vartagName != "A") {
	
			varparentNode = varparentNode + ".parentNode"; 
		
			vartagName = eval("elemento" + varparentNode + ".tagName;"); 
			
		}
		
		elemento_a = eval("elemento" + varparentNode);
	
	}

	// Obtenemos el enlace original

	var url_imagen;
	
	url_imagen = elemento_a.href;

	// vamos subiendo por la estructura del DOM hasta que encontramos un elemento con className "galeria"

	var varnodeClass = "";
	var varparentNode = "";
	var div_galeria;
	var div_ampliacion;
	var imagen_ampliacion;

	while(varnodeClass != "galeria") {

	varparentNode = varparentNode + ".parentNode"; 

	varnodeClass = eval("elemento" + varparentNode + ".className;"); //alert ("objetos[no]" + varparentNode + ".tagName;" + "-" + eval("objetos[no]" + varparentNode + ".tagName;"));
	
	}
		
	div_galeria = eval("elemento" + varparentNode);
	
	// Ahora buscamos a uno de sus hijos con className "imagen-principal"
	
	for (i=0;i<div_galeria.childNodes.length;i++) {

		for (i=0;i<div_galeria.childNodes.length;i++) {

			//alert(div_temp.childNodes[j].className);

			if (div_galeria.childNodes[i].className == "imagen-principal") {

				div_ampliacion = div_galeria.childNodes[i];

			}

		}
		
	}
	
	// Ahora buscamos a uno de sus hijos con tagName "IMG"
	
	for (i=0;i<div_ampliacion.childNodes.length;i++) {
	
		if (div_ampliacion.childNodes[i].tagName == "IMG") {
		
			imagen_ampliacion = div_ampliacion.childNodes[i];
		
		}
	
	}
	
	imagen_ampliacion.src = url_imagen;

}


//  Función switchDesplegable
//	Modifica el estado de un elemento recogido a desplegado y viceversa
// ---------------------------------------------------------------------

function switchDesplegable(elemento) {

		switch (elemento.className) {		
		
		case "desplegado":
						
			elemento.className = "recogido";
		
		break;
		
		case "recogido":
						
			elemento.className = "desplegado";
		
		break;
		
		} // end switch	

}


// ----------------------------------------------------------------------------------
// Funcion EncontrarFormulario
//
// Esta funcion recorre el DOM hasta encontrar un formulario que integre al elemento
// ----------------------------------------------------------------------------------

function EncontrarFormulario(evt) {

	var ie_var = "srcElement";
	var moz_var = "target";

	var elemento;
	evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];

	// vamos subiendo por la estructura del DOM hasta que encontramos un elemento con tagName "FORM"

	var varnodeName = "";
	var varparentNode = "";
	var nombreFormulario = "";

	while(varnodeName != "FORM") {

	varparentNode = varparentNode + ".parentNode"; 

	varnodeName = eval("elemento" + varparentNode + ".tagName;"); //alert ("objetos[no]" + varparentNode + ".tagName;" + "-" + eval("objetos[no]" + varparentNode + ".tagName;"));

	}
	
	if (ValidarFormulario(eval("elemento" + varparentNode))) {
		eval("elemento" + varparentNode + ".submit()");
	}
	

}


// ----------------------------------
// Funcion focusEnSelect
// ----------------------------------

function focusEnSelect(evt) {

	// accionar solo si existe cambio de idioma tipo select
	// ---------------------------------------------

	if (document.getElementById("select-idiomas")) {
	
			// Con este código obtenemos la referencia al elemento
			// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

			// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
			var ie_var = "srcElement";
			var moz_var = "target";

			var elemento;
			evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];
			
			elemento.className = "seleccionado";
	
	
	}

} // end function focusEnSelect


// ----------------------------------
// Funcion blurEnSelect
// ----------------------------------

function blurEnSelect(evt) {

	// accionar solo si existe cambio de idioma tipo select
	// ---------------------------------------------

	if (document.getElementById("select-idiomas")) {
	
			// Con este código obtenemos la referencia al elemento
			// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

			// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
			var ie_var = "srcElement";
			var moz_var = "target";

			var elemento;
			evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];
			
			elemento.className = "no-seleccionado";
	
	
	}

} // end function blurEnSelect

// ----------------------------------
// Funcion cambioEnSelect
// ----------------------------------

function cambioEnSelect(evt) {

	// accionar solo si existe cambio de idioma tipo select
	// ---------------------------------------------

	if (document.getElementById("select-idiomas")) {
	
		if(evt) {

	
			// Con este código obtenemos la referencia al elemento
			// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

			// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
			var ie_var = "srcElement";
			var moz_var = "target";

			var elemento;
			evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];
			
			if (elemento.id == "select-idiomas") {
			
				location.href = "../" + document.forms[0].idiomas.value + "/";
			
			}
			
		}

	}


	// accionar solo si existe recogida y devolución
	// ---------------------------------------------

	if (document.getElementById("recogida") && document.getElementById("devolucion")) {
	
		if(evt) {

			// Con este código obtenemos la referencia al elemento
			// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

			// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
			var ie_var = "srcElement";
			var moz_var = "target";

			var elemento;
			evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];

			// Por alguna extraña razón el elemento capturado es el "td" dentro del "tr"
			// sobre el que hacemos onmouseover. Tenemos por tanto que referirnos a su "padre".

			switch (elemento.name) {
						
				case "recogida_aeropuerto_puerto":
				
					document.forms[0].recogida[0].checked = true;

				break;

				case "devolucion_aeropuerto_puerto":
				
					document.forms[0].devolucion[2].checked = true;

				break;
			
			}

			//elemento.style.visibility = "hidden";	

		} // end if
		
	} // end if

	// accionar solo si estamos en el paso 1
	// ---------------------------------------------

	if (document.getElementById("paso-1")) {
	
		if(evt) {

			// Con este código obtenemos la referencia al elemento
			// y extraemos las etiquetas que hemos creado en eventosElementosFormulario

			// "target" para Mozilla, Netscape, Firefox etc. ; "srcElement" para IE
			var ie_var = "srcElement";
			var moz_var = "target";

			var elemento;
			evt[moz_var] ? elemento = evt[moz_var] : elemento = evt[ie_var];

			// Por alguna extraña razón el elemento capturado es el "td" dentro del "tr"
			// sobre el que hacemos onmouseover. Tenemos por tanto que referirnos a su "padre".

			switch (elemento.name) {
						
				case "hora_recogida":
				
					calcularDias();

				break;

				case "hora_devolucion":
				
					calcularDias();

				break;
			
			}

			//elemento.style.visibility = "hidden";	

		} // end if
	
	} // end if

} // end function

// ----------------------------------------------------------------
// Mini ajax
//
// ----------------------------------------------------------------

var ajax = {

	XMLHttpRequest: function() {
  		try { return new XMLHttpRequest(); }
 		catch (e) { try { return new ActiveXObject('Msxml2.XMLHTTP'); }
  		catch (e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); }
  		catch (e) { return false; }}}
  		return false;
	},
	

	AbrirHTTP: function(url, campoid){
		return this.CargarHTTP(url, campoid);
	},
	

	CargarHTTP: function(url, campoid){
		var oRequest = this.XMLHttpRequest();
		if (!oRequest) return true;
		oRequest.open('GET', url, true);
		oRequest.setRequestHeader('Referer',window.location);

		oRequest.onreadystatechange = function() {
	     	if (oRequest.readyState == 4 && oRequest.status == 200) {
	     		//alert(oRequest.responseText);
	     		document.getElementById(campoid).innerHTML = oRequest.responseText;
			}
		};
      	      
      		oRequest.send(null);
		return false;
	}
	
};


// ----------------------------------------------------------------
// Funcion AttachEvent
//	Para agregar en IE y otros navegadores un evento a un elemento
// ----------------------------------------------------------------

function AttachEvent(elementObj, eventName, eventHandlerFunctionName)
{
  if (elementObj.addEventListener)
  { // Non-IE browsers
    elementObj.addEventListener(eventName, eventHandlerFunctionName, false);
  }
  else if (elementObj.attachEvent)
  { // IE 6+
   elementObj.attachEvent('on' + eventName, eventHandlerFunctionName);
  }
  else
  { // Older browsers
    var currentEventHandler = elementObj['on' + eventName];
    if (currentEventHandler == null)
    {
      elementObj['on' + eventName] = eventHandlerFunctionName;
    }
    else
    {
      elementObj['on' + eventName] = function(e) { currentEventHandler(e); eventHandlerFunctionName(e); }
    }
  }
}

// ----------------------------------------------------------------
// Funcion 
//	Funcion temporal porque IncrustarFlash no funcionó en IE <----------------------------------------------------------------------------
// ----------------------------------------------------------------

function flashTemp() {

				document.write("<object id=\"flashprincipal\" type=\"application/x-shockwave-flash\" data=\"../media/flash/bienvenida/bienvenida.swf\" width=\"700\" height=\"280\"> <param name=\"movie\" value=\"../media/flash/bienvenida/bienvenida.swf\" /> <param name=\"quality\" value=\"high\"/> <param name=\"menu\" value=\"false\" /> <param name=\"wmode\" value=\"transparent\" /> <object> </object> </object>");
				
}


// ----------------------------------------------------------------
// Funcion IncrustarFlash
//	Funcion para incrustar el Flash con el nuevo problema de IE
// ----------------------------------------------------------------

function IncrustarFlash(nombre) {

	if (nombre == "flash-bienvenida-XXXXXXXXXXXX") {
	
		html_interno = document.getElementById(nombre).innerHTML;
	
		document.getElementById(nombre).innerHTML = html_interno + "<object id=\"flashprincipal\"" +
				"type=\"application/x-shockwave-flash\" data=\"../media/flash/bienvenida/bienvenida.swf\"" +
				"width=\"700\" height=\"280\">" +
				"<param name=\"movie\" value=\"../media/flash/bienvenida/bienvenida.swf\" /> <param name=\"quality\" value=\"high\"/> <param name=\"menu\" value=\"false\" /> <param name=\"wmode\" value=\"transparent\" />" +
				"	<object>" +
				"	</object>" +
				"</object>"

	}

}

// ----------------------------------------------------------------
// Funcion FlashDetect
//	Librería para detección de Flash
//	http://www.featureblend.com/license.txt
// ----------------------------------------------------------------

var FlashDetect=new function(){var self=this;self.installed=false;self.raw="";self.major=-1;self.minor=-1;self.revision=-1;self.revisionStr="";var activeXDetectRules=[{"name":"ShockwaveFlash.ShockwaveFlash.7","version":function(obj){return getActiveXVersion(obj);}},{"name":"ShockwaveFlash.ShockwaveFlash.6","version":function(obj){var version="6,0,21";try{obj.AllowScriptAccess="always";version=getActiveXVersion(obj);}catch(err){}
return version;}},{"name":"ShockwaveFlash.ShockwaveFlash","version":function(obj){return getActiveXVersion(obj);}}];var getActiveXVersion=function(activeXObj){var version=-1;try{version=activeXObj.GetVariable("$version");}catch(err){}
return version;};var getActiveXObject=function(name){var obj=-1;try{obj=new ActiveXObject(name);}catch(err){}
return obj;};var parseActiveXVersion=function(str){var versionArray=str.split(",");return{"raw":str,"major":parseInt(versionArray[0].split(" ")[1],10),"minor":parseInt(versionArray[1],10),"revision":parseInt(versionArray[2],10),"revisionStr":versionArray[2]};};var parseStandardVersion=function(str){var descParts=str.split(/ +/);var majorMinor=descParts[2].split(/\./);var revisionStr=descParts[3];return{"raw":str,"major":parseInt(majorMinor[0],10),"minor":parseInt(majorMinor[1],10),"revisionStr":revisionStr,"revision":parseRevisionStrToInt(revisionStr)};};var parseRevisionStrToInt=function(str){return parseInt(str.replace(/[a-zA-Z]/g,""),10)||self.revision;};self.majorAtLeast=function(version){return self.major>=version;};self.FlashDetect=function(){if(navigator.plugins&&navigator.plugins.length>0){var type='application/x-shockwave-flash';var mimeTypes=navigator.mimeTypes;if(mimeTypes&&mimeTypes[type]&&mimeTypes[type].enabledPlugin&&mimeTypes[type].enabledPlugin.description){var version=mimeTypes[type].enabledPlugin.description;var versionObj=parseStandardVersion(version);self.raw=versionObj.raw;self.major=versionObj.major;self.minor=versionObj.minor;self.revisionStr=versionObj.revisionStr;self.revision=versionObj.revision;self.installed=true;}}else if(navigator.appVersion.indexOf("Mac")==-1&&window.execScript){var version=-1;for(var i=0;i<activeXDetectRules.length&&version==-1;i++){var obj=getActiveXObject(activeXDetectRules[i].name);if(typeof obj=="object"){self.installed=true;version=activeXDetectRules[i].version(obj);if(version!=-1){var versionObj=parseActiveXVersion(version);self.raw=versionObj.raw;self.major=versionObj.major;self.minor=versionObj.minor;self.revision=versionObj.revision;self.revisionStr=versionObj.revisionStr;}}}}}();};FlashDetect.release="1.0.3";

// ----------------------------------------------------------------
// Funcion getFlashMovieObject
//	Capturar el elemento flash en función del nombre del Flash
// ----------------------------------------------------------------


function getFlashMovieObject(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }
  else // if (navigator.appName.indexOf("Microsoft Internet")!=-1)
  {
    return document.getElementById(movieName);
  }
}

// ----------------------------------------------------------------
// Funciones de control de Flash
//	
// ----------------------------------------------------------------


function playFlashMovie(nombre_del_flash) {
	var flashMovie=getFlashMovieObject(nombre_del_flash);
	flashMovie.Play();
	//embed.nativeProperty.anotherNativeMethod();
}


function stopFlashMovie(nombre_del_flash) {
	var flashMovie=getFlashMovieObject(nombre_del_flash);
	flashMovie.StopPlay();
}

// ----------------------------------------------------------------
// Función para averiguar el nivel de profundidad en directorios
//	
// ----------------------------------------------------------------

function getLevels() {
	full_path = location.pathname;

	stripped_full_path = full_path.split("/");
	
	number_of_slashes = stripped_full_path.length;

	if (full_path.charAt(full_path.length - 1) == "/") {
	
		// Si el último caracter es barra
	}

	levels = number_of_slashes - 2;

	return levels;
}

// ----------------------------------------------------------------
// Función que devuelve una cadena el número de niveles (../)
//	necesarios hasta el raíz.
// ----------------------------------------------------------------

function goingBackwards() {

	levels_string = "";
	
	number_of_levels = getLevels();
	
	for (i=0;i<number_of_levels;i++) {
	
		levels_string = levels_string + "../";
	
	}

	return levels_string;
}

// ----------------------------------------------------------------
// Función que comprueba si la clase que enviamos existe para
// el body de esta página.
// ----------------------------------------------------------------

function checkBodyClass(class_to_check) {

	body_classes = document.body.className;
	
	body_classes_array = body_classes.split(" ");
	
	result = false;

	for(var i=0;i<body_classes_array.length;i++) {
	
		if(body_classes_array[i] == class_to_check) {
		
			result = true;	
		
		} // end if

	} // end for
	
	return result;
	
}

// ----------------------------------------------------------------
// Función que captura la posición del ratón
// ----------------------------------------------------------------

function capturaMOUSE(event) {
	return {
		x:(window.event)?(window.event.clientX + document.documentElement.scrollLeft + document.body.scrollLeft):(event.clientX + (window.scrollX || document.body.scrollLeft || 0)),
		y:(window.event)?(window.event.clientY + document.documentElement.scrollTop + document.body.scrollTop):(event.clientY + (window.scrollY || document.body.scrollTop ||0))
	};
} 


//]]>
