/*******************************************************
FUNCION QUE MUESTRA EL MENSAJE VOLCADO DESDE EL SERVIDOR *
********************************************************/
	function disPlayMessage(){
		if (MSGERROR != null && MSGERROR != ""){
			//Si hay error no cerramos la ventana
			alert(MSGERROR);
			return;
		}
		if (MSGOK != null && MSGOK != ""){
			alert(MSGOK);
		}
	}
/*******************************************************
FUNCION QUE DESHABILITA LOS COMBOS 
********************************************************/
function deshabilitarCombos(){
	var combos = document.getElementsByTagName("select");
	for(var i=0; i<combos.length; i++){
		combos[i].disabled= true;
	}
}
/*******************************************************
FUNCION QUE CIERRA LA VENTANA ACTUAL
********************************************************/
function Cancelar(){
	window.close();	
}	

/***************************************************************************************
 ELIMINAR ESPACIOS AL PRINCIPIO Y AL FINAL DE UNA CADENA DE CARACTERES (OMS)
        - Entrada:  cadena de caracteres
***************************************************************************************/
	function ltrim (s) {
		return s.replace( /^\s*/, "" )
	}
	function rtrim (s) {
		return s.replace( /\s*$/, "" );
	}
	function trim (s) {
		return rtrim(ltrim(s));
	}

/***************************************************************************************
 FORMATEO DE FECHA: AAAAMMDD -> DD/MM/AA
    - Entrada:  fecha con formato AAAAMMDD
	- Devuelve: fecha con formato DD/MM/AAAA o MM/DD/AAAA (depende de ordendiames)
***************************************************************************************/
function formatFecha (entrada,sep) {

	var ordendiames = "1";
	if(document.forms.frmInicio.hdOrdenDiaMes){
		ordendiames = document.forms.frmInicio.hdOrdenDiaMes.value;
	}
	
	var fecha = trim(entrada);

	if ((fecha == "") || (fecha == "0")) {
		return "";
	} else {
		var anno = fecha.substring(0,4);
		var mes = fecha.substring(4,6);
		var dia = fecha.substring(6,8);

		if (sep == undefined) sep= "/";
		
		if(ordendiames == "2"){
			return (mes + sep + dia + sep + anno);
		}else{
			return (dia + sep + mes + sep + anno);
		}
	}
}

/***************************************************************************************
 DESFORMATEO DE FECHA:
    - Entrada:  fecha con formato DD/MM/AAAA o MM/DD/AAAA (depende de ordendiames)
	- Devuelve: fecha con formato AAAAMMDD
***************************************************************************************/
function desformatFecha (entrada) {
	
	var ordendiames = "1";
	if(document.forms.frmInicio.hdOrdenDiaMes){
		ordendiames = document.forms.frmInicio.hdOrdenDiaMes.value;
	}

	var fecha = trim(entrada);
	if (fecha == "") {
		return "";
	}
	else {
		var dia = fecha.substr(0,2);
		var mes = fecha.substr(3,2);
		if(ordendiames == "2"){
			mes = fecha.substr(0,2);
			dia = fecha.substr(3,2);
		}
		var anno = fecha.substr(6,4);

		return (anno + mes + dia);
	}
}

/***************************************************************************************
 DESFORMATEO DE FECHA:
    - Entrada:  fecha con formato AAAA/MM/DD
	- Devuelve: fecha con formato AAAAMMDD
***************************************************************************************/
function desformatFechaAAAAMMDD (entrada) {

	var fecha = trim(entrada);
	if (fecha == "") {
		return "";
	}
	else {
		var anno = fecha.substring(0,4);
		var mes = fecha.substring(5,7);
		var dia = fecha.substring(8,10);

		return (anno + mes + dia);
	}
}

