/*                                             GESTION DES PHOTOS                                                                    */

//change la photo
function changePicture ( e ) {
	
    Event . stop ( e );
    
    var cle = Event . element ( e ) . up ( 'a' ) . id . gsub ( 'getDetailPicture_', '' );

    var data = $H ( {
	'module' : 'default',
	'controller' : 'ajax',
	'action' : 'changepicture',
	'imgKey': cle
    } ) . toQueryString ( );
	
    $ ( 'ajaxIndicatorDiv' ) . show();
	
    new Ajax . Updater ( 'galleryDetailPicture', 'changepicture', {
	postBody: data,
	onComplete: function ( ) {
	    
	    var data2 = $H ( {
		'module' : 'default',
		'controller' : 'ajax',
		'action' : 'changepicturelegend',
		'imgKey': cle
	    } ) . toQueryString ( );

	    new Ajax . Updater ( 'galleryLegend', 'changepicturelegend', {

		postBody: data2,
		onComplete: function () {

		    initDisplayBigPicture();

		    $ ( 'ajaxIndicatorDiv' ) .hide();
		}
	    } )
	}
    } );
}

function initDisplayBigPicture () {

    $$ ( '.getBigPicture' ) . each ( function ( el ) {

	Event . observe( $ ( el ), 'click', displayBigPicture ) ;
    } ) ;
}

function displayBigPicture ( el ) {

    Event . stop ( el ) ;

    var element = Event . element ( el ) ;

    var href = element . up ( 'a' ) . href ;

    $ ( 'bigGalleryPicture' ) . update ( '<img alt="" src="' + href + '" />' ) ;

    new Effect . Appear ( 'blackCache' , {

	duration : 0.5,
	from : 0,
	to : 0.7,
	afterFinish : function () {

	    new Effect . Appear ( 'bigGalleryPictureDiv' ) ;

	    Event . observe ( $ ( 'bigGalleryPictureClose' ), 'click', function () {

		new Effect . Fade ( 'bigGalleryPictureDiv', {

		    duration : 0.5,
		    afterFinish : function () {

			$ ( 'bigGalleryPicture' ) . update ( '' ) ;

			new Effect . Fade ( 'blackCache', {

			    duration: 0.5,
			    from: 0.7,
			    to: 0
			} ) ;
		    }
		} ) ;
	    } ) ;
	}
    } ) ;
}

//Observateur d'evenements photos
function observeEventGallery ( ) {
	
    $$('.getDetailPicture') . each ( function ( c ) {
	
	Event . observe ( c, 'click', changePicture, 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;
    var data ;

    if ( el == 'prof' ) {

	$ ( 'month' ) . value = '';
	$ ( 'year' ) . value = '';


	data = $H ( {
	    'module' : 'default',
	    'controller' : 'ajax',
	    'action' : 'fillstagesresults',
	    'prof' : $F ( 'prof' )
	} ) . toQueryString ( );

	loadResultsStages ( data );
    }

    else if ( el == 'year' ) {

	$ ( 'prof' ) . value = '';

	if ( $F ( 'month' ) == '00' ) {

	    $ ( 'results' ) . update ( 'Choisissez un mois' );
	}

	else {

	    data = $H ( {
		'module' : 'default',
		'controller' : 'ajax',
		'action' : 'fillstagesresults',
		'month': $F ( 'month' ),
		'year': $F ( 'year' )
	    } ) . toQueryString ( );
	    
	    loadResultsStages ( data );
	}
    }
    else if ( el == 'month' ) {

	$ ( 'prof' ) . value = '';

	if ( $F ( 'year' ) == '00' ) {

	    $ ( 'results' ) . update ( 'Choisissez une année' );
	}
	else {

	    data = $H ( {
		'module' : 'default',
		'controller' : 'ajax',
		'action' : 'fillstagesresults',
		'month': $F ( 'month' ),
		'year': $F ( 'year' )
	    } ) . toQueryString ( );

	    loadResultsStages ( data );
	}
    }

}

//charge les resultats de recherche
function loadResultsStages ( data ) {

    $ ( 'ajaxIndicatorDiv' ) . show();

    new Ajax . Updater ( 'results', 'fillstagesresults', {
	
	postBody : data,
	onComplete : function ( ) {

	    $ ( 'ajaxIndicatorDiv' ) . hide();

	    $$('.stageLink') . 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 ( {
	'module' : 'default',
	'controller' : 'ajax',
	'action' : 'fillstagesdetails',
	'stageId' : 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'
    } );
	
    $ ( 'ajaxIndicatorDiv' ) . show();

    new Ajax . Updater  ( divDetails, 'fillstagesdetails',  {
	
	postBody : data,
		 	
	onComplete : function ( ) {

	    $ ( 'ajaxIndicatorDiv' ) . hide();
	
	    $ ( divDetails ) . show ( );

	    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 ( $ ( 'month' ) ) {

	Event . observe ( 'month', 'change', choixStages );
    }
    if ( $ ( 'year' ) ) {
	
	Event . observe ( 'year', '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 ( {
	'module' : 'default',
	'controller' : 'ajax',
	'action' : 'fillcoursdetails',
	'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'
    } );
	
    $ ( 'ajaxIndicatorDiv' ) . show();
	
    new Ajax . Updater  ( divDetails, 'fillcoursdetails',  {
	
	postBody : data,
		 	
	onComplete : function ( ) {

	    $ ( 'ajaxIndicatorDiv' ) . hide();
	
	    $ ( divDetails ) . show ( );

	    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 ( ) {

    $ ( 'ajaxIndicatorDiv' ) . show();

    var data = $H ( {
	'module' : 'default',
	'controller' : 'ajax',
	'action' : 'fillcoursresults',
	'departement' : $F ( 'departement' )
    }
    ) . toQueryString ( );
    new Ajax . Updater ( 'results', 'fillcoursresults', {

	postBody : data,
	onComplete : function ( ) {

	    $ ( 'ajaxIndicatorDiv' ) . hide();
	    
	    $$('.detailsCoursLink') . each ( function ( c ) {
		
		Event . observe ( c, 'click', loadDetailsCours, false ) ;

	    } );
	}
    } );
	
}

//observation des evenements cours
function observeEventCours ( ) {
    remove();
    if ( $ ( 'departement' ) ) {

	Event . observe ( 'departement', '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 newsDetails = 'newsDetails' + newsId ;

    new Effect . toggle ( newsDetails, 'blind' , {
	duration : 0.3
    } ) ;
	
//	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é !' );
//		else displayAlerte ( 'Votre message n\'a pas été  envoyé ! 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 );
    });
}

///////////////////////////////////////////////////////////////////////////NEWSLETTER

function observeEventNewsletter () {
    
    Event . observe ( $ ('newsletterSubscribe'), 'click', newsletterSubscribe );
}

function newsletterSubscribe (event) {
    
    Event.stop(event);
    
    var mail = $F ('newsletterMail');
    
    var data = $H ( {
	'module' : 'default',
	'controller' : 'ajax',
	'action' : 'newslettersubscribe',
	'mail' : mail
    }) . toQueryString ( );
    
    new Ajax.Request('newslettersubscribe',{
	
	postBody: data,
	onComplete: function (req) {
	    
	    $ ('newsletterMessage').update (req.responseText);
	}  
    });
}

/*                                                   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', observeEventGallery );//mise en route du gestionnaire d'evenements photos
Event . observe ( window, 'load', initDisplayBigPicture ) ;

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', observeEventNewsletter );//mise en route du gestionnaire d'evenements newsletter

