// <![CDATA[

var NewsTicker = Class.create({
	initialize: function(){
		if(!($("bandeauDefilant") && $("bandeauContent"))) return;
		this.container = $("bandeauDefilant").makePositioned();
		this.cWidth = this.container.getWidth();

		this.pane = $("bandeauContent").makePositioned();
		var news = this.pane.childElements();
		var nb = news.length;
		
		if(nb<=0)return;

		this.length = nb * (this.cWidth-180);
		this.pos = -Math.round(Math.random() * nb)*(this.cWidth-200);

		this.pane.style.width = this.length + "px";
		this.pane.style.left = this.pos + "px";
		this.pane.show();

		this.container.observe("mouseover", function(){ this.paused = true; }.bind(this));
		this.container.observe("mouseout", function(){ this.paused = false; }.bind(this));

		this.timer = setInterval(this.scrollNews.bind(this), 27);
	},
	
	scrollNews: function(){
		if(!this.paused){
			if(this.pos>=-this.length)
			{
				this.pos -= 1;
			}
			else
			{
				this.pos = this.cWidth;
			}
			
			this.pane.style.left = this.pos + "px";
		}
	}
});

var Menu = Class.create(
{
	initialize: function()
	{
		var menuContainer = $("menu");
		var menuItems = $A($$("td#gauche ul#menu li h2"));

		this.timer = null;
		this.maxHeight = 120;
		this.menu = $A([]);
		
		menuItems.each(function(m, i)
		{
			$(m.parentNode).observe("mouseover", this.toggleSubmenu.bindAsEventListener(this, i), true);

			sm = m.next();

			this.menu.push({menuItem: m, submenuItem: sm});
		}.bind(this));

		menuContainer.observe("mouseout", function(){
			this.timer = setTimeout(this.setActiveMenu.bind(this), 0.5 * 1000);
		}.bind(this));

		this.setActiveMenu();
	},
	
	toggleSubmenu: function(event, i)
	{
		clearTimeout(this.timer);

		this.menu.each(function(m)
		{
			m.submenuItem.hide();
		});
		this.menu[i].submenuItem.setStyle({height: this.maxHeight + "px"});
		this.menu[i].submenuItem.show();
	},

	setActiveMenu: function()
	{
		var url = document.location.href;
		var s = url.indexOf('pub=');

		this.menu.each(function(m)
		{
			m.submenuItem.hide();
		});

		if(s>-1)
		{
			var end = url.indexOf('&', s);
			if(end == -1)
			{
				end = url.length;
			}
			var pagename = url.slice(s+4, end);

			switch(pagename)
			{
				case "actualites":
				case "actualite":
				case "tendances":
				case "calendrier":
				case "societes":
				case "marches":
					this.menu[0].submenuItem.show();
				break;

				case "indice":
				case "az":
				case "palmares":
					this.menu[1].submenuItem.show();
				break;

				case "conseil":
					this.menu[2].submenuItem.show();
				break;

				case "analyse":
					this.menu[3].submenuItem.show();
				break;

				default:
				break;
			}
		}
	}
});

var ActuWidget = Class.create(
{
	initialize: function()
	{
		this.locked = false;
		this.timer = null;
		this.nb = 0;
		this.total = 0;
		this.pas = 348; //3*this.news[0].getWidth(); // 348;
		this.el = $("actuItems");

		if(!this.el)
		{
			return;
		}
		
		this.news = this.el.childElements();
		this.total = this.news.length/3;

		if(this.total==0)
		{
			return;
		}
		else if(this.total>10)
		{
			this.total = 10;
		}

		this.btn_container = $("filActuBtns");
		this.btn_container.update("");
		
		this.buttons = $A([]);

		for(var i=0;i<this.total;i++)
		{
			var btn = new Element('A', {href: "#", title: ""});
			var li = new Element('LI');

			li.insert(btn);
			this.btn_container.insert(li);
			this.buttons.push(btn);
		}
		
		this.buttons[0].addClassName("selected");
		
		for(var i=0; i<this.total; i++)
		{
			this.buttons[i].observe("click", this.slideToNews.bindAsEventListener(this, i));
		}
		
		$("prevActu").observe("click", this.slideToNews.bindAsEventListener(this, -1));
		$("nextActu").observe("click", this.slideToNews.bindAsEventListener(this, -2));

		if(this.total>1)
		{
			this.timer = window.setInterval(this.slideNews.bind(this), 3200);
		}

		this.el.observe("click", this.stop.bindAsEventListener(this));

		Event.observe(window, "unload", this.stop.bindAsEventListener(this));
	},
	
	slideNews: function()
	{
		this.nb++;
		if(this.nb>=this.total)
		{
			new Effect.MoveBy(this.el, 0, (this.nb-1)*this.pas,
			{
				duration: 0.9,
				transition: Effect.Transitions.sinoidal,
				beforeStart: function(){ this.locked = true; }.bind(this),
				afterFinish: function(){ this.locked = false;this.el.setStyle({left:"0px"}); }.bind(this)
			});

			this.nb = 0;
			this.toggleButton(this.nb);

			this.stop();
		}
		else
		{
			new Effect.MoveBy(this.el, 0, -this.pas,
			{
				duration: 0.6,
				transition: Effect.Transitions.sinoidal,
				beforeStart: function(){ this.locked = true; }.bind(this),
				afterFinish: function(){ this.locked = false; }.bind(this)
			});
			this.toggleButton(this.nb);
		}
	},

	slideToNews: function(event, nb)
	{
		event.stop();
		var element = Event.element(event);
		if('A' == element.tagName)
		{
			element.blur();
		}

		if(!this.locked)
		{
			this.stop();
	
			if(nb==-1){ nb = this.nb-1; }
			if(nb==-2){ nb = this.nb+1; }
	
			if(nb>=0 && nb<this.total)
			{
				d = this.nb-nb;
				this.nb = nb;
	
				new Effect.MoveBy(this.el, 0, this.pas*d, 
				{
					duration: 0.6,
					transition: Effect.Transitions.sinoidal,
					beforeStart: function(){ this.locked = true; }.bind(this),
					afterFinish: function(){ this.locked = false; }.bind(this)
				});
				this.toggleButton(nb);
			}
		}
	},
	
	toggleButton: function(i)
	{
		this.buttons.each(function(b)
		{
			b.removeClassName("selected");
		});
		this.buttons[i].addClassName("selected");
	},
	
	stop: function()
	{
		window.clearInterval(this.timer);
	}
});

