var debugOn=(window.location.href.indexOf("debug=1")>-1);
var moveEventHandler, zoomEventHandler;
var mapsVisible = true;

var httpR;

var map=null;
var dragZoom=null;
var geocoder;

var infowindow=null; //globo informatiu

//var _geocoder;
var exml;

var timeout=null;

var marker, markersArray=[];
var eventListeners=[], icon;
var listEventListeners=[];
var markerCluster=null;
copiaInformacion=new Array();

var arrayInfo=[];
var aSenseNull=[];
var winPrototype;

var mapCenter;
var mapZoom=6;
var numChecks=0; //indica nº de checks Estat del trànsit, per poder mostrar l'informació que s'ha guardat a l'array informacio
var numVueltasInfo=0; //numero de vegades que s'ha agafat un json amb la informació del trànsit.
var colorLlistat=true // per canviar de color les línies de Llistat d'incidències de circulació

var colorDivAnterior='#FBF5C9';

/*Per no tornar a carregar els checks que ja ho estàn d'abans.*/
var obresCheck = false;
var accidentsCheck = false;
var congestionsCheck = true;
var climaCheck = true;
var consCheck = false;
//BBDD var radarsCheck = false;
var puntsnegresCheck = false;
var camaresCheck = false;
var eurorapCheck = false;
var eurotapCheck = false;

var finalCarga = true; //informa que ha finalitzat la petició dels json checked

/*array per no tornar a carregar la informació estàtica, només la primera vegada que es fa la petició. Cada posició guarda json de l'element (camara, eurorap, eurotap, punt_negre)*/
arrayEstatica=new Array();
//BBDD arrayEstatica["radar"]=null;
arrayEstatica["punt_negre"]=null;
arrayEstatica["eurorap"]=null;
arrayEstatica["eurotap"]=null;

/*variables amb idioma*/
var lang="";
var textImposibleDireccio="";
var textLimitEspanya="";
var textSenseAdress="";
var porCiudad="";
var porZona="";
var tempsActual="";
var tempsDema="";
var tempsDemaPast="";
var obrirModul="";
var tancarModul="";
var llistatIncidenciesCirculacio="";
var senseInfo="";
var senseIncidencies="";
var localitzacions="";
var aquestaLocalitzacio="";
var text_Llegenda="";
var text_Obres="";
var text_Accidents="";
var text_Congestio="";
var text_Radars="";
var text_Punts_negres="";
var text_Cameres="";
var text_EURORAP="";
var text_EUROTAP="";
var text_Trafic_Retingut="";
var text_Trafic_Interrumpido="";
var text_Trafic_Dens="";
var text_Trafic_Condicionat="";
var text_Risc_Alt="";
var text_Risc_Mitja_Alt="";
var text_Risc_Mitja="";
var text_Risc_Mitja_Baix="";
var text_Risc_Baix="";

