// flag pour savoir dans quel mode de recherche on est
var isEventAdvanceSearchMode = false;

// Masquage des dates
Event.observe(window, 'load', function() {
	isEventAdvanceSearchMode = ($("currentDisplayMode").value == "advanced" ? true : false);
	if (!isEventAdvanceSearchMode || 
		(isEventAdvanceSearchMode && ($("dateSelect").selectedIndex != ($("dateSelect").length - 1)))
		) {
			if($('dateBegin')){
				$('dateBegin').hide(); 
				if ($('dateBegin').hasClassName("beginInputError")) $('dateBegin').previous().hide();
				if($('dateEnd')) {
					$('dateEnd').hide(); 
					if ($('dateEnd').hasClassName("endInputError")) $('dateEnd').previous().hide();
				}
			}
		}
	
  Event.observe('eventSimpleSearch', 'submit', function(form) {
	  	if ($('eventSimpleSearch').keywords.hasClassName('defaultValue')) {
	  		$('eventSimpleSearch').keywords.value = '';
	  		$('eventSimpleSearch').keywords.removeClassName('defaultValue');
	  	}
	  });
});

function toggleSearchBar() {
	var isAdvance = isEventAdvanceSearchMode;              // Alias plus simple pour le flag
	var duration = "0.3";                                 // Durée des effets (en secondes)

	if(isAdvance) {
		Effect.toggle('searchBar','slide',{duration:duration, queue:'front'}); 
		Effect.toggle('searchBarAdvanced','slide',{duration:duration, queue:'front'}); 
		//$('searchBarAdvanced').hide(); 
		//$('searchBar').show(); 
	} else {
		Effect.toggle('searchBarAdvanced','slide',{duration:duration, queue:'front'}); 
		Effect.toggle('searchBar','slide',{duration:duration, queue:'front'});
		//$('searchBar').hide(); 
		//$('searchBarAdvanced').show(); 
	}

	// 3. On change le texte du lien "Recheche avancée..."
	$('advLinkText').toggle();
	$('splLinktext').toggle();

	// 4. On change le flag
	isEventAdvanceSearchMode = !isEventAdvanceSearchMode;
}

function periodFieldController(field) {
	var duration = "0.3";                                 // Durée des effets (en secondes)

	if (field.value=='99') {
		if($('dateEnd')) Effect.Appear($('dateEnd'),{duration:duration,queue:'front'}); 
		if($('dateEnd')) if ($('dateEnd').hasClassName("endInputError")) $('dateEnd').previous().show(); 
		Effect.Appear($('dateBegin'),{duration:duration,queue:'front'}); 
		if ($('dateBegin').hasClassName("beginInputError")) $('dateBegin').previous().show(); 
	} else {
		Effect.Fade($('dateBegin'),{duration:duration,queue:'front'}); 
		if ($('dateBegin').hasClassName("beginInputError")) $('dateBegin').previous().hide(); 
		Effect.Fade($('dateEnd'),{duration:duration,queue:'front'}) ;
		if($('dateEnd')) if ($('dateEnd').hasClassName("endInputError")) $('dateEnd').previous().hide(); 
	}
};
/*
 * Gestion d'une valeur par défaut dans un champ texte ou d'une textarea qui disparait quand on fait le focus dessus.
 * Usage : l'attribut class du champ doit être
 * 	1. "defaultValue" par défaut
 * 	2. "userValue" si la valeur est une saisie de l'utilisateur (en cas d'erreur ou si le formulaire et réaffiché)
 */
var DefaultValueField = Class.create();
DefaultValueField.prototype = {
	
	initialize: function(fieldId) {
		this.field = $(fieldId);
		this.field.observe('focus', this._toggleValue.bindAsEventListener(this,true));
		this.field.observe('blur', this._toggleValue.bindAsEventListener(this,false));
		this.form = this.field.up("form");
		if (this.form) this.form.observe('submit', this._removeDefaultValue.bind(this));
	},
	
	_removeDefaultValue: function() {
		if (this.field.hasClassName('defaultValue')) {
			this.defaultValue = this.field.value;
			this.field.value = '';
		}
	},
	
	_toggleValue: function(event,isFocus) {
		this.field[isFocus ? "addClassName" : "removeClassName"]("focus");
		if (!this.field.hasClassName("userValue")) {
			if (this.field.hasClassName("defaultValue")) {
				this.defaultValue = this.field.value;
				this.field.value = "";
				this.field.removeClassName("defaultValue");
			} else if (this.field.value.length==0) {
				this.field.value = this.defaultValue;
				this.field.addClassName("defaultValue");
			}
		}
	}

};
var defaultQuestionAreaValue, featureBlocksManager;

