// Change this var value to enable or disable Ajax Nav

var ajaxNavEnabled = (cdtRegistry.IE6) ? false : true;

var ajaxNavSpecific = false;


// --------------------------------------- do not edit after this line

var ajaxRedirection = false;

if( ajaxNavEnabled ) {

	ajaxNavigation = true;
	_handleAjaxNavAnchorIfNeeded();

	$(document).ready( _initAjaxNavigation );

}

function _initAjaxNavigation() {

	if( ajaxRedirection )
		return;
	if( ! ajaxNavEnabled )
		return;
		
	setTimeout('_overrideCategoryBlockTitleClickHandler();', 10 );

	var preOpenedCategoryBlockTitle = $('#categoriesList .categoryBlock h3.opened');
	if( preOpenedCategoryBlockTitle.length>0 )
		_overrideSubCatBlockTitlesClickHandler( preOpenedCategoryBlockTitle.parent() );

	_overrideFullAnnonceLinkClickHandler();
	_ajaxHandlePaginationControls();
	_initMySelectionModificationButtons();

	var preOpenedAnnonce = $('.annoncesNavBlock');
	if( preOpenedAnnonce.length>0 )
		_overrideAnnonceNavBlockClicksHandler( preOpenedAnnonce );


	//ajaxLoading img preload
	var ajaxLoadingImgPreload = new Image();
	ajaxLoadingImgPreload.src = cdtRegistry.baseUrl+'images/byController/guideDeVoyage/ascenceurCategorieAjaxLoading.gif';

}


