function Accion ( )
{

	this.Separador = String.fromCharCode(2);


	Accion.prototype.SetMensajeError = function ( msg, objDiv )
	{
		objDiv.innerHTML = Contenidos.DefineMensajeError ( msg );
	}


	Accion.prototype.SetActividades = function ( tipoE, objDiv , desde , hasta )
	{
		objDiv.innerHTML = Contenidos.SetActividades ( tipoE , desde , hasta );
	}

	Accion.prototype.SetIdiomas = function ( idiomas, objDiv )
	{
		if ( idiomas.length > 1 )
		{
			var cadena = '<table cellpadding="0" cellspacing="0">\
					<tr>\
						<td width="1" valign="top"><img src="../static/web/img/sepIdiomas.jpg"></td>';
			for ( var i=0; i < idiomas.length; i++ )
			{
				if ( idiomas[i]['Imagen'] )
				{
					var texto = '<img src="../static/web/img/banderas/' + idiomas[i]['Id'] + '.jpg" alt="' + idiomas[i]['Txt'] + '">';
				}else
				{
					if ( i > 0 )
					{
						cadena += '<td width="1" class="idiomas" valign="bottom">&nbsp;&nbsp;|&nbsp;&nbsp;</td>';
					}
					var texto = idiomas[i]['Txt'];
				}
				cadena += '<td class="idiomas" valign="bottom" style="cursor:pointer" onclick="Accion.CambiarIdioma(\'' + idiomas[i]['Id'] + '\')">' + texto + '</td>';
			}
			cadena += '</tr></table>';
			objDiv.innerHTML = cadena;
		}
	}

	Accion.prototype.SetOpcionesMenu = function ( opciones, objDiv )
	{
		var cadena = "";
		for ( var i=0; i < opciones.length; i++ )
		{
			if ( opciones[i]['Visible'] )
			{
				if ( cadena != "" )
				{
					cadena += "&nbsp;&nbsp;|&nbsp;&nbsp;";
				}
				cadena += '<a class="menu_general" href="#" onClick="ExecMenu(\'' + i + '\')">' + opciones[i]['Txt'] + '</a>';
			}
		}
		objDiv.innerHTML = cadena;
	}


	Accion.prototype.SetActividadesEnBuscador = function ( tipoE, oSelect )
	{
		var dato = "";
		oSelect.options[0] = new Option ( "" , "" );
		for ( var i=0; i < tipoE.length; i++ )
		{
			if ( tipoE[i]['Nombre'].length > MAX_LENGTH_SELECT_BUSCADOR )
			{
				dato = tipoE[i]['Nombre'].substring(0,MAX_LENGTH_SELECT_BUSCADOR ) + "...";
			}else
			{
				dato = tipoE[i]['Nombre'];
			}
			oSelect.options[i+1] = new Option ( Utils.Capitalize ( dato ) , i );
		}
	}

	Accion.prototype.SetPoblacionesEnBuscador = function ( prov, oSelect )
	{

		var dato = "";

		var space = String.fromCharCode ( 160 );
		space += space + space;

	
		oSelect.options[0] = new Option ( "" , "" );

		var k = 1;	
		for ( var i in prov )
		{
			if ( prov[i]['Nombre'].length > MAX_LENGTH_SELECT_BUSCADOR )
			{
				dato = prov[i]['Nombre'].substring(0,MAX_LENGTH_SELECT_BUSCADOR ) + "...";
			}else
			{
				dato = prov[i]['Nombre'];
			}

			oSelect.options[k] = new Option ( dato.toUpperCase() , i );
			k++;

			var pob = prov[i]['Poblaciones'];
			for ( var j in pob )
			{
				if ( pob[j].length > MAX_LENGTH_SELECT_BUSCADOR )
				{
					dato = pob[j].substring(0,MAX_LENGTH_SELECT_BUSCADOR ) + "...";
				}else
				{
					dato = pob[j];
				}
				// oSelect.options[k] = new Option ( "   " +  dato , "@" + i + "_" + j );
				oSelect.options[k] = new Option ( space + dato , "@" + i + "_" + j );
				k++;
			}

		}
	}

	Accion.prototype.SetRecintosEnBuscador = function ( recintos, oSelect )
	{
		var dato = "";

		oSelect.options[0] = new Option ( "" , "" );

		for ( var i=0; i < recintos.length; i++ )
		{
			
			if ( recintos[i]['Nombre'].length > MAX_LENGTH_SELECT_BUSCADOR )
			{
				dato = recintos[i]['Nombre'].substring(0,MAX_LENGTH_SELECT_BUSCADOR ) + "...";
			}else
			{
				dato = recintos[i]['Nombre'];
			}
			oSelect.options[i+1] = new Option ( dato , i );
		}
	}
	

	Accion.prototype.SetCalendario = function ( fechaInicioCalendario , fechaFinCalendario, listaMeses, listaDiasSemana, divCalendario, fnCallBack, multiple )
	{

		objCalendario = new Calendario ( fechaInicioCalendario , fechaFinCalendario ,  divCalendario , DefineFecha , false ); 
		objCalendario.SetObjetoCalendario ( "objCalendario" );
		objCalendario.SetSelectCalendario ( "calAnos", "calMesesAno" );

		objCalendario.SetMeses ( listaMeses );
		objCalendario.SetDiasSemana ( listaDiasSemana )

		objCalendario.Imagen = new Array ( );
		objCalendario.Imagen['mesSiguiente']    = "../static/web/img/calendarioMesSiguiente.gif";
		objCalendario.Imagen['mesAnterior']     = "../static/web/img/calendarioMesAnterior.gif";
		objCalendario.Imagen['seleccionOK']     = "";
		objCalendario.Imagen['borrarSeleccion'] = "";
		objCalendario.Imagen['cambioFecha'] 	 = "../static/web/img/calendarioCambioFecha.gif";

	    objCalendario.DefineFechaInicio ( fechaInicioCalendario );
	    objCalendario.DefineFechaFin ( fechaFinCalendario );

	    objCalendario.SetDiasActivos ( new Array() );
	    objCalendario.CreateCalendario ( );
	}

	Accion.prototype.SetCalendarioEvento = function ( fechaInicioCalendario , fechaFinCalendario, listaMeses, listaDiasSemana, divCalendario, fnCallBack, multiple )
	{

		objCalendarioE = new Calendario ( fechaInicioCalendario , fechaFinCalendario ,  divCalendario , DefineFecha , false ); 
		objCalendarioE.SetObjetoCalendario ( "objCalendarioE" );
		objCalendarioE.SetSelectCalendario ( "calAnosE", "calMesesAnoE" );
		objCalendarioE.INICIAL_ID_DIA = "cE_";

		objCalendarioE.fnCallBackCambioFecha = CambioFechaCalendarioEvento;


		objCalendarioE.calEstilo['txtMes'] 		  = "mesesCalendarioEvento";
		objCalendarioE.calEstilo['txtDiasSemana'] = "diasSemanaCalendarioEvento";
		objCalendarioE.calEstilo['txtDia'] 		  = "diasCalendarioEventoOn";
		objCalendarioE.calEstilo['DiaHueco'] 	  = "diasCalendarioEventoOff";
		objCalendarioE.calEstilo['txtDiaPasado']  = "diasCalendarioEventoOff";
		objCalendarioE.calEstilo['txtDiaOn'] 	  = "calendarioDiaMarcadoEvento";
		objCalendarioE.calEstilo['diaMarcado'] 	  = "calendarioDiaMarcadoEvento";
	

		objCalendarioE.SetMeses ( listaMeses );
		objCalendarioE.SetDiasSemana ( listaDiasSemana )

		objCalendarioE.Imagen = new Array ( );
		objCalendarioE.Imagen['mesSiguiente']    = "../static/web/img/calendarioMesSiguiente.gif";
		objCalendarioE.Imagen['mesAnterior']     = "../static/web/img/calendarioMesAnterior.gif";
		objCalendarioE.Imagen['seleccionOK']     = "";
		objCalendarioE.Imagen['borrarSeleccion'] = "";
		objCalendarioE.Imagen['cambioFecha'] 	 = "../static/web/img/calendarioCambioFecha.gif";

	    objCalendarioE.DefineFechaInicio ( fechaInicioCalendario );
	    objCalendarioE.DefineFechaFin ( fechaFinCalendario );

	}






	Accion.prototype.MostrarListaRecintos = function ( item )
	{

		Contenidos.DefineCallBackFicha ( EnlaceFicha );
		Contenidos.DefineDatosPaginacion ( FILAS_PROGRAMACION , COLS_PROGRAMACION );

		Contenidos.DefineTipoContenido ( "Recinto" );
		Contenidos.DefineContenedorContenido ( document.all.Panel );
		Contenidos.DefineContenido ( item );
		Contenidos.DefineEncabezado( "" );
		Contenidos.Mostrar ( );


	}

	Accion.prototype.MostrarListaEventos = function ( item )
	{

		Contenidos.DefineCallBackFicha ( EnlaceFicha );
		Contenidos.DefineDatosPaginacion ( FILAS_PROGRAMACION , COLS_PROGRAMACION );

		Contenidos.DefineTipoContenido ( "Evento" );
		Contenidos.DefineContenedorContenido ( document.all.Panel );

		Contenidos.DefineContenido ( item );
		Contenidos.DefineEncabezado( "" );
		Contenidos.Mostrar ( );

	}


	Accion.prototype.MostrarDestacados = function ( )
	{
		if ( ! Logica.ExistenDestacados ( ) )
		{
			Logica.Procesar ( "Destacados" , "" );
		}else
		{
			document.all.TituloPanel.innerHTML = "";
			Contenidos.DefineCallBackFicha ( EnlaceFicha );

			try {
				if ( Logica.Contenido.Destacados['Recintos'].length > 0 )
				{
					document.all.bloqueDestacados.className = "bgDestacados";
					Contenidos.MostrarRecintosDestacados ( Logica.Contenido.Destacados['Recintos'], EnlaceFicha, document.all.bloqueDestacados );
				}
			}catch ( e )
			{
			}

				if ( Logica.Contenido.Destacados['Eventos'].length > 0 )
				{
					Contenidos.DefineDatosPaginacion ( Logica.Contenido.Destacados.Config['Filas'] , Logica.Contenido.Destacados.Config['Columnas'] );
					Contenidos.DefineTipoContenido ( "Destacado" );
					Contenidos.DefineContenedorContenido ( document.all.Panel );
					Contenidos.DefineContenido ( Logica.Contenido.Destacados['Eventos'] );
					Contenidos.DefineEncabezado( "" );
					Contenidos.Mostrar ( );
				}else
				{
					ExecMenu ( -1 , "menuEventos" );	
				}


		}
	}
	Accion.prototype.SeleccionarRecinto = function ( recinto )
	{
		Logica.Session.Poblacion.Id 	= recinto['IdPoblacion'];
		Logica.Session.Poblacion.Nombre = recinto['Poblacion'];	
		Logica.Session.Recinto.Id 		= recinto['Id'];	
		Logica.Session.Recinto.Nombre 	= recinto['Nombre'];	
		Logica.Session.Recinto.Info 	= recinto['Info'];	
		Logica.Session.Recinto.Logo 	= recinto['Img'];	
		Logica.Session.Recinto.Cp 		= recinto['Cp'];	

	}
	Accion.prototype.SeleccionarEvento = function ( evento )
	{

		Logica.Session.TipoE.Id 		= evento['IdTipoE'];
		Logica.Session.TipoE.Nombre 	= evento['TipoE'];

		if ( evento['Recinto'].length == 1 )
		{
			Logica.Session.Poblacion.Id 	= evento['Recinto'][0]['IdPoblacion'];
			Logica.Session.Poblacion.Nombre = evento['Recinto'][0]['Poblacion'];	
			Logica.Session.Recinto.Id 		= evento['Recinto'][0]['IdRecinto'];	
			Logica.Session.Recinto.Nombre 	= evento['Recinto'][0]['Nombre'];	
			Logica.Session.Recinto.Info 	= evento['Recinto'][0]['Info'];	
		}

		Logica.Session.Evento.Id 		    = evento['Id'];	
		Logica.Session.Evento.Titulo 	    = evento['Nombre'];	
		Logica.Session.Evento.Info 		    = evento['Info'];	
		Logica.Session.Evento.Logo 	        = evento['Img'];	
		Logica.Session.Evento.DesdeFecha    = evento['DesdeFecha'];	
		Logica.Session.Evento.HastaFecha    = evento['HastaFecha'];	
		Logica.Session.Evento.UseCalendario = evento['UseCalendario'];	
		Logica.Session.Evento.AliasCalif = evento['AliasCalif'];	
		Logica.Session.Evento.Calificacion = evento['Calificacion'];	

	}
	Accion.prototype.SeleccionarSesion = function ( sesion )
	{

		Logica.Session.Sesion.Id 		  = sesion['IdSesion'];
		Logica.Session.Sesion.HoraSes 	  = sesion['HoraSes'];
		Logica.Session.Sesion.Fecha 	  = Utils.LiteralFecha ( sesion['HoraSes'] , "DIA-SEMANA" );
		Logica.Session.Sesion.Hora 		  = Utils.LiteralFecha ( sesion['HoraSes'] , "HORA" );
		Logica.Session.Sesion.MaxTickets  = sesion['MaxTickets'];
		Logica.Session.Sesion.MinTickets  = sesion['MinTicket'];
		Logica.Session.Sesion.Promotor    = sesion['Promotor'];
		Logica.Session.Sesion.CifPromotor = sesion['CifPromotor'];

		if ( sesion['VerDisponible'].toUpperCase() == "S" )
		{
			Logica.Session.Sesion.VerDisponible = true;
		}else
		{
			Logica.Session.Sesion.VerDisponible = false;
		}
		if ( sesion['RegistroWeb'].toUpperCase() == "S" )
		{
			Logica.Session.Sesion.RegistroWeb = true;
		}else
		{
			Logica.Session.Sesion.RegistroWeb = false;
		}

		if ( sesion['VerFecha'].toUpperCase() == "S" )
		{
			Logica.Session.Sesion.VerFecha = true;
		}else
		{
			Logica.Session.Sesion.VerFecha = false;
		}

		if ( sesion['VerHora'].toUpperCase() == "S" )
		{
			Logica.Session.Sesion.VerHora = true;
		}else
		{
			Logica.Session.Sesion.VerHora = false;
		}

		if ( sesion['HomeTicket'].toUpperCase() == "S" )
		{
			DEFINE_HOME_TICKET = true;
		}else
		{
			DEFINE_HOME_TICKET = false;
		}

	}


	Accion.prototype.CambiarFechaSesion = function ( )
	{

		Logica.Session.Sesion.Id = "";
		Logica.Session.Sesion.Fecha = "";
		Logica.Session.Sesion.Hora = "";

		document.all.TituloPanel.innerHTML = SetTituloDinamico ( );
		Logica.Procesar ( "Sesiones" , "" );

	}

	Accion.prototype.CambiarIdioma = function ( idIdioma )
	{
		Utils.Waiting ( );
		document.dataForm.Idioma.value = idIdioma;
		document.dataForm.action = location;
		document.dataForm.submit();
		
		

	}

	Accion.prototype.GoToCalendarioSesiones = function ( datosEvento )
	{
		document.all.PanelPaginacion.innerHTML = "";
		Logica.DefineInformacion ( "Calendario" );

		if ( datosEvento['UseCalendario'].toUpperCase() == "S" )
		{
			document.all.Panel.innerHTML = Contenidos.SetPantallaCalendarioEvento ( );
			Accion.SetCalendarioEvento ( datosEvento['DesdeFecha'].substring(0,8) , datosEvento['HastaFecha'].substring(0,8), Literal['Meses'], Literal['DiasSemanaCorto'], document.all.bloqueCalendarioEvento, DefineFecha, false );
			Logica.Procesar ( "CalendarioEvento" , datosEvento['DesdeFecha'].substring(0,6) );
		}else
		{
			Logica.Procesar ( "Sesiones" , "" );
		}
	}


	Accion.prototype.SeleccionarOperacion = function ( refOperacion , idSesion, homeTicket )
	{


		var datos = new Array ( );
		datos['RefOperacion'] = refOperacion;
		datos['idSesion']     = idSesion;
		datos['HomeTicket']   = homeTicket;
		Logica.Procesar ( "DetalleOperacion" , datos );
	}

	Accion.prototype.DefineDatosDetalleOperacion = function ( item )
	{

		Logica.Session.Recinto.Nombre  	  = item['Sesion']['Recinto'];
		Logica.Session.Evento.Titulo   	  = item['Sesion']['Evento'];	


		Logica.Session.Sesion['Fecha']	  = Utils.LiteralFecha ( item['Sesion']['HoraSes'] , "DIA-SEMANA" );
		Logica.Session.Sesion['Hora']	  = Utils.LiteralFecha ( item['Sesion']['HoraSes'] , "HORA" );

		Logica.Session.Bloque.MultiZona	  		 = item['Bloque']['MultiZona']; 
		Logica.Session.Bloque.MultiBloque 		 = item['Bloque']['MultiBloque'];
		Logica.Session.Bloque.Mapa 	  	  		 = item['Bloque']['Mapa'];
		Logica.Session.Bloque.Zona	  			 = item['Bloque']['Zona'];
		Logica.Session.Bloque.Bloque  			 = item['Bloque']['Bloque'];
		Logica.Session.Bloque.Acceso  			 = item['Bloque']['Acceso'];
		Logica.Session.Bloque.Puerta  			 = item['Bloque']['Puerta'];
		Logica.Session.Bloque.Info 	  			 = item['Bloque']['Info'];


		( item['Bloque']['LiteralFila'] == "" )  ? Logica.Session.Bloque.LiteralFila = Literal['FILA'] 	 : Logica.Session.Bloque.LiteralFila = Literal[literalFila];	
		( item['Bloque']['LiteralButaca'] == "" )? Logica.Session.Bloque.LiteralButaca = Literal['BUTACA'] : Logica.Session.Bloque.LiteralButaca = Literal[literalButaca];	

		Logica.Session.Operacion.EntradasTarjeta = item['Operacion']['TotalEntradas'];

		Logica.Session.Operacion.Importe	  	 = item['Operacion']['Importe'];
		Logica.Session.Pago.Tarjeta  	   		 = item['Operacion']['Tarjeta'];
		Logica.Session.Operacion.RefGlobal 		 = item['Operacion']['RefGlobal'];
		Logica.Session.Operacion.IdOperacion 	 = item['Operacion']['RefOperacion'];

		Logica.Session.Pago.Nombre 	 = item['Operacion']['Nombre'];
		Logica.Session.Pago.Email 	 = item['Operacion']['Email'];


		var entradas = new Array ( );
		for ( var i=0; i < item['Entradas'].length; i++ )
		{
			entradas[i] = new Array ( );
			entradas[i]['Concesion'] 	= item['Entradas'][i]['Concesion'];
			entradas[i]['Fila'] 		= item['Entradas'][i]['Fila'];
			entradas[i]['Col'] 			= item['Entradas'][i]['Col'];
			entradas[i]['ImporteBase'] 	= item['Entradas'][i]['ImporteBase'];
			entradas[i]['Dto'] 			= item['Entradas'][i]['Dto'];
			entradas[i]['Comision'] 	= item['Entradas'][i]['Comision'];
			entradas[i]['ImporteTotal']	= item['Entradas'][i]['ImporteTotal'];
			entradas[i]['IdButaca']		= item['Entradas'][i]['IdButaca'];
		}
		Logica.Session.Operacion.EntradasTarjeta = entradas;



	}

	Accion.prototype.PrepararHomeTicket = function ( )
	{
		document.all.SubPanel.innerHTML = Contenidos.DetalleOperacion ( false , false , true , false );
	}
	Accion.prototype.PrepararTicketRegalo = function ( )
	{
		document.all.SubPanel.innerHTML = Contenidos.DetalleOperacion ( false , false , false , true );
	}
	Accion.prototype.VolverDetalleOperacion = function ( )
	{
		document.all.SubPanel.innerHTML = Contenidos.DetalleOperacion ( DEFINE_HOME_TICKET , DEFINE_TICKET_REGALO , false , false );
	}

	Accion.prototype.HomeTicket = function ( )
	{

		var listaEntradas = "";
		var listaIdentificadores = "";
		var totalEntradasImprimir = 0;
		var rc = true;


		for ( var i=0; i < Logica.Session.Operacion.EntradasTarjeta.length; i++ )
		{
			var idHT = eval ( "document.all.idHT_" + i );
			var checkHT = eval ( "document.all.checkHT_" + i );
			if ( checkHT.checked )
			{
				totalEntradasImprimir ++;

				listaEntradas += Logica.Session.Operacion.EntradasTarjeta[i]['IdButaca'] + ";";
				listaIdentificadores += idHT.value + ";";
				if ( idHT.value == "" )
				{
					rc = false;
					break;
				}
			}
		}


		if ( totalEntradasImprimir > 0 )
		{
			if ( rc )
			{

				//var msg = "Se van a imprimir " + totalEntradasImprimir + " entradas";
				var msg = Literal['SeImprimen'] + totalEntradasImprimir + Literal['EspacioEntradas']; 
				if ( confirm ( msg ) )
				{

					var cadena = Logica.Session.Operacion.IdOperacion;
					cadena += this.Separador;
					cadena += listaEntradas;
					cadena += this.Separador;
					cadena += listaIdentificadores;

					document.dataForm.entrada.value = cadena;
					document.dataForm.action = Cfg.URL + "/GetPdf.php";
					document.dataForm.target = "_blank";

					document.dataForm.submit();
				}
			}else
			{	
				alert ( Literal['ErrorDatosHT'] );
			}
		}else
		{
			alert ( Literal['ErrorNumEntradasImprimir'] );
		}
	}

	Accion.prototype.TicketRegalo = function ( )
	{


		var info = Utils.ControlDatosObligatoriosTicketRegalo ( );

		if ( info.rc )
		{
			var listaEntradas = "";
			var listaIdentificadores = "";
			var totalEntradasImprimir = 0;

			for ( var i=0; i < Logica.Session.Operacion.EntradasTarjeta.length; i++ )
			{
				var checkHT = eval ( "document.all.checkHT_" + i );
				if ( checkHT.checked )
				{
					totalEntradasImprimir ++;

					listaEntradas += Logica.Session.Operacion.EntradasTarjeta[i]['IdButaca'] + ";";
				}
			}


			if ( totalEntradasImprimir > 0 )
			{
				//var msg = "Se van a regalar " + totalEntradasImprimir + " entradas";
				var msg = Literal['SeRegalan'] + totalEntradasImprimir + Literal['EspacioEntradas']; 
				if ( confirm ( msg ) )
				{

					var cadena = Logica.Session.Operacion.IdOperacion;
          var url = "";

					var datos = new Array ( );
					
					url = location.href;
					url = url.substr(0,url.indexOf("#"));
					if(url.indexOf("?")>0){
  					url = url.substr(0,url.indexOf("?"));
          }
					
					datos['RefOperacion'] 		= Logica.Session.Operacion.IdOperacion;
					datos['entrada'] 			= listaEntradas;
					datos['Nombre']  			= info['NombreComprador'];
					datos['Email']   			= info['EmailComprador'];
					datos['nombreDestinatario'] = info['NombreDestinatario'];
					datos['emailDestinatario']  = info['EmailDestinatario'];
					datos['msgTicketRegalo']  	= info['Msg'];
					datos['urlPrincipal']  				= url;

					Logica.Procesar ( "SetTicketRegalo" , datos );

				}
			}else
			{
				alert ( Literal['ErrorNumEntradasTicketRegalo'] );
			}
		}else
		{
			alert ( info['msg'] );
			if ( info['obj'] )
			{
				info['obj'].select();
			}
		}
	}




	Accion.prototype.PropagarIdHomeTicket = function ( )
	{
		var valor = document.all.idHT_0.value;
		for ( var i=1; i < Logica.Session.Operacion.EntradasTarjeta.length; i++ )
		{
			var idHT = eval ( "document.all.idHT_" + i );
			idHT.value = valor;
		}

	}


	Accion.prototype.SelectTipoPagoTarjeta = function ( tipoFormaPago )
	{

		var datos = new Array ( );
		datos['Nombre'] = Logica.Session.Pago.Nombre;
		datos['Tlf'] 	= Logica.Session.Pago.Tlf;
		datos['Email']  = Logica.Session.Pago.Email;
		
		if ( DEFINE_ENVIO_OFICINA )
		{
			datos['Oficina']  = Logica.Session.Operacion.Oficina.Codigo;
		}

		datos['TipoFormaPago'] = tipoFormaPago;
		datos['Nivel'] = "Pago";

		Logica.Procesar( "Pago" , datos );

	}
	Accion.prototype.LoadImagenAntiRobot = function ( )
	{
		Logica.Procesar( "Imagen" , "" );
		
	}



}