Event.observe(window, 'load', function() {

	// Initialisation de la gestion de valeur par défaut sur le champ questionArea
	if ("DefaultValueField" in window) defaultQuestionAreaValue = new DefaultValueField('title');
	
	// Initialisation de la gestion de l'ouverture/fermeture de boites
	if ("FeaturesBlocksManager" in window) featureBlocksManager = new FeaturesBlocksManager();

});;
var AdvancedSearch = Class.create();
AdvancedSearch.prototype = {
	
	initialize: function(params) {
		this.simpleMode = params.simpleMode;
		this.advancedMode = params.advancedMode;
		this.simpleModeLink = params.simpleModeLink;
		this.advancedModeLink = params.advancedModeLink;
		this.isAdvancedMode = "isAdvancedMode" in params ? params.isAdvancedMode : false;
		this.duration = "duration" in params ? params.duration : 0.3;
	},
	
	isToggling: false,
	
	toggle: function() {
		if (this.isToggling) return;
		this.isToggling = true;
		var elToHide = this.isAdvancedMode ? this.advancedMode : this.simpleMode;
		var elToShow = this.isAdvancedMode ? this.simpleMode : this.advancedMode;
		new Effect.SlideUp(elToHide, {duration: this.duration, afterFinish: function(){
			new Effect.SlideDown(elToShow, {duration: this.duration, afterFinish: function(){
				this.simpleModeLink.toggle();
				this.advancedModeLink.toggle();
				this.isAdvancedMode = !this.isAdvancedMode;
				this.isToggling = false;
			}.bind(this)});
		}.bind(this)});
	}
	
};;
function highlightWord(node,word, niv) {	   	
	// On itère sur les fils
	var hi_cn;
	if (node.hasChildNodes && niv < 16) {		
		if (node.nodeType == 3) {traiteNoeud(node, word);}		
		else
			{
				niv++;
				for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {			
					highlightWord(node.childNodes[hi_cn],word,niv);
				}
		}
	}
}

function replaceAll (chaine, rech, remp)
{ var st = chaine;
  var size = rech.length;
  if (size > 0)
  	{
	  var idx = st.indexOf(rech);
	  	while (idx >= 0)
		  {   st = st.substring(0,idx) + remp + st.substr(idx+size);
	     		idx = st.indexOf(rech);
	  	  }
   	}
  return st;
}

function traiteNoeud(node, word){
// on traite le noeud lui-meme
		
	tempNodeVal = noaccent(node.nodeValue.toLowerCase());
	tempWordVal = word;
	//word.toLowerCase();
	if (tempNodeVal.indexOf(tempWordVal) != -1 ) {		
		pn = node.parentNode;
		if (pn.className != "searchwords") {				
			nv = node.nodeValue;
			ni = tempNodeVal.indexOf(tempWordVal);
			
			before = document.createTextNode(nv.substr(0,ni));
			docWordVal = nv.substr(ni,word.length);
			after = document.createTextNode(nv.substr(ni+word.length));
			hiwordtext = document.createTextNode(docWordVal);				
			hiword = document.createElement("span");				
			hiword.className = "searchwords";				
			hiword.appendChild(hiwordtext);
			pn.insertBefore(before,node);
			pn.insertBefore(hiword,node);
			pn.insertBefore(after,node);
			pn.removeChild(node);
		}
	}	
}

function noaccent(chaine)
{
var temp="";
temp = chaine.replace(/[àâä]/gi,"a");
temp = temp.replace(/[éèêë]/gi,"e");
temp = temp.replace(/[îï]/gi,"i");
temp = temp.replace(/[ôö]/gi,"o");
temp = temp.replace(/[ùûü]/gi,"u");
return temp.toLowerCase();
}


