// JavaScript Document
function init_debug(){
	$('body').append('<div id="debug" class="little"></div>');
	$("#debug").click(function(){ $(this).toggleClass('little'); }) // DEBUGGER

}
function debug(txt){ $('#debug').prepend('<br/>'+txt); }
function confirmer(text, href){
	if(confirm(text)){ document.location.href = href; }	
	else return false;
}
function init_cobabox(){
	$('a[rel^=cobabox]').each(function(){
		var lnk_actuel = $(this).attr('href');
		if(lnk_actuel != "#"){
			$(this).attr('url', $(this).attr('href'));
			$(this).attr('href', '#');
		}
	});
	$('a[rel^=cobabox]').click(function(){								
		vars = $(this).attr('rel').split(" ");
		url = $(this).attr('url');
		cobabox(vars[1], vars[2], url);
		return false;
	});		
}
function toggle_menu(elt){
	$('li a').removeClass('on');
	$('li.sub').slideUp('slow');
	$(elt).parent().next('.sub').slideToggle('slow'); 
	$(elt).addClass('on');
}
function checkall(name, me){ 
	$('input[name*="'+name+'[]"]').attr('checked', me.checked); 
}
function report_error_field(field_id, message){
	$('#'+field_id).addClass('error');
	if(message){
		$('#'+field_id).next('span.aide').remove();
		$('#'+field_id).after('<span class="aide error">'+message+'</span>');
	} else {
		$('#'+field_id).next('span.aide').addClass('error');
	}
}
/* POP UP + FOCUS */
function popit(url,titre,w,h) {
	popwindow = window.open(url, "", "width="+w+", height="+h+", menubar=no, resizable=yes, toolbar=no, status=no, scrollbars=yes");
	if (window.focus) {popwindow.focus()}
	return false;
}


