/* TIPIK - COMMON.JS */
/* date: 23 July 2008 */
/* Last update: 1 octobre 2008 */

/* load the content of an external file into a panel */
function load_dynamic_panel_v2(url, defaultUrl, panelId, substrAfterStartup, substrAfter, substrBefore, substrBeforeStartup, pLastIndexOfBefore, executeScript, pLoadingImg) {
	if(location.href.indexOf('wcmcom-ec-europa-eu-wip') == -1) {

		if(window.XMLHttpRequest) var xmlHttpReq = new XMLHttpRequest();
		else if (window.ActiveXObject) var xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

		xmlHttpReq.onreadystatechange = function set_dynamic_panel() {
			if (xmlHttpReq.readyState == 4) {
				var problem;
				if (xmlHttpReq.status != 200 && xmlHttpReq.status != 304) {
					/* error getting URL */
					problem = true;
				} else {
					problem = false;
					/* URL reached, search content */
					var response = xmlHttpReq.responseText;
					
					/* execute a substring-before and substring-after on the response if it's necessary */
					if(substrAfter != '') {
						if(substrAfterStartup != ''){
							if(response.indexOf(substrAfterStartup)>=0){
								response = response.substring(response.indexOf(substrAfterStartup), response.length);
							}
						}
	
						if(response.indexOf(substrAfter)>=0){
							response = response.substring(response.indexOf(substrAfter), response.length);
						}
						else {
							substrAfter = substrAfter.replace('&gt;', '>');
							substrAfter = substrAfter.replace('&lt;', '<');
							/*try in another format */
							if(response.indexOf(substrAfter, lIndex)>=0){
								response = response.substring(response.indexOf(substrAfter), response.length);
							}
							else
							{
								response = "";
							}						
						}
					}
					if(substrBefore != '') {
						if(substrBeforeStartup != ''){
							if(response.indexOf(substrBeforeStartup)>=0){
								response = response.substring(0, response.lastIndexOf(substrBeforeStartup));
							}
						}
	
						if(response.indexOf(substrBefore)>=0) {
							if(pLastIndexOfBefore){
								response = response.substring(0, response.lastIndexOf(substrBefore));
							}
							else{
								response = response.substring(0, response.indexOf(substrBefore));
							}
						}
						else {
							substrBefore = substrBefore.replace('&gt;', '>');
							substrBefore = substrBefore.replace('&lt;', '<');
							/*try in another format */
							if(response.indexOf(substrBefore)>=0) {
								response = response.substring(0, response.indexOf(substrBefore));
							}
							else
							{
								response = "";
							}
						}
					}

					var pID = document.getElementById(panelId);
					if(pID) {
						var responseContainer = '<' + pID.tagName.toLowerCase() + ' id="' + panelId + '">';
						if(response.indexOf(responseContainer)!= -1) {
							response = response.replace(responseContainer, '');
							response = response.replace(response.lastIndexOf('</' + pID.tagName.toLowerCase() + '>'), '');
						}
						pID.innerHTML = response;
						
						if(executeScript){
							/*extract javascript*/
							var lFlagScript = '<script language="JavaScript" type="text/javascript">';
							var lIndexScriptTag = response.lastIndexOf(lFlagScript);
							if(lIndexScriptTag >= 0) {
								/* skip variable declaration 'var' for compatibility with Internet Explorer 6 and ajax evaluation script */
								var localscript = response.substring(lIndexScriptTag+lFlagScript.length, response.lastIndexOf('</script>'));
								if(localscript!='')
									global.eval(localscript);
							}
						}
					}
					adaptFontSize('tab_panel_select');
				}
				if (problem == true) {
					/* do something with problem*/
					$(panelId).addClassName('dynPanel_notFound')
					/*addClassName(panelId, "dynPanel_notFound");*/
					
					/* try with the default url */
					if(defaultUrl != '')
						return load_dynamic_panel_v2(defaultUrl, '', panelId, substrAfter, substrBefore);
					else
						return true;
					}
				}
			}
		var myRand=parseInt(Math.random()*99999999); // cache buster
		if(url.indexOf("?")>0){
			url= url + "&rand=" + myRand;
		}else{
			url= url + "?rand=" + myRand;
		}
		
		var lhtml = xmlHttpReq.open("GET", url, true);
		xmlHttpReq.setRequestHeader("Cache-Control", "no-cache");
		xmlHttpReq.send(null);
	}
}

