/*                                             GESTION DES PHOTOS                                                                    */

//change la photo
function changePhoto ( e ) {
	
	var cle = Event . element ( e ) . id . gsub ( 'cle_', '' );
	Event . stop ( e );
	
	var data = $H ( {'imgKey': cle, 'ajaxImg': 'ok'} ) . toQueryString ( );
	
	$ ( 'bigImgGallery' ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );
	$ ( 'textImgGallery' ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );
	
	new Ajax . Updater ( 'bigImgGallery', 'ajaxGallery.php', {
		postBody: data,
		onComplete: function ( ) {
			var data2 = $H ( { 'imgKey': cle, 'ajaxText': 'ok' } ) . toQueryString ( );
			new Ajax . Updater ( 'textImgGallery', 'ajaxGallery.php', { postBody: data2 } )
		}	
	} );
}

//Observateur d'evenements photos
function observeEventPhotos ( ) {
	
	$$('.smallImg') . each ( function ( c ) { Event . observe ( c, 'click', changePhoto, false ) } );
}

/*                                            OUVERTURE DE LIENS DANS DE NOUVELLES PAGES                */

//ouvre dans d'autres fenêtres
function openInNewWindow ( e ) {

	Event . stop ( e );
	
	var el = Event . element ( e );
	
	var href = $ ( el ) . href;
	
	window . open ( href );
}

//observeur d'openInNewWindow
function observeOpenInNewWindow ( ) {

	$$('.openInNewWindow') . each ( function ( e ) { Event . observe ( $ ( e ), 'click', openInNewWindow ) } );
}

/*                                               GESTION DES STAGES                                                                    */

//gere le choix par date
function choixStages(e) {
	var el = Event . element ( e ) . id;
	if ( el == 'prof' ) {
		$ ( 'date_m' ) . value = '';
		$ ( 'date_y' ) . value = '';
		var data = $H ( { 'ajax' : 'ok', 'prof' : $F ( 'prof' ) } ) . toQueryString ( );
		loadResultsStages ( data );
	}
	else if ( el == 'date_y' ) {
		$ ( 'prof' ) . value = '';
		if ( $F ( 'date_m' ) == '' ) {
			$ ( 'results' ) . update ( 'Choisissez un mois' );
		}
		else {
			var data = $H ( { 'ajax' : 'ok', 'date_m': $F ( 'date_m' ), 'date_y': $F ( 'date_y' ) } ) . toQueryString ( );
			loadResultsStages ( data );
		}
	}
	else if ( el == 'date_m' ) {
		$ ( 'prof' ) . value = '';
		if ( $F ( 'date_y' ) == '' ) {
			$ ( 'results' ) . update ( 'Choisissez une ann&eacute;e' );
		}
		else {
			var data = $H ( { 'ajax' : 'ok', 'date_m': $F ( 'date_m' ), 'date_y': $F ( 'date_y' ) } ) . toQueryString ( );
			loadResultsStages ( data );
		}
	}
}

//charge les resultats de recherche
function loadResultsStages ( data ) {
	
	$ ( 'results' ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );

	new Ajax . Updater ( 'results', 'ajaxStages.php', {
	
		postBody : data,
		onComplete : function ( ) {
			$$('.stagesLink') . each ( function ( c ) { Event . observe ( c, 'click', loadDetailsStages, false ) } );
		}
	} );
}

