// JavaScript Document

function initAll() {
	initGallery();
	initMenu();
	initSlider();
	initCategorie();
	initForms();
}

function initMenu() {
	if(typeof(page) == 'undefined' || !page[0]) return;
	$('#menu-main a.'+ page[0]).addClass('active');
}

function initSlider() {
	$('#banner .slider').nivoSlider({
		directionNav:		false,
		controlNav:			false,
		keyboardNav:		false,
		pauseOnHover:		false,
		pauseTime:			5000
	});
}

function initCategorie() {
	$('#menu-categorie > ul').isotope({
	  // options
	  itemSelector : '.categoria'
	}).find('h2').click(function(){
		$(this).toggleClass('closed').next('ul').slideToggle(function(){
			$('#menu-categorie > ul').isotope('reLayout');
		}).find('a').each(function(index, element) {
			if(mrk.length > 1 ) {
				var m = mrk[ parseInt($(this).attr('rel')) ];
				m.setVisible(!m.getVisible());
			}
		});
		if($(this).hasClass('closed')) infoWindow.close();
	}).css({ cursor: 'pointer', paddingRight: '20px' }).append('<span />');
}

function initForms() {
	if($('form').length < 1 ) return;

	var form1opt = { 
		url:     '/inc/asp/'+ $('#contatti').attr('rel') +'/mail-contatti-invio.asp', 
		success: function(data) { 
			$(':input','#form1')
			 .not(':button, :submit, :reset, :hidden')
			 .val('')
			 .removeAttr('checked')
			 .removeAttr('selected');
			$.fancybox(data);
		} 
	}; 

	$("#contatti").validate({
		rules: {
			email: {
				required: true,
				email: true
			},
			nome: {
				required: true
			}
		},
		submitHandler: function(form) {
			jQuery(form).ajaxSubmit(form1opt);
		}
 });
}

function initGallery() {
	if($('#gallery').length < 1) return;
	$('#gallery > ul').addClass('active').find('a').each(function(index, element) {
		var a = $(this);
		a.css({ backgroundImage: 'url("'+ a.attr('href') +'")' }).attr('rel','gallery').fancybox();
	});
	
}

