//<![CDATA[

var totGrp = 2;				// Variabil il cui valore indica il numero totale dei gruppo di POI presenti
var viewGrp = 1;			// Variabile il cui valore indica il gruppo di POI visualizzato in elenco

var dvLoadDati = null;
var dvLoadMap = null;

var txtNav = new String('Pag. |C| di |T|.');
var txtLstGrp1 = new String('POI |S|-|E| di |T|.');
var txtLstGrp2 = new String('POI |S|-|E| di |T|.');

function PrepareGMap() 
{
	if (GBrowserIsCompatible()) 
	{
		map = new GMap2(document.getElementById("map"));
			
		map.addControl(new GLargeMapControl());
		map.addControl(new GScaleControl());
		map.addControl(new GOverviewMapControl());			
		map.addControl(new GMapTypeControl());

		map.setCenter(new GLatLng(37.853129, 15.287815), 14); // coordinate di taormina
		
		// map.setCenter(new GLatLng(43.776722, 11.250167), 13); // coordinate di firenze
		// map.setCenter(new GLatLng(37.4419, -122.1419), 13);	//coordinate di Palo Alto		

		// Download the data in data.xml and load it on the map. 

		if(poiXmlGrp1 != '' && poiXmlGrp2 != '')
		{
			GLogger('Inizio caricamento dati XML');
			
			dvLoadDati = GetObj('dvLoadingPOI');
			dvLoadMap = GetObj('dvRenderingMap');

			dvLoadDati.className = 'dvGrpShow';
			
			GDownloadUrl(poiXmlGrp1, 
				function(data, responseCode) 
				{
					CaricaPagineXMLGruppo1(data, responseCode, 1, function()
					{
						GDownloadUrl(poiXmlGrp2, 
							function(data, responseCode) 
							{
								CaricaPagineXMLGruppo2(data, responseCode, 2, MostraPOI);
							}
						);
					})
				}
			);
		}
	}
}
function CaricaPagineXMLGruppo1(data, responseCode, Grp, CallBackFunction)
{
	var xml = GXml.parse(data);
	xmlMarkGrp1 = xml.documentElement.getElementsByTagName("marker");
	xmlGrp1_TotPage = parseInt(xmlMarkGrp1.length / xmlGrp1_TotPOI);
	
	if(xmlGrp1_TotPage < (xmlMarkGrp1.length / xmlGrp1_TotPOI))
		xmlGrp1_TotPage++;

	GLogger('xmlMarkGrp1.length: ' + xmlMarkGrp1.length);
	GLogger('xmlGrp1_TotPage: ' + xmlGrp1_TotPage);

	var idxXml = 0;	
	var dvPOI = GetObj('tabPOI');
	var dvGrp = document.createElement('div');
	dvGrp.id = 'dvGrp1';
	dvPOI.appendChild(dvGrp);
	for(var p = 0; p < xmlGrp1_TotPage; p++)
	{
		var dvPag = document.createElement('div');
		dvPag.id = 'dvGrp1Pag' + p;
		if(p > 0) dvPag.className = 'dvGrpHide'
		var tbPag = document.createElement('table');
		var tbdPag = document.createElement('tbody');
		tbPag.appendChild(tbdPag);
		dvPag.appendChild(tbPag);
		dvGrp.appendChild(dvPag);
		for (var i = 0; i < xmlGrp1_TotPOI; i++)
		{
			//GLogger('p: ' + p + ' - i: ' + i);
			if(idxXml < xmlMarkGrp1.length)
			{
				var point = new GLatLng(parseFloat(xmlMarkGrp1[idxXml].getAttribute("lat")), parseFloat(xmlMarkGrp1[idxXml].getAttribute("lng")));
				var nome = xmlMarkGrp1[idxXml].getAttribute("nome");
				var poiPinIconType = xmlMarkGrp1[idxXml].getAttribute("poiPinIconType");

				var contenutoHtml = null;
				var contenutoHtmlTab2 = null;
				for (var j = 0; j < xmlMarkGrp1[idxXml].childNodes.length; j++)
				{
					if(xmlMarkGrp1[idxXml].childNodes[j].nodeType != 1) continue;
					contenutoHtml = xmlMarkGrp1[idxXml].childNodes[j].firstChild.nodeValue;
					contenutoHtmlTab2 = null;
				}			
				var objImg = eval(poiPinIconType);

				var marker = new GMarker(point, objImg);
				mrkGrp1[mrkGrp1.length] = new Array(marker, contenutoHtml, contenutoHtmlTab2);
				GEvent.addListener(marker, "click", WrapPopupGruppo1((mrkGrp1.length-1), 1));
				GEvent.addListener(marker, "infowindowopen", WrapEvidenziaGruppo1((mrkGrp1.length-1), 1));
				GEvent.addListener(marker, "infowindowclose", WrapEvidenziaGruppo1((mrkGrp1.length-1), 0));

				CreaRigaTabellaGruppo(tbdPag, objImg.image, objImg.iconSize.width, objImg.iconSize.height, nome, (mrkGrp1.length-1), 1);
			}
			idxXml++;
		}
	}
	dvLoadDati.className = 'dvGrpHide';

     

	GLogger('mrkGrp1.length: ' + mrkGrp1.length);
	if(CallBackFunction != null)
		CallBackFunction();
}
function MostraPOI()
{
	if(viewGrp == 1)
	{ 
		var dvGrp = GetObj('dvGrp1');
		dvGrp.className = '';

		var dvSelGrp = GetObj('dvSelGrp1');
		dvSelGrp.className = 'tdTipoPoiTabAttiva';
	}
	else if(viewGrp == 2)
	{ 
		var dvGrp = GetObj('dvGrp2');
		dvGrp.className = '';

		var dvSelGrp = GetObj('dvSelGrp2');
		dvSelGrp.className = 'tdTipoPoiTabAttiva';
	}
	
	ShowHidePage();
	
	dvLoadMap.className = 'dvGrpShow';
	MostraPOIGruppo1();
	MostraPOIGruppo2();
	dvLoadMap.className = 'dvGrpHide';
}

