/**
*
* Clase RegistroSapns
*
**/
function Registro()
{
	this.Debug=false;
	
	this.Simple=0;
	this.Info=1;
	this.Warning=2;
	this.Error=3;

	this.Firebug=function()
	{
		if( window.console && window.console.firebug )
		{
			return true;
		}
		else
		{
			return false;
		}
	};


	/* Log
	El parámetro nivel puede recibir los siguientes parámetros:

		logSapns.Simple 	- 0 - console.error => mensaje con el icono de error
		logSapns.Info 		- 1 - console.warn => mensaje con el icono de exclamación
		logSapns.Warning 	- 2 - console.info => mensaje con el icono de información
		logSapns.Error 		- 3 - console.debug => mensaje sin icono
	*/
	this.Log=function(texto, nivel)
	{
		if( this.Firebug() && this.Debug )
		{
			if(!nivel)
			{
				nivel=0;
			}
			
			texto=this.BloqueInicio()+texto;
			
			switch(nivel)
			{
				case 0:
				{
					console.debug(texto);
					break;
				}
				case 1:
				{
					console.info(texto);
					break;
				}
				case 2:
				{
					console.warn(texto);
					break;
				}
				case 3:
				{
					console.error(texto);
					break;
				}
			}
		}
	};
	
	/**
	*
	**/
	this.MostrarObjeto=function(objeto)
	{
		if( this.Firebug() && this.Debug )
		{
			console.dir(objeto);
		}		
	};


	/**
	*
	**/
	this.IniciaTemporizador=function(id)
	{
		if(this.Firebug() && this.Debug)
		{
			id=this.BloqueInicio()+id;
			console.time(id);
		}
	};
	
	/**
	*
	**/
	this.FinalizaTemporizador=function(id)
	{
		if(this.Firebug() && this.Debug)
		{
			id=this.BloqueInicio()+id;
			console.timeEnd(id);
		}
	};
	
	
	/**
	*
	**/
	this.MostrarXML=function(nodoXML)
	{
		if(this.Firebug() && this.Debug )
		{
			console.dirxml(nodoXML);
		}
	};
	
	/**
	*
	**/
	this.BloqueInicio=function()
	{
		return "[logProteoWeb] ";
	};
	
	/**
	*
	**/
	this.IniciarGrupoMensajes=function(Titulo)
	{
		if(this.Firebug() && this.Debug )
		{
			Titulo=this.BloqueInicio()+Titulo;
			console.group(Titulo);
		}
	};
	
	/**
	*
	**/
	this.CerrarGrupoMensajes=function()
	{
		if(this.Firebug() && this.Debug )
		{
			console.groupEnd();
		}
	};
	
	/**
	*
	**/
	this.Trace=function()
	{
		if(this.Firebug() && this.Debug)
		{
			console.trace();
		} 
	}; 

	this.CargaInfoDebug=function()
	{
		$.ajax({async:false,
				type: "GET",
				cache:"false",
				url: "./scripts/checkdebug.py", 
				success: logSapns.RecibidaInfoDebug	
			   });
	};

	
	this.RecibidaInfoDebug=function(var_json)
	{
		var respuesta = eval("("+var_json+")");
								
		if( typeof(respuesta)=='object' )
		{
			var debug=(respuesta.Debug.Activo=='True');
			logSapns.Debug=debug;									
		}
	};
	
}



