// REGEX Validation
function isValidText(text) {
	var filter = /^[A-Za-z0-9]+$/;
	return filter.test(text);
}

function isValidPassword(text) {
	var filter = /[A-Za-z0-9]{5,}/;
	return filter.test(text);
}

function isValidEmail(text) {
	var filter = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return filter.test(text);
}

// Clear field data 
function clearForm(form) {
	$(':input', form).each(function() {
 		
 		var type = this.type;
 		var tag = this.tagName.toLowerCase();
		
		if (type == 'text' || tag == 'textarea') {
  			this.value = "";
		} else if (type == 'checkbox') {
   			this.checked = false;
		} else if (tag == 'select') {
   			this.selectedIndex = 0;
   		}
	});
};

/**
 * Redirige l'utilisateur vers l'URL.
 * 
 * @param url
 * 			URL de destination (relatif à l'application)
 */
function uohRedirect(url) {
	window.location = UOH_Constants.CONTEXT + url;
}

/**
 * Lance une requête de recherche.
 * 
 * @param query
 * 			Texte recherchée
 */
function uohExecuteSearch(query) {
	uohRedirect("/search?query=" + encodeURIComponent(query));
}

/**
 * Ajoute une notice dans le panier de l'utilisateur.
 * 
 * @param noticeId
 * 			Identifiant de la notice
 */
function uohAddNoticeToCaddie(noticeId) {
	$.ajax({
		url: UOH_Constants.CONTEXT + "/service/fr/uoh/panier/add_notice",
		type: "GET",
		data: {
			noticeid: noticeId,
			format: "json"
		},
		success: function(data) {
			if (data.state=="oo") {
				alert(UOH_I18N.CADDIE.ADDED_ALREADY);
		} else if (data.state=="ok") {
				alert(UOH_I18N.CADDIE.ADD_SUCCESS);
			}
		},
		error: function(jqXHR, textStatus, errorThrown) {
			alert(UOH_I18N.CADDIE.ADD_ERROR);
		}
	});
}

/**
 * Relanche une nouvelle recherche full-text (en utilisant le formulaire existant sur
 * la page) en effaçant tous les filtres.
 * @param {String} newSearch Nouveau texte à rechercher
 */
function uohNewRequestFullText(newSearch) {
	$('#search').val(newSearch);
	$('#fieldFiltres').val('');
	$('#fieldNewFiltre').val('');
	$('#fieldDelFiltre').val('');
	$('#fieldPage').val(1);

	$('#rechercheForm').submit();
}

function uohPostResultsForm(filtres,newFiltre,delFiltre,page)
{
	$('#fieldFiltres').val(filtres);
	$('#fieldNewFiltre').val(newFiltre);
	$('#fieldDelFiltre').val(delFiltre);

	if(page!=null && page) {
		$('#fieldPage').val(page);
	}

	$('#rechercheForm').submit();
}

function escapeJavaScript(text) {
	// Pour simplifier, on suppose que la chaîne ne contient pas de '\'.
	return text.replace(/'/g, "\'").replace(/"/g, "\\\"");
}

$(document).ready(function(){
	// Ouverture des liens externes dans une nouvelle fenêtre.
	$("a[rel='external']").attr('target', '_blank');

	// Tout bloc clickable permet d'ouvrir le lien qu'il contient. 
	$(".uohClickableContent").each(function(){
		var ctl = $(this);
		var link = $('.uohContentLink:first[href]', this);

		ctl.click(function(ev){
			if (link.attr('target') == '_blank') {
				window.open(link.attr('href'));
			} else {
				window.location = link.attr('href');
			}
			ev.preventDefault();
		});
	});

	// Champs "Lire la suite"...
	$('.uohReadMoreArea').each(function(){
		var readBox = $(this);
		var contentArea = readBox.find(">.uohContentArea");
		var content = contentArea.find(">.uohContent");
		var contentHeight = content.height();

		var MAX_HEIGHT = contentArea.height();

		if (contentHeight > MAX_HEIGHT) {
			readBox.addClass('uohReadMoreAreaCollapsed');
			$('<div class="uohReadMoreMask" />').appendTo(contentArea);

			readBox.append($('<a href="#" class="uohReadMore uohReadMoreExpand" />').append($('<span />').text(UOH_I18N.READMORE)).click(function(ev){
				ev.preventDefault();
				contentArea.height(content.height());
				readBox.removeClass('uohReadMoreAreaCollapsed');
				readBox.addClass('uohReadMoreAreaExpanded');
			}));
			readBox.append($('<a href="#" class="uohReadMore uohReadMoreCollapse" />').append($('<span />').text(UOH_I18N.READLESS)).click(function(ev){
				ev.preventDefault();
				contentArea.height(MAX_HEIGHT);
				readBox.addClass('uohReadMoreAreaCollapsed');
				readBox.removeClass('uohReadMoreAreaExpanded');
			}));
		}
	});

	// Affichage des contenus cachés.
	$('.uohDelayDisplay').removeClass('uohDelayDisplay');

	// Conservation du footer en bas de la fenêtre.
	function updateFooterPosition() {
		var footer = $('#footer');
		var footerMarker = $('#footerMarker');
		if ($(window).height() > footerMarker.offset().top + footer.outerHeight()) {
			if (footer.css('position') != 'fixed') {
				footer.css({
					position: 'fixed',
					bottom: 0
				});
			}
		} else {
			if (footer.css('position') != 'static') {
				footer.css({
					position: 'static'
				});
			}
		}
	}
	$(window).resize(updateFooterPosition);
	$('#globalPage').resize(updateFooterPosition);
	updateFooterPosition();
});

