tableWidth = 600;
tableHeight = 337;
// dimensione zoom
var tableWidthMax = 900;
var tableHeightMax = 505;

var swfWidth = "100%";
var swfHeight = "100%";
var playerScale = "Showall";
var mapHeightGlobal;
var mapWidthGlobal;
var playerType = 'leftPlayer';

var g_playerIsOpen = false;
var seatMap;
var g_marker;
var BusinessMarker;
var g_isIE = false;
var windowInfo;
var windowInfoOpen = true;
var addressMap;

var g_playerReady = false;
var g_movePending = false;
var g_move = null;

var zoomIndoor = false; // abilita bisabilita lo zoom sugli indoor
var zoomInit = 0;
var markerIndoor;
var mapIndoor;
var zoomIndoorExpand = true;
var mapInternalView = false;
var startPreviewIcon = 17;
var margin;
var footerMargin;
var internalView = new Array();
var zindexClick = false;
var category_filter;
var alphabetOrderPoi = '';
var alphabetOrderPoiBusiness = '';
var categoryFilterBusiness = 0;

var player_top = 102;
var player_left = 220;
var zoomed = false;
var markerMove = false;
index = 0;
var rand_no = Math.random();
var control = false;

var pgPolyline1;
var drawPoiPercorsi = false;
var drawFreeBreak = false;
var drawCustomBreak = false;
var drawBusinessCenter = false;
var requester = '';
var requesterBusiness = '';
var g_poiListIDBusiness = [];	// ci metto la lista dei POI BUSINESS
var g_poiListMarkerBusiness = [];	// ci metto la lista dei POI BUSINESS
var g_poiListID = [];	// ci metto la lista dei POI
var g_poiListMarker = [];	// ci metto la lista dei POI
var g_freepoiListID = [];	// ci metto la lista dei POI free
var g_freepoiListMarker = [];	// ci metto la lista dei POI free
var	g_poiCustomListID = [];  // la lista poi con icone numerato
var	g_poiCustomListMarker = []; // la lista poi con icone numerato
var MAX_POI_LIST = 200;
var g_poiZoom = -1;	// mi salvo lo zoom per fare il refresh
var sponsroMode = false //variabile per attivare gli sponsor

var dynamic_icon = new Array();
dynamic_icon [1] = new Array(120,110,0,0);//ok
dynamic_icon [2] = new Array(120,110,50,0); // ok
dynamic_icon [3] = new Array(147,97,72,0); // ok
dynamic_icon [4] = new Array(162,78,78,40);//ok
dynamic_icon [5] = new Array(148,104,65,98); //ok
dynamic_icon [6] = new Array(120,118,30,118);// ok
dynamic_icon [7] = new Array(120,110,-25,0); // ok
dynamic_icon [8] = new Array(137,97,-60,0); //ok
dynamic_icon [9] = new Array(150,79,-75,40);// ok
dynamic_icon [10] = new Array(137,104,-60,104); //ok
dynamic_icon [11] = new Array(121,118,-30,118); // ok
dynamic_icon [12] = new Array(120,118,0,118);//ok

var id_comune;
var geocoder;
var address;
var actualPolyline;

// per limitare la rotazione del player su alcuni interni
var limitRotation = false;

// variabile per il reset del drag&drop nelle pan
var resetPan = false;
var mouseX = 0;
var mouseY = 0;
var plainingOpen = false;
var zoomPlaning = 1;
// setto i nodi da richiedere
var navDepth = 9;

var absoluteLocation = 'http://360map.it/';
//var g_playerName = "../../player/seetyPlayer.swf?editor=1&floorNav=1&floorView=1&floorThreshold=20000&floor2Map=1&clipz=10&rotxlimit=0.8&audioToggle=0&overlay=1&debugJS=0&radarmap2d=1&radarmap3d=0&r3zoom=0.038&navdepth=36&texturedepth=2&new=1";
var g_playerName = "../../player/seetyPlayerV2.swf?&hotspoticonpath=http://maps.veniceconnected.it/icon/&hotspoticonname=HotSpotDemo_3b.PNG&serverPath=http://maps.veniceconnected.it/ws&overlay=1&loadPOI=1&buttons=1&photo=1&virtualKeyboard=0&mapZoom=100&fov=270&damp=0.3&pauseReq=1&gMaps=1&radarmap2d=0radarmap3d=0&clipz=10&clipn=0&floorNav=1&floorThreshold=20000&navdepth="+navDepth+"&doorNav=1&rand=" + rand_no;
var playerCode = '\
<div id="seetyPlayerContainer">\
				<table id="seetyPlayerTable" style="background-color:#C8D1D6;">\
				<tr><td height="15"><div style="background-image: url(../../images/toolbar.png);">\
				<div id="reversegeocod" style="top:4px;margin-right:32px;"></div>\
				<div style="top:0;right:0;position:absolute!important;margin-right:5px;">\
				<img src="../../images/newplayerclose.png" title="' +tooltip_chiudi+ '" class="over" name="closepl" onclick="playerClose();" onmouseover="document.closepl.src=\'../../images/newplayercloseover.png\'" onmouseout="document.closepl.src=\'../../images/newplayerclose.png\'"/>\
				</div>\
				<div style="top:0;left:0;position:absolute!important;margin-left:5px;" id="seetyPlayerTable_tool">\
				<div id="detailsinternal"></div><div id="toolbar">\
				<img title="' +tooltip_segnala+ '" src="../../images/segnala.png" class="over" name="segnala" onclick="winLink.show(\'animation\');" onmouseover="document.segnala.src=\'../../images/segnalaover.png\'" onmouseout="document.segnala.src=\'../../images/segnala.png\'"/>\
				<img title=\'scattafoto\' src="../../images/camera.png" class="over" name="camera" onclick="winOtherLink.show(\'animation\');" onmouseover="document.camera.src=\'../../images/cameraover.png\'" onmouseout="document.camera.src=\'../../images/camera.png\'"/>\
				<img title="' +tooltip_aggiungipoi+ '" src="' +img_aggiungipoi+ '" class="over" name="addpoi" onclick="winPhoto.show(\'animation\');" onmouseover="' +img_aggiungipoiover_+ '" onmouseout="' +img_aggiungipoi_+ '"/></div>\
					<tr>\
						<td id ="playerCell" width="' + tableWidth + 'px" height="' + tableHeight + 'px">\
							<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" width="' +swfWidth +'" height="' +swfHeight +'" id="gmaps" align="middle">\
								<param name="allowScriptAccess" value="sameDomain" />\
								<param name="wmode" value="transparent" />\
 								<param name="allowFullScreen" value="true" />\
								<param name="scale" value="' +playerScale +'" />\
								<param name="movie" value="' +g_playerName +'" /><param name="quality" value="high" /><param name="bgcolor" value="#ffffff" />\
								<embed id="embed" allowFullScreen="true" wmode="transparent" src="' +g_playerName +'" quality="high" bgcolor="#666666" width="' +swfWidth +'" height="' +swfHeight +'" name="gmaps" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" scale="' +playerScale +'"/>\
							</object>\
						</td>\
					</tr>\
				</table>\
				<div id="mapIndoor_container">\
				<div id="mapIndoor_openup"><a href="javascript:resizePlayerMap(\'leftPlayer\')" ><img src="/images/freccia11.gif" alt="closer" border="0" id="indoorOpenUp" /></a></div>\
				<div id="mapIndoor_openleft"><a href="javascript:resizePlayerMap(\'topPlayer\')" ><img src="/images/freccia7.gif" alt="closer" border="0" id="indoorOpenLeft" /></a></div>\
				<div id="mapIndoor_closer"><a href="javascript:resizeMapIndoor()" ><img src="/images/freccia3.gif" alt="closer" border="0" id="indoorExpand" /></a></div>\
			<div id="mapIndoor" name="mapIndoor"></div>\
		</div>\
			<div id="poi_indoor_list_col"></div>\
			<div id="poi_indoor_text_row"></div>\
			</div>\
			';


function createSwfDiv(_map){
    var elem = document.getElementById("seetyPlayer");
    elem.innerHTML = playerCode;
    if (_map != undefined) {
        playerSetPos(player_left, player_top); 
        playerHide();
    }
}

function playerSetPos(x, y){
    var elem = document.getElementById("seetyPlayer");
    elem.style.top = y.toString() + "px";
    elem.style.left = x.toString() + "px";
}

function playerHide(){
	resizePlayerMap('closePlayer');

    var elem = document.getElementById("seetyPlayer");
   /* if (g_isIE && parseInt($.browser.version, 10) < 9) {
        elem.style.zIndex = -1;
    }
    else {*/
        elem.style.visibility = "hidden";
}

function playerUnhide(){
	resizePlayerMap(playerType);
    var elem = document.getElementById("seetyPlayer");
    /*if (g_isIE && parseInt($.browser.version, 10) < 9) {
        elem.style.zIndex = 99;
    }
    else {*/
        elem.style.visibility = "visible";
        elem.style.zIndex = 3;
   // }

}

function playerOpen(_point, _rot, _v, _map, poi_id){
		
		if (sponsroMode) sponsorManager('hide');
        // cerco il pixel sul bordo del player in basso
		
        //panToMap(_point, zoomed);
		//verifico se ho il tooltip info aperto
		if (windowInfoOpen){
			windowInfoOpen = false;
			seatMap.removePoint(windowInfo);
		}
		//if(mapInternalView) resizePlayerMap();
		
		getAddress(_point);        
		if (poi_id != 0) {
            position = getUV(poi_id);
        }
        else {
            position = new Array();
            position[0] = -1;
            position[1] = .5;
            getUV('undefined');
        }
		internalView = position;
		internalView['internalid'] = poi_id;
		if (!g_playerIsOpen)
			playerUnhide();
        g_playerIsOpen = true;
        getFocus();	

		if (internalView['internalview'] == 1) {
			mapInternalView = true;
			resizePlayerMap('internalPlayer');	
		}
		else {
			resizePlayerMap(playerType);
		}
		asGoLatLong(_point.lat, _point.lon, position[0], position[1], 270);

		//panToMap(_point);
    
}

function playerOpenUserGen(lat, lng, u, v,id,internalid,internal){
		if (seatMap.getZoom().z > 0) {
			seatMap.setCenterPoint({lon:lng, lat:lat});
			seatMap.setZoom(0);
		}
		g_marker.setLonLat(lng, lat);
			
        playerUnhide();
		g_playerIsOpen = true;
		markerMove = true;
        asGoLatLong(lat, lng, u, v,270);
		
        getFocus();
		if (internal) {
			resizePlayerMap('internalPlayer');
			getInternalView(id)
			getInternalViewComment(internalid);
		}
}



