var bugRiddenCrashPronePieceOfJunk = (navigator.userAgent.indexOf('MSIE 5') != -1 && navigator.userAgent.indexOf('Mac') != -1);
var W3CDOM = (!bugRiddenCrashPronePieceOfJunk && document.getElementsByTagName && document.createElement);
var classAttr = false;
var divapoyo;
var divapoyoTop = 25;
var divapoyoTopOld = divapoyoTop;
var divapoyoMover = true;
var divapoyoNombre = "formapoyo";

var onLoadObj = new Object;
onLoadObj ['ini1'] = 'js_menu';
onLoadObj ['ini2'] = 'js_formulario';

function js_inicializar()
{if (W3CDOM){
	for (var i in onLoadObj)
	{
		if (onLoadObj [i])
		{
			if (onLoadObj [i].search (/\(/) > 0)
			{
				eval (onLoadObj [i]);
			}
			else
			{
				eval (onLoadObj [i] +'()');
			}
		}
	}
}}

if (typeof $ == 'undefined') function $(i){
	var el = document.getElementById(i);
	return (el) ? el : null;
}


function js_obj (name)
{
	if (document.getElementById)
	{
		this.obj = document.getElementById(name);
		if (this.obj) this.style = document.getElementById(name).style;
	}
	else if (document.all)
	{
		this.obj = document.all[name];
		if (this.obj) this.style = document.all[name].style;
	}
	else if (document.layers)
	{
		this.obj = document.layers[name];
		if (this.obj) this.style = document.layers[name];
	}
}

function js_txt_escribir (obj, texto)
{
	// Escribe texto en un objeto
	if (obj.innerHTML)
	{
		obj.innerHTML = texto;
	}
}

function js_txt_leer (obj)
{
	// Lee texto de un objeto
	if (obj.innerHTML)
	{
		return obj.innerHTML;
	}
	else return false;
}

function js_class_escribir (objeto, clase)
{
	objeto.setAttribute ('class', clase);
	objeto.setAttribute ('className', clase);
}

function js_class_leer (objeto)
{
	if (objeto.getAttribute ('className'))
	{
		res = objeto.getAttribute ('className');
	}
	else if (objeto.getAttribute ('class'))
	{
		res = objeto.getAttribute ('class');
	}
	else res = false;

	return res;
}

function js_class_anadir (objeto, clase)
{
	claseActual = js_class_leer (objeto);
	claseRegExp = new RegExp (clase);

	if (claseActual && claseActual.length > 0)
	{
		if (claseActual.search (claseRegExp))
		{
			js_class_escribir (objeto, claseActual +' '+ clase);
		}
	}
	else
	{
		js_class_escribir (objeto, clase);
	}
}

function js_class_retirar (objeto, clase)
{
	if (claseActual = js_class_leer (objeto))
	{
		clases = claseActual.split (/\b/);
		if (clases.length > 0)
		{
			clasesNuevas = new Array ();
			for (var i = 0; i<clases.length; i++)
			{
				if ((clases [i] != '') && (clases [i] != clase))
				{
					clasesNuevas.push (clases [i]);
				}
			}
			js_class_escribir (objeto, clasesNuevas.join (' '));
		}
	}
}

function js_class_contiene (objeto, clase)
{
	clasesActuales = js_class_leer (objeto);
	claseRegExp = new RegExp (clase, "i");

	return (claseRegExp.test (clasesActuales));
}

function js_es_numero (objeto)
{
	// onkeypress="return js_es_numero(event);"
	var charCode

	if (document.getElementById && !document.all)
		charCode = objeto.which
	else
		charCode = objeto.keyCode
	if (charCode > 31 && (charCode < 48 || charCode >57))
	{
		return false 
	}
	else
	{
		return true
	}
}

function js_es_decimal (objeto, valorActual)
{
	// onkeypress="return js_es_decimal(event);"
	// decimal se marcan con '.' (charCode 46)
	var charCode

	if (document.getElementById && !document.all)
		charCode = objeto.which
	else
		charCode = objeto.keyCode

	if (charCode > 31 && (charCode < 48 || charCode >57) && charCode!=46)
	{
		return false 
	}
	else
	{
		if (charCode == 46 && valorActual.indexOf ('.') == -1) return true;
		else if (charCode != 46)  return true;
		else return false;
	}
}

function js_getParent(el, pTagName) {
	if (el == null) return null;
	else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())	// Gecko bug, supposed to be uppercase
		return el;
	else
		return js_getParent(el.parentNode, pTagName);
}

function js_findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function js_findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function js_setLyr (objIni,objASituar, desX, desY)
{
	var newX = js_findPosX(objIni) + desX;
	var newY = js_findPosY(objIni) + desY;
	objASituar.style.top = newY + 'px';
	objASituar.style.left = newX + 'px';
}

