$(document).ready(function() {
	// Zébrage des éléments
	// $('body.admin table tr').hover(
	//       function () {
	//         $(this).addClass('tr-hover');
	//       }, 
	//       function () {
	//         $(this).removeClass('tr-hover');	
	//       }
	//     );
	
	// tous les liens externes s'ouvrent dans une nouvelle fenêtre et ont la classe "ext"
	$("a[href^=http]").attr("target", "_blank").addClass("ext");
	
	$('body.admin table tr:odd').addClass('tr-always');
	$('#search-field').attr('autocomplete', 'off');
	
	// toggle country list
	$('a.choose').click(function(event){event.preventDefault();})
	$('ul#allcountries').hide();
	$('a.choose').click(function(){
	// by calling sibling, we can use same div for all demos
	$('ul#allcountries').slideToggle('slow');
	});

	
	
	/**
	 *	Gestion du menu admin de gestion des categories/themes/questions 
	**/
	
	// Redimentionnement d'une fenetre
	$(window).resize(function(){
		if($('#alert-box').length) {
			confirmHtmlCenterBox();
		}
	});	
	
	$(window).scroll(function(){
		if($('#alert-box').length) {
			confirmHtmlCenterBox();
		}
	});	
	
	// Evenement ONCLICK sur une catégorie
	$('#list-categories li a.link').click(function(event) {
		// ID de la catégorie cliquée
		var idCat=$(this).attr('rel');
		
		updateThemesList(idCat);
		setCurrentCategorie(idCat);
		return false;
	});
	
	// Evenement ONCLICK sur un thème
	$('#list-themes li a.link').live("click",function(event) {
		// ID du thème clické
		var idTheme=$(this).attr('rel');
		
		// Mise à jour de la liste des questions
		updateQuestionsList(idTheme);
		
		setCurrentTheme(idTheme);
		
		
		return false;
	});
	
	// Evenement ONCLICK sur l'edition d'un thème
	$('#list-themes li a.edit').live("click",function(event) {
		var c_id=$('#list-categories li a.current').attr('rel');
		
		// Supprimer le lien de la question		
		var t_li		= $(this).parent();
		var t_name		= $(this).parent().children('.link');
		var t_sentence	= t_name.html();
		var t_field		= $(this).parent().children('input.id');
		
		
		// On supprime la balise "a"
		t_name.remove();		

		// On affiche un champ de modification de la question en debut de <li> ...		
		if(t_field.val() == undefined) {
			t_li.prepend(
					'<input class="edit" type="text" value="' + t_sentence + '" />'
				+	'<input class="id" type="hidden" value="' + t_name.attr('rel') + '" />'				
			);
			$('#list-themes li input.edit').focus();
		}

		//return false;
	});	

	$('a.add-th').live("click",function(event) {
		
		if( !$('#list-themes li.add input').length ) {			
			$('#list-themes').append('<li class="add"><input type="text" id="new-input" /></li>');
		//$('#list-themes li .add input').focus();
			document.getElementById("new-input").focus();
			$('a.add-th').remove();
		}
		
		return false;
	});
	
	$('#list-themes li.add input').live("keypress",function(event) {
		if(event.keyCode == 13) {
			var c_id=$('#list-categories li a.current').attr('rel');
			$.ajax({
				type: "POST",
				url: "/ajax/save-theme/",
				data: "name=" + $(this).val() + '&id_categorie=' + c_id,
				success: function(content){		
					var result=eval('('+content+')');
					if(result.theme.id < 1) {						
						alert('erreur sauvegarde');
					} else{
						force_id_theme=result.theme.id;
					}
					updateThemesList(c_id);
				}
			});	
		}	
	});

	
	// Evenement ONKEYPRESS sur l'edition d'un thème
	$('#list-themes li input.edit').live("keypress",function(event) {
		var t_name=$(this).val();
		var t_id=$(this).parent().children('.id').val();
		var c_id=$(this).parent().attr('rel');
		
		if(event.keyCode == 13) {
			$.ajax({
				type: "POST",
				url: "/ajax/save-theme/",
				data: 
						"id_theme=" + t_id
					+	"&name=" + t_name,
				success: function(content){		
					var result=eval('('+content+')');
					if(result.theme.id < 1) {						
						alert('erreur sauvegarde');						
					} else {
						updateThemesList(result.categorie.id);
					}
					
				}
			});	
		}
	});	

	
	// Evenement ONCLICK sur la suppression d'un thème
	// (Demande de confirmation)
	$('#list-themes li a.del').live("click",function(event) {
		var t_id=$(this).parent().children('.link').attr('rel');
		var t_li=$(this).parent();
		
		$.ajax({
			type: "GET",
			url: "/ajax/delete-theme/",
			data: "id_theme=" + t_id,
			success: function(content){		
				var result=eval('('+content+')');
				var html = '';
				
				html = html + '<form id="frm-themes-fiches">';
				html = html + '	<ul>';
				if(result != 'NOK') {
					for(i=0; i<result.length; i++) {					
						html = 
						html	+	'		<li>'
								+	'			' + result[i].question.sentence
								+	'		</li>';
					} 
					html = html + '	</ul>';					
					html = html + '	<input class="param" rel="delete-theme" type="hidden" value="'+t_id+'" />';
					html = html + '</form>';
					confirmHtml(
						'Si vous supprimez ce thème, les questions ci-dessous seront effacées aussi. <br />Voulez-vous continuer ?',
						html
					);
				}
				
				else {
					confirmHtml(
						'Voulez-vous supprimer ce thème ?',
						'<input class="param" rel="delete-theme" type="hidden" value="'+t_id+'" />'
					);		
					
				}

			}
		});	

		return false;		
	});
	
	// Evenement ONCLICK sur le liens "liens connexes"
	$('#list-themes li a.fiches-connexes').live("click",function(event) {		
		var t_id=$(this).parent().children('.link').attr('rel');
		
		// On récup la liste des fiches via ajax
		$.ajax({
			type: "GET",
			url: "/ajax/get-fiches-connexes/",
			data: "id_theme=" + t_id,
			success: function(content){		
				var result=eval('('+content+')');				
				var html = '<select class="fiches-connexes" multiple="multiple" style="width: 380px; height: 115px;">';
				
				for(i=0;i<result.length; i++) {
					var selected=result[i].selected;
					
					html = html + '	<option  value="' + result[i].id + '"'+(selected ? ' selected' : '')+'>';
					html = html + '		' + result[i].titre;
					html = html + '	</option>';
				}
				html = html + '</select>';
				html = html + '<input class="param" rel="update-fiches-connexes" type="hidden" value="'+t_id+'" />';
				confirmHtml(
					'Fiches connexes',			
					html
				)
			}
		});			
		return false;
	});
	
	$('#alert-box input.confirm').live("click", function(event) {
		var param=$('#alert-box input.param').val();
		var action=$('#alert-box input.param').attr('rel');		
		
		//$('#alert-box').hide();
		
		switch(action) {
			case 'delete-theme' : 
				deleteTheme(param);				
				$('#list-themes li a[rel^='+param+']').parent().remove();
				$('#alert-box').remove();
				return true;
				break;
			case 'delete-question' :				
				$.ajax({
					type: "GET",
					url: "/ajax/delete-question/",
					data: "id_question=" + param,				
					success: function(content){		
						var result=eval('('+content+')');
						if(result.status != 1) {						
							alert('Erreur lors de la suppression');
						}
						else{
							$('#list-questions li a[rel^='+param+']').parent().remove();
							
						}
						$('#alert-box').remove();
					}
				});				
				return true;
				break;
			case 'del-question-theme' : 
				var q_id=$('#id-question').val();
				$.ajax({
					type: "POST",
					url: "/ajax/del-question-theme/",
					data: "id_theme=" + param + "&id_question=" + q_id,				
					success: function(content){
						var result=eval('('+content+')');
						if(result != 'NOK') {						
							updateQuestionThemesList(q_id);
						}
						$('#alert-box').remove();
					}
				});
				break;
			
			case 'update-fiches-connexes' :
				$.ajax({
					type: "POST",
					url: "/ajax/delete-fiches-connexes/",
					data: "id_theme=" + param,				
					success: function(content){
						
						var t_id=param;
						var IDs='';
						//var select=;
						
												
						//$('#alert-box .fiches-connexes option').hide();
						$('#alert-box .fiches-connexes option').each(function(i){
							
							if(this.selected) {
								IDs = IDs + (IDs.length > 0 ? ',' : '') + this.value;
								
							}
							
						});	
						//alert(IDs);

						$.ajax({
							type: "POST",
							url: "/ajax/set-fiches-connexes/",
							data: "IDs=" + IDs + "&id_theme=" + t_id,
							success: function(content){								
							}
						});
						$('#alert-box').remove();
					}
				});	
				break
				
			case 'add-question' :
				var sentence=$("#alert-box p input.sentence").val();
				$.ajax({
					type: "POST",
					url: "/ajax/add-question/",
					data: "id_theme=" + param + "&sentence=" + sentence,
					success: function(content){						
						var result=eval('('+content+')');
						
						var q_id=result.question.id;
						$('#alert-box').remove();						
						document.location.href='/admin/questions/edit/?id=' + q_id;
					}
				});					
				break;

		}
		
		return false;
	});
		
	$('#alert-box input.cancel').live("click", function(event) {
		$('#alert-box').remove();
	});

	
	// Evenement ONCLICK sur l'edition d'une question
	$('#list-questions li a.link').live("click",function(event) {
		return false;
	});
	
	$('#list-questions li a.edit').live("click",function(event) {
		// Supprimer le lien de la question		
		var q_li		= $(this).parent();
		var q_name		= $(this).parent().children('.link');
		var q_sentence	= q_name.html();
		var q_field		= $(this).parent().children('input.id');
		// On supprime la balise "a"
		q_name.remove();		
		
		// On affiche un champ de modification de la question en debut de <li> ...
		
		if(q_field.val() == undefined) {
			q_li.prepend(
					'<input class="edit" type="text" value="' + q_sentence + '" />'
				+	'<input class="id" type="hidden" value="' + q_name.attr('rel') + '" />'
				
			);
			
			$('#list-questions li input.edit').focus();
		}
		return false;
	});
	
	// Evenement ONCLICK sur la suppression d'une question
	$('#list-questions li a.del').live("click",function(event) {
		var q_id=$(this).parent().children('.link').attr('rel');
				
		confirmHtml(
			'Voulez-vous supprimer cette question ?',
			'<input class="param" rel="delete-question" type="hidden" value="'+q_id+'" />'
		);

		return false;		
	});
	
	// Evenement ONCLICK sur l'icone de desactivation d'une question
	$('#list-questions li a.active').live("click",function(event) {
		var q_id=$(this).parent().children('.link').attr('rel');
		var t_id=$(this).parent().attr('rel');
		
		$.ajax({
			type: "POST",
			url: "/ajax/hide-question/",
			data: "id_question=" + q_id,				
			success: function(content){		
				var result=eval('('+content+')');				
				updateQuestionsList(t_id);
			}
		});			
		return false;		
	});	
	
	// Evenement ONCLICK sur l'icone d'activation d'une question
	$('#list-questions li a.inactive').live("click",function(event) {
		var q_id=$(this).parent().children('.link').attr('rel');
		var t_id=$(this).parent().attr('rel');
		
		$.ajax({
			type: "POST",
			url: "/ajax/show-question/",
			data: "id_question=" + q_id,				
			success: function(content){		
				var result=eval('('+content+')');				
				updateQuestionsList(t_id);
			}
		});			
		return false;		
	});		
	
	// Evenement ONKEYPRESS sur l'edition d'une question
	$('#list-questions li input.edit').live("keypress",function(event) {
		var q_sentence=$(this).val();
		var q_id=$(this).parent().children('.id').val();
		var t_id=$(this).parent().attr('rel');
		
		if(event.keyCode == 13) {		
			updateQuestion(q_id, t_id, q_sentence);
		}
	});
	
	// Perte du focus sur l'edition d'une question
	$('#list-questions li input.edit').livequery("blur",function(event) {		
		var q_sentence=$(this).val();
		var q_id=$(this).parent().children('.id').val();
		var t_id=$(this).parent().attr('rel');
		
		
		updateQuestion(q_id, t_id, q_sentence);
		
		$(this).focus();
	});

	// Repositionnement des thèmes
	$(function() {		
		$("#list-themes").sortable({
			revert: true,
			axis: 'y',
			update: function(event, ui) {
				$.post(
					"/ajax/sort-themes/", 
					$("#list-themes").sortable('serialize')
				);	
				
				/*updateThemesList(
					$('#list-categories li a.current').attr('rel')
				);*/				
			} 
		});	
		$("#list-questions").sortable({
			revert: true,
			axis: 'y',
			update: function(event, ui) {
				var t_id=$('#list-themes li a.current').attr('rel');
				$.post(
					"/ajax/sort-questions/", 
					$("#list-questions").sortable('serialize') + "&id_theme=" + t_id
				);	
				updateQuestionsList(
					t_id
				);
			} 
		});	
		$("ul, li").disableSelection();
	});
	
	// Evenement ONCLICK sur le champ select-categorie lors de l'edition détaillée d'une question
	$('#select-categorie').click(function(event) {
		var c_id = $(this).val();
		var themes=$('#select-theme');
		if( c_id > 0 ) {
			$.ajax({
				type: "GET",
				url: "/ajax/get-themes/?id_categorie=" + c_id,
				success: function(content){
					var result=eval('('+content+')');
					
					// Garissage de la liste des thèmes associés à cette catégorie
					themes.empty();
					if(result != 'NOK') {
						themes.append(
							'<option value="0">- Choisissez un thème -</option>'	
						);						
						for(i=0;i<result.length;i++) {					
							themes.append(
									'<option value="'+result[i].theme.id+'">'
								+	'	' + result[i].theme.name
								+	'</option>'	
							);
						}
						
					} else{
						themes.append(
							'<option value="0">- Aucun thème disponible -</option>'	
						);					
					}
				}
			});			

		} else {
			themes.empty();
			themes.append(
				'<option value="0">- Aucun thème disponible -</option>'	
			);
		}
	});
	
	// Evenement ONCLICK  sur le bouton d'association de theme-question
	$("#assoc-theme-question").click(function(event) {
		var t_id=$('#select-theme').val();
		var q_id=$('#id-question').val();
		
		if(t_id > 0) {
			$.ajax({
				type: "POST",
				url: "/ajax/add-theme-secondaire/",
				data: "id_theme=" + t_id + "&id_question=" + q_id,				
				success: function(content){
					var result=eval('('+content+')');
					if(result != 'NOK') {						
						updateQuestionThemesList(q_id);
					}
				}
			});
		}
		return false;
	});

	// Evenement ONCLICK sur le bouton de suppression d'un theme associé a une question
	$("#questions-themes li a.del").live("click", function(event) {
		var t_id=$(this).attr('rel');
		var q_id=$("#id-question").val();
		
		if( $(this).parent().attr('class') == 'main') {
			alert('Vous ne pouvez pas retirer la question de son thème principal.');
			return false;
		}
		
		if(t_id > 0) {
			confirmHtml(
				'Voulez-vous supprimer cette question de ce thème ?',
				'<input class="param" rel="del-question-theme" type="hidden" value="'+t_id+'" />'
			); 
			
		}		
		
		return false;
	});
	
	// Evenement ONCLICK sur un li d'un theme definissant le theme principal
	$("#questions-themes li").live("click", function(event) {
		var t_id=$(this).attr('rel');
		var q_id=$("#id-question").val();

		if(t_id > 0) {
			$.ajax({
				type: "POST",
				url: "/ajax/set-theme-principal/",
				data: "id_theme=" + t_id + "&id_question=" + q_id,				
				success: function(content){
					var result=eval('('+content+')');
					if(result != 'NOK') {						
						updateQuestionThemesList(q_id);
					}
				}
			});
		}			
		
	});
	
	// Evenement ONCLICK sur le bouton "Ajouter question"
	$('#btn-add-question').live("click", function() {
		var t_id=$("#list-themes li a.current").attr('rel');
		
		confirmHtml(
			'Veuillez entrer la nouvelle question :',
				'<input type="text" class="sentence" />'
			+	'<input class="param" rel="add-question" type="hidden" value="'+t_id+'" />'
		);
		return false;
	});
	
	
	// On garni les theme et question en fct de la premiere categorie trouvée
	var idCat=$('#list-categories li a').attr('rel');	
	var idQuestion=$('#id-question').val();	
	
	if( $('#questions-themes').length ) {		
		updateQuestionThemesList(idQuestion);
	}		
	
	// Forcé la categorie par l'url	
	
	if(!isDefined('force_id_categorie')) {
		force_id_categorie=0;
	}
	
	if(force_id_categorie > 0) {
		//setCurrentCategorie(force_id_categorie);
		updateThemesList(force_id_categorie);
		force_id_categorie=0;
	}	else {
		updateThemesList(idCat);
	}
	
		
	$("#list-cat ul li ul li:odd").addClass('impairli');
	
});