function panToMap(point){
	var actualXy = seatMap.getPixelFromLonLat(g_marker.lon, g_marker.lat);
	//if (isUnderPlayer) 

	seatMap.panMapBy((+370-actualXy.x),(+430-actualXy.y));
   
    //g_map.panTo(point);
    //g_marker.setLonLat({lon:g_marker.lon, lat:g_marker.lat});
}

function isUnderPlayer(){

	var actualXy = seatMap.getPixelFromLonLat(g_marker.lon, g_marker.lat);
	if (!zoomed && actualXy.x > 70 && actualXy.x < 680 && actualXy.y < 300) 
		return true;
	else 
		return false;	
}

function mapInit(lat, lng, zoomStart, comune,topMargin,left,marginBorder,iconPreview,businessCenter,u, v, _open, internalDirect){
	zoomInit = zoomStart;
	startPreviewIcon = iconPreview;
	if (businessCenter)
		drawBusinessCenter = true;
		
    if (navigator.appName.indexOf("Microsoft") != -1) {
        g_isIE = true;
		requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
    else {
        g_isIE = false;
		requester = new XMLHttpRequest();
    }
	id_comune = comune;
	player_top = topMargin;

	margin = marginBorder;
	if (margin == 'undefined') margin = 302;
    
		mapHeightGlobal = document.documentElement.clientHeight-player_top-50;
		/*mapHeightGlobal = document.documentElement.clientHeight-player_top-60;*/
		mapWidthGlobal = document.documentElement.clientWidth-margin;
        // metto anche lo zindex del map a 2
        var mapElem = document.getElementById("map");
        mapElem.style.zIndex = 2;
        var map = new PGMappy({
			nameContainer: 'map',
			mapWidth: mapWidthGlobal, 
			mapHeight: mapHeightGlobal,
			z:zoomStart,            
			mapType:PGMAP_TYPE_MAP,
			imgType: PGMAP_IMG_TYPE_LIGHT,
			minMapLevel: PGMAP_ZOOM_PAVEMENT_INTRA_STREET
		});
		seatMap = map;
		addZoom();
		createSwfDiv(seatMap);
		//addZoom();
		var mapElem = document.getElementById("mapIndoor");
		var mapElemContainer = document.getElementById("mapIndoor_container");
		mapElemContainer.style.zIndex = 0;
		mapElem.style.zIndex = 0;
		mapElem.style.display = 'none';
		var map = new PGMappy({
			nameContainer: 'mapIndoor',
			mapWidth: 300, 
			mapHeight: 280, 
			z:0,
			mapType:PGMAP_TYPE_MAP,
			imgType: PGMAP_IMG_TYPE_LIGHT,
			minMapLevel: PGMAP_ZOOM_PAVEMENT_INTRA_STREET
		});
		mapIndoor = map;
		
		g_marker = new PGPoint({ 
			lon:lng,
		    lat:lat,
			zIndex: 998,
		    html:'<div class="poimarker-sv-container" id="marker1" ></div>',
			offsetX:0, 
			offsetY:32,
            width: '64px',
            height: '64px'
			
		});

		markerIndoor = new PGPoint({ 
			lon:lng,
		    lat:lat,
		    html:'<div class="poimarker-sv-container" id="marker2"></div>',
			offsetX:0, 
			offsetY:32,
            width: '64px',
            height: '64px'
			
		});
		
		
		windowInfo = new PGPoint({ 
			lon:lng,
		    lat:lat,
			zIndex: 999,
			html: fumetto_iniziale	
		});
				
		seatMap.setCenterPoint({lon:lng, lat:lat});
	 	seatMap.pointAdder(g_marker);
		mapIndoor.setCenterPoint({lon:lng, lat:lat});
		mapIndoor.pointAdder(markerIndoor);
		//seatMap.pointAdder(windowInfo);
		

		lastIconIndex = 0;
		category_filter = new Array(0);
		if (_open == undefined) {
            _open = false;
        }
		
        if (_open) {
            playerOpen({lon:g_marker.lon, lat:g_marker.lat}, u, v, map, internalDirect, true);
            panToMap({lon:g_marker.lon, lat:g_marker.lat});
			if (internalDirect) {
				internalView['internalid'] = internalDirect;
				mapInternalView = true;
				resizePlayerMap('internalPlayer');
			}
        }
		

	PGEvent.addListener(seatMap, 'click', function(data) {
		markerMove = true;
		
		if ($("#dialog").dialog("isOpen")) $('#dialog').dialog('close');		
		if (zindexClick) {
			zindexClick = false;
			return false;
		}
		/* necessaria per capire se siamo in un interno oppure no
		$.getJSON("/ws/gpscamera.action?init", { latitude: data.lat, longitude: data.lon },
		function(response){
		     alert(response.cityName);
		});
		*/	
		
		if (!mapInternalView) 
			resizePlayerMap(playerType);		

		if (mapInternalView) {
			resetInternalView();
			resizePlayerMap(playerType);		
		}


		if (windowInfoOpen){
			windowInfoOpen = false;
			seatMap.removePoint(windowInfo);
		}
		
		g_marker.setLonLat(data.lon, data.lat);
		markerMove = true;
		if (g_playerIsOpen) {
           asGoLatLong(data.lat,data.lon,-1,.5);
        }
        else {
            playerOpen({lon:data.lon, lat:data.lat}, -1, .5, map, 0);
        }		
	});
	
		
	
	PGEvent.addListener(mapIndoor, 'click', function(data) {
		asGoLatLong(data.lat,data.lon,-1,.5,270);		
		markerIndoor.setLonLat(data.lon, data.lat);
	});	
	
	PGEvent.addListener(seatMap, 'zoomafter', function(data) {
		if (!drawPoiPercorsi)
			clearPOI();
		clearPOIBusiness();
		clearFreePOI();
        drawCustomPoi();
		if (windowInfoOpen){
			windowInfoOpen = false;
			seatMap.removePoint(windowInfo);
		}		
	});
	

	PGEvent.addListener(seatMap, 'mouseupmapafter', function(data) {
        markerMove = true;
        drawCustomPoi();
		if (windowInfoOpen){
			windowInfoOpen = false;
			seatMap.removePoint(windowInfo);
		}		
	});
	
	PGEvent.addListener(g_marker, 'click', function(data) {

	});
	
	
	//findPoi(id_comune,0, alphabetOrderPoi);
}

function closewindowInfo(){
	if (windowInfoOpen){
		windowInfoOpen = false;
		seatMap.removePoint(windowInfo);
	}
}

function getAddress(latlng) {
  if (latlng != undefined) {
    geocoder = new PGGeoRevCod({lon:latlng.lon,lat:latlng.lat,onComplete:'afterGeoRevCod'});
  }
}

function afterGeoRevCod(pgAddressRev) {
  if (pgAddressRev) {
  	var a;
  	if (typeof(pgAddressRev.nc) != 'undefined') var a = pgAddressRev.nc +',';
	if (typeof(pgAddressRev.toponimo) != 'undefined') var a = a+' '+pgAddressRev.toponimo +',';
	if (typeof(pgAddressRev.com) != 'undefined') var a = a+' '+pgAddressRev.com +',';
	if (typeof(pgAddressRev.prov) != 'undefined') var a = a+' '+pgAddressRev.prov;
    document.getElementById("reversegeocod").innerHTML = a.replace('undefined', '');
	addressMap = a.replace('undefined', '');
  }
}

function drawCustomPoi(actualFilter){
	if (drawCustomBreak) {
		if (drawBusinessCenter) drawBusiness();
		 return false;
	}
	zoom = seatMap.getZoom().z;
	var box = seatMap.getMapBounds();
	control = false;

	swlat = box.botLeft.lat;
	nelng = box.topRight.lon;
	nelat = box.topRight.lat;
	swlng = box.botLeft.lon;

	
	if(category_filter != actualFilter && actualFilter != undefined) {
		clearPOI();
		dynamic_filter = '&category_selected='+actualFilter;
		category_filter = actualFilter;
		//findPoi(id_comune,0, alphabetOrderPoi);
	} else if (category_filter == '' && actualFilter == undefined){
		dynamic_filter = '';
	} 
	
	//(alphabetOrderPoi != '') ? poiAlphaFilter = '&poialphafilter='+alphabetOrderPoi: poiAlphaFilter = '';
	
	if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
	
	requester.onreadystatechange = function()
	{
		if (requester.readyState==4)
		{
			// se la lista e' troppo lunga ne tolgo un po'
			checkPOIList();
			
			var poiNode = requester.responseXML.getElementsByTagName("poi");
			drawPoi(poiNode, requester);
		}
	}
	
			
	//requester.open('GET', '/?c=general&m=get_poi_comuni&seat=true'+poiAlphaFilter+dynamic_filter+'&swlat='+swlat+'&swlng='+swlng+'&nelat='+nelat+'&nelng='+nelng+'&id_comune='+id_comune+'&zoom='+zoom, true);
	requester.open('GET', '/?c=general&m=get_poi_comuni&seat=true'+dynamic_filter+'&swlat='+swlat+'&swlng='+swlng+'&nelat='+nelat+'&nelng='+nelng+'&id_comune='+id_comune+'&zoom='+zoom, true);
	requester.send(null);
	drawPublicUserPoi();
	

	if (actualFilter != undefined && actualFilter < 9999 ) {
		$.get("/?c=general&m=get_poi_comuni", {category_selected: actualFilter,seat: 'true', swlat: swlat, swlng: swlng, nelat: nelat, nelng:nelng, id_comune: id_comune, zoom: 0, search: 'true'},
		   function(data){
			 $("#livesearch").html(data);
			 $("#livesearch").css('visibility', 'visible');
		});	
	}
/*
	findPoi(id_comune,0, alphabetOrderPoi);
	if (!drawBusinessCenter) {
		 return false;
	}else {	
		drawBusiness();
	}*/
	
}

function drawPublicUserPoi() {
	
	if (zoom > 0) return false;	
	if (drawFreeBreak) return false;
	
	var box = seatMap.getMapBounds();
	swlat = box.botLeft.lat;
	nelng = box.topRight.lon;
	nelat = box.topRight.lat;
	swlng = box.botLeft.lon;
	
	if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
	
	requester.onreadystatechange = function()
	{
		if (requester.readyState==4)
		{
			// se la lista e' troppo lunga ne tolgo un po'
			checkFreePOIList();
			var poiNode = requester.responseXML.getElementsByTagName("poifree");
			for (var i=0; i<poiNode.length; i++) 
			{

				// uso questo come id univoco (spero che sia giusto)
				var id = requester.responseXML.getElementsByTagName("id")[i].childNodes[0].nodeValue;
								
				if (jQuery.inArray(id,g_freepoiListID)>=0)
				{
					continue;
				}

				var latitude = requester.responseXML.getElementsByTagName("latitude")[i].childNodes[0].nodeValue;
				var longitude = requester.responseXML.getElementsByTagName("longitude")[i].childNodes[0].nodeValue;
				var rotU = requester.responseXML.getElementsByTagName("u")[i].childNodes[0].nodeValue;	
				var rotV = requester.responseXML.getElementsByTagName("v")[i].childNodes[0].nodeValue;					
				var title = requester.responseXML.getElementsByTagName("title")[i].childNodes[0].nodeValue;
				var photo = requester.responseXML.getElementsByTagName("photo")[i].childNodes[0].nodeValue;
				var wiki = requester.responseXML.getElementsByTagName("wiki")[i].childNodes[0].nodeValue;
				var iconFree;
				if (wiki == 'false') {
					iconFree = 'poi_utenti_free.png';
					offsetIconX = 0;
					offsetIconY = 4;
				} else {
					iconFree = 'wiki.png';
					offsetIconX = 0;
					offsetIconY = 10;
				}
				var customicon = '<div class="customicon" onclick="openPlayerComment('+latitude+','+longitude+','+rotU+','+rotV+','+id+')" onmouseover="Tip(\'<img src=/associati/images/'+document.getElementById('city').value+'/' + photo + ' WIDTH=100 /><br/>'+addslashes(title)+'\', BGCOLOR, \'#FFFFFF\',OPACITY,90, FONTCOLOR, \'#000000\', BORDERCOLOR, \'#666666\', WIDTH, 100)" onmouseout="UnTip()"><img src="/icon/marker/'+iconFree+'" /></div>';
				//var customicon = "<div class='customicon' onclick=\"openPlayerComment("+latitude+","+longitude+","+rotU+","+rotV+","+id+")\" onmouseover=\"Tip(\""+title+"\")\"; onmouseout='UnTip()'><img src=/icon/marker/"+iconFree+" /></div>";

				var freemarker = new PGPoint({ 
					lon:longitude,
				    lat:latitude,
					html:customicon,
					id: id,
					offsetX:offsetIconX, 
					offsetY:offsetIconY
				});
				
				freepoi = freemarker;
				PGEvent.addListener( freepoi, 'click', function(event,id){ 
					markerMove = false;
					zindexClick = true;
					poi_id = event.id;
					//playerOpen({lon:this.lon, lat:this.lat}, -1, .5, seatMap, poi_id);
											
				}, freepoi);
					
				
				g_freepoiListMarker.push(freepoi);
				g_freepoiListID.push(id);
				seatMap.pointAdder(freepoi);
			};
		}
	}
	
			
	requester.open('GET', '/?c=general&m=getFreePoi&swlat='+swlat+'&swlng='+swlng+'&nelat='+nelat+'&nelng='+nelng+'&id_comune='+id_comune, true);
	requester.send(null);		
	
}

function selectAlphabetServizi(letter) {
	clearPOI();
	alphabetOrderPoi = letter;
	drawCustomPoi();	
	findPoi(id_comune,0, alphabetOrderPoi);
}


function drawBusiness(){
		if (window.XMLHttpRequest) {
	        var requesterBusiness = new XMLHttpRequest();
	    } else {
	            var requesterBusiness = new ActiveXObject('MSXML2.XMLHTTP.3.0');
	    }

		var actualFilterBusiness = document.getElementById("selectsponsor").options[document.getElementById("selectsponsor").selectedIndex].value;	
		if(categoryFilterBusiness != actualFilterBusiness) {
			clearPOIBusiness();
			dynamicFilterBusiness = '&category='+actualFilterBusiness;
			categoryFilterBusiness = actualFilterBusiness;
		} else if (categoryFilterBusiness == 0 && categoryFilterBusiness == actualFilterBusiness){
			dynamicFilterBusiness = '';
		}	
		
		(alphabetOrderPoiBusiness != '') ? poiBusinessAlphaFilter = '&poialphafilter='+alphabetOrderPoiBusiness : poiBusinessAlphaFilter = '';
	
		requesterBusiness.onreadystatechange = function()
		{
			if (requesterBusiness.readyState==4)
			{
				// se la lista e' troppo lunga ne tolgo un po'
				checkPOIListBusiness();
		
				var poiNode = requesterBusiness.responseXML.getElementsByTagName("poibusiness");
				for (var i=0; i<poiNode.length; i++) 
				{
					// uso questo come id univoco (spero che sia giusto)
					var idNode = requesterBusiness.responseXML.getElementsByTagName("id")[i];
					var idTextNode = idNode.childNodes[0]; 
					var id = idTextNode.nodeValue;
									
					if (jQuery.inArray(id,g_poiListIDBusiness)>=0)
					{
						continue;
					}
					
					var latitudeNode = requesterBusiness.responseXML.getElementsByTagName("latitude")[i];
					var latitudeTextNode = latitudeNode.childNodes[0]; 
					var latitude = latitudeTextNode.nodeValue;
					var longitudeNode = requesterBusiness.responseXML.getElementsByTagName("longitude")[i];
					var longitudeTextNode = longitudeNode.childNodes[0]; 
					var longitude = longitudeTextNode.nodeValue;
					
					var titleNode = requesterBusiness.responseXML.getElementsByTagName("title")[i];
					var titleTextNode = titleNode.childNodes[0];
					var title = titleTextNode.nodeValue;

					var address = requesterBusiness.responseXML.getElementsByTagName("address")[i].childNodes[0].nodeValue;
					var proprieta = requesterBusiness.responseXML.getElementsByTagName("proprieta")[i].childNodes[0].nodeValue;
					var cap = requesterBusiness.responseXML.getElementsByTagName("cap")[i].childNodes[0].nodeValue;
					var municipality = requesterBusiness.responseXML.getElementsByTagName("municipality")[i].childNodes[0].nodeValue;
					var web = requesterBusiness.responseXML.getElementsByTagName("web")[i].childNodes[0].nodeValue;
					var phone = requesterBusiness.responseXML.getElementsByTagName("phone")[i].childNodes[0].nodeValue;					
					
					var iconX = 9;
					var iconY = 9;
					var anchorX = 0;
					var anchorY = 4.5;
		
					var timeNode = requesterBusiness.responseXML.getElementsByTagName("time")[i];
					var timeTextNode = timeNode.childNodes[0]; 
					var time = timeTextNode.nodeValue;
					//var point = new GLatLng(latitude,longitude);
					//icon = new GIcon();
					if (zoom <= 3) 
					{
						//icon.image = "/icon/poibusiness/business.png";
			        	//icon.iconSize = new GSize(iconX, iconY);
			        	//icon.iconAnchor = new GPoint(anchorX, anchorY);
			        	//icon.infoWindowAnchor = new GPoint(9, 2);
						control = true;
					} 
				
					if (control) 
					{
						BusinessMarker = markerBusiness;
						var markerBusiness = new PGPoint({ 
							lon:longitude,
						    lat:latitude,
						    html:"<div class='customicon'><img src='/icon/poibusiness/business.png' /></div>",
							id: id,
							offsetX:anchorX, 
							offsetY:anchorY
						});
						
						BusinessMarker = markerBusiness;
						//BusinessMarker.setId(id);
						//BusinessMarker.setTooltip("<div class='markertooltip'>" + title+"</div>");
					}
					//BusinessMarker.setTooltip("<div class='markertooltipDetail'>" + title+"<br/>"+proprieta+"<br/>"+address+"<br/>"+cap+" "+municipality+"<br/>"+web+"<br/>Tel. "+phone+"</div>");

					if (control) 
					{

	   					PGEvent.addListener( BusinessMarker, 'click', function(event,id){ 
							markerMove = false;
							zindexClick = true;
							//if (g_playerIsOpen) playerClose();
								playerOpen({lon:this.lon, lat:this.lat}, -1, .5, seatMap, 0, true);
							showBusinessInfo('/?c=general&m=getBusinessInfo&id='+event.id);					
					
						}, BusinessMarker);
										
						g_poiListMarkerBusiness.push(BusinessMarker);
						g_poiListIDBusiness.push(id);
						seatMap.pointAdder(BusinessMarker);
						
					}
				};
			}
		}		
		requesterBusiness.open('GET', '/?c=general&m=getBusinessPoi&seat=true'+poiBusinessAlphaFilter+dynamicFilterBusiness+'&swlat='+swlat+'&swlng='+swlng+'&nelat='+nelat+'&nelng='+nelng+'&id_comune='+id_comune+'&zoom='+zoom, true);
		requesterBusiness.send(null);
		
		findSponsor(id_comune,0, alphabetOrderPoiBusiness);		
			
}

function selectAlphabetBusiness(letter) {	

	clearPOIBusiness();
	alphabetOrderPoiBusiness = letter;
	drawBusiness();	
}

function checkPOIList()
{
	if (zoom != g_poiZoom) {
		clearPOI();
		g_poiZoom = zoom;
	}
	else {
		var dif = g_poiListID.length - MAX_POI_LIST;
		if (dif > 0) {
			for (var i = 0; i < dif; i++) {
				g_map.removeOverlay(g_poiListMarker[i]); // lo tolgo dalla mappa
				g_poiListID.shift(); // e dalle liste
				g_poiListMarker.shift();
			}
		}
	}
}

function checkFreePOIList()
{
	if (zoom > 0) {
		clearFreePOI();
	}
	else {
		var dif = g_freepoiListID.length - MAX_POI_LIST;
		if (dif > 0) {
			for (var i = 0; i < dif; i++) {
				g_map.removeOverlay(g_poiListMarker[i]); // lo tolgo dalla mappa
				g_freepoiListID.shift(); // e dalle liste
				g_freepoiListMarker.shift();
			}
		}
	}
}


function checkPOIListBusiness()
{
	if (zoom != g_poiZoom) {
		clearPOIBusiness();
		g_poiZoom = zoom;
	}
	else {
		var dif = g_poiListIDBusiness.length - MAX_POI_LIST;
		if (dif > 0) {
			for (var i = 0; i < dif; i++) {
				g_map.removeOverlay(g_poiListMarkerBusiness[i]); // lo tolgo dalla mappa
				g_poiListIDBusiness.shift(); // e dalle liste
				g_poiListMarkerBusiness.shift();
			}
		}
	}
}


function clearPOI()
{
	for (var i = 0; i < g_poiListID.length; i++) {
		seatMap.removePoint(g_poiListMarker[i]); // lo tolgo dalla mappa
	}
	g_poiListID = [];
	g_poiListMarker = [];
	//g_map.clearOverlays();
	//refreshIcon();
}

function clearPOICustom()
{
	for (var i = 0; i < g_poiCustomListID.length; i++) {
		seatMap.removePoint(g_poiCustomListMarker[i]); // lo tolgo dalla mappa
	}
	g_poiCustomListID = [];
	g_poiCustomListMarker = [];

}

function clearFreePOI()
{
	for (var i = 0; i < g_freepoiListID.length; i++) {
		seatMap.removePoint(g_freepoiListMarker[i]); // lo tolgo dalla mappa
	}
	g_freepoiListID = [];
	g_freepoiListMarker = [];
}

function clearPOIBusiness()
{
	for (var i = 0; i < g_poiListIDBusiness.length; i++) {
		seatMap.removePoint(g_poiListMarkerBusiness[i]); // lo tolgo dalla mappa
	}
	g_poiListIDBusiness = [];
	g_poiListMarkerBusiness = [];
}


function refreshIcon(){
    g_map.addOverlay(g_marker);
    if (index >= 10) {
        g_marker.setImage("http://giovanni.rovatti.googlepages.com/pic" + index + ".png");
    }
    else {
        g_marker.setImage("../../images/cursore/pic0" + index + ".png");
    }
    
}

function getUV(poi){
    if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
    requester.open('GET', '/?c=general&m=getUV&poi_selected=' + poi, false);
    requester.send(null);
    var poiNode = requester.responseXML.getElementsByTagName("poi");
    var uNode = requester.responseXML.getElementsByTagName("u")[0];
    var uTextNode = uNode.childNodes[0];
    var u = uTextNode.nodeValue;
    var vNode = requester.responseXML.getElementsByTagName("v")[0];
    var vTextNode = vNode.childNodes[0];
    var v = vTextNode.nodeValue;
    UV = new Array();
    UV[0] = u;
    UV[1] = v;
	UV['lat'] = requester.responseXML.getElementsByTagName("lat")[0].childNodes[0].nodeValue;
	UV['lon'] = requester.responseXML.getElementsByTagName("lon")[0].childNodes[0].nodeValue;	
	UV['directindoor'] = requester.responseXML.getElementsByTagName("directindoor")[0].childNodes[0].nodeValue;
	UV['internalview'] = requester.responseXML.getElementsByTagName("internalview")[0].childNodes[0].nodeValue;	
	UV['latinternal'] = requester.responseXML.getElementsByTagName("latinternal")[0].childNodes[0].nodeValue;
	UV['lnginternal'] = requester.responseXML.getElementsByTagName("lnginternal")[0].childNodes[0].nodeValue;
	UV['uinternal'] = requester.responseXML.getElementsByTagName("uinternal")[0].childNodes[0].nodeValue;
	UV['vinternal'] = requester.responseXML.getElementsByTagName("vinternal")[0].childNodes[0].nodeValue;
	UV['client'] = requester.responseXML.getElementsByTagName("client")[0].childNodes[0].nodeValue;
	UV['status'] = requester.responseXML.getElementsByTagName("status")[0].childNodes[0].nodeValue;			
    return UV;
}


function playerClose(){
    var player = thisMovie("gmaps");
	player.hidePano();
    player.poiSetEditState(0);
    playerHide();
    g_playerIsOpen = false;
	plainingOpen = false;
    zoomed = false;
	hideMapIndoor();
	zoomIndoor = false;
	zoomIndoorExpand = true;
	resetInternalView();
	//document.getElementById('indoorExpand').src = "/images/freccia1.gif";
}

function asGoLatLong(param1, param2, _param3, _param4,param5){
	if (limitRotation) {
		limitRotation = false;
	        var movie = thisMovie("gmaps");
			movie.setRotyLimits(-360,360);		
	}	
	if (param5==undefined)
	{
		param5 = -1;
	}

	if (typeof _param3=='string')
	{
		param3 = parseFloat(_param3);
	}
	else
	{
		param3 = _param3;
	}
	if (typeof _param4=='string')
	{
		param4 = parseFloat(_param4);
	}
	else
	{
		param4 = _param4;
	}

    if (g_playerReady) {
        var movie = thisMovie("gmaps");
        movie.goLatLong(param1, param2, param3, param4,param5, "");
    }
    else {
        g_movePending = true;
        g_move = new Array(param1, param2, param3, param4, param5, "");
    }
}

function thisMovie(movieName){
    if (g_isIE && parseInt($.browser.version, 10) < 9){

        return window[movieName]
    }
    else {
        return document[movieName]
    }
}

function getFocus(){
    document.getElementById("gmaps").focus();
}

function asMaximize(){
    maximizePano();
}

function asClose(){
    playerClose();
}

function maximizePano(){
	
var elem = document.getElementById("playerCell");
    if (!zoomed) {
        elem.width = tableWidthMax;
        elem.height = tableHeightMax;
        zoomed = true;
    }
    else {
        elem.width = tableWidth;
        elem.height = tableHeight;
        zoomed = false;
    }
    
    var _point = g_marker.getLatLng();
    panToMap(_point);
}

function mapMoveTo(_lat, _lng){

    if (!g_playerIsOpen) {
        return;
    }

	if (plainingOpen) daLonLatAPixels(_lng, _lat);
	
    //if (markerMove) {

		var lat = parseFloat(_lat);
	    var lng = parseFloat(_lng);
		seatMap.setCenterPoint({lon: lng,lat: lat});
		g_marker.setLonLat(lng,lat);
		if (zoomIndoor){
		        markerIndoor.setLonLat(lng,lat);
				mapIndoor.setCenterPoint({
					lon: lng,
					lat: lat
				});		
		}	

		getAddress(point);	
    //}

}

function coordsNotInMap(){
    
    if (seatMap) {
        playerClose();
       	windowInfo = new PGPoint({ 
			lon:g_marker.lon,
		    lat:g_marker.lat,
			zIndex: 999,
			html:alert_zona_non_mappata	
		});
		seatMap.pointAdder(windowInfo);
		windowInfoOpen = true;

    }
}

function flashReady(){
    g_playerReady = true;
    if (g_movePending) {
        g_movePending = false;
        asGoLatLong(g_move[0], g_move[1], g_move[2], g_move[3], g_move[4]);
        
    }
}

function updateBearing(absDir){
    var adjDir = absDir;
    index = Math.round(adjDir / 45); // 360/8
    if (index == 8) {
        index = 0;
    }
    if (index != lastIconIndex) {
        if (index >= 10) {
            //g_marker.setImage("http://giovanni.rovatti.googlepages.com/pic" + index + ".png");
			document.getElementById('marker1').style.backgroundImage="url(http://giovanni.rovatti.googlepages.com/pic" + index + ".png)";
			document.getElementById('marker2').style.backgroundImage="url(http://giovanni.rovatti.googlepages.com/pic" + index + ".png)";
        }
        else {
			document.getElementById('marker1').style.backgroundImage="url(/images/cursore/pic0" + index + ".png)";
			document.getElementById('marker2').style.backgroundImage="url(/images/cursore/pic0" + index + ".png)";
        }
        lastIconIndex = index;
    }

}


function poiMousePressed(type, name, value){
	var height =document.body.clientHeight;
	if (internalView['internalview'] == 1) {
		mapInternalView = true;
		asGoLatLong(internalView['latinternal'], internalView['lnginternal'], internalView['uinternal'], internalView['vinternal'], 270);
		resizePlayerMap('internalPlayer');
	}
	else if (internalView['status'] > 0) {
		resetInternalView();
		var images = [absoluteLocation+'/hotspot/view/' + value+'?iframe=true&width=622&height='+$(document).height()*.8];
		var title = [name];
		$.prettyPhoto.open(images,title);
		//popupext('/hotspot/view/' + value);
		//popupext('/hotspot/view/' + value);
	} else {
		$.getJSON("/general/checkInternalView/"+value, 
		function(data){
		    if (data[0].internalview == 1) {
				internalView = getUV(data[0].ID);
				internalView['internalid'] = data[0].ID;
				mapInternalView = true;
				asGoLatLong(data[0].latinternal, data[0].lnginternal, data[0].uinternal, data[0].vinternal, 270);
				resizePlayerMap('internalPlayer');
			} else {
				var images = [absoluteLocation +'/hotspot/view/' + value+'?iframe=true&width=622&height='+$(document).height()*.8];
				var title = [name];
				$.prettyPhoto.open(images,title);
			}
		});		
	}
}


function macroCategoryFilter(id,reset){
    if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }

    if (reset) {
		category_filter = new Array(0);
		clearPOI();
	}
	
    if (id != 0) {

        requester.open('GET', '/?c=general&m=getmacrocategory&custom=' + id, false);
        requester.send(null);
        var filterNode = requester.responseXML.getElementsByTagName("filter");
        for (var i = 0; i < filterNode.length; i++) {
            var id = requester.responseXML.getElementsByTagName("id")[i].childNodes[0].nodeValue;
			category_filter.push(id);
			
        }
    }
    drawCustomPoi();
}

