/*
 * Resource : /javascript/functions.js
 */

function boxShowTab(tabToDisplay)
{
	if (tabToDisplay == 'reco')
	{
		$('blocmembersOnglet').removeClassName("current");
		$('blocmembersOnglet2').addClassName("current");
		$('box_content_last').hide();
		$('box_content_recommand').show();
	}
	else
	{
		$('blocmembersOnglet').addClassName("current");
		$('blocmembersOnglet2').removeClassName("current");
		$('box_content_recommand').hide();
		$('box_content_last').show();
	}
}

var regexMAIL = /^[0-9a-z\._]+@[0-9a-z]+\..+$/i;
var regexpURL = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?\.([a-z]{2,3})(\/|\/([\w#!:.?+=&%@!\-\/]))?/;
//var regexpURL2 = /^(http:\/\/){0,1}[a-z0-9]+((\\.|-|_)[a-z0-9]+)*(\\.([a-z]){2,4}).*$/;
function isUrlValide(sUrl)
{
	return regexpURL.test(sUrl);
}

function isMailValide(sUrl)
{
	return regexMAIL.test(sUrl);
}

function checkShareIt()
{
	var ret = true;
	if (document.forms['box_form_recommand'].title.value == "" ||
		document.forms['box_form_recommand'].title.value.length < 8) {
		$('msg_error_title').show();
		ret = false;
	} else $('msg_error_title').hide();
	
	if (document.forms['box_form_recommand'].url.value == "" ||
		document.forms['box_form_recommand'].url.value.length < 8) {
		$('msg_error_url').show();
		ret = false;
	} else {
		if ( !isUrlValide( document.forms['box_form_recommand'].url.value ) ) {
			$('msg_error_url').show();
			ret = false;
		}
		else $('msg_error_url').hide();
	}
	
	return ret;
}

function inverse() {
	var i;
	var chkboxs = document.getElementsByTagName('INPUT');
	for (i = 0; i < chkboxs.length; ++i)
		if (chkboxs[i].type == 'checkbox')
			chkboxs[i].checked = !chkboxs[i].checked;
	return false;
}

function sel() {
	var i;
	var chkbox0 = document.getElementsByName('0');
	var chkbox1 = document.getElementsByName('1');
	for (i = 0; i < chkbox0.length; ++i) 
		chkbox0[i].checked = !chkbox0[i].checked;
	for (i = 0; i < chkbox1.length; ++i) 
		chkbox1[i].checked = !chkbox1[i].checked;
	return false;
}

//Utilis? dans /hub/demandehubpublic/
function setAnswerHubBody(form, message) {
	form.body.value = message;
	return true;
}

function setBody(form, message) {
	var givePhones = form.givePhones;
	if ("refusedMessage" == message) {
		var message = form.message.value;
		var phone = (null != form.phone) ? form.phone.value : "";
		var mobile = (null != form.mobile) ? form.mobile.value : "";
		
		if (null != form.givePhones) {
			givePhones.checked = false;
		}
		
		form.acceptMessage.value = ("null" != message) ? message : "";
		if (null != form.hiddenphone) {
			form.hiddenphone.value =  phone ;
			form.hiddenmobile.value = mobile;
		}
		form.message.value = form.refusedMessage.value;
		
		if (null != form.phone) {
			form.phone.value = "";
			form.mobile.value = "";
			form.phone.disabled = true;
			form.mobile.disabled = true;
		}
		if (null != form.requestDirectContact) {
			form.requestDirectContact.checked = false;
			form.requestDirectContact.disabled = true;
		}		
	}
	else {
		var hiddenmessage = form.acceptMessage.value;
		var hiddenphone = (null != form.hiddenphone) ? form.hiddenphone.value : "";
		var hiddenmobile = (null != form.hiddenmobile) ? form.hiddenmobile.value : "";
		if (null != form.givePhones) {
			givePhones.checked = true;
		}
		form.message.value = (null != hiddenmessage) ? hiddenmessage : "";
		if (null != form.phone) {
			form.phone.value = hiddenphone;
			form.mobile.value =hiddenmobile;
			form.phone.disabled = false;
			form.mobile.disabled = false;
		}
		if (null != form.requestDirectContact) 
			form.requestDirectContact.disabled = false;
	}
	return;
}

function hidePhones(form) {
	if (!form.givePhones.checked) {
		form.hiddenphone.value = form.phone.value;
		form.hiddenmobile.value = form.mobile.value;
		form.phone.value = "";
		form.mobile.value = "";
		form.phone.disabled = true;
		form.mobile.disabled = true;
	} else {
		form.phone.value = form.hiddenphone.value;
		form.mobile.value = form.hiddenmobile.value;
		form.phone.disabled = false;
		form.mobile.disabled = false;
	}
	return true;
}

// Function r?cup?rant une clef dans le tableau lang pour obtenir la valeur
//, l'affichage de la valeur se fait par une demande de confirmation
// @param : String Clef du tableau global lang
// @param : Tableau de String pour remplacer les @varX
function confirmActionArg(key, translate) {
	return confirm(replaceAllVar(translate, lang[key]));
} // confirmActionArg

// Function r?cup?rant une clef dans le tableau lang pour obtenir la valeur
//, l'affichage de la valeur se fait par une demande de confirmation
function confirmAction(key) {
	return confirm(lang[key]);
} // confirmAction

// Function r?cup?rant une clef dans le tableau lang pour obtenir la valeur
//, l'affichage de la valeur se fait par une alert javascript
function errorAction(key) {
	return alert(lang[key]);
} // errorAction

function preview(form, file) {
	window.open(file);
	return false;
}

var is; 
var isIE3Mac = false; 
// this section is designed specifically for IE3 for the Mac 

if ((navigator.appVersion.indexOf("Mac")!=-1) && (navigator.userAgent.indexOf("MSIE")!=-1) && (parseInt(navigator.appVersion)==3)) 
       isIE3Mac = true; 
else   is = new Is();

function Is () 
{   // convert all characters to lowercase to simplify testing 
    var agt=navigator.userAgent.toLowerCase(); 

    // *** BROWSER VERSION *** 
    // Note: On IE5, these return 4, so use is.ie5up to detect IE5. 
    this.major = parseInt(navigator.appVersion); 
    this.minor = parseFloat(navigator.appVersion); 

    this.nav  = ((agt.indexOf('mozilla')!=-1) && (agt.indexOf('spoofer')==-1) 
                && (agt.indexOf('compatible') == -1) && (agt.indexOf('opera')==-1) 
                && (agt.indexOf('webtv')==-1)); 

    this.ie   = (agt.indexOf("msie") != -1); 
    this.ie3  = (this.ie && (this.major < 4)); 
    this.ie4  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")==-1) ); 
    this.ie4up  = (this.ie  && (this.major >= 4)); 
    this.ie5  = (this.ie && (this.major == 4) && (agt.indexOf("msie 5.0")!=-1) ); 
    this.ie5up  = (this.ie  && !this.ie3 && !this.ie4); 
} 

function accesImport(){	
if (!isIE3Mac && is.nav) 
	{alert(lang["functions.error.import"]); return false;}
  	else if (!isIE3Mac && is.ie4up)   
  	{return true; }
  	else  {alert(lang["functions.error.import"]); return false;}
}

function inviteContacts() {

var chkBoxes = document.getElementsByTagName('INPUT');

var hiddenFirstName = new Array(0);
var hiddenLastName = new Array(0);
var hiddenEmail = new Array(0);

leformResultat = document.getElementsByName('inviteForm');
var formResultat=leformResultat[0];

var idContact = "";
var nbSelected = 0;

var allMembers = true;

for(i = 0; i < chkBoxes.length; i++)
{
	if (chkBoxes[i].type == 'checkbox' && chkBoxes[i].checked)
	{
//pas de controle de coh?rence
		idContact = chkBoxes[i].getAttribute("Id");
		idContact = idContact.substring(3);
		if ( chkBoxes[i].getAttribute("Name") != "1" ) allMembers = false;
							
		hiddenFirstName[nbSelected] = document.getElementsByName('fn'+idContact)[0].value;
		hiddenLastName[nbSelected] = document.getElementsByName('ln'+idContact)[0].value;		
		hiddenEmail[nbSelected] = document.getElementsByName('em'+idContact)[0].value;	
		nbSelected++;									
	}  	
}

var newHiddenFirstName = new Array(0);
var newHiddenLastName = new Array(0);
var newHiddenEmail = new Array(0);

if (0 == nbSelected) 
	alert(lang["functions.error.selectContact"]);
else {
	for( i = 0; i < nbSelected; i++) {

		newHiddenFirstName[i] = document.createElement('INPUT');
		with (newHiddenFirstName[i] ){
			setAttribute("type", "hidden");
			setAttribute("name", "fn"+i);
			setAttribute("value", hiddenFirstName[i]);
		}

		newHiddenLastName[i] = document.createElement('INPUT');
		with (newHiddenLastName[i] ){
			setAttribute("type", "hidden");
			setAttribute("name", "ln"+i);
			setAttribute("value", hiddenLastName[i]);
		}	
		
		newHiddenEmail[i] = document.createElement('INPUT');
		with (newHiddenEmail[i]){
			setAttribute("type", "hidden");
			setAttribute("name", "em"+i);
			setAttribute("value", hiddenEmail[i]);
		}	

		formResultat.appendChild(newHiddenFirstName[i]);
		formResultat.appendChild(newHiddenLastName[i]);
		formResultat.appendChild(newHiddenEmail[i]);

	}

	if ( allMembers ) {
		with (newHiddenAllMembers = document.createElement('INPUT')){
			setAttribute("type", "hidden"); 
			setAttribute("name", "allMembers");
			setAttribute("value", "true" );
		}
		formResultat.appendChild(newHiddenAllMembers);
	}

}

return nbSelected >0;
}

function deleteAllContacts() {
	leformResultat = document.getElementsByName('deleteForm');
	var formResultat=leformResultat[0];	
	var newHiddenId;
	newHiddenId = document.createElement('INPUT');
	with (newHiddenId){
		setAttribute("type", "hidden");
		setAttribute("name", "vider");
		setAttribute("value", "vider");
	}
	formResultat.appendChild(newHiddenId);
	if (!confirmAction("functions.confirm.delete")) 
		return false;
	else return true;
}

function deleteContacts() {
var chkBoxes = document.getElementsByTagName('INPUT');

leformResultat = document.getElementsByName('deleteForm');
var formResultat=leformResultat[0];

var idContact = "";
var nbSelected = 0;
var newHiddenId;
var j = 0;
for(i = 0; i < chkBoxes.length; i++)
{
	if (chkBoxes[i].type == 'checkbox' && chkBoxes[i].checked)
	{	
		idContact = chkBoxes[i].getAttribute("Id");
		idContact = idContact.substring(3);
		newHiddenId = document.createElement('INPUT');
		with (newHiddenId){
			setAttribute("type", "hidden");
			setAttribute("name", "contactId"+ j++);
			setAttribute("value", idContact);
		}	
		formResultat.appendChild(newHiddenId);			
		nbSelected++;									
	}  	
}

if (0 == nbSelected) 
	alert(lang["functions.error.selectContact"]);
else if (!confirmAction("functions.confirm.delete")) 
	return false;
return nbSelected > 0;
}

function decision(message) {
	return confirm(message);
}

/* 
 * fonction utilisee lors de l'inscription sur invitation pour avertir
 * l'utilisateur lorsqu'il a change l'adresse email d'inscription au lieu
 * de garder celle qui a servie pour l'invitation
 */
function checkEmail(invitationEmail) {
	var email = document.getElementsByName("email")[0].value;
	var translate = new Array(email);
	return (invitationEmail == email) ? true :  confirm(replaceAllVar(translate, lang["functions.confirm.email"]));
}

function deleteAction(nbCoche) {
	var i;
	var nbSelected = 0;
	for (i = 0; i < nbCoche; ++i) {
		if (document.getElementById("coche" + i).checked) 
			++nbSelected;	
	}
	if (nbSelected == 0)
		alert(lang["functions.error.checkbox"]);
	return (0 < nbSelected) ? decision(lang["functions.confirm.cleanboard"]) : false;
}

function openWebsite(website) {
	window.open(website);
	return false;
}

function doFilter(strToMatch, elementName) {
	
	var element = document.getElementById(elementName);
	var min_len = 2;
	if ( element.rows.length > 500 ) {
		min_len = 3;
	}
	
	if (strToMatch.length == 0) {
		if (navigator.appName.match("crosoft")) {
			for (var i = 0; i < element.rows.length; ++i) {			
				element.rows[i].style.display = "block";				
			} 
		} else {
			for (var i = 0; i < element.rows.length; ++i) {			
				element.rows[i].style.display = "table-row";				
			} 	
		}
		return true;
	} 
	else if (strToMatch.length < min_len)  {return true;}
	
	
	var pattern = new RegExp("^" + strToMatch, "gi");
	var foundOnce = false;
	var found = false;
		
	if (navigator.appName.match("crosoft")) {
	
		for (var i = 0; i < element.rows.length; ++i) {
			found = element.rows[i].cells[1].firstChild.innerHTML.match(pattern);
			foundOnce = ( found ) ? true : foundOnce ;
			element.rows[i].style.display = (found || document.getElementById("chk" + i).checked) ? "block" : "none";
			if ( i % 500 == 0 ) {
				setTimeout("void(0);", 100);				
			}
			if ( foundOnce && !found ) break;
		}
	} else {
		for (var i = 0; i < element.rows.length; ++i) {
			found = element.rows[i].firstChild.nextSibling.firstChild.innerHTML.match(pattern);
			foundOnce = ( found ) ? true : foundOnce ;		
			element.rows[i].style.display = ( found || document.getElementById("chk" + i).checked) ? "table-row" : "none";			
			if ( i % 500 == 0 ) {
				setTimeout("void(0);", 100);				
			}
			if ( foundOnce && !found ) break;
		}
	}
	return true;
}

//utilisee dans annonceschoixmembres
function verifCheckbox(i) {
	var j = 0;
	for (; j < i; ++j) {
		if (document.getElementById("chk" + j).checked) 
			return true;
	}	
	alert(lang["functions.error.checkbox"]);
	return false;
}

//utilis?e dans /profil/desinscription
function unsubscribe() {
	alert(lang["functions.confirm.deleteAccount"]);
	return confirm(lang["functions.confirm.deleteAccount2"]);
}

function unAttach( attachmentId, doRedirect ) {

		var element = document.getElementById( 'record' + attachmentId );
		if (element != null ) deleteChildren( element, 0 );

		var attachmentForm = document.getElementById( 'attachmentForm' );

		if ( attachmentForm != null  ) {

			if ( !doRedirect ) {
				element = document.getElementById( 'doRedirect' );
				if (element != null ) deleteChildren( element, 0 );
			}

			attachmentForm.submit();
		}
		
		/* Masquage bloc pour emploi V2*/
		if($('fileJoined')) {
			if(!$('fileJoined').down('table.recordset').down('div')){
				$('fileJoined').down('div.section').hide();
			}
		}
}

function deleteChildren(node,niv){ 
	if (niv > 10) return true;
	if (node.hasChildNodes()){ 
		while(node.hasChildNodes()){ 
			deleteChildren(node.lastChild,niv+1); 
		} 
	}
	else {
		node.parentNode.removeChild(node);
		}
	} 

function highlightURL(niv) {
	
	var niv=0;
	var cont = true;

	var _main = $('viadeocontent').down('div.main') || false;
	if (_main) highlightLink(_main, niv);
	
	
}

function highlightLink(element, niv) {
  if (niv > 30) return true;
  if (element.nodeType == 3) 
  {
  	  traiteNode(element,niv+1,0);
  } else {  			    	    	    
	  for (var i = 0; i < element.childNodes.length; i++)
	    if (element.childNodes[i].nodeType == 3 ) {    			 
			traiteNode(element.childNodes[i],niv+1,0);
	    }
	    else
	      highlightLink(element.childNodes[i], niv+1); 
	}
}

function highlightLinkWithOwnerId(element, niv, ownerid) {
  if (niv > 20) return true;
  if (element.nodeType == 3) 
  {
  	  traiteNode(element,niv+1,ownerid);
  } else {  			    	    	    
	  for (var i = 0; i < element.childNodes.length; i++)
	    if (element.childNodes[i].nodeType == 3 ) {    			 
			traiteNode(element.childNodes[i],niv+1,ownerid);
	    }
	    else
	      highlightLinkWithOwnerId(element.childNodes[i], niv+1, ownerid); 
	}
}

function traiteNode(theNode, niv, ownerid) {
	
	 	var maRegLink = /(ftp:\/\/|http:\/\/|https:\/\/|www)(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/gi 
		var theText = theNode.nodeValue;
		var ad_parenthese = false;
		
		if (theText != '') {    		
			var theResultatLink = maRegLink.exec( theText) ;
			if (theResultatLink != null) {	    				    	 										
				
				var theTextBefore = document.createTextNode(RegExp.leftContext);								
				
				var theHref = (RegExp.lastMatch.charAt(RegExp.lastMatch.length -1) == "." ? RegExp.lastMatch.substring(0, RegExp.lastMatch.length -1) : RegExp.lastMatch);				
				
				var theCar =  theHref.charAt(theHref.length -1);
				var theString = '';
				var isGood = (theCar >= "a" && theCar <="z" ) || (theCar >= "A" && theCar <="Z" ) || (theCar >= "0" && theCar <="9" );
								
				while ( !isGood && theHref.length > 0 ) {
					theString = theCar + theString; 									
					theHref = theHref.substring(0, theHref.length -1);	
					theCar =  theHref.charAt(theHref.length -1);
					isGood = (theCar >= "a" && theCar <="z" ) || (theCar >= "A" && theCar <="Z" ) || (theCar >= "0" && theCar <="9" ); 								 					
				}											
				
				if ( theHref.toLowerCase().indexOf('openbc') == -1  ) {
					var theLink = document.createElement("a");
					
					var memberId=0;
					if (ownerid != 0 && ownerid.length > 0) {
						memberId = ownerid;
					} else {
						// recuperation memberId dans l'URL
						var theUrl = location.href;
						
						// extract memberId from new profile's URL
						if (theUrl != undefined && theUrl.length > 0) {
							// WARNING DO NOT USE AN OTHER REGEXP !!!!!!!!
							//var regExpMemberIdFromProfileUrl = "profile/([0-9]{3}[0-9a-z]+)";
							//memberId = theUrl.match(regExpMemberIdFromProfileUrl)[1];
							var startId = theUrl.indexOf("profile/");
							if (startId>-1) {
								memberId = theUrl.substring(startId+8, theUrl.length);
								if (memberId.indexOf("/") > 0) 
									memberId = memberId.substring(0, memberId.indexOf("/"));
							}
						}
						else {
							// legacy compliance code : useless ?
							if (theUrl.indexOf('?') != -1){
								var theQuery = theUrl.substr(theUrl.indexOf('?')+1);	
								var theQueryTab = theQuery.split('&');						
								
								if (theQueryTab.length >= 1) { // liste des couples param=valeur							
									var i=0;							
									for (i=0;i<theQueryTab.length;i++) {
										theQueryParamTab = theQueryTab[i].split('=');	// s?paration [0]param [1]valeur
										    
										if (theQueryParamTab.length >= 1) {
											if (theQueryParamTab[0] == "memberId" && theQueryParamTab[1]!="" ){
												memberId = theQueryParamTab[1];
												
											}
										}
									}
								}
							}
						}	
						
						// si pas de member id recuperartion du memberid dans la page s'il existe.
						if (memberId == 0 ){ 
							var HiddenMemberIdDansLaPage = document.getElementById('memberId');					
							if (null != HiddenMemberIdDansLaPage){
								
								// test  des valeurs
								if(HiddenMemberIdDansLaPage.value !=0 && HiddenMemberIdDansLaPage.value != '' && HiddenMemberIdDansLaPage.value!=null ){
									memberId = HiddenMemberIdDansLaPage.value;
								}
							}						
						}
					}
					// modification de la cible du lien pour passer par click.jsp																											
					var theHrefNew = theHref.indexOf('http') == -1  ? 'http://'+ theHref : theHref;					
						
					if (memberId != 0 ){
						var theHreftoClick = "http://" + window.location.hostname + "/click.jsp?redirect=" + encodeUrl(theHrefNew) +"&memberId="+memberId;
					}else{
						var theHreftoClick = "http://" + window.location.hostname + "/click.jsp?redirect=" + encodeUrl(theHrefNew);
					}
					
					
					theLink.target = '_blank';
					theLink.setAttribute("href",theHreftoClick);
					theLink.setAttribute("class","main");
					theLink.innerHTML = theHref;   
					
					// ajout de parenthese					
					var theTextAfter = document.createTextNode(theString + RegExp.rightContext);

					
					var theNewChild = document.createElement('span');						
					theNewChild.appendChild(theTextBefore);	
					theNewChild.appendChild(theLink);
					theNewChild.appendChild(theTextAfter);	
					
					
					var theParent = theNode.parentNode;
					theParent.replaceChild(theNewChild, theNode);										
					
					traiteNode(theNewChild.childNodes[1], niv+1, ownerid);
					traiteNode(theNewChild.childNodes[2], niv+1, ownerid);
					
				}
				
			}	   	   	   
													
		}	
}


// Check if a javascript variable has been defined.


function isdefined( variable)
{
    return (typeof(window[variable]) == "undefined")?  false: true;
}

/*Gestion langue utilisateur*/
function getLanguage(defaultLanguage) {
	var langIso;
	for (var i = 0; i < defaultLanguage.length; i++) {
		if (defaultLanguage[i].checked) {
			langIso = defaultLanguage[i].value;
		}
	}
	Language.getSortListLanguage(listLanguage, langIso);
} // getLanguage

var listLanguage = function(data) {
	  for (var i in data)
	  		DWRUtil.setValue(i,data[i]);
} // listLanguage
/*Gestion langue utilisateur*/

/*Gestion moteur de recherche*/
function suggestSearch(idInput, suggestWord) {
	document.getElementById(idInput).value = suggestWord;
	document.getElementById('formSearch').submit();	
} // suggestSearch
/*Gestion moteur de recherche*/

/* fonction url encode */
function encodeUrl(str) {
	var result = "";
	for (i = 0; i < str.length; i++) {
		if (str.charAt(i) == " ") result += "+";
		else result += str.charAt(i);
	}
	return escape(result);
}
/* fonction utl encode */

function checkTheBox(checkBox) 
{
	if(myCheckBox = document.getElementById(checkBox))
	{
		if (myCheckBox.checked == false)
  		{
      		myCheckBox.checked = true;
  		}
  	}
  
  return true;
}

var mainWindow = null;

function colorChoice(formulaire, nom_champ) {
    // ouvre une fenêtre afin de sélectionner une couleur, qui sera transmise au champ dont le nom est en argument
    // 2 arguments : le formulaire (this.form dans l'appel de la fonction) et le nom du champ
    // pour éviter d'ouvrir plusieurs fenêtres simultanées 
    if (mainWindow && !mainWindow.closed) mainWindow.close();
    // passe 2 paramètres à index1.jsp : le nom du formulaire et celui du champ
    mainWindow = window.open("/outils/color/index.jsp?" + formulaire + "&" + nom_champ, "fenCouleurs", "width=400,height=270,resizable=1");
    if (!mainWindow.opener) mainWindow.opener = self;
    nom_champ.onSelect="1";
    return false;
}
/*
 * selectAll: permet de selectionner un text d'un textarea.
 */
function selectAll(theField) {
	var tempval=eval("document."+theField);
	tempval.focus();
	tempval.select();
	copiedTxt = document.selection.createRange();
   	copiedTxt.execCommand("Copy");
	return true;
}

/* anthony */

function openTheDiv(divId){
	var longlet = divId+'Onglet';
	$$(".current").invoke("removeClassName","current");
	$(longlet).toggleClassName('current');
	$$(".searchBarContent").invoke("hide");
	$(divId).show();
}

function reloadAjax(receveur , lurl) {
        var pageTracker = _gat._getTracker("UA-3749792-1");
        pageTracker._initData();
        pageTracker._trackPageview(lurl);
		new Ajax.Updater(receveur, lurl, {onComplete: function (){highlightSearchTermsSearchBar(); $("topDiv").scrollTo(); }});
		return false;
} 

function setButtonClicked(buttonClicked) {
	document.postMessage.buttonName.value = buttonClicked;
	return true;
}

function doFilterRevised(strToMatch, elementName) {
	var listMembers = $$("div .line");
	
	if (strToMatch.length == 0) {
		listMembers.each( function(members){
			members.removeClassName('hidden');
		});
	} else if (strToMatch.length < 2)  { 
		return true;
	}
	var pattern = new RegExp("^" + strToMatch, "gi");
	if(strToMatch.length >= 2) {
		listMembers.each( function(members){
			if(!members.down('div.nameUser').innerHTML.match(pattern)){
				members.addClassName('hidden');
			}else {
				members.removeClassName('hidden');
			}
		});
	}
	return true;
}

function clean_q() {					
	var q = document.form_search.queryString.value;
	var new_q = trim(q);
	var reg = new RegExp("[\s,;+-]+", "g");
	if ( q.indexOf('360', 0 ) > 0 ) { 
		new_q = '';
	} else {
		if ( q.indexOf(' ', 0 ) > 0 ) {
			var arr_q = q.split(reg);		
			new_q = "+" + arr_q[0] + "  ";				
			for ( var i=1; i < arr_q.length; i++) {
			 	new_q = new_q + "+" + arr_q[i] + " ";
			}
			new_q = new_q.substr(0,new_q.length-1);
		} 	
	}	
	document.form_search.queryString.value = new_q;
	return true;		
}

function trim(s) {
    return s.replace(/^\s+/, '').replace(/\s+$/, '');
}

/*
 * Resource : /javascript/common.js
 */

addEvent(window, "load", launch_event);

//La file des evenements
var eventQueue = new Array();

function addOneEvent(callback) 
{
	eventQueue.push(callback);
}

function launch_event(callback) 
{
	var func;
	
	while (eventQueue.length > 0)
	{
		func = eventQueue.shift();
		func();
	}
}

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  }
}

function clean_q(event){
	
	Event.stop(event);
	
	var q = trim($F('queryString'));
	var new_q = q;
	var reg = new RegExp("[ ,;+-]+", "g");
	if ( q.indexOf('360', 0 ) > 0 ) { 
		new_q = '';
	} else {
		if ( q.indexOf(' ', 0 ) > 0 ) {
			var arr_q = q.split(reg);		
			new_q = "+" + arr_q[0] + " ";				
			for ( var i=1; i < arr_q.length; i++) {
			 	new_q = new_q + "+" + arr_q[i] + " ";
			}
			new_q = new_q.substr(0,new_q.length-1);
		} 	
	}	
	$('queryString').value = new_q;
	
	$('form_search').submit();
}

function trim(s) {
    return s.replace(/\s+/g," ").replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,"$1");
}

Event.observe(window, 'load', function() {
	var form = $('form_search');
	if (form) Event.observe(form, 'submit', clean_q);
});
/*
 * Resource : /javascript/ajax_viadeo.js
 */

var ajax_element,
	ajax_inplace,
	ajax_inplace_message,
	ajax_inplace_empty,
	ajax_inplace_defaut,
	ajax_caller;

function exist( objetToTry ) {
	if ( objetToTry == null ) return false;
	else if ( typeof objetToTry == "undefined" ) return false;
	else if ( objetToTry == "undefined" ) return false;
	else return true;
}

function v_show(element) { Element.show($(element)); }
function v_hide(element) { Element.hide($(element)); }
function v_toggle(element) { Element.toggle($(element)); }

function v_after(element,codeHtml) { new Insertion.After( $(element), codeHtml ); }
function v_append(element,codeHtml) { new Insertion.Bottom( $(element), codeHtml ); }

function setAjaxCaller(ajaxCaller) { ajax_caller = ajaxCaller; }

function ajax_success() { v_hide(ajax_element+'_global'); }
function ajax_failure() { ajax_cancel(ajax_element,ajax_caller); }

function ajax_valide(elemId,ajaxCaller) {
	ajax_caller = ajaxCaller;
	ajax_init_inplace(elemId);

	if ($F(ajaxCaller.form.elements[0].id) != ajax_inplace_defaut.value) {
		return ajax_caller.onSubmit();
	}
	else {
		ajax_cancel(elemId,ajax_caller);
		return;
	}	
}

function ajax_cancel(elemId,ajaxCaller) {
	ajax_caller = ajaxCaller;
	ajax_define_inplace(elemId);
	
	set_ajax_inplace($(elemId+'_defaut').value);
	ajax_caller.leaveEditMode();
	v_hide(elemId+'_controls');
	v_hide(elemId+'_message');
	//ajax_caller.onclickCancel();
}

function ajax_callback(form) {
	valeurEscaped = form.elements[0].value;
	valeurEscaped = valeurEscaped.replace(/\"|\'|\<|\>*/g,'');
	valeurEscaped = valeurEscaped.replace(/\&/g,'%26');
	valeurEscaped = valeurEscaped.replace(/\+/g,'%20');
	valeurEscaped = escape( valeurEscaped );
	form.elements[0].value = valeurEscaped;
	return Form.serialize(form);
}

function ajax_init_inplace(element) {
	ajax_define_inplace(element);
	v_hide(ajax_element+'_message');
}
function ajax_define_inplace(element) {
	ajax_element = element;
	ajax_inplace = $(ajax_element);
	ajax_inplace_message = $(ajax_element+"_message");
	ajax_inplace_empty = $(ajax_element+"_empty");
	ajax_inplace_defaut = $(ajax_element+"_defaut");
	ajax_inplace.firstChild.nodeValue = get_ajax_inplace();
	v_show(ajax_element+'_controls');
}
function rem_ajax_inplace(){
	while (ajax_inplace.hasChildNodes())
	{ ajax_inplace.removeChild(ajax_inplace.firstChild); }
}
function set_ajax_inplace_defaut()
{ ajax_inplace.appendChild(document.createTextNode(ajax_inplace_defaut.value)); }
function set_ajax_inplace(text) {
	if (trim(text).length == 0) {
		ajax_inplace.firstChild.nodeValue = ajax_inplace_empty.value;
		ajax_inplace.className = "inplaceeditor-empty ";
	}
	else {
		ajax_inplace.firstChild.nodeValue = text;
		ajax_inplace.className = "inplaceeditor";
	}
}
function get_ajax_inplace() {
	if (ajax_inplace.firstChild != null && ajax_inplace.firstChild.nodeValue != null 
	 && ajax_inplace.firstChild.nodeValue.length != 0 
	 && ajax_inplace.firstChild.nodeValue != ajax_inplace_empty.value) {
		return ajax_inplace.firstChild.nodeValue;
	}
	return '';
}

// methode toujours appele en fin d'evenement ajax
function ajax_complete(transport, element) {
	ajax_define_inplace(element.id);
	
	if (ajax_inplace.firstChild == null) {
		set_ajax_inplace_defaut();
		v_hide(ajax_element+'_controls');
	}
	else {
		// success de submit
		var returnsValues = JSON.parse(ajax_inplace.firstChild.nodeValue);

		// il y a eu une erreur d'appel au serveur donc le parse json retourn false
		if ( !returnsValues ) { 
			rem_ajax_inplace();
			set_ajax_inplace_defaut();
			ajax_failure();
		}
		else {
			set_ajax_inplace(returnsValues.inplaceEditor.value);
				if (returnsValues.inplaceEditor.status == "SUCCESS") {
				ajax_inplace_defaut.value = returnsValues.inplaceEditor.value;
				v_hide(ajax_element+'_message');
				v_hide(ajax_element+'_controls');
				// si JSON retourne une balise preview, cela indique l'element preview a maj
				var isMultiSource = returnsValues.inplaceEditor.multi_source != undefined && returnsValues.inplaceEditor.multi_source != '';
				var isUpdate = returnsValues.inplaceEditor.update != undefined && returnsValues.inplaceEditor.update != '';
				var isPreview = returnsValues.inplaceEditor.preview != undefined && returnsValues.inplaceEditor.preview != '';
				if (isMultiSource) {
					majMultiArray(returnsValues.inplaceEditor.multi_source,returnsValues.inplaceEditor.completion);
				}
				if (isUpdate && !isPreview)
				{ ajax_update(returnsValues.inplaceEditor.update,returnsValues.inplaceEditor.value); }
				else if (!isUpdate && isPreview) {
					proto = eval(returnsValues.inplaceEditor.preview);
					proto.refresh();
				}
				else if (isUpdate && isPreview) {
					proto = eval(returnsValues.inplaceEditor.preview);
					proto.setParam(returnsValues.inplaceEditor.update,returnsValues.inplaceEditor.value);
				}
				ajaxEval = eval("inplace_paramName_"+element.id+"_Complet = null;");
			}
			// echec du submit car donnees invalides
			else if (returnsValues.inplaceEditor.status == "ERROR") {
				ajax_inplace_message.firstChild.nodeValue = returnsValues.inplaceEditor.message;
				//v_show(ajax_element+'_message');
				// RE-EDIT
				this.enterEditMode('click');
			}
			// clique sur cancel, ou tout cas non prevu :)
			else {
				set_ajax_inplace(ajax_inplace_defaut.value);
				v_hide(ajax_element+'_message');
				v_hide(ajax_element+'_controls');
			}
		}
	}
	v_show(ajax_element+'_global');
}

function ajax_update(elementId, value) {
	if ( $(elementId).value != null )
	{ $(elementId).value = value; }
	else {
		if ( $(elementId).firstChild == null )
		{ $(elementId).appendChild(document.createTextNode(value)); }
		$(elementId).firstChild.nodeValue = value;
	}
}

function ajax_preview(preview,url)
{ v_load(preview,url); }

function executeEval(funct)
{ return eval(funct); }

/*************************************************************************
* ENSEMBLE DE METHODES PROPRES AU INPLACEEDITOR AVEC AUTOCOMPLETION
*************************************************************************/
var autoCompleteArray = new Array();

function majArray(ary) {
	if (ary==null) return;
	listTab = ary.split(",");
	for (var i=0; i<listTab.length; i++)
	{ listTab[i] = trim(listTab[i]); }
	autoCompleteArray = listTab;
	return autoCompleteArray;
}

function majFromArray(ajaxAuto) {
	if (ajaxAuto==null || ajaxAuto=='') return;
	ajaxEval = eval(ajaxAuto);
	ajaxEval.options.array = autoCompleteArray;
}

function majAutocomplete(ajaxAuto,ary) {
	if (ajaxAuto==null || ajaxAuto=='' || ary==null) return;
	ajaxEval = eval(ajaxAuto);
	listTab = ary.split(",");
	for (var i=0; i<listTab.length; i++)
	{ listTab[i] = trim(listTab[i]); }
	ajaxEval.options.array = listTab;
	autoCompleteArray = listTab;
}

/*************************************************************************
* ENSEMBLE DE METHODES PROPRES AU INPLACEEDITOR AVEC AUTOCOMPLETION
* POUR L'UTILISATION DE MULTIPLE SOURCES DE COMPLETION DANS UNE MEME PAGE
*************************************************************************/
var multiCompletionArray = new Array();

function majMultiArray(idAry,ary) {
	if (!exist(idAry) || !exist(ary)) return;
	var listTab = ary.split(",");
	var aryMaj = null;
	for (var i=0; i<listTab.length; i++) { listTab[i] = trim(listTab[i]); }
	for (var i=0; i<multiCompletionArray.length; i++) {
		if (multiCompletionArray[i][0] == idAry)
		{ multiCompletionArray[i][1] = listTab; aryMaj = listTab; break; }
	}
	if ( aryMaj == null )
	{ multiCompletionArray.push(new Array(idAry,listTab)); }
}

function majMultiFromArray(idAry,ajaxAuto) {
	if (!exist(idAry) || !exist(ajaxAuto)) return;
	ajaxEval = eval(ajaxAuto);
	for (var i=0; i<multiCompletionArray.length; i++) {
		if (multiCompletionArray[i][0] == idAry)
		{ ajaxEval.options.array = multiCompletionArray[i][1]; break;}
	}
}

function majMultiAutocomplete(idAry,ajaxAuto,ary) {
	if (!exist(idAry) || !exist(ajaxAuto) || !exist(ary)) return;
	ajaxEval = eval(ajaxAuto);
	listTab = ary.split(",");
	for (var i=0; i<listTab.length; i++)
	{ listTab[i] = trim(listTab[i]); }
	var multiCompl = null;
	for (var i=0; i<multiCompletionArray.length; i++) { 
		if (multiCompletionArray[i][0] == idAry)
		{ multiCompletionArray[i][1] = listTab; multiCompl = listTab; break; }
	}
	if (multiCompl == null)
	{ multiCompletionArray.push(new Array(idAry,listTab)); }
	ajaxEval.options.array = listTab;
}

/*
 * Resource : /javascript/json.js
 */

/*
  json.js
  2006-04-28

  This file adds these methods to JavaScript:

  object.toJSONString()

  This method produces a JSON text from an object. The
  object must not contain any cyclical references.

  array.toJSONString()

  This method produces a JSON text from an array. The
  array must not contain any cyclical references.

  string.parseJSON()

  This method parses a JSON text to produce an object or
  array. It will return false if there is an error.
*/
function JSON() {};
JSON.toString = function (obj) {
  var m = {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '"' : '\\"',
    '\\': '\\\\'
  },
  s = {
    array: function (x) {
      var a = ['['], b, f, i, l = x.length, v;
      for (i = 0; i < l; i += 1) {
        v = x[i];
        f = s[typeof v];
        if (f) {
          v = f(v);
          if (typeof v == 'string') {
            if (b) {
              a[a.length] = ',';
            }
            a[a.length] = v;
            b = true;
          }
        }
      }
      a[a.length] = ']';
      return a.join('');
    },
    'boolean': function (x) {
      return String(x);
    },
    'null': function (x) {
      return "null";
    },
    number: function (x) {
      return isFinite(x) ? String(x) : 'null';
    },
    object: function (x) {
      if (x) {
        if (x instanceof Array) {
          return s.array(x);
        }
        var a = ['{'], b, f, i, v;
        for (i in x) {
          v = x[i];
          f = s[typeof v];
          if (f) {
            v = f(v);
            if (typeof v == 'string') {
              if (b) {
                a[a.length] = ',';
              }
              a.push(s.string(i), ':', v);
              b = true;
            }
          }
        }
        a[a.length] = '}';
        return a.join('');
      }
      return 'null';
    },
    string: function (x) {
      if (/["\\\x00-\x1f]/.test(x)) {
                    x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
          var c = m[b];
          if (c) {
            return c;
          }
          c = b.charCodeAt();
          return '\\u00' +
          Math.floor(c / 16).toString(16) +
          (c % 16).toString(16);
        });
  }
  return '"' + x + '"';
}
  };

switch (typeof(obj)) {
 case 'object':
   return s.object(obj);
 case 'array':
   return s.array(obj);
    
 }
};

JSON.parse = function (str) {
  try {
    return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
                                                       str.replace(/"(\\.|[^"\\])*"/g, ''))) &&
            eval('(' + str + ')');
    } catch (e) {
        return false;
    }
};

