var pagerPosition = 0 ;
var pagerWaitOnChange = false ;
var timerOffre = null;

function changeFocusedPager(pageNum,borneSup){
	
	if(pageNum=='prev')
		pageNum=pagerPosition-1;
	else if(pageNum=='next')
		pageNum=pagerPosition+1;
	
	var loadCallBack = null ;

	if(pagerWaitOnChange){
		showProgressBar();
		loadCallBack = hideProgressBar ;
	}else
		loadCallBack = null ;



	$('#pager_pool_objects').load('/index.php?action=ajax_pager_get_page&page='+pageNum,null,loadCallBack);


	if(borneSup > 7){
		$('.pager_link').remove();
		var debut ;
		var fin ;

		debut = pageNum-3 ;
		if(debut < 1 ) 
			debut = 1 ;

		fin = debut + 6 ;
		if(fin > borneSup ){
			fin = borneSup ;
			debut = borneSup - 6 ;
		}

		for(var i = debut ; i <= fin ; i ++){
			var spanTag = $('<span/>');
			var aTag = $('<a/>');

			spanTag.addClass('pager_link');
			spanTag.addClass('pager_link_'+i);

                        var aTagClass = 'pager_link_a_' + i;
                        var aTagHref = '#top_pool_recherche';
                        var aTagOnclick = 'javascript:changeFocusedPager(' + i + ', ' + borneSup + ');';

                        // For FF
			if(jQuery.browser.mozilla)
                        {
                            aTag.addClass( aTagClass );
                            aTag.attr('href', aTagHref );
                            aTag.attr('onclick', aTagOnclick );
                            aTag.text(i);

                            spanTag.append(aTag);
                        }
                        // For IE & Chrome
                        else
                        {
                            var pageLink = '<a class="' + aTagClass + '" href="' + aTagHref + '" onclick="' + aTagOnclick + '" >' + i + '</a>';
                            spanTag.html(pageLink);
                        }

			$('div.pagination span.next').before(spanTag);

		}
	}
	

	$('span.pager_link_'+pagerPosition).removeClass('current');
	$('span.pager_link_'+pageNum).addClass('current');

	link_prev = $('.pager_link_prev');
	link_next = $('.pager_link_next');

	if(pageNum==1){
		link_prev.hide();
		link_next.show();
	}
	else if(pageNum==borneSup){
		link_next.hide();
		link_prev.show();
	}
	else{
		link_next.show();
		link_prev.show();
	}

	pagerPosition = pageNum ;

	return false;
}

function comptabiliserOffre(id){
	$.get("/index.php?action=candidat_comptabiliser_offre&num_offre="+id);
}

function verifierDetailOffreOuverte(id){
	if($('#collapser_content_offre_'+id).is(':visible'))
		comptabiliserOffre(id);
}

function ouvertureDetailOffre(id){
	setTimeout('verifierDetailOffreOuverte('+id+')',5000);
}


var selectorMap = [
	{
		idMask : /^inscription_form_offre_/ , 
		selectorMask : /\.blocBlancx5 \.inscription_form_offre \.formulaire p/i ,
		styleSheetMask : /stylesAnnexes\.css/ ,
		attribute : 'width'
	} ,
	{ 
		idMask : /^adh_form_offre_/ , 
		selectorMask : /\.blocBlancx5 \.inscription_form_offre \.formulaire p/i ,
		styleSheetMask : /stylesAnnexes\.css/ ,
		attribute : 'width'
	} 
];