function mapMove(lat, lng, poi){
	var point = new PGPoint({lon:lng, lat:lat});
	if (seatMap.getZoom().z > 2) seatMap.setZoom(2);
	panToMap(point);
    //seatMap.panTo(point);
    if (poi != undefined) {
        playerOpen(point, -1, .5, seatMap, poi);
    }

}

function mapMoveAndOpen(lat, lng, poi, value, internal, direct){
	plainingOpen = false;
	resizePlayerMap(playerType);
	var point = new PGPoint({lon:lng, lat:lat});
	g_marker.setLonLat(lng,lat);
	seatMap.setCenterPoint({
					lon: lng,
					lat: lat
				});
	//panToMap(point);
	playerOpen(point, -1, .5, seatMap, poi);
	//mapMoveAndOpen(lat, lng, poi);
	var height = document.documentElement.clientHeight;
	drawCustomPoi();
	//window.open('/?c=general&m=view_from_player&site_id='+value,'GeoMondo','width=600,height='+height+',scrollbars=yes');	
	//if (value != undefined && internal == 0)
		//popupext(absoluteLocation+'ci/index.php?c=geo&m=view_from_player&site_id='+value);
}

function mapMoveAndOpenInternal(lat, lng, u, v,poi) {
	var point = new PGPoint({lon:lng, lat:lat});
	g_marker.setLonLat(lng,lat);
	seatMap.setCenterPoint({
					lon: lng,
					lat: lat
				});	
	playerOpen(point, u, v, seatMap, poi);
}


