// JavaScript Document
var Site = Class.create();

Site.prototype = {
	initialize: function(){
		this.contentBody = $('contentBody'); // mettere su costanti gli id dei vari elementi della pagina
		this.menuContainer = $('menu');
	},
	updateElementFromAjax: function(url, destination){
		destination.update('<img src="images/loading.gif"/>');
		var req = new Ajax.Request(url, {
			method: 'get',
			onSuccess: function(transport) {
				destination.hide();
				destination.update(transport.responseText);
				destination.appear();
			},
			onFailure: function(transport) {
				//var pageBody = $('contentBody');
				destination.update('Errore');
			}
		});
		return req;
	},
	openPage: function(url, menuLinkId){
		
		f = function(){
			site.switchMenuSelection(this.menuLinkId);
			//alert('o');
		}.bind({menuLinkId: menuLinkId});
		
		Ajax.Responders.register({
		  onComplete: f
		});
		this.updateElementFromAjax(url, this.contentBody);
		/*Event.observe(req,'success',function(){
			this.switchMenuSelection(this.menuLinkId);
		}.bind({menuLinkId: menuLinkId}));*/
	},
	loadMenu: function(lang){
		this.updateElementFromAjax('menu.php?lang='+lang, this.menuContainer );
	},
	switchMenuSelection: function(id){
		Ajax.Responders.unregister({
		  onComplete: f
		});
		var menuItems = site.menuContainer.select('li');
		menuItems.invoke('removeClassName', 'selected');
		$(id).addClassName('selected');	
	}
}

function switchPhoto(num){
	var photoContainer = $('imageContainer');
	photoContainer.update('<img src="images/loading.gif"/>');
	var photoPath = "gallery/photo"+num+'.jpg';
	var img = new Image();
	img.src = photoPath;
	Event.observe(img,'load',function(){
		this.photoContainer.select('img')[0].src = this.img.src;
	}.bind({photoContainer: photoContainer, img: img}));
}


function sendContactEmail(){
	var name = $('contactsName').value;
	var senderEmail = $('contactsEmail').value;
	var message = $('contactsMessage').value;
	var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	if(reg.test(senderEmail)){
		site.updateElementFromAjax('utils/sendContactsMail.php?name='+name+'&email='+senderEmail+'&message='+message, $('contactsForm'));
		$('errorMessageContainer').update("");
		$('contactsPage').select('.hint')[0].update("");
	}else{
		$('errorMessageContainer').update("<p>Errore durante l'invio, controllare che i valori inseriti siano validi.</p>");
		$('contactsPage').select('.hint')[0].update("");
	}
}


function loadMap() {
  if (GBrowserIsCompatible()) {
	var map = new GMap2(document.getElementById("map"));
	//map.removeMapType(G_NORMAL_MAP);
	map.addControl(new GMapTypeControl());
	map.addControl(new GSmallMapControl());
	//map.addControl(new GOverviewMapControl());
	map.setCenter(new GLatLng(45.511585105190176, 12.182300186157227), 10); //(su-giu, sx-dx), -/+ zoom
	GEvent.addListener(map, "moveend", function() {
	  var center = map.getCenter();
	});
	 //mostra punto sulla mappa
	var marker1 = new GMarker(new GPoint(12.082300186157227, 45.561585105190176));
	map.addOverlay(marker1);
	var html1 = "<div align=left><b>b&amp;b Margherita</b><br />via Moniego Centro, 38 Noale(ve)</div>";
	GEvent.addListener(marker1, "mouseover", function(){marker1.openInfoWindowHtml(html1);});
  }
}

function initScrollingDiv(containerId){
	// vertical slider control
	var slider1 = new Control.Slider('handle1', 'track1', {
		axis: 'vertical',
		onSlide: function(v) { scrollVertical(v, $(containerId), slider1);  },
		onChange: function(v) { scrollVertical(v, $(containerId), slider1); }
	});
	
	// horizontal slider control
	var slider2 = new Control.Slider('handle2', 'track2', {
		onSlide: function(v) { scrollHorizontal(v, $(containerId), slider2);  },
		onChange: function(v) { scrollHorizontal(v, $(containerId), slider2); }
	});

	// scroll the element vertically based on its width and the slider maximum value
	function scrollVertical(value, element, slider) {
		element.scrollTop = Math.round(value/slider.maximum*(element.scrollHeight-element.offsetHeight));
	}
	
	// scroll the element horizontally based on its width and the slider maximum value
	function scrollHorizontal(value, element, slider) {
		element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
	}
	
	// disable vertical scrolling if text doesn't overflow the div
	if ($(containerId).scrollHeight <= $(containerId).offsetHeight) {
		slider1.setDisabled();
		$('track1').hide();
	}
	
	// disable horizontal scrolling if text doesn't overflow the div
	if ($(containerId).scrollWidth <= $(containerId).offsetWidth) {
		slider2.setDisabled();
		$('track2').hide();
	}
}