/*
 * common.js
 * requiert jQuery - http://jquery.com
 */

$(document).ready(function() {
	
	// Champ recherche
	var q = $('#search #q');
	var qvalue = q.val();
	q.focus(function(){
		if ($(this).val() == qvalue) $(this).val('');
	}).blur(function(){
		if ($(this).val() == '') $(this).val(qvalue);
	});
	
	// Widgets
	var textSize = {
		'largest':'[@WIDGETS_TEXT_LARGEST]',
		'large':'[@WIDGETS_TEXT_LARGE]',
		'medium':'[@WIDGETS_TEXT_MEDIUM]'
	};
	
	var currentSize = 'medium';
	
	$('<a></a>')
		.appendTo('#widgets')
		.attr('id', 'wPrint')
		.attr('href', document.location)
		.attr('title', '[@WIDGETS_PRINT]')
		.bind('click', function() {
			window.print();
			return false;
		});

	if (true === $('#widgets').hasClass('withTextSize')) {
		var resizable = $('div.wResizable');
		for (var i in textSize) {
			$('<a></a>')
				.appendTo('#widgets')
				.attr('id','wTextSize-'+i)
				.attr('href', document.location)
				.attr('title', textSize[i])
				.bind('click', {size: i}, function(e) {
					resizable.removeClass(currentSize).addClass(e.data.size);
					$(this).blur().addClass('current').siblings().removeClass('current');
					currentSize = e.data.size;
					return false;
				});
		}
		resizable.addClass(currentSize);
		$('a#wTextSize-' + currentSize).addClass('current');
	}

	// Article : resumes
	var abstracts = $('div.abstract');
	abstracts.not(':first').addClass('hidden');
	$('#navAbstracts a').eq(0).addClass('active').end().click(function() {
		abstracts.addClass('hidden');
		$('div' + $(this).attr('href')).removeClass('hidden');
		$(this).blur().addClass('active').siblings('a').removeClass();
		return false;
	});
	
	// Article : suppression des mises en forme locales sur les images
	$('img').removeAttr('style');
	
	// Article : notes marginales (fix superpositions)
	var prevBottom = 0;
	var sidenotes = $('ul.sidenotes');
	var sidenotesLastIndex = sidenotes.length - 1;
	
	sidenotes.each(function() {
		
		var self = $(this);
		
		// Ajustement de la position verticale
		// selon celle de la note precedente
		var thisTop = self.offset().top;
		var diffPos = prevBottom - thisTop;
		prevBottom = thisTop + self.height();
		
		if (diffPos > 0) {
			self.css('top', diffPos);
			prevBottom += diffPos;
		}
		
		// Ajustement du bloc texte si les notes sont plus hautes
		if (sidenotes.index(this) == sidenotesLastIndex) {
			var textContainer = $('#text > div.text');
			var textLastChild = textContainer.children(':last');
			var textBottom = textLastChild.offset().top + textLastChild.height();
			var diffBottom = prevBottom - textBottom;
			if (diffBottom > 0) {
				textContainer.css('padding-bottom', diffBottom + 'px');
			}
		}
		
	});
	
	// Acces restreint
	var loginError = $('#loginbox strong.error');
	var loginBlock = $('#loginbox div.togglable');
	
	loginBlock.addClass('fixed');
	
	if (loginError.length < 1 && $('#loginbox').hasClass('log-out') === false) {
		loginBlock.addClass('hidden');
	}
	
	$('#loginbox.log-in legend > span')
		.hover(function(){ $(this).addClass('hover'); }, function(){ $(this).removeClass('hover'); })
		.click(function(){ loginBlock.toggleClass('hidden'); return false; });
		
	$('#loginbox.log-in :reset')
		.click(function() {
			loginBlock.addClass('hidden');
			loginError.remove();
			return false;
		});
	
	// Signaler : verifications
	var isMail = /^[\w\-]+(\.[\w\-]+)*@[\w\-]+(\.[\w\-]+)*\.[\w\-]{2,}$/;
	$('#sendTo').submit(function() {
		var error = new Array();
		$(this).find('label').removeClass('error');
		if (false === isMail.test($('#to').val())) { error[0] = 'to'; }
		if (false === isMail.test($('#from').val())) { error[1] = 'from'; }
		if (error.length > 0) {
			for (e in error) {
				$('label[for='+error[e]+']').addClass('error');
			}
			window.location.href = '#sendTo';
			return false;
		}
		return true;
	});
	
});