function popupext(url) {

 	if (Ext.getCmp('windowpanel')) {
		Ext.getCmp('windowpanel').setLocation(url);
	}
 	else {

		var tabs = new Ext.Panel({
			xtype: 'panel',
			region: 'center',
			margins: '0 0 0 0',
			activeTab: 0,
			id: 'view-port',
			defaults: {
				autoScroll: true
			},
			layout: 'fit',
			defaultType: "iframepanel",
			frame: false,
			items: [{
				id: 'windowpanel',
				loadMask: {
					msg: label_caricamento
				}
			//defaultSrc: url
			}]

		});
		
		var win = new Ext.Window({
			title: ' ',
			id: 'east-panel',
			closable: true,
			modal: false,
			width: 622,
			height: document.documentElement.clientHeight - 50,
			layout: 'border',
			x: document.documentElement.clientWidth - 630,
			items: [tabs]
		});
		
		win.show();
		
		Ext.getCmp('windowpanel').setLocation(url);
	}
	Ext.getCmp('east-panel').setPagePosition(document.documentElement.clientWidth - 630,15);
}

function popupPoiUserGen() {	
	var box = seatMap.getMapBounds();
	var swlatuser = box.botLeft.lat;
	var nelnguser = box.topRight.lon;
	var nelatuser = box.topRight.lat;
	var swlnguser = box.botLeft.lon;	
	
	var url = 'http://'+window.location.hostname+'/?c=general&m=showUserGen&swlat='+swlatuser+'&swlng='+swlnguser+'&nelat='+nelatuser+'&nelng='+nelnguser+'&id_comune='+id_comune+'&time='+Math.random();
	Ext.getCmp('poiusergenwin').show();
	Ext.getCmp('poiusergenframe').setLocation(url);	
	Ext.getCmp('poiusergenwin').setPosition(document.documentElement.clientWidth - 570,15);
}