/* Fonctions utilisées par l'application jQuery */

function updateThemesList(idCat) {
	// Récupération en AJAX de la liste des thèmes associés à cette catégories
	$.ajax({
		type: "GET",
		url: "/ajax/get-themes/?id_categorie=" + idCat,
		success: function(content){
			var result=eval('('+content+')');
			
			// Garissage de la liste des thèmes associés à cette catégorie
			$('#list-themes').empty();
			$('#list-themes').next().remove();
			
			
			if(result != 'NOK') {
				for(i=0;i<result.length;i++) {					
					$('#list-themes').append(
							'<li id="theme_'+result[i].theme.id+'">' 
						+	'	<a class="link" href="#" rel="'+ result[i].theme.id + '">'
						+	'		' + result[i].theme.name 
						+	'	</a>'
						+	'	<a class="edit" href="#" title="Modifier le texte">&nbsp;</a>'
						+	'	<a class="fiches-connexes" href="#" title="Fiches connexes">&nbsp;</a>'
						+	'	<a class="del" href="#" title="Supprimer">&nbsp;</a>'
						+	'</li>'
					);
					
					
					if(force_id_theme > 0 && i==0) {
						updateQuestionsList(force_id_theme);
						force_id_theme=0;
					} 
					else if(i==0) {
						updateQuestionsList(result[i].theme.id);
					}
					
								
					
				}
				
				$("#list-cat ul li ul li:odd").addClass('impairli');
				
			} else {
				updateQuestionsList();
			}
			$('#list-themes').after('<a href="#" class="add-th btn-add">&nbsp;</a>');
			$('li#type-themes div.clear-box-cat').append('<a href="#" class="add-th add-th2 btn-add">&nbsp;</a>');
			
			setCurrentCategorie(idCat);
		}
	});
}

