var openedContent = '';
var contentFx;

var MailValidator = new Class({
	validateSender: function(element) {
		if (element.get('value') == '') {
			new StickyWin.PointyTip('Nome', 'Questo campo è obbligatorio', {
				relativeTo: element.get('id')
			});
			return false;
		} else {
			return true;
		}
	},
	
	validateEmail: function(element) {
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if (element.get('value') == '' || !reg.test(element.get('value'))) {
			new StickyWin.PointyTip('E-mail', 'L\'indirizzo inserito non è corretto', {
				relativeTo: element.get('id')
			});
			return false;
		} else {
			return true;
		}
	},
	
	validateSubject: function(element) {
		if (element.get('value') == '') {
			new StickyWin.PointyTip('Oggetto', 'Questo campo è obbligatorio', {
				relativeTo: element.get('id')
			});
			return false;
		} else {
			return true;
		}
	},
	
	validateText: function(element) {
		if (element.get('value') == '') {
			new StickyWin.PointyTip('Testo del messaggio', 'Questo campo è obbligatorio', {
				relativeTo: element.get('id')
			});
			return false;
		} else {
			return true;
		}
	},
	
	validateAntispam: function(element, comparison) {
		if (element.get('value') != comparison) {
			new StickyWin.PointyTip('Antispam', 'Devi scrivere «' + comparison + '» (senza virgolette)<br />in questo campo.', {
				relativeTo: element.get('id')
			});
			return false;
		} else {
			return true;
		}
	}
});

function resizeBackground(bg, relative, callback) {
	var parentW = relative.getSize().x;
	var parentH = relative.getSize().y;
	var parentRatio = parentH / parentW;
	var bgRatio = bg.getSize().y / bg.getSize().x;
	
	if (bg.getSize().y < bg.getSize().x) {
		// orizzontale
		bg.setStyle('width', parentW + 'px');
		var bgH = parentW * bgRatio;
		if (bgH < parentH) {
			bg.setStyles({
				'height': parentH + 'px',
				'width': (parentH / bgRatio) + 'px' 
			});
		} else {
			bg.setStyle('height', bgH + 'px');
		}	
	} else {
		// verticale
		bg.setStyles({
			'height': parentH + 'px',
			'width': (parentH / bgRatio) + 'px' 
		});
	}
	
	callback;
}

function manageContatti() {
	$("qrcode").setStyle("display","block");
	var a = new Fx.Morph("qrcode", {
		transition: Fx.Transitions.Cubic.easeOut
	});
	$("qrcode").addEvent("mouseenter",function() {
		a.cancel();
		a.start({height:"280px"})
	});
	$("qrcode").addEvent("mouseleave",function() {
		a.cancel();
		a.start({height:"100px"})
	});
}

function manageMailForm() {
	mailValidator = new MailValidator();
	
	var a = new Request({
		url: "poluzmail.php",
		onComplete: function(b){
			b=="Messaggio inviato"?$("mailoutput").addClass("success"):$("mailoutput").addClass("failure");
			$("mailoutput").set("html",b);
			$("mailoutput").setStyle("display","block")},
		onFailure:function(){
			$("mailoutput").addClass("failure");
			$("mailoutput").set("html","Si \u00e8 verificato un errore durante l'invio. Per favore, riprova tra un istante");
			$("mailoutput").setStyle("display","block")}
	});
	
	$("sendmail").addEvent("click", function(b){
		$$('.StickyWinInstance').each(function(el) {
			el.dispose();
		});
		new Event(b).stop();
		var tuttoOk = true;
		if (!mailValidator.validateSender($('sendername'))) {
			tuttoOk = false;
		}
		if (!mailValidator.validateEmail($('sendermail'))) {
			tuttoOk = false;
		}
		if (!mailValidator.validateSubject($('subject'))) {
			tuttoOk = false;
		}
		if (!mailValidator.validateText($('messagetext'))) {
			tuttoOk = false;
		}
		if (!mailValidator.validateAntispam($('noschifo'), 'nicola')) {
			tuttoOk = false;
		}
		if (tuttoOk) {
			a.post({
				sendername: $("sendername").get("value"),
				sendermail: $("sendermail").get("value"),
				subject: $("subject").get("value"),
				messagetext: $("messagetext").get("value"),
				noschifo: $("noschifo").get("value"),
				ajaxcall: "true"
			});
		}
	});
	
	// controllo al blur
	$('sendername').addEvent('blur', function(e2) {
		mailValidator.validateSender(this);
	});
	$('sendermail').addEvent('blur', function(e2) {
		mailValidator.validateEmail(this);
	});
	$('subject').addEvent('blur', function(e2) {
		mailValidator.validateSubject(this);
	});
	$('messagetext').addEvent('blur', function(e2) {
		mailValidator.validateText(this);
	});
	$('noschifo').addEvent('blur', function(e2) {
		mailValidator.validateAntispam(this, 'nicola');
	});
}