function openFreePoi() {
	
	var box = seatMap.getMapBounds();
	var swlatuser = box.botLeft.lat;
	var nelnguser = box.topRight.lon;
	var nelatuser = box.topRight.lat;
	var swlnguser = box.botLeft.lon;	
	var url = '/?c=general&m=showUserGen&swlat='+swlatuser+'&swlng='+swlnguser+'&nelat='+nelatuser+'&nelng='+nelnguser+'&id_comune='+id_comune;

	var site = [url+'&iframe=true&width=600&height='+$(document).height()*.8];
	$.prettyPhoto.open(site);
	
}

function popupPoiUserGenBest() {
	var box = seatMap.getMapBounds();
	
	var swlatuser = box.botLeft.lat;
	var nelnguser = box.topRight.lon;
	var nelatuser = box.topRight.lat;
	var swlnguser = box.botLeft.lon;
	
	var url = '/?c=general&m=showUserGenBest&swlat='+swlatuser+'&swlng='+swlnguser+'&nelat='+nelatuser+'&nelng='+nelnguser+'&id_comune='+id_comune;
	
	Ext.getCmp('poiusergenwinbest').show();
	Ext.getCmp('poiusergenframebest').setLocation(url);
	Ext.getCmp('poiusergenwinbest').setPosition(document.documentElement.clientWidth - 570,15);
}



function showBusinessInfo(url) {
	
	
	var obj = document.getElementById('seetyPlayer');
    var topValue= 0,leftValue= 0;
    while(obj){
		leftValue+= obj.offsetLeft;
		topValue+= obj.offsetTop;
		obj= obj.offsetParent;
    }
	leftValue = leftValue+630;


 	if (Ext.getCmp('businessiframe')) {
		Ext.getCmp('businessiframe').setLocation(url);
	}
 	else {
		var businessInfo = new Ext.Panel({
			xtype: 'panel',
			region: 'center',
			id: 'businessinfo',
			margins: '0 0 0 0',
			defaults: {autoScroll: true},
			layout: 'fit',
			defaultType: "iframepanel",
			frame: false,
			items: [{
				id: 'businessiframe',
				loadMask: {
					msg: label_caricamento
				}
			//defaultSrc: url
			}]
		});
		
		var winBusiness = new Ext.Window({
			title: pc_titolo_finestra,
			id: 'winbusiness',
			closable: true,
			modal: false,
			width: 400,
			height: 200,
			layout: 'border',
			items: [businessInfo]
		});
		
		winBusiness.show();
		
		Ext.getCmp('businessiframe').setLocation(url);
	}
	winBusiness.setHeight(200);
	winBusiness.setPosition(leftValue,topValue);
}




function enableFilter(){
	var comunali = document.getElementById('comunali').checked;
	document.getElementById('map').focus();
	
	if (!comunali) {
		drawCustomBreak = true;
		clearPOI();
		macroCategoryFilter(0,true);
	} else if (comunali) {
		drawCustomBreak = false;
		macroCategoryFilter(0,true);
	} 
} 

function enableFilterUser(){
	var freeuser = document.getElementById('freeuser').checked;
	if (!freeuser) {
		drawFreeBreak = true;
		clearFreePOI();
	} else if (freeuser) {
		drawFreeBreak = false;
		drawPublicUserPoi();
	} 
} 

function enableBusiness(){
	var business = document.getElementById('business').checked;
	if (!business) {
		drawBusinessCenter = false;
		clearPOIBusiness();
	} else if (business) {
		drawBusinessCenter = true;
		drawBusiness();
	} 
}    

function resizePlayer(){
	
}

function hideMapIndoor() {
	var mapElem = document.getElementById("mapIndoor_container");
	mapElem.style.zIndex = 1;
	mapElem.style.display = 'none';
}

function getPlayerPos(){
	var obj = document.getElementById('seetyPlayer');
    var topValue= 0,leftValue= 0;
    while(obj){
		leftValue+= obj.offsetLeft;
		topValue+= obj.offsetTop;
		obj= obj.offsetParent;
    }
	var playerPos = [];
	playerPos['x'] = leftValue;
	playerPos['y'] = topValue;	
	return playerPos;
}

function internalPoi() {
	var mapElem = document.getElementById("mapIndoor");
	var playerPos = getPlayerPos();	
	var leftValue = playerPos['x']+597;
	var topValue = playerPos['y']+352;
	var mapElemContainer = document.getElementById("mapIndoor_container");
	mapElemContainer.style.width = 300+'px';	
	mapElemContainer.style.height = 167+'px';		
	mapElem.style.zIndex = 100;
	mapElem.style.display = 'block';	
	mapElemContainer.style.display = 'block';	
	mapElemContainer.style.zIndex = 100;
	mapIndoor.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});
	markerIndoor.setLonLat(g_marker.lon, g_marker.lat);	
	
}

function zoomPlayer(){
	var elem = document.getElementById("playerCell");
	if (zoomIndoor){
		elem.width = tableWidth;
    	elem.height = tableHeight;			
		zoomIndoor = false;
		zoomIndoorExpand = true;
		resizeMapIndoor();
		var mapElemContainer = document.getElementById("mapIndoor_container");
		mapElemContainer.style.display = 'none';
		var elem = document.getElementById("poi_indoor_list_col");
		elem.style.height = (tableHeight+119)+'px';	
	} else {
		elem.width = tableWidthMax;
    	elem.height = tableHeightMax;
		zoomIndoor = true;
		internalPoi();
		document.getElementById('indoorExpand').src = "/images/arrow_closer_indoor.gif";
		var elem = document.getElementById("poi_indoor_list_col");
		elem.style.height = (tableHeightMax+119)+'px';
		var elem = document.getElementById("mapIndoor_container");
		(mapInternalView) ? elem.style.bottom = '110px' : elem.style.bottom = '10px';
	}	
	
}

function resizeMapIndoor(){
	if (zoomIndoorExpand){
		// ho chiuso la mappina interna
		var mapElemContainer = document.getElementById("mapIndoor_container");
		var mapElem = document.getElementById("mapIndoor");
		/*var newTop = mapHeightGlobal-18;
		var newLeft = mapWidthGlobal-15;*/	
		var newTop = mapHeightGlobal-24;
		var newLeft = mapWidthGlobal-24;
		/*var newLeft = mapWidthGlobal-20;*/
		mapElemContainer.style.top = newTop+'px';	
		mapElemContainer.style.left = newLeft+'px';			
		//mapElemContainer.style.width = '15px';
		//mapElemContainer.style.height = '15px';
		mapElemContainer.style.width = '20px';
		mapElemContainer.style.height = '20px';
		mapElem.style.display = 'none';
		// reimposto left e top a 0 per il div mapIndoor_closer
		//mapElemContainer.style.border = '0px';
		var mapElemCloser = document.getElementById("mapIndoor_closer");
		mapElemCloser.style.top = '0px';	
		mapElemCloser.style.left = '0px';	
		// nascondo i pulsanti openup e openleft
		var mapElemOpenUp = document.getElementById("mapIndoor_openup");
		mapElemOpenUp.style.display = 'none';
		var mapElemOpenLeft = document.getElementById("mapIndoor_openleft");
		mapElemOpenLeft.style.display = 'none';
		//document.getElementById('indoorExpand').src = "/images/arrow_open_indoor.gif";
		document.getElementById('indoorExpand').src = "/images/freccia1.gif";
		zoomIndoorExpand = false;
	} else {
		// riapro la mappina interna
		//internalPoi();
		resizePlayerMap();
		// riposizione il div mapIndoor_closer nell'angolo in basso a destra
		var mapElemCloser = document.getElementById("mapIndoor_closer");
		mapElemCloser.style.top = '0px';	
		mapElemCloser.style.left = '280px';
		// visualizzo i pulsanti openup e openleft
		var mapElemOpenUp = document.getElementById("mapIndoor_openup");
		mapElemOpenUp.style.display = 'block';
		var mapElemOpenLeft = document.getElementById("mapIndoor_openleft");
		mapElemOpenLeft.style.display = 'block';
		//document.getElementById('indoorExpand').src = "/images/arrow_closer_indoor.gif";
		// visualizzo la freccia di apertura
		document.getElementById('indoorExpand').src = "/images/freccia3.gif";
		zoomIndoorExpand = true;
	}	
	
}


function browserResize() {
	var mapElem = document.getElementById("map");	
	mapHeightGlobal = document.documentElement.clientHeight-player_top-60;
	mapWidthGlobal = document.documentElement.clientWidth-margin;
	mapElem.style.height = mapHeightGlobal+'px';
	mapElem.style.width = mapWidthGlobal+'px';	
	if (g_playerIsOpen) {
		(mapInternalView) ? resizePlayerMap('internalPlayer') :	resizePlayerMap(playerType);		
	}	

}