function highlightSearchTerms() {
	if (!document.createElement) return;
	var w=0;
	var i=0;
	var j=0;		
	var ref = location.href;	
	var queryip;
	var words;
	var lesResultats;
	var niv=0;
	if (ref.indexOf('?') == -1) return;
	
	var query = ref.substr(ref.indexOf('?')+1);	
	var querya = query.split('&');
	
	for (i=0;i<querya.length;i++) {
		 queryip = querya[i].split('=');		
		
	       if (queryip.length >= 1) {
	       	
        	if (queryip[0] == 'keywords' || queryip[0] == 'position' || queryip[0] == 'company' || queryip[0] == 'lastname' || queryip[0] == 'location'  || queryip[0] == 'country' || queryip[0] == 'education'  ) {                										
        			
        			if (queryip[1].indexOf("+") != -1 ) {words = unescape(queryip[1]).split("+");}
        			else if (queryip[1].indexOf(" ") != -1 ) {words = unescape(queryip[1]).split(" ");}	
        			else if (queryip[1].indexOf("%20") != -1 ) {queryip[1] = replaceAll(queryip[1],"%20","+"); words = unescape(queryip[1]).split("+");}	
        			else {words = unescape(queryip[1]).split("+");}
					
	                for (w=0;w<words.length;w++) {	                	
	                	words[w] = (words[w].indexOf("*") != -1 ? words[w].substr(0, words[w].indexOf("*")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(",") != -1 ? words[w].substr(0, words[w].indexOf(",")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(".") != -1 ? words[w].substr(0, words[w].indexOf(".")) : words[w]);	                	
	                	words[w] = noaccent(words[w]);
	                	if (words[w].length > 2 && words[w] != 'des' && words[w] != 'les') { 	                																																		
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('result'+j)) != null)) ;j++){																								
	                					highlightWord(lesResultats,words[w],niv);	                					
							}		
						}						
					}
              }
           }
	  }
	
}


function highlightSearchTermsSearchBar() {
	if (!document.createElement) return;
	var w=0;
	var i=0;
	var j=0;		
	var ref = location.href;	
	var queryip;
	var words;
	var lesResultats;
	var niv=0;
	if (ref.indexOf('?') == -1) return;
	var query = ref.substr(ref.indexOf('?')+1);	
	var querya = query.split('&');
	for (i=0;i<querya.length;i++) {
		 queryip = querya[i].split('=');		
		
	       if (queryip.length >= 1) {
	       	
        	if (queryip[0] == 'queryString' || queryip[0] == 'town' || queryip[0] == 'fullName' || queryip[0] == 'keywords' || queryip[0] == 'position' || queryip[0] == 'company' || queryip[0] == 'lastname' || queryip[0] == 'location'  || queryip[0] == 'country' || queryip[0] == 'education') {                										
        			
        			if (queryip[1].indexOf("+") != -1 ) {words = unescape(queryip[1]).split("+");}
        			else if (queryip[1].indexOf(" ") != -1 ) {words = unescape(queryip[1]).split(" ");}	
        			else if (queryip[1].indexOf("%20") != -1 ) {queryip[1] = replaceAll(queryip[1],"%20","+"); words = unescape(queryip[1]).split("+");}	
        			else {words = unescape(queryip[1]).split("+");}
					
	                for (w=0;w<words.length;w++) {
	                	words[w] = (words[w].indexOf("*") != -1 ? words[w].substr(0, words[w].indexOf("*")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(",") != -1 ? words[w].substr(0, words[w].indexOf(",")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(".") != -1 ? words[w].substr(0, words[w].indexOf(".")) : words[w]);	                	
	                	words[w] = noaccent(words[w]);
	                	if (words[w].length > 2 && words[w] != 'des' && words[w] != 'les') { 
	                		for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultMember'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}               																																		
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultBlog'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultBlogTitle'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultJobOffer'+j)) != null)) ;j++){																								
	                	    	highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultHub'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultEvent'+j)) != null)) ;j++){
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultExpert'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('resultTraining'+j)) != null)) ;j++){																								
	                			highlightWord(lesResultats,words[w],niv);	                					
							}
						}						
					}
              }
           }
	  }
	
}

