/**
 * @author Fernando Reig Aparicio
 * @copyright 2006
*/
var events_js = true;	
if (!window.extension_js) throw new Error('Se requiere el archivo extension.js');
if (!window.utiles_js) throw new Error('Se requiere el archivo utiles.js');

	function setEvent(sEvent, handler, element, bEnable){
		if (typeof(bEnable)=="undefined")
			var bEnable = true;
		if (navigator.isIExplorer()){
			if (!/^on/.test(sEvent))
				sEvent = "on"+sEvent;
		
			if (bEnable)
				element.attachEvent(sEvent, handler);
			else
				element.detachEvent(sEvent, handler);
		}else{
			if (/^on/.test(sEvent))
				sEvent = sEvent.substring(2);

			if (bEnable)
				element.addEventListener(sEvent, handler, true);
			else
				element.removeEventListener(sEvent, handler, true);
		}
	}

	function setEventByName(sEvent, handler, sName, bEnable){
		var v = document.getElementsByName(sName);
		for (var i=0; i<v.length; i++){
			setEvent(sEvent, handler, v[i], bEnable);
		}
	}

	function setEventByTagName(sEvent, handler, sTagName, bEnable){
		var v = document.getElementsByTagName(sTagName);
		
		for (var i=0; i<v.length; i++){
			setEvent(sEvent, handler, v[i], bEnable);
		}
	}	
	
	function setEventByClassName(sEvent, handler, sClassName, bEnable){
		var v = getElementsByAttributes('input','className',sClassName);	
		for (var i=0; i<v.length; i++){
			setEvent(sEvent, handler, v[i]);
		}
	}

	function e_getMousePosition(event) {
		if (typeof(window.g_iMouseX)=="undefined"){
			window.g_iMouseX = 0;
			window.g_iMouseY = 0;			
		}
			
		if (!navigator.isIExplorer()) { //si no es el internet Explorer
			g_iMouseX = event.pageX;
			g_iMouseY = event.pageY;
		}else { //si es el internet explorer
			try{
				g_iMouseX = event.clientX + document.documentElement.scrollLeft;
				g_iMouseY = event.clientY + document.documentElement.scrollTop;
			}catch(ex){}
		}
		return true;
	}

	function getMouseX(){
		if (typeof(window.g_iMouseX)!='undefined')
			return window.g_iMouseX;
		throw new Error("No se han capturado las coordenadas del ratón."); 
		return 0;	
	}

	function getMouseY(){
		if (typeof(window.g_iMouseY)!='undefined')
			return window.g_iMouseY;
		throw new Error("No se han capturado las coordenadas del ratón."); 
		return 0;	
	}

	function e_filterKeyAlphanumeric(event){
		if (navigator.isIExplorer()){
			var k = event.keyCode;
			var c = String.fromCharCode(k);
			return /[0-9a-zA-ZñÑ]/.test(c);	
		}else{
			var k = event.charCode;
			var c = String.fromCharCode(event.charCode);			
			if (k!=0 && !/[0-9a-zA-ZñÑ]/.test(c)){
				event.preventDefault();
				event.stopPropagation();
			}	
		}
	}	
	
	function e_filterKeyIntegers(event){
		if (navigator.isIExplorer()){
			var keyCode = event.keyCode;
			return (keyCode>=48 && keyCode<=57);	
		}else{
			if (event.charCode!=0 && (event.charCode<48 || event.charCode>57)){
				event.preventDefault();
				event.stopPropagation();
			}	
		}
	}
	
	function e_filterKeyReals(event){
		if (navigator.isIExplorer()){
			var k = event.keyCode;
			var c = String.fromCharCode(k);
			if ((k<48 || k>57) && (c!='-' && c!='.' && c!=',')){
				return false;
			}
			//en caso de ser una coma se reemplaza por un punto
			if (c==','){
				event.keyCode=('.'.charCodeAt(0));
			}
		}else{
			var k = event.charCode;
			var c = String.fromCharCode(event.charCode);
			if ((k!=0) && (k<48 || k>57) && (c!='-' && c!='.' && c!=',')){
				event.preventDefault();
				event.stopPropagation();
			}
			if (c==',')
				event.charCode=('.'.charCodeAt(0));
		}
	}

	function e_filterIntegers(event){
		var e = null;
		if (navigator.isIExplorer()){
			e = event.srcElement;
		}else{
			e = event.target;
		}
		e.value =  e.value.replace(/[^0-9]/g,"");
	}

	function e_filterReals(event){
		var e = null;
		if (navigator.isIExplorer()){
			e = event.srcElement;
		}else{
			e = event.target;
		}
		e.value =  e.value.replace(/\,+/g,".").replace(/[^0-9\.\-]/g,"").replace(/([0-9\-\.\,])\-+/g,"$1");
		
		//a continuacion eliminamos todos los puntos salvo el primero
		var s="";
		var encontrado=false;
		for(var i=0; i<e.value.length; i++){
			if (e.value.charAt(i)=='.'){
				if (encontrado)
					continue;
				encontrado = true;
				if (i==0)
					s+='0';
				s+='.';
			}else
				s+=e.value.charAt(i);
		}
		e.value=s;
	}
	
	
	function e_prevenirOnclickEnlaces(event){
		if (document.all){
			var e = event.srcElement;		
			var url1 = decodeURI(location.href);
			var url2 = decodeURI(e.href);		
			
			if ((url1==url2) || ((url1+"#")==url2)){
				e.onclick();
				return false;
			}	
		}else{
			
		}
	}

	function prevenirOnclickEnlaces(){
		var v = document.getElementsByTagName('a');
		for (var i=0; i<v.length; i++){
			setEvent("onclick", e_prevenirOnclickEnlaces, v[i], true);
		}	
	}
	
	//activación (captura) de eventos por defecto
	//setEvent('onmousemove', e_getMousePosition, document);	
	