//<![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);

// Lo ejecutamos tras el detectarflash porque explorer está ejecutando de forma paralela
//AttachEvent(window,"load",formatearElementos);

// document.getElementById abreviado
function $(x) { return document.getElementById(x); } 

// ----------------------------------
// 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++){

		switch (objetos[no].type) {
			case "text":
			break;

			case "submit":

				AttachEvent(objetos[no],"click",EncontrarFormulario);
				objetos[no].onclick = function() {return false;};

			break;

			case "button":

			break;

			case "radio":
				
				if (navigator.appName == "Microsoft Internet Explorer") {
					AttachEvent(objetos[no],"click",cambioEnRadio);		
				} else {
					AttachEvent(objetos[no],"change",cambioEnRadio);
				}


			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);
		//objetos[no].onchange = function() {return false;};

	
	} // 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	

	
	} // 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

}

// ---------------------------------------------------------------------------------------------------------
// Funcion reformatearSelects
//
// Al cargar selects completos con AJAX (debido al bug en IE) el select recién cargado pierde el evento.
// Hay que cargar de nuevo los eventos a los select para asegurarnos de que lo recupera.
// ---------------------------------------------------------------------------------------------------------

function reformatearSelects() {

	var objetos;

	// Objetos tipo "select"
	//----------------------
	
	objetos = document.getElementsByTagName("select");

	for(var no=0;no<objetos.length;no++){

		// Si es IE eliminamos el evento para que no se sume al existente
		
		if (objetos[no].detachEvent) {
		
			objetos[no].detachEvent("onchange",cambioEnSelect)
		
		}

		// Añadimos de nuevo el evento

		AttachEvent(objetos[no],"change",cambioEnSelect, false);
	
	} // end for

}


// -------------------------------------------------------------------------
//  Función cambioEnSelect
//	
// -------------------------------------------------------------------------

function cambioEnSelect(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];
	
	// Obtenemos las clases del body
	
	clases_body = document.body.className;
	
	// Si estamos en una página con clase ranking
	
	if (clases_body.indexOf("ranking") != -1) {
	
		if (elemento.name == "categoria") {
		
			resetearEspecialidades();
			resetearPruebas();
		
		}
	

		if (elemento.name == "tipo_pista") {
			
			var id_tipo_pista = elemento.value;
			
			//ajax.CargarHTTP("../../../modulos/gestion_de_area_tecnica/ajax/especialidades.html?id_tipo_pista=" + id_tipo_pista, "select-especialidad", "sustituir_elemento");
			
			ajax.CargarHTTP("../../../stanquecms/modulos/gestion_de_area_tecnica/ajax/especialidades.asp?id_tipo_pista=" + id_tipo_pista, "select-especialidad", "sustituir_elemento");

			resetearPruebas();
		
		}
	
	
		if (elemento.name == "especialidad") {
		
			for (var i=0; i < elemento.form.sexo.length; i++) {
				if (elemento.form.sexo[i].checked) {
					var sexo = elemento.form.sexo[i].value;
				}
			}
			var id_categoria_atleta = elemento.form.categoria.value;
			var id_especialidad = elemento.form.especialidad.value;

			//ajax.CargarHTTP("../../../modulos/gestion_de_area_tecnica/ajax/pruebas.html?sexo=" + sexo + "&id_categoria_atleta=" + id_categoria_atleta + "&id_especialidad=" + id_especialidad, "select-prueba", "sustituir_elemento");
			
			ajax.CargarHTTP("../../../stanquecms/modulos/gestion_de_area_tecnica/ajax/pruebas.asp?sexo=" + sexo + "&id_categoria_atleta=" + id_categoria_atleta + "&id_especialidad=" + id_especialidad, "select-prueba", "sustituir_elemento");
		
		}

		if (elemento.name == "federacion") {
		
			var id_federacion_delegacion = elemento.form.federacion.value;
		
			//ajax.CargarHTTP("../../../modulos/gestion_de_area_tecnica/ajax/clubes.html?id_federacion_delegacion=" + id_federacion_delegacion, "select-club", "sustituir_elemento");

			ajax.CargarHTTP("../../../stanquecms/modulos/gestion_de_area_tecnica/ajax/clubes.asp?id_federacion_delegacion=" + id_federacion_delegacion, "select-club", "sustituir_elemento");

		}
	
	}
	
}