/***************************************************************************************
 DEVUELVE LA FECHA ACTUAL CON FORMATO AAAA/MM/DD
***************************************************************************************/
function hoy() {
	var fechaActual = new Date();
	var dia = fechaActual.getDate();
	var mes = fechaActual.getMonth();
	mes = parseInt(mes,10) + 1;

	//var anno = fechaActual.getYear(); 
	//ï¿½ï¿½ï¿½ï¿½getYear no va bien en firefox (devuelve 109, en vez de 2009!!!)
	var anno = fechaActual.getFullYear();

	if (dia < 10) dia = "0" + dia;
	if (mes < 10) mes = "0" + mes; 	

//	return (dia+"/"+mes+"/"+anno);
	return (anno+"/"+mes+"/"+dia);
}

/***************************************************************************************
 FORMATEO DE FECHA: AAAAMMDD -> DD/MM/AA
    - Entrada:  fecha con formato AAAAMMDD
	- Devuelve: fecha con formato DD/MM/AAAA HH:MM:SS
***************************************************************************************/
function formatFechaHora (entrada,sep) {

	var fecha = trim(entrada);

	if ((fecha == "") || (fecha == "0")) {
		return "";
	} else {
		var anno = fecha.substring(0,4);
		var mes = fecha.substring(4,6);
		var dia = fecha.substring(6,8);
		
		var hora = "";
		if(fecha.length == 14){
			hora = fecha.substring(8, 10);
			var min = fecha.substring(10, 12);
			var seg = fecha.substring(12, 14);
			hora = hora+":"+min +":"+seg;
		}
		if (sep == undefined) sep= "/";
		return (dia + sep + mes + sep + anno + " " +hora);
	}
}

/***************************************************************************************
 DESFORMATEO DE FECHA: AAAAMMDD -> DD-MM-AA
        - Entrada:  fecha con formato DD/MM/AAAA
	- Devuelve: fecha con formato AAAAMMDDHHMMSS
***************************************************************************************/
function desformatFechaHora (entrada) {
	var fecha = trim(entrada);
	if (fecha == "") {
		return "";
	}
	else {
		var dia = fecha.substr(0,2);
		var mes = fecha.substr(3,2);
		var anno = fecha.substr(6,4);

		var hora = "";
		if(fecha.length == 19){
			hora = fecha.substring(11, 2);
			var min = fecha.substring(14, 2);
			var seg = fecha.substring(17, 2);
			hora = hora+min+seg;
		}
		
		return (anno + mes + dia + hora);
	}
}

/***************************************************************************************
 MUESTRA UNA VENTANA CON EL CALENDARIO
***************************************************************************************/
function mostrarCalendario(archivo,argumento,ancho,alto,caja){

	var posicionX=event.clientX;
	var posicionY=event.clientY;
	
	dato=window.showModalDialog(archivo,argumento,"dialogTop:"+posicionY+"px;dialogLeft:"+posicionX+"px;dialogHeight:"+alto+"px;dialogWidth:"+ancho+"px;help:no;status:no;scroll:no");
	if (dato){
		document.forms.frmInicio(caja).value=dato;
	}
}
/******************************************************
 SUMA O RESTA Aï¿½OS, MESES O Dï¿½AS A UNA FECHA DADA EN 
 FORMATO AAAAMMDD
*******************************************************/
function sumaAnnosMesesDias(strfecha, intanno, intmes, intdia) {
	
	var sano,smes,sdia;
	var fecha;
	
	sano=strfecha.substr(0,4);
	smes=strfecha.substr(4,2);
	smes=parseInt(smes,10)-1;
	sdia=strfecha.substr(6,2);

	var fechaRecibida= new Date(sano,smes,sdia);
	var anorec=fechaRecibida.getFullYear();
	var mesrec=fechaRecibida.getMonth();
	var diarec=fechaRecibida.getDate();

	var fechaNueva=new Date(parseInt(anorec,10)+ intanno,parseInt(mesrec,10)+ intmes,parseInt(diarec,10)+ intdia);
	return conseguirFecha(fechaNueva);
}