//charge les détails de stages
function loadDetailsStages ( e ) {
	
	Event . stop ( e ) ;
	
	var stagesId = Event . element ( e ) . id . gsub ( 'stagesLink', '' ) ;
	
	var data = $H ( { 'ajaxOpen' : 'ok', 'stagesId' : stagesId } ) . toQueryString ( ) ;
	
	var divDetails = 'divForAjaxDetails' + stagesId;
	
	var left = Event . pointerX ( e ) - 440;
	
	var top = Event . pointerY ( e );
	
	$ ( divDetails ) . setStyle ( { position: 'absolute', left: left+'px', top: top+'px', zIndex: '950' } );
	
	$ ( divDetails ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );
	
	$ ( divDetails ) . show ( );
	
	new Ajax . Updater  ( divDetails, 'ajaxStages.php',  {
	
		postBody : data,
		 	
		onComplete : function ( ) {
		 	new Draggable ( divDetails, { handle : 'divDragHandle' + stagesId } );
		 		
		 	var closer = 'divCloseAjaxDetails' + stagesId;
		 		
		 	Event . observe ( closer, 'click', closeStagesDetails );
		 		
			$$('.openInNewWindow') . each ( function ( e ) { Event . observe ( $ ( e ), 'click', openInNewWindow ) } );
		 		
		 	Event . observe ( divDetails, 'mouseover', function ( ) {$ ( divDetails ) . setStyle ( { zIndex : '1000' } ) } );
			Event . observe ( divDetails, 'mouseout', function ( ) { $ ( divDetails ) . setStyle ( { zIndex : '950' } ) } );
		 }
	});
}

//fermeture des détails de stages
function closeStagesDetails ( e ) {

	Event . stop ( e ) ;
	
	var stagesId = Event . element ( e ) . id . gsub ( 'divCloseAjaxDetails', '' ) ;
	
	var stagesDiv = 'divForAjaxDetails' + stagesId ;
	
	new Effect . Fade ( stagesDiv, {
		
		duration : 0.5, 
		afterFinish : function ( ) { $ ( stagesDiv ) . update ( '' ) }
	
	} ) ;

}

//observation des evenements stages
function observeEventStages ( ) {
	if ( $ ( 'prof' ) ) Event . observe ( 'prof', 'change', choixStages );
	if ( $ ( 'date_m' ) ) Event . observe ( 'date_m', 'change', choixStages );
	if ( $ ( 'date_y' ) ) Event . observe ( 'date_y', 'change', choixStages );
}

/*                                               GESTION DES COURS                                                                     */

//remove les submit
function remove() {

	$$('.ajaxRemove') . each ( function ( e ) { $ ( e ) . hide ( ) } );
}

//charge les détails de cours
function loadDetailsCours ( e ) {
	
	Event . stop ( e ) ;
	
	var coursId = Event . element ( e ) . id . gsub ( 'coursLink', '' ) ;
	
	var data = $H ( { 'ajaxOpen' : 'ok', 'coursId' : coursId } ) . toQueryString ( ) ;
	
	var divDetails = 'divForAjaxDetails' + coursId ;
	
	var left = Event . pointerX ( e ) - 440;
	
	var top = Event . pointerY ( e );
	
	$ ( divDetails ) . setStyle ( { position: 'absolute', left: left+'px', top: top+'px', zIndex: '950' } );
	
	$ ( divDetails ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );
	
	$ ( divDetails ) . show ( );
	
	new Ajax . Updater  ( divDetails, 'ajaxCours.php',  {
	
		postBody : data,
		 	
		onComplete : function ( ) {
		 	new Draggable ( divDetails, { handle : 'divDragHandle' + coursId } );
		 		
		 	var closer = 'divCloseAjaxDetails' + coursId;
		 		
		 	Event . observe ( closer, 'click', closeCoursDetails );
		 		
		 	Event . observe ( divDetails, 'mouseover', function ( ) {$ ( divDetails ) . setStyle ( { zIndex : '1000' } ) } );
			Event . observe ( divDetails, 'mouseout', function ( ) { $ ( divDetails ) . setStyle ( { zIndex : '950' } ) } );
		 }
	});
}

//fermeture des détails de cours
function closeCoursDetails ( e ) {

	Event . stop ( e ) ;
	
	var coursId = Event . element ( e ) . id . gsub ( 'divCloseAjaxDetails', '' ) ;
	
	var coursDiv = 'divForAjaxDetails' + coursId ;
	
	new Effect . Fade ( coursDiv, {
		
		duration : 0.5, 
		afterFinish : function ( ) { $ ( coursDiv ) . update ( '' ) }
	
	} ) ;

}