/*Prototype window*/
function finestraIncidencies (){
	winPrototype= new Window({id: "666", className: "cit", width:570, height:190, zIndex: 700, resizable: false,minimizable:false, closable:false, title: llistatIncidenciesCirculacio, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	if(document.getElementById("divLlistatIncidencies")!="null")winPrototype.setContent("divLlistatIncidencies", true, true);
}

function visibilite(thingId,imgsrc) {
	var targetElement;
	targetElement = document.getElementById(thingId);
	targetImg = document.getElementById(imgsrc);

	if (targetElement.style.display == "none") {
		targetElement.style.display = "";
		targetImg.src="img/collapse.gif";
		targetImg.title=tancarModul;
	} else {
		targetElement.style.display = "none";
		targetImg.src="img/expand.gif";
		targetImg.title=obrirModul;
	}
	save_collapsed();
}

function save_order() {
	var order = Sortable.serialize('sort1');
	new Ajax.Updater(
		'ajax_status', 'savepref.aspx',
		{evalScripts: true, method:'post', postBody: order}
	);
	return false;
}


function save_collapsed() {
	// listado de elemntos que se pueden cerrar
	var contents = ['estatTraficInfo', 'infoAdicionalInfo', 'urbanaInfo'];
	var collapsed = new Array();
	contents.each(function(content) {
		if( $(content) != null ){
			if ($(content).style.display == 'none')
				collapsed.push(content);
		}
	});
	collapsed = 'collapsed='+collapsed.flatten();
	new Ajax.Updater(
		'ajax_status', 'savepref.aspx',
		{evalScripts: true, method:'post', postBody: collapsed}
	);
	return false;
}

function savePreviousView() {
	previousLatLng = map.getCenter();
	previousZoom = map.getZoom();
}

// calls setCenter safely, without breaking the previousView functionnality
function jumpTo(centerXY, zl){
	savePreviousView();
	map.setCenter(centerXY);
	map.setZoom(zl);
//	map.addControl(new GLargeMapControl());
//	map.addControl(new google.maps.contro.mapTypeControl());
}


function miniMap(zone){
	jumpTo(minimapsLatLng[zone], minimapsZoom[zone]);
}

function switchDirectAccess(){
	new Effect.Fade((mapsVisible) ? 'miniMaps' : 'ciutats', {duration: 0.5, queue: {scope: 'controls'} });
	new Effect.Appear((mapsVisible) ? 'ciutats' : 'miniMaps', {duration: 0.5, queue: {position:'end', scope: 'controls'} });

	$('directAccessSwitch').innerHTML = (mapsVisible) ? porZona : porCiudad;
	$('directAccessSwitch1').innerHTML = (!mapsVisible) ? porCiudad : porZona;
	mapsVisible = !mapsVisible;
}

/**
*	Substitueix els caracters que tenim un equivalent sense accent
*	@return {String}
*/
function quitarAcentos(ret) {
	ret=ret.toUpperCase();
	ret=ret.replace(",","");
	
	ret=ret.toLowerCase();

	return ret;
}

function alert1(x) { alert(acentos(x)) }


function acentos(x) {
	// version 040623
	// Spanish - Español
	// Portuguese - Portugués - Português
	// Italian - Italiano
	// French - Francés - Français
	// Also accepts and converts single and double quotation marks, square and angle brackets
	// and miscelaneous symbols.
	// Also accepts and converts html entities for all the above.
//	if (navigator.appVersion.toLowerCase().indexOf("windows") != -1) {return x}
	x = x.replace(/¡/g,"\xA1");	x = x.replace(/&iexcl;/g,"\xA1")
	x = x.replace(/¿/g,"\xBF");	x = x.replace(/&iquest;/g,"\xBF")
	x = x.replace(/À/g,"\xC0");	x = x.replace(/&Agrave;/g,"\xC0")
	x = x.replace(/à/g,"\xE0");	x = x.replace(/&agrave;/g,"\xE0")
	x = x.replace(/Á/g,"\xC1");	x = x.replace(/&Aacute;/g,"\xC1")
	x = x.replace(/á/g,"\xE1");	x = x.replace(/&aacute;/g,"\xE1")
	x = x.replace(/Â/g,"\xC2");	x = x.replace(/&Acirc;/g,"\xC2")
	x = x.replace(/â/g,"\xE2");	x = x.replace(/&acirc;/g,"\xE2")
	x = x.replace(/Ã/g,"\xC3");	x = x.replace(/&Atilde;/g,"\xC3")
	x = x.replace(/ã/g,"\xE3");	x = x.replace(/&atilde;/g,"\xE3")
	x = x.replace(/Ä/g,"\xC4");	x = x.replace(/&Auml;/g,"\xC4")
	x = x.replace(/ä/g,"\xE4");	x = x.replace(/&auml;/g,"\xE4")
	x = x.replace(/Å/g,"\xC5");	x = x.replace(/&Aring;/g,"\xC5")
	x = x.replace(/å/g,"\xE5");	x = x.replace(/&aring;/g,"\xE5")
	x = x.replace(/Æ/g,"\xC6");	x = x.replace(/&AElig;/g,"\xC6")
	x = x.replace(/æ/g,"\xE6");	x = x.replace(/&aelig;/g,"\xE6")
	x = x.replace(/Ç/g,"\xC7");	x = x.replace(/&Ccedil;/g,"\xC7")
	x = x.replace(/ç/g,"\xE7");	x = x.replace(/&ccedil;/g,"\xE7")
	x = x.replace(/È/g,"\xC8");	x = x.replace(/&Egrave;/g,"\xC8")
	x = x.replace(/è/g,"\xE8");	x = x.replace(/&egrave;/g,"\xE8")
	x = x.replace(/É/g,"\xC9");	x = x.replace(/&Eacute;/g,"\xC9")
	x = x.replace(/é/g,"\xE9");	x = x.replace(/&eacute;/g,"\xE9")
	x = x.replace(/Ê/g,"\xCA");	x = x.replace(/&Ecirc;/g,"\xCA")
	x = x.replace(/ê/g,"\xEA");	x = x.replace(/&ecirc;/g,"\xEA")
	x = x.replace(/Ë/g,"\xCB");	x = x.replace(/&Euml;/g,"\xCB")
	x = x.replace(/ë/g,"\xEB");	x = x.replace(/&euml;/g,"\xEB")
	x = x.replace(/Ì/g,"\xCC");	x = x.replace(/&Igrave;/g,"\xCC")
	x = x.replace(/ì/g,"\xEC");	x = x.replace(/&igrave;/g,"\xEC")
	x = x.replace(/Í/g,"\xCD");	x = x.replace(/&Iacute;/g,"\xCD")
	x = x.replace(/í/g,"\xED");	x = x.replace(/&iacute;/g,"\xED")
	x = x.replace(/Î/g,"\xCE");	x = x.replace(/&Icirc;/g,"\xCE")
	x = x.replace(/î/g,"\xEE");	x = x.replace(/&icirc;/g,"\xEE")
	x = x.replace(/Ï/g,"\xCF");	x = x.replace(/&Iuml;/g,"\xCF")
	x = x.replace(/ï/g,"\xEF");	x = x.replace(/&iuml;/g,"\xEF")
	x = x.replace(/Ñ/g,"\xD1");	x = x.replace(/&Ntilde;/g,"\xD1")
	x = x.replace(/ñ/g,"\xF1");	x = x.replace(/&ntilde;/g,"\xF1")
	x = x.replace(/Ò/g,"\xD2");	x = x.replace(/&Ograve;/g,"\xD2")
	x = x.replace(/ò/g,"\xF2");	x = x.replace(/&ograve;/g,"\xF2")
	x = x.replace(/Ó/g,"\xD3");	x = x.replace(/&Oacute;/g,"\xD3")
	x = x.replace(/ó/g,"\xF3");	x = x.replace(/&oacute;/g,"\xF3")
	x = x.replace(/Ô/g,"\xD4");	x = x.replace(/&Ocirc;/g,"\xD4")
	x = x.replace(/ô/g,"\xF4");	x = x.replace(/&ocirc;/g,"\xF4")
	x = x.replace(/Õ/g,"\xD5");	x = x.replace(/&Otilde;/g,"\xD5")
	x = x.replace(/õ/g,"\xF5");	x = x.replace(/&otilde;/g,"\xF5")
	x = x.replace(/Ö/g,"\xD6");	x = x.replace(/&Ouml;/g,"\xD6")
	x = x.replace(/ö/g,"\xF6");	x = x.replace(/&ouml;/g,"\xF6")
	x = x.replace(/Ø/g,"\xD8");	x = x.replace(/&Oslash;/g,"\xD8")
	x = x.replace(/ø/g,"\xF8");	x = x.replace(/&oslash;/g,"\xF8")
	x = x.replace(/Ù/g,"\xD9");	x = x.replace(/&Ugrave;/g,"\xD9")
	x = x.replace(/ù/g,"\xF9");	x = x.replace(/&ugrave;/g,"\xF9")
	x = x.replace(/Ú/g,"\xDA");	x = x.replace(/&Uacute;/g,"\xDA")
	x = x.replace(/ú/g,"\xFA");	x = x.replace(/&uacute;/g,"\xFA")
	x = x.replace(/Û/g,"\xDB");	x = x.replace(/&Ucirc;/g,"\xDB")
	x = x.replace(/û/g,"\xFB");	x = x.replace(/&ucirc;/g,"\xFB")
	x = x.replace(/Ü/g,"\xDC");	x = x.replace(/&Uuml;/g,"\xDC")
	x = x.replace(/ü/g,"\xFC");	x = x.replace(/&uuml;/g,"\xFC")
	
	x = x.replace(/\"/g,"\x22")
	x = x.replace(/\'/g,"\x27")
	x = x.replace(/\</g,"\x3C")
	x = x.replace(/\>/g,"\x3E")
	x = x.replace(/\[/g,"\x5B")
	x = x.replace(/\]/g,"\x5D")

	x = x.replace(/¢/g,"\xA2");	x = x.replace(/&cent;/g,"\xA2") 
	x = x.replace(/£/g,"\xA3");	x = x.replace(/&pound;/g,"\xA3")
	x = x.replace(/€/g,"\u20AC");	x = x.replace(/&euro;/g,"\u20AC") 
	x = x.replace(/©/g,"\xA9");	x = x.replace(/&copy;/g,"\xA9") 
	x = x.replace(/®/g,"\xAE");	x = x.replace(/&reg;/g,"\xAE") 
	x = x.replace(/ª/g,"\xAA");	x = x.replace(/&ordf;/g,"\xAA") 
	x = x.replace(/º/g,"\xBA");	x = x.replace(/&ordm;/g,"\xBA") 
	x = x.replace(/°/g,"\xB0");	x = x.replace(/&deg;/g,"\xB0") 
	x = x.replace(/±/g,"\xB1");	x = x.replace(/&plusmn;/g,"\xB1")
	x = x.replace(/×/g,"\xD7");	x = x.replace(/&times;/g,"\xD7") 
	
		
	return x
}


function horaRefrescado () {
	var now = new Date();

	var TheDate = now.getDate() + "/" +(now.getMonth()+ 1) +"/"+  now.getFullYear();
	var hours = now.getHours();
	var minutes = now.getMinutes();
	var seconds = now.getSeconds()
	var timeValue = "" + ((hours >12) ? hours -12 :hours)
	timeValue += ((minutes < 10) ? ":0" : ":") + minutes
	timeValue += ((seconds < 10) ? ":0" : ":") + seconds
	timeValue += (hours >= 12) ? " PM" : " AM"
	document.getElementById("actualizado").innerHTML= TheDate+ "(" +timeValue+")";
}

function dataRefrescado () {
	var now = new Date();

	var TheDate = now.getDate() +(now.getMonth()+ 1) +  now.getFullYear();
	var hours = now.getHours();
	var minutes = now.getMinutes();
	var seconds = now.getSeconds()
	var timeValue = "" + ((hours >12) ? hours -12 :hours)
	timeValue += minutes;
	timeValue += seconds;
	return TheDate + timeValue;
}

/*Refresca los archivos json*/
function refrescar(){
	numVueltasInfo=0;

	obresCheck = false;
	accidentsCheck = false;
	congestionsCheck = false;
	climaCheck = false;
	consCheck = false;
	camaresCheck = false;
	
	copiaInformacion=new Array();
	horaRefrescado();
	checkboxClickHandler();
	
	if( mostraTrafficInrix ){
		refrescarPrevisioTrans('<?echo $ag["errorPrevisio"];?>');
	}
}


/*Refresca la previsiò de trànsit (inrix) manualment.*/
function refrescarPrevisioTrans(errorPrevisio){

//	if( document.getElementById("previsioDirecte").checked ) 
		loadInrix();
//	else 
//		changeInrix('fechaPrev',errorPrevisio);
//
	return;
}

var slider1=new accordion.slider("slider1");
/*Abre prototype window con descargas para GPS*/
function descargaGPS(){
	winPrototypeDesc= new Window({className: "cit", width:634, height:470, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: descarregaInformacio, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeDesc.setHTMLContent('<div id="accordion">'
									+'<dl class="accordion" id="sliderPois">'
/*										+'<dt><div class="dt_text">'+text_Radars+'</div></dt>'
										+'<dd class="dd_modificat">'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/radar_asc.zip" target="_blank">'+text_Descarregar+'</a> (.ASC) </div>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/navigon.gif"/>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/destinator.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-top: 15px;padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/radar_csv.zip" target="_blank" >'+text_Descarregar+'</a> (.CSV) </div>'
												+'<img style="float: left;padding-left: 15px;" src="img/garmin.gif"/>'
												+'<img style="padding-top: 8px;padding-left: 15px;" src="img/mio.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/radar_gpx.zip" target="_blank" >'+text_Descarregar+'</a> (.GPX) </div>'
												+'<img style="padding-left: 15px;" src="img/garmin.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/radar_kml.zip" target="_blank" >'+text_Descarregar+'</a> (.KML) </div>'
												+'<img style="float:left; padding-top: 10px;padding-left: 15px;" src="img/mio.gif"/>'
												+'<img style="float:left;padding-left: 15px;padding-top: 5px;" src="img/google_earth.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-left: 15px;" src="img/igo8.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 5px;"><a href="POIS/radar_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.OV2) </div>'
												+'<img style="padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
										+'</dd>'*/
										+'<dt><div class="dt_text">'+text_Punts_negres+'</div></dt>'
										+'<dd class="dd_modificat">'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/pn_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.ASC) </div>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/navigon.gif"/>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/destinator.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-top: 15px;padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/pn_csv.zip" target="_blank" >'+text_Descarregar+'</a> (.CSV) </div>'
												+'<img style="float: left;padding-left: 15px;" src="img/garmin.gif"/>'
												+'<img style="padding-top: 8px;padding-left: 15px;" src="img/mio.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/pn_gpx.zip" target="_blank" >'+text_Descarregar+'</a> (.GPX) </div>'
												+'<img style="padding-left: 15px;" src="img/garmin.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/pn_kml.zip" target="_blank" >'+text_Descarregar+'</a> (.KML) </div>'
												+'<img style="float:left; padding-top: 10px;padding-left: 15px;" src="img/mio.gif"/>'
												+'<img style="float:left;padding-left: 15px;padding-top: 5px;" src="img/google_earth.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-left: 15px;" src="img/igo8.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 5px;"><a href="POIS/pn_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.OV2) </div>'
												+'<img style="padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
										+'</dd>'
										+'<dt><div class="dt_text">'+text_EURORAP+'</div></dt>'
										+'<dd class="dd_modificat">'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/eurorap_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.ASC) </div>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/navigon.gif"/>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/destinator.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-top: 15px;padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/eurorap_csv.zip" target="_blank" >'+text_Descarregar+'</a> (.CSV) </div>'
												+'<img style="float: left;padding-left: 15px;" src="img/garmin.gif"/>'
												+'<img style="padding-top: 8px;padding-left: 15px;" src="img/mio.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/eurorap_gpx.zip" target="_blank" >'+text_Descarregar+'</a> (.GPX) </div>'
												+'<img style="padding-left: 15px;" src="img/garmin.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/eurorap_kml.zip" target="_blank" >'+text_Descarregar+'</a> (.KML) </div>'
												+'<img style="float:left; padding-top: 10px;padding-left: 15px;" src="img/mio.gif"/>'
												+'<img style="float:left;padding-left: 15px;padding-top: 5px;" src="img/google_earth.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-left: 15px;" src="img/igo8.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 5px;"><a href="POIS/eurorap_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.OV2) </div>'
												+'<img style="padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
										+'</dd>'
										+'<dt><div class="dt_text">'+text_EUROTAP+'</div></dt>'
										+'<dd class="dd_modificat">'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/eurotap_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.ASC) </div>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/navigon.gif"/>'
												+'<img style="float:left; padding-top: 15px;padding-left: 15px;" src="img/destinator.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-top: 15px;padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/eurotap_csv.zip" target="_blank" >'+text_Descarregar+'</a> (.CSV) </div>'
												+'<img style="float: left;padding-left: 15px;" src="img/garmin.gif"/>'
												+'<img style="padding-top: 8px;padding-left: 15px;" src="img/mio.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 10px;"><a href="POIS/eurotap_gpx.zip" target="_blank" >'+text_Descarregar+'</a> (.GPX) </div>'
												+'<img style="padding-left: 15px;" src="img/garmin.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 15px;"><a href="POIS/eurotap_kml.zip" target="_blank" >'+text_Descarregar+'</a> (.KML) </div>'
												+'<img style="float:left; padding-top: 10px;padding-left: 15px;" src="img/mio.gif"/>'
												+'<img style="float:left;padding-left: 15px;padding-top: 5px;" src="img/google_earth.gif"/>'
												+'<img style="float:left;padding-left: 15px;" src="img/igo.gif"/>'
												+'<img style="padding-left: 15px;" src="img/igo8.gif"/>'
											+'</span>'
											+'<span><div style="float: left; padding-top: 5px;"><a href="POIS/eurotap_asc.zip" target="_blank" >'+text_Descarregar+'</a> (.OV2) </div>'
												+'<img style="padding-left: 15px;" src="img/tomtom.gif"/>'
											+'</span>'
										+'</dd>'
									+'</dl>'
								+'</div>');

	winPrototypeDesc.showCenter();
	winPrototypeDesc.toFront();
	
	slider1.init("sliderPois",0,"open");
}


/*function infotransitMovil_es(){
	winPrototypeMovil= new Window({className: "cit", width:450, height:300, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: titleInfoMobil, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeMovil.setHTMLContent('<div style="position:relative;height:300px;">'
										+'<div style="position:absolute;left:0px;bottom:0px;width:171px;height:293px;background: url(img/todo-blanco-grande.JPG) bottom no-repeat;"></div>'
										+'<div style="position:absolute;right:20px;top:20px;width:240px;text-align:justify;">'
											+'<p style="padding-bottom:10px;"><b>'+ahoraMobil+'</b></p>'
											+'<p>'+textInfoMobil+'</p>'
											+'<p style="padding-top:20px;margin-top:20px;background: url(img/pdf.gif) left no-repeat;height:34px;width:150px;"><span style="position:relative;top:5px;left:45px;font-weight:bold;cursor:pointer;"><a href="docs/Infotransit_en_RACC_Movil_CAST.pdf" target="_blank">'+mesInfoMobil+'</a></span></p>'
											+'<p style="padding-top:10px;background: url(img/link.gif) left no-repeat;height:34px;width:150px;"><span style="position:relative;top:5px;left:45px;font-weight:bold;cursor:pointer;"><a href="http://www.racc.net/pages/infotransit?locale=es-ES" target="_blank">'+mobilMesDetalls+'</a></span></p>'
										+'</div>'
									+'</div>');
	winPrototypeMovil.showCenter();
	winPrototypeMovil.toFront();
}

function infotransitMovil_ca(){
	winPrototypeMovil= new Window({className: "cit", width:450, height:300, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: titleInfoMobil, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeMovil.setHTMLContent('<div style="position:relative;height:300px;">'
										+'<div style="position:absolute;left:0px;bottom:0px;width:171px;height:293px;background: url(img/todo-blanco-cat.jpg) bottom no-repeat;"></div>'
										+'<div style="position:absolute;right:20px;top:20px;width:240px;text-align:justify;">'
											+'<p style="padding-bottom:10px;"><b>'+ahoraMobil+'</b></p>'
											+'<p>'+textInfoMobil+'</p>'
											+'<p style="padding-top:20px;margin-top:20px;background: url(img/pdf.gif) left no-repeat;height:34px;width:150px;"><span style="position:relative;top:5px;left:45px;font-weight:bold;cursor:pointer;"><a href="docs/Infotransit_a_RACC_Mobil_CAT.pdf" target="_blank">'+mesInfoMobil+'</a></span></p>'
											+'<p style="padding-top:10px;background: url(img/link.gif) left no-repeat;height:34px;width:150px;"><span style="position:relative;top:5px;left:45px;font-weight:bold;cursor:pointer;"><a href="http://www.racc.net/pages/infotransit?locale=cat" target="_blank">'+mobilMesDetalls+'</a></span></p>'
										+'</div>'
									+'</div>');
	winPrototypeMovil.showCenter();
	winPrototypeMovil.toFront();
}*/


function obrirFormulari(){
	winPrototypeForm= new Window({className: "cit", width:400, height:244, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: titleFormulari, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeForm.setHTMLContent('<form name="enviarForm" action="enviarFormulari.php" target="iframeEnviarFormulario" method="post">'
										+'<div style="padding-top:10px;padding-left:10px;">'
											+'<div style="float:left;width:70px;">'+nomFormulari+' </div><div style="float:left;"><input id="formNom" name="formNom" value="" type="text" size="30"/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+emailFormulari+' </div><div style="padding-top:10px;float:left;"><input id="formEmail" name="formEmail" size="30" type="text" value=""/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+sugFormulari+' </div><div style="float:left;padding-top:10px;"><textarea rows="4" cols="40" id="formSug" name="formSug"></textarea></div>'
											+'<br style="clear:left;"/>'
											+'<div style="Arial bold 11px #666;height:40px;position:relative;top:15px;">'
												+'<div onclick="javascript:enviarFormulari(\'suggeriment\');" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:10px;width:94px;text-align:center;cursor:pointer;"><span>'+enviar+'</span></div>'
												+'<div onclick="javascript:tancarFormulari();" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:104px;width:94px;text-align:center;cursor:pointer;"><span>'+textCerrar+'</span></div>'
											+'</div>'
											+'<div style="width:310px;padding:20px 5px 0 5px;"><div id="textInformatiu" style="background-color:#DFDFDF;padding:3px;" >'+infoFormulari+'</div></div>'
										+'</div>'
									+'</form>');
	winPrototypeForm.showCenter();
	winPrototypeForm.toFront();
}

function obrirFormulariEnvioAmigo(){
	winPrototypeForm= new Window({className: "cit", width:370, height:282, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: titleFormulariAmic, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeForm.setHTMLContent('<form name="enviarFormAmigo" action="enviarFormulari.php" target="iframeEnviarFormulario" method="post">'
										+'<div style="padding-top:10px;padding-left:10px;">'
											+'<div style="float:left;width:70px;font: Verdana 11px #666;">'+deFormulari+' </div><div style="float:left;"><input id="formDe" name="formDe" value="" type="text" size="30"/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;font: Verdana 11px #666;padding-top:10px;">'+aFormulari+' </div><div style="padding-top:10px;float:left;"><input id="formA" name="formA" value="" type="text" size="30"/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+emailFormulari+' </div><div style="padding-top:10px;float:left;"><input id="formEmail" name="formEmail" size="30" type="text" value=""/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+comentFormulari+' </div><div style="padding-top:10px;float:left;"><textarea rows="3" cols="40" id="formComent" name="formComent"></textarea></div>'
											+'<br style="clear:left;"/>'
											+'<div style="Arial bold 11px #666;height:40px;position:relative;top:15px;">'
												+'<div onclick="javascript:enviarFormulari(\'amic\');" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:10px;width:94px;text-align:center;cursor:pointer;"><span>'+enviar+'</span></div>'
												+'<div onclick="javascript:tancarFormulari();" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:104px;width:94px;text-align:center;cursor:pointer;"><span>'+textCerrar+'</span></div>'
											+'</div>'
											+'<div style="width:310px;padding:20px 5px 0 5px;"><div id="textInformatiu" style="background-color:#DFDFDF;padding:3px;" >'+infoFormulariAmic+'</div></div>'
										+'</div>'
									+'</form>');
	winPrototypeForm.showCenter();
	winPrototypeForm.toFront();
}

function enviarAmigo(posicio){
	var informacio="";
	if(aSenseNull[posicio]!=null)informacio=aSenseNull[posicio].llistaIncidencies;

	winPrototypeForm= new Window({className: "cit", width:370, height:282, zIndex: 750,closable:true, maximizable:false,minimizable:false, resizable: false, title: titleIncidenciaFormulariAmic, draggable:false, showEffect:Element.show, hideEffect:Element.hide, recenterAuto:true, wiredDrag: false, destroyOnClose:true});
	winPrototypeForm.setHTMLContent('<form name="enviarIncidenciaFormAmigo" action="enviarFormulari.php" target="iframeEnviarFormulario" method="post">'
										+'<div style="padding-top:10px;padding-left:10px;">'
											+'<div style="float:left;width:70px;font: Verdana 11px #666;">'+deFormulari+' </div><div style="float:left;"><input id="formDe" name="formDe" value="" type="text" size="30"/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;font: Verdana 11px #666;padding-top:10px;">'+aFormulari+' </div><div style="padding-top:10px;float:left;"><input id="formA" name="formA" value="" type="text" size="30"/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+emailFormulari+' </div><div style="padding-top:10px;float:left;"><input id="formEmail" name="formEmail" size="30" type="text" value=""/></div>'
											+'<br style="clear:left;"/>'
											+'<div style="float:left;width:70px;padding-top:10px;">'+comentFormulari+' </div><div style="padding-top:10px;float:left;"><textarea rows="3" cols="40" id="formComent" name="formComent"></textarea></div>'
											+'<textarea style="display:none;" rows="3" cols="40" id="formInfo" name="formInfo">'+informacio+'</textarea>'
											+'<br style="clear:left;"/>'
											+'<div style="Arial bold 11px #666;height:40px;position:relative;top:15px;">'
												+'<div onclick="javascript:enviarFormulari(\'infoAmic\');" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:10px;width:94px;text-align:center;cursor:pointer;"><span>'+enviar+'</span></div>'
												+'<div onclick="javascript:tancarFormulari();" class="handle tituloButton divRefrescar" style="position:absolute; top:0px; left:104px;width:94px;text-align:center;cursor:pointer;"><span>'+textCerrar+'</span></div>'
											+'</div>'
											+'<div style="width:310px;padding:20px 5px 0 5px;"><div id="textInformatiu" style="background-color:#DFDFDF;padding:3px;" >'+infoFormulariAmic+'</div></div>'
										+'</div>'
									+'</form>');
	winPrototypeForm.showCenter();
	winPrototypeForm.toFront();
}

function tancarFormulari(){
	winPrototypeForm.setHTMLContent('')
	winPrototypeForm.close();
}

function enviarFormulari(opcio){

	if(opcio=="suggeriment"){
		var formNom=document.getElementById("formNom").value;
		var formSug=document.getElementById("formSug").value;
		if(formNom==""){
			alert(informar_nom);
			return false;
		}
		if(formSug==""){
			alert(informar_suggeriment);
			return false;
		}
	}else{
		var formDe=document.getElementById("formDe").value;
		var formA=document.getElementById("formA").value;
		if(formDe==""){
			alert(informar_de);
			return false;
		}
		if(formA==""){
			alert(informar_a);
			return false;
		}
	}

	var formEmail=document.getElementById("formEmail").value;
	if(formEmail==""){
		alert(informar_email);
		return false;
	}
	if(!validarMail(document.getElementById("formEmail").value)){
		alert(email_incorrecte);
		return false;
	}

	if(opcio=="suggeriment"){
		document.enviarForm.action = urlEnviarFormulari+"?opcio="+opcio+"&lang="+lang;
		document.enviarForm.submit();
	}else{
		if(opcio=="infoAmic"){
			document.enviarIncidenciaFormAmigo.action = urlEnviarFormulari+"?opcio="+opcio+"&lang="+lang;
			document.enviarIncidenciaFormAmigo.submit();
		}else{
			document.enviarFormAmigo.action = urlEnviarFormulari+"?opcio="+opcio+"&lang="+lang;
			document.enviarFormAmigo.submit();
		}
	}
}

/*Validar email*/
function validarMail(emailStr){
	if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailStr))return true;
	else   return false;
}

function clearOverlays() {
	if (markersArray && markersArray.length>0) {
		for (i=0;i<markersArray.length;i++) {
			markersArray[i].setMap(null);
			markersArray[i]=null;
		}
	}
	markersArray=[];
	if (markerCluster!=null){
		markerCluster.clearMarkers();
		markerCluster=null;
	}
}


// abans: activarEstat
function checkboxClickHandler(){
	if(timeout!=null)window.clearTimeout(timeout);
	var canvi=false;

	if(finalCarga){
		if(!canvi && (obresCheck && !document.getElementById("obres").checked))canvi=true;
		if(!canvi && (accidentsCheck && !document.getElementById("accidents").checked))canvi=true;
		if(!canvi && (congestionsCheck && !document.getElementById("congestio").checked))canvi=true;
		if(!canvi && (climaCheck && !document.getElementById("climatologia").checked))canvi=true;
		if(!canvi && (consCheck && !document.getElementById("cons").checked))canvi=true;
		if(!canvi && (camaresCheck && !document.getElementById("camaras").checked))canvi=true;
		if(!canvi && (eurorapCheck && !document.getElementById("eurorap").checked))canvi=true;
		if(!canvi && (eurotapCheck && !document.getElementById("eurotap").checked))canvi=true;
		if(!canvi && (puntsnegresCheck && !document.getElementById("punts_negres").checked))canvi=true;
//BBDD		if(!canvi && (radarsCheck && !document.getElementById("radars").checked))canvi=true;

		if(canvi){
			numVueltasInfo=0;
			aSenseNull=[];
			arrayInfo=[];

			obresCheck = false;			accidentsCheck = false;
			congestionsCheck = false;	climaCheck = false;
			consCheck = false;			camaresCheck = false;
			eurorapCheck = false;		eurotapCheck = false;
			puntsnegresCheck = false;	//BBDD radarsCheck = false;
			copiaInformacion=new Array();
		}
		finalCarga = false;
		document.getElementById("inicioInfo").style.display="block";

		var top=findPosY(document.getElementById("inicioInfo"));
		var left=findPosX(document.getElementById("inicioInfo"));

		check =document.formulariCit.estatT;
		clearOverlays();

		for(i=eventListeners.length-1; i>=0; i--){
			google.maps.event.removeListener(eventListeners[i]);
		}
		eventListeners=[];

		winPrototype.setHTMLContent(" <div id='markerList'><h1 id='sense' style='padding-left: 20px;'>"+senseIncidencies+"<\/h1><\/div>");//sense informació al prototype
		numChecks=numeroChecked(check);

		var x=0;
		while (x <check.length) {
			if(check[x].checked){
				if(check[x].id=="obres"){
					cadenaIncidencies="";
					if(!obresCheck || numVueltasInfo==0){
						obresCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Obres.json", "",processResponse);
					}
				}
				if(check[x].id=="accidents"){
					if(!accidentsCheck || numVueltasInfo==0){
						accidentsCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Accidents.json", "",processResponse);
					}
				}
				if(check[x].id=="congestio"){
					if(!congestionsCheck || numVueltasInfo==0){
						congestionsCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Congestio.json", "",processResponse);

					}
				}

				if(check[x].id=="climatologia"){
					if(!climaCheck || numVueltasInfo==0){
						climaCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Clima.json", "",processResponse);
					}
				}

				if(check[x].id=="cons"){
					if(!consCheck || numVueltasInfo==0){
						consCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Cons.json", "",processResponse);
					}
				}

				//info estàtica
		/*BBDD	if(check[x].id=="radars"){
					if(!radarsCheck || numVueltasInfo==0){
						radarsCheck = true;
						numVueltasInfo++;
						initializeRadars();
					}
				}*/
				if(check[x].id=="punts_negres"){
					if(!puntsnegresCheck || numVueltasInfo==0){
						puntsnegresCheck = true;
						if(arrayEstatica["punt_negre"]==null){
							$j.get(urlProxy+"?lang="+lang+"&json=PuntNegre.json", "",processResponse);
						}else tractarDades(arrayEstatica["punt_negre"]);
					}
				}
				if(check[x].id=="eurorap"){
					if(!eurorapCheck || numVueltasInfo==0){
						eurorapCheck = true;
						if(arrayEstatica["eurorap"]==null){
							$j.get(urlProxy+"?lang="+lang+"&json=Eurorap.json", "",processResponse);
						}else tractarDades(arrayEstatica["eurorap"]);
					}
				}
				if(check[x].id=="eurotap"){
					if(!eurotapCheck || numVueltasInfo==0){
						eurotapCheck = true;

						if(arrayEstatica["eurotap"]==null){
							$j.get(urlProxy+"?lang="+lang+"&json=Eurotap.json", "",processResponse);
						}else tractarDades(arrayEstatica["eurotap"]);
					}
				}
				if(check[x].id=="camaras"){
					if(!camaresCheck || numVueltasInfo==0){
						camaresCheck = true;
						$j.get(urlProxy+"?lang="+lang+"&json=Camara.json", "",processResponse);
					}
				}
			}
			x++;
		}

		if(numChecks==0 ){
			finalCarga = true;//no s'ha d'esperar a les peticions json.
			document.getElementById("inicioInfo").style.display="none";
		}

		var aux="";
		if(markersArray!=null)aux=markersArray.length;

		if( numChecks == numVueltasInfo){
			document.getElementById("inicioInfo").style.display="none";
		}

		//mostra la informació al prototype
		if(window.ActiveXObject) var top=findPosY(document.getElementById("formularioMapa"))+550;
		else var top=findPosY(document.getElementById("formularioMapa"))+540;

		//var left=findPosX(document.getElementById("contenido"));
		var left=findPosX(document.getElementById("doc"))+5;

//		winPrototype.setLocation(top,left);//setLocation(top, left)
		winPrototype.show();
		timeout=window.setTimeout("refrescar()",segundos); //refrescar la plana per actualizar les incidéncies
	}else finalCarga = true;
}


//retorna el nº de checkbox marcats
function numeroChecked(objectCheck){
	var numMarcats=0;
	for (var x=0; x <objectCheck.length; x++) {
		if(objectCheck[x].checked && objectCheck[x].id!="radars" && objectCheck[x].id!="gasolineres") numMarcats=numMarcats+1;
	}
	return numMarcats;
}

// associem funcio per quan facin resize ajustar mapa
window.onresize=windowResize;
function windowResize() {
	if(winPrototype!=null){
		var top=findPosY(document.getElementById("ft"))-255;
		var left=findPosX(document.getElementById("doc"));

		winPrototype.setLocation(top,left);//setLocation(top, left)
		winPrototype.show();

		top=findPosY(document.getElementById("map_canvas"));
		left=findPosX(document.getElementById("map_canvas"));
	}
}


// Calcula la posicion X absoluta del objecto
//http://www.quirksmode.org/js/findpos.html
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}


// Calcula la posicion Y absoluta del objecto
function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

// afegeix un nou element a la llista d'incidencies.
// abans: mostrarIncidenciesPrototype
function addIncidenciaToList(marker, list, posMarker){

	//Caldria verificar si el marker està dins el viewport, per 
	//afegir-lo al llistat d'incidències o no.

	if (typeof(map.getBounds())!= "undefined"){
		//si estan molt al borde no surten (incrementem una mica el bound del map?)
		var bounds = map.getBounds();
		var bounds1 =  new google.maps.LatLng(marker.getPosition().lat(), marker.getPosition().lng());

		if (posMarker<copiaInformacion.length) {
			//verificació de que l'element a dibuixar es troba dins del bound del mapa.

			if(bounds.contains(bounds1)){
				//var myInfo = copiaInformacion[posElement];
				var myInfo = copiaInformacion[posMarker];
			//BBDD	if (typeof(myInfo)!= "undefined" && myInfo.tipusElement != "radar" ){
				if (typeof(myInfo)!= "undefined"){
					var textIncidencies=myInfo.llistaIncidencies;
					var infoPunt=myInfo.infoPunt1;
					infoPunt=infoPunt.replace(".[posElem].",posMarker);
					infoPunt=substitucionsJSON(infoPunt,myInfo,posMarker);

					//L'informació estàtica no te llistaIncidencies i no es mostre al llistat d'incidencies de circulació.
					if (textIncidencies!= "undefined"){
						var elementDivIncidencia = document.createElement("DIV");
						elementDivIncidencia.id="divIncidenciaId_"+posMarker;
						elementDivIncidencia.style.cursor="pointer";
						elementDivIncidencia.innerHTML = textIncidencies;

						//per pintar les files de diferents colors
						(colorLlistat)? elementDivIncidencia.style.background='#FBF5C9': elementDivIncidencia.style.background='white';
						colorLlistat=!colorLlistat;

						eventListeners.push(google.maps.event.addDomListener(elementDivIncidencia,'mouseover',function(){
								colorDivAnterior=elementDivIncidencia.style.background;
								elementDivIncidencia.style.background='#FEC220';
							})
						);
						eventListeners.push(google.maps.event.addDomListener(elementDivIncidencia,'mouseout',function(){
								elementDivIncidencia.style.background=colorDivAnterior;
							})
						);

						eventListeners.push(google.maps.event.addDomListener(elementDivIncidencia,'click',function() {
							// click a un element de la llista d'incidencies. Ha d'obrir la fitxa del marker associat.
								map.setCenter(marker.getPosition());
								try{
									if(infowindow!=null)infowindow.close();
									infowindow = new google.maps.InfoWindow({content: infoPunt, maxWidth: 280, autoScroll:false});
									infowindow.open(map,marker);

									map.setZoom(13);
									if(winPrototype.isMaximized())winPrototype.maximize();
								}catch(e){}
							})
						);
						list.appendChild(elementDivIncidencia);
					}
				}
			}
		}
	}
}

//agafa la informació en format JSON i l'afegeix a l'array "copiaInformacion" on hi quedaran les dades de tots els tipus.
// abans: funcInfo
function tractarDades(data){
	try{

		var d=new Date();
		if(data!=null){
			elements=data.elements;
			//per si tenim més endavant tenim més d'un element
			for (var iE=0; iE<elements.length; iE++) {
				if(elements[iE].informacio.length>0){
					var d2=new Date();

					if(typeof(elements[iE].informacio[0])== "undefined"){
						elements[iE].informacio=elements[iE].informacio.reverse();
						elements[iE].informacio.pop();
					}

					copiaInformacion=copiaInformacion.concat(elements[iE].informacio);
					var d3=new Date();
					// busquem el tipus de dades dels elements. Els que no són estatics caldria revisar els XSL perque no afegeixin elements buits(per afegir una ',' de més) però com que només ho necessitem pels estàtics no ens afecta.
					var trobat=false; 
					var i=0;
					var elemActual="";

					while (!trobat && i<elements[iE].informacio.length) {
						if (typeof(elements[iE].informacio[elements[iE].informacio.length-1])!="undefined") {
							elemActual=elements[iE].informacio[i].tipusElement;// ho mirem de l'ultim perque el primer venia malament: ja corregit a l'xsl
							trobat=true;
						} else i++;
					}

					// guardem la informació estàtica de punts negres, eurorap, eurotap i càmeres.
					if (typeof(elemActual)!=='undefined' && arrayEstatica[elemActual]==null){
					//BBDD	if (elemActual==='radar' || elemActual=== "punt_negre" || elemActual=== "eurorap" || elemActual=== "eurotap"){
						if (elemActual=== "punt_negre" || elemActual=== "eurorap" || elemActual=== "eurotap"){
							arrayEstatica[elemActual]=data;
						}
					}
				}
			}			
		}else{
			// sense dades
			document.getElementById("inicioInfo").style.display="none";
		}
		numVueltasInfo=numVueltasInfo+1;

		var d4=new Date();
		if (debugOn) GLog.write("tractarDades. ("+elemActual+") "+numVueltasInfo+" / "+numChecks );
		if(numChecks==numVueltasInfo) addMarkersToMap();//ja tenim tots els fitxer carregats
	}
	catch (e){
		alert(e.message);
		if (debugOn) GLog.write("Error a tractarDades()\n"+e.message);
		numVueltasInfo=numVueltasInfo+1;	

		if(numChecks==numVueltasInfo) addMarkersToMap();//ja tenim tots els fitxer carregats

	}
	
}

// Ja tenim un sol array amb tota la informació. Ara aquest mètode defineix els markers i el cluster.
function addMarkersToMap(){
	var d=new Date();

	// eliminem els events associats al moveend del mapa que emplenem la llista d'incidencies).
	for(i=listEventListeners.length-1; i>=0; i--){
		google.maps.event.removeListener(listEventListeners[i]);
	}
	listEventListeners=[];

	if(copiaInformacion.length>0){
		winPrototype.getContent().innerHTML ="<div id='markerList'></div>";
		var list = document.getElementById('markerList');

		// definim els markers
		var senseNull=0;//evita les posicions a null de copiaInformacio (per markersArray)

		for (var i=0; i<copiaInformacion.length; i++) {
			var myInfo = copiaInformacion[i];
			if(myInfo!=null && typeof(myInfo)!= "undefined"){

				var title=myInfo.infoPunt1;
				if(title==null)title=myInfo.infoPunt;

				title=substitucionsJSON(title,myInfo,senseNull);
				aSenseNull[senseNull]=myInfo;//guardem un array sense cap null (per si el json retorna algun element a null)
				var infoTooltip=myInfo.infoAgrupada;

				arrayInfo[senseNull]=myInfo.infoAgrupada;// guardem array amb la info per poder mostrar-la a la fitxa del cluster. TODO: fa falta duplicar-la?

				var marker = newMarker(new google.maps.LatLng(myInfo.latitude,myInfo.longitude), title, myInfo.icon, myInfo.tipusElement);
				markersArray.push(marker);//agrupació del markers del mateix tipus

				// llista incidencies
				if(myInfo.tipusElement=="cons" || myInfo.tipusElement=="congestio" || myInfo.tipusElement=="clima" || myInfo.tipusElement=="obra" || myInfo.tipusElement=="accident"){
					addIncidenciaToList(marker, list, senseNull);
				}
				senseNull++;//j++;
			}
		}
	}
	// eliminem i recreeem el cluster
	var d2=new Date();
	var d3=new Date();

	var styles = [[{
		url: 'img/m3.png',
		height: 55,
		width: 56,
		textColor: '#FFFFFF',
		textSize: 11
	}, {
		url: 'img/m3.png',
		height: 55,
		width: 56,
		textColor: '#FFFFFF',
		textSize: 11
	}, {
		url: 'img/m3.png',
		height: 55,
		width: 56,
		textColor: '#FFFFFF',
		textSize: 11
	}]];

	markerCluster = new MarkerClusterer(map, markersArray,{
		maxZoom:12,
		gridSize:80,
		styles: styles[0]
	});

	document.getElementById("inicioInfo").style.display="none";

	finalCarga=true;
	if (debugOn) GLog.write("addMarkersToMap numChecks:"+numChecks+" numeroChecked:"+numeroChecked(document.formulariCit.estatT));
	// quan veiem que el número de checks activats no coincideix, cal tornar a llançar l'event de demanar la informació.
	if(numChecks != numeroChecked(document.formulariCit.estatT))checkboxClickHandler();
	if (debugOn) GLog.write("addMarkersToMap total: "+ (new Date()-d)+"ms\n crear markers: "+(d2-d)+"\nms remove i add: "+(d3-d2)+"ms\n refresh: "+(d4-d3) +"ms\n\ntotal markers:"+markersArray.length);
}


/*
	title: informació del punt (el que mostrarà al marker
	myInfo: informació de l'incidéncia (element complet del JSON)
	senseNull: contador per evitar les posicions a null de copiaInformacio (per markersArray)
*/
function substitucionsJSON(title,myInfo,senseNull){
	if(myInfo.tipusElement=== "camara"){
		title=title.replace(".[287].","");//IMPORTANT!!! AIXÒ S'HA DE TREURE A LA PART PRIVADA!
		title=title.replace(".[data].",dataRefrescado());
	}

	title=title.replace(".[posElem].",senseNull);//indiquem a quina posició de l'array tenim la informació del element que volem consultar.
	if(myInfo.llistaIncidencies){
		if(myInfo.llistaIncidencies.search(planaHostImg)<0)myInfo.llistaIncidencies=myInfo.llistaIncidencies.replace("img/",planaHostImg);//indiquem la adreça on es troba l'imatge de la incidència
	}
	var textTwitter="";
	if(myInfo.twitter)textTwitter=myInfo.twitter;


	var copiaTextTwitter=textTwitter.replace(".[MI].","");
	copiaTextTwitter=copiaTextTwitter.replace(".[FI].","");

	if(copiaTextTwitter.length>127){
		var mi=textTwitter.indexOf(".[MI].");
		var fi=textTwitter.indexOf(".[FI].")+6;

		copiaTextTwitter=textTwitter.substr(0,mi);
		copiaTextTwitter+=textTwitter.substr(fi,textTwitter.length);
		textTwitter=copiaTextTwitter;
	}else textTwitter=copiaTextTwitter;

	textTwitter=textTwitter.replace(".[hashtag].","#");
	textTwitter=textTwitter.replace(".[hashtag].","#");
	textTwitter+=" #"+text_transit;
	textTwitter=encodeURIComponent(textTwitter);

	var element="";
	switch(myInfo.tipusElement){
		case "obra":
			element="OB";break;
		case "cons":
			element="CO";break;
		case "clima":
			element="ME";break;
		case "servicios":
			element="";break;
		case "camara":
			element="CA";break;
		case "punt_negre":
			element="PN";break;
		case "eurorap":
			element="ER";break;
		case "eurotap":
			element="ET";break;
		default:
			element="RE";
	}

	var webTwitter=planaHostEncode+"%3flat="+myInfo.latitude+"%26lon="+myInfo.longitude+"%26level=15%26layers="+element
	title=title.replace(".[url].",webTwitter+"&text="+textTwitter);//indiquem la url de la plana principal per publicar-ho a twitter

	return title;
}



// afegeix les incidencies actives i que quedin dins la vista actual a la llista.
function addCurrentIncidenciesToList() {
	try{
		var d=new Date();
		var list = document.getElementById('markerList');

		for (var i=0; i<aSenseNull.length; i++) {
			var myInfo=aSenseNull[i];
			if(myInfo!=null && typeof(myInfo)!= "undefined" && typeof(markersArray[i])!= "undefined"){
				var marker=markersArray[i];//la posició del markersArray comença a 0, en canvi l'array copiaInformacion comença a 1.
				if(myInfo.tipusElement=="congestio" || myInfo.tipusElement=="clima" || myInfo.tipusElement=="obra" || myInfo.tipusElement=="accident") {
					addIncidenciaToList(marker, list, i);
				}
			}
		}
		if (debugOn) GLog.write("addCurrentIncidenciesToList() time: "+(new Date()-d)+"ms");
	}
	catch (e){
		if (debugOn) GLog.write("Error a addCurrentIncidenciesToList()\n"+e.message+" "+myInfo);
	}
}

// Defineix un nou marker i li associa l'acció a fer en clickar.
function newMarker(markerLocation, title, markerIcon, tipusElement) {
	if (infowindow!=null)
		infowindow.close();

	var marker = new google.maps.Marker({position: markerLocation,map: map, icon: markerIcon });
	marker.setZIndex(999999);
	
	google.maps.event.addListener(marker, 'click', function() {

		if ( tipusElement == 'camara' )
			title = '<div id="divCameraInfoWindow" style="height:400px;">' + title + '</div>';

		if (infowindow!=null)
			infowindow.close();

		infowindow = new google.maps.InfoWindow({content: title, maxWidth: 280, autoScroll:false});
		infowindow.open(map,marker);

		if ( tipusElement == 'camara' ){

			/* Una vegada carregats treiem l'overflow dels parentNode del div de la càmera */
			google.maps.event.addListener(infowindow, 'domready', function(){
				$('divCameraInfoWindow').parentNode.style.overflow = 'hidden';
				$('divCameraInfoWindow').parentNode.parentNode.style.overflow = 'hidden';
			});

		}

	});

	return marker;
}

/*PETICIONS*/

/*****
*    Objecte processResponse (estat del transit)
*****/
function processResponse(responseXML, estat){
	if(responseXML.search("Error")=="-1"){
		var d=new Date();
		var json = eval('(' + responseXML + ')');
		if (debugOn) GLog.write("JSON total: "+(new Date()-initDate)+"ms  query: "+(d-initDate)+"ms  evaluant: "+(new Date()-d)+"ms");
	}else{
		var iniciPosTractat=responseXML.lastIndexOf("/")+1;		
		var finalPosTractat=responseXML.indexOf(".json");
		var elemTractar=responseXML.substr(iniciPosTractat,finalPosTractat);
		alert("Error obteniendo información de "+ elemTractar +".");
	}
	tractarDades(json);
};