function CaricaPagineXMLGruppo2(data, responseCode, Grp, CallBackFunction)
{
	var xml = GXml.parse(data);
	xmlMarkGrp2 = xml.documentElement.getElementsByTagName("marker");
	xmlGrp2_TotPage = parseInt(xmlMarkGrp2.length / xmlGrp2_TotPOI);
	
	if(xmlGrp2_TotPage < (xmlMarkGrp2.length / xmlGrp1_TotPOI))
		xmlGrp2_TotPage++;

	GLogger('xmlMarkGrp2.length: ' + xmlMarkGrp2.length);
	GLogger('xmlGrp2_TotPage: ' + xmlGrp2_TotPage);

	var idxXml = 0;	
	var dvPOI = GetObj('tabPOI');
	var dvGrp = document.createElement('div');
	dvGrp.id = 'dvGrp2';
	dvPOI.appendChild(dvGrp);
	for(var p = 0; p < xmlGrp2_TotPage; p++)
	{
		var dvPag = document.createElement('div');
		dvPag.id = 'dvGrp2Pag' + p;
		dvPag.className = 'dvGrpHide'
		var tbPag = document.createElement('table');
		var tbdPag = document.createElement('tbody');
		tbPag.appendChild(tbdPag);
		dvPag.appendChild(tbPag);
		dvGrp.appendChild(dvPag);
		for (var i = 0; i < xmlGrp2_TotPOI; i++)
		{
			//GLogger('p: ' + p + ' - i: ' + i);
			if(idxXml < xmlMarkGrp2.length)
			{
				var point = new GLatLng(parseFloat(xmlMarkGrp2[idxXml].getAttribute("lat")), parseFloat(xmlMarkGrp2[idxXml].getAttribute("lng")));
				var nome = xmlMarkGrp2[idxXml].getAttribute("nome");
				var poiPinIconType = xmlMarkGrp2[idxXml].getAttribute("poiPinIconType");

				var contenutoHtml = null;
				var contenutoHtmlTab2 = null;
				for (var j = 0; j < xmlMarkGrp2[idxXml].childNodes.length; j++)
				{
					if(xmlMarkGrp2[idxXml].childNodes[j].nodeType != 1) continue;
					contenutoHtml = xmlMarkGrp2[idxXml].childNodes[j].firstChild.nodeValue;
					contenutoHtmlTab2 = null;
				}			
				var objImg = eval(poiPinIconType);

				var marker = new GMarker(point, objImg);
				mrkGrp2[mrkGrp2.length] = new Array(marker, contenutoHtml, contenutoHtmlTab2);
				GEvent.addListener(marker, "click", WrapPopupGruppo2((mrkGrp2.length-1), 1));
				GEvent.addListener(marker, "infowindowopen", WrapEvidenziaGruppo2((mrkGrp2.length-1), 1));
				GEvent.addListener(marker, "infowindowclose", WrapEvidenziaGruppo2((mrkGrp2.length-1), 0));

				CreaRigaTabellaGruppo(tbdPag, objImg.image, objImg.iconSize.width, objImg.iconSize.height, nome, (mrkGrp2.length-1), 2);
			}
			idxXml++;
		}
	}

	GLogger('mrkGrp2.length: ' + mrkGrp2.length);
	if(CallBackFunction != null)
		CallBackFunction();
}
function AggiornaRiepilogo()
{
	var StartPOI = 0;
	var EndPOI = 0;
	var CurPage = 0;
	var TotPage = 0;
	var MaxPOI = 0;
	
	var rgS = new RegExp('\\|S\\|');
	var rgE = new RegExp('\\|E\\|');
	var rgC = new RegExp('\\|C\\|');
	var rgT = new RegExp('\\|T\\|');

	if(viewGrp == 1)
	{
		StartPOI = (xmlGrp1_IdxPage * xmlGrp1_TotPOI) + 1;
		EndPOI = StartPOI + xmlGrp1_TotPOI - 1;
		MaxPOI = mrkGrp1.length
		CurPage = (xmlGrp1_IdxPage+1);
		TotPage = xmlGrp1_TotPage;
	}
	if(viewGrp == 2)
	{
		StartPOI = (xmlGrp2_IdxPage * xmlGrp2_TotPOI) + 1;
		EndPOI = StartPOI + xmlGrp2_TotPOI - 1;
		MaxPOI = mrkGrp2.length
		CurPage = (xmlGrp2_IdxPage+1);
		TotPage = xmlGrp2_TotPage;
	}

	if(EndPOI > MaxPOI) { EndPOI = MaxPOI; }

	var dvCont = GetObj('dvCont');
	dvCont.innerHTML = '';
	if(TotPage > 1)
	{
		var strNav = txtNav;
		strNav = strNav.replace(rgC, CurPage);
		strNav = strNav.replace(rgT, TotPage);
		dvCont.innerHTML += strNav + ' ';
	}
	var strLst = (viewGrp == 1) ? txtLstGrp1 : txtLstGrp2;
	strLst = strLst.replace(rgS, StartPOI);
	strLst = strLst.replace(rgE, EndPOI);
	strLst = strLst.replace(rgT, MaxPOI);
	dvCont.innerHTML += strLst;
}
function ChangePage(Act)
{
	if(viewGrp == 1)
	{ 
		if((Act < 0 && xmlGrp1_IdxPage > 0) || Act > 0 && (xmlGrp1_IdxPage + Act) < xmlGrp1_TotPage)
		{
			xmlGrp1_OldIdxPage = xmlGrp1_IdxPage;
			xmlGrp1_IdxPage += Act;

			ShowHidePage();

			dvLoadMap.className = 'dvGrpShow';
			MostraPOIGruppo1();
			dvLoadMap.className = 'dvGrpHide';
		}
	}
	else if(viewGrp == 2)
	{ 
		if((Act < 0 && xmlGrp2_IdxPage > 0) || Act > 0 && Act < xmlGrp2_TotPage)
		{
			xmlGrp2_OldIdxPage = xmlGrp2_IdxPage;
			xmlGrp2_IdxPage += Act;

			ShowHidePage();

			dvLoadMap.className = 'dvGrpShow';
			MostraPOIGruppo2();
			dvLoadMap.className = 'dvGrpHide';
		}
	}
}
function ShowHidePage()
{
	var dvCurPag = null;
	var dvOldPag = null;
	var TotPag = -1;
	var PrevPag = -1;
	var NextPag = -1;
	
	var blnShowSpace = false;
	var dvPaging = GetObj('dvPaging');
	var lnkPrev = GetObj('lnkPrev');
	var lnkNext = GetObj('lnkNext');
	var ltLnkSpace = GetObj('ltLnkSpace');
	
	if(viewGrp == 1)
	{
		dvCurPag = GetObj('dvGrp1Pag' + xmlGrp1_IdxPage);
		dvOldPag = GetObj('dvGrp1Pag' + xmlGrp1_OldIdxPage);
		
		TotPag = xmlGrp1_TotPage;
		PrevPag = xmlGrp1_IdxPage - 1;
		NextPag = xmlGrp1_IdxPage + 1;
	}
	else if(viewGrp == 2)
	{ 
		dvCurPag = GetObj('dvGrp2Pag' + xmlGrp2_IdxPage);
		dvOldPag = GetObj('dvGrp2Pag' + xmlGrp2_OldIdxPage);

		TotPag = xmlGrp2_TotPage;
		PrevPag = xmlGrp2_IdxPage - 1;
		NextPag = xmlGrp2_IdxPage + 1;
	}
	if(TotPag < 1)			{ dvPaging.className = 'dvGrpHide'; }
	else					{ dvPaging.className = 'dvGrpShow'; }
	if(PrevPag < 0)			{ lnkPrev.className = 'dvGrpHide'; blnShowSpace = false; }
	else					{ lnkPrev.className = 'dvGrpShow'; blnShowSpace = true; } 
	if(NextPag >= TotPag)
	{ 
		lnkNext.className = 'dvGrpHide'; 
		ltLnkSpace.className = 'dvGrpHide';
	}
	else 
	{ 
		lnkNext.className = 'dvGrpShow'; 
		if(blnShowSpace)
			ltLnkSpace.className = 'dvGrpShow';
		else
			ltLnkSpace.className = 'dvGrpHide';
	}
		
	if(dvOldPag)
		dvOldPag.className = 'dvGrpHide';
	if(dvCurPag)
		dvCurPag.className = 'dvGrpShow';
}
function MostraGruppo(Grp)
{
	viewGrp = Grp;
	for(var i = 0; i < totGrp; i++)
	{
		var dvGrp = GetObj('dvGrp' + (i+1));
		var dvSelGrp = GetObj('dvSelGrp' + (i+1));
		if(dvGrp)
		{
			dvGrp.className = 'dvGrpHide';
			if(Grp == (i+1)) { dvGrp.className = ''; }
		}
		if(dvSelGrp)
		{
			dvSelGrp.className = 'tdTipoPoiTabNonAttiva';
			if(Grp == (i+1)) { dvSelGrp.className = 'tdTipoPoiTabAttiva'; }
		}
	}
	ShowHidePage();
	AggiornaRiepilogo();
}
function WrapEvidenziaGruppo1(idxMarker, Act)
{
	return function() 
	{ 
		EvidenziaRiga(idxMarker, 1, Act);
	}
}
function WrapEvidenziaGruppo2(idxMarker, Act)
{
	return function() 
	{ 
		EvidenziaRiga(idxMarker, 2, Act);
	}
}
function EvidenziaRiga(idxMarker, Grp, Act)
{
	var idxTabRow = 0;
	var dvTab = GetObj('tabPOI');;
	var dvTabPag = null;
	
	if(Grp == 1)
	{
		idxTabRow = idxMarker - (xmlGrp1_IdxPage * xmlGrp1_TotPOI);
		dvTabPag = GetObj('dvGrp1Pag' + xmlGrp1_IdxPage);
	}
	else if(Grp == 2)
	{
		idxTabRow = idxMarker - (xmlGrp2_IdxPage * xmlGrp2_TotPOI);
		dvTabPag = GetObj('dvGrp2Pag' + xmlGrp2_IdxPage);
	}
	if(Act == 1)
	{
		var PosY = findPosY(dvTabPag.childNodes[0].childNodes[0].childNodes[idxTabRow]);
		if(dvTab.scrollTop != null)
		{
			PosY -= 402;
			if(dvTab.scrollTop > PosY) { PosY -= 20; }
			dvTab.scrollTop = PosY;
		}
		else
		{
			PosY -= 403;
			if(dvTab.scrollY > PosY) { PosY -= 50; }
			dvTab.scrollY = PosY;
		}
		dvTabPag.childNodes[0].childNodes[0].childNodes[idxTabRow].style.backgroundColor = '#DEDEDE';
	}
	else
		dvTabPag.childNodes[0].childNodes[0].childNodes[idxTabRow].style.backgroundColor = '';
}
function CreaRigaTabellaGruppo(Table, Icona, IconaWid, IconaHei, Nome, idx, Grp)
{
	var tr = document.createElement('tr');
	var tdIcona = document.createElement('td');
	var tdNome = document.createElement('td');
	
	tdIcona.className = 'tabPOI_tdIcona';
	tdNome.className = 'tabPOI_tdNome';
	
	var arVersion = navigator.appVersion.split("MSIE")
	var version = parseFloat(arVersion[1])

	if ((version >= 5.5) && (document.body.filters)) 
	{
		tdIcona.innerHTML = '<span style="width: ' + IconaWid+ 'px; height: ' + IconaHei+ 'px; display:inline-block; filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\'' + Icona + '\', sizingMethod=\'scale\');"></span>';
	}
	else
	{
		tdIcona.innerHTML = '<img src="' + Icona + '" border="0" alt="0">';
	}
	
	tdNome.innerHTML = '<a href="javascript:CreaInfoPopup(' + idx + ', ' + Grp + ');">' + Nome + '</a>';
	
	tr.appendChild(tdIcona);
	tr.appendChild(tdNome);
	Table.appendChild(tr);

}
//]]>