function updateQuestionsList(idTheme) {
	
	// Récupération en AJAX de la liste des questions associées à ce thème
	$.ajax({
		type: "GET",
		url: "/ajax/get-questions/?id_theme=" + idTheme,
		success: function(content){
			$('#list-questions').empty();
			$('#list-questions').next().remove();
			
			var result=eval('('+content+')');
			
			// Garissage de la liste des thèmes associés à cette catégorie				
			if(result != 'NOK') {
				for(i=0;i<result.length;i++) {					
					$('#list-questions').append(
							'<li id="question_'+ result[i].question.id + '" class="'+(!result[i].theme.secondaire ? 'principal' : 'secondaire')+'" title="Thème '+(result[i].theme.secondaire ? 'principal' : 'secondaire')+'" rel="'+idTheme+'">' 
						+	'	<a class="link" href="#" rel="'+ result[i].question.id + '">'
						+	'		' + result[i].question.sentence 
						+	'	</a>'
						+	'	<a class="'+(result[i].question.show==1 ? '' : 'in') +'active" href="#" title="'+(result[i].question.show==1 ? 'Désactiver' : 'Activer') +' la question">&nbsp;</a>'
						+	'	<a class="edit" href="#" title="Modifier le texte">&nbsp;</a>'
						+	'	<a class="details" href="/admin/questions/edit/?id='+result[i].question.id+'" title="Modifier les détails">&nbsp;</a>'
						+	'	<a class="del" href="#" title="Supprimer">&nbsp;</a>'
						+	'</li>'
					);
				}	
				
				$("#list-cat ul li ul li:odd").addClass('impairli');				
			
			}
			if(idTheme) {		
				//$('#list-questions').after('<a href="/admin/questions/edit/?id_theme='+idTheme+'" class="add-qu btn-add">&nbsp;</a>');			
				$('#list-questions').after('<a id="btn-add-question" href="#" class="add-qu btn-add">&nbsp;</a>');
				$('li#type-questions div.clear-box-cat').append('<a id="btn-add-question" href="#" class="add-qu2 btn-add">&nbsp;</a>');
			}

			
			setCurrentTheme(idTheme);
		}
		
		
	});
	
	return false;
}

