var fnG = {
	obtieneLayer: function ( id ) {
		if ( document.getElementById ) {
			return document.getElementById( id ).style;
		} else if ( document.all ) {
			return document.all[id].style;
		} else if ( document.layers ) {
			return document.layers[id];
		}
	},
	
	obtenerKeyCode: function ( e ) {
		return window.event ? window.event.keyCode : ( e && typeof e.which != 'undefined' ) ? e.which : ( e && typeof e.keyCode != 'undefined' ) ? e.keyCode : null;
	},
	
	obtenerTarget: function ( e ) {
		return ( window.event && window.event.srcElement ) ? window.event.srcElement : ( e && e.target ) ? e.target : 0;
	},

	obtElemPorPrefijo: function ( idFormulario, preFijo, tipoElem ) {
		var numElementos = idFormulario.elements.length;
		var arrayDevolver = new Array();
		for( var i = 0; i < numElementos; i++ ) {
			elemento = idFormulario.elements[i];
			if( tipoElem != null ) {
				switch ( elemento.type ) {
					case tipoElem:
							if( elemento.name.indexOf( preFijo ) != -1 && elemento.name.indexOf( preFijo ) == 0 ) 
								arrayDevolver.push( elemento );
							break;
				}
			}
			else if( elemento.name.indexOf( preFijo ) != -1 && elemento.name.indexOf( preFijo ) == 0 ) 
					arrayDevolver.push( elemento );
		}
		return arrayDevolver;
	},

	obtElem: function ( id ) {
		if ( document.getElementById ) {
			return document.getElementById( id );
		}
		else if ( window[id] ) {
			return window[id];
		}
		return null;
	},
	
	addEvent: function ( elm, evType, fn, useCapture ) {
	  // cross-browser event handling for IE5+, NS6 and Mozilla 
	  // By Scott Andrew 
		if ( elm.addEventListener ) { 
			elm.addEventListener( evType, fn, useCapture );
			return true;
		} else if ( elm.attachEvent ) { 
			var r = elm.attachEvent( 'on' + evType, fn ); 
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	
	caracteresValidos: function( e, ExpRegNoAceptados ) {
		var key = fnG.obtenerKeyCode( e );
		var caracterEntrada = String.fromCharCode( key );
		return !( caracterEntrada.match( ExpRegNoAceptados ) );
	},
	
	alerta: function ( mensaje, objeto ) {
		alert( mensaje );
		objeto.focus();
		return false;
	},
	
	trim: function ( s ) {
		while ( s.substring( 0, 1 ) == ' ' || s.substring( 0, 1 ) == '\t' ) {
			s = s.substring( 1, s.length );
		}
		while ( s.substring( s.length - 1, s.length ) == ' ' || s.substring( s.length - 1, s.length ) == '\t' ) {
			s = s.substring( 0, s.length - 1 );
		}
		return s;
	},
	
	borraEspacios: function ( strFormulario ) {
		var elementos;
		eval( "elementos = " + strFormulario + ".elements.length;" );
		for( var i = 0; i < elementos; i++ ) {
			eval( "elem = " + strFormulario + ".elements[i];" );
			switch ( elem.type ) {
				case "text": elem.value = fnG.trim( elem.value );
							break;
			}
		}
	},
	
	fechaMayor: function ( dia1, mes1, anio1, dia2, mes2, anio2 ) {
		var fechaInicio = "";
		var fechaFin = "";
		fechaInicio = anio1 + mes1 + dia1;
		fechaFin = anio2 + mes2 + dia2;
		return ( fechaInicio > fechaFin )
	},
	
	llenadia: function ( comboDia, mes, ano ) {
		var maximo = 31;
		var maxdia = comboDia.options[comboDia.selectedIndex].value;
		//borro el combo hijo
		for( var i = comboDia.options.length; i > 0; i-- ) { 
			comboDia.options[i] = null;
		}
		if( mes == '4' || mes == '6' || mes == '9' || mes == '11' )
			maximo = 30;
		if( mes == '2' ) {
			maximo = 28;
			var flagbiciesto = eval( ( ano % 4 == 0 ) && ( ( ano % 100 != 0 ) || ( ano % 400 == 0 ) ) );
			if( flagbiciesto )
				maximo = 29;				
		}
		//options[0] = new Option( "dia", 0 );
		//relleno el combo hijo
		for( var j = 0; j < maximo; j++ ) {
			var valOption = ""
			var cero = "0";
			var newVal = 0;
			newVal = j + 1;
			valOption = "" + newVal + "";
			if( parseInt( valOption ) < 10 )
				valOption = cero.concat( valOption );
			comboDia.options[j] = new Option( valOption, j + 1 );
		}
		if( maxdia >= maximo ) {
			comboDia.options[maximo - 1].selected = true
		}	
		else {
			comboDia.options[maxdia - 1].selected = true
		}
	},
	
	muestraMensaje: function ( div, flag ) {
		var DHTML = ( document.getElementById || document.all || document.layers );
		if ( !DHTML )
			return;
		var x = fnG.obtieneLayer( div );
		x.visibility = ( flag ) ? 'visible' : 'hidden'
		if( !document.getElementById )
			if( document.layers )
				x.left = 280 / 2;
	},

	obtContenido: function( URL, fn ) {
		if (!Sarissa) { alert("No está agregada la Librería Sarissa."); return;}
		var xmlhttp = new XMLHttpRequest();
		var fecha = new Date();
		var timestamp = fecha.getTime();
		var qs = URL + '&t=' + timestamp;
		xmlhttp.open('GET', URL + qs, true);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
				fn( unescape( xmlhttp.responseText ) );
			}
		};
		xmlhttp.send(null);
	},
	
	esFecha: function(y, m, d){ //v1.0
			if(typeof y == "string" && m instanceof RegExp && d){
				if(!m.test(y)) return 1;
				y = RegExp["$" + d.y], m = RegExp["$" + d.m], d = RegExp["$" + d.d];
			}
			d = Math.abs(d) || 0, m = Math.abs(m) || 0, y = Math.abs(y) || 0;
			return arguments.length != 3 ? 1 : d < 1 || d > 31 ? 2 : m < 1 || m > 12 ? 3 : /4|6|9|11/.test(m) && d == 31 ? 4
			: m == 2 && (d > ((y = !(y % 4) && (y % 1e2) || !(y % 4e2)) ? 29 : 28)) ? 5 + !!y : 0;
	}
}
