// UTF-8: €ÁÑ


/*
 * Añade/Quita/Busca clases CSS - http://dean.edwards.name/IE7/caveats/
 */
function addClass(element, className) { // v2004-10-24
	if (!hasClass(element, className)) {
		if (element.className) element.className += " " + className;
		else element.className = className;
	}
};
function removeClass(element, className) { // v2004-10-24
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	element.className = element.className.replace(regexp, "$2");
};
function hasClass(element, className) { // v2004-10-24
	var regexp = new RegExp("(^|\\s)" + className + "(\\s|$)");
	return regexp.test(element.className);
};



/*
 * Gestión de eventos - http://dean.edwards.name/my/events.js
 */

/*
 * Ejemplo:
 *
 * function foo(){
 *     alert('La página ha terminado de cargar');
 * }
 * addEvent(window, 'load', foo);
 *
 */
function addEvent(element, type, handler) { // v2005-12-06
	// assign each event handler a unique ID
	if (!handler.$$guid) handler.$$guid = addEvent.guid++;
	// create a hash table of event types for the element
	if (!element.events) element.events = {};
	// create a hash table of event handlers for each element/event pair
	var handlers = element.events[type];
	if (!handlers) {
		handlers = element.events[type] = {};
		// store the existing event handler (if there is one)
		if (element["on" + type]) {
			handlers[0] = element["on" + type];
		}
	}
	// store the event handler in the hash table
	handlers[handler.$$guid] = handler;
	// assign a global event handler to do all the work
	element["on" + type] = handleEvent;
};
// a counter used to create unique IDs
addEvent.guid = 1;

/*
 * Ejemplo: removeEvent(window, 'load', foo);
 */
function removeEvent(element, type, handler) { // v2005-12-06
	// delete the event handler from the hash table
	if (element.events && element.events[type]) {
		delete element.events[type][handler.$$guid];
	}
};
/*
 * Funciones privadas (son utilizadas por las dos anteriores)
 */
function handleEvent(event) { // v2005-12-06
	var returnValue = true;
	// grab the event object (IE uses a global event object)
	event = event || fixEvent(window.event);
	// get a reference to the hash table of event handlers
	var handlers = this.events[event.type];
	// execute each event handler
	for (var i in handlers) {
		this.$$handleEvent = handlers[i];
		if (this.$$handleEvent(event) === false) {
			returnValue = false;
		}
	}
	return returnValue;
};
function fixEvent(event) { // v2005-12-06
	// add W3C standard event methods
	event.preventDefault = fixEvent.preventDefault;
	event.stopPropagation = fixEvent.stopPropagation;
	return event;
};
fixEvent.preventDefault = function() { // v2005-12-06
	this.returnValue = false;
};
fixEvent.stopPropagation = function() { // v2005-12-06
	this.cancelBubble = true;
};


function version_ie(){ // v2005-03-14
	var re=/MSIE ([^ ;]+)/;
	return re.test(navigator.userAgent)? re.exec(navigator.userAgent)[1]: -1;
}


/*
 * Inserta entidades HTML para mostar un texto como HTML
 */