function js_ocultartabla (imgName)
{
	img = document.getElementById (imgName);
	tr = js_getParent (img, 'TR');
	tbody = js_getParent (img, 'TBODY');
	
	if (img.src.indexOf ('img/minus.gif') == -1)
	{
		img.src = 'img/minus.gif';
		mostrar = tr.style.display;
	}
	else
	{
		img.src = 'img/plus.gif';
		mostrar = 'none';
	}

	for (i=1; i<tbody.rows.length; i++)
	{
		tbody.rows.item (i).style.display = mostrar;
	}
	
	return false;
}

function js_ocultartablanoth (imgName)
{
	img = document.getElementById (imgName);
	tr = js_getParent (img, 'TR');
	tbody = js_getParent (img, 'TBODY');
	empezamos = false;

	if (img.src.indexOf ('img/signo-minus.gif') == -1)
	{
		img.src = 'img/signo-minus.gif';
		mostrar = tr.style.display;
	}
	else
	{
		img.src = 'img/signo-plus.gif';
		mostrar = 'none';
	}

	for (i=0; i<tbody.rows.length; i++)
	{
		if (empezamos)
		{
			if (tbody.rows.item (i).firstChild.firstChild.tagName == 'A') break;
			tbody.rows.item (i).style.display = mostrar;
		}
		if (tbody.rows.item (i).firstChild.firstChild.tagName == 'A'
			&& tbody.rows.item (i).firstChild.firstChild.firstChild.tagName == 'IMG'
			&& tbody.rows.item (i).firstChild.firstChild.firstChild.id == imgName)
		{
			empezamos = true;
		}
	}

	return false;
}


function js_menu ()
{
	// Si existe, obtenemos el id de la zona
	tagBodies = document.getElementsByTagName ('body');
	var zonaActiva = tagBodies [0].getAttribute ('id');
	if (zonaActiva != '') zonaActiva = zonaActiva.substr (3);
	else zonaActiva = false;
	
	// Ajustamos el menu
	var idMenuGeneral = 'menugeneral';
	var objMenuGeneral = new js_obj (idMenuGeneral);
	if (objMenuGeneral)
	{
		// Recorremos los TDs de menu general que no sean de clase 'separador'
		var x = objMenuGeneral.obj.getElementsByTagName ('td');
		for (var i=0;i<x.length;i++)
		{
			// Si el td es de la clase apropiada
			if (js_class_leer (x[i]) != 'separador')
			{
				// a su primer hijo (<a>) lo adjudicamos como lanzador del menu
				js_menu_opcevent (x[i], zonaActiva);
			}
		}
	}
}

function js_menu_opcevent (objeto, zonaActiva)
{
	
	objId = objeto.getAttribute ('id');
	if (objId != '')
	{
		objId = objeto.getAttribute ('id').substr (3);
	}

	if (objId == zonaActiva)
	{
		objeto.estadoActual = 2;
		js_class_anadir (objeto, 'zonaActiva');
	}
	else
	{
		objeto.estadoActual = 0;
	}

	objeto.onmouseover = function () {
		if (this.getAttribute ('id').substr (0, 3) == 'mnu')
		{
			if (this.getElementsByTagName ('ul').length)
			{
				js_class_anadir (this, 'over');
			}
		}
	}
	objeto.onmouseout = function () {
		if (this.getAttribute ('id').substr (0, 3) == 'mnu')
		{
			js_class_retirar (this, 'over');
		}
	}
}

function js_menu_mouseout () {
	mnuTimeoutIntervalObj.firstChild.firstChild.src = mnuTimeoutIntervalObj.firstChild.firstChild.src.replace (/0|1|2/, mnuTimeoutIntervalObj.estadoActual);
	js_class_retirar (mnuTimeoutIntervalObj, 'over');
	clearInterval (mnuTimeoutInterval);
}

function js_formulario ()
{
	//var entrar = new js_obj ('entrar');

	var tdElems = document.getElementsByTagName('td');
	for (var i=0;i<tdElems.length;i++)
	{
		if (js_class_contiene (tdElems [i], 'frmgrupocampoayuda'))
		{
			js_frm_ayuda (tdElems [i]);
		}
	}

	var divElems = document.getElementsByTagName('div');
	for (var i=0;i<divElems.length;i++)
	{
		if (js_class_leer (divElems [i]) == 'frmgrupocampoayuda')
		{
			js_frm_ayuda (divElems [i]);
		}
	}

	if (divapoyoMover)
	{
		js_frm_ajustarapoyo ();
	}
}