function initMap(linkStr) {
	mrk=[];
	win=[];
	
	var latlng = new google.maps.LatLng(43.762850023959395, 11.251115798950195);
	var myOptions = {
		zoom: 14,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.HYBRID,
		scrollwheel: false
	};
	
	map = new google.maps.Map(document.getElementById("mappa"),
	myOptions);
	
	
	// Construct the overlaied polygons
	rioPig = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('oddjGinrcAxLfEP\\nHfCc@h@qIdZ{@nBeAdAkAj@sAFeBCiJ}AW]Ku@g@e@jDcPXo@^IpEmT'),
		strokeColor: "#cc66cc",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#cc66cc",
		fillOpacity: 0.35
	});
	rioPit = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('evbjG}rscAiE{KZ]Ru@cBeFi@[O@i@f@mB_E{AeE`A}Bf@qDiAsAX{@]YSn@Y\\{@bDU`B}@bDmCxKvUxKoBjBxEfEXw@'),
		strokeColor: "#3366ff",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#3366ff",
		fillOpacity: 0.35
	});
	rioPro = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('yobjGk}rcAdPlHVf@d@ElC^lN`E|WlGvAr@rMfOFcHKwIeAcHwDsOwCwDaA}AoAiCuj@jV_@RIa@UCWRsHiFwBiBeAkBWo@e@l@Fr@Ez@Az@'),
		strokeColor: "#999999",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#999999",
		fillOpacity: 0.35
	});
	rioSfr = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('mwcjGwsscAfY~MaHpRn@dDkB`BmC|DoHcCQ_@{D}A_GmBzAsGdIs['),
		strokeColor: "#ffcc66",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#ffcc66",
		fillOpacity: 0.35
	});
	rioSni = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('qfcjG_ducAfH}VxDax@?uBp@kHVkDP_Av@l@\\gAzBvB_AtDcAhCqApCa@xAKlB@pD|@nCJvEUf@l@vFfB~A|AnE@l@rDrEsCdEJnAK~E{@`I\\dE_@QcB{BiBmAyANu@f@{@|@{B`EoAt@}@Vc@`@O`@cAqAZy@YU'),
		strokeColor: "#33cc00",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#33cc00",
		fillOpacity: 0.35
	});
	rioSsp = new google.maps.Polygon({
		paths: google.maps.geometry.encoding.decodePath('gpbjGq}rcAyKgFgMmGqFkCoCeA~EoR`UrKuBdB~EjEXy@nFvMa@j@DdAU`B'),
		strokeColor: "#ff0000",
		strokeOpacity: 0.8,
		strokeWeight: 2,
		fillColor: "#ff0000",
		fillOpacity: 0.35
	});
	
	rioPig.setMap(map);
	rioPit.setMap(map);
	rioPro.setMap(map);
	rioSfr.setMap(map);
	rioSni.setMap(map);
	rioSsp.setMap(map);



	infoWindow = new google.maps.InfoWindow({
					content: ''
				});

	// A function to read the data
	if (typeof(linkStr) == 'string' ) {
		$.get(linkStr,
			function(data) {
				var markers = $(data).find("marker");  
				
				for (var i = 0; i < markers.length; i++) {    
				var lat = parseFloat(markers[i].getAttribute("lat"));
				var lng = parseFloat(markers[i].getAttribute("lng"));
				var pnt = new google.maps.LatLng(lat,lng);
				var txt = markers[i].getAttribute("text");
				var icn = markers[i].getAttribute("icon");
				var lnk = markers[i].getAttribute("link");
				var marker = setMarkers(pnt,txt,lnk,icn,i);
			}
		});
	} else {
		// viene passato oggetto con proprieta' per marker
		var pnt = new google.maps.LatLng(linkStr.lat,linkStr.lng);
		var txt = linkStr.txt;
		var icn = linkStr.icon;
		var name = linkStr.name;
		var en = linkStr.en;
		var marker = setMarker(pnt,txt,icn,name,en);
	}
}

function setMarkers(pnt,txt,lnk,icn,cur) {
	// Add markers to the map
	var image = new google.maps.MarkerImage(
					icn,
					new google.maps.Size(27, 27),
					new google.maps.Point(0,0),
					new google.maps.Point(14, 25)
				);
	
	var marker = new google.maps.Marker({
					position: pnt,
					map: map,
					icon: image
				});
	
	google.maps.event.addListener(marker, "click", function() {
		infoWindow.setContent(txt+'<p style="padding-top: 10px;"><a href="'+lnk+'">vedi dettagli &raquo;</a></p>');
		infoWindow.open(map,marker);
	});
	
	mrk[cur] = marker;
	win[cur] = txt+'<p style="padding-top: 10px;"><a href="'+lnk+'">vedi dettagli &raquo;</a></p>';
	return marker;
}