function addZoom(){
	    var self = this;
        $('<div id="mapzoom" />').css({
            position: 'absolute',
            zIndex: 10000,
            top: '10px',
            left: '10px',
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
            var pieceMin = 33;
            var pieceMax = 164;
            var pieceSize = 13;
            var ofs = $(this).offset();
            var coords = {
                left: event.pageX - ofs.left,
                top: event.pageY - ofs.top
            };
            if (coords.top < pieceMin) {
                seatMap.map.zoomIn();
            }
            else 
                if (coords.top > pieceMax) {
                    seatMap.map.zoomOut();
                }
                else {
                    var cp = Math.floor((coords.top - pieceMin) / pieceSize);
                    seatMap.map.setZoom(cp);
                }
        }).appendTo('#map');
        $('<img />').attr({src: '/images/zoomseat.png',alt: 'zoom'}).appendTo('#mapzoom');

        $('<div id="mapIndoor_closedown" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<a />').attr({href: 'javascript:resizePlayerMap();',alt: 'closer', id:'closeRow'}).appendTo('#mapIndoor_closedown');
		$('<img />').attr({src: '/images/freccia12.gif',alt: 'closer', id:'indoorCloseDown'}).appendTo('#closeRow');

        $('<div id="mapIndoor_opendownleft" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<a />').attr({href: 'javascript:resizePlayerMap("topPlayer");',alt: 'closer', id:'opendownleft'}).appendTo('#mapIndoor_opendownleft');
		$('<img />').attr({src: '/images/freccia5.gif',alt: 'closer', id:'indoorOpenDownLeft'}).appendTo('#opendownleft');

        $('<div id="mapIndoor_openupright" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<a />').attr({href: 'javascript:resizePlayerMap("leftPlayer");',alt: 'closer', id:'openUpRight'}).appendTo('#mapIndoor_openupright');
		$('<img />').attr({src: '/images/freccia10.gif',alt: 'closer', id:'indoorOpenUpRight'}).appendTo('#openUpRight');
		
        $('<div id="mapIndoor_closeright" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<a />').attr({href: 'javascript:resizePlayerMap();',alt: 'closer', id:'closeRight'}).appendTo('#mapIndoor_closeright');
		$('<img />').attr({src: '/images/freccia8.gif',alt: 'closer', id:'indoorCloseRight'}).appendTo('#closeRight');
		
        $('<div id="mapIndoor_closermap" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<a />').attr({href: 'javascript:resizePlayerMap();',alt: 'closer', id:'closerMap'}).appendTo('#mapIndoor_closermap');
		$('<img />').attr({src: '/images/freccia2.gif',alt: 'closer', id:'indoorCloserMap'}).appendTo('#closerMap');

        $('<div id="logo" />').css({
            zIndex: 10000,
            cursor: 'pointer'
        }).click(function(event){
			zindexClick = true;
        }).appendTo('#map');
        $('<span />').html('Street level map by').appendTo('#logo');
		$('<a />').attr({href: 'http://www.geomondo.eu', id:'logoGeomondo' ,target:'_blank'}).appendTo('#logo');		
		$('<img />').attr({src: '/images/logo_small.png',title: 'Geomondo S.r.l.'}).appendTo('#logoGeomondo');		
		 																		
}

function changeMapType(mapType, button) {
	zindexClick = true;
	seatMap.setMapType(mapType); 	
	mapIndoor.setMapType(mapType); 
	//$(".mapSelector").children("ul").children("li").each(function() {
	$("#voci_menu2").children("ol").children("li").each(function() {															  
	    $(this).children("a").removeClass("attivo");
	}); 	
	var element = document.getElementById(button);
	element.setAttribute("class", "attivo");

}

function selectInternalView(button){
	$(".poi_indoor_list_col").each(function() {
	    $(this).children("a").removeClass("poi_indoor_list_selected");
	}); 	
	var element = document.getElementById(button);
	element.setAttribute("class", "poi_indoor_list_selected");
};


function resizePlayerMap(type){
	//zindexClick = true;
	//alert(type);

	var elem = document.getElementById("playerCell");
	var mapElemContainer = document.getElementById("mapIndoor_container");
	var mapElem = document.getElementById("mapIndoor");
	var mapElemBig = document.getElementById("map");
	/* variabili aggiunte per la gestione dei nuovi pulsanti per resize player */
	var mapElemCloseDown = document.getElementById("mapIndoor_closedown");
	var mapElemOpenDownLeft = document.getElementById("mapIndoor_opendownleft");
	var mapElemCloseRight = document.getElementById("mapIndoor_closeright");
	var mapElemOpenUpRight = document.getElementById("mapIndoor_openupright");
	var mapElemCloserMap = document.getElementById("mapIndoor_closermap");
	var mapElemOpenUp = document.getElementById("mapIndoor_openup");
	var mapElemOpenLeft = document.getElementById("mapIndoor_openleft");
	var mapElemCloser = document.getElementById("mapIndoor_closer");
	var elemColumn = document.getElementById("poi_indoor_list_col");
	//var mapElemExpand = document.getElementById("mapIndoor_expand");
	/* variabile aggiunta per gestione lunghezza pagina in modalità player TOP */
	var wrapperMapElemBig = document.getElementById("wrapper_map");
	$('#toolbar').hide();
	if (type != 'closePlayer' && type != 'internalPlayer') {
		playerType = type;
		resetInternalView();
		// mostro la fascia con i tool invia segnalazione - scattafoto - aggiungi P.O.I. nascosta in ajaxPoi.js per musei e casiṇ (procedura da rivedere succesivamente per clienti paganti)
		$('#detailsinternal').html('');
		$('#toolbar').show();		
	}
	else 
		if (playerType == 'closePlayer' && type == 'closePlayer') {
			playerType = 'default';
			type = 'default';
			resetInternalView();
		}
	
	switch(type) {
 	  case 'topPlayer':
	  	elem.width = mapWidthGlobal-4;
		elem.height = (mapHeightGlobal*.6)-21;
		
	  	mapElemBig.style.height = (mapHeightGlobal*.4)+'px';
		mapElemBig.style.left = '0px';
		mapElemBig.style.top = (mapHeightGlobal*.6)+'px';
		mapElemBig.style.width = mapWidthGlobal+'px';
		
		wrapperMapElemBig.style.height = (mapHeightGlobal)+'px';
		wrapperMapElemBig.style.left = '0px';
		wrapperMapElemBig.style.top = '0px';
		wrapperMapElemBig.style.width = mapWidthGlobal+'px';
		
		mapElemContainer.style.display = 'none';
		mapElem.style.display = 'none';	
		// posizionamento pulsante (chiusura a destra)
		mapElemCloseRight.style.top = (((mapHeightGlobal*.4)/2)-13)+'px'; 
		mapElemCloseRight.style.display = 'block';
		// posizionamento pulsante (apertura alto a destra)
		mapElemOpenUpRight.style.left = (((mapWidthGlobal)/2)-13)+'px';
		mapElemOpenUpRight.style.display = 'block';
		// posizionamento pulsante (chiusura in basso a destra)
		mapElemCloserMap.style.left = ((mapWidthGlobal)-20)+'px';
		mapElemCloserMap.style.top = ((mapHeightGlobal*.4)-20)+'px'; 
		// mapElemCloserMap.style.top = '0px';
		mapElemCloserMap.style.display = 'block';
		// mapElemCloserMap.style.display = 'none';
		// nascondo i pulsanti non utilizzati
		mapElemCloseDown.style.display = 'none';
		mapElemOpenDownLeft.style.display = 'none';
		//mapElemExpand.style.display = 'none';
								
		seatMap.setSize(mapWidthGlobal,(mapHeightGlobal*.4));
		seatMap.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});	
	  break; 
	  
	  case 'leftPlayer':
	  	elem.width = (mapWidthGlobal*.6);
		elem.height = mapHeightGlobal-21;
		mapElemBig.style.left = (mapWidthGlobal*.6)+'px';
		mapElemBig.style.top = '0px';
		/*elem.height = mapHeightGlobal-20;*/
	  	mapElemBig.style.height = mapHeightGlobal+'px';
		mapElemBig.style.width = (mapWidthGlobal*.4)+'px';
		mapElemContainer.style.display = 'none';
		mapElem.style.display = 'none';
		// posizionamento pulsante (chiusura in basso)
		mapElemCloseDown.style.left = (((mapWidthGlobal*.4)/2)-13)+'px';
		mapElemCloseDown.style.display = 'block';
		// posizionamento pulsante (apertura in basso a sinistra)
		mapElemOpenDownLeft.style.top = ((mapHeightGlobal/2)-13)+'px'; 
		mapElemOpenDownLeft.style.left = '4px';
		mapElemOpenDownLeft.style.display = 'block';
		// posizionamento pulsante (chiusura in basso a destra)
		mapElemCloserMap.style.left = ((mapWidthGlobal*.4)-20)+'px';
		mapElemCloserMap.style.top = ((mapHeightGlobal)-20)+'px'; 
		//mapElemCloserMap.style.top = '0px'; 
		mapElemCloserMap.style.display = 'block';
		//mapElemCloserMap.style.display = 'none';
		// nascondo i pulsanti non utilizzati
		mapElemCloseRight.style.display = 'none';
		mapElemOpenUpRight.style.display = 'none';
		//mapElemExpand.style.display = 'none';
				
		seatMap.setSize((mapWidthGlobal*.4),mapHeightGlobal);
		seatMap.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});
	  break; 
	  
	  case 'closePlayer':
	  	mapElemBig.style.height = mapHeightGlobal+'px';
		mapElemBig.style.left = '0px';
		mapElemBig.style.top = '0px';
		mapElemBig.style.width = mapWidthGlobal+'px';
		mapElemContainer.style.display = 'none';
		mapElem.style.display = 'none';	
		// nascondo i pulsanti non utilizzati
		mapElemCloseDown.style.display = 'none';
		mapElemOpenDownLeft.style.display = 'none';
		mapElemCloseRight.style.display = 'none';
		mapElemOpenUpRight.style.display = 'none';
		mapElemCloserMap.style.display = 'none';
		//mapElemExpand.style.display = 'none';
		seatMap.setSize(mapWidthGlobal,mapHeightGlobal);
		if (g_marker != undefined)
			seatMap.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});	
	  break; 
	  
	  case 'internalPlayer':
		elem.width = (mapWidthGlobal/1.65)-130; // width del player indoor
		//elem.width = (mapWidthGlobal/1.5)-130; // width del player indoor
		/*elem.width = mapWidthGlobal-130;
		elem.height = mapHeightGlobal-119;*/
		elem.height = mapHeightGlobal-144;
	  	mapElemBig.style.height = mapHeightGlobal+'px';
		mapElemBig.style.left = ($('#seetyPlayer').width()+206)+'px';
		mapElemBig.style.top = '0px';
		mapElemBig.style.width = (mapWidthGlobal-($('#seetyPlayer').width()+126))+'px';
		mapElemContainer.style.display = 'none';
		mapElem.style.display = 'none';	
		/*var elemColumn = document.getElementById("poi_indoor_list_col");*/
		elemColumn.style.height = (mapHeightGlobal-2)+'px'; // -2 aggiunto per compensare aggiunta di border top e bottom di 1px cad.
		//var elemPoi_indoor_text_row = document.getElementById("poi_indoor_text_row");
		//elemPoi_indoor_text_row.style.width = (mapWidthGlobal/1.5)-126.5+'px'; // width per il div poi_indoor_text_row
		$("#poi_indoor_text_row").width((mapWidthGlobal/1.65)-126.5);
		//$("#poi_indoor_text_row").width((mapWidthGlobal/1.5)-126.5);
		$("#poi_indoor_text_row").show();	
		$('#poi_indoor_list_col').show();

		// nascondo i pulsanti non utilizzati
		mapElemCloseDown.style.display = 'none';
		mapElemOpenDownLeft.style.display = 'none';
		mapElemCloseRight.style.display = 'none';
		mapElemOpenUpRight.style.display = 'none';
		mapElemCloserMap.style.display = 'none';
		
		seatMap.setSize((mapWidthGlobal-($('#seetyPlayer').width()+206)),mapHeightGlobal);
		seatMap.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});	
		mapIndoor.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});	
		if ($.browser.msie && plainingOpen)	{
			$("#markerpan").css('top', (mapHeightGlobal - 100));
			$("#markerpan").css('left', 99);
			$("#zoomselector").css('top', (mapHeightGlobal - 190));			
		}
		else
			getInternalView(internalView['internalid'], 0, internalView['client']);
	  break; 
	  
	  default:	
		/*elem.width = mapWidthGlobal-4;*/
		elem.width = mapWidthGlobal;
		elem.height = mapHeightGlobal-21;
		/*elem.height = mapHeightGlobal-20;*/
		var newTop = mapHeightGlobal-284;
		/*var newTop = mapHeightGlobal-283;*/
		var newLeft = mapWidthGlobal-304;
		/*var newLeft = mapWidthGlobal-300;*/
		mapElemBig.style.top = '0px';
		mapElemBig.style.left = '0px';
		mapElemBig.style.height = mapHeightGlobal+'px';
		mapElemBig.style.width = mapWidthGlobal+'px';
		
		mapElemContainer.style.top = newTop+'px';	
		mapElemContainer.style.left = newLeft+'px';		
		mapElemContainer.style.width = 300+'px';	
		mapElemContainer.style.height = 280+'px';
		mapElemContainer.style.display = 'block';	
		mapElemContainer.style.zIndex = 100;
		
		mapElem.style.zIndex = 100;
		mapElem.style.display = 'block';
		
		mapElemCloser.style.top = '0px';	
		mapElemCloser.style.left = '280px';
		mapElemCloser.style.display = 'block';
		
		mapElemOpenUp.style.display = 'block';
		mapElemOpenLeft.style.display = 'block';
		
		//mapElemExpand.style.display = 'block';
		document.getElementById('indoorExpand').src = "/images/freccia3.gif";
		seatMap.setSize(mapWidthGlobal,mapHeightGlobal);
		markerIndoor.setLonLat(g_marker.lon, g_marker.lat);				
		mapIndoor.setCenterPoint({lon:g_marker.lon, lat:g_marker.lat});	
		zoomIndoor = true;
	  break;	
	}
}