/*
 * Resource : /javascript/verifcookie.js
 */

function getCookieInfo(dataName)
{
	if (!testCookieInfo(dataName)) {
		var expire = new Date();
		var oneDay = expire.getTime() + (24*60*60*1000);
		expire.setTime(oneDay);
		document.cookie = "TestCookie=Test; expires=" + expire.toGMTString(); 
		var cookieData = document.cookie;   
		
		if (testCookieInfo('TestCookie')) {return true } else {
			alert(lang["verifcookie.error.cookie"]);return true;}				
	}   
}

function testCookieInfo(dataName)
{
     var cookieLen = dataName.length;
     var cookieData = document.cookie;
     var allcookieLen = cookieData.length;
     var i = 0;
     var cookieEnd;
	
     while(i < allcookieLen)
     {
          var j = i + cookieLen;
          if (cookieData.substring(i,j) == dataName)
          {
               cookieEnd = cookieData.indexOf(";", j);
               if (cookieEnd == -1)
               {
                    cookieEnd = cookieData.length;
               }
              return true
         }
         i++;
     }
     return false;
}

function setCookie(dataName, dataValue)
{
	setCookie(dataName, dataValue, true);
}

function setCookie(dataName, dataValue, keepvalid)
{
	var vim_cook = dataName+"="+dataValue+"; path=/;";
	if (keepvalid!=null && keepvalid==true) 
	{
		var expire = new Date();
		var oneDay = expire.getTime() + (300*24*60*60*1000);
		expire.setTime(oneDay);
		vim_cook += " expires="+expire.toGMTString()+";";
	}
	document.cookie = vim_cook;
}