/* COBABOX ---------------------------------------------------------- */
function cobabox(w, h, u){
	
	var hauteur = document.body.offsetHeight;
	var largeur = document.body.offsetWidth;

	$('#cobabox').css('height', hauteur+'px');
	$('#cobabox').html ("<div id='fermeur' style='z-index: 10; position: absolute;'></div>"
		+"<div id='cobabox_cont' style='width:"+parseInt(parseInt(w)+20)+"px; height:"+parseInt(parseInt(h)+20)+"px; z-index: 1000; display:none;' class='dropshadow2'>"
		+"<iframe class='r5' src='"+u+"' width='"+w+"' height='"+h+"' frameborder='0'></iframe>"
		+"<a href='#' id='fermer_cobabox_btn' class='fermer_cobabox_btn' onClick='fermer_cobabox(); return false;'>Close</a>"
		+"</div>");
	$('#cobabox').fadeIn();
	$('#cobabox_cont').css('left', parseInt((largeur-w)/2)+"px");		
	$('#cobabox_cont').slideDown();
	$('#fermeur').css('height', hauteur+'px');
	$('#fermeur').css('width', '100%');

	//var depart = window.pageYOffset;
	//if(!depart) depart = document.documentElement.scrollTop;
	depart = 0;
	var windowheight = window.innerHeight; 
	if(!windowheight) windowheight = document.documentElement.clientHeight;
	var postop = depart+((windowheight-h)/2);
	//console.log(h);
    if(postop<=0) postop = 35;
	postop = parseInt(postop);
	$('#cobabox_cont').css('top', parseInt(postop)+"px");	
	$('#cobabox_cont').css('position', 'fixed');	
	
	$('embed').css('visibility', 'hidden');
	$('object').css('visibility', 'hidden');	
}
document.bloquer_fermeture_cobabox = '0';
function fermer_cobabox(){
	if(document.bloquer_fermeture_cobabox == '0'){
		
		$('#cobabox_cont').slideUp(500, function(){
			$('#cobabox').html('');
			$('#cobabox').fadeOut(500);
			$('embed').css('visibility', 'visible');
			$('object').css('visibility', 'visible');	
		});
		return false;	
	}
}
function cobabox_locker(){
	window.parent.document.getElementById("fermer_cobabox_btn").style.display = "none";
	window.parent.document.bloquer_fermeture_cobabox = '1';
}
function cobabox_unlocker(){
	window.parent.document.getElementById("fermer_cobabox_btn").style.display = "block";
	window.parent.document.bloquer_fermeture_cobabox = '0';
}
function resize_cobabox(pwidth){
	// argument optionnel : pheight
	var pheight = (arguments[1]) ? arguments[1] : '';
	var callback = (arguments[2]) ? arguments[2] : '';
	w = parseInt(pwidth);
	animduration = 500;
	largeur = window.parent.document.body.offsetWidth;
	$("#cobabox_cont iframe", window.parent.document).animate({ width: (w+20)+'px'}, animduration);
	$("#cobabox_cont", window.parent.document).animate(
		{width:(w+40)+'px', left: parseInt((largeur-w)/2)+"px"},animduration, function(){if(!pheight && callback){ eval(callback); }});

	if(pheight){
		h = parseInt(pheight);
		var hauteur = window.parent.innerHeight; 
		$("#cobabox_cont iframe", window.parent.document).animate( { height: (h+20)+'px'}, animduration);
		$("#cobabox_cont", window.parent.document).animate({height: (h+40)+'px', top: parseInt((hauteur-h)/2)+"px"}, animduration, function(){if(callback){ eval(callback); }});
	}
}
/* COBATAB ---------------------------------------------------------- 
	Fonctionne avec jQuery uniquement
	Il faut produire le Code HTML suivant dans la page : 
	<div id="MONID">
		<div class="onglets">
			<a href="#MONID-1">onglet 1</a>
			<a href="#MONID-2">onglet 2</a>
			<a href="#MONID-n">onglet n</a>
		</div>
		<div id="MONID-1">Contenu onglet 1</div>
		<div id="MONID-2">Contenu onglet 2</div>
		<div id="MONID-3">Contenu onglet 3</div>
	</div>
	<script>$(function(){ init_cobatab('MONID'); });</script>
*/
function init_cobatab(name){
	$('#'+name+' div[id^='+name+']').hide();
	$('#'+name+' div[id^='+name+']:first').show();
	cobatab(name);
	ancrepos = document.location.href.indexOf('#'+name);
	if(ancrepos != -1 ){
		ancre = document.location.hash;
		id = ancre.slice(1);
		swap_to_cobatab(name,id);
	}
}
function cobatab(name){
	$('#'+name+' a[href^=#'+name+']').click(function(){
		gogo = $(this).attr('href').slice(1);
		swap_to_cobatab(name,gogo);
		return false;
	});
}
function swap_to_cobatab(name,id){
	$('#'+name+' div[id^='+name+']').hide();
	$('#'+name+' #'+id).show();
	$('#'+name+' .onglets a[href^=#'+name+']').removeClass('on');
	$('#'+name+' a[href=#'+id+']').addClass('on');
	return false;
}

/* PALETTE */
/* 
	CODE HTML customisable à poser dans la page :
	
	<div style="position:relative;" id="MA_PALETTE">
		<input class="cp_open cp_input" />
		// OPTIONNEL -> <a class="cp_open">Choisir une couleur</a>
		<div class="cp_div cp_palette" ></div>
	</div>
	<script>$(function(){ init_palette('MA_PALETTE'); });</script>
*/
function init_palette(div_palette){
	$(function(){
		$('#'+div_palette).css('position', 'relative');
		$('#'+div_palette+' .cp_div').farbtastic('#'+div_palette+' .cp_input');
		$('#'+div_palette+' .cp_open').click(function(){ $('#'+div_palette+' .cp_div').slideToggle(250); });	
	});
}
function update_palette(what, color){
	elts = what.split(' ');
	div = elts[0].substr(1,1000);
	madiv = $('#'+div+' .to_update').val();
	$(madiv).css('background', color);
}