//charge les resultats de recherche
function loadResultsCours ( ) {

	$ ( 'results' ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Chargement...</span></div>' );

	var data = $H ( {'ajax' : 'ok', 'dept' : $F ( 'dept' ) } ) . toQueryString ( );
	new Ajax . Updater ( 'results', 'ajaxCours.php', {
	
		postBody : data,
		onComplete : function ( ) {
			$$('.detailsCoursLink') . each ( function ( c ) { Event . observe ( c, 'click', loadDetailsCours, false ) } );
		}
	} );
	
}

//observation des evenements cours
function observeEventCours ( ) {
	remove();
	if ( $ ( 'dept' ) ) Event . observe ( 'dept', 'change', loadResultsCours );
}

/*                                               GESTION DES NEWS                                                                     */

//fermeture des détails
function closeNewsDetails ( e ) {

	Event . stop ( e ) ;
	
	var newsId = Event . element ( e ) . id . gsub ( 'closeNews', '' ) ;
	
	var newsDiv = 'newsDiv' + newsId ;
	
	$ ( newsDiv ) . update ( '<div id="ajaxLoaderNews"><span class="noDisplay">Chargement...</span></div>' );
	
	var data = $H ( { 'ajaxClose' : 'ok', 'newsId' : newsId } ) . toQueryString ( ) ;
	
	new Ajax . Updater  ( newsDiv, 'ajaxNews.php',  {
	
		 	postBody : data,
		 	
		 	onComplete : function ( ) {
		 		
		 		var opener = 'newsLink' + newsId;
		 		
		 		Event . observe ( opener, 'click', openNewsDetails );
		 	}
		 }
	);

}

//affichage des détails
function openNewsDetails ( e ) {

	Event . stop ( e ) ;
	
	var newsId = Event . element ( e ) . id . gsub ( 'newsLink', '' ) ;
	
	var newsDiv = 'newsDiv' + newsId ;
	
	$ ( newsDiv ) . update ( '<div id="ajaxLoaderNews"><span class="noDisplay">Chargement...</span></div>' );
	
	var data = $H ( { 'ajaxOpen' : 'ok', 'newsId' : newsId } ) . toQueryString ( ) ;
	
	new Ajax . Updater  ( newsDiv, 'ajaxNews.php',  {
	
		 postBody : data,
		 onComplete : function ( ) {
		 	var closer = 'closeNews' + newsId;
		 	Event . observe ( closer, 'click', closeNewsDetails );
		 	}
		 }
	);
}

//observation des evenements news
function observeEventNews ( ) {

	$$('.newsLink') . each ( function ( nl ) { Event.observe( $ ( nl ), 'click', openNewsDetails ) } );
}

/*                                                  GESTION DU LOGIN                                                    */

function loginCheck ( e ) {

	Event . stop ( e );
	$ ( 'logAlerte' ) .update ( '<div id="ajaxLoader"><span class="noDisplay">Interrogation...</span></div>' );
	var data = $H ( $ ( 'loginForm' ) . serialize ( true ) ) . toQueryString ( ) + '&' + $H ( { 'ajaxLogin': 'ok' } ) . toQueryString ( );
	var req = new Ajax . Request ( 'ajaxLogin.php', {
		method: 'post',
		parameters: data,
		onComplete: function ( req ) {
			if ( req . responseText != 'no' ) {
				window . location . replace ( 'http://admin.wangxian.com/index.php?login=' + req . responseText );
			}
			else {
				$ ( 'logAlerte' ) . update ( 'Votre identifiant ou mot de passe ne sont pas valides !' );
			}
		}
	} );
}

function observeEventLogin ( ) {
	
	if ( $ ( 'loginForm' ) ) {
		Event . observe ( 'loginForm', 'submit', loginCheck );
		formFocus ( 'loginForm' );
	}
}

/*                                                  GESTION DE CONTACT                                                    */

//verification du formulaire
function verifAndSend ( e ) {

	Event . stop ( e );
	
	if ( $F ( 'nom' ) == '' || $F ( 'prenom' ) == '' || $F ( 'mail' ) == '' || $F ( 'sujet' ) == '' || $F ( 'textarea' ) == '') {
		displayAlerte ( 'Vous n\'avez pas rempli tous les champs !' );
	}
	else {
		$ ( 'alerte' ) . update ( '<div id="ajaxLoader"><span class="noDisplay">Envoi...</span></div>' )
		var data = $H ( $ ( 'contactForm' ) . serialize ( true ) ) . toQueryString ( ) + '&' + $H ( { 'ajaxSend': 'ok' } ) . toQueryString ( );
		var req = new Ajax . Request ( 'ajaxContact.php', {
			method: 'post',
			parameters: data,
			onComplete: function ( req ) {
				if ( req . responseText == 'ok' ) displayAlerte ( 'Votre message est envoy&eacute; !' );
				else displayAlerte ( 'Votre message n\'a pas &eacute;t&eacute;  envoy&eacute; ! Veuillez recommencer' );
			}
		} );
	}
}

//avertissement
function displayAlerte (alerte ) {

	$ ( 'alerte' ) . update ( alerte );
	new Effect . Pulsate ( 'alerte' );
}

//focus des form
function formFocus ( form ) {

	Form . getElements ( form ) . each ( function ( el ) {
		Event . observe ( el, 'focus', function ( e ) { $ ( el ) . addClassName ( 'focus' ) } );
		Event . observe ( el, 'blur', function ( e ) { $ ( el ) . removeClassName ( 'focus' ) } );
	});
}

//verif du mail
function checkMail ( ) {

	var v = $F ( 'mail' );
	new Ajax . Request( 'ajaxContact.php', {
		method: 'post',
		parameters: $H ( { 'verifMail': v, 'ajax': 'ok' } ),
		onComplete: function ( req )  {
			if ( req . responseText != 'ok' ) {
				displayAlerte ( req . responseText );
				$('mail').focus();
				$ ( 'sub' ) . disable ( );
				//$ ( 'mail' ) . stopObserving ( 'blur', mail );
			}
			else {
				$ ('sub') . enable ( );
				displayAlerte ( '' );
			}
		}
	});
}

//gestionnaire d'evenements contact
function observeEventContact ( ) {
	
	if ( $ ( 'contactForm' ) ) {
		Event . observe ( 'mail', 'focus', function ( ) { Event . observe ( 'mail', 'blur', checkMail ) } );
		formFocus ( 'contactForm' );
		Event . observe ( 'contactForm', 'submit', verifAndSend );
	}
}


/*                                                  GESTION D'INSTITUT                                                   Event.stop(e); */

//toggle
function instAppear ( e ) {

	var el = Event . element (e ) . next ( 'div' );
	new Effect . toggle ( el );
}

//toggle2
function ss_instAppear ( e ) {

	var el = Event . element ( e ) . next ( 's' );
	new Effect . toggle ( el );
}

//observer
function observeEventInstitut ( ) {

	$$('.institut') . each ( function ( s ) {
		$ ( s ) . hide ( );
		Event . observe ( $ ( s ) . previous ( 'h3' ), 'click', instAppear );
	} );
	$$('.ss_institut') . each ( function ( s ) {
		$ ( s ) . hide ( );
		Event . observe ( $ ( s ) . previous ( 'h4' ), 'click', instAppear );
	});
}

/*                                                   OBSERVATION DES EVENEMENTS                                                     */

Event . observe ( window, 'load', observeEventNews );//mise en route du gestionnaire d'evenements news

Event . observe ( window, 'load', observeEventCours );//mise en route du gestionnaire d'evenements cours

Event . observe ( window, 'load', observeEventStages );//mise en route du gestionnaire d'evenements stages

Event . observe ( window, 'load', observeEventPhotos );//mise en route du gestionnaire d'evenements photos

Event . observe ( window, 'load', observeOpenInNewWindow );//mise en route du gestionnaire d'evenements openInNewWindow

Event . observe ( window, 'load', observeEventInstitut );//mise en route du gestionnaire d'evenements institut

Event . observe ( window, 'load', observeEventLogin );//mise en route du gestionnaire d'evenements login

Event . observe ( window, 'load', observeEventContact );//mise en route du gestionnaire d'evenements contact