function _handleAjaxNavAnchorIfNeeded() {

	var hash;
	var selectedCategoryRegExp, selectedSubCatRegExp, selectedAnnonceRegExp1, selectedAnnonceRegExp2;
	var targetLocation;

	// Location hash reading
		hash = window.location.hash;
		if( hash.charAt(0)!='#' )
			hash = '#' + hash;

	// RegExps definition
		selectedCategoryRegExp1 = /^#\/([a-z_]+)$/i;
		selectedCategoryRegExp2 = /^#\/([a-z_]+)\/page=([0-9]+)$/i;
		selectedSubCatRegExp1 = /^#\/([a-z_]+)\/([a-z_]+)$/i;
		selectedSubCatRegExp2 = /^#\/([a-z_]+)\/([a-z_]+)\/page=([0-9]+)$/i;
		selectedAnnonceRegExp1 = /^#\/([a-z_]+)\/([a-z_]+)\/([0-9]+)-([^\/]+)\/index=([0-9]+)$/i;
		selectedAnnonceRegExp2 = /^#\/([a-z_]+)\/([0-9]+)-([^\/]+)\/index=([0-9]+)$/i;

	// Does our hash match any of our RegExps ?
		targetLocation = false;

		if( selectedCategoryRegExp1.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' +  RegExp.$1;
		else if( selectedCategoryRegExp2.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' + RegExp.$1 + '?page=' + RegExp.$2;
		else if( selectedSubCatRegExp1.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' + RegExp.$1 +'/' + RegExp.$2;
		else if( selectedSubCatRegExp2.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' + RegExp.$1 +'/' + RegExp.$2 + '?page=' + RegExp.$3;
		else if( selectedAnnonceRegExp1.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' + RegExp.$1 +'/' + RegExp.$2 + '/Provence/' + RegExp.$3 + '-' + RegExp.$4 + '?index=' + RegExp.$5;
		else if( selectedAnnonceRegExp2.exec(hash)!=null )
			targetLocation = cdtRegistry.gdvUrl + '/' + RegExp.$1 +'/'+ cdtRegistry.gdvAll + '/Provence/' + RegExp.$2 + '-' + RegExp.$3 +'?index=' + RegExp.$4;


	// Redirect !
		if( targetLocation!=false ) {
			ajaxRedirection = true;
			setTimeout('self.location = "'+targetLocation+'";', 100 );
		}

}


function _overrideCategoryBlockTitleClickHandler() {

	var targetLinksPath, targetLinks;

	if( cdtRegistry.IE6 )
		targetLinksPath = '#categoriesList .categoryBlock H3 A';
	else
		targetLinksPath = '#categoriesList .categoryBlock H3';

	targetLinks = $(targetLinksPath);

	targetLinks.each( function() {
		var $me = $(this);
		if( $me.hasClass('opened') )
			return;//no Ajax opening on pre-opened Categories
		if( $me.hasClass('disabled') )
			return;//no Ajax opening on disabled cats			
		if( $me.parents('#aLaUneBlock').length==1 )
			return;//no Ajax opening on "A la Une" specific block
		if( $me.parent().find('#seeTourismOfficeForRestaurants').length==1 )
			return;//no Ajax opening on empty restaurants specific block
		$me.unbind('click', _onCategoryBlockTitleClicked );
		$me.click( _onAjaxCategoryTitleLinkClicked );
	});
	
}


function _onAjaxCategoryTitleLinkClicked() {

	var $me;
	var myAjaxRandomClass;

	$me = $(this);
	if($me.get(0).nodeName.toString().toUpperCase()=='A')
		$me = $me.parent();//IE6

	if( $me.hasClass('ajaxLoading') )
		return false;//ajax process in progress...

	if( $me.hasClass('disabled') )
		return;//no Ajax opening on disabled cats		
			
	$me.removeClass('closed');
	$me.addClass('ajaxLoading');

	myAjaxRandomClass = 'ajaxRandomClass_' + Math.round( Math.random()*1000000 );
	$me.addClass( myAjaxRandomClass );

	_triggerCatergoriesDescriptionsMouseBehaviour();
	
	setTimeout( '_ajaxRetrieveCategoryContent( $(".'+myAjaxRandomClass+'") );', 200 );

	return false;//no link href activation !

}


function _ajaxRetrieveCategoryContent( aTitle ) {

	var $myLink, myHref, targetCatRegExp, targetCatId;

	$myLink = aTitle.find('a');
	myHref = $myLink.attr( 'href' );

	targetCatRegExp = /\/([^\/#]+)#?[^\/]*$/;
	targetCatRegExp.exec( myHref.toString() );

	targetCatId = RegExp.$1;

	$.ajax( {
		type: 'GET',
		url: cdtRegistry.gdvUrl+'/ajax-categorie/'+targetCatId,
		success: function( aReturnedHtml ) {
			_onAjaxCategorySuccess( aTitle, aReturnedHtml );
		},
		error: _onAjaxError
	} );

}


function _onAjaxCategorySuccess( aCategoryTitle, aReturnedHtml ) {

	var $categoryLink;
	var $categoryIntro;
	var $linkToUnbind;

	//console.log(aCategoryLink.html());
	//console.log(aReturnedHtml);
	
	// Let's close any opened category
	$('#categoriesList .categoryBlock h3.opened').parent().each( function() {
		var $me = $(this);
		var $myTitle = $me.find('h3');
		var $myContent = $me.find('.annoncesListContainer, .subCatsList');
		$myTitle.removeClass('opened');$myTitle.addClass('closed');
		$myContent.hide();
		$me.find('.categoryIntro').hide();
	} );

	$categoryLink = aCategoryTitle.find('a');
	
	$categoryIntro = aCategoryTitle.parent().find('.categoryIntro');
	$categoryIntro.show();
	
	$categoryIntro.after(aReturnedHtml);
	_overrideSubCatBlockTitlesClickHandler( aCategoryTitle.parent() );

	aCategoryTitle.removeClass('ajaxLoading');
	aCategoryTitle.addClass('opened');
	
	$linkToUnbind = (cdtRegistry.IE6) ? $categoryLink : aCategoryTitle ;

	$linkToUnbind.unbind('click', _onAjaxCategoryTitleLinkClicked );

	$categoryLink.attr('href', 'javascript:;');
	$categoryLink.html( '<span class="minusContainer">'+$categoryLink.html()+'</span>' );

	$linkToUnbind.click( _onOpenedCategoryTitleClicked );
	aCategoryTitle.css('cursor', 'pointer');


	_overrideFullAnnonceLinkClickHandler();
	_ajaxHandlePaginationControls();
	_initMySelectionModificationButtons();

	//setTimeout('maskGroupsButOne("'+ajaxCategory+'");', 1000 );

	_ajaxScrollTo( aCategoryTitle.parent().find('a:first').attr('name') );

	_ajaxUpdateBreadcrumb();
	_ajaxUpdateHash();
	_ajaxStat();

}


function _onAjaxError( aXMLHttpRequest, aTextStatus, aErrorThrown) {

	alert('_onAjaxError()');
	alert(aTextStatus);

}


function _overrideSubCatBlockTitlesClickHandler( aParentCategoryContainer ) {

	var $targetLinks;

	$targetLinks = aParentCategoryContainer.find('.subCatTitle');

	$targetLinks.each( function() {
		var $me = $(this);
		if( $me.hasClass('subCatTitleOpened') )
			return;//no Ajax opening on pre-opened SubCats
		if( $me.hasClass('subCatTitleDisabled') )
			return;//no Ajax opening on disabled SubCats
		$me.click( _onAjaxSubCatTitleLinkClicked );
	});
	
}


function _onAjaxSubCatTitleLinkClicked() {

	var $me;
	var myAjaxRandomClass;

	$me = $(this);

	if( $me.hasClass('subCatTitleAjaxLoading') )
		return false;//ajax process in progress...

	$me.removeClass('subCatTitleClosed');
	$me.addClass('subCatTitleAjaxLoading');

	myAjaxRandomClass = 'ajaxRandomClass_' + Math.round( Math.random()*1000000 );
	$me.addClass( myAjaxRandomClass );

	setTimeout( '_ajaxRetrieveSubCatContent( $(".'+myAjaxRandomClass+'") );', 200 );

	return false;//no link href activation !

}


function _ajaxRetrieveSubCatContent( aLink ) {

	var myHref, targetSubCatRegExp, targetCatId, targetSubCatId;

	myHref = aLink.attr( 'href' );

	targetSubCatRegExp = /\/([^\/]+)\/([^\/#]+)#?[^\/]*$/;
	targetSubCatRegExp.exec( myHref.toString() );

	targetCatId = RegExp.$1;
	targetSubCatId = RegExp.$2;

	//console.log('targetCatId='+targetCatId+' ; targetSubCatId='+targetSubCatId);
	
	var ajaxUrl = (ajaxNavSpecific) ? ajaxNavSpecific +'/ajax-subcat/'+targetSubCatId : cdtRegistry.gdvUrl+'/ajax-subcat/'+targetCatId+'/'+targetSubCatId ;
	
	$.ajax( {
		type: 'GET',
		url: ajaxUrl ,
		success: function( aReturnedHtml ) {
			_onAjaxSubCatSuccess( aLink, aReturnedHtml );
		},
		error: _onAjaxError
	} );
	
	return false;

}



function _onAjaxSubCatSuccess( aSubCatLink, aReturnedHtml ) {

	// Let's close any opened subCat
	$('#categoriesList .categoryBlock .subCatTitleOpened').parent().each( function() {
		var $me = $(this);
		var $myTitle = $me.find('.subCatTitle');
		var $myContent = $me.find('.subCatBlockContent');
		$myTitle.removeClass('subCatTitleOpened');$myTitle.addClass('subCatTitleClosed');
		$myContent.hide();
	} );

	aSubCatLink.after( '<div class="subCatBlockContent">'+aReturnedHtml+'</div>' );
	//_overrideSubCatBlockTitlesClickHandler( aCategoryTitle.parent() );

	aSubCatLink.removeClass('subCatTitleAjaxLoading');
	aSubCatLink.addClass('subCatTitleOpened');

	aSubCatLink.unbind('click', _onAjaxSubCatTitleLinkClicked );

	aSubCatLink.attr('href', 'javascript:;');
	
	aSubCatLink.click( _onOpenedSubCatTitleClicked );

	_overrideFullAnnonceLinkClickHandler();
	_ajaxHandlePaginationControls();
	_initMySelectionModificationButtons();

	_ajaxScrollTo( aSubCatLink.parent().find('a:first').attr('name') );

	_ajaxUpdateBreadcrumb();
	_ajaxUpdateHash();
	_ajaxStat();
	
}


function _overrideFullAnnonceLinkClickHandler() {

	var $fullAnnonceLinks;

	$fullAnnonceLinks = $('.annoncesListItem .picture a, .annoncesListItem .nomAnnonce a, .annoncesListItem .displayFullAnnonceLinkContainer a');

	$fullAnnonceLinks.click( _onAjaxFullAnnonceLinkClicked );

}


function _onAjaxFullAnnonceLinkClicked() {

	var $me, $myAnnonceListItem;

	$me = $(this);

	$myAnnonceListItem = $me.parents('.annoncesListItem');
	$myAnnonceListItem.find('.nomAnnonce').prepend('<div class="ajaxLoading"><img src="'+cdtRegistry.baseUrl+'images/byController/guideDeVoyage/ajaxAnnonceLoading.gif" /></div><br/>');


	myAjaxRandomClass = 'ajaxRandomClass_' + Math.round( Math.random()*1000000 );
	$me.addClass( myAjaxRandomClass );

	$me.css('outline', 'none');

	setTimeout( '_ajaxRetrieveFullAnnonceContent( $(".'+myAjaxRandomClass+'") );', 200 );

	return false;

}


function _ajaxRetrieveFullAnnonceContent( aFullAnnonceLink ) {

	var myHref, targetAnnonceRegExp, targetAnnonceId, targetAnnonceIndex;
	var $numResultsDisplay, numResults;
	var ajaxUrl;

	myHref = aFullAnnonceLink.attr( 'href' );

	targetAnnonceRegExp = /\/([0-9]+)-[^\/]+\?index=([0-9]+)#?.*$/;
	targetAnnonceRegExp.exec( myHref.toString() );

	targetAnnonceId = RegExp.$1;
	targetAnnonceIndex = RegExp.$2;

	//console.log('targetAnnonceId='+targetAnnonceId);

	$numResultsDisplay = aFullAnnonceLink.parents('.annoncesListContainer').find('.numResults');
	numResults = parseInt( $numResultsDisplay.html() );

	_ajaxGetAnnonce( targetAnnonceId, aFullAnnonceLink, targetAnnonceIndex, numResults );

}



function _ajaxGetAnnonce( aAnnonceId, aAnnonceLink, aAnnonceIndex, aNumResults ) {

	ajaxUrl = (ajaxNavSpecific) ? ajaxNavSpecific+'/ajax-annonce/' : cdtRegistry.gdvUrl+'/ajax-annonce/';
	if (!ajaxNavSpecific) ajaxUrl += ajaxCategory+'/';
	if( typeof(ajaxSubCat)!='undefined' )
		ajaxUrl += ajaxSubCat+'/';
	else
		ajaxUrl += cdtRegistry.gdvAll + '/';
	ajaxUrl += aAnnonceId;


	$.ajax( {
		type: 'GET',
		url: ajaxUrl,
		data: 'index='+aAnnonceIndex+'&numResults='+aNumResults,
		success: function( aReturnedHtml ) {
			_onAjaxAnnonceSuccess( aAnnonceLink, aReturnedHtml );
		},
		error: _onAjaxError
	} );

}


function _onAjaxAnnonceSuccess( aAnnonceLink, aReturnedHtml ) {

	var $parentTargetBlock;

	$parentTargetBlock = aAnnonceLink.parents('.subCatBlockContent');

	if( $parentTargetBlock.length==0 ) {
		$parentTargetBlock = aAnnonceLink.parents('.annoncesNavBlock');//no subcat
		if( $parentTargetBlock.length==0 && aAnnonceLink.parents('.annoncesListContainer').length==1 )
			$parentTargetBlock = aAnnonceLink.parents('.annoncesListContainer');
	}

	$parentTargetBlock.empty().html( aReturnedHtml );

	_overrideAnnonceNavBlockClicksHandler( $parentTargetBlock.find('.annoncesNavBlock') );
	initBoxes();
	_initSlideShows();

	_ajaxScrollTo( $parentTargetBlock.find('a:first').attr('name') );

	_ajaxUpdateBreadcrumb();
	_ajaxUpdateHash();
	_ajaxStat();

}


function _overrideAnnonceNavBlockClicksHandler( aAnnonceNavBlock ) {

	var $nextPrevLinks;
	var $returnToListLinks;

	$nextPrevLinks = aAnnonceNavBlock.find('.navigation a.previous, .navigation a.next');
	$nextPrevLinks.click( _onAjaxAnnonceNavButtonClicked );

	$returnToListLinks = aAnnonceNavBlock.find('.navigation a.back');
	$returnToListLinks.click( _onAjaxAnnonceNavButtonClicked );

}


function _onAjaxAnnonceNavButtonClicked() {

	var $me, $myAnnonceContainer;
	var functionToCall;

	$me = $(this);

	$myAnnonceContainer = $me.parents('.annoncesNavBlock');
	$myAnnonceContainer.find('.nomAnnonce').prepend('<div class="ajaxLoading"><img src="'+cdtRegistry.baseUrl+'images/byController/guideDeVoyage/ajaxAnnonceLoading.gif" /></div><br/>');


	myAjaxRandomClass = 'ajaxRandomClass_' + Math.round( Math.random()*1000000 );
	$me.addClass( myAjaxRandomClass );

	$me.css('outline', 'none');

	functionToCall = ($me.hasClass('back')) ? '_ajaxRetrieveListReturnContent' : '_ajaxRetrieveNextPrevAnnonceContent' ;
	setTimeout( functionToCall+'( $(".'+myAjaxRandomClass+'") );', 200 );

	return false;

}


function _ajaxRetrieveNextPrevAnnonceContent( aFullAnnonceLink ) {

	var myHref, targetAnnonceRegExp, targetAnnonceId, targetAnnonceIndex;
	var $numResultsDisplay, numResults;

	myHref = aFullAnnonceLink.attr( 'href' );

	// /guide-de-voyage/patrimoine/sites_et_monuments/Arles/25596-Le+Th%C3%A9%C3%A2tre+Antique?index=6#patrimoine

	targetAnnonceRegExp = /\/([0-9]+)-[^\/]+\?index=([0-9]+)#?.*$/;
	targetAnnonceRegExp.exec( myHref.toString() );

	targetAnnonceId = RegExp.$1;
	targetAnnonceIndex = RegExp.$2;

	//console.log('targetAnnonceId='+targetAnnonceId);

	$numResultsDisplay = aFullAnnonceLink.parents('.annoncesNavBlock').find('.numResults');
	numResults = parseInt( $numResultsDisplay.html() );


	_ajaxGetAnnonce( targetAnnonceId, aFullAnnonceLink, targetAnnonceIndex, numResults );

}



function _ajaxRetrieveListReturnContent( aFullAnnonceLink ) {

	var myHref, targetListRegExp, catsArray, targetCategoryId, targetSubCatId, targetPage;
	var hasPage, hasSubCat;
	var ajaxUrl;

	myHref = aFullAnnonceLink.attr( 'href' );

	hasPage = ( myHref.indexOf('?page=')>-1 ) ? true : false ;
	
	var base = (ajaxNavSpecific) ? ajaxNavSpecific.substr(1) : cdtRegistry.gdv;
	if( hasPage )
		targetListRegExp = new RegExp("/" + base + "\\/([^?]+)\\?page=([0-9]+)$","gi");
	else
		targetListRegExp = new RegExp("/"+ base + "\\/(.+)$","gi");
			
	targetListRegExp.exec( myHref.toString() );

	catsArray = RegExp.$1.split('/');
	
	if (!ajaxNavSpecific) {
		targetCategoryId = catsArray[0];
		hasSubCat = ( catsArray.length == 2 ) ? true : false ;
		if( hasSubCat ) targetSubCatId = catsArray[1];
	} else {
		hasSubCat = ( catsArray.length > 0 ) ? true : false ;
		targetSubCatId = catsArray[0];
	}

	targetPage = (hasPage) ? RegExp.$2 : 1 ;
	
	if( hasSubCat )
		ajaxUrl = (ajaxNavSpecific) ? ajaxNavSpecific +'/ajax-subcat/'+targetSubCatId : cdtRegistry.gdvUrl+'/ajax-subcat/'+targetCategoryId+'/'+targetSubCatId;
	else
		ajaxUrl = (ajaxNavSpecific) ? ajaxNavSpecific +'/ajax-subcat/'+ cdtRegistry.gdvAll: cdtRegistry.gdvUrl+'/ajax-subcat/'+targetCategoryId+'/' + cdtRegistry.gdvAll;

	$.ajax( {
		type: 'GET',
		url: ajaxUrl,
		data: 'page='+targetPage,
		success: function( aReturnedHtml ) {
			_onAjaxAnnoncesListReturnSuccess( aFullAnnonceLink, aReturnedHtml );
		},
		error: _onAjaxError
	} );

}


function _onAjaxAnnoncesListReturnSuccess( aFullAnnonceLink, aReturnedHtml ) {

	var $parentTargetBlock;

	$parentTargetBlock = aFullAnnonceLink.parents('.subCatBlockContent');

	if( $parentTargetBlock.length==0 ) {
		$parentTargetBlock = aFullAnnonceLink.parents('.annoncesNavBlock');//no subcat
		if( $parentTargetBlock.length==0 && aFullAnnonceLink.parents('.annoncesListContainer').length==1 )
			$parentTargetBlock = aFullAnnonceLink.parents('.annoncesListContainer');
	}

	$parentTargetBlock.empty().html( aReturnedHtml );

	_overrideFullAnnonceLinkClickHandler();
	_ajaxHandlePaginationControls();
	_initMySelectionModificationButtons();

	var $scrollTarget = $('.annoncesListContainer:visible');
	//console.log('$scrollTarget.length='+$scrollTarget.length);
	if( $scrollTarget.length==1 )
		$.scrollTo( $scrollTarget, { duration: 500 } );


	_ajaxUpdateBreadcrumb();
	_ajaxUpdateHash();
	_ajaxStat();

}


function _ajaxHandlePaginationControls() {
	
	$('.pagination').each( function() {
		
		var $me = $(this);
		var $myControls;

		$myControls = $me.find('a');
		
		$myControls.click( _onAjaxPaginationControlClick );
		
	});
	
	
}


function _onAjaxPaginationControlClick() {

	var $me, $myPaginationControl;
	var myHref;
	var catsMatchRegExp, catsArray;
	
	$me = $(this);
	$myPaginationControl = $me.parents('.pagination');

	$myPaginationControl.before('<div class="ajaxLoading"><img src="'+cdtRegistry.baseUrl+'images/byController/guideDeVoyage/ajaxAnnonceLoading.gif" /></div>');

	// guide-de-voyage/sites_naturels?page=2
	// guide-de-voyage/patrimoine/musees?page=4
	// guide-de-voyage/ajax-subcat/patrimoine/parcs_et_jardins?page=3

	myHref = $me.attr('href');

	if( myHref.indexOf('ajax-categorie')==-1 && myHref.indexOf('ajax-subcat')==-1 )
	{
		if( ajaxSubCat==undefined )
			myHref = myHref.replace(cdtRegistry.gdv + '/', cdtRegistry.gdv + '/ajax-categorie/');
		else {
			myHref = (ajaxNavSpecific) ? myHref.replace(ajaxNavSpecific + '/', ajaxNavSpecific + '/ajax-subcat/') : myHref.replace(cdtRegistry.gdv + '/', cdtRegistry.gdv + '/ajax-subcat/');
		}
	}
	
	if( myHref.indexOf('ajax-subcat')==-1 )
		catsMatchRegExp = new RegExp("^(.+" +  cdtRegistry.gdv + "\/ajax-categorie\/)([^?]+)(.*)") ;
	else {
		catsMatchRegExp = (ajaxNavSpecific) ? new RegExp("^(.+" + ajaxNavSpecific.substr(1) + "\/ajax-subcat\/)([^?]+)(.*)") : new RegExp("^(.+" + cdtRegistry.gdv + "\/ajax-subcat\/)([^?]+)(.*)") ;
	}
	
	catsMatchRegExp.exec( myHref );
	catsArray = RegExp.$2.split('/');

	if( typeof(ajaxSubCatName)!= 'undefined' && catsArray.length==1 && !ajaxNavSpecific)
		myHref = RegExp.$1 + RegExp.$2 + '/' + cdtRegistry.gdvAll + RegExp.$3;

	$.ajax( {
		type: 'GET',
		url: myHref,
		success: function( aReturnedHtml ) {
			_onAjaxPaginationControlSuccess( $me, aReturnedHtml );
		},
		error: _onAjaxError
	} );
	
	return false;

}


function _onAjaxPaginationControlSuccess( aPaginationLink, aReturnedHtml ) {
	
	var $myContainer;
	var isSubCat;
	
	$myContainer = aPaginationLink.parents('.annoncesListContainer');

	$myContainer.before( aReturnedHtml );
	$myContainer.remove();
	

	_overrideFullAnnonceLinkClickHandler();
	_ajaxHandlePaginationControls();
	_initMySelectionModificationButtons();
	_initSlideShows();

	_ajaxUpdateBreadcrumb();
	_ajaxUpdateHash();
	_ajaxStat();
	
}


function _ajaxScrollTo( aAnchorName ) {

	var $targetElement;

	if( typeof(aAnchorName)=='undefined' || aAnchorName=='' )
		return;

	$targetElement = $('A[name="'+aAnchorName+'"]');
	if( $targetElement.length==0 && aAnchorName.indexOf('-' + cdtRegistry.gdvAll)>-1 )
		$targetElement = $('A[name="'+aAnchorName.replace('-' + cdtRegistry.gdvAll, '')+'"]');

	if( $targetElement.length==0 )
		return;

	if( false && cdtRegistry.IE6 )
		window.location.hash = '#'+aAnchorName;
	else
		$.scrollTo( $targetElement, { duration: 500 } );// , offset: {top: -100, left: 0} } );

}


function _ajaxStat() {

	var urlToTrack;

	urlToTrack = window.location.hash.toString().replace('#', '' );

	urlToTrack = urlToTrack.replace('/index=', '?index=');
	urlToTrack = urlToTrack.replace('/page=', '?page=');

	//console.log('_ajaxStat()  : urlToTrack='+urlToTrack) ;
	setTimeout('pageTracker._trackPageview( "'+urlToTrack+'" );', 300 );//we delay the stat, so we are sure that the location.hash has been updated...
	//pageTracker._trackPageview( urlToTrack );

}

var breadcrumbSeparator = '<img src="' + cdtRegistry.baseUrl + 'images/byController/guideDeVoyage/arrow_list.gif" alt="" />';

function _ajaxUpdateBreadcrumb() {

		var $breadcrumb;
		var $breadcrumbCategoryLink, $breadcrumbSubCatLink, $breadcrumbCityName, $breadcrumbAnnonceName;
		var $previousBlock;

		$breadcrumb = $('#breadcrumb');

		//console.log('ajaxCategory='+ajaxCategory+', ajaxCategoryName='+ajaxCategoryName+', ajaxSubCat='+ajaxSubCat+', ajaxSubCatName='+ajaxSubCatName+', ajaxAnnonceId='+ajaxAnnonceId+', ajaxAnnonceName='+ajaxAnnonceName);
		
		if (!ajaxNavSpecific) {
			if( typeof(ajaxCategory)!='undefined' && typeof(ajaxCategoryName)!='undefined' ) {

				$breadcrumbCategoryLink = $breadcrumb.find('.categoryLink');
				if( $breadcrumbCategoryLink.length==0 ) {
					$previousBlock = $breadcrumb.find('.pageLink');
					$previousBlock.after(' '+breadcrumbSeparator+' <a class=\'categoryLink\'></a>');
					$breadcrumbCategoryLink = $breadcrumb.find('.categoryLink');
				}

				$breadcrumbCategoryLink.attr('href' , cdtRegistry.gdvUrl + '/'+ ajaxCategory );
				$breadcrumbCategoryLink.text( ajaxCategoryName );

			} else {

				$breadcrumb.find('.categoryLink').remove();

			}
		}

		if( typeof(ajaxSubCat)!='undefined' && typeof(ajaxSubCatName)!='undefined' ) {

			$breadcrumbSubCatLink = $breadcrumb.find('.subCatLink');
			if( $breadcrumbSubCatLink.length==0 ) {
				if (!ajaxNavSpecific)
					$previousBlock = $('#breadcrumb .categoryLink');
				else
					$previousBlock = $('#breadcrumb .pageLink');
				$previousBlock.after(' '+breadcrumbSeparator+' <a class=\'subCatLink\'></a>');
				$breadcrumbSubCatLink = $breadcrumb.find('.subCatLink');
			}
			
			var ajaxUrl = (ajaxNavSpecific) ? ajaxNavSpecific + '/'+ ajaxSubCat : cdtRegistry.gdvUrl + '/'+ ajaxCategory +'/' + ajaxSubCat;
			$breadcrumbSubCatLink.attr('href' , ajaxUrl );
			$breadcrumbSubCatLink.text( ajaxSubCatName );

		} else {

			$breadcrumb.find('.subCatLink').remove();

		}

		if( typeof(ajaxAnnonceId)!='undefined' && typeof(ajaxAnnonceName)!='undefined' ) {

			$breadcrumbAnnonceName = $breadcrumb.find('.annonceName');
			if( $breadcrumbAnnonceName.length==0 ) {
				$previousBlock = ( $breadcrumb.find('.subCatLink').length==0 ) ? $breadcrumb.find('.categoryLink') : $breadcrumb.find('.subCatLink') ;
				$previousBlock.after(' '+breadcrumbSeparator+' <span class=\'annonceName\'></span>');
				$breadcrumbAnnonceName = $breadcrumb.find('.annonceName');
			}

			$breadcrumbAnnonceName.text( ajaxAnnonceName );

		} else {

			$breadcrumb.find('.annonceName').remove();

		}

		// No city management in Ajax navigation
		$breadcrumb.find('.cityName').remove();

		// trailing ">" separators removal
		var breadcrumbContent = $breadcrumb.html();
		if( breadcrumbContent!=null )
		{
			var trailingSeparatorsRegExp = /(\s+<img[^>]+>\s+)+$/gi ;
			$breadcrumb.html( breadcrumbContent.toString().replace( trailingSeparatorsRegExp, '' ) );
		}
		
}


function _ajaxUpdateHash() {

	var newHash;

	newHash = '#/';

	if( typeof(ajaxCategory)!='undefined' )
		newHash += ajaxCategory;
	if( typeof(ajaxSubCat)!='undefined' )
		newHash += '/' + ajaxSubCat;
	if( typeof(ajaxAnnonceId)!='undefined' && typeof(ajaxAnnonceName)!='undefined' ) {
		newHash += '/' + ajaxAnnonceId + '-' + escape(ajaxAnnonceName);
		if( typeof(ajaxAnnonceIndex)!='undefined' )
			newHash += '/index='+ajaxAnnonceIndex;
	} else if( typeof(ajaxPageIndex)!='undefined' && ajaxPageIndex > 1 ) {
		newHash += '/page='+ajaxPageIndex;
	}

	window.location.hash = newHash;

}