function js_frm_ayuda (objAyuda)
{
	// Ajusta el formato para los textos de ayuda
	if (objAyuda.childNodes.length)
	{
		if (objAyuda.firstChild.tagName == 'IMG')
		{
			objAyuda.firstChild ['ayuda'] = objAyuda.firstChild.getAttribute ('alt');
			objAyuda.firstChild.setAttribute ('alt', '');
			objAyuda.firstChild.onmouseover = function () {
				var formayuda = new js_obj (divapoyoNombre)
				if (formayuda) {
					formayuda.obj ['ayuda'] = js_txt_leer (formayuda.obj);
					js_txt_escribir (formayuda.obj, this ['ayuda']);
					formayuda.style.border = 'red solid 1px';
					temp = setTimeout (function () { formayuda.style.border = '#09f solid 1px'; }, 1000);
	
				}
			}
			objAyuda.firstChild.onmouseout = function () {
				var formayuda = new js_obj (divapoyoNombre);
				if (formayuda)
				{
					js_txt_escribir (formayuda.obj, formayuda.obj ['ayuda']);
					formayuda.style.border = '#09f solid 1px';
				}
			}
		}
	}
}

function js_frm_ajustarapoyo ()
{
	var divapoyo = new js_obj (divapoyoNombre);
	if (divapoyoMover && divapoyo.style)
	{
		if (window.innerHeight)
		{
			pos = window.pageYOffset
		}
		else if (document.documentElement && document.documentElement.scrollTop)
		{
			pos = document.documentElement.scrollTop
		}
		else if (document.body)
		{
			pos = document.body.scrollTop
		}
		if (pos < divapoyoTop) pos = divapoyoTop;
		else pos += divapoyoTop;
		if (pos == divapoyoTopOld)
		{
			divapoyo.style.top = pos+'px';
		}
		divapoyoTopOld = pos;
		if (divapoyoMover) temp = setTimeout('js_frm_ajustarapoyo()',500);
	}
}

function js_acaprovinciachange (objname, norellenar)
{
	objcp = document.getElementById (objname);
	objprov = document.getElementById ('prov'+objname);
	
	/*
	if (objcp.value.substr (0, 1) == '?')
	{
		objcp.value = "0" + objcp.value.substr (1);
	}
	
	if (objcp.value.substr (1, 1) == '?')
	{
		objcp.value = objcp.value.substr (0, 1) + "0" + objcp.value.substr (2);
	}
	*/
	
	if ((objcp.value.length < 5) && !norellenar)
	{
		while (objcp.value.length < 5) objcp.value = objcp.value + '0';
	}
	else if ((objcp.value.length < 5) && norellenar)
	{
		while (objcp.value.length < 5) objcp.value = objcp.value + '?';
	}
	
	if (parseInt (objcp.value.substr (0, 2), 10) > 52)
	{
		objcp.value = '52' + objcp.value.substr (2, 3);
		alert ('El cód. postal empieza por una cifra superior a 52, reducimos a 52.');
	}
	else if ((objcp.value.substr (0, 1) == '?') || (objcp.value.substr (0, 1) == '?'))
	{
		
	}
	else if (parseInt (objcp.value.substr (0, 2), 10) < 1)
	{
		objcp.value = '01' + objcp.value.substr (2, 3);
		alert ('El cód. postal empieza por una cifra inferior, aumentamos a 01.');
	}
	objprov.value = '';

	for (i=0;i<provincias.length;i++)
	{
		if (provincias [i].substr (6, 2) == objcp.value.substr (0, 2))
		{
			cambiado = true;
			objprov.value = provincias [i].substr (12);
		}
	}
}

function js_acaprovinciaporcp (objname, objeto, permitidos)
{
	if (document.getElementById && !document.all)
		charCode = objeto.which
	else
		charCode = objeto.keyCode

	if (!permitidos) permitidos = new Array();

	if (charCode > 32 && (charCode < 48 || charCode > 57) && !permitidos.has (charCode))
	{
		return false;
	}
	else
	{
		objcp = document.getElementById (objname);
		objprov = document.getElementById ('prov'+objname);
		cambiado = false;
		if ((objcp.value == '') && (charCode >= 54) && !permitidos.has (charCode))
		{
			alert ('El código postal debe empezar por un dígito entre 0 y 5');
			return false;
		}
		else
		{
			if (objcp.value.length >= 2)
			{
				objprov.value = '';	
				for (i=0;i<provincias.length;i++)
				{
					if (provincias [i].substr (6, 2) == objcp.value.substr (0, 2))
					{
						cambiado = true;
						objprov.value = provincias [i].substr (12);
					}
				}
			}
			
			return true;
		}
	}
}