function openPlayerComment(latitude,longitude,rotU,rotV,id) {
		resizePlayerMap(playerType);
		var point = new PGPoint({lon:longitude, lat:latitude});
		getAddress(point);        
		asGoLatLong(latitude, longitude, rotU, rotV, 270);		
		if (!g_playerIsOpen)
			playerUnhide();
        g_playerIsOpen = true;
        getFocus();	
		
		var url = '/general/showUserGen/'+id+'/'+id_comune;
		Ext.getCmp('poiusergenwin').show();
		Ext.getCmp('poiusergenframe').setLocation(url);	
		Ext.getCmp('poiusergenwin').setPosition(document.documentElement.clientWidth - 570,15);
	
}


function zoomOutSearchPoi(search) {
	seatMap.setZoom(zoomInit);
	drawCustomBreak = true;	
	clearPOI();
	clearPOIBusiness();
	clearFreePOI();	
	drawSearchPoi(search)
}

function drawSearchPoi(search) {
	if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
	
	requester.onreadystatechange = function()
	{
		if (requester.readyState==4)
		{
			// se la lista e' troppo lunga ne tolgo un po'
			clearPOICustom();
			
			var poiNode = requester.responseXML.getElementsByTagName("poi");
			for (var i=0; i<poiNode.length; i++) 
			{

				// uso questo come id univoco (spero che sia giusto)
				var id = requester.responseXML.getElementsByTagName("id")[i].childNodes[0].nodeValue;
				var latitude = requester.responseXML.getElementsByTagName("latitude")[i].childNodes[0].nodeValue;
				var longitude = requester.responseXML.getElementsByTagName("longitude")[i].childNodes[0].nodeValue;
				var title = requester.responseXML.getElementsByTagName("title")[i].childNodes[0].nodeValue;
				var number = requester.responseXML.getElementsByTagName("number")[i].childNodes[0].nodeValue;
				var status = requester.responseXML.getElementsByTagName("status")[i].childNodes[0].nodeValue;



				var freemarker = new PGPoint({ 
					lon:longitude,
				    lat:latitude,
					txt: number,
					html: '<div class="'+status+'"><span style="padding: 8px 0px 0px; text-align: center; color: rgb(255, 255, 255); font-weight: bold; font-size: 11px; text-decoration: none; font-family: arial,verdana; display: block; width: 40px; height: 32px; position: relative; z-index: 251;" onmouseover="Tip(\''+addslashes(title)+'\', BGCOLOR, \'#FFFFFF\',OPACITY,90, FONTCOLOR, \'#000000\', BORDERCOLOR, \'#666666\')" onmouseout="UnTip()">'+number+'</span></div>',
					id: id
				});

				PGEvent.addListener( freemarker, 'click', function(event,id){ 
					markerMove = false;
					zindexClick = true;
					poi_id = event.id;
					playerOpen({lon:this.lon, lat:this.lat}, -1, .5, seatMap, poi_id);
				}, freemarker);				
				
				g_poiCustomListMarker.push(freemarker);
				g_poiCustomListID.push(id);
				seatMap.pointAdder(freemarker);
				}
			};
		}
			
	requester.open('GET', '/?c=general&m=ajax_search&customicon=true&dove='+id_comune+'&q='+search, true);
	requester.send(null);
	
}