/* TOOLTIP */
function init_tooltip(what){
	if(what){
		$(what).tooltip({track: true, showURL: false, showBody: " - "});	
	} else {
		$("*").tooltip({track: true, showURL: false, showBody: " - "});	
	}
}

/* HASTABLE Even / Odd */
function init_table_even_odd(){
	$('.hastable tbody tr').removeClass('odd even');
	$('.hastable tbody tr:odd').addClass('odd');
	$('.hastable tbody tr:even').addClass('even');
	$('.hastable tbody tr').mouseover(function(){$(this).addClass('hover');});
	$('.hastable tbody tr').mouseout(function(){$(this).removeClass('hover');});
}
/* ACCORDEON */
/* 
	Fonctionne avec jQuery uniquement
	CODE HTML customisable à poser dans la page :
	<script>$(function(){init_cobaccordeon('accordeon', 1);});</script>
	<div id="accordeon">
		<div class="accordeon">
			<a href="#accord-1">Element 1</a>
			<a href="#accord-2">Element 2</a>
			<a href="http://www.google.fr" target="_blank">Href normal</a>												
		</div>
		<div class="accord p10" id="accord-1">Contenu de l'élement 1</div>
		<div class="accord p10" id="accord-2">Contenu de l'élement 2</div>
	</div>
*/
function init_cobaccordeon(div, close_other){
	$('#'+div+' > .accord').hide();
	$('#'+div+' > .accord.opened').show();
	$('#'+div+' > .accordeon a').addClass('clicable');
	$('<em></em>').appendTo('#'+div+' > .accordeon a');
	$('#'+div+' > .accordeon a[href^=#]').each(function(){
		div2open = $(this).attr('href');
		$(div2open).insertAfter($(this));
	});
	
	$('#'+div+' .accordeon a[href^=#].clicable').click(function(){
  		div2open = $(this).attr('href');		
		if(close_other == 1){
			$('#'+div+' .accord.opened').slideUp();
			$('#'+div+' .accordeon a.clicable').removeClass('opened');
			if($('#'+div+' '+div2open).hasClass('opened')) { 
				$('#'+div+' '+div2open).slideUp(); 
				$('#'+div+' .accord').removeClass('opened');
			} else {
				$('#'+div+' .accord').removeClass('opened');
				$('#'+div+' '+div2open).addClass('opened');
				$(this).addClass('opened'); 
				$('#'+div+' '+div2open).slideDown(); 
			}
		} else {
			$('#'+div+' '+div2open).slideToggle(); 
			$(this).toggleClass('opened'); 
		}
		return false;
	});
}
// Ouvr ou ferme un element d'accordeon
function cobaccordeon(id){
	$("#"+id).slideToggle();
	$("#"+id).toggleClass('opened');
	$("a[href=#"+id+"]").toggleClass("opened");
}

/* Date Picker */
function forcer_init_datepicker(id){
	$(function() {
		$("#"+id).datepicker({
			changeMonth: true,
			changeYear: true,
			showButtonPanel: true,
			firstDay: 1,
			dateFormat: "dd/mm/yy"
		});
		datepicker_fr();
	});	
	
}

/* Datepicker en Français */
function datepicker_fr(){
	$.datepicker.regional['fr'] = {clearText: 'Effacer', clearStatus: '',
		closeText: 'Fermer', closeStatus: 'Fermer sans modifier',
		prevText: '<Préc', prevStatus: 'Voir le mois précédent',
		nextText: 'Suiv>', nextStatus: 'Voir le mois suivant',
		currentText: 'Courant', currentStatus: 'Voir le mois courant',
		monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin',
		'Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
		monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun',
		'Jul','Aoû','Sep','Oct','Nov','Déc'],
		monthStatus: 'Voir un autre mois', yearStatus: 'Voir un autre année',
		weekHeader: 'Sm', weekStatus: '',
		dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
		dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
		dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
		dayStatus: 'Utiliser DD comme premier jour de la semaine', dateStatus: 'Choisir le DD, MM d',
		dateFormat: 'dd/mm/yy', firstDay: 0, 
		initStatus: 'Choisir la date', isRTL: false};
	$.datepicker.setDefaults($.datepicker.regional['fr']);	
}