function updateQuestionThemesList(q_id) {
	var themes=$('#questions-themes');
	
	$.ajax({
		type: "GET",
		url: "/ajax/get-question-themes/",
		data: "id=" + q_id,				
		success: function(content){			
			var result=eval('('+content+')');
			
			if(result != 'NOK') {									
				themes.empty();				
				
				for(i=0; i<result.length; i++) {					
					
					themes.append(
							'<li class="'+(!result[i].theme.secondaire ? 'main' : 'sec')+'" rel="' + result[i].theme.id + '" title="'+(!result[i].theme.secondaire ? 'Thème principal' : 'Définir en tant que thème principal.')+'">'
						+	'	<p class="cat">' + result[i].categorie.name + '</p> '
						+	'	<p class="theme">' + result[i].theme.name + '</p> '
						+	(result[i].theme.secondaire ? '	<a rel="' + result[i].theme.id + '" class="del" href="#"><img src="/images/theme/ico-delete.png" alt="delete" /></a>' : '')
						+	'<div class="clear"></div>'
						+	'</li>'
					);
				}	

				$("#questions-themes li:odd").addClass('impairli');
				
			} else {
				themes.empty();
			}
		}
	});
}



// Défini la categorie courante (html)
function setCurrentCategorie(id) {		
	$("#list-categories li a").removeClass('current');	
	$('#list-categories li a[rel^='+id+']').addClass('current');
	$("#list-categories li a").parent().removeClass('currentli');
	$("#list-categories li a.current").parent().addClass('currentli');
}