function checkItinerari(percorso, colore,degressione) {
	if (window.XMLHttpRequest) {
        var requester = new XMLHttpRequest();
    } else {
            var requester = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
	var route = document.getElementById(percorso).checked;
	if (degressione != undefined) percorso = degressione;
	if (route) {
		$(".percorsi").removeAttr("checked");
		$("#"+percorso).attr("checked", "true");
		if (actualPolyline != '') seatMap.removeLine(actualPolyline);
		actualPolyline = percorso;
		
		requester.onreadystatechange = function(){
			if (requester.readyState == 4) {
				var pgLine = new Array();
				var polyline = requester.responseXML.getElementsByTagName("polyline");
				for (var i = 0; i < polyline.length; i++) {
					var latitude = requester.responseXML.getElementsByTagName("latitude")[i].childNodes[0].nodeValue;
					var longitude = requester.responseXML.getElementsByTagName("longitude")[i].childNodes[0].nodeValue;
					pgLine.push(new PGPoint({
						lon: longitude,
						lat: latitude
					}));
				};
				var rgb = ColorConverter.toRGB(colore);
				var pgPolyLine = new PGLine({
					id: percorso,
					points: pgLine,
					rgb: rgb,
					lineWidth: 8,
					opacity: 0.8
				});
				pgPolyline1 = seatMap.pgLineAdder(pgPolyLine);
			};
					}
		requester.open('GET', '/?c=general&m=getPolyline&id_comune=' + id_comune + '&nomepercorso=' + percorso, true);
		requester.send(null);
	} else {
		clearPOI();
		drawCustomBreak = false;
		seatMap.removeLine(percorso);
		drawCustomPoi();	
		return false;
	}
	
	if (window.XMLHttpRequest) {
        var requesterPoi = new XMLHttpRequest();
    } else {
            var requesterPoi = new ActiveXObject('MSXML2.XMLHTTP.3.0');
    }
	
	requesterPoi.onreadystatechange = function()
	{
		if (requesterPoi.readyState==4)
		{
			var pgLine = new Array();
			var poiNode = requesterPoi.responseXML.getElementsByTagName("poi");
			if (poiNode.length > 0) {
				drawCustomBreak = true;	
				clearPOI();
				clearPOIBusiness();
				clearFreePOI();
				drawPoiPercorsi = true;										
				drawPoi(poiNode,requesterPoi);
			} else
				drawPoiPercorsi = false;
		};
	}
	requesterPoi.open('GET', '/general/getPolylinePoi/'+id_comune+'/' + percorso, true);
	requesterPoi.send(null);	

}


(function(){
    window.ColorConverter = {
        toHTML: function(r, g, b){
            return $ensureHexLength(r.toString(16)) + $ensureHexLength(g.toString(16)) + $ensureHexLength(b.toString(16));
        },
        toRGB: function(color){
            var r, g, b;
            var html = color;
            
            // Parse out the RGB values from the HTML Code
            if (html.substring(0, 1) == "#")
            {
                html = html.substring(1);
            }
            
            if (html.length == 3)
            {
                r = html.substring(0, 1);
                r = r + r;
                
                g = html.substring(1, 2);
                g = g + g;
                
                b = html.substring(2, 3);
                b = b + b;
            }
            else if (html.length == 6)
            {
                r = html.substring(0, 2);
                g = html.substring(2, 4);
                b = html.substring(4, 6);
            }
        
            // Convert from Hex (Hexidecimal) to Decimal
            r = parseInt(r, 16);
            g = parseInt(g, 16);
            b = parseInt(b, 16);
        
            return {r: r, g: g, b: b};
        }
    };
    
    function $ensureHexLength(str){
        if (str.length == 1){
            str = "0" + str;
        }
        return str;
    }
})();


function drawPoi(poiNode,requester) {

			for (var i=0; i<poiNode.length; i++) 
			{

				// uso questo come id univoco (spero che sia giusto)
				var id = requester.responseXML.getElementsByTagName("id")[i].childNodes[0].nodeValue;				
				if (jQuery.inArray(id,g_poiListID)>=0)
				{
					continue;
				}
				var latitude = requester.responseXML.getElementsByTagName("latitude")[i].childNodes[0].nodeValue;
				var longitude = requester.responseXML.getElementsByTagName("longitude")[i].childNodes[0].nodeValue;
				var title = requester.responseXML.getElementsByTagName("title")[i].childNodes[0].nodeValue;
				var user = requester.responseXML.getElementsByTagName("user")[i].childNodes[0].nodeValue;
				var picture = requester.responseXML.getElementsByTagName("icon")[i].childNodes[0].nodeValue;
				var macrocategory = requester.responseXML.getElementsByTagName("macrocategory")[i].childNodes[0].nodeValue;
				var indoor = requester.responseXML.getElementsByTagName("indoor")[i].childNodes[0].nodeValue;
				var status = requester.responseXML.getElementsByTagName("status")[i].childNodes[0].nodeValue;
				
				if (macrocategory != '0') 
				{
					var indoorIcon = '';
					if (indoor != 0 && (macrocategory == 15 || macrocategory == 16)) indoorIcon = 'indoor';

					var customicon = '<div class="customicon" onmouseover="Tip(\'<img src='+absoluteLocation+'/uc/' + user + '/gallery/miniature/' + picture + ' WIDTH=100 /><br/>'+addslashes(title)+'\', BGCOLOR, \'#FFFFFF\',OPACITY,90, FONTCOLOR, \'#000000\', BORDERCOLOR, \'#666666\', WIDTH, 100)" onmouseout="UnTip()"><img src="../../icon/marker/'+indoorIcon+macrocategory+'.gif" /></div>';
					var iconX = 20;
					var iconY = 25;
					var anchorX = 10;
					var anchorY = 0;
				}
				else 
				{
					var customicon = '<div class="customicon" onmouseover="Tip(\''+addslashes(title)+'\', BGCOLOR, \'#FFFFFF\',OPACITY,90, FONTCOLOR, \'#000000\', BORDERCOLOR, \'#666666\')" onmouseout="UnTip()"><img src="http://gmaps-samples.googlecode.com/svn/trunk/markers/red/blank.png" /></div>';
					var iconX = 20;
					var iconY = 34;
					var anchorX = 0;
					var anchorY = 17;
				}
				
				
				var dyn_icon = requester.responseXML.getElementsByTagName("dyn_icon")[i].childNodes[0].nodeValue;
				var time = requester.responseXML.getElementsByTagName("time")[i].childNodes[0].nodeValue;

				if (zoom >= 0) 
				{
					control = true;
				} 
				else if (zoom < 0) 
				{
					control = true;
					var customicon = "<div class=\"customicon\"><img src="+absoluteLocation+"/uc/poi_icon/"+id+".png?time="+time+" onmouseover=\"Tip('"+addslashes(title)+"', BGCOLOR, '#FFFFFF',OPACITY,90, FONTCOLOR, '#000000', BORDERCOLOR, '#666666')\" onmouseout=\"UnTip()\" /></div>";
					var iconX = dynamic_icon[dyn_icon][0];
					var iconY = dynamic_icon[dyn_icon][1];
					var anchorX = dynamic_icon[dyn_icon][2];
					var anchorY = dynamic_icon[dyn_icon][3];			
				}
				
				
				if (status == 0) {
					var customicon = "<div class=\"customicon\"><img src=/icon/marker/free.png onmouseover=\"Tip('"+addslashes(title)+"', BGCOLOR, '#FFFFFF',OPACITY,90, FONTCOLOR, '#000000', BORDERCOLOR, '#666666')\" onmouseout=\"UnTip()\" /></div>";
					var iconX = 9;
					var iconY = 16;
					var anchorX = 0;
					var anchorY = 8;			
				}
				
				if (control) 
				{
					var marker = new PGPoint({ 
						lon:longitude,
					    lat:latitude,
					    html:customicon,
						id: id,
						offsetX:anchorX, 
						offsetY:anchorY,
						width: iconX,
            			height: iconY
					});
					custom_marker = marker;
				}
	
				if (zoom >= 0) 
				{					
					var htmltooltip = "<div class='markertooltip_container_top'><div class='markertooltip_container'><img src='/uc/" + user + "/gallery/miniature/" + picture + "' width='100' border='0' style='border:1px solid #437290;' /><br/><div class='markertooltip'>" + addslashes(title)+"</div></div></div>";
				} else if (zoom < 0) {
					var htmltooltip = "<div class='markertooltip'>" + addslashes(title)+"</div>";						
				}
				
				if (control) 
				{
   					PGEvent.addListener( custom_marker, 'click', function(event,id){ 
						markerMove = false;
						zindexClick = true;
						poi_id = event.id;
						playerOpen({lon:this.lon, lat:this.lat}, -1, .5, seatMap, poi_id);
												
					}, custom_marker);
  					
					
					g_poiListMarker.push(custom_marker);
					g_poiListID.push(id);
					seatMap.pointAdder(custom_marker);
				}
			};
	
}

function title(title){
	Ext.getCmp('east-panel').setTitle(title);
}


function addslashes(str) {
	str=str.replace(/\\/g,'\\\\');
	str=str.replace(/\'/g,'\\\'');
	str=str.replace(/\"/g,'\\"');
	str=str.replace(/\0/g,'\\0');
	return str;
}


function sponsorManager(mode, id) {

	switch(mode) {
		case 'show':	
			$('#poi_indoor_cards').flashembed({src: '/player/banner.swf?xmlFile=/general/getSponsor/'+id+'',width: 270,height: 122, wmode: 'transparent', id: 'bannerleft', scale: 'exactfit'} );
			sponsroMode = true;			
			break;
		case 'hide':
			$("#topbanner").html('');
			sponsroMode = false;			
			break;
	}

}

function daPixelsALonLat(PosX, PosY) {

	gLonA = parseFloat($("#internalLonA").val())
	gLatA = parseFloat($("#internalLatA").val());
	gLonB = parseFloat($("#internalLonB").val());
	gLatB = parseFloat($("#internalLatB").val());
	floor = $("#internalFloor").val();
	SizH = $("#internalWidth").val();
	SizV = $("#internalHeight").val(); 	

	angLon = Math.abs(gLonB - gLonA);
	angLat = Math.abs(gLatB - gLatA);
	lon = gLonA + Math.abs(( angLon * PosX ) / SizH);
	lat = gLatA - Math.abs(( angLat * PosY ) / SizV);
	//asGoLatLong(lat, lon, -1, .5, 270);

	$.getJSON('/general/getNearInternal/'+lat+'/'+lon+'/'+floor, function(data) {
			if (data == false) 
				return false;
			else {
				asGoLatLong(data[0].LATITUDE, data[0].LONGITUDE, data[0].U, data[0].V, 270);
				daLonLatAPixels(data[0].LONGITUDE, data[0].LATITUDE);
			}	
	});
	
}


function daLonLatAPixels(lon, lat){

	LonA = parseFloat($("#internalLonA").val())
	LatA = parseFloat($("#internalLatA").val());
	LonB = parseFloat($("#internalLonB").val());
	LatB = parseFloat($("#internalLatB").val());
	floor = $("#internalFloor").val();
	SizH = $("#internalWidth").val();
	SizV = $("#internalHeight").val(); 	

	//alert(LonA+' '+LatA+' '+LonB+' '+LatB+' '+SizH+' '+SizV+' '+lon+' '+lat);
	angLon = parseFloat(LonB - LonA);
	angLat = Math.abs(parseFloat(LatB - LatA));
	AngSpicLon = parseFloat(angLon) / parseFloat(SizH);
	AngSpicLat = parseFloat(angLat) / parseFloat(SizV);
	posAngLon = parseFloat(lon - LonA);
	posAngLat = parseFloat(lat - Math.abs(LatA));
	posXA = parseFloat(parseFloat(SizH) * posAngLon) / parseFloat(angLon);
	posYA = Math.abs(parseFloat(parseFloat(SizV) * posAngLat) / parseFloat(angLat));
	posXB = parseFloat(lon - LonA) / parseFloat(AngSpicLon);
	posYB = parseFloat(lat - LatA) / parseFloat(AngSpicLat) * parseFloat(-1);

	var currentX = posXA-($('#imagePanPan').width()/2);
	var currentY = posYA-($('#imagePanPan').height()/2);

	$('#imagePanPanMask').css('top',-currentY);
	$('#imagePanPanMask').css('left',-currentX);

	resetPan = true;	
	mouseX = -currentX;
	mouseY = -currentY;
}			

function getZoomMap(check) {
	
	switch(check) {
		case 'plus':
			if (zoomPlaning < 3 && zoomPlaning >=1) 
				zoomPlaning = zoomPlaning+1
			else
				return false;
			break;
		case 'min':
			if (zoomPlaning <= 3 && zoomPlaning >1) 
				zoomPlaning = zoomPlaning-1;
			else
				return false;	
			break;
	}

	var zoomDimension = getZoomMapping(zoomPlaning);
	
	$.getJSON('/general/getFloorMap/'+$("#internalPoi").val()+'/'+$("#internalFloor").val(), function(data) {
			$('#imagePan').attr('src', absoluteLocation+'/uc/planing/'+zoomDimension.zoom[0].zoomPrefix+data[0].PLANING);
			$("#internalHeight").val(eval("data[0]."+zoomDimension.zoom[0].heightZoom));
			$("#internalWidth").val(eval("data[0]."+zoomDimension.zoom[0].widthZoom));
			$("#internalLonA").val(data[0].LONGITUDEA);
			$("#internalLatA").val(data[0].LATITUDEA);
			$("#internalLonB").val(data[0].LONGITUDEB);
			$("#internalLatB").val(data[0].LATITUDEB);	
			
			daLonLatAPixels(g_marker.lon,g_marker.lat);
	});	

}

function getZoomMapping(zoom) {


	switch(zoom) {
		case 1:
				var zoomPrefix = 'zoom1_';
				var heightZoom = 'HEIGHT1';
				var widthZoom = 'WIDTH1';				
			break;
		case 2:
				var zoomPrefix = 'zoom2_';
				var heightZoom = 'HEIGHT2';
				var widthZoom = 'WIDTH2';				
			break;
		case 3:
				var zoomPrefix = '';
				var heightZoom = 'HEIGHT';
				var widthZoom = 'WIDTH';
			break;			
	}
	
	var zoomDimension = {"zoom": [{"zoomPrefix": zoomPrefix, "heightZoom": heightZoom, "widthZoom": widthZoom}]};

	return zoomDimension;	
}

function setLimitRotatio(min,max){
		if (min != 0 || max != 0) {
	        var movie = thisMovie("gmaps");
			movie.setRotyLimits(min,max);
			limitRotation = true;			
		} 
		
}


