//Simon Willison's script to optimise the onload of the page
function addLoadEvent(func){
   var oldonload = window.onload;
   if(typeof window.onload != 'function'){
      window.onload = func;
   }else{
      window.onload = function(){
         oldonload();
         func();
      }
   }
}

//Script for the menu/sub-menu
var Menu= {
	Initialize: function(){
		var ul = document.getElementById('site_nav_global').getElementsByTagName('ul')[0];
		var li = ul.getElementsByTagName('li');
		
		//Attach a function to display the sub-menu on mouse over the menu elements
		for(var a=0;a<li.length;a++){
			if(li[a].parentNode==ul){
				li[a].onmouseover = function (event) { 
					Menu.DisplaySubMenu(this);
					return false;
				}
			}	
		}
		
		//Attach a mouse out event on the menu/sub-menu container so it returns to its nitial state
		if(document.all){
			//try with the ie javascript onmouseleave
			document.getElementById('site_nav_global').onmouseleave = function (e) {
				Menu.ReInitialiseMenus(this.getElementsByTagName('ul')[0]);
				return false;							
			}
		}else{
			//for other browsers use the onmouseout
			document.getElementById('site_nav_global').onmouseout = function (e) {
				if (!e){
					var e = window.event;
				} 
				var tg = (window.event) ? e.srcElement : e.target;
				if (tg.nodeName == 'A' || tg.nodeName == 'LI'){
					return;
				} 
				var reltg = (e.relatedTarget) ? e.relatedTarget : e.toElement;
				while (reltg != tg && reltg.nodeName != 'BODY'){
					reltg= reltg.parentNode
				}			
				if (reltg== tg){
					return;
				} 
	
				Menu.ReInitialiseMenus(this.getElementsByTagName('ul')[0]);
				return false;
			}
		}
	},
	
	DisplaySubMenu: function(el){
		var parent = el.parentNode;
		var li = parent.getElementsByTagName('li');
		for(var a=0;a<li.length;a++){
			if(li[a].parentNode == parent){			
				if(!li[a].getElementsByTagName('ul')[0]){
					continue;
				}
				
				//if the element is the current clicked menu and it is not mouse overed, then hide it
				if(li[a].className == 'selected' && li[a] != el){
					li[a].getElementsByTagName('ul')[0].style.display = 'none';
				} else if(li[a].className == 'selected' && li[a] == el){
					li[a].getElementsByTagName('ul')[0].style.display = 'block';
				}
				
				//Apply the class over to display the sub menu according to its mouse overed parent
				li[a].getElementsByTagName('ul')[0].className = (li[a] == el)?'over':'';				
			}
		}
	},
	
	ReInitialiseMenus: function(parent){
		var li = parent.getElementsByTagName('li');
		for(var a=0;a<li.length;a++){
			if(li[a].parentNode == parent){
				if(!li[a].getElementsByTagName('ul')[0]){
					continue;
				}				
				
				//remove any className = 'over'
				li[a].getElementsByTagName('ul')[0].className = '';
				
				if(li[a].className == 'selected'){
					li[a].getElementsByTagName('ul')[0].style.display = 'block';
				}
			}
		}				
	}	
}	

//Script for the tabs
var Tabs = {
	Initialize: function(){
		var tab = document.getElementById('tabs').getElementsByTagName('div');
		for(var a=0;a<tab.length;a++){
			if(tab[a].className.split(' ')[0]=='tab'){
				tab[a].onclick = function (e) {
					Tabs.ChangeTab(this);
					return false;
				}
			}			
		}		
	},
	
	ChangeTab: function(el){
		var tab = el.parentNode.getElementsByTagName('div');
		var ol = el.parentNode.parentNode.getElementsByTagName('ol');
		for(var a=0;a<tab.length;a++){
			tab[a].className == 'tab';
			ol[a].className == 'most_read';
			tab[a].className = (tab[a] == el)?'tab selected':'tab';
			ol[a].className = (tab[a] == el)?'most_read selected':'most_read';
			
			
		}	
	}
}

//Script for the date selector - attaches automatically an event on inputs with a classname "date_selector" in order to keep an inobstrusive javascript
var DateSelector = {
	Initialize: function(){
		var inputs = document.getElementsByTagName('input');
		for(var a=0;a<inputs.length;a++){
			var isclassname = inputs[a].className.split(" ");
			for(var b=0;b<isclassname.length;b++){
				if(isclassname[b] == 'date_selector'){
					DateSelector.AttachEvent(inputs[a]);
				}
			}
		}
	},
	
	AttachEvent: function(el){
		//If the calendar html basis and javascript isn't initialised then do it
		if(!document.getElementById('ds_conclass')){
			this.CreateCalendar(el);
		}
		
		el.onfocus = function (e) {
			ds_sh(this);
		}
	},
	
	CreateCalendar: function(el){				
		//Create the table
		var div = document.createElement('DIV');
		div.className = 'date_selector_container'
		document.getElementsByTagName('body')[0].insertBefore(div,document.getElementsByTagName('body')[0].firstChild);
		div.innerHTML = ''
						+	'<table class="ds_box" cellpadding="0" cellspacing="0" id="ds_conclass" style="display: none;">'
						+	 '<tbody>'
						+	  '<tr><td id="top_calclass"></td></tr>'						
						+	  '<tr><td id="ds_calclass"></td></tr>'
						+	  '<tr><td id="bottom_calclass"></td></tr>'
						+	 '</tbody>'
						+	'</table>';					
				
		//load the javascript      
        var oScript = document.createElement('script');   
		oScript.setAttribute('src','/media/script/date_selector.js');  
		oScript.setAttribute('type','text/javascript'); 
		div.appendChild(oScript);
		
		//Make blurs
		var forms = document.getElementsByTagName('form');
		for(var a = 0; a < forms.length; a++ ){
			var childs = (forms[a].all) ? forms[a].all : forms[a].getElementsByTagName('*');
			for(var b = 0; b < childs.length; b++ ){
				if(childs[b].tagName){
					//alert(child.tagName);
					childs[b].onfocus = function (e) {
						DateSelector.MakeFocus(this);
					}					
				}
			}
		}
	},
	
	MakeFocus: function(el){
		if(document.getElementById('focused')){
			document.getElementById('focused').id = '';
		}
		
		if(el.className == 'date_selector'){
			el.id = 'focused';
			ds_hi();
		}		
	}
}

