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){
		var v = document.getElementsByName(sName);
		for (var i=0; i<v.length; i++){
			setEvent(sEvent, handler, v[i]);
		}
	}

	function setEventByClassName(sEvent, handler, sClassName){
		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
			g_iMouseX = event.clientX + document.body.scrollLeft;
			g_iMouseY = event.clientY + document.body.scrollTop;
		}
		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_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!=',')){
				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!=',')){
				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,"");
		
		//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 (navigator.isIExplorer()){
			var e = window.event.srcElement;		

			var url1 = unescape(location.href);
			var url2 = unescape(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);	
	