function loadDynamicLink(url, targetId) {
	if(location.href.indexOf('wcmcom-ec-europa-eu-wip') == -1) {
		if(window.XMLHttpRequest) var xmlHttpReq = new XMLHttpRequest();
		else if (window.ActiveXObject) var xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

		xmlHttpReq.onreadystatechange = function dyn() {
			if (xmlHttpReq.readyState == 4) {
				var problem;
				if (xmlHttpReq.status != 200 && xmlHttpReq.status != 304) {
					problem = true;
				} else  {
					problem = false;
					var response = xmlHttpReq.responseText;
					//var xmlDoc=xmlHttpReq.responseXML;

					var rssTag = '<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">';
					var isRSS = (response.indexOf(rssTag)!=-1) ? true : false;

					if(isRSS) {
						var rssItemSTag = '<item>';
						var rssItemETag = '</item>';
						var dummy = response.substring(0, response.indexOf(rssItemSTag));
						response = response.replace(dummy, '');
						var nbItems = response.split(rssItemSTag).length - 1; 
						var items = new Array(nbItems);
						var toInsert, item, lL, lT, lD;
						toInsert = '';
						for(i=0; i<nbItems; i++) {
							item = response.substring(response.indexOf(rssItemSTag), response.length);
							item = item.substring(0, item.indexOf(rssItemETag));
							items[i] = item.replace(rssItemSTag, '');
							response = response.replace(rssItemSTag+items[i]+rssItemETag, '');

							lL = items[i].substring(items[i].indexOf('<link>'), items[i].length);
							lL = lL.substring(0, lL.indexOf('</link>'));
							lL = lL.replace('<link>', '');
							lT = items[i].substring(items[i].indexOf('<title>'), items[i].length);
							lT = lT.substring(0, lT.indexOf('</title>'));
							lT = lT.replace('<title>', '');
							lD = items[i].substring(items[i].indexOf('<description>'), items[i].length);
							lD = lD.substring(0, lD.indexOf('</description>'));
							lD = lD.replace('<description>', '');
							lD = cleanRSSitem(lD);
							items[i] = '<div class="rss-item"><h3><a href="'+lL+'" target="_blank" title="'+lT+'">'+lT+'</a></h3>'+lD+'</div>';
							toInsert += items[i];
						}
						response = toInsert;
					}
					var pID = document.getElementById(targetId);
					pID.innerHTML = response;
				}
			}
			if(problem==true) document.getElementById(targetId).className += ' nofound';
		}
		var myRand=parseInt(Math.random()*99999999); // cache buster
		if(url.indexOf("?")>0) url= url + "&rand=" + myRand;
		else url= url + "?rand=" + myRand;
		
		var lhtml = xmlHttpReq.open("GET", url, true);
		xmlHttpReq.setRequestHeader("Cache-Control", "no-cache");
		xmlHttpReq.send(null);
}
}