function getCookie(dataName)
{
	var nameEQ = dataName + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

/*
 * Resource : /javascript/pub/SmartAdServer.js
 */


var sas_tmstp = Math.round(Math.random()*10000000000);
var sas_masterflag = 1;
function SmartAdServer(sas_pageid,sas_formatid,sas_target,sas_master) {
	if (!sas_master) {
		if (sas_masterflag==1) {
	 		sas_masterflag=0;
	 		sas_master='M';
	 	} else { 
	 		sas_master='S';
	 	}
	}
	var htmlContent = '<SCR'+'IPT SRC="http://www2.smartadserver.com/call/pubj/' + sas_pageid + '/' + sas_formatid + '/'+sas_master + '/' + sas_tmstp + '/' + escape(sas_target) + '?"></SCR'+'IPT>';
	return htmlContent;
}

/*
 * Resource : /javascript/pub/DoubleClick.js
 */

function DoubleClick(zone, tile, width, height, sas_target, timestamp) {
	var urlParams = zone + ';tile=' + tile + ';sz=' + width + 'x' + height + ';ord=' + timestamp + '?';
	
	var htmlContent = '<!-- begin ad tag (tile=' + tile + ') -->' +
		'<scr' + 'ipt language="JavaScript" ' +
		'src="http://ad.it.doubleclick.net/adj/adv.viadeo.it/' + urlParams + '"' +
		'type="text/javascript"></scr' + 'ipt>' +
		'<noscr' + 'ipt><a href="http://ad.it.doubleclick.net/jump/adv.viadeo.it/' + urlParams + '" target="_blank">' +
		'<img src="http://ad.it.doubleclick.net/ad/adv.viadeo.it/' + urlParams + '" width="' + width + '" height="' + height + '" border="0" alt="">' +
		'</a></noscr' + 'ipt>' +
		'<!-- End ad tag -->';
	return htmlContent;
}

/*
 * Resource : /javascript/protoPreview.js
 */

function ProtoPreview() {
	/** Parametre pour definir l'ecran */
	this.preview_Id = '';
	this.preview_Url = '';
	this.preview_Width = '500';
	this.preview_Heigth = '350';
	this.preview_Params = new Array();
	this.addParam = _Param;
	this.setParam = _SetParam;
		
	/** Lancement de l'excution */
	this.toString = _ToString;
	this.replace = _Replace;
	this.refresh = _Refresh;
	this.popupIt = _PopupIt;
}

/********************* PARAMETRES ******************/

function _Param(sIdP,sValueP,sTypeP,sNameP) {
	i = this.preview_Params.length;
	this.preview_Params[i] = new ParamPreview(i+1,sIdP,sValueP,sTypeP,sNameP);
}

function ParamPreview(iIndexP,sIdP,sValueP,sTypeP,sNameP) {
	this.index = iIndexP;
	this.elemid = sIdP;
	this.value = sValueP;
	this.type = sTypeP; //PARAM -> stocke la valeur ; UPDATE -> update la preview ; REFRESH -> reload la preview ; POPUP -> recharge la preview dans une popup
	this.name = sNameP; // nomPram request
	this.toString = _ParamPreviewToString;
}

function _ParamPreviewToString() {
	return this.name + '=' + escape(this.value);
}

function _SetParam(sIdP,sValueP) {
	i = this.preview_Params.length;
	for (j=0 ; j<i ; j++)
	{
		if (this.preview_Params[j].elemid == sIdP)
		{
			this.preview_Params[j].value = sValueP;
			switch (this.preview_Params[j].type)
			{
				case 'UPDATE' : {
					ajax_update(sIdP,sValueP);
					break;
				}
				case 'REPLACE' : {
					this.replace();
					break;
				}
				case 'REFRESH' : {
					this.refresh();
					break;
				}
				case 'POPUP' : {
					this.popupIt();
					break;
				}
				default : break;
			}
		}
	}
}

/******************** METHODES *******************/

function _ToString() {
	sUrlRetour = this.preview_Url;
	if (sUrlRetour.indexOf("?") == -1) next = '?';
	else next = '&';

	for (i=0 ; i < this.preview_Params.length ; i++) {
		sUrlRetour += next + this.preview_Params[i].toString();
		next = '&';
	}

	return sUrlRetour;
}

function _Replace() {
	//v_replace( this.preview_Id , new Ajax.Updater($(this.preview_Id), this.toString()) );
	v_load( this.preview_Id+'_prev' , this.toString() );
	return;
}

function _Refresh() {
	v_refresh( this.preview_Id+'_prev' , this.toString() );
	//v_load( this.preview_Id+'_prev' , this.toString() );
	return;
}

function _PopupIt() {
	sOption = "toolbar=no,status=yes,menubar=no,location=no,screenX=10,screenY=10,resizable=yes,scrollbars=yes,height="+this.preview_Height+",width="+this.preview_Width+",_new";
	w = window.open( this.toString() , 'viadeo_'+this.preview_Id , sOption );
	return;
}
