var statut_classement=0;
var statut_upload=0;
var first=1;

var serialize;


// Active / désactive le déplacement des photos
function classerImages() {
				
	//::> Activer le déplacement des images
	if (statut_classement==0) {
		
		// => ON enlève la barre transparente pr ne pas géner les effets
		var NodeList = $('liste_images').getElementsByClassName('raccourci');
		var Noeuds = $A(NodeList);
			Noeuds.each(function(noeud){
				noeud.style.display="none";
		});
		
		new Effect.Fade('pagin1', { duration:0.5});
		new Effect.Fade('pagin2', { duration:0.5});
		
		// On vire les images actuelles, on affiche le message patienter et on lance l'appel ajax ( voir plus bas )
		setTimeout('classement_patienter("debut");', 100);
				
	}
	//::> Désactiver le déplacement
	else 
	{

		classement_patienter("fin");

	}
	
}
	// Sert pour décaler le lancement des effets dans ^^
	function classement_patienter(statut) {
		
		if (statut=="debut") { //==> Message d'attente du début du script
			message='Chargement de votre galerie complète, veuillez patienter ...';
			variables='act=recup_all'
			fonctionCall='classerImagesEtape2'; } 
		if (statut=="fin") { //==> Message d'attente de fin du script
			message="Veuillez patienter pendant la mise à jour de votre galerie ...";
			variables='act=maj_ordre&'+serialize;
			fonctionCall='classerImagesEtape3'; 
			new Effect.BlindUp('infos_classement',{duration:0.7 }); }
			
		// Cacher les images et afficher le message d'attente
		$('infos_classement_wait_mess').innerHTML=message
		new Effect.BlindUp('infos_classement_wait',{duration:0.7 });
		new Effect.BlindUp('liste_images', { duration:1,  afterFinish:function() {
			
			new Effect.Appear('infos_classement_wait',{duration:0.7, afterFinish:function() {
				// Envoie la requête ajax 
				ajax('get', 'galerie_ajax.php', variables, fonctionCall);
			} });
		} });
	}

// Affiche toute la galerie avec le déplacement activé
function classerImagesEtape2(r) {
	
	// On met les nouvelles images spécial déplacement ds le div ( caché )
	$('liste_images').innerHTML=unescape(r);
	// On active les déplacement et on gère les modifications
	Sortable.create('liste_images',{ constraint:false, onUpdate:function(sortable){ serialize=Sortable.serialize(sortable) }  });
	
	// Vire le message d'attente et affiche le nouveau contenu
	new Effect.Fade('infos_classement_wait', {duration:0.5, afterFinish:function() {
		new Effect.BlindDown('liste_images', { duration:1.5 });
		new Effect.BlindDown('infos_classement', { duration:1 });
		$('ranger').innerHTML="<img src='icones/translate.png' style='vertical-align:middle' /> finaliser le classement";
	} });
	
	statut_classement=1; var first=0;
}

// Re-affiche la galerie normale avec le nouvel ordre
function classerImagesEtape3(r) {
	
	// On désactive le déplacement
	Sortable.destroy( 'liste_images' );	

	// On met les nouvelles images classés 
	$('liste_images').innerHTML=unescape(r);
	
	// Vire le message d'attente et affiche le nouveau contenu
	new Effect.Fade('infos_classement_wait', {duration:0.5, afterFinish:function() {
		new Effect.BlindDown('liste_images', { duration:1.5 });
		$('ranger').innerHTML="<img src='icones/translate.png' style='vertical-align:middle' /> classer les images";
		
		new Effect.Appear('pagin1', { duration:0.5});
		new Effect.Appear('pagin2', { duration:0.5});

	} });
	
	initLightbox();
	statut_classement=0;
}