function TAlai( urlbase )
{
	this.superClase=TObjeto;
    this.superClase();
    delete this.superClase;
    
    this.ulbase=urlbase;
    
    this.debug=false;
    
    this.ConectorAjax=null;
    
    this.NumResultadosTotales=0; 
    this.ArrayNumResultados=new Array();   

	this.Registro=new Registro();
    this.Registro.Debug=true;
    
    
    this.setEstiloSubclases=function(IdPadre, NombreSubClase, Propiedad, Valor)
    {
		if($(IdPadre))
		{
			var Elementos=$(IdPadre).getElements(NombreSubClase);
	
			for(COLi=0;COLi<Elementos.length;COLi++)
			{
				Elementos[COLi].setStyle(Propiedad,Valor);
			}
		}
		else
		{
			$$(NombreSubClase).setStyle(Propiedad, Valor);
		}
		
    };
    

this.SiguientePHP=function(ResultadosPorPagina, NumResultados)
{
		formulario=document.getElementById("FormularioConfiguracion");
		
		if(formulario)
		{
			NuevaPosicion=parseInt(formulario.Posicion.value)+ResultadosPorPagina;
			
			if(NuevaPosicion>this.NumResultados)
				NuevaPosicion=this.NumResultados-1;

			formulario.Posicion.value=NuevaPosicion;
			
			formulario.submit();
		}
		
}; // SiguientePHP
	
this.AnteriorPHP=function(ResultadosPorPagina, NumResultados)
{
		formulario=document.getElementById("FormularioConfiguracion");
		
		if(formulario)
		{
			NuevaPosicion=parseInt(formulario.Posicion.value)-ResultadosPorPagina;
			
			if(NuevaPosicion<0) NuevaPosicion=0;
			
			formulario.Posicion.value=NuevaPosicion;
			formulario.submit();
		}

}; // AnteriorPHP


    
    /**
     * 
     */
	this.ObtenerDireccionSW=function( Servicio )
	{
		return './plug-ins/CargadorDeServicios/CargadorDeServicios.php?op='+Servicio;
	};

	this.ColocaFlash=function()
	{
		if( $('CajaFlash015') )
		{
			var alto=$('ubicacion3').getSize().y;

			var menu		=document.getElementById('menu002');
			var CajaFlash	=document.getElementById('CajaFlash015');
			
			if(menu && CajaFlash)
			{
				var top=alto-(menu.offsetHeight+CajaFlash.offsetHeight)-45;
				
				CajaFlash.style.paddingTop=parseInt(top)+'px';
		
				CajaFlash.style.visibility='visible';				
			}
		}
	
	}; // ColocaFlash
	

	this.MuestraUbicaciones=function()
	{
		$('contenedor_alai').setStyle('visibility','visible');	
	}; // MuestraUbicaciones
	
	
	this.ActualizaHeights=function()
	{
		alai.Registro.Log('ActualizaHeights');
		alai.Registro.IniciaTemporizador('actualiza_heights');

		alai.Registro.Log('Inicio ubicacion2 => '+$('ubicacion2').getSize().y);
		alai.Registro.Log('Inicio ubicacion3 => '+$('ubicacion3').getSize().y);

		if( $('Tabs') )
		{
			alai.Registro.Log('Altura de los tabs => '+$('Tabs').getSize().y);

			var AlturaContenido	=parseInt($('MIyui-content').getSize().y);
			var AlturaTab		=parseInt($('Tabs').getSize().y);
			
			// Ampliamos si el contenido es más alto que la pestaña
			if( $('MIyui-content') && AlturaTab < AlturaContenido)
			{
				AlturaContenido+=10;
				//$('Tabs').setStyle('height', AlturaContenido+'px');				
			}
			else
			{
				AlturaTab-=20;
				//$('MIyui-content').setStyle('height', AlturaTab+'px');				
			}
			
			// Actualizamos ubicacion2 y ubicacion3
			//$('ubicacion3').setStyle('height', $('ubicacion3').getSize().y+5+'px');
			$('ubicacion2').setStyle('height', $('ubicacion3').getSize().y+'px');		
		}
		else
		{
			var Alto=parseInt( $('ubicacion3').getSize().y );

			if(  Alto < 551 )
			{
				$('ubicacion3').setStyle('height', '551px');	
			}	

			$('ubicacion2').setStyle('height',$('ubicacion3').getSize().y-45);
		}
		
		alai.Registro.Log('ubicacion2 => '+$('ubicacion2').getSize().y);
		alai.Registro.Log('ubicacion3 => '+$('ubicacion3').getSize().y);
		
		alai.ColocaFlash();

		alai.Registro.Log('Mostrando ubicaciones');
		alai.MuestraUbicaciones();

		alai.Registro.FinalizaTemporizador('actualiza_heights');
						
	}; // ActualizaHeights

	/**
	 * 
	 */
	this.getP=function(parameter)
	{
		// Obtiene la cadena completa de URL
		var url = location.href;
		/* Obtiene la posicion donde se encuentra el signo ?,
		ahi es donde empiezan los parametros */
		var index = url.indexOf("?");
		/* Obtiene la posicion donde termina el nombre del parametro
		e inicia el signo = */
		
		if( url.indexOf(parameter,index)==-1 )
		{
			return -1;
		}
	
		index = url.indexOf(parameter,index) + parameter.length;
		
		/* Verifica que efectivamente el valor en la posicion actual
		es el signo = */
		if (url.charAt(index) == "=")
		{
			// Obtiene el valor del parametro
			var result = url.indexOf("&",index);
			if (result == -1){result=url.length;};
			// Despliega el valor del parametro
			return url.substring(index + 1,result);
			
		}
		else
		{
			return '';
		}
	}; // getP 

	/**
	 * 
	 */
	this.CalculaDebug=function()
	{
		var value=this.getP('JSDBG');
		
		if(value==-1)
		{
			this.debug=false;
		}
		else
		{
			this.debug=true;
		}
		
	};
	
	this.CalculaDebug();
	
	/**
	 * 
	 */
	this.MyDebug=function()
	{
		return this.debug;
	}; // Final de MyDebug


	/**
	 * 
	 */
	 this.Debug=function(texto)
	 {

	 	if( this.MyDebug() && $('ubicacion5'))
	 	{
			
			// Hemos de dibujar el textarea donde vamos a escribir la info.
	 		if( !this.EscritoDebug )
	 		{
	 			$('ubicacion5').innerHTML+='<DIV ID=\"MyDebugJS\"><TEXTAREA STYLE=\'clear:both;width:100%;\' id=\'txt_MyDebugJS\' COLS=\'80\' ROWS=\'20\'></TEXTAREA></DIV>';
	 			this.EscritoDebug=true;		
				$('txt_MyDebugJS').value='MyDebugJS::'+location.href;
	 			$('txt_MyDebugJS').value+='\r\n'+texto;
	 		}
	 		else
	 		{
	 			$('txt_MyDebugJS').value+='\r\n'+texto;
	 		}
	 	}
	 }; // Final de Debug

	 
	 /**
	  * 
	  */
	this.DebugJS=function()
	{
		if( $('MyDebugJS') && this.debug)
		{
			// El debug ya estaba activado, lo desactivamos
			$('MyDebugJS').setStyle('display','none');
			this.debug=false;
		}
		else if($('MyDebugJS') && !this.debug)
		{
			// El debug ya estaba activado, lo desactivamos
			$('MyDebugJS').setStyle('display','inline');
			this.debug=true;
		
		}
		else if( $('MyDebugJS') )
		{
			$('MyDebugJS').setStyle('display','inline');
			this.debug=true;
		}
		else
		{
			this.debug=true;
			this.Debug('DebugJS()');								
		}
	
	}; // final de DebugJS
	
	/**
	 * 
	 */
	this.ShowDebug=function()
	{
		// En primer lugar llamamos al servicio web para obtener el valor
		this.ConectorAjax=new TConectorAjax('');

		var URL=this.ObtenerDireccionSW('midebug');
							
		this.ConectorAjax.sendRequest(URL,alai.RecibeDebug);
		
	};

	/**
	 * 
	 */
	this.RecibeDebug=function()
	{
		
		if( alai.ConectorAjax )
		{
			// En primer lugar llamamos al servicio web para obtener el valor
			var ready=alai.ConectorAjax.req.readyState;
			
			if( ready==alai.ConectorAjax.READY_STATE_COMPLETE )
			{
				alai.Debug( alai.ConectorAjax.req.responseText );
			} // COMPLETE
		}
		
	};

	
	/**
	 * 
	 */
	this.ClearDebug=function()
	{
		// En primer lugar llamamos al servicio web para obtener el valor
		this.ConectorAjax=new TConectorAjax('');

		var URL=this.ObtenerDireccionSW('midebug')+'&cleardebug=true';
							
		this.ConectorAjax.sendRequest(URL,alai.RecibeDebug);

		$('txt_MyDebugJS').value='';

	};
	
} // Final de la clase TAlai