function conseguirFecha (strfec){
	var dia,mes,ano;
		
	dia=strfec.getDate();
	if (dia<10) dia="0"+dia;
	
	mes=strfec.getMonth();
	mes=mes+1;
	if (mes < 10){
		mes="0"+mes;
	}
	ano=strfec.getFullYear();
	//sfecha=dia+"/"+mes+"/"+ano;
	sfecha=ano+""+mes+""+dia;
	return sfecha; 
}	

/*****************************************
Devuelve un String con el formato yyyyMMdd
 a partir de un objeto DATE
******************************************/
function fechaToString(date){

	var fechaString = "";
	if(date){
		var year = date.getFullYear();
		var mes = date.getMonth()+1;
		if (mes < 10) mes = "0"+mes;
		var dia = date.getDate();
		if (dia < 10) dia = "0"+dia;
		fechaString = year+""+mes+""+dia;
	}
	return fechaString;
}

/********************************************
Devuelve un objeto Date a partir de un String 
con el formato indicado en el 2ï¿½ parametro
******************************************/
function stringToDate(strFecha, formato){

	var dia = "";
	var mes = "";
	var anno = "";

	if(formato == "ddmmyyyy"){
		dia = strFecha.substr(0,2);
		mes = strFecha.substr(2,2);
		anno = strFecha.substr(4);

	}else if (formato == "mmddyyyy"){
		dia = strFecha.substr(2,2);
		mes = strFecha.substr(0,2);
		anno = strFecha.substr(4);
		
	}else if (formato == "yyyymmdd"){
		dia = strFecha.substr(6);
		mes = strFecha.substr(4,2);
		anno = strFecha.substr(0,4);
	}
	var objDate = new Date(anno, (mes - 1), dia);
	return objDate;
}

/********************************************************
FUNCIï¿½N ENCARGADA DE BORRAR EL COMBO QUE SE LE PASE COMO
PARï¿½METRO.
*********************************************************/
function borrarCombo(objCombo){

	for (var j=objCombo.length-1;j>=0;j--){
		objCombo.options[j] = null;
	}
}

/********************************************************
FUNCIï¿½N ENCARGADA ACCEDER AL XML mensajes.xml Y 
OBTENER EL MENSAJE DE ERROR
*********************************************************/	
function obtenerMSGERROR(codError){
	var codIdioma = $("#txtIdioma").attr("value");
	var desError = "";
	var capaError = $("#error");
	var param = 'strIdiomaOrigen=' + codIdioma + '&CXMLHTTP=SI';
		
	//llamada al xml 'mensajes.xml' para obtener los mensajes de error
	$.ajax({
		url: 'Tren?ACCION=MENSAJES',
		type: 'POST',
		dataType: "xml",
		async: false,
		data: param,
		success: function(respuestaXml) {
			$(respuestaXml).find("idioma[value="+codIdioma+"]").each(function(){
	  			$(this).find("MENSAJE[codigo="+codError+"]").each(function(){
					desError = $(this).find("DESCERROR").text();
					capaError.html("<span class='mensaje'>"+desError+"</span>");
					capaError.attr("style", "height: 15px; display: block;");
				});
			});
		}
	});
	//si no se ha encontrado el error se muestra el codigo,
	// ya que puede ser la descripciï¿½n de una excepcion de Renfe
	if(desError == ""){
		capaError.html("<span class='mensaje'>"+codError+"</span>");
		capaError.attr("style", "height: 15px; display: block;");
	}
}

/********************************************************
FUNCIï¿½N ENCARGADA ACCEDER AL XML mensajes.xml Y 
OBTENER EL MENSAJE DEL PRECIO CAMBIADO PARA PRESENTARLO 
CON LA ANCHURA ESPECIFICADA EN EL 2ï¿½ PARAMETRO
*********************************************************/	
function obtenerMSGPrecioCambiado(codError, anchura){
	var codIdioma = $("#txtIdioma").attr("value");
	var desError = "";
	var msgError = $("#msgPrecioCambiado");
//	msgError.attr("style", "background-color:#FF9900; width:"+anchura+"px; height:15px; visibility: visible;");
	msgError.attr("style", "background-color:#FF9900; width:"+anchura+"px; visibility: visible; text-align: center;");
	var param = 'strIdiomaOrigen=' + codIdioma + '&CXMLHTTP=SI';
	
	//llamada al xml 'mensajes.xml' para obtener las descripciones
	$.ajax({
		url: 'Tren?ACCION=MENSAJES',
		type: 'POST',
		dataType: "xml",
		async: true,
		data: param,
		success: function(respuestaXml) {
			$(respuestaXml).find("idioma[value="+codIdioma+"]").each(function(){
	  			$(this).find("MENSAJE[codigo="+codError+"]").each(function(){
					desError = $(this).find("DESCERROR").text();
					msgError.html("<span class='mensaje'>"+desError+"</span>");
				});
			});
		}
	});
}