function date_relative_panel(field, value){
	var nf = field.split("#");
	var fname = nf[1];
	var template = '<h6>Date relative</h6>'
		+'<span class="close">X</span>'
		+'<select id="'+fname+'_1" class="sel_1">'
			+'<option value="now">Maintenant</option>'
			+'<option value="now+">Maintenant plus</option>'
			+'<option value="now-">Maintenant moins</option>'
			+'<option value="jourmois">Le jour et mois </option>'
			+'<option value="jourmois+">Le jour et mois plus</option>'
			+'<option value="jourmois-">Le jour et mois moins</option>'
		+'</select>'
		+'<select id="'+fname+'_2" class="sel_2" disabled="disabled">'
			+'<option value="+0">---</option>'
			+'<option value="1">1</option>'
			+'<option value="2">2</option>'
			+'<option value="3">3</option>'
			+'<option value="4">4</option>'
			+'<option value="5">5</option>'
			+'<option value="6">6</option>'
			+'<option value="7">7</option>'
			+'<option value="8">8</option>'
			+'<option value="9">9</option>'
			+'<option value="10">10</option>'
		+'</select>'
		+'<select id="'+fname+'_3" class="sel_3" disabled="disabled">'
			+'<option value="days">---</option>'
			+'<option value="days">jour(s)</option>'
			+'<option value="weeks">semaine(s)</option>'
			+'<option value="months">mois</option>'
			+'<option value="years">année(s)</option>'
		+'</select>'
		+'<input type="button" id="ok_'+fname+'" class="submit" value="ok">';
		
	var ch_hidden = '<input id="date_critere_h_'+fname+'" name="id="date_critere_h_'+fname+'" class="valeur" type="hidden" value="'+value+'">';
	
	if($('#date_critere_h_'+fname).length == 0) {
		$(field).wrap('<span class="p_relative">');
		$(field).after(ch_hidden);
		$(field).after('<div id="dr_'+fname+'" class="date_relative" style="display:none;">'+template+'</div>');
		// Click sur OK
		$('#ok_'+fname).click(function(){
			$("#date_critere_h_"+fname).val($("#"+fname+"_1").val()+$("#"+fname+"_2").val()+$("#"+fname+"_3").val());
			var newval = $("#"+fname+"_1 option:selected").text()+' ' 
						+$("#"+fname+"_2 option:selected").text()+' '
						+$("#"+fname+"_3 option:selected").text();
			reg = new RegExp("(-)", "g");
			newval = newval.replace(reg, '');
			$(field).val(newval);
			
			$("#dr_"+fname).slideUp();
		});
		// Changement de valeur du premier select
		$("#"+fname+"_1").change(function(){
			if($(this).val() == 'now' || $(this).val() == 'jourmois'){ 
				$("#"+fname+"_2").val('+0'); $("#"+fname+"_3").val(''); 
				$("#"+fname+"_2").attr('disabled', 'disabled');
				$("#"+fname+"_3").attr('disabled', 'disabled');				
			} else {
				$("#"+fname+"_2").removeAttr('disabled');
				$("#"+fname+"_3").removeAttr('disabled');	
			}
		});
		// Fermeture
		$("#dr_"+fname+' .close').click(function(){ $("#dr_"+fname).slideUp(); });
	}
	
	// Affichage du boutton
	if($("#"+fname+'_button').length == 0){
		$(field).after('<input type="button" class="btn_date_relative" id="'+fname+'_button" value="Date relative" />');
		$("#"+fname+"_button").click(function(){ $("#dr_"+fname).slideToggle(); });	
	}
	
	
	// PréAffectation de l'input FIELD
	if(value){
		var mot = '';
		if(value.indexOf('now') > -1) mot = 'Maintenant';
		if(value.indexOf('jourmois') > -1) mot = 'Le jour et le mois';		
		if(value.indexOf('+') > -1) mot += " plus ";
		if(value.indexOf('-') > -1) mot += " moins ";
		
		// NOMBRE
		reg1 = new RegExp("[0-9]+", "g");
		nombre = reg1.exec(value);
		mot += nombre;
		
		if(value.indexOf('days') > -1) mot += " jour(s)";
		if(value.indexOf('weeks') > -1) mot += " semaine(s)";
		if(value.indexOf('months') > -1) mot += " moi";
		if(value.indexOf('years') > -1) mot += " année(s)";		

		
		$(field).val(mot);
	}
}