String.prototype.encodeHTML=function(){ // v2005-09-18
	var salida=this;

	salida=salida.replace(/&/g, '&amp;');
	salida=salida.replace(/"/g, '&quot;');
	salida=salida.replace(/'/g, '&#039;');
	salida=salida.replace(/</g, '&lt;');
	salida=salida.replace(/>/g, '&gt;');

	return salida;
}


/*
 * Reemplaza algunas entidades HTML por el carácter que representan
 */
String.prototype.decodeHTML=function(){ // v2005-09-18
	var salida=this;

	salida=salida.replace(/&gt;/g,   '>');
	salida=salida.replace(/&lt;/g,   '<');
	salida=salida.replace(/&#039;/g, "'");
	salida=salida.replace(/&quot;/g, '"');
	salida=salida.replace(/&amp;/g,  '&');

	return salida;
}

/*
 * Procesamos enlaces externos
 */
function enlaces_externos(primera_ejecucion){ // v2005-03-13
	if(!document.getElementsByTagName){
		return;
	}

	if(version_ie()>0 && version_ie()<7){
		var icono='&nbsp;<img src="/_/img/enlace-externo.png" width="15" height="14" alt="Enlace externo" title="">';
	}else{
		var icono='&nbsp;<img src="/_/img/enlace-externo-trans.png" width="15" height="14" alt="Enlace externo" title="">';
	}
	//var icono='';

	var enlaces=document.getElementsByTagName('a');
	for(var i=0; i<enlaces.length; i++){
		var a=enlaces[i];
		if(a.getAttribute('href') && a.getAttribute('rel')=='external'){
			a.className='external';

			if(primera_ejecucion){
				a.innerHTML+=icono;
			}

			a.target='_blank';
			if(a.title!=''){
				a.title+=' [enlace externo]';
			}else{
				a.title='[enlace externo]';
			}
		}
	}
}



/*
 * Agrega eventos de rollover a todas las imágenes de los enlaces con clase 'hover'
 */
function anadirRollovers(){
	var a=document.getElementsByTagName('a');
	for(var i=0; i<a.length; i++){
		if(hasClass(a[i], 'hover')){
			var img=a[i].getElementsByTagName('img');
			for(var j=0; j<img.length; j++){
				var h=img[j].src.replace(/\.(png|gif|jpg)$/, '_h.$1');
				precarga(h);
			}

			addEvent(a[i], 'mouseover', function(){
				var img=this.getElementsByTagName('img');
				for(var i=0; i<img.length; i++){
					rollover(img[i], true);
				}
			});

			addEvent(a[i], 'mouseout', function(){
				var img=this.getElementsByTagName('img');
				for(var i=0; i<img.length; i++){
					rollover(img[i], false);
				}
			});
		}
	}
}


/*
 * Precarga de imágenes
 */
function precarga(){ // v2005-05-22
	var argv=precarga.arguments;
	var argc=precarga.arguments.length
	if(!document.precarga_img){
		document.precarga_img=new Array();
	}

	for(var i=0; i<argc; i++){
		var j=document.precarga_img.length;
		document.precarga_img[j]=new Image();
		document.precarga_img[j].src=argv[i];
	}
}


/*
 * <img onmouseover="rollover(this, true)" onmouseout="rollover(this)">
 */
function rollover(imagen, resaltar){ // v2005-03-18*
	if(resaltar){
		if(imagen.pngSrc){
			imagen.src=imagen.pngSrc.replace(/_h\.(png|gif|jpg)$/, '.$1');
			imagen.src=imagen.pngSrc.replace(/\.(png|gif|jpg)$/, '_h.$1');
		}else{
			imagen.src=imagen.src.replace(/_h\.(png|gif|jpg)$/, '.$1');
			imagen.src=imagen.src.replace(/\.(png|gif|jpg)$/, '_h.$1');
		}
	}else{
		if(imagen.pngSrc){
			imagen.src=imagen.pngSrc.replace(/_h\.(png|gif|jpg)$/, '.$1');
		}else{
			imagen.src=imagen.src.replace(/_h\.(png|gif|jpg)$/, '.$1');
		}
	}
}


/*
 * Construye un enlace mailto a prueba (más o menos) de spammers
 */
function mailto_nospam(mande, /*op*/etiqueta, /*op*/asunto, /*op*/cuerpo){ // 2006-06-19
	var piezas=mande.split(/\|/);
	var largo=piezas.length/2;
	var parametros=[];

	if(asunto){
		parametros[parametros.length]='subject=' + asunto;
	}
	if(cuerpo){
		parametros[parametros.length]='body=' + cuerpo;
	}

	var total=Array(largo);
	for(var i=0; i<largo; i++){
		total[piezas[0+i+largo]]=String.fromCharCode(piezas[i]);
	}
	var email=total.join('');

	if(!etiqueta){
		var etiqueta=email;
	}

	var salida='<a href="mailto:' + email;
	if(parametros.length>0){
		salida+='?' + parametros.join('&amp;');
	}
	salida+='">' + etiqueta.encodeHTML() + '</a>';

	document.write(salida);

}