/********************************************************
FUNCIï¿½N ENCARGADA ACCEDER AL XML mensajes.xml Y 
OBTENER EL MENSAJE DE ERROR PARA MOSTRARLO EN UN 'ALERT'
*********************************************************/	
function alertMSGERROR(codError){
	var codIdioma = $("#txtIdioma").attr("value");
	var desError = "";
	var param = 'strIdiomaOrigen=' + codIdioma + '&CXMLHTTP=SI';
	if (codError == "999999"){
		window.location.replace("../../trenes/renfe/conexion/jsp/error.jsp");
	} else {
		//llamada al xml 'mensajes.xml' para obtener las descripciones
		$.ajax({
			url: 'Tren?ACCION=MENSAJES',
			type: 'POST',
			dataType: "xml",
			async: true,
			data: param,
			success: function(respuestaXml) {
				$(respuestaXml).find("idioma[value="+codIdioma+"]").each(function(){
		  			$(this).find("MENSAJE[codigo="+codError+"]").each(function(){
						desError = $(this).find("DESCERROR").text();
						alert(desError);
					});
				});
			}
		});
	}
}

/********************************************************
FUNCIï¿½N ENCARGADA ACCEDER AL XML mensajes.xml Y 
OBTENER EL MENSAJE DE ERROR PARA MOSTRARLO EN UN 'ALERT' 
teniendo encuenta el dato recibido. 
*********************************************************/	
function alertMSGERROR2(codError, dato){
	var codIdioma = $("#txtIdioma").attr("value");
	var desError = "";
	var param = 'strIdiomaOrigen=' + codIdioma + '&CXMLHTTP=SI';
	if (codError == "999999"){
		window.location.replace("../../trenes/renfe/conexion/jsp/error.jsp");
	} else {
		//llamada al xml 'comboTiposViaje.xml' para obtener las descripciones
		$.ajax({
			url: 'Tren?ACCION=MENSAJES',
			type: 'POST',
			dataType: "xml",
			async: true,
			data: param,
			success: function(respuestaXml) {
				$(respuestaXml).find("idioma[value="+codIdioma+"]").each(function(){
		  			$(this).find("MENSAJE[codigo="+codError+"]").each(function(){
						desError = $(this).find("DESCERROR").text();
						alert(desError+ " " + dato);
					});
				});
			}
		});
	}
}

/***************************************************************************************
 CARGA UN COMBO, pasando como argumentos el nombre del combo y un XML con los datos
 Parametros de entrada:
	- objCombo: el objeto combo
	- xmlTemp: xml tomado de la request, con los datos para
				cargar el combo.
	- blnInicial: (true - sï¿½, false - no).
 Parametros de salida:
 	- numero de elementos (options) annadidos al combo
***************************************************************************************/
	function cargaCombos(objCombo,xmlTemp,blnInicial){

		if (blnInicial) {
			var numReg = xmlTemp.selectNodes("//REGISTROS/REGISTRO").length;
			objCombo.options[0]=new Option("Seleccione", "0", false, false);
			
			for (var i = 0; i < numReg; i++) {
				var nodo = xmlTemp.selectNodes("//REGISTROS/REGISTRO").item(i);
				var txtCodigo=limpiarXML(trim(nodo.getAttribute("Codigo")));
				var txtDescripcion = limpiarXML(trim(nodo.getAttribute("DescCorta")));
				var opcionTmp = new Option(txtDescripcion, txtCodigo, false, false);
				objCombo.options[i+1]=opcionTmp;
			}
		} else {

			borrarCombo(objCombo);
	
			var numReg = xmlTemp.selectNodes("//REGISTROS/REGISTRO").length;
	
			for (var i = 0; i < numReg; i++) {
				var nodo = xmlTemp.selectNodes("//REGISTROS/REGISTRO").item(i);
				var txtCodigo=limpiarXML(trim(nodo.getAttribute("Codigo")));
				var txtDescripcion = limpiarXML(trim(nodo.getAttribute("DescCorta")));
				var opcionTmp = new Option(txtDescripcion, txtCodigo, false, false);
				objCombo.options[i]=opcionTmp;
			}
		}
	}

