function gid( id ) {
	return ( document.getElementById(id) == null ? false : document.getElementById(id) );
}

function $( id ) {
	return ( document.getElementById(id) == null ? false : document.getElementById(id) );
}

function crearAutoComp(desti, esquema, config, queryAppend)
{
	var host = location.hostname;
	if (host == 'www.vitoria-gasteiz.org'){
		var servidor = "http://vitoria.compartir.org/"+viatges+"/xml/"+desti;
	}
	else{
		var servidor = "/"+viatges+"/xml/"+desti;
	}
    var connexio = new YAHOO.widget.DS_XHR(servidor, esquema);
	var loader = false;
	var seleccionat = false;
    connexio.responseType = connexio.TYPE_XML;
	connexio.maxCacheEntries = 0;

    var autoCompletar = new YAHOO.widget.AutoComplete(config[0],config[1], connexio);
    autoCompletar.minQueryLength = 2;
    autoCompletar.autoHighlight = true;
    autoCompletar.allowBrowserAutocomplete = true;
    autoCompletar.queryDelay = 0.2;
    autoCompletar.maxResultsDisplayed = 10;
    autoCompletar.prehighlightClassName = config[2];
    autoCompletar.highlightClassName = config[3];
    autoCompletar.animVert = true;
    autoCompletar.animVert = true;
    autoCompletar.animSpeed = 0.25;
    //autoCompletar.setHeader(config[4]);

	var queryAppendHandler = function(type, args, me)
	{
		if(queryAppend[0]!='Direccio')
		{
			gid(config[5]).value = '';
		}

		if(queryAppend[0]!='Ciutat')
		{
	    	connexio.scriptQueryAppend = gid(queryAppend[2]).value;
	    }
	    else
	    {
	    	connexio.scriptQueryAppend = gid(queryAppend[2]).value;
	    }	
	};
	
	//Afegeix el gif de carregant
	var afegirLoader = function (oSelf , nKeycode) 
	{
	  if(document.getElementsByClassName) {
	    document.getElementsByClassName(config[0])[0].style.display = 'block';
	  }
		//Si no existeix el gif...
		if(!loader)
		{
			gid('loader-'+config[0]).innerHTML = '<img src="http://compartir.org/imatges/ajax-loader.gif" alt="'+textBuscar+'" /> <span id="buscant">'+textBuscar+'</span>';
			loader = true;
			//Afegim l'event per quan es rebin les dades
			autoCompletar.dataReturnEvent.subscribe(treureLoader);
		}	
		//Treiem l'event de quan s'envien les dades
		autoCompletar.dataRequestEvent.unsubscribe(afegirLoader);
		//No hi ha res seleccionat perquè ho estem buscant
		seleccionat = false;
	};
	
	//Treu el gif de carregant
	var treureLoader = function (oSelf , sQuery , aResults) 
		{
			if(loader) 
			{
				//Si existeix el gif del loader el treiem
				gid('loader-'+config[0]).innerHTML = "";
				loader = false;
				//Tornem a afegir l'event per quan es faci la peticio
				autoCompletar.dataRequestEvent.subscribe(afegirLoader);
			}	
			//Treiem l'event de quan es reben les dades
			autoCompletar.dataReturnEvent.unsubscribe(treureLoader);
			
			//S'ha rebut el resultat de l'ajax
			if(oSelf != 'textboxBlur') 
			{
				//Missatge de no resultats
				if(sQuery[2].length==0)
				{
					gid('loader-'+config[0]).innerHTML = '<img src="http://compartir.org/imatges/exclamation.gif" alt="'+eval(config[4])+'" /> '+eval(config[4]);
				}
				//Text de seleccionar un element
				else 
				{
					gid('loader-'+config[0]).innerHTML = '<img src="http://compartir.org/imatges/eye.gif" alt="'+textSelecciona+'" /> <span class="selecciona">'+textSelecciona+'</span>';
				}
			}
			//El camp de text per el focus
			else
			{ 
				//Borrar el text de selecciona si encara hi és
				if ( gid('loader-'+config[0]).innerHTML.indexOf(textSelecciona) > -1)
				{
					gid('loader-'+config[0]).innerHTML = '';
				}
			}
		};
		
	//Afegeix el text de correcte quan es selecciona
	var itemSelectHandler = function(autoComplete, data)
		{
			if(queryAppend[0]!='Direccio')
			{			
				gid(config[5]).value = data[2][2];
				if(queryAppend[0]=='Ciutat')
				{
					if(config[0]=='ViatgeCiutatArribada')
					{
						canviCiutatArribada(data[2][2]);
					}
					else if(config[0]=='ViatgeCiutatSortida')
					{						
						canviCiutatSortida(data[2][2]);			
					}
				}
			}
			seleccionat = true;
			gid('loader-'+config[0]).innerHTML = '<img src="http://compartir.org/imatges/accept.gif" alt="'+textCorrecte+'" /> <span class="correcte"> '+textCorrecte+'</span>';
		};
		
	//Iniciar tots els manegadors
	connexio.queryEvent.subscribe(queryAppendHandler);
	autoCompletar.dataRequestEvent.subscribe(afegirLoader);
	autoCompletar.dataReturnEvent.subscribe(treureLoader);
	autoCompletar.textboxBlurEvent.subscribe(treureLoader);		
	autoCompletar.itemSelectEvent.subscribe(itemSelectHandler);
	
	//Formateja els resultats
	autoCompletar.formatResult = function(aResultItem, sQuery)
	{
	    if(aResultItem.length>0)
	    {
	        var attribute1 = aResultItem[0];
	        var attribute2 = aResultItem[1];
	        var sKey = attribute1;
	        var sKeyQuery = sKey.substr(0, sQuery.length);
	        var sKeyRemainder = sKey.substr(sQuery.length);
	        var aMarkup = ["<div>",
	        "<span style='font-weight:bold'>",
	        sKeyQuery,
	        "</span>",
	        sKeyRemainder,
	        " (",
	        attribute2,
	        ")",
	        "</div>"];
	        return (aMarkup.join(""));
	    }
	    else
	    {									
	        return "";
	    }
	}
}
function init()
{
	if( gid('modificar') && gid('modificar').value == 'true' )	modificar = true;
	var destiCiutat = "Ciutat";
	var esquemaCiutat = ["CiutatVO", "Ciutat", "NomZona","id"];	
	
	if ( gid('ViatgeCiutatSortida') && gid('CiutatSortidaContainer') ) 
	{
		var configCiutatSortida = ["ViatgeCiutatSortida","CiutatSortidaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoCiutat","ViatgeIdCiutatSortida"];
		var queryAppendCiutatSortida = ["Ciutat","PaisSortida","ViatgePaisSortida"];
		crearAutoComp(destiCiutat, esquemaCiutat, configCiutatSortida, queryAppendCiutatSortida);
	}
	
	if ( gid('ViatgeCiutatArribada') && gid('CiutatArribadaContainer') ) 
	{
		var configCiutatArribada = ["ViatgeCiutatArribada","CiutatArribadaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoCiutat","ViatgeidCiutatArribada"];
		var queryAppendCiutatArribada = ["Ciutat","PaisArribada","ViatgePaisArribada"];
		crearAutoComp(destiCiutat, esquemaCiutat, configCiutatArribada, queryAppendCiutatArribada);
	}
	
	initArribada();
	initSortida();
}