function init_taglist(){
	$('.taglist').each(function(){
		color = $(this).attr('color');
		if(!color) color = "#666666";
		$(this).css('background', color);
	});	
}

/* AUTOCOMPLETION */
/* 
	Mise en place : 
	<input class="autocompletion mon_input" type="text" clic="ma_fonction_clic" minchar="3" search="mon_action_search_ajax" />
	<script>init_autocompletion("/test/ajax.php", ".mon_input");</script>
	
	Paramétrage : 
		- il faut impérativement affecter la class="autocompletion" sur le champs concerné
		- search = l'"action" qui sera envoyée en POST dans le fichier AJAX renseigné
			(La page AJAX doit renvoyer une liste de resultat sous forme de A)
		- clic = le nom de la fonction Javascript qui doit être appelée lors du clic sur un résultat
			- cette fonction recevra en paramètre l'objet <a> cliqué dans son intégralité
			- Si  non renseigné, on appelle "netitchoose" qui rempli simplement le input avec le Texte du lien
		- minchar = le nombre de caractère minimum avant de lancer une recherche
			(si non renseigné, minchar vaut 0)
*/
function init_autocompletion(ajax_file, input_id){
	$(input_id).die('keyup');
	$(input_id).live('keyup', function(k){
			
		down = 40; up = 38;
		minchar = ($(this).attr('minchar') ? $(this).attr('minchar') : 0);
		
		if($(this).val().length >= minchar){
			input = $(this);
			// On rajoute l'autofiller juste après
			if($(this).next('.auto_filler').length <= 0){ 
				$(this).wrap('<span class="p_relative d_block">');
				$(this).after('<span class="auto_filler"></span>');
			}
			
			// On charge les valeurs
			pos = $(this).position();
			inputh = parseInt($(this).css('height'))+parseInt($(this).css('padding-bottom'))+parseInt($(this).css('padding-top'))+4;
			fillerwidth = parseInt($(this).css('width'))+parseInt($(this).css('padding-left'))+parseInt($(this).css('padding-right'))
				-parseInt($(this).next('.auto_filler').css('padding-left'))-parseInt($(this).next('.auto_filler').css('padding-right'));
			$(this).next('.auto_filler').css({"top" :parseInt(inputh+pos.top)+"px", "left" : pos.left+"px"});
			$(this).next('.auto_filler').css("width", fillerwidth+'px');
			
			var fn_search = $(this).attr('search');
			var fn_clic = ($(this).attr('clic') ? $(this).attr('clic') : 'autocomplete_clic');
			
			if(k.which != up && k.which != down){
				
				// TOUCHE ESCAPE
				if(k.which == 27){
					$(this).next('.auto_filler').slideUp(300, function(){ $(this).remove()});
				}
				
				$(this).addClass('loading');
				
				// AUTRES VALEURS EN POST ?
				newattr = new Array();
				nbattr = 0;
				var attrs = $(this)[0].attributes;
				for(var i=0;i<attrs.length;i++) {
					if(attrs[i].nodeName.indexOf('post_') == 0){
						newattr[nbattr] = attrs[i].nodeName.substring(5,100)+' : '+attrs[i].nodeValue;
						nbattr++;
					}
				}
				// On ajoute les POST obligatoires : "action" et "mot"
				newattr[nbattr] = 'mot : "'+$(this).val()+'"';
				nbattr++;
				newattr[nbattr] = 'action : "'+fn_search+'"';
				
				eval(
				"$.post(ajax_file, {"+newattr.join(',\n')+"},"
					+"function success(data) {"
						+"$(input).next('.auto_filler').show();"
						+"$(input).next('.auto_filler').html(data);"
						+"$(input).removeClass('loading'); "
						+"$(input).focus(); "
						+"$(input).next('.auto_filler').find('a').click(function(){"
							+"clc = fn_clic+'($(this))';"
							+"rc = eval(clc);"
							+"$(input).next('.auto_filler').slideUp(300, function(){ $(this).remove()});"
						+"});"
					+"});"
				);
			} else {
				var n = -1; var a_on = -1;
				$(input).next('.auto_filler').find('a').each(function(){ n++; if($(this).hasClass('on')) a_on = n; });
				$(input).next('.auto_filler').find('a').removeClass('on');
				if(k.which == down){
					a_on++;
				} else {
					a_on--;
				}
				if(a_on == -1) a_on = 0;
				if(a_on == n+1) a_on = n;
				$(input).next('.auto_filler').find('a').eq(a_on).addClass('on');
				$(this).keydown(function(k){
					if(k.which == 9 || k.which == 13){
						clc = fn_clic+'($(input).next(".auto_filler").find("a.on"))';
						rc = eval(clc);
						$(input).next('.auto_filler').slideUp(300, function(){ $(this).remove()});
						$(this).unbind('keydown');
						return false;
					}
				});
			}
		} else {
			$(this).next(".auto_filler").remove();
		}
		
	});
	
	$(input_id).live('click', function(){$(this).next('.auto_filler').slideUp(300, function(){ $(this).remove()});});	
}