var ActuListWidget = Class.create({
	initialize: function(){
		if(!$("listItems")) return;

		this.el = $("listItems").makePositioned();
		this.actus = $A([]);
		this.pas  = 14;
		this.category = "societes";

		this.timeSlider = new Control.Slider('handle1', 'track1', {
			range:$R(0, this.el.childElements().length),
			onSlide: function(v){ this.scrollVertical(v);  }.bind(this),
			onChange: function(v){ this.scrollVertical(v); }.bind(this)
		});

		this.loadActus();
		this.selectCategory(this.category);

		$$("div#listTabs ul li a").each(function(t){
			t.observe("click", function(event){ event.stop(), this.selectCategory(t.id); t.blur(); }.bind(this));
		}.bind(this));

		$("scrollUp").observe("click", function(event){
			event.stop();
			this.timeSlider.setValue(this.timeSlider.value+29);
		}.bindAsEventListener(this));

		$("scrollDown").observe("click", function(event){
			event.stop();
			this.timeSlider.setValue(this.timeSlider.value-29);
		}.bindAsEventListener(this));
	},

	selectCategory: function(category){
		var visible = [];

		$(this.category).removeClassName("selected");
		$(category).addClassName("selected");
		this.category = category;

		this.el.childElements().each(function(el, i, c){
			if(el.hasClassName(category)){
				el.show();
				visible.push(i);
			}
			else{
				el.hide();
			}
		}.bind(this));
		
		if(visible.length>0){
			$('timeStart').update(this.actus[visible[visible.length-1]].date);
			$('timeEnd').update(this.actus[visible[0]].date);
		}
		else{
			$('timeStart').update("&nbsp;");
			$('timeEnd').update("&nbsp;");
		}

		if(visible.length<29){
			this.timeSlider.setDisabled();
			$('handle1').hide();
			$('scrollUp').hide();
			$('scrollDown').hide();
			this.el.setStyle({"padding": "10px 2px"});
		}
		else{
			this.timeSlider.setValue(this.el.childElements().length);

			this.timeSlider.setEnabled();
			$('handle1').show();
			$('scrollUp').show();
			$('scrollDown').show();
			this.el.setStyle({"padding": "0 2px"});
		}
	},

	loadActus: function()
	{
		var width = this.el.getWidth();
		var data = this.el.childElements();

		data.each(function(a, i){
			var el = new Element('LI');
			var data = {"date": a.getElementsByTagName("span")[0].innerHTML.stripTags(),
					   "title": a.getElementsByTagName("h3")[0].innerHTML.stripTags(),
					   "category": a.getElementsByTagName("h3")[0].className,
					   "content": a.getElementsByTagName("p")[0].innerHTML.stripTags(),
					   "link": a.getElementsByTagName("a")[0].href};
			this.actus.push(data);
			a.remove();
			el.addClassName(data.category);
			el.insert('<a href="' + data.link + '" title="' + (data.title + ' ' + data.content) + '"><strong>' + data.date + '&nbsp;' + data.title.truncate(60) + '</strong>' + data.content.truncate(60) + '</a>');

			this.el.insert(el);
			this.el.show();
		}.bind(this));
	},
	scrollVertical: function(value){
		this.el.style.top = Math.round((value * (this.el.getHeight()/this.timeSlider.maximum)) - this.el.getHeight() + 326 * (1-(value+.5)/this.timeSlider.maximum)) + "px";
	},

	scrollHorizontal: function(value, element, slider){
		element.scrollLeft = Math.round(value/slider.maximum*(element.scrollWidth-element.offsetWidth));
	}
});

document.observe("dom:loaded", function()
{
	new Menu();
	new NewsTicker();
	new ActuWidget();
	new ActuListWidget();
});

/*
window.onload = function(){
	new Menu();
	new NewsTicker();
	new ActuWidget();
	new ActuListWidget();
}
*/

// ]]>