function js_acaacademiasselect (id, obj, tipo)
{
	if (!tipo) tipo = "";
	else tipo = "&t=" + tipo;

	return window.open('academias.select.php?id=' + id + tipo, '_blank', 'width=550,height=300,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
}

function js_acausuariosselect (id, obj, tipo)
{
	if (!tipo) tipo = "";
	else tipo = "&t=" + tipo;

	return window.open('usuarios.select.php?id=' + id + tipo, '_blank', 'width=550,height=300,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no');
}

function js_textarea_maxLength ()
{
	var x = document.getElementsByTagName('textarea');
	var counter = document.createElement('div');
	counter.className = 'counter';
	for (var i=0;i<x.length;i++)
	{
		if (x[i].getAttribute('maxlength'))
		{
			var counterClone = counter.cloneNode(true);
			counterClone.relatedElement = x[i];
			counterClone.innerHTML = '<span>0</span>/'+x[i].getAttribute('maxlength');
			counterClone.style.textAlign = 'right';
			counterClone.style.paddingRight = '20px';
			x[i].parentNode.insertBefore(counterClone,x[i].nextSibling);
			x[i].relatedElement = counterClone.getElementsByTagName('span')[0];

			x[i].onkeyup = x[i].onchange = js_textarea_checkMaxLength;
			x[i].onkeyup();
		}
	}
}

function js_textarea_checkMaxLength()
{
	var maxLength = this.getAttribute('maxlength');
	var currentLength = this.value.length;
	if (currentLength > maxLength)
	{
		this.relatedElement.style.color = '#f66';
		this.value = this.value.substr (0, 250);
	}
	else
	{
		this.relatedElement.style.color = '#000';
	}
	this.relatedElement.firstChild.nodeValue = currentLength;
}

function js_fechaactual (nombreObj) {
	obj = document.getElementById (nombreObj);
	if (obj.value == "")
	{
		d = new Date();
		
		dia = String (d.getDate ());
		if (dia.length < 2) dia = "0" + dia;

		mes = String (d.getMonth () + 1);
		if (mes.length < 2) mes = "0" + mes;

		year = d.getFullYear ();
		
		obj.value = dia +"/"+ mes +"/"+ year;
	}
}

function js_inputTextArrayAdd (oA, sId) {
	var oNuevoBR = document.createElement ('BR');
	var oNuevoInput = document.createElement ('INPUT');
	oNuevoInput.type = 'text';
	oNuevoInput.id = sId+'[]';
	oNuevoInput.name = sId+'[]';
	oA.parentNode.parentNode.parentNode.previousSibling.firstChild.appendChild (oNuevoBR);
	oA.parentNode.parentNode.parentNode.previousSibling.firstChild.appendChild (oNuevoInput);
	return false;
}
function js_inputCampoAdd (oA, sId) {
	oT = document.getElementById ('pubCamposAdicionales');
	f = oT.lastChild.children.length;
	n = sId +'['+ f +']';
	oTr = document.createElement ('TR');
	oTd1 = document.createElement ('TD');
	oTd2 = document.createElement ('TD');
	oTd3 = document.createElement ('TD');
	oI1 = document.createElement ('INPUT');
	oI1.type = 'checkbox';
	oI1.name = n+'[a]';
	oI1.className = 'inputchk';
	oI1.value = '1';
	oI2 = document.createElement ('INPUT');
	oI2.type = 'text';
	oI2.name = n+'[c]';
	oI3 = document.createElement ('INPUT');
	oI3.type = 'checkbox';
	oI3.name = n+'[o]';
	oI3.className = 'inputchk';
	oI3.value = '1';
	oTd1.appendChild (oI1);
	oTd2.appendChild (oI2);
	oTd3.appendChild (oI3);
	oTr.appendChild (oTd1);
	oTr.appendChild (oTd2);
	oTr.appendChild (oTd3);
	oT.lastChild.appendChild (oTr);
	return false;
}

function js_indexFlash ()
{
	document.write ('<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" ID="mapa" WIDTH="316" HEIGHT="268" ALIGN="">');
	document.write ('<PARAM NAME=movie VALUE="mapa.swf"> <PARAM NAME="quality" VALUE="high"> <PARAM NAME="bgcolor" VALUE="#FFFFFF">');
	document.write ('<EMBED src="mapa.swf" quality="high" bgcolor="#FFFFFF"  WIDTH="316" HEIGHT="268" swLiveConnect="true" ID="mapa" NAME="mapa" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>');
	document.write ('</OBJECT>');
}

Array.prototype.find = function(value, start) {
    start = start || 0;
    for (var i=start; i<this.length; i++)
        if (this[i]==value)
            return i;
    return -1;
}

Array.prototype.has = function(value) {
    return this.find(value)!==-1;
}

window.onload = js_inicializar;