var ItalyMaps = {
	baseUrl: 'http://www.italyguides.it',
	map: 0,
	ballonImgsBasePath: 0,
	xmlFile: 0,
	markers: 0,
	allIconType: 0,
	controlMap: false,
	titleVar: new Array(),
	fotoVar: new Array(),
	iconVar: new Array(),
	linkVar: new Array(),
	link2Var: new Array(),
	miscTextVar: 'html',
	preloadImages: new Array(),
	markersObj: new Array(),
	activeInfoWindow: 0,
	/*DEPRECATED*/ retroObj: new Array(),
	
	initMap: function(lat, lng, zoom) {
		var mapOpts = {
			zoom: zoom,
			center: new google.maps.LatLng(lat, lng),
			mapTypeControl: this.controlMap,
			mapTypeId: google.maps.MapTypeId.SATELLITE,
			scaleControl: true,
			navigationControl: true,
			streetViewControl: false
		};
		this.map = new google.maps.Map(document.getElementById('map'), mapOpts);
	},
	setControlMap: function(boo) {
		this.controlMap = true;
	},
	setMapType: function(mapType) {
		var mapArray = new Array();
		mapArray['SATELLITE'] = google.maps.MapTypeId.SATELLITE;
		mapArray['ROADMAP'] = google.maps.MapTypeId.ROADMAP;
		this.map.setMapTypeId(mapArray[mapType]);
	},
	setPhrasesVar: function(title, foto, link, icon, link2, misc) {
		this.titleVar = title;
		this.fotoVar = foto;
		this.linkVar = link;
		this.iconVar = icon;
		if( typeof link2 != 'undefined' ) {
			this.link2Var = link2;
		}
		if( typeof misc != 'undefined' ) {
			this.miscTextVar = misc;
		}
	},
	setBallonImgsBasePath: function(path) {
		this.ballonImgsBasePath = path;
	},
	setXml: function (url, useBaseUrl) {
		if( typeof url != 'undefined' ) {
			this.xmlFile = "";
			if( typeof useBaseUrl != 'undefined' && useBaseUrl == 1) {
				this.xmlFile = this.baseUrl;
			}
			this.xmlFile += url;
		}
	},
	loadXml: function () {
		if (window.XMLHttpRequest) {
			xhttp = new XMLHttpRequest();
		} else {
			xhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		xhttp.open("GET", this.xmlFile, false);
		xhttp.send(null);
		this.markers = xhttp.responseXML.getElementsByTagName('marker'); 
	},
	addMarker: function(obj) {
		var tempImg = new Image();
		tempImg.src = this.baseUrl + '/images_virtuale/google/foto_mappa/' + obj.getAttribute(this.fotoVar['img']) + '.jpg';
		this.preloadImages.push(tempImg);
		
		var localMarkerContent = "<div id='ballon'>";
		if(this.fotoVar['link'].length > 0) {
			localMarkerContent += "<a href='" + obj.getAttribute(this.fotoVar['link']) + "'>";
		}
		localMarkerContent += "<img src='" + this.fotoVar['prefix'] + obj.getAttribute(this.fotoVar['img']) + ".jpg' width='" + this.fotoVar['ww'] + "' height='" + this.fotoVar['hh'] + "' border='0'>";
		if(this.fotoVar['link'].length > 0) {
			localMarkerContent += "</a>";
		}
		
		 
		localMarkerContent += "<h1>";
		if(this.titleVar['link'].length > 0) {
			localMarkerContent += "<a href='" + obj.getAttribute(this.titleVar['link']) + "'>";
		}
		
		localMarkerContent += obj.getAttribute(this.titleVar['town']);
		
		if(this.titleVar['link'].length > 0) {
			localMarkerContent += "</a>";
		} 
		localMarkerContent += "</h1>";
		
		if(obj.getAttribute(this.miscTextVar).length > 0 ) {
			localMarkerContent += "<p>" + 
			obj.getAttribute(this.miscTextVar) +
			" " + obj.getAttribute(this.titleVar['town']);
			"</p>";
		}
				
		localMarkerContent += "<p>" +
					"<a href='" + obj.getAttribute(this.linkVar['link']) + "'>" +
						this.linkVar['totranslate'];
						if(this.linkVar['append'] != 0) {
							localMarkerContent += " " + obj.getAttribute(this.titleVar['town']);
						}
						
	localMarkerContent += "</a>" +
				"</p>";
		if( this.link2Var['link'].length > 0 ) {
				localMarkerContent += "<p>" +
					"<a href='" + obj.getAttribute(this.link2Var['link']) + "'>" +
						this.link2Var['totranslate'] + " " + obj.getAttribute(this.titleVar['town']) + " " +
					"</a>" + 
					"</p>";
				
		}
		 localMarkerContent += "</div>";
		 
	
		 
		if( this.allIconType != 0 ) {
			var myMarkerSize = new google.maps.Size(72,57);
			var myMarkerOrigin = new google.maps.Point(1,1);
			var myMarkerAnchor = new google.maps.Point(22,55);
			var infoOffset = new google.maps.Size(-18,55);
		} else {
			if( obj.getAttribute('icontype') == 1 ) { /*quelli grossi, dei capoluoghi*/
				var myMarkerSize = new google.maps.Size(72,57);
				var myMarkerOrigin = new google.maps.Point(1,1);
				var myMarkerAnchor = new google.maps.Point(21,55);
				var infoOffset = new google.maps.Size(-18,55);
			} else if( obj.getAttribute('icontype') == 2) { /*i cerchietti*/
				var myMarkerSize = new google.maps.Size(22,22);
				var myMarkerOrigin = new google.maps.Point(1,1);
				var myMarkerAnchor = new google.maps.Point(11,11);
				var infoOffset = new google.maps.Size(-5,10);
			} else { /*Nelle citta , quelli quadrati blu*/
				var myMarkerSize = new google.maps.Size(36,28);
				var myMarkerOrigin = new google.maps.Point(1,1);
				var myMarkerAnchor = new google.maps.Point(5,27);
				var infoOffset = new google.maps.Size(-17, 27);
			}
		}
		
			 if( this.allIconType == 2 ) {
			var myMarkerSize = new google.maps.Size(72,57);
			var myMarkerOrigin = new google.maps.Point(1,1);
			var myMarkerAnchor = new google.maps.Point(22,55);
			var infoOffset = new google.maps.Size(-18,55);
			}
		
		var localMarkerInfoWindow = new google.maps.InfoWindow({
			content: localMarkerContent,
			pixelOffset: infoOffset
		});
		this.markersObj[this.removeSpaces(obj.getAttribute(this.titleVar['town']))] = new google.maps.Marker({
			position: new google.maps.LatLng(obj.getAttribute('lat'), obj.getAttribute('lng')),
			map: this.map,
			icon: new google.maps.MarkerImage(
				this.iconVar['path'] + obj.getAttribute(this.iconVar['param']) + this.iconVar['ext'],
				myMarkerSize, myMarkerOrigin, myMarkerAnchor
			),
			title: obj.getAttribute(this.titleVar['town'])
		});
		/*DEPRECATED*/ this.retroObj[obj.getAttribute('myclick')] = this.removeSpaces(obj.getAttribute(this.titleVar['town']));
		google.maps.event.addListener(this.markersObj[this.removeSpaces(obj.getAttribute(this.titleVar['town']))], 'click', function() {
			if (ItalyMaps.activeInfoWindow) ItalyMaps.activeInfoWindow.close();
			ItalyMaps.activeInfoWindow = localMarkerInfoWindow;
			localMarkerInfoWindow.open(ItalyMaps.map,this);
		});
	},
	markerClicked: function(name) {
		google.maps.event.trigger(this.markersObj[name], 'click');
		location.href = '#toppage';
	},
	setAllIconType: function(icontype) {
		this.allIconType = 1;
	},
	parseMarkers: function() {
		var numMarkers = this.markers.length;
		for( var i = 0; i < numMarkers ; i++ ) {
			this.addMarker(this.markers.item(i));
		}
	},
	removeSpaces: function(string) {
		return string.split(' ').join('');
	}
};

/*DEPRECATED*/ function myclick(numPOI) {
	ItalyMaps.markerClicked(ItalyMaps.retroObj[numPOI]);
}