// -------------------------------------------------------------------------
//  Función cambioEnRadio
//	
// -------------------------------------------------------------------------

function cambioEnRadio(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];
	
	// Obtenemos las clases del body
	
	clases_body = document.body.className;
	
	// Si estamos en una página con clase ranking
	
	if (clases_body.indexOf("ranking") != -1) {
	
		if (elemento.name == "sexo") {
		
			resetearEspecialidades();
			resetearPruebas();
		
		} // end if
		
	} // end if

} // end function



// -------------------------------------------------------------------------
//  Función resetearEspecialidades
//	
// -------------------------------------------------------------------------

function resetearEspecialidades() {

	$("select-especialidad").parentNode.innerHTML = "<select id=\"select-especialidad\" name=\"especialidad\">" + "<option value=\"0\" selected=\"selected\"> -- Todas -- </option>" + "</select>";

} // end function



// -------------------------------------------------------------------------
//  Función resetearPruebas
//	
// -------------------------------------------------------------------------

function resetearPruebas() {

	$("select-prueba").parentNode.innerHTML = "<select id=\"select-prueba\" name=\"prueba\">" + "<option value=\"0\" selected=\"selected\"> -- Todas -- </option>" + "</select>";

}

// -------------------------------------------------------------------------
//  Función detectarFlash
//	
// -------------------------------------------------------------------------

function detectarFlash() {

	if (FlashDetect.installed) {
	
		flash_instalado = true;
	}
	
	formatearElementos();
}

// -------------------------------------------------------------------------
//  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);

	switch (elemento_a.id) {		

	case "seleccionar-fecha-llegada":

		abrirCalendario('formulario_disponibilidad', 'fecha_llegada', '1', '../');

	break;

	case "seleccionar-fecha-salida":

		abrirCalendario('formulario_disponibilidad', 'fecha_salida', '1', '../');

	break;

	} // end switch		

	return false;
		
}

// ---------------------------------------------------------------------
//  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()");
	}
	

}


// ----------------------------------------------------------------
// 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, id_elemento){
		return this.CargarHTTP(url, id_elemento);
	},
	
	CargarHTTP: function(url, id_elemento, opcion){
		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(id_elemento).innerHTML = oRequest.responseText;
	     		
				switch (opcion) {		

				case "sustituir_elemento":
				
					ajax.SustituirElemento(oRequest.responseText, id_elemento);
				
				break;

				case "sustituir_innerhtml":

					ajax.SustituirInnerHTML(oRequest.responseText, id_elemento);

				break;

				} // end switch	

			}
		};
      	      
      	oRequest.send(null);
		return false;
	},

	SustituirElemento: function(html_temp, id_elemento){
	
		document.getElementById(id_elemento).parentNode.innerHTML = html_temp;
		
		if (document.getElementById(id_elemento).tagName == "SELECT") {

			reformatearSelects();
			
		}
		
		return false;

	},
	
	SustituirInnerHTML: function(html_temp, id_elemento){

		document.getElementById(id_elemento).innerHTML = html_temp;	
		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 IncrustarFlash
//	Funcion para incrustar el Flash con el nuevo problema de IE
// ----------------------------------------------------------------

function IncrustarFlash(nombre) {

	if (nombre == "flash-bienvenida") {	

		document.getElementById(nombre).innerHTML = document.getElementById(nombre).innerHTML + "<object id=\"flash-principal\"" +
				"type=\"application/x-shockwave-flash\" data=\"../media/flash/bienvenida/bienvenida.swf?refrescar=puesvale\"" +
				"width=\"600\" height=\"340\">" +
				"<param name=\"movie\" value=\"../media/flash/bienvenida/bienvenida.swf?refrescar=puesvale\" /> <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();
}

//]]>