/***************************************************************************************
 FUNCIï¿½N QUE LIMPIA DE TABULADORES, SALTOS DE LINEA Y RETORNOS
 DE CARRO EL XML GENERADO POR JADE
 Parametros de entrada:
	- cadenaXML: xml
 Salida:
 	- cadena xml sin tabuladores
***************************************************************************************/
function limpiarXML(cadenaXML) {
	cadenaXML = cadenaXML.replace("&amp;","&");
	return cadenaXML.replace(/[\t|\n|\r]*/g,"");
}


/***************************************************************************************
 FUNCIï¿½N QUE VALIDA QUE LA FECHA DE LA TARJETA
 SEA DEL FORMATO mm/aa
 Parametros de entrada:
	- FECHA: fecha en formato mm/aa
 Salida:
 	- TRUE/FALSE
***************************************************************************************/
function validarFechaTarjeta(entrada){

	var fecha = trim(entrada);
	var mes = fecha.substring(0,2);
	var anno = fecha.substring(3,5);
	var barra = fecha.substring(2,3);

	if (!isNaN(mes) && !isNaN(anno)) {
		if (barra == "/"){
			if(mes>0 && mes<13){
				return true;
			}else{
				return false;
			}
		}else{
			return false;
		}	
	}else{
		return false;
	}
}