function setCurrentTheme(id) {
	$('#list-themes li a').removeClass('current');	
	$('#list-themes li a[rel^='+id+']').addClass('current');
	$("#list-themes li a").parent().removeClass('currentli');
	$("#list-themes li a.current").parent().addClass('currentli');
}

function setCurrentQuestion(id) {
	$('#list-questions li a').removeClass('current');
	$('#list-questions li a[rel^='+id+']').addClass('current');
}


function confirmHtml(title, content) {	
	$('#alert-box').remove();	
	
	
	$('body').prepend( 
			'<div id="alert-box">'
		+	'	<h2>'+title+'</h2>'
		+	'	<p>'+content+'</p>'
		+	'	<p class="alert-submit">'
		+	'		<input class="confirm" type="button" value="Confirmer" />'
		+	'		<input class="cancel" type="button" value="Annuler" />'						
		+	'	</p>'
		+	'</div>'
	);
	
	confirmHtmlCenterBox();	
}

function confirmHtmlCenterBox() {
	// repositionnement
	var alertBoxTop=(
		$(window).scrollTop() 
		+	(
				($(window).height() / 2) 
				- ($('#alert-box').innerHeight() / 2)
			)
	);
	var alertBoxLeft=(
		$(window).scrollLeft() 
		+	(
				($(window).width()  / 2) 
				- ($('#alert-box').innerWidth() / 2)
			)
	);
	
	
	$('#alert-box').css('top', alertBoxTop + 'px');
	$('#alert-box').css('left', alertBoxLeft + 'px');				
}


function deleteTheme(id) {		
	$.ajax({
		type: "GET",
		url: "/ajax/delete-theme/",
		data: "id_theme=" + id + "&confirm=1",
		success: function(content){		
			var result=eval('('+content+')');
			if(result == 'NOK') {						
				alert('Erreur lors de la suppression');				
			} 
		}
	});	
	
}

function updateQuestion(q_id, t_id, q_sentence) {
	if(q_sentence.length > 0) {
		$.ajax({
			type: "POST",
			url: "/ajax/save-question/",
			data: 
					"id_question=" + q_id
				+	"&sentence=" + q_sentence,
			success: function(content){		
				var result=eval('('+content+')');
				if(result.question.id < 1) {						
					alert('erreur sauvegarde');
				}
				updateQuestionsList(t_id);
			}
		});	
	} else {
		alert('La question est vide!');
	}
}

function isDefined(variable) {
	return (!(!(document.getElementById(variable))))
}