$.noConflict();
var mailex = new RegExp('^[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*@[a-z0-9]+([_|\.|-]{1}[a-z0-9]+)*[\.]{1}[a-z]{2,4}$', 'i');
var span_hover = false;

function hide_popup() { jQuery('#ie6').hide(); }

function loc2arn(loc) {
	if (loc != "") {
		var size = loc.length;
		if (loc.charAt(loc.length-1) == "/") size--;
		return "Dossier racine <img src=\"template/anfpp/img/coll/arrow.png\" alt=\">\" /> "+(loc.substr(0, size)).replace(/\//g, " <img src=\"template/anfpp/img/coll/arrow.png\" alt=\">\" /> ");
	}
	else return "Dossier racine";
}

function get_today() {
	var res = "fail";
	jQuery.ajax({
		type: 'POST',
		url: 'js/today.php',
		async: false,
		success: function(data) { res = data; }
	});
	return res;
}

function get_options_hour() {
	res = '';
	for (i=0;i<24;i++) res += '<option value="'+str_pad(i, 2, "0", "STR_PAD_LEFT")+'">'+str_pad(i, 2, "0", "STR_PAD_LEFT")+'</option>';
	return res;
}

function get_options_minute() {
	res = '';
	for (i=0;i<60;i+=15) res += '<option value="'+str_pad(i, 2, "0", "STR_PAD_LEFT")+'">'+str_pad(i, 2, "0", "STR_PAD_LEFT")+'</option>';
	return res;
}

function display_popup(html) {
	jQuery('div#popup').html('<a title="Fermer"></a>'+html);
	jQuery('div#overlay').fadeIn(function() { jQuery(this).find('input[type=text]:eq(0)').focus(); });
}



var offset_actu = 108; // décalage entre le bord haut du container et le bord haut du module d'actu
var offset_corps = 157; // décalage entre le bord haut du container et le bord haut du corps
var offset_bottom = 40; // espace supplémentaire à ajouter en bas du container pour le footer
var offset_rubriques = 0; // espace supplémentaire à ajouter en bas du corps pour le div.rubriques (194)
var offset_ckeditor = 307; // espace supplémentaire à allouer à ckeditor
var offset_gest = 496; // taille minimale des divs du gestionnaire de fichiers

function setHeight(gest) {
	var padding = 0;
	
	// on gère le cas du div.rubriques (index.php)
	if (jQuery('#corps .rubriques').length > 0) {
		jQuery('#corps').css('padding-bottom', offset_rubriques+'px');
		padding = offset_rubriques;
	}
	
	else if (jQuery('#corps textarea.ckeditor').length > 0) padding = offset_ckeditor; // on gère le cas de ckeditor (espace collaboratif - webmail)
	
	// on gère, si demandé, le cas des divs #arbo et #nav (espace collaboratif - gestionnaire de fichiers)
	else if (gest) {
		var h_arbo = 0, h_nav = 0;
		if (jQuery('#corps div#arbo').length > 0) h_arbo = jQuery('#corps div#arbo').height();
		if (jQuery('#corps div#nav').length > 0) h_nav = jQuery('#corps div#nav').height();
		if ((h_arbo > h_nav) && (h_arbo > offset_gest)) padding += h_arbo - offset_gest;
		else if ((h_arbo <= h_nav) && (h_nav > offset_gest)) padding = h_nav - offset_gest;
	}
	
	jQuery('#actu').css('height', 'auto'); // on rétablit la valeur par défaut de la hauteur du module d'actu avant de faire nos comparaisons
	var height = jQuery('#actu').height() + offset_actu;
	var height_corps = jQuery('#corps').height() + offset_corps + padding;
	if (height_corps > height) { // si le corps est plus grand que le module d'actu...
		height = height_corps; // ...on le prend comme référence pour la hauteur du container...
		jQuery('#actu').css('height', height_corps - offset_actu); // ...et on agrandit le module d'actu pour qu'il fasse la même hauteur
	}
	else jQuery('#corps').css('height', height - offset_corps); // sinon, on agrandit le corps pour qu'il fasse la même hauteur que le module d'actu
	jQuery('#container, #main').css('height', height + offset_bottom);
}

function get_events() {
	if (jQuery('table#agenda').length > 0) {
		var cpt = 0, nb = jQuery('table#agenda td').length;
		jQuery('table#agenda td').each(function() {
			cpt++;
			var item = jQuery(this);
			var day = item.children('p:first-child').children('a').attr('rel');
			jQuery.post("js/events.php", { day: day }, function(data) {
				item.children('div.event').remove();
				item.append(data);
				if (cpt == nb) setHeight();
			});
		});
	}
	else setHeight();
}



jQuery(document).ready(function() {
	get_events();
	jQuery('div#popup > a:first-child').live('click', function() { jQuery('div#overlay').fadeOut(); });
	
	// Identification à l'espace adhérent
	jQuery('div.topform form').bind('submit', function() {
		var check = true;
		jQuery(this).children('input[type=text], input[type=password]').each(function() {
			check = (check && (jQuery(this).val() != ''));
			if (jQuery(this).attr('name') == "mail") check = (check && (mailex.test(jQuery(this).val())));
		});
		if ((!check) && (jQuery(this).parent('div').is('#login'))) jQuery('#header p.error').slideDown('slow', function() { setTimeout("jQuery('#header p.error').slideUp('slow')", 3000); });
		return check;
	});
	
	// (BEL) Gestion du prix
	jQuery('div.desc + a + br + a + br + a + form select').bind('change', function() {
		var s = location.search;
		var that = jQuery(this);
		jQuery.post("js/price.php", { id: parseInt(s.substr(s.lastIndexOf('=')+1)), v: that.val() }, function(data) {
			that.siblings('input[type=text][disabled]').val(data+" €");
		});
	});
	
	// (COLL) Formulaires
	jQuery('form.coll#login, form.coll#post, form.coll#event').live('submit', function() {
		var check = true;
		jQuery(this).find('input, textarea, select').each(function() { check = (check && (jQuery(this).val() != "")) });
		if (!check) jQuery(this).find('p.warning').slideDown();
		return check;
	});
	
	// (COLL) Webmail
	jQuery('div.to a').bind('click', function() { jQuery(this).parent('div.to').find('input[type=checkbox]').attr('checked', jQuery(this).is(':not(":first-child")')); });
	
	// (COLL) Gestionnaire de fichiers
	jQuery('div#arbo a:not(".select"), div#nav a.file.folder').live('click', function() {
		if (!span_hover) {
			var location = jQuery(this).attr('rel');
			jQuery.post("js/browser.php", { location: location }, function(data) {
				jQuery('div#arbo').html(data);
				jQuery.post("js/navigator.php", { location: location }, function(data) {
					jQuery('div#nav').html("<div id=\"ariane\">"+loc2arn(location)+"</div>"+data);
					setHeight(true);
				});
			});
		}
	});
	
	jQuery('div#nav a.file:not(".folder"):not(".select")').live('click', function() {
		var file = jQuery(this).children('p').text();
		jQuery('div#nav a.file').removeClass('select');
		jQuery(this).addClass('select');
		jQuery('div#nav div#versions').remove();
		jQuery.post("js/versions.php", { file: file, loc: jQuery('div#arbo a.select').attr('rel') }, function(data) {
			jQuery('div#nav').append('<div id="versions">'+data+'</div>');
			setHeight(true);
		});
	});
	
	jQuery('div#versions a.delete').live('click', function() {
		var item = jQuery(this);
		jQuery.post("js/delete_version.php", { file: item.attr('rel') }, function() {
			item.parent('div.version').remove();
			if (jQuery('div.version').length == 0) jQuery('div#versions, div#nav a.file.select').remove();
		});
	});
	
	jQuery('div#nav a.file span').live('mouseenter', function() { span_hover = true; });
	jQuery('div#nav a.file span').live('mouseleave', function() { span_hover = false; });
	
	jQuery('div#nav a.file span').live('click', function(event) {
		var loc = jQuery(this).parent('a.file').attr('rel');
		if (jQuery(this).hasClass('rename')) {
			var old = loc;
			var idx = (loc.lastIndexOf("/"))+1;
			if (idx > 0) {
				old = loc.substr(idx);
				loc = loc.substring(0, idx);
			}
			var name = old;
			idx = old.lastIndexOf(".");
			if (idx > 0) name = old.substring(0, idx);
			display_popup('<h1>Renommer</h1><form method="post" class="coll" id="rename"><label for="name">Saisissez le nouveau nom :</label> <input type="text" name="name" value="'+name+'" /><br/><input type="submit" value="Valider" /><input type="hidden" name="old" value="'+old+'" /><input type="hidden" name="loc" value="'+loc+'" /><p class="warning">Veuillez saisir un nom.</p></form>');
		}
		else if (jQuery(this).hasClass('delete')) {
			if (confirm("Êtes-vous sûr(e) de vouloir supprimer cet élément ?")) {
				jQuery.post("js/delete.php", { loc: loc }, function() {
					var location = jQuery('div#arbo a.select').attr('rel');
					jQuery.post("js/browser.php", { location: location }, function(data) {
						jQuery('div#arbo').html(data);
						jQuery.post("js/navigator.php", { location: location }, function(data) {
							jQuery('div#nav').html("<div id=\"ariane\">"+loc2arn(location)+"</div>"+data);
							setHeight(true);
						});
					});
				});
			}
		}
		event.stopPropagation();
	});
	
	jQuery('div#popup form.coll#rename').live('submit', function() {
		var loc = jQuery(this).children('input[type=hidden][name=loc]').val();
		var old = jQuery(this).children('input[type=hidden][name=old]').val();
		var name = jQuery(this).children('input[type=text][name=name]').val();
		if (name != "") {
			var idx = old.lastIndexOf(".");
			if (idx > 0) name = name+old.substr(idx);
			jQuery.post("js/rename.php", { loc: loc, old: old, name: name }, function() {
				var location = jQuery('div#arbo a.select').attr('rel');
				jQuery.post("js/browser.php", { location: location }, function(data) {
					jQuery('div#arbo').html(data);
					jQuery.post("js/navigator.php", { location: location }, function(data) {
						jQuery('div#nav').html("<div id=\"ariane\">"+loc2arn(location)+"</div>"+data);
						setHeight(true);
						jQuery('div#overlay').fadeOut();
					});
				});
			});
		}
		else jQuery(this).find('p.warning').slideDown();
		return false;
	});
	
	jQuery('h2 a#mkdir').bind('click', function() {
		display_popup('<h1>Créer un nouveau dossier</h1><form method="post" class="coll" id="mkdir"><label for="name">Saisissez le nom du dossier :</label> <input type="text" name="name" value="" /><br/><input type="submit" value="Valider" /><input type="hidden" name="loc" value="'+jQuery('div#arbo a.select').attr('rel')+'" /><p class="warning">Veuillez saisir un nom.</p></form>');
	});
	
	jQuery('div#popup form.coll#mkdir').live('submit', function() {
		var loc = jQuery(this).children('input[type=hidden][name=loc]').val();
		var name = jQuery(this).children('input[type=text][name=name]').val();
		if (name != "") {
			jQuery.post("js/mkdir.php", { loc: loc, name: name }, function() {
				jQuery.post("js/browser.php", { location: loc }, function(data) {
					jQuery('div#arbo').html(data);
					jQuery.post("js/navigator.php", { location: loc }, function(data) {
						jQuery('div#nav').html("<div id=\"ariane\">"+loc2arn(loc)+"</div>"+data);
						setHeight(true);
						jQuery('div#overlay').fadeOut();
					});
				});
			});
		}
		else jQuery(this).find('p.warning').slideDown();
		return false;
	});
	
	jQuery('h2 a#upload').bind('click', function() {
		display_popup('<h1>Ajouter un fichier</h1><form method="post" action="include/upload.php" enctype="multipart/form-data" class="coll" id="upload"><label for="upload">Choisissez le fichier :</label> <input type="file" name="upload" /><br/><input type="submit" value="Valider" /><input type="hidden" name="loc" value="'+jQuery('div#arbo a.select').attr('rel')+'" /></form>');
	});
	
	// (COLL) Agenda
	jQuery('h2 a#print').bind('click', function() { window.print(); });
	
	jQuery('table#agenda caption a').live('click', function() {
		var date = jQuery(this).parent('caption').text();
		var way = jQuery(this).is(':first-child');
		jQuery.post("js/calendar.php", { date: date, way: way }, function(data) {
			jQuery('table#agenda').remove();
			jQuery('#corps').append(data);
			get_events();
		});
	});
	
	jQuery('h2 a#event, table#agenda td p:first-child a').live('click', function() {
		var day = get_today();
		if (jQuery(this).attr('rel')) day = jQuery(this).attr('rel');
		display_popup('<h1>Créer un évènement</h1><form method="post" action="include/event.php" class="coll" id="event"><label for="titre">Titre</label> <input type="text" name="titre" value="" /><br/><label for="desc" class="ta">Description</label> <textarea name="desc"></textarea><div class="fade"><label for="debut">Début</label> <input type="text" name="debut" value="'+day+'" /> <label for="debut_h">à</label> <select name="debut_h">'+get_options_hour()+'</select> <label for="debut_m">h</label> <select name="debut_m">'+get_options_minute()+'</select><br/><label for="fin">Fin</label> <input type="text" name="fin" value="'+day+'" /> <label for="fin_h">à</label> <select name="fin_h">'+get_options_hour()+'</select> <label for="fin_m">h</label> <select name="fin_m">'+get_options_minute()+'</select></div><div class="fade"><label for="public">Visibilité</label> <select name="public"><option value="1">Public</option><option value="0">Privé</option></select><br/><label for="important">Important</label> <select name="important"><option value="1">Oui</option><option value="0">Non</option></select></div><br/><input type="submit" value="Valider" /><p class="warning">Veuillez compléter correctement le formulaire.</p></form>');
		jQuery('input[type=text][name=debut], input[type=text][name=fin]').datepicker({
			buttonImage: 'template/anfpp/img/coll/icon_calendar.png',
			buttonImageOnly: true,
			dateFormat: 'yy-mm-dd',
			showOn: 'button'
		});
	});
	
	jQuery('table#agenda div.event a').live('click', function() {
		if (confirm("Êtes-vous sûr de vouloir supprimer cet évènement ?")) {
			var id = jQuery(this).attr('rel');
			jQuery.post("js/delete_event.php", { id: id }, function() { get_events(); });
		}
	});
	
	// (COLL) Forum + Gestionnaire de tâches
	jQuery('table.forum tr:odd').addClass('even');
	jQuery('table.forum tr:even').addClass('odd');
	
	jQuery('table.forum.tasks td:last-child input[type=checkbox]').live('change', function() {
		if (confirm("Êtes-vous sûr de vouloir valider cette tâche ?\nCela aura pour effet de la faire disparaître de cette liste.")) {
			var id = jQuery(this).attr('id');
			jQuery.post("js/validate.php", { id: id }, function(data) {
				jQuery('table.forum.tasks').remove();
				jQuery('#corps').append(data);
			});
		}
		else jQuery(this).attr('checked', '');
	});
	
	jQuery('table.forum.tasks td:last-child a').live('click', function() {
		if (confirm("Êtes-vous sûr de vouloir supprimer cette tâche ?\nCeci s'appliquera à tous les utilisateurs concernés.")) {
			var id = jQuery(this).attr('rel');
			jQuery.post("js/delete_task.php", { id: id }, function(data) {
				jQuery('table.forum.tasks').remove();
				jQuery('#corps').append(data);
			});
		}
	});
	
});
