function Utils ( )
{
	this.MaxLenMsgTicketRegalo = 255;

	Utils.prototype.Debug = function ( msg )
	{
		 // alert ( msg );
	}

	Utils.prototype.ProcesarComandos = function ( contenido )
	{

		/* Se retorna nivel, que viene en el contenido. Es CUTRE, pero de momento .... */

		// var nivel = "";
		// var error = "";


		var comandos = contenido.split ( Cfg.RETORNO_CARRO );
		for ( var i=0; i < comandos.length; i++ )
		{
			try {
				eval ( comandos[i] );
			}catch ( e )
			{
				this.Debug ( "Exception ProcesarComandos: [" + comandos[i] + "]" );
			}
		}


		/*
		if ( error != "" )
		{
			Accion.SetMensajeError ( error , document.all.Panel );
			Utils.NoWaiting();
			nivel = "";
		}
		*/

		return Item;
	}


	Utils.prototype.DefineObjetoContenidos = function ( )
	{


		var tipoE 	   	= new Array ( );
		var provincias 	= new Array ( );
		var recintos 	= new Array ( );
		var eventos 	= new Array ( );
		var tmpRecintos = new Array ( );
		var tmpEventos 	= new Array ( );


		var idProv = "";
		var idPob  = "";
		var idRec  = "";
		var idEve  = "";



		var idTipoE     = Logica.Session.TipoE.Id;
		var idProvincia = Logica.Session.Provincia.Id;
		var idPoblacion = Logica.Session.Poblacion.Id;
		var idRecinto 	= Logica.Session.Recinto.Id;
		var idEvento    = Logica.Session.Evento.Id;


		var item = Logica.Contenido.Item;


		var posTipoE = 0;


		for ( var i=0; i < item.length; i++ )
		{
			if ( this.ComprobarFiltro ( idTipoE , item[i]['Id'] ) )
			{
				tipoE[posTipoE] = this.GetElementosArray ( item[i] );
				tipoE[posTipoE]['Nivel'] = "Actividad";

				var prov = item[i]['Provincia'];
				for ( var j=0; j < prov.length; j++ )
				{
					if ( this.ComprobarFiltro ( idProvincia , prov[j]['Id'] ) )
					{
						idProv = prov[j]['Id'];
						

						// if ( typeof ( provincias[idProv]['Poblaciones'] ) == "undefined" )
						if ( typeof ( provincias[idProv] ) == "undefined" )
						{
							provincias[idProv] = new Array ( );
							provincias[idProv]['Nombre'] = prov[j]['Nombre'];
							provincias[idProv]['Poblaciones'] = new Array ( );
						}

						var pob = prov[j]['Poblacion'];


						for ( var k=0; k < pob.length; k++ )
						{


							if ( this.ComprobarFiltro ( idPoblacion , pob[k]['Id'] ) )
							{
								idPob = pob[k]['Id'];
								provincias[idProv]['Poblaciones'][idPob] = pob[k]['Nombre'];


								var rec = pob[k]['Recinto'];
								for ( var l=0; l < rec.length; l++ )
								{
									if ( this.ComprobarFiltro ( idRecinto , rec[l]['Id'] ) )
									{
										idRec = rec[l]['Id'];	
										tmpRecintos[idRec] = this.GetElementosArray ( rec[l] );
										tmpRecintos[idRec]['IdPoblacion'] = idPob;
										tmpRecintos[idRec]['Poblacion'] = provincias[idProv]['Poblaciones'][idPob];
										tmpRecintos[idRec]['Provincia'] = provincias[idProv]['Nombre'];
										tmpRecintos[idRec]['Nivel'] = "Recinto";


										var eve = rec[l]['Evento'];
										for ( var m=0; m < eve.length; m++ )
										{
											if ( this.ComprobarFiltro ( idEvento , eve[m]['Id'] ) )
											{
												idEve = eve[m]['Id'];	
												if ( typeof( tmpEventos[idEve] ) == "undefined" )
												{
													tmpEventos[idEve] = this.GetElementosArray ( eve[m] );
													if ( tmpEventos[idEve]['VerFecha'] == "S" )
													{
														tmpEventos[idEve]['FechaOrdenacion'] = tmpEventos[idEve]['DesdeFecha'];
													}else
													{
														tmpEventos[idEve]['FechaOrdenacion'] = "0";
													}


													tmpEventos[idEve]['IdTipoE']     		 	   = tipoE[posTipoE]['Id'];
													tmpEventos[idEve]['TipoE']       		 	   = tipoE[posTipoE]['Nombre'];
													tmpEventos[idEve]['Nivel']       		 	   = "Evento";
													tmpEventos[idEve]['Recinto']     		 	   = new Array( );
													tmpEventos[idEve]['Recinto'][0]    		 	   = new Array( );
													tmpEventos[idEve]['Recinto'][0]['IdRecinto']   = idRec;
													tmpEventos[idEve]['Recinto'][0]['Nombre']      = tmpRecintos[idRec]['Nombre'];
													tmpEventos[idEve]['Recinto'][0]['IdPoblacion'] = idPob;
													tmpEventos[idEve]['Recinto'][0]['Provincia']   = provincias[idProv]['Nombre'];
													tmpEventos[idEve]['Recinto'][0]['Poblacion']   = provincias[idProv]['Poblaciones'][idPob];
													tmpEventos[idEve]['Recinto'][0]['Info']   	   = tmpRecintos[idRec]['Info'];
												}else
												{


													if ( eve[m]['DesdeFecha'] < tmpEventos[idEve]['DesdeFecha'] )
													{
														tmpEventos[idEve]['DesdeFecha'] = eve[m]['DesdeFecha'];
													}
													if ( eve[m]['HastaFecha'] > tmpEventos[idEve]['HastaFecha'] )
													{
														tmpEventos[idEve]['HastaFecha'] = eve[m]['HastaFecha'];
													}



													var pos = tmpEventos[idEve]['Recinto'].length;

													tmpEventos[idEve]['Recinto'][pos]    		 	 = new Array( );
													tmpEventos[idEve]['Recinto'][pos]['IdRecinto']   = idRec;
													tmpEventos[idEve]['Recinto'][pos]['Nombre']      = tmpRecintos[idRec]['Nombre'];
													tmpEventos[idEve]['Recinto'][pos]['IdPoblacion'] = idPob;
													tmpEventos[idEve]['Recinto'][pos]['Provincia']   = provincias[idProv]['Nombre'];
													tmpEventos[idEve]['Recinto'][pos]['Poblacion']   = provincias[idProv]['Poblaciones'][idPob];
													tmpEventos[idEve]['Recinto'][pos]['Info']        = tmpRecintos[idRec]['Info'];

												}


											}
										}

									}

								}

							}

						}

					}
				}
				posTipoE ++;
			}
		}


		var i = 0;
		for ( var campo in tmpRecintos )
		{
			recintos[i] = tmpRecintos[campo];
			i++;
		}

		recintos.sort ( Utils.OrdenarRanking );


		i = 0;
		for ( var campo in tmpEventos )
		{
			eventos[i] = tmpEventos[campo];
			i++;
		}

		if ( ORDEN_EVENTOS.toUpperCase() == "RANKING" )
		{
			eventos.sort ( Utils.OrdenarRanking );
		}else if ( ORDEN_EVENTOS.toUpperCase() == "RANKING_FECHA" )
		{
			eventos.sort ( Utils.OrdenarRankingFecha );
		}else
		{
			eventos.sort ( Utils.OrdenarFechaProximaProgramacion );
		}


		var obj = new Object ( );
		obj.TipoE 	   = tipoE;
		obj.Provincias = provincias;
		obj.Recintos   = recintos;
		obj.Eventos    = eventos;

		return obj;
	}


	Utils.prototype.GetElementosArray = function ( item )
	{
		var lista = new Array ( );
		for ( var campo in item )
		{
			if ( ( typeof ( item[campo] ) != "object" ) && ( campo != "" ) )
			{
				lista[campo] = item[campo];
			}
		}
		return lista;
	}


	Utils.prototype.Trim = function ( type , str )
	{
		var resultStr = "";
		var i = 0;
		var len = 0;
		str = new String ( str );

		if ( (str == "undefined" ) || ( str == null) || ( str == "" ) || ( str.length == 0 ) ) 
		{
			return "";
		}

		len = str.length;

		switch ( type )
		{
			case "Left" :
				while ((i <= len) && (str.charAt(i) == " "))
				{
					i++;
				}
				resultStr = str.substring(i, len);
				break;
			case "Right" :
				i = str.length - 1;
				while ((i >= 0) && (str.charAt(i) == " "))
				{
					i--;
				}
				resultStr = str.substring(0, i + 1);
				break;

			default :
				resultStr = "";
				break;
		}

		return resultStr;
	}
	Utils.prototype.ComprobarFiltro = function ( origen , destino )
	{
		var filtrar = false;
		if ( origen != "" ) 
		{
			if ( origen == destino )
			{
				filtrar = true;
			}
		}else
		{
			filtrar = true;
		}

		return filtrar
	}

	Utils.prototype.LiteralFecha = function ( fecha , tipo )
	{
		var literal = "";
		switch ( tipo.toUpperCase() )
		{
			case "FECHA" :
				literal = fecha.substring(6,8) + "/" + fecha.substring(4,6) + "/" + fecha.substring(2,4);
				break;
			case "HORA" :
				literal = fecha.substring(8,10) + ":" + fecha.substring(10,12);
				break;
			case "DIA-SEMANA" :
				literal = this.FechaDiaSemana ( fecha.substring(6,8) , fecha.substring(4,6) , fecha.substring(0,4) , "LARGO" );
				break;
			case "DIA-SEMANA-CORTO" :
				literal = this.FechaDiaSemana ( fecha.substring(6,8) , fecha.substring(4,6) , fecha.substring(0,4) , "CORTO" );
				break;
			default :
				break;
		}

		return literal;
	}

	Utils.prototype.FechaDiaSemana = function ( dd , mm , aa , tipo )
	{
		mm = ( parseInt ( mm , 10 ) - 1 );
		var fecha = new Date ( parseInt ( aa , 10) , mm, parseInt ( dd , 10 ) );

		var dia = ( fecha.getDay() * 1 );

		if ( dia == 0 )
		{
			dia = 6;
		}else
		{
			dia --;
		}




		var literal = "";

		switch ( Idiomas[POS_IDIOMA]['Fecha'] )
		{
			case "English" :
				break;
			default :
				// Standard
				literal = this.FechaFormatoStandard ( dia , dd ,  mm , aa , tipo );
					
				break;
		}

		return literal;
	}
	Utils.prototype.FechaFormatoStandard = function ( dia , dd , mm , aa , tipo )
	{
		if ( tipo == "LARGO" )
		{
			var literal = Literal['DiasSemana'][dia] + " " + dd;
			literal +=  " " + Literal['De'] + " " + Literal['Meses'][mm];
			literal +=  " " + Literal['De'] + " "+ aa;	
		}else
		{
			var literal = Literal['DiasSemana'][dia].substring (0,3) + " " + dd;
			literal +=  "," + Literal['Meses'][mm].substring(0,3);
			literal +=  " " + aa;	
		}
		return literal;
	}



	Utils.prototype.Capitalize = function ( str )
	{

		var tmpStr = str.toLowerCase();
		var stringLen = tmpStr.length;

		if ( stringLen > 0)
		{
			for ( var i=0; i < stringLen; i++)
			{
				if ( i == 0)
				{
					var tmpChar    = tmpStr.substring(0,1).toUpperCase();
					var postString = tmpStr.substring(1,stringLen);
					tmpStr 		   = tmpChar + postString;
				}else
				{
					var tmpChar = tmpStr.substring(i,i+1);
					if (tmpChar == " " && i < ( stringLen - 1 ) )
					{
						tmpChar 	   = tmpStr.substring(i+1,i+2).toUpperCase();
						var preString  = tmpStr.substring(0,i+1);
						var postString = tmpStr.substring(i+2,stringLen);
						tmpStr 		   = preString + tmpChar + postString;
					}
				}
			}
		}

		return tmpStr;
	}



	Utils.prototype.WindowOpen = function ( url, opc )
	{
		switch ( opc )
		{
			case "PopUp" :
					this.AbrirVentana ( url, 800, 600, "masInfo", "yes", "yes", "no", "no", "no" );
					break;
			case "MasInfo" :
					this.AbrirVentana ( url, 600, 400, "masInfo", "yes", "no", "no", "no", "no" );
					break;
			case "VentaExterna" :
					this.AbrirNavegador ( url );
					break;
			case "Butacas" :
					this.AbrirVentana ( url, 900, 650, "butacas", "auto", "no", "no", "no", "no" );
					break;
			case "Oficinas" :
					this.AbrirVentana ( url, 600, 400, "oficinas", "auto", "no", "no", "no", "no" );
					break;
			case "CVC" :
					this.AbrirVentana ( url, 300, 300, "masInfo", "yes", "yes", "no", "no", "no" );
					break;
			default :
				break;
		}
	}
	Utils.prototype.AbrirNavegador = function ( url )
	{

		var origen = /&#61/g
		url = url.replace ( origen , "=" );

		try {
			window.open ( url );
		}catch ( e )
		{
			alert ( "Debe permitir las ventanas emergentes de su navegador" );
		}
	}
	Utils.prototype.AbrirVentana = function ( url, ancho, alto, nombre, scroll, resize, menu, tool, status )
	{

        var pos_x = 0;
        var pos_y = 0;

		try {
			winAforo = window.open(url, nombre, "toolbar="+tool+",directories=no,menubar="+menu+",scrollbars="+scroll+",location=no,status="+status+",resizable="+resize+",width="+ancho+",height="+alto+",left="+pos_x+",top="+pos_y);
		}catch ( e )
		{
			alert ( "Debe permitir las ventanas emergentes de su navegador" );
		}
	}

	Utils.prototype.FormatearImporte = function ( importe )
	{

		importe = new String ( importe );
		importe = this.Filler ( "0" , 3 , importe , "-" );
		tmp0 = importe.substring ( 0 , importe.length - 2 );
		tmp1 = importe.substring ( importe.length - 2, importe.length );


		// ŅAPA. De momento solo ponemos un punto.	
		var entero = tmp0;	
		if ( tmp0.length > 3 )
		{
			entero = tmp0.substring ( 0 , ( tmp0.length - 3 ) )
			entero += "." + tmp0.substring ( ( tmp0.length - 3 ) , tmp0.length )
		}

		a = entero+ ","+tmp1;
		return a;
	}

	Utils.prototype.Filler = function ( caracter, len, valor, orden )
	{
		var cadena = new String ( valor );
		for ( var i=cadena.length; i < len;i ++ )
		{
			if ( orden == "+" )
			{
				cadena += caracter;
			}else
			{
				cadena = caracter + cadena;
			}
		}
		return cadena;
	}

	Utils.prototype.Waiting = function ( )
	{
		document.all.Transparente.style.visibility = "visible";
		document.all.Transparente.innerHTML = Contenidos.Waiting ();
	}
	Utils.prototype.NoWaiting = function ( )
	{
		document.all.Transparente.innerHTML = "";
		document.all.Transparente.style.visibility = "hidden";
	}
	Utils.prototype.SetBoton = function ( id, fn_callback , txt )
	{
		return '<button id="butt_'+id+'" class="boton" onClick="'+fn_callback+'" >'+txt+'</button>';

	}

	Utils.prototype.ControlDatosObligatoriosPago = function ( checkTarjeta, checkAgencia )
	{

		var datos = new Array ( );

		var acepto = document.all.acepto.checked;
		var nombre = new String ( document.all.nombre.value );	
		var tlf    = new String ( document.all.tlf.value );	
		var email  = new String ( document.all.email.value );	
		var loginUsuarioAgencia  = "";
		var passwdUsuarioAgencia  = "";

		if ( Logica.Session.Sesion.RegistroWeb )
		{
			var obligaNombre = true;
			var obligaTlf    = true;
			var obligaEmail  = true;
		}else
		{
			var obligaNombre = DEFINE_PAGO_NOMBRE_OBLIGATORIO;
			var obligaTlf    = DEFINE_PAGO_TLF_OBLIGATORIO;
			var obligaEmail  = DEFINE_PAGO_EMAIL_OBLIGATORIO;
		}


		var rc = true;

		if ( checkTarjeta )
		{
			var mm = new String ( document.all.mmCaduca.value );	
			var aa = new String ( document.all.aaCaduca.value );	
			var cvc = new String ( document.all.cvc.value );	

			var datosTarjeta = this.ControlNumTarjeta ( );
			rc  = datosTarjeta['rc'];
			var obj = datosTarjeta['obj'];
			var msg = datosTarjeta['msg'];

			if ( rc )
			{
				if ( mm.length < 2 )
				{
					msg = Literal['errorFechaCaducidad'];
					obj = document.all.mmCaduca;
					rc = false;
				}
			}
			if ( rc )
			{
				if ( aa.length < 2 )
				{
					msg = Literal['errorFechaCaducidad'];
					obj = document.all.aaCaduca;
					rc = false;
				}
			}
			if ( rc )
			{
				if ( cvc.length < 3 )
				{
					msg = Literal['errorCvc'];
					obj = document.all.cvc;
					rc = false;
				}
			}

		}

		if ( rc )
		{
			if ( ( obligaNombre ) && ( nombre.length == 0 ) )
			{
				msg = Literal['errorNombreObligatorio'];
				obj = document.all.nombre;
				rc = false;
			}
		}
		if ( rc )
		{
			if ( ( obligaTlf ) && ( tlf.length == 0 ) )
			{
				msg = Literal['errorTlfObligatorio'];
				obj = document.all.tlf;
				rc = false;
			}
		}

		if ( rc )
		{
			if ( ( obligaEmail ) && ( ( email.length == 0 ) || ( email.indexOf("@") == -1 ) || ( email.indexOf(".") == -1 ) ) )
			{
				msg = Literal['errorEmailObligatorio'];
				obj = document.all.email;
				rc = false;
			}
		}

		if ( rc )
		{
			if ( ! acepto )
			{
				msg = Literal['errorAcepto'];
				rc = false;
			}
		}


		if ( checkAgencia )
		{
			loginUsuarioAgencia  = document.all.loginUsuarioAgencia.value;
			passwdUsuarioAgencia = document.all.passwdUsuarioAgencia.value;
			if ( rc ) 
			{
				if ( loginUsuarioAgencia.length == 0 ) 
				{
					msg = Literal['errorUsuarioAgenciaObligatorio'];
					obj = document.all.loginUsuarioAgencia;
					rc = false;
				}
			}
			if ( rc ) 
			{
				if ( passwdUsuarioAgencia.length == 0 )
				{
					msg = Literal['errorPasswordAgenciaObligatorio'];
					obj = document.all.passwdUsuarioAgencia;
					rc = false;
				}
			}
		}



		if ( rc )
		{
			if ( checkTarjeta )
			{
				datos['Tarjeta'] = datosTarjeta['Tarjeta'];
				datos['Caduca']  = mm + aa;
				datos['Cvc']     = cvc;
			}

			datos['Nombre'] = nombre;
			datos['Tlf']  	= tlf;
			datos['Email']  = email;
		
			if ( checkAgencia )
			{
				datos['loginAgencia']  	= loginUsuarioAgencia;
				datos['passwdAgencia'] 	= passwdUsuarioAgencia;
			}

		}

		datos['Boletines'] = "";
		if ( DEFINE_ENVIO_BOLETINES )
		{
			if ( document.all.checkBoletines.checked )
			{
				datos['Boletines'] = "S";
				if ( ( email.length == 0 ) || ( email.indexOf("@") == -1 ) || ( email.indexOf(".") == -1 ) )
				{
					msg = Literal['errorEmailObligatorio'];
					obj = document.all.email;
					rc = false;
				}

			}
		}


		datos['rc'] = rc;
		datos['obj'] = obj;
		datos['msg'] = msg;

		return datos;
	}

	Utils.prototype.ControlDatosObligatoriosTicketRegalo = function ( )
	{

		var datos = new Array ( );

		var nombreComprador    = new String ( document.all.nombreComprador.value );	
		var emailComprador     = new String ( document.all.emailComprador.value );	
		var nombreDestinatario = new String ( document.all.nombreDestinatario.value );	
		var emailDestinatario  = new String ( document.all.emailDestinatario.value );	
		var msgTicketRegalo    = new String ( document.all.msgTicketRegalo.value );	

		var obj = null;
		var msg = "";

		var rc = true;

		if ( nombreComprador.length == 0 ) 
		{
			msg = Literal['errorNombreObligatorio'];
			obj = document.all.nombreComprador;
			rc = false;
		}

		if ( rc )
		{
			if ( ( emailComprador.length == 0 ) || ( emailComprador.indexOf("@") == -1 ) || ( emailComprador.indexOf(".") == -1 ) ) 
			{
				msg = Literal['errorEmailObligatorio'];
				obj = document.all.emailComprador;
				rc = false;
			}
		}

		if ( rc )
		{
			if ( nombreDestinatario.length == 0 ) 
			{
				msg = Literal['errorNombreObligatorio'];
				obj = document.all.nombreDestinatario;
				rc = false;
			}
		}

		if ( rc )
		{
			if ( ( emailDestinatario.length == 0 ) || ( emailDestinatario.indexOf("@") == -1 ) || ( emailDestinatario.indexOf(".") == -1 ) ) 
			{
				msg = Literal['errorEmailObligatorio'];
				obj = document.all.emailDestinatario;
				rc = false;
			}
		}

		if ( rc )
		{
      if (!this.ControlLongitudMsgTicketRegalo())
      {
				//msg = Literal['msgTicketRegaloCampoGrande']; //hasta que se cree en los diferentes idiomas
				msg = "Valor del campo demasiado grande";
				obj = document.all.msgTicketRegalo;
				rc = false;
      }
		}

		if ( rc )
		{

			datos['NombreComprador']    = nombreComprador.toUpperCase();
			datos['EmailComprador']     = emailComprador;
			datos['NombreDestinatario'] = nombreDestinatario.toUpperCase();
			datos['EmailDestinatario']  = emailDestinatario;
			datos['Msg']  				= msgTicketRegalo;

		}
		datos['rc'] = rc;
		datos['obj'] = obj;
		datos['msg'] = msg;

		return datos;
	}


	Utils.prototype.ControlNumTarjeta = function ( )
	{

		var datos = new Array ( );
		var rc = true;

		var parte1 = new String ( document.all.tarjeta0.value );	
		var parte2 = new String ( document.all.tarjeta1.value );	
		var parte3 = new String ( document.all.tarjeta2.value );	
		var parte4 = new String ( document.all.tarjeta3.value );	

		var obj = null;
		var msg = "";


		

		if ( parte1.length < 4 )
		{
			msg = Literal['errorTarjeta'];
			obj = document.all.tarjeta0;
			rc = false;
		}

		if ( rc )
		{
			if ( parte2.length < 4 )
			{
				msg = Literal['errorTarjeta'];
				obj = document.all.tarjeta1;
				rc = false;
			}
		}
		if ( rc )
		{

			if ( parte3.length < 4 )
			{
				msg = Literal['errorTarjeta'];
				obj = document.all.tarjeta2;
				rc = false;
			}
		}
		if ( rc )
		{

			if ( parte4.length < 4 )
			{
				msg = Literal['errorTarjeta'];
				obj = document.all.tarjeta3;
				rc = false;
			}
		}


		if ( rc )
		{
			datos['Tarjeta'] = parte1 + parte2 + parte3 + parte4;
		}else
		{
			datos['Tarjeta'] = "";
		}
		datos['rc'] = rc;
		datos['obj'] = obj;
		datos['msg'] = msg;

		return datos;
	}


	Utils.prototype.FormatCadenaButacas = function ( lista )
	{
		var butacas = "";
		for ( var i=0; i < lista.length; i++ )
		{
			butacas += lista[i]['IdButaca'] + ";";
			butacas += lista[i]['Fila'] + ";";
			butacas += lista[i]['Col'] + ";";
			butacas += lista[i]['IdConcesion'] + ";";
			butacas += "|";
		}
		return butacas;
	};

	Utils.prototype.InputIsNumber = function ( )
	{
		if ( isNaN ( parseInt( String.fromCharCode( event.keyCode ) ) ) )
		{
			return false;
		}else
		{
			return true;
		}

	}


	Utils.prototype.ControlSalto = function ( valor , len , nextObj )
	{
		if ( valor.length == len )
		{
			try {
				nextObj.select ( );
			}catch ( e )
			{
			}
		}
	}


	Utils.prototype.ControlTipoDatosPago = function ( mInput )
	{

		var parte = "";

		switch ( mInput.name )
		{
			case "tarjeta0" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.tarjeta0.value , 4 , document.all.tarjeta1 );
				}else
				{
					event.returnValue = false;
				}
				break;
			case "tarjeta1" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.tarjeta1.value , 4 , document.all.tarjeta2 );
				}else
				{
					event.returnValue = false;
				}

				break;
			case "tarjeta2" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.tarjeta2.value , 4 , document.all.tarjeta3 );
				}else
				{
					event.returnValue = false;
				}

				break;
			case "tarjeta3" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.tarjeta3.value , 4 , document.all.mmCaduca );
				}else
				{
					event.returnValue = false;
				}

				break;
			case "mmCaduca" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.mmCaduca.value , 2 , document.all.aaCaduca );
				}else
				{
					event.returnValue = false;
				}

				break;
			case "aaCaduca" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.aaCaduca.value , 2 , document.all.cvc );
				}else
				{
					event.returnValue = false;
				}

				break;
			case "cvc" :
				if ( this.InputIsNumber ( ) )
				{
					event.returnValue = true;
					this.ControlSalto ( document.all.cvc.value , 3 , document.all.email );
				}else
				{
					event.returnValue = false;
				}

				break;
			default :
				break;
		}
		
	}


	Utils.prototype.AbrirSeleccionOficinas = function ( )
	{
		if ( PERMITE_MODAL )
		{
			this.Waiting ( );
			var ret = window.showModalDialog('oficinas.php',parent,'dialogWidth:800px;dialogHeight:400px;center:yes;resizable:no;scroll:yes;status:no');
			CheckSeleccionOficina ( );
			this.NoWaiting ( );

		}else
		{
			try {
				Utils.WindowOpen ( "oficinas.php" , "Oficinas" );
			}catch ( e )
			{
				alert ( Literal['NecesarioPopUp'] );
			}

		}

	}
	Utils.prototype.OcultarNumeroTarjeta = function ( tarjeta )
	{
		var tarjeta = new String ( tarjeta );
		var len = tarjeta.length;
		tarjeta = "************" + tarjeta.substring ( ( len - 4 ) , len );
		return tarjeta;
	}

	Utils.prototype.OrdenarRanking = function ( arg0 , arg1 )
	{
		if ( parseInt ( arg0['Ranking'] , 10 ) > parseInt ( arg1['Ranking'] , 10 ) )
		{
			return 1;
		}else if ( parseInt ( arg0['Ranking'] , 10 ) == parseInt ( arg1['Ranking'] , 10 ) )
		{
			if ( arg0['Nombre'] > arg1['Nombre'] )
			{
				return 1;
			}else
			{
				return -1;
			}

		}else
		{
			return -1;
		}
	}

	Utils.prototype.OrdenarRankingFecha = function ( arg0 , arg1 )
	{
		if ( parseInt ( arg0['Ranking'] , 10 ) > parseInt ( arg1['Ranking'] , 10 ) )
		{
			return 1;
		}else if ( parseInt ( arg0['Ranking'] , 10 ) == parseInt ( arg1['Ranking'] , 10 ) )
		{
			return Utils.OrdenarFechaProximaProgramacion(arg0 , arg1);

		}else
		{
			return -1;
		}
	}

	Utils.prototype.OrdenarFechaProximaProgramacion = function ( arg0 , arg1 )
	{
		if ( parseInt ( arg0['FechaOrdenacion'] , 10 ) > parseInt ( arg1['FechaOrdenacion'] , 10 ) )
		{
			return 1;
		}else
		{
			return -1;
		}
	}

	
	Utils.prototype.PropiedadesNavegador = function ( )
	{
		var oNavegador = new Object ( );
		oNavegador.Modal    = false;
		oNavegador.OutFocus = false;

		var navegador = this.GetNavigator ( );


		switch ( navegador )
		{
			case "OPERA" :
				oNavegador.Modal    = false;
				oNavegador.OutFocus = false;
				break;
			case "SAFARI" :
				oNavegador.Modal    = false;
				oNavegador.OutFocus = true;
				break;
			case "CHROME" :
				oNavegador.Modal    = false;
				oNavegador.OutFocus = true;
				break;
			default :
				oNavegador.Modal    = true;
				oNavegador.OutFocus = true;
				break;
		}

		return oNavegador;

	}

	Utils.prototype.GetNavigator = function ( )
	{

		var navegador = window.navigator.appName.toUpperCase();
		if ( navegador == "NETSCAPE" )
		{
			var userAgent = window.navigator.userAgent.toUpperCase();
			if ( userAgent.indexOf ( "CHROME" ) >= 0 )
			{
				navegador = "CHROME";
			}else if ( userAgent.indexOf ( "SAFARI" ) >= 0 )
			{
				navegador = "SAFARI";
			}else
			{
				navegador = "FIREFOX";
			}

		}
		return navegador;
	}

	Utils.prototype.XSS_Check = function ( cadena )
	{
		cadena = cadena.replace ( "<" , "&lt;" );
		cadena = cadena.replace ( ">" , "&gt;" );
		return cadena;
	}

	Utils.prototype.AlternarOpcionMisCompras = function ( )
	{
		if ( document.all.tipoMisCompras[0].checked )
		{
			document.all.tarjeta0.disabled = false;
			document.all.tarjeta1.disabled = false;
			document.all.tarjeta2.disabled = false;
			document.all.tarjeta3.disabled = false;

			document.all.refRecogida.disabled = true;
			if(DEFINE_TICKET_REGALO){
  			document.all.ticketRegalo.disabled = true;
      }

			document.all.tarjeta0.select();
			
		}else if ( document.all.tipoMisCompras[1].checked )
		{
			document.all.tarjeta0.disabled = true;
			document.all.tarjeta1.disabled = true;
			document.all.tarjeta2.disabled = true;
			document.all.tarjeta3.disabled = true;

			document.all.refRecogida.disabled = false;
			if(DEFINE_TICKET_REGALO){
  			document.all.ticketRegalo.disabled = true;
      }
			document.all.refRecogida.select();

		}else 
		{
			document.all.tarjeta0.disabled = true;
			document.all.tarjeta1.disabled = true;
			document.all.tarjeta2.disabled = true;
			document.all.tarjeta3.disabled = true;

			document.all.refRecogida.disabled = true;
			document.all.ticketRegalo.disabled = false;
			document.all.ticketRegalo.select();
		}

	}
	Utils.prototype.ControlLongitudMsgTicketRegalo = function ( )
	{
	  var retorno = false;
		var msg = document.all.msgTicketRegalo.value;
		
    if ( msg.length < this.MaxLenMsgTicketRegalo )
		{
			retorno = true;
		}
		event.returnValue = retorno;
		return retorno;
	}
}