function offreSlideDown(id,offerId){
	
	/* Un peu de déclaration de variables... */
	var collapserTop = $('#collapser_top_offre_'+offerId);
	var collapserContent = $('#collapser_content_offre_'+offerId);
	var collapserTabs = collapserContent.children('ul.TabbedPanelsTabGroup');
	var scrollingDuration = 1500;
	
	/* anchor = ancre = tag html juqu'auquel on va scroller 
	 * Par défaut, on scroll jusqu'en haut du bloc de l'offre */
	var anchor = collapserTop;	
	/* Mais si le bloc "Detail" est ouvert... */
	if( collapserContent.css('display') == 'block' )
	{ 
		/* Alors on scroll jusqu'au bloc "Sélectionner" / "Postuler" / "Détail" précédent le formulaire d'inscription */
		anchor = collapserTabs;
	}
	
	/* Si on déplie "Sélectionner" ou "Postuler", alors il faut gérer le scrolling & le slideUp du bouton "Replier" */
	inscriptionScrollingWhenSlideUp(id,collapserTop)
	
	/* Calcul de la position de "anchor" par rapport au haut de la fenêtre */
	var elementTop = anchor.offset().top;
	var windowTop = $(window).scrollTop();
	var anchorTop = elementTop - windowTop;	
	
	/* Si nous sommes déjà positionné sur l'ancre au moment du clic... */
	if(anchorTop==0)
	{
		/* Alors inutile d'attendre, on fait notre slideDown immédiatement */
		offreSlideDownAfterScrolling(id);
	}
	/* Sinon... */
	else
	{
		/* Scrolling de "Sélectionner" ou "Postuler" */
		$.scrollTo(anchor, scrollingDuration);
		
		if(timerOffre)	clearTimeout(timerOffre);
	
		/* Timer attendant une durée égale à celle requise par le scrolling,
		 * puis appel de la fonction gérant le slideDown de "Sélectionner" ou "Postuler" */
		timerOffre = setTimeout("offreSlideDownAfterScrolling(\""+id+"\")",scrollingDuration);
	}
}

function offreSlideDownAfterScrolling(id){
//	alert(timerOffre);
	clearTimeout(timerOffre);
		
	/* Notre bloc à slider */
	var element = $('#'+id) ;
	
	/* Callback du slideDown par défaut... */
	var callBack = function(){};	
	/* ...sauf pour Safari, qui se réserve un callBack personnalisé #inAppleWeTrust */
	if($.browser.safari){
		callBack = function(){

			var selectorMask = null ;
			var styleSheetMask = null ;
			var attribute = null ;
			/* 
			on cherche le selecteur de la regle css à partir de l'id 
			(on ne retient pas directement le sélécteur mais le pattern du  + la feuille de style )
			
			*/
			
			for(var i = 0 ; i < selectorMap.length ; i++ ){
				if(id.match(selectorMap[i].idMask)){
					selectorMask = selectorMap[i].selectorMask ;
					styleSheetMask = selectorMap[i].styleSheetMask ;
					attribute = selectorMap[i].attribute ;

				}
			}
			
			if( selectorMask == null || styleSheetMask == null )
				return ;
			
			var targetRule = null ;
			// une boucle sur le tableau des feuilles de style
			for(var i = 0 ; i < document.styleSheets.length ; i++ ){

				var styleSheet = document.styleSheets[i] ;

				if(styleSheet.href.match(styleSheetMask)){

					// une boucle sur le tableau des règles
					for(var j = 0 ; j < styleSheet.rules.length ; j++ ){

						var rule = styleSheet.rules[j] ;

						if(rule.selectorText.match(selectorMask)){

							targetRule = rule ;

						}
					}
				}

			}

			/* on "modifie" la règle, 
			c'est suffisant pour provoquer un "recalcul ou je sais pas trop quoi"
			*/
			if( targetRule != null){
				targetRule.style[attribute] = targetRule.style[attribute] ;
			}
			
		};		
	}
	
	element.slideDown('slow',callBack);
}

function inscriptionScrollingWhenSlideUp(id,collapserTop){	
	
	$('#'+id+' a.inscriptionFermerForm').click(
		function()
		{
			var scrollingDuration = 1500;

			/* On scroll jusqu'en haut du bloc de l'offre */
			var anchor = collapserTop;	
			
	
			/* Calcul de la position de "anchor" par rapport au haut de la fenêtre */
			var elementTop = anchor.offset().top;
			var windowTop = $(window).scrollTop();
			var anchorTop = elementTop - windowTop;	

			/* Si nous ne sommes pas déjà positionné sur l'ancre au moment du clic... */
			if(anchorTop!=0)
			{
				$.scrollTo(anchor, scrollingDuration);	
			}
		}
	);	
	
	
	
	
}