function cleanRSSitem(c) {
	c = c.replace('<![CDATA[', '');
	c = c.replace(']]>', '');
	c = c.replace(/(^\s*)|(\s*$)/g, '');
	c = c.replace(/&#38;/g, '&');
	c = c.replace(/&#39;/g, '\'');
	c = c.replace(/&#60;/g, '<');
	c = c.replace(/&#62;/g, '>');
	return c;
	} 

/* ADD CLASS JAVASCRIPT */
function addJavascript() {document.getElementById('content_container').className += ' js';}

/* main function to manage multiple events triggered during the loading of the page.*/
function addLoadEvent(func) {

  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

var OpenFlashPopup_oldopen=null;
function OpenFlashPopup(e, element, elementWidth, elementHeight) {
	// get the coordinates
	var scrollTop = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
  
	var CurrentWidth = document.body.clientWidth;
	var CurrentHeight= document.body.clientHeight + scrollTop;
	
	var el = document.getElementById(element);
	var position_y =0;
	var position_x = 0;
	
	if(elementWidth == null){
		elementWidth = el.clientWidth;}
	if(elementHeight == null){
		elementHeight= el.clientHeight;}
	
	var x = mouse_x;
	var y = mouse_y;
	
	// add ie scroll
	if(browser.isIE) y = y + scrollTop;
	
	if (x != null && y != null) {
		
		// axe X 
		if(x + elementWidth <= CurrentWidth) {position_x = x + 10;}
		else {position_x = CurrentWidth - elementWidth - 10;}
		
		// axe Y 
		if(y + elementHeight <= CurrentHeight) {position_y = y + 10;}
		else {position_y = CurrentHeight - elementHeight -10 ;}
		
		// close previous Flash popup
		CloseFlashPopup();
		 
		el.style.zIndex = "99";
		el.style.position = "absolute";
		el.style.left = position_x+"px";
		el.style.top = position_y+"px";
		
		OpenFlashPopup_oldopen = element;
	}
}

function CloseFlashPopup() {
		
	if(OpenFlashPopup_oldopen){ //close previous element
	 var olderOpen = document.getElementById(OpenFlashPopup_oldopen);
	 olderOpen.style.zIndex = "0";
	 olderOpen.style.position = "absolute";
	 olderOpen.style.left = "-3000px";
	 olderOpen.style.top = "-3000px";
	}
}

/* SEARCH WITH AJAX */
/* call the Europa Search Engine and paste the results in a container */
function ajaxSearch(pForm, pTitle, pContainer, pImageLoading){
	/* build the query */
  var poststr = "/geninfo/query/resultaction.jsp?";
  poststr += "Collection=" + encodeURI(pForm.Collection.value);
  poststr += "&SourceQueryText=" + encodeURI(pForm.SourceQueryText.value);
	poststr += "&ResultTemplate=" + encodeURI(pForm.ResultTemplate.value);
	poststr += "&ResultCount=" + encodeURI(pForm.ResultCount.value);
	poststr += "&qtype=" + encodeURI(pForm.qtype.value);
	poststr += "&ResultMaxDocs=" + encodeURI(pForm.ResultMaxDocs.value);
	poststr += "&DefaultLG=" + encodeURI(pForm.DefaultLG.value);
	poststr += "&QueryText=" + encodeURI(pForm.QueryText.value);
	
	/* insert the title and the image before executing the request */
	document.getElementById(pContainer).innerHTML = '<h2>'+pTitle+'</h2><div id="searchResults"><img src="'+pImageLoading+'" /></div>';

	/* call the central javascript function to load the content of the page and paste it into the container */
	load_dynamic_panel(poststr, poststr, 'searchResults', '<table width=\"95%\" ', '</table>', false);
}

/* Stop the propagation of the event */
function stopEvent(ev){
	if (document.addEventListener) ev.stopPropagation();
	else if (document.all)	window.event.cancelBubble = true;
}

/* Main menu. */
/* Javascript to hide and to display the second level */

function menu_showsub(sender, id){
	var flagmenu = 0;
	if(document.getElementById(id)){
		if(document.getElementById(id).style.display == 'none') {flagmenu = 1;}
		menu_delayhidesub(document.getElementById(id).parentNode.parentNode.id);
		if(flagmenu == 1) {document.getElementById(id).style.display = 'block';}		
	}		
}

function menu_hidesub(shownsub){
	if (document.getElementById(shownsub)) {document.getElementById(shownsub).style.display = 'none';}
}

function menu_delayhidesub(ContainerID) {	
	var ContainerObject = document.getElementById(ContainerID);		
  if (ContainerObject) {
    var lListChild = ContainerObject.childNodes;
    for (var i = 0; i < lListChild.length; i++) {     
			if (lListChild[i].tagName == 'LI' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {				
				for(j=0; j<lListChild[i].childNodes.length;j++) {
					if(lListChild[i].childNodes[j].tagName == 'UL') {menu_hidesub(lListChild[i].childNodes[j].id);}
				}				
			}
    }
  }	
}

/* SPECIFIC CODE */
var shownlangs;

function showlangs(id) {
	langs = document.getElementById(id+'langs');
	if (shownlangs == langs) hidelangs();
	else {
		if (shownlangs) hidelangs();

		langs.style.display = 'block';
		langs.focus();
		shownlangs = langs;
	}
}
	
function hidelangs() {
	if (shownlangs)	{
		shownlangs.style.display = 'none';
		shownlangs = null;
	}
}

/* DESIGN COMBO	DATABASE */
var displayComboDatabase = 0;
var currentDisplay = false;

function showSelectDatabase(id, ComboId) {
	var d = document.getElementById(id);	
	if (document.getElementById('dropdown_database')) {
		displayComboDatabase = setTimeout("hideSelectDatabase()",2000);
		currentDisplay = false;
	}
	if (d) {
		currentDisplay = true;
		d.style.display = 'block';		
		d.style.left = 0 +'px';	
		d.style.top = document.getElementById(ComboId).clientHeight + 'px';
	}
}

function hideSelectDatabase() {
	if(currentDisplay == false) {
		document.getElementById('dropdown_database').style.display='none';
	}
}




/* Tab Selector */

var divArray;
var divArray_Index = 0;

function ShowTab(tabId) {
	if(document.getElementById(tabId) != null) {
	  document.getElementById(tabId).style.visibility='visible';
	  document.getElementById(tabId).style.display='block';
	  
	  if(document.getElementById(tabId).id == divArray[divArray_Index-1].id) {
		  document.getElementById('tab_panel_select').style.backgroundImage = 'url(/enterprise/images/homepage_rubric_consultations_title_hover.jpg)';
	  } else { 
	  	document.getElementById('tab_panel_select').style.backgroundImage = 'url(/enterprise/images/homepage_rubric_consultations_title.jpg)';
	  }
  } 
}

function HideTab(tabId) {
	if (document.getElementById(tabId) != null) {
 		document.getElementById(tabId).style.visibility='hidden';
  	document.getElementById(tabId).style.display='none';
  }  
}

function Tab(ContainerID,DivPanel,tabId) {
	if(divArray == null) {CreateTabList(ContainerID,DivPanel);}
	for(var i=0; i<divArray.length; i++) {	
		if (tabId == divArray[i].id) {
			ShowTab(divArray[i].id);
		  document.getElementById('tab_'+divArray[i].id).className = 'on';
		} else {
			HideTab(divArray[i].id);
			document.getElementById('tab_'+divArray[i].id).className = '';
		}	
	}
}

function CreateTabList(ContainerID,DivPanel) {
  divArray = new Array();
  var ContainerObject = document.getElementById(ContainerID);
  if(ContainerObject == null) {ContainerObject = document.getElementById("newsfeed");}
  if(ContainerObject != null) {
  	for (var i=0; i<ContainerObject.childNodes.length; i++) {
			if(ContainerObject.childNodes[i].className == DivPanel) {
				divArray[divArray_Index] = document.getElementById(ContainerObject.childNodes[i].id);
				divArray_Index = divArray_Index + 1;
		 	}
		}
	}
}

/* SCRIPT  GLOSSARY & ACRONYM */
var glossary_mutex = false;

function glossary_closeAll(ContainerID) {
  if (!glossary_mutex) {
    glossary_mutex = true;
    var ContainerObject = document.getElementById(ContainerID);		
    if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
   		for (var i = 0; i < lListChild.length; i++) {     
				if (lListChild[i].tagName == 'DL' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
					lListChild[i].style.display = '';
				}                        			
			}
    }
    glossary_mutex = false;
  }
}

function glossary_showTab(ContainerID, dlID) {
  if (!glossary_mutex) {
    glossary_mutex = true;
    var ContainerObject = document.getElementById(ContainerID);		
    if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
   		for (var i = 0; i < lListChild.length; i++) {
   			if (lListChild[i].tagName == 'DL' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
					if(lListChild[i].id == dlID) {
						lListChild[i].style.display = 'block';
					}
				}
			}
		}
		glossary_mutex = false;
  }
}

function glossaryOpenTab(UlAlphabet, ContainerID, dlID) {
	glossary_closeAll(ContainerID);
	glossary_showTab(ContainerID, dlID);
	
	var ListeLi = [];
	ContainerObject = document.getElementById(UlAlphabet);
	ListeLi = ContainerObject.getElementsByTagName('a');
	for(var i = 0; i < ListeLi.length; i++) {
		ListeLi[i].className = '';
   }
	if(dlID!='') {
		document.getElementById('letter_'+dlID).className = 'on';
	}
}

function getIdUrlGlossary(UlAlphabet, ContainerID) {	
	var urlCourant = location.href;
	var indiceDepart = urlCourant.lastIndexOf('#')+1; // Plus 1 car on ne veut pas le '#'.
	var indiceArrivee = urlCourant.length;
	
	if(indiceDepart != 0) {
		var IdUrl = urlCourant.substring(indiceDepart, indiceArrivee);		
		this.location = "#";
		glossaryOpenTab(UlAlphabet, ContainerID, IdUrl);
	}
	else {
		var ListeLi = [];
		ContainerObject = document.getElementById(UlAlphabet);
		ListeLi = ContainerObject.getElementsByTagName('a');
		glossaryOpenTab(UlAlphabet, ContainerID, ListeLi[0].id.substring(7,8));		
	}
}

/* SCRIPT CONTACT*/
var contact_mutex = false;

function contact_closeAll(ContainerID) {
  if (!contact_mutex) {
	  contact_mutex = true;
	  var ContainerObject = document.getElementById(ContainerID);		
	  if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
     	for (var i = 0; i < lListChild.length; i++) {
     		if (lListChild[i].tagName == 'DIV' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
					lListChild[i].style.display = '';
				}
			}
		}
		contact_mutex = false;
  }
}

function contact_showTab(ContainerID, divID) {
	if (!contact_mutex) {
  	contact_mutex = true;
    var ContainerObject = document.getElementById(ContainerID);		
    if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
      for (var i = 0; i < lListChild.length; i++) {
      	if (lListChild[i].tagName == 'DIV' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
      		if(divID == 'all') {
      			lListChild[i].style.display = 'block';
					}
					else {
						if(lListChild[i].id == divID) {
							lListChild[i].style.display = 'block';
						}
					}
				}
			}
		}
		contact_mutex = false;
	}
}

function contactOpenTab(ContainerID) {
	contact_closeAll(ContainerID);
	var divID = document.getElementById('selectContact').value;
	contact_showTab(ContainerID, divID);
}

/*function getIdUrlContact(ContainerID) {	
	var urlCourant = location.href;
	var indiceDepart = urlCourant.lastIndexOf('#')+1; // Plus 1 car on ne veut pas le '#'.
	var indiceArrivee = urlCourant.length; // Moins les 4 caractères de l'extension.
	if(indiceDepart != 0) {
		var IdUrl = urlCourant.substring(indiceDepart, indiceArrivee);
		for(i=0; i<document.getElementById('selectContact').options.length; i++) {
			if(document.getElementById('selectContact').options[i].value == IdUrl) {
				document.getElementById('selectContact').options[i].selected = true;
			}
		}
		this.location = "#";
		contactOpenTab(ContainerID);
	}
}*/

/* SCRIPT SECTOR DIV MORE_INTRO */

function displayMoreIntro(ContainerID, me) {
	var ContainerObject = document.getElementById(ContainerID);
 	var idMore = document.getElementById('link_more_intro');
 	var idLess = document.getElementById('link_less_intro');

	ContainerObject.style.display = (ContainerObject.style.display == 'block') ? 'none' : 'block';
	idMore.style.display = (ContainerObject.style.display == 'block') ? 'none' : 'inline';
	idLess.style.display = (ContainerObject.style.display == 'block') ? 'inline' : 'none';
}

/* SCRIPT USEFUL LINKS */
var link_mutex = false;

function link_closeAll(ContainerID) {
	if(!link_mutex) {
  	link_mutex = true;
    var ContainerObject = document.getElementById(ContainerID);		
    if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
      for (var i = 0; i < lListChild.length; i++) {
      	if (lListChild[i].tagName == 'DL' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
      		lListChild[i].style.display = '';
				}                        			
			}
		}
		link_mutex = false;
	}
}

function link_showTab(ContainerID, divID) {
	if(!link_mutex) {
  	link_mutex = true;
    var ContainerObject = document.getElementById(ContainerID);		
    if (ContainerObject) {
			var lListChild = ContainerObject.childNodes;			
      for (var i = 0; i < lListChild.length; i++) {
      	if (lListChild[i].tagName == 'DL' && lListChild[i].parentNode.getAttribute('id') == ContainerObject.id) {
      		if(lListChild[i].id == divID) {
      			lListChild[i].style.display = 'block';
					}
				}                        			
			}
		}
		link_mutex = false;
	}
}

function linkOpenTab(ContainerID) {
	link_closeAll(ContainerID);
	var divID = document.getElementById('selectLinks').value;
	link_showTab(ContainerID, divID);
}

/* ----- FLASH ANIMATION ON THE HOMEPAGE ----- */
function loadSWF(url, targetID){
	var originalHeight = 500;
	var originalWidth = 1000;
	var innerF = document.getElementById('inner-flash');
	var contentF = document.getElementById('content-flash');
	
	contentF.style.height = originalHeight - 20 +'px';
	contentF.style.width = originalWidth - 20 +'px';
	document.documentElement.style.overflow = 'hidden';
	
	new Effect.Scale('content-flash', 100, {scaleFrom: 10});
	
	innerF.style.display = 'block';
	innerF.style.width = document.body.offsetWidth + 'px';
	innerF.style.height = document.body.offsetHeight + 'px';   
	contentF.style.left = ((document.body.offsetWidth - originalWidth)/2)+'px';
	
	if (typeof self.innerHeight != 'undefined')	contentF.style.top = ((self.innerHeight - originalHeight)/2)+'px';
 	else contentF.style.top = ((document.documentElement.clientHeight - originalHeight)/2)+'px';
	
	//Check for existing SWF
	if(isObject(targetID)) {replaceSwfWithEmptyDiv(targetID);}
	
	//SWF
	if (swfobject.hasFlashPlayerVersion("7")) {
		var attributes = {data: url, width:"1000", height:"500"};
		var params = {wmode: "window"};
		if(navigator.appName != 'Microsoft Internet Explorer') setTimeout(function() {swfobject.createSWF(attributes, params, targetID);}, 800);
		else {swfobject.createSWF(attributes, params, targetID);}
	}
	
	if (document.addEventListener)	{
		// for Mozilla & co
		if (document.getElementById('content-flash')) document.getElementById('content-flash').addEventListener("click", stopEvent, false);
		}
	else if (document.all)	{
		// for IE
		window.event.cancelBubble = true;
		if (document.getElementById('content-flash')) document.getElementById('content-flash').onclick = stopEvent;
		}

}

function isObject(targetID) {
	var isFound = false;
	var el = document.getElementById(targetID);
	if(el && (el.nodeName === "OBJECT" || el.nodeName === "EMBED")) isFound = true;
	return isFound;
}

function replaceSwfWithEmptyDiv(targetID) {
	var el = document.getElementById(targetID);
	if(el) {
		var div = document.createElement("div");
		el.parentNode.insertBefore(div, el);
		swfobject.removeSWF(targetID);
		div.setAttribute("id", targetID);
		var innerF = document.getElementById('inner-flash');
		innerF.style.display = 'none';
		document.documentElement.style.overflow = 'scroll';
	}
}

/* Ajax Popup */

function openInternalItem(url, defaultURL, subAfter, subAfterId, subBefore, seeker) {
	stop = false;
	var isIE = (navigator.userAgent.indexOf("MSIE") != -1) ? true : false;
	if (!isIE) document.captureEvents(Event.CLICK);
	document.onclick = getMouseXY;
	var tempX;
	var tempY;

	function getMouseXY(e) {
		if (isIE) {
	  	tempX = event.clientX + document.body.scrollLeft;
	    tempY = event.clientY + document.body.scrollTop;
	  } else {
	  	tempX = e.pageX;
	    tempY = e.pageY;
	  }  
	  if(stop == false) {
			if (isIE) tempY += topPosition();
	  	insert_AjaxRequest(url, defaultURL, subAfter, subAfterId, subBefore, seeker, tempX, tempY);
	  	stop = true;
	  }
	}
}

function insert_AjaxRequest(url, defaultURL, subAfter, subAfterId, subBefore, seeker, posX, posY) {
  /* build the new container */
	var isIE = (navigator.userAgent.indexOf("MSIE") != -1) ? true : false;
	var newContainerTag = 'div';
	var newContainerId = 'ajax-item';
	var innerNewContainerId = '<div id="ajax-bottom">';
	var newContainerClassName = '';
	var newContainerWidth = 300;
	var hScroll = (posX + newContainerWidth > pageWidth()) ? true : false;
	if(hScroll) {
		posX = posX - newContainerWidth - 15;
		newContainerClassName = 'reverse';
	}
	var posTop = posY + 'px';
	var posLeft = posX + 'px';
	var newContainer = '<'+ newContainerTag + ' id="' + newContainerId + '" class="'+ newContainerClassName +'" style="top: ' + posTop + '; left: ' + posLeft + '">';
	var closeImg = '<img id="close-ajax" src="/enterprise/images/close.jpg" onclick="closeInternalItem(\'' + newContainerId + '\')" />';
	var divInOnclick = '\'</div>\'';
	var sameBox = false;
	var aboveSeeker = seeker.parentNode;
	while(aboveSeeker) {
		if (aboveSeeker.id) {
			if(aboveSeeker.id.indexOf('ajax-')!=-1) sameBox = true;
		}
		aboveSeeker = aboveSeeker.parentNode;
	}
	/* load the content of the page and paste it into the new container */	
	var xhr = null;
	if(window.XMLHttpRequest) xhr = new XMLHttpRequest();
	else if (window.ActiveXObject) xhr = new ActiveXObject("Microsoft.XMLHTTP");

	xhr.onreadystatechange = function dyn_insert(){
		if(xhr.readyState == 4) {
			var error_getting_url;
			if (xhr.status != 200 && xhr.status != 304) {
				var error_getting_url = true;
			}
			else {
				if(xhr.responseText.indexOf('id="'+subAfterId+'"')==-1) {
					error_getting_url = true;
				}
				else {
					error_getting_url = false;
					if(!sameBox) closeInternalItem(newContainerId);

					var response = xhr.responseText;
					if(subAfterId != '') {
						var tmp = subAfter;
						tmp = tmp.replace('>', '');
						subAfter = tmp + ' id="' + subAfterId + '">';
					}
					if(subAfter != '') {
						response = response.substring(response.indexOf(subAfter), response.length);
						response = response.replace(subAfter, '');
					}
					if(subBefore != '') {
						var exception = response.substring(response.lastIndexOf(divInOnclick), response.length);
						if(exception != response) {
							exception = exception.replace(divInOnclick, '');
							exception = exception.substring(0, exception.indexOf(subBefore));
							var content_before = response.substring(0, response.indexOf(divInOnclick));
							response = content_before + divInOnclick + exception;
						}
						else response = response.substring(0, response.indexOf(subBefore));
					}
					var c_main = document.getElementById('content_main');
					var insert = newContainer + innerNewContainerId + response + closeImg + '</div></' + newContainerTag + '>';
					if(!sameBox) {
						c_main.innerHTML += insert;
					} else {
						document.getElementById(newContainerId).innerHTML = innerNewContainerId + response + '</div>' + closeImg;	 
					}
				}
			}
		}
		if (error_getting_url == true) {
			if(defaultURL != '') return insert_AjaxRequest(defaultURL, '', subAfter, subAfterId, subBefore, sameBox, posX, posY);
			else return true;
		}
	}
	/* anti-cache system */
	var myRand=parseInt(Math.random()*99999999);
	if(url.indexOf("?")>0) {url = url + "&rand=" + myRand;}
	else {url = url + "?rand=" + myRand;}
	
	var targetHTML = xhr.open("GET", url, true);
	xhr.setRequestHeader("Cache-Control", "no-cache");
	xhr.send(null);
}

function closeInternalItem(createdContainerId) {
	var existingItem = document.getElementById(createdContainerId);
	if(existingItem) existingItem.parentNode.removeChild(existingItem);
}

function pageHeight() {return window.innerHeight != null? window.innerHeight : document.documentElement && document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body != null? document.body.clientHeight : null;}
function topPosition() {return typeof window.pageYOffset != 'undefined' ? window.pageYOffset : document.documentElement && document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ? document.body.scrollTop : 0;}
function pageWidth() {return window.innerWidth != null ? window.innerWidth : document.documentElement && document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body != null ? document.body.clientWidth : null;}
function leftPosition() {return typeof window.pageXOffset != 'undefined' ? window.pageXOffset : document.documentElement && document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ? document.body.scrollLeft : 0;}

function jumpMenu(item){location.href=item;}


/* SEARCH FORM WITH AJAX */
/* call the Europa Search Engine and paste the results in a container */
function ajaxLoadSearchResults(pContainer, pImageLoading){
  /* build the query */
  var poststr = "/geninfo/query/resultaction.jsp" + window.location.search;

 /* insert the title and the image before executing the request */
 if(document.getElementById(pContainer)){
	 document.getElementById(pContainer).innerHTML = '<img src="'+pImageLoading+'" />';
	
	 /* call the central javascript function to load the content of the page and paste it into the container */
	 load_dynamic_panel_v2(poststr, poststr, pContainer, '', '<!-- End Search Form -->', '<!-- BOTTOM TOOLS SECTION-->', '',0, false,'');
 }
}

/* SEARCH-RESULTS - set the link to refine the search */
function search_SetRefineSearchLink(pLinkId) {
    var lParam = String(window.location.search);
    if (lParam.indexOf("?") >= 0) {
        document.getElementById(pLinkId).href += lParam;
        //document.getElementById(pLinkId).style.display = "block";
    }
}
/* SEARCH - set the query text box with the last search */
function search_setQueryTextBoxWithParam(pTxtboxId) {
    var lParam = decodeURI(String(window.location.search));
    if (lParam.indexOf("&QueryText=") > 0) {
        var lSearchText = lParam.substring(lParam.indexOf("&QueryText=") + 11);
        if (lSearchText.indexOf("&") > 0) {
            lSearchText = lSearchText.substring(0, lSearchText.indexOf("&"));
        }
        while (lSearchText.indexOf("+") > 0) {
            lSearchText = lSearchText.replace("+", " ");
        }
        
        document.getElementById(pTxtboxId).value = lSearchText;
    }
}
        
/* SITEMAP */

function doSiteMap(sID){
	var imgCollapsed	= '/enterprise/images/sitemap-collapsed.gif';
	var imgExpanded		= '/enterprise/images/sitemap-expanded.gif';
	var imgAlt				= 'expand/collapse this entry';
	var imgClass			= 'col-exp';
	
	var sitemap = document.getElementById(sID);
	if(sitemap) {
		this.listItem = function(li) {
			if(li.getElementsByTagName('ul').length > 0) {
				var ul = li.getElementsByTagName('ul')[0];
				ul.style.display = 'none';
				var img = document.createElement('img');
				img.src = imgCollapsed;
				img.alt = imgAlt;
				img.className = imgClass;
				if(sID!='sitemap'){
					li.onclick = function() {
						if( ul.style.display == 'none' ) {
							var lListChild = sitemap.getElementsByTagName('ul');		
				      for(var j = 0; j < lListChild.length; j++) {
								lListChild[j].style.display = 'none';
							}
							var lImgChild = sitemap.getElementsByTagName('img');		
				      for(var k = 0; k < lImgChild.length; k++) {
								lImgChild[k].src = imgCollapsed;
							}
							if(sID == 'sectors-contacts-1' || sID == 'sectors-contacts-2') {
								var sectorbis = '';
								if(sID == 'sectors-contacts-1') { sectorbis = 'sectors-contacts-2' }
								else { sectorbis = 'sectors-contacts-1'; }
								var sectorbisc = document.getElementById(sectorbis);
								var lListChildSectors = sectorbisc.getElementsByTagName('ul');		
					      for(var l = 0; l < lListChildSectors.length; l++) {
									lListChildSectors[l].style.display = 'none';
								}
								var lImgChildSectors = sectorbisc.getElementsByTagName('img');		
					      for(var m = 0; m < lImgChildSectors.length; m++) {
									lImgChildSectors[m].src = imgCollapsed;
								}
							}
						}
						ul.style.display = (ul.style.display == 'none') ? 'block' : 'none';
						img.src = (ul.style.display == 'none') ? imgCollapsed : imgExpanded;
					}
				} else {
					img.onclick = function() {
						$(this).parent().children("ul").each(function(){
							if ($(this).css('display')=='none') {
								$(this).css('display', 'block');
							} else {
								$(this).css('display', 'none');
							}
						})
						img.src = ($(this).prev().css('display') == 'none') ? imgCollapsed : imgExpanded;
					}
				}
				li.appendChild(img);
			}
		}
		
		var items = sitemap.getElementsByTagName('li');
		for(var i=0; i<items.length; i++) {
			listItem(items[i]);
		}
	}	
}


function stopEvent(ev)	{
	if (document.addEventListener) ev.stopPropagation();
	else if (document.all)	window.event.cancelBubble = true;
	}

function adaptFontSize(containerID) {
	if (document.getElementById(containerID) && pageWidth() < 971) document.getElementById(containerID).style.fontSize = '0.7em';
}

var getElementsByClassName = function (className, tag, elm){
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag)? new RegExp("\\b" + tag + "\\b", "i") : null,
				returnElements = [],
				current;
			for(var i=0, il=elements.length; i<il; i+=1){
				current = elements[i];
				if(!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI === xhtmlNamespace)? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for(var j=0, jl=classes.length; j<jl; j+=1){
				classesToCheck += "[contains(concat(' ', @class, ' '), ' " + classes[j] + " ')]";
			}
			try	{
				elements = document.evaluate(".//" + tag + classesToCheck, elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck, elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all)? elm.all : elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for(var k=0, kl=classes.length; k<kl; k+=1){
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] + "(\\s|$)"));
			}
			for(var l=0, ll=elements.length; l<ll; l+=1){
				current = elements[l];
				match = false;
				for(var m=0, ml=classesToCheck.length; m<ml; m+=1){
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};