//Script for the extra link popup  - page details nouvelles
var PopUp = {
	Initialize: function(){
		if(document.getElementById('popup-parent')){
			document.getElementById('popup-parent').onclick = function (e) {
				PopUp.Display();
				return false;	
			}
		}		
	},

	Close: function(){
		document.getElementById('popup').style.display = 'none';
		document.getElementById('container').removeChild(document.getElementById('overlay'));		
	},
	
	Display: function(){
		document.getElementById('container').insertBefore(document.getElementById('popup'),document.getElementById('container').firstChild);
		document.getElementById('popup').style.display = 'block';
		var overlay = document.createElement('DIV');
		overlay.id = 'overlay';
		document.getElementById('container').insertBefore(overlay,document.getElementById('container').firstChild);	
			
		document.getElementById('popup-close').onclick = function (e) {
			PopUp.Close();
			return false;	
		}					
	}
}



//Script for the extra link popup  - page details nouvelles
var PopUp2 = {
	Initialize: function(){
		if(document.getElementById('popup-parent2')){
			document.getElementById('popup-parent2').onclick = function (e) {
				PopUp2.Display();
				return false;	
			}
		}		
	},

	Close: function(){
		document.getElementById('popup2').style.display = 'none';
		document.getElementById('container').removeChild(document.getElementById('overlay'));		
	},
	
	Display: function(){
		document.getElementById('container').insertBefore(document.getElementById('popup2'),document.getElementById('container').firstChild);
		document.getElementById('popup2').style.display = 'block';
		var overlay = document.createElement('DIV');
		overlay.id = 'overlay';
		document.getElementById('container').insertBefore(overlay,document.getElementById('container').firstChild);	
			
		document.getElementById('popup-close2').onclick = function (e) {
			PopUp2.Close();
			return false;
		}					
	}
}



//Script for the extra link popup  - envoyer a un ami.
var PopUp3 = {
	Initialize: function(){
		if(document.getElementById('popup-parent3')){
			document.getElementById('popup-parent3').onclick = function (e) {
				PopUp3.Display();
				return false;	
			}
		}		
	},

	Close: function(){
		document.getElementById('popup3').style.display = 'none';
		document.getElementById('container').removeChild(document.getElementById('overlay'));		
	},
	
	Display: function(){
		document.getElementById('container').insertBefore(document.getElementById('popup3'),document.getElementById('container').firstChild);
		document.getElementById('popup3').style.display = 'block';
		var overlay = document.createElement('DIV');
		overlay.id = 'overlay';
		document.getElementById('container').insertBefore(overlay,document.getElementById('container').firstChild);	
			
		document.getElementById('popup-close3').onclick = function (e) {
			PopUp3.Close();
			return false;
		}					
	}
}



//Script for the extra link popup  - encadres.
var PopUp4 = {
	Initialize: function(){
		if(document.getElementById('popup-parent4')){
			document.getElementById('popup-parent4').onclick = function (e) {
				PopUp4.Display();
				return false;	
			}
		}		
	},

	Close: function(){
		document.getElementById('popup4').style.display = 'none';
		document.getElementById('container').removeChild(document.getElementById('overlay'));		
	},
	
	Display: function(){
		document.getElementById('container').insertBefore(document.getElementById('popup4'),document.getElementById('container').firstChild);
		document.getElementById('popup4').style.display = 'block';
		var overlay = document.createElement('DIV');
		overlay.id = 'overlay';
		document.getElementById('container').insertBefore(overlay,document.getElementById('container').firstChild);	
			
		document.getElementById('popup-close4').onclick = function (e) {
			PopUp4.Close();
			return false;
		}					
	}
}

//Script that generates the 'save as homepage' link (works only for IE)
var SaveAsHomePage = {
	Initialize: function(){
		if(document.all){
			var spans = document.getElementById('panel_info').childNodes;
			for(var a = 0; a < spans.length; a++){
				if(spans[a].className == 'panel_info_home_script'){
					var homepage = spans[a];
					break;
				}
			}	
			
			homepage.style.display = 'inline';	
			homepage.onclick = function(e){
				this.style.behavior='url(#default#homepage)'; 
				this.setHomePage('http://www.financeetinvestissement.com');
			}	
		}
	}
}
//Initialize the functions
addLoadEvent(Menu.Initialize);
addLoadEvent(Tabs.Initialize);
addLoadEvent(DateSelector.Initialize);
addLoadEvent(PopUp.Initialize);
addLoadEvent(PopUp2.Initialize);
addLoadEvent(PopUp3.Initialize);
addLoadEvent(PopUp4.Initialize);
addLoadEvent(SaveAsHomePage.Initialize);