function initArribada()
{	
	if( !modificar && gid('ViatgeidCiutatArribada').value == '' )	
	{
		//gid('ViatgeLlocArribada').disabled = true;
		gid('ViatgeDireccioArribada').disabled = true;
	}
	
	/*if ( gid('ViatgeLlocArribada') ) 
	{		
		var configLlocArribada = ["ViatgeLlocArribada","LlocArribadaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoLloc","ViatgeidllocArribada"];
		var queryAppendLlocArribada = ["Lloc","idCiutatArribada", 'ViatgeidCiutatArribada'];
		crearAutoComp(destiLloc, esquemaLloc, configLlocArribada, queryAppendLlocArribada);
	}*/
	
	//if( gid('ViatgeDireccioArribada') && gid('anarALloc') && (gid('anarALloc').value=='false' || gid('anarALloc').value=='') )
	if( gid('ViatgeDireccioArribada') )
	{
		var configDireccioArribada = ["ViatgeDireccioArribada","DireccioArribadaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoDireccio"];
		var queryAppendDireccioArribada = ["Direccio","idCiutatArribada", 'ViatgeidCiutatArribada'];
		crearAutoComp(destiDireccio, esquemaDireccio, configDireccioArribada, queryAppendDireccioArribada);
	}
}

function initSortida() {

	if( !modificar && gid('ViatgeIdCiutatSortida').value == '')
	{
		gid('ViatgeLlocSortida').disabled = false;
		gid('ViatgeDireccioSortida').disabled = false;
	}
	
	/*if (gid('ViatgeLlocSortida') ) 
	{
		var configLlocSortida = ["ViatgeLlocSortida","LlocSortidaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoLloc","ViatgeidllocSortida"];
		var queryAppendLlocSortida = ["Lloc","IdCiutatSortida", 'ViatgeIdCiutatSortida'];	
		crearAutoComp(destiLloc, esquemaLloc, configLlocSortida, queryAppendLlocSortida);
	}*/
	
	if (gid('ViatgeDireccioSortida') ) 
	{
		var configDireccioSortida = ["ViatgeDireccioSortida","DireccioSortidaContainer","autocompletarPreHighlight","autocompletarHighlight","textNoDireccio"];
		var queryAppendDireccioSortida = ["Direccio","IdCiutatSortida", 'ViatgeIdCiutatSortida'];	
		crearAutoComp(destiDireccio, esquemaDireccio, configDireccioSortida, queryAppendDireccioSortida);
	}
}
function canviCiutatSortida( idCiutat ) {
	
	if	( $('ViatgeLlocSortida') )
	{
		var sUrl = '/'+viatges+'/llocsciutat/' + idCiutat + '/sortida';
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, { success: carregarLlocsSortida }); 
		$('loader-ViatgeLlocSortida').innerHTML = '<img src="http://compartir.org/imatges/ajax-loader.gif" alt="'+textBuscar+'" /> <span id="buscant">'+textBuscar+'</span>';
	}
	if( !modificar )
	{
		//$('ViatgeLlocSortida').value = '';
		$('ViatgeDireccioSortida').value = '';
		//$('ViatgeLlocSortida').disabled = false;
		$('ViatgeDireccioSortida').disabled = false;
	}
	
	
	$('loader-ViatgeDireccioSortida').innerHTML = '';
	
}
function canviCiutatArribada( idCiutat) {
	
	if	( $('ViatgeLlocArribada') )
	{
		var sUrl = '/'+viatges+'/llocsciutat/' + idCiutat + '/arribada';
		var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, { success: carregarLlocsArribada }); 
	}
	if( !modificar )
	{
		//$('ViatgeLlocArribada').value = '';
		$('ViatgeDireccioArribada').value = '';
		//$('ViatgeLlocArribada').disabled = false;
		$('ViatgeDireccioArribada').disabled = false;
	}

	//$('loader-ViatgeLlocArribada').innerHTML = '';
	$('loader-ViatgeDireccioArribada').innerHTML = '';
	
}
var carregarLlocsSortida = function(o){
	if(o.responseText !== undefined){
		$('LlocSortidaContainer').innerHTML = o.responseText;
	}
	$('loader-ViatgeLlocSortida').innerHTML = '';
};
var carregarLlocsArribada = function(o){
	if(o.responseText !== undefined){
		$('LlocArribadaContainer').innerHTML = o.responseText;
	}
};
function addListenerSelectOrigen()
{
	YAHOO.util.Event.addListener('ViatgeCiutatSortidaSelect', 'change', canviSelectOrigen);
}
function canviSelectOrigen() {

	if( this.value > 0 ) {
		gid('ViatgeCiutatSortida').value = this.options[this.selectedIndex].text;
		gid('ViatgeIdCiutatSortida').value = this.value;
		canviCiutatSortida(this.value);
	}
}
function activarJS() {
	gid('javascript_activat').value = true;
}
var destiLloc = "Lloc";
var esquemaLloc = ["LlocVO", "NomEntity", "Ciutat","id"];
var destiDireccio = "Direccio";
var esquemaDireccio = ["DireccioVO", "Adreca","Ciutat"];
var modificar = false;

YAHOO.util.Event.onAvailable('ViatgeCiutatSortidaSelect', addListenerSelectOrigen, false);
YAHOO.util.Event.onAvailable('compartir_peu', init, false);
YAHOO.util.Event.onAvailable('javascript_activat', activarJS, false);
	