function autocomplete_clic(a){ 
	$(a).parent('.auto_filler').prev('.autocompletion').val($(a).text()); 
}

function init_centrer_multipage(){
	$('.multipage').each(function(){
		larg = parseInt($(this).css('width'));
		largp = parseInt($(this).parent().css('width'));
		multipage_pos = parseInt((largp/2)-(larg/2))+'px';
		$(this).css('margin-left', multipage_pos);
	});	
}

/* iPhone Switcher */
function iphoneSwitcher(id){
	$(function(){
		wtot = parseInt($(id).css('width'));					   
		w1 = parseInt($(id+' .choice.left').css('width'))+14;
		w2 = parseInt($(id+' .choice.right').css('width'))+21;		
		$(id+' .overlay').css('width', w1+'px');
	});
	$(id).click(function(){
		$(this).toggleClass('off');
		if($(this).hasClass('off')){
			$(this).find('.overlay').animate({ left: parseInt(w1+7)+'px', width: w2+'px'},500);
			action = $(this).find('.choice.right').attr('rel');
			if(action) eval(action);
		} else {
			$(this).find('.overlay').animate({ left: '0px', width: w1+'px'},500);
			action = $(this).find('.choice.left').attr('rel');
			if(action) eval(action);
		}
		
	});
}


/* ON LOAD */ 
function init_page(){
	init_cobabox(); 				/* Liens ouverture de cobabox */
	init_table_even_odd(); 			/* ROLL OVER SUR LES LIGNES DES TABLEAUX */
	init_tooltip();					/* TOOLTIP */
	init_taglist();					/* TAGLISTE */
	init_centrer_multipage();		/* Center les multipages */
	
	datepicker_fr();				// Datepicker en Français
	
	/* VALEUR PAR DEFAUT DES INPUT (placeholder) */
	$('.placeholder').live('focus', function(){ if( $(this).val() == $(this).attr('rel') ){ $(this).val(''); $(this).css('color', '#000'); }});
	$('.placeholder').live('blur', function(){ if($(this).val() == ''){ $(this).val($(this).attr('rel')); $(this).css('color', '#999'); }});	
	
}

$(function(){ 
	init_page(); 
});