function highlightSearchTerms1(keywords) {
	if (!document.createElement) return;
	var w=0;
	var j=0;		
	var words;
	var lesResultats;
	var niv=0;
        			if (keywords.indexOf("+") != -1 ) {words = unescape(keywords).split("+");}
        			else if (keywords.indexOf(" ") != -1 ) {words = unescape(keywords).split(" ");}	
        			else {words = unescape(keywords).split("+");}
	                for (w=0;w<words.length;w++) {	                	
	                	words[w] = (words[w].indexOf("*") != -1 ? words[w].substr(0, words[w].indexOf("*")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(",") != -1 ? words[w].substr(0, words[w].indexOf(",")) : words[w]);	                	
	                	words[w] = (words[w].indexOf(".") != -1 ? words[w].substr(0, words[w].indexOf(".")) : words[w]);	                	
	                	words[w] = noaccent(words[w]);
						
	                	if (words[w].length > 2 && words[w] != 'des' && words[w] != 'les') { 	                																																		
							for (j=0; ((j < 20) && ((lesResultats = document.getElementById('result'+j)) != null)) ;j++){																								
	                					highlightWord(lesResultats,words[w],niv);				
							}		
						}						
					}
}

;

	var MiniProfil = Class.create();
	MiniProfil.prototype = {
		
		params : {
			distance : 10,								// pixels
			delay : 0.0,								// seconds
			src : '/public/miniprofile/index.jsp'	// url
		},

		setAttributes : function(elt){
			var state = {
				exists		: false,
				position	: 'undefined',
				dimensions	: 'undefined',
				flownOver	: false,
				visible		: false,
				filledIn	: false
			};
			elt.state = state;
		},

		initialize : function(handler, memberId) {
		
			if (arguments[1]){
				this.options = arguments[1];
				if (this.options.src) 		this.params.src 		= this.options.src;
				if (this.options.distance) 	this.params.distance 	= this.options.distance;
				if (this.options.delay) 	this.params.delay 		= this.options.delay;
			}
		
			this.window				= (window.event) ? document.body : window; // IE Hack
			this.handler			= $(handler);
			this.memberId			= memberId;
			
			this.setAttributes(this.handler);
			
			this.getCoordinates(this.handler);
			this.getDimensions(this.handler);
			
			Event.observe(window, 'resize', function(){
				this.getCoordinates(this.handler);
				this.getDimensions(this.handler);
			}.bind(this));
			
			this.createcanvas();
			
			this.eltListenerSwitcher(this.window, 'on', this.updateflyOvers.bind(this));
			this.eltListenerSwitcher(this.handler, 'on', this.fillInCanvas.bind(this));
		
		},
		
		createcanvas : function(){
		
			var canvas = Builder.node('div', { className : 'miniprofil miniprofilshadow ' });
			document.body.appendChild(canvas);
			
			this.canvas = canvas;
			this.setAttributes(this.canvas);
			this._hide(this.canvas);
			this.canvas.exists = true;
		
		},
		
		canvasCss : function(){
			
			var windowDim	 		= this.getWindowDim();
			var windowScrollDepth 	= document.documentElement.scrollTop || document.body.scrollTop;
			var handlerPos 			= this.handler.state.position;
			var handlerWidth 		= this.handler.state.dimensions.width;
			var canvasWidth  		= this.canvas.state.dimensions.width;
			var canvasHeight  		= this.canvas.state.dimensions.height;

			var topOverflow		= handlerPos[1] + canvasHeight - windowDim[1] - windowScrollDepth;
			var rightOverflow	= handlerPos[0] + handlerWidth + canvasWidth - windowDim[0];

			var style = {
				position : 'absolute',
				top : ( (topOverflow > 0) ? handlerPos[1] - topOverflow : handlerPos[1] ) + "px",
				left: ( (rightOverflow > 0) ? handlerPos[0] - canvasWidth - this.params.distance : handlerPos[0] + handlerWidth + this.params.distance ) + "px"
			};
			
			return style;
		},
		
		fillInCanvas : function(event){
			
			var updater = function(){
				
				if(this.handler.state.flownOver){
				
					new Ajax.Updater({ success: this.canvas }, this.params.src, {
						parameters: 'paramControl=valide&memberId='+this.memberId,
						onComplete : function(){
						
							this.canvas.state.filledIn = true;
							this.getDimensions(this.canvas);
							
							this.canvas.setStyle(this.canvasCss());
							this._show(this.canvas);
							
							Event.observe(window, 'resize', function(){
								this.getCoordinates(this.handler);
								this.getDimensions(this.handler);
								this.canvas.setStyle( this.canvasCss() );
							}.bind(this));
							
							this.eltListenerSwitcher(this.handler, 'off', this.fillInCanvas.bind(this));
							
							if(this.canvas.down('.close')) {
								this.closer = this.canvas.down('.close');
								this.closer.observe('click', function(){this._hide(this.canvas)}.bind(this));
							}
							
						}.bind(this)
					});
				
				}
			}.bind(this);
			
			if(!this.canvas.state.filledIn) updater.delay(this.params.delay);
			
		}, 

		updateflyOvers : function(event){
			var element = $( Event.element(event) );
			this.canvas.state.flownOver 	= (this.canvas		== element || element.descendantOf(this.canvas) );
			this.handler.state.flownOver 	= (this.handler		== element || element.descendantOf(this.handler) );
			this.initbehavior();
		},
		
		initbehavior : function(){
			if(this.canvas.state.filledIn) {
			
				if(this.canvas.state.visible){
					if( !this.handler.state.flownOver	&&	!this.canvas.state.flownOver	){ this._timedCanvasHide(); }
				}
				else if(!this.canvas.state.visible){
					if( this.handler.state.flownOver	&&	this.canvas.state.flownOver		){ this._timedCanvasShow(); }
					if( this.handler.state.flownOver	&&	!this.canvas.state.flownOver	){ this._timedCanvasShow(); }
					if( !this.handler.state.flownOver	&&	!this.canvas.state.flownOver	){ this._timedCanvasHide(); }
				}
				
			}
		},
		
		eltListenerSwitcher : function(element, choice, callback){
			if('off' == choice) {
				Event.stopObserving(element,'mouseover', callback);
			} else {
				Event.observe(element, 'mouseover', callback);
			}
		},

		getCoordinates : function(elt){
			elt.state.position 		= elt.cumulativeOffset();
		},

		getDimensions : function(elt){
			elt.state.dimensions	= elt.getDimensions();
		},
		
		_hide : function(elt){elt.addClassName('hidden');elt.state.visible = false; },
		_show : function(elt){
			elt.hide();
			elt.removeClassName('hidden');
			new Effect.Appear(elt, {duration: 0.1});
			elt.state.visible = true;
			this.canvas.setStyle(this.canvasCss());
		},
		
		_timedCanvasHide : function(){
			var hide = function(){ if( !this.handler.state.flownOver	&&	!this.canvas.state.flownOver ) this._hide(this.canvas); }.bind(this);
			hide.delay(this.params.delay);
		},
		_timedCanvasShow : function(){
			var show = function(){ if( this.handler.state.flownOver || this.canvas.state.flownOver ) this._show(this.canvas); }.bind(this);
			show.delay(this.params.delay);
		},
		
		getWindowDim: function() { // RÃ©cupÃ¨re les dimensions de la fenÃªtre du navigateur
			var width 	= 0;
			var height 	= 0;
			if ( typeof(window.innerWidth) == 'number' ) {
				//Non-IE
				width 	= window.innerWidth;
				height 	= window.innerHeight;
			} else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
				//IE 6+ in 'standards compliant mode'
				width 	= document.documentElement.clientWidth;
				height 	= document.documentElement.clientHeight;
			} else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
				//IE 4 compatible
				width 	= document.body.clientWidth;
				height 	= document.body.clientHeight;
			};
			return [width, height];
		}
	 
	};