/***************************************************************************************
 VALIDAR Y DESFORMATEAR IMPORTE (OMS)
    - Entrada:  numerico con o sin formato
        	    numDec -> numero maximo de cifras decimales permitido
	- Devuelve: numerico javascript (sin formato)
***************************************************************************************/
function validarDesformatear(entrada,sepDec,sepMiles,numDecimales) {
	var numDec = -1;
	var posSepDec = -1;
	var posSepMiles = -1;
	var pos1 = -1;
	var pos2 = -1;
	var strAux = "";
	var cadena = trim(entrada);
	var longitud = cadena.length;
	
	//validar cadena vacia
	if (cadena == "") {
//		alert("Cadena de entrada vacia");
		obtenerMSGERROR("000038");
		return "";
	}
	
	//validar y quitar el "%"
	if (cadena.charAt(longitud-1) == '%') {
		if (esPorc == "N") {
			obtenerMSGERROR("000039");
			//alert("Formato no vï¿½lido: el campo no es un porcentaje");
			return "";
		}
		strAux = cadena.substring(0,longitud-1);
		cadena = trim(strAux);
		longitud = cadena.length;
	}

	//validar separadores
	posSepDec = cadena.indexOf(sepDec);
	//un solo separador decimal
	if (posSepDec != cadena.lastIndexOf(sepDec)) {
		obtenerMSGERROR("000040");
		//alert("Formato no vï¿½lido: mï¿½ltiples ocurrencias del separador decimal");
		return "";
	}
	posSepMiles = cadena.indexOf(sepMiles);
	if ((posSepDec >= 0) && (posSepMiles >= 0) && (posSepDec < posSepMiles)) {
		obtenerMSGERROR("000041");
		//alert("Formato no vï¿½lido: separadores intercambiados");
		return "";
	}

	//validar numero de decimales
	if (posSepDec >= 0) {
		numDec = longitud - posSepDec - 1;
		if (numDec > numDecimales) {
			obtenerMSGERROR("000042");
			//alert("Formato no vï¿½lido: nï¿½mero de cifras decimales incorrecto");
			return "";
		}
	}

	//validar separadores de miles
	if (posSepMiles >= 0) {
		pos1 = posSepMiles;
		pos2 = cadena.indexOf(sepMiles,pos1+1);
		//separadores decimales en posiciones de millares
		while (pos2 >= 0) {
			if (pos2 - pos1 != 4) {
				obtenerMSGERROR("000043");
				//alert("Formato no vï¿½lido: separador de miles errï¿½neo");
				return "";
			}
			else {
				pos1 = pos2;
				pos2 = cadena.indexOf(sepMiles,pos1+1);
			}
		}
		//primer separador decimal en unidades de millar
		if (posSepDec >= 0) {
			pos2 = posSepDec;
		}
		else {
			pos2 = longitud;
		}
		if (pos2 - pos1 != 4) {
			//alert("Formato no vï¿½lido: separador de miles errï¿½neo");
			obtenerMSGERROR("000043");
			return "";
		}
	}

	//eliminar separadores decimales
	while (posSepMiles >= 0) {
		strAux = cadena.substring(0,posSepMiles);
		strAux = strAux + cadena.substring(posSepMiles+1,longitud);
		cadena = strAux;
		posSepMiles = cadena.indexOf(sepMiles);
	}
	
	//javascript utiliza el punto como separador decimal
	posSepDec = cadena.indexOf(sepDec);
	if ((sepDec == ",") && (posSepDec >= 0)) {
		strAux = cadena.substring(0,posSepDec) + "." + cadena.substring(posSepDec+1,longitud);
		cadena = strAux;
	}

	//validar que tanto la parte entera como la decimal sean numï¿½ricos
	pos1 = cadena.indexOf(".");
	if (pos1 < 0) {
		pos1 = longitud;
	}
	if ((cadena.charAt(0) == '+') || (cadena.charAt(0) == '-')) {
		strAux = cadena.substring(1,pos1);  //parte entera sin signo
	}
	else {
		strAux = cadena.substring(0,pos1);  //parte entera sin signo
	}
	/*if (!esNumeros(strAux)) {
		alert("Formato no vï¿½lido: parte entera no numï¿½rica");
		return "";
	}

	//validar parte decimal si existe
	pos1 = cadena.indexOf(".");
	if (pos1 >= 0) {
		strAux = cadena.substring(pos1+1,longitud);  //parte decimal
		if (!esNumeros(strAux)) {
			alert("Formato no vï¿½lido: parte decimal no numï¿½rica");
			return "";
		}
	}*/
	return cadena;	
}