function setMarker(pnt,txt,icn,name,en) {
	infoWindow.txt = txt;
	infoWindow.opn = '<div style="width:250px; height:140px;">';
	infoWindow.cls = '</div>';
	
	if(en) {
		infoWindow.dto = '<p class="mapintro"><strong>Ottieni indicazioni stradali:</strong> To here - <a href="javascript:fromhere()">From here</a></p>' +
			 '<p class="maplabel">Start address</p>' +
			 '<form action="http://maps.google.com/maps" method="get" target="_blank">' +
			 '<input type="text" SIZE=30 MAXLENGTH=40 name="saddr" id="saddr" value="" /> <INPUT value="Vai" TYPE="SUBMIT">' +
			 '<input type="hidden" name="daddr" value="' + pnt.toString() + ' ('+ name +')' +'"/>' +
			 '<p><a class="maptorna" href="javascript:dirback()">&laquo; back</a></p>';
		// The info window version with the "to here" form open
		infoWindow.dfr = '<p class="mapintro"><strong>Ottieni indicazioni stradali:</strong> <a href="javascript:tohere()">To here</a> - From here</p>' +
			 '<p class="maplabel">Destination address</p>' +
			 '<form action="http://maps.google.com/maps" method="get"" target="_blank">' +
			 '<input type="text" SIZE=30 MAXLENGTH=40 name="daddr" id="daddr" value="" /> <INPUT value="Vai" TYPE="SUBMIT">' +
			 '<input type="hidden" name="saddr" value="' + pnt.toString() + ' ('+ name +')' +'"/>' +
			 '<p><a class="maptorna" href="javascript:dirback()">&laquo; back</a></p>';
	
		// The inactive version of the direction info
		infoWindow.dno = '<p class="mapintro">Ottieni indicazioni stradali: <a href="javascript:tohere()">To here</a> - <a href="javascript:fromhere()">From here</a></p>';
	} else {
		infoWindow.dto = '<p class="mapintro"><strong>Ottieni indicazioni stradali:</strong> A qui - <a href="javascript:fromhere()">Da qui</a></p>' +
			 '<p class="maplabel">Indirizzo di partenza</p>' +
			 '<form action="http://maps.google.com/maps" method="get" target="_blank">' +
			 '<input type="text" SIZE=30 MAXLENGTH=40 name="saddr" id="saddr" value="" /> <INPUT value="Vai" TYPE="SUBMIT">' +
			 '<input type="hidden" name="daddr" value="' + pnt.toString() + ' ('+ name +')' +'"/>' +
			 '<p><a class="maptorna" href="javascript:dirback()">&laquo; indietro</a></p>';
		// The info window version with the "to here" form open
		infoWindow.dfr = '<p class="mapintro"><strong>Ottieni indicazioni stradali:</strong> <a href="javascript:tohere()">A qui</a> - Da qui</p>' +
			 '<p class="maplabel">Indirizzo di arrivo</p>' +
			 '<form action="http://maps.google.com/maps" method="get"" target="_blank">' +
			 '<input type="text" SIZE=30 MAXLENGTH=40 name="daddr" id="daddr" value="" /> <INPUT value="Vai" TYPE="SUBMIT">' +
			 '<input type="hidden" name="saddr" value="' + pnt.toString() + ' ('+ name +')' +'"/>' +
			 '<p><a class="maptorna" href="javascript:dirback()">&laquo; indietro</a></p>';
	
		// The inactive version of the direction info
		infoWindow.dno = '<p class="mapintro">Ottieni indicazioni stradali: <a href="javascript:tohere()">A qui</a> - <a href="javascript:fromhere()">Da qui</a></p>';
	}


	var image = new google.maps.MarkerImage(
					icn,
					new google.maps.Size(27, 27),
					new google.maps.Point(0,0),
					new google.maps.Point(14, 25)
				);
	
	var marker = new google.maps.Marker({
					position: pnt,
					map: map,
					icon: image
				});

	
	google.maps.event.addListener(marker, "click", function() {
		infoWindow.setContent(infoWindow.opn + infoWindow.txt + infoWindow.dno + infoWindow.cls);
		infoWindow.open(map,marker);
	});
	

	return marker;
}

// This function picks up the click (over) and opens the corresponding info window
function myclick(i) {
	if(mrk.length < 2) return;
	infoWindow.setContent(win[i]);
	infoWindow.open(map,mrk[i]);
}

function tohere() {
		infoWindow.setContent(infoWindow.opn + infoWindow.txt + infoWindow.dto + infoWindow.cls);
}
function fromhere() {
		infoWindow.setContent(infoWindow.opn + infoWindow.txt + infoWindow.dfr + infoWindow.cls);
}
function dirback() {
		infoWindow.setContent(infoWindow.opn + infoWindow.txt + infoWindow.dno + infoWindow.cls);
}



$(initAll);
