var SMD_SERVICES_URL = '';
var SET_HTML_INTERVAL_SECONDS = 155;
var SLICE_TWEETS_INTERVAL_SECONDS = 10;

var params = getParams();
var sliceTweets;
var setHTMLRepeatTimeout;
var sliceTweetsRepeatTimeout;
var sliceTweetsListValue;


window.onload = function() {		
		pulsaciones = 1; /* Minimo tamaño de la cadena de texto en el cajon antes de lanzar el autocompletado */
		
		var sugerencias = [
			'Accidente laboral y enfermedad profesional',
			'Accidentes',
			'Aceptación y repudiación',
			'Acoso laboral',
			'Adopción y acogimiento',
			'Agencia Española de Protección de Datos',
			'Alquiler',
			'Ampliación de capital',
			'Autónomos',
			'Bienes gananciales y privativos',
			'Canon digital',
			'Capitulaciones matrimoniales',
			'Carnet por puntos',
			'Compraventa de inmuebles',
			'Comunidad de vecinos',
			'Conducción temeraria',
			'Constitución de empresas',
			'Contraer matrimonio',
			'Contratación de trabajadores',
			'Contratos de trabajo',
			'Custodia',
			'Declaración de herederos y últimas voluntades',
			'Denuncias y reclamaciones',
			'Derecho sucesorio',
			'Derechos de autor y tipos de licencia',
			'Deshaucios',
			'Divorcio y anulación',
			'El despido',
			'Embargos y subastas',
			'Empadronamiento',
			'Expediente de regulación de empleo',
			'Expulsión',
			'Finiquito e indemnización',
			'Franquicias',
			'Garantías y Protección',
			'Impuesto de sociedades',
			'Impuesto de sucesiones',
			'Impuesto sobre Actividades Económicas',
			'Impuesto sobre Bienes Inmuebles',
			'Indemnizaciones',
			'IRPF',
			'IVA',
			'La hipoteca',
			'Ley de Extranjería',
			'Ley de Protección de Datos',
			'Ley de Servicios de la Sociedad de la Información',
			'Ley de Tráfico',
			'Multas',
			'Negligencias',
			'Orfandad',
			'Pareja de hecho',
			'Patria potestad',
			'Pensión alimenticia',
			'Pensiones y jubilación',
			'Permiso de residencia y NIE',
			'Permiso de trabajo y regularización',
			'Permisos, bajas y vacaciones',
			'Prestación por desempleo',
			'Protección de la Propiedad Intelectual',
			'Quiebra y Concurso de acreedores',
			'Régimen de usufructo',
			'Reparto de la herencia',
			'Separación',
			'Separación de bienes',
			'SGAE',
			'Solicitud de nacionalidad',
			'Testamento',
			'Tutela y curatela',
			'Viudedad',
			'Webs de enlaces P2P y descargas directas'
		];
		
		if( SMD_SERVICES_URL != '' ) {
			if(document.getElementById("buscador")) {	
			
				if (!(document.getElementById("autocompleteDiv"))){
				    	creaDivSugerencias();	
	    		}
				
				new Autocompleter.LocalSMD("buscador", "autocompleteDiv",
				   sugerencias, { 
				   choices: 10,
				   ignoreCase: true,
				   partialSearch: true,
				   fullSearch: false,
				   partialChars: pulsaciones,
				   minChars: pulsaciones,
				   frequency: 0.1,
				   updateElement: irAlElemento1
				});
			}
				
			var querystring = params[ 'querystring' ];
			if( querystring ) {
			
				var destacadosBusquedaGeneral = document.getElementById( 'destacadosBusquedaGeneral' );
				if( destacadosBusquedaGeneral ) {	
					setHTMLDestacados( destacadosBusquedaGeneral, querystring, 'BusquedaGeneral', 'renderHTMLDestacado' );
				}
				
				var destacadosAbogadosOrganico = document.getElementById( 'destacadosAbogadosOrganico' );
				if( destacadosAbogadosOrganico ) {	
					setHTMLDestacados( destacadosAbogadosOrganico , querystring, 'AbogadosOrganico', 'renderHTMLDestacado' );
				}
				
				var destacadosSentenciasOrganico = document.getElementById( 'destacadosSentenciasOrganico' );
				if( destacadosSentenciasOrganico ) {	
					setHTMLDestacados( destacadosSentenciasOrganico , querystring, 'SentenciasOrganico', 'renderHTMLDestacado' );
				}
				
				var destacadosLeyesOrganico = document.getElementById( 'destacadosLeyesOrganico' );
				if( destacadosLeyesOrganico ) {	
					setHTMLDestacados( destacadosLeyesOrganico , querystring, 'LeyesOrganico', 'renderHTMLDestacado' );
				}
				
				var destacadosAyudaOrganico = document.getElementById( 'destacadosAyudaOrganico' );
				if( destacadosAyudaOrganico ) {	
					setHTMLDestacados( destacadosAyudaOrganico , querystring, 'AyudaOrganico', 'renderHTMLDestacado' );
				}
				
				var destacadosLeyesNoOrganico = document.getElementById( 'destacadosLeyesNoOrganico' );
				if( destacadosLeyesNoOrganico ) {	
					setHTMLDestacados( destacadosLeyesNoOrganico , querystring, 'LeyesNoOrganico', 'renderHTMLDestacadoLeyes' );
				}
			}
		} else {
			if (!(document.getElementById("autocompleteDiv"))){
				creaDivSugerencias();	
	    	}
	    	
			if(document.getElementById("buscador")) {	
				new Autocompleter.Local("buscador", "autocompleteDiv",
				   sugerencias, { 
				   choices: 10,
				   ignoreCase: true,
				   partialSearch: true,
				   fullSearch: false,
				   partialChars: pulsaciones,
				   minChars: pulsaciones,
				   frequency: 0.1,
				   updateElement: irAlElemento1
				});
			}
		}
		
		var twitterEntries = document.getElementById( 'twitterEntries' );
		if( twitterEntries ) {

			setHTMLRepeatTimeout = new ObjetoRepeatTimeout( "newSliceTweets();setHTML( document.getElementById( 'twitterEntries' ), '/TwitterEntries.do', initSliceTweets )", SET_HTML_INTERVAL_SECONDS * 1000, "setHTMLRepeatTimeout" );
			setHTMLRepeatTimeout.startRepeatTimeout();
		}
	}
	
	function creaDivSugerencias(){
		
		var divSugerencias = document.createElement("div");
		divSugerencias.id = "autocompleteDiv";
		divSugerencias.className ="autocomplete";
		document.body.appendChild(divSugerencias);
	}
	
	function realizarBusqueda(texto){	
		
		document.getElementById("buscador").value=texto; /* actualizo la caja de texto con el valor de la variable texto */
		//document.getElementById("origen").value="autocompletado";
		setAction(document.getElementById('searchForm'),document.getElementById('searchForm').target.value,null);
		document.getElementById("searchForm").submit();
	}
	
	function irAlElemento1(li) {
	    if (li!=undefined){ /* si es un elemento de listado */
	    	
			var enlaces = li.getElementsByTagName("a"); /* recojo los enlaces que cuelgan del elemento de listado */
			var enlace = enlaces[0]; /* solo me interesa el primero, de hecho, solo debe haber uno */
			if(enlace!=undefined){ /* Si este esta definido, uso su enlace para redireccionar */
				window.location.href=enlace.href;
			}else{ /* y si no esta definido, hago submit del formulario con el texto introducido hasta el momento */
				setAction(document.getElementById('searchForm'),document.getElementById('searchForm').target.value,null);
				document.getElementById("searchForm").submit();
			}
		}
	}
	
	function irAlElemento2(li) {
	    
	    if (li!=undefined){ /* si es un elemento de listado */
	    	
			var enlaces = li.getElementsByTagName("a"); /* recojo los enlaces que cuelgan del elemento de listado */
			var enlace = enlaces[0]; /* solo me interesa el primero, de hecho, solo debe haber uno */
			if(enlace!=undefined){ /* Si este esta definido, uso su enlace para redireccionar */
				window.location.href=enlace.href;
			}else{ /* y si no esta definido, hago submit del formulario con el texto introducido hasta el momento */
				setAction(document.getElementById('searchForm'),null,null);
				document.getElementById("form_bus_avanz").submit();
			}
		}
	}
	
		
	// recupera parametros pasados por querystring (autocomplete.js?param1=value1)
	// necesario para recibir la palabra buscada y poder configurar con ella la solicitud de destacados
	
	function getParams() {
		var params = new Array();
		var x,y,a,b,c,sc=document.getElementsByTagName('script');
		for(x in sc) {
			a=sc[x].src;
			if (a&&a.indexOf('autocomplete.js')>-1) {
				a=(a.substr(a.indexOf('?')+1)).replace(/&amp;/g,'&');
				b=a.split(/&/);
				for (y in b) {
					if( containsChar( b[y].toString(), '=' ) ) {
						c=b[y].toString().split('=');
						params[c[0]]=c[1];
					}
				}
			}
		}
		
		return params;
	}
	
	function containsChar( st, ch ) {
		var i = 0;
		for( i = 0 ; i < st.length ; i++ ) {
			if( st.charAt(i) == ch ) return true;
		}
		
		return false;
	}
	
	function newSliceTweets() {
		sliceTweets = new ObjetoListaInteractiva();
		sliceTweets.setModoOn('post');
		sliceTweets.setModoOff('no');
	}
	
	function initSliceTweets() {
		sliceTweets.setElementosVisibles( 20 );
		if( !sliceTweetsRepeatTimeout ) {
			sliceTweets.initEnPosicion( 10 );
			copySliceTweetListValue();
			sliceTweetsRepeatTimeout = new ObjetoRepeatTimeout( 'sliceTweetsMostrarNuevo()', SLICE_TWEETS_INTERVAL_SECONDS * 1000, 'sliceTweetsRepeatTimeout' );
		} else {
			initSliceTweetList();
		}
	}
		
	function sliceTweetsMostrarNuevo() {
		if( sliceTweets.posicion > 0 ) {
			sliceTweets.posicion--;
			copySliceTweetListValue();
			sliceTweets.hacerVisibleWithSlide(sliceTweets.list[sliceTweets.posicion]);
		}
	}
			
	function ObjetoRepeatTimeout( action, interval, repeatTimeoutId ) {
		this.repeatTimeoutAction = action;
		this.repeatTimeoutInterval = interval;
		this.repeatTimeoutRunning = false;
		this.repeatTimeoutId = repeatTimeoutId;
		this.startRepeatTimeout = startRepeatTimeout;
		this.stopRepeatTimeout = stopRepeatTimeout;
	}
	
	function startRepeatTimeout() {
			var action = runMethod( this.repeatTimeoutId , 'repeatTimeoutAction' );
			eval( action );
			setTimeout( "repeatTimeoutRec( '" + this.repeatTimeoutId + "')", this.repeatTimeoutInterval );
			this.repeatTimeoutRunning = true;
	}
	
	function stopRepeatTimeout() {
			this.repeatTimeoutRunning = false;
	}
	
	function repeatTimeoutRec( repeatTimeoutId ) {
			var action = runMethod( repeatTimeoutId , 'repeatTimeoutAction' );
			var interval = runMethod( repeatTimeoutId , 'repeatTimeoutInterval' );
			var running = runMethod( repeatTimeoutId , 'repeatTimeoutRunning' );
			eval( action );
			if( running ) {
				setTimeout( "repeatTimeoutRec( '" + repeatTimeoutId + "')", interval );
			}
	}
	
	var sliceTweetId = '';
	var newSliceTweetId = '';
	
	function startSliceTweets() {
			if( sliceTweetsRepeatTimeout ) {		
				sliceTweetsRepeatTimeout.startRepeatTimeout();
			}
	}
	
	function stopSliceTweets() {
			if( sliceTweetsRepeatTimeout ) {
				sliceTweetsRepeatTimeout.stopRepeatTimeout();
			}
	}
	
	function runMethod( instanceName, method ) {
		return eval( instanceName + '.' + method )
	}
	
	function copySliceTweetListValue() {
		if( sliceTweets.list ) {
			sliceTweetsListValue = sliceTweets.list[sliceTweets.posicion];
		}
	}
	
	function initSliceTweetList() {
		if( sliceTweetsListValue ) {
			var i = 0;
			while( i < sliceTweets.list.length ) {
				if( sliceTweets.list[i] == sliceTweetsListValue ) {
					sliceTweets.posicion = i;
					break;
				}
				
				i++;
			}
			
			sliceTweets.initEnPosicion( sliceTweets.posicion );
		}
	}