/***************************************************************************************
 FORMATEAR IMPORTE 
    - Entrada:  entrada -> numerico javascript (sin formato)
     	  	    numDec -> numero de cifras decimales (rellena con 0 si no hay)
	- Devuelve: numerico con formato
***************************************************************************************/
function formatearCampo(entrada,sepDec,sepMiles,numDec) {
	var cadena = "";
	var strAux = "";
	var signo = "";
	var longitud = 0;
	var posSepDec = 0;
	var posSepMiles = 0;
	var tope = 0;
	var i = 0;
	
	cadena = trim(entrada.toString());  //convertir en cadena de caracteres
	if (cadena == "") {
		return "";
	}
	
	longitud = cadena.length;
	//extraer el signo si lo tiene
	signo = cadena.substring(0,1);
	if ((signo == "+") || (signo == "-")) {
		strAux = cadena.substring(1,longitud);
		//alert("Signo: "+cadena+" -> "+strAux);
		cadena = strAux;
		longitud = cadena.length;
	}
	else {
		signo = "";
	}

	//establecer numero de decimales y separador decimal
	posSepDec = cadena.indexOf(".");
	if (posSepDec >= 0) {
		if (numDec > 0) {
			tope = posSepDec+parseInt(numDec)+1;
			strAux = cadena.substring(0,tope);
			//alert("Numero decimales("+numDec+"): "+cadena+" -> "+strAux);
			if (longitud < tope) {
				for (i=0;i<tope-longitud;i++) {
					strAux = strAux + "0";
				}
			}
			cadena = strAux;
			longitud = cadena.length;
			if (sepDec == ",") {
				strAux = cadena.substring(0,posSepDec) + ",";
				strAux = strAux + cadena.substring(posSepDec+1,longitud);
				//alert("Numero decimales: "+cadena+" -> "+strAux);
				cadena = strAux;
				longitud = cadena.length;
			}
			posSepDec = cadena.indexOf(sepDec);
		}
		else {
			strAux = cadena.substring(0,posSepDec);
			//alert("Numero decimales("+numDec+"): "+cadena+" -> "+strAux);
			cadena = strAux;
			longitud = cadena.length;
			posSepDec = -1;
		}
	}
	else {
		if (numDec > 0) {
			strAux = cadena + sepDec;
			for (i=0;i<numDec;i++) {
				strAux = strAux + "0";
			}
			cadena = strAux;
			longitud = cadena.length;
			posSepDec = cadena.indexOf(sepDec);
		}
	}
	
	//aï¿½adir separadores de miles
	if (posSepDec >= 0) {
		posSepMiles = posSepDec - 3;
	}
	else {
		posSepMiles = longitud - 3;
	}
	while (posSepMiles > 0) {
		strAux = cadena.substring(0,posSepMiles) + sepMiles;
		strAux = strAux + cadena.substring(posSepMiles,longitud);
		posSepMiles = posSepMiles - 3;
		//alert("Separadores de miles: "+cadena+" -> "+strAux);
		cadena = strAux;
		longitud = cadena.length;
	}
	
	//aï¿½adir el signo si lo tiene
	if (signo.length > 0) {
		cadena = signo + cadena;
		//alert("Signo: "+cadena);
	}
	
	return cadena;
}
/***************************************************************************************
 VALIDAR DIRECCION DE CORREO ELECTRONICO
 Segun los siguientes criterios:
	- la cadena contiene una @ y sï¿½lo una.
	- la cadena contiene algo antes de la @.
	- la cadena contiene algo despuï¿½s de la @, formado por palabras separadas por puntos.
	- sï¿½lo puede contener nï¿½meros, letras o el guiï¿½n bajo.
***************************************************************************************/
	function esMail(variable) {
		var patron=/^[^.@' ']+[^@' ']+\@[^.@' ']+\.[^@' ']+[^.@]$/; 
		var smail = trim(variable);
		var cadenaEncontrada=smail.match(patron);
		if (cadenaEncontrada!=null){ 
			var iHaySeparador = smail.split('..'); 
			if (iHaySeparador.length>1){ 
				return false; 
			} 
			return true; 
		}else{ 
			return false; 
		}

//		var patron = /^\w+@(\w+\.\w+)+$/;
//		return patron.test(variable);
	}
	
/***************************************************************************************
 VALIDA SI UNA CADENA DE CARACTERES ESTA FORMADA UNICAMENTE POR DIGITOS NUMERICOS
        - Entrada:  cadena de caracteres
	- Devuelve: true/false
***************************************************************************************/
	function esNumeros(variable) {
		var patron = /^\d+$/;
		return patron.test(variable);
	}

	function esLetras(src) {
	/*	var charpos = src.search("[\ñ\Ñ]+[^A-Za-z]");
		if(charpos >= 0) {
			return false;
		}else{
			return true;
		}
		
		var patron = /^[a-zA-Zñ-Ñ]+$/;
		var patron =/[A-Za-zñÑ\s]/;
		var cadenaEncontrada = src.match(patron);
		if (cadenaEncontrada==null){
		if (src.match(patron)){
			return false;
		}
		return true;
	*/
		
		var patron =/[A-Za-zñÑ\s]/;
		if (!patron.test(src)){
			return false; 
		}else{	
		 	return true;
		}
			
}
	