function manageNerdyBits() {
	var opened = false;
	var element = $('nerdybits-title');
	var moveHeaderFx = new Fx.Morph("nerdybits-title");
	var initialTopPosition = element.getPosition($('content')).y;
	element.setStyle('top', initialTopPosition);
	element.addEvent('click', function() {
		if (!opened) {
			$('throbber').setStyle('display', 'block');
			$$('#content .text').fade('out');
			$$('#content h2').fade('out');
			moveHeaderFx.start({
				'top': '0px'
			}).chain(function() {
				$('nerdybits-content').fade('hide').removeClass('hide').fade('in');
				$('throbber').setStyle('display', 'none');
				$('nerdybits-open').setStyle('display', 'none');
				$('nerdybits-close').setStyle('display', 'block');
			});
			opened = true;
		} else {
			$('throbber').setStyle('display', 'block');
			$('nerdybits-content').fade('out');
			moveHeaderFx.start({
				'top': initialTopPosition + 'px'
			}).chain(function() {
				$$('#content .text').fade('in');
				$$('#content h2').fade('in');
				$('nerdybits-open').setStyle('display', 'block');
				$('nerdybits-close').setStyle('display', 'none');
				opened = false;
				$('throbber').setStyle('display', 'none');
			});
		}
	});
	element.addEvent('mouseover', function() {
		element.fade(0.83);
	});
	element.addEvent('mouseout', function() {
		element.fade(1);
	});
}

function hideContent(div, callback) {
	div.fade('out');
	$$('.link-js').each(function(element) {
		element.removeClass('selected');
	});
	callback;
};

function loadContent(url) {
	$('throbber').setStyle('display', 'block');
	
	contentFx.start({
		'display': 'block',
		'opacity': 0
	}).chain(function() {
		openedContent = url;
		new Request({
			url: url,
			onComplete: function(response) {
				$('content').set('html', response);
				$('throbber').setStyle('display', 'none');
				contentFx.start({
					'opacity': 1
				});
				if (url == "pages/contatti.php"){
					manageContatti();
					manageMailForm();
				}
				if (url == "pages/conoscenze.php"){
					manageNerdyBits();
				}
			}
		}).get();
	});
}

window.addEvent('domready', function() {
	$('bigimage').fade('hide').removeClass('hide');
	
	contentFx = new Fx.Morph('content');

	$$('.link-js').each(function(element) {
		element.addEvent('click', function(event) {
			event.preventDefault();
			hideContent($('content'), true);
			if (openedContent != element.get('href')) {
				this.addClass('selected')
				loadContent(element.get('href'));
			} else {
				openedContent = '';
			}
		});
	});
	
	var loadbg = new Element('span', {
		html: 'Carico sfondo...'
	});
	loadbg.inject($('throbber'));
	$('throbber').addClass('wide');
	
});

window.addEvent('load', function() {
	resizeBackground($('bigimage'), $(window), $('bigimage').fade('in'));
	$('throbber').setStyle('display', 'none');
	$$('#throbber span').dispose();
	$('throbber').removeClass('wide');
});

window.addEvent('resize', function() {
	resizeBackground($('bigimage'), $(window), true);
});