// Changer de page en ajax
function changer_page(numPage) {
	_pageActuelle=$('pageActuelle').innerHTML;
	_nbPages=$('nbPages').innerHTML;

	if (numPage!=_pageActuelle && numPage<=_nbPages) {
		
		// Message d'attente
		$('infos_classement_wait_mess').innerHTML="Merci de patienter pendant le téléchargement de votre galerie.";
		new Effect.BlindUp('infos_classement_wait',{duration:0.4 });
		new Effect.BlindUp('liste_images', { duration:1,  afterFinish:function() {	
			new Effect.Appear('infos_classement_wait',{duration:0.4, afterFinish:function() {
				// Envoie la requête ajax 
				ajax('get', 'galerie_ajax.php', 'act=page&page='+numPage, 'changer_page_etape2');
			} });
		} });
		
	}
	
}

// Récupère les nouvelles images | le bloc pagination | la page actuelle
function changer_page_etape2(r) {
	var result = unescape(r).split('|:|');
	
	$('liste_images').innerHTML=result[0];
	
	// Vire le message d'attente et affiche le nouveau contenu
	new Effect.Fade('infos_classement_wait', {duration:0.4, afterFinish:function() {
		new Effect.BlindDown('liste_images', { duration:1 });
		
		// Remet à jour les blocs pagination
		$('pagin1').innerHTML=result[1];
		$('pagin2').innerHTML=result[1];
		
		// On met à jour le champs temp sur la page actuelle
		$('pageActuelle').innerHTML=result[2];
		
		initLightbox();
	} });
}

// Affiche le cadre uploader une photo
function upload_image() {
	
	if (statut_upload==0)  { 
		if (is_ie7) new Effect.Appear('upload_image', { duration:1.5 });
		else		new Effect.BlindDown('upload_image', { duration:1 });
		statut_upload=1; 
	} else {
		if (is_ie7)	new Effect.Fade('upload_image', { duration:0.7 });
		else		new Effect.SlideUp('upload_image', { duration:0.7 });
		statut_upload=0; 
	}

}

function infos_image(id) {
	if ($('LB_id')!=null) Element.remove('LB_id');
	
	if (statut_classement==0) {
		new LITBox('http://www.imagup.com/galerie_ajax.php?act=detail&id='+escape(id), {type:'window', overlay:false, opacity:.95, width:400, height:330, draggable:false, resizable:false});		
	}
}

function suppr_image(id) {
	ajax('post', 'galerie_ajax.php?act=suppr', 'id='+escape(id), 'suppr_image2');
}

function suppr_image2(r) {
	var etat = unescape(r).split('|:|');
	// Si suppression OK :
	if (etat[0]=='+') {
		var raccourci = $A($(etat[1]).getElementsByClassName('raccourci'));
			 Element.setOpacity(raccourci[0], 0);
		new Effect.Fade(etat[1], {duration:1, afterFinish:function() { Element.remove(etat[1]); } });
	} else {
		alert('Un problème est survenue durant la suppression de cette image');
	}
}

// ----------------------------------------------------------------------------------- //
// ----------------------- FONCTIONS GENERALES ---------------------------- //
// ----------------------------------------------------------------------------------- //

// Script Ajax perso ( POST/GET en asynchrone )
function ajax ( type, fichier, variables /* , fonction */ ) 
{ 
	if ( window.XMLHttpRequest ) var req = new XMLHttpRequest();
	else if ( window.ActiveXObject ) var req = new ActiveXObject("Microsoft.XMLHTTP");
	else alert("Votre navigateur n'est pas assez récent pour accéder à cette fonction, ou les ActiveX ne sont pas autorisés");
	if ( arguments.length==4 ) var fonction = arguments[3];

	if (type.toLowerCase()=="post") {
		req.open("POST", fichier, true);
		req.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1');
		req.send(variables);
	} else if (type.toLowerCase()=="get") {
		req.open('get', fichier+"?"+variables, true);
		req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
		req.send(null);
	} else { 
		alert("Méthode d'envoie des données invalide"); 
	}

	req.onreadystatechange = function()  { 
		if (req.readyState == 4 && req.responseText != null )
		{				
			if (fonction) eval( fonction + "('"+escape(req.responseText)+"')");
			
		} 
	}
}

function isset(varname){
  return (typeof(varname)!='undefined');
}