function abrirVentana(sPagina, nTamX, nTamY)
{
	var nAnchura, nAltura, nTop, nLeft, sPropsVentana;
	nAnchura = screen.availWidth;
	nAltura = screen.availHeight;
	nTop = (nAltura - nTamY - 30) * .5;
	nLeft =  (nAnchura - nTamX - 10) * .5;
	sPropsVentana  = 'width=' + nTamX + ',height=' + nTamY;
	sPropsVentana += ',top=' + nTop + ',left=' + nLeft;
	sPropsVentana += ',scrollbars=yes,menubar=no,toolbar=no,directories=no,location=no,status=no';
	window.open(sPagina,'',sPropsVentana);
}
/*****************************************************
FUNCIï¿½N QUE FORMATEA FECHA 
ENTRADA MM/AAAA
SALIDA MMAAAA
*****************************************************/
function formatearFechaConBarra (fecha){
	fecha = fecha.replace("/", "");
	return fecha;
}

/*****************************************************
FUNCIï¿½N QUE FORMATEA FECHA 
ENTRADA MMAAAA
SALIDA MM/AAAA
*****************************************************/
function formatearFechaSinBarra (fecha){
	var anno = fecha.substring(2,4);
	var mes = fecha.substring(0,2);
	fecha= mes+"/"+anno;
	return fecha;

}

/***********************************************************************************
Funcion encargada de validar que no se sobrepase el numero maximo de pasajeros definido.
************************************************************************************/
function validarNumeroPasajeros(){

	var numAdultos = parseInt(document.frmInicio.cmbAdultos.value);
	var numNinos = parseInt(document.frmInicio.cmbNinos.value);
	var numPasajeros = numAdultos + numNinos; 
	var maxPasajeros = parseInt(document.frmInicio.txtMaxPasajeros.value);
	if(numPasajeros > maxPasajeros){
		alertMSGERROR2("000048", maxPasajeros);
		document.frmInicio.cmbAdultos.focus();
		return false;
	}else {
		var minAdultos = parseInt(document.frmInicio.txtNumMinAdultosConNinios.value);
		if (numNinos > 0 && (numAdultos < minAdultos)){
			alertMSGERROR2("000049", minAdultos);
			document.frmInicio.cmbAdultos.focus();
			return false;
		} else {
			return true;
		}
	}
}

function redondeo2decimales(numero)
{
	var original=parseFloat(numero);
	var result=Math.round(original*100)/100 ;
	return result;
}


function checkNumbers(evt){

	  var charCode = evt.charCode;

	  if (charCode == null || charCode == 0) charCode = evt.keyCode;
	  if (charCode == null) charCode = evt.which;
	  
	  return ( (charCode >= 48 && charCode <= 57) || charCode == 37 || charCode == 39  || charCode == 8 || charCode==127 || charCode==11|| charCode==9 || charCode==13);
}

/*******************************************************************************************************************************
Convierte una vocal que tenga acento o similar a una vocal simple (Sin acentos), asi como la ï¿½ la pasa a N y los + a espacios. 
********************************************************************************************************************************/
String.prototype.removeAccents = function ()
{
	var __r = 
	{
		'\'':' ','+':' mas ','À':'A','Á':'A','Â':'A','Ã':'A','Ä':'A','Å':'A','Æ':'E',
		'È':'E','É':'E','Ê':'E','Ë':'E',
		'Ì':'I','Í':'I','Î':'I',
		'Ò':'O','Ó':'O','Ô':'O','Ö':'O',
		'Ù':'U','Ú':'U','Û':'U','Ü':'U',
		'Ñ':'N'
	};
	
	return this.replace(/[ÀÁÂÃÄÅÆÈÉÊËÌÍÎÒÓÔÖÙÚÛÜÑ+\']/gi, function(m){
	
		var ret = __r[m.toUpperCase()];

		if (m === m.toLowerCase())
			ret = ret.toLowerCase();

		return ret;
	});
};




