var Aheuh={Version:"1.0",intialize:function(){}};Aheuh.intialize();Aheuh.Scroller=Class.create({_baseHtmlClass:{mask:"scrollerMask",content:"scrollerContent"},_buttons:{Left:-1,Right:1,Top:-1,Bottom:1},_axis:{Left:"x",Right:"x",Top:"y",Bottom:"y"},initialize:function(c){if($(c.root)){for(var b in this._baseHtmlClass){var a=$$("#"+c.root+" ."+this._baseHtmlClass[b]);if(a.length==0){alert("Html Class required : "+this._baseHtmlClass[b]);return}else{this["_"+b]=a[0]}}this._root=c.root;this.speed=c.speed||2;this.speedInterval=c.speedInterval||2;this._wheelSpeed=c.wheelSpeed||10;this._interval=null;this._cursors={scrollx:false,scrolly:false};this._tools={};this._wheelFactor=0;if($$("#"+c.root+" .scrollerTools")){for(var b in this._buttons){$$("#"+c.root+" .scroller"+b).each(this._setButtonsEvents.bind(this,this._axis[b],this._buttons[b]))}this.reload();Aheuh.Axis.each(this._setBg.bind(this))}}else{alert("Root Scroller Html ID required")}},_setButtonsEvents:function(b,a,c){Event.observe(c,"mouseover",this._setInterval.bind(this,b,a));Event.observe(c,"mouseout",this._stop.bind(this))},_scrolling:function(b){var c=$$("#"+this._root+" .scrollerTools"+b.key.toUpperCase());var a="";if(this._mask[b.scrollscale]>this._mask[b.offsetscale]){this._cursors["scroll"+b.key]=true;a="visible";this._mask[b.scrollpos]=0;if(b.key=="y"&&!this._cursors["element"+b.key]){Event.observe(this._mask,document.all?"mousewheel":"DOMMouseScroll",this._onMouseWheel.bindAsEventListener(this))}}else{this._cursors["scroll"+b.key]=false;a="hidden"}if(c.length>0){this._tools["element"+b.key]=c[0];this._viewScrollTools(a,b.key)}},_setCursor:function(a){if(this._cursors["scroll"+a.key]){var b=$$("#"+this._root+" .scrollerCursor"+Aheuh.Axis.pos[a.key]);if(b.length>0){if(!this._cursors["element"+a.key]){this._cursors["start"+a.key]=b[0][a.offsetpos];this._cursors["size"+a.key]=b[0][a.offsetscale];this._cursors["element"+a.key]=b[0];this._cursors["params"+a.key]={target:b[0],xmin:0,xmax:0,ymin:0,ymax:0,onMoveFunction:this._onDrag.bind(this,a)};this._cursors["params"+a.key][a.min]=b[0][a.offsetpos];this._cursors["params"+a.key][a.max]=b[0][a.offsetpos]+b[0][a.offsetscale];this._cursors["drag"+a.key]=new Aheuh.Drag(this._cursors["params"+a.key])}this._cursors["fact"+a.key]=this._getFactor(a);if(a.key=="y"){this._setWheelFactor()}b[0].style[a.scale]=this._cursors["size"+a.key]*this._cursors["fact"+a.key]+"px";this._cursors["drag"+a.key].reload(this._cursors["params"+a.key])}}},_getFactor:function(a){return(this._mask[a.offsetscale]-(this._mask[a.offsetscale]-this._cursors["size"+a.key]))/(this._mask[a.scrollscale]-(this._mask[a.offsetscale]-this._cursors["size"+a.key]))},_setWheelFactor:function(){this._wheelFactor=this._wheelSpeed-this._cursors.facty},_setInterval:function(b,a){if(!this._interval){this._interval=new PeriodicalExecuter(this._scroll.bind(this,b,a),this.speedInterval/1000)}else{this._interval.callback=this._scroll.bind(this,b,a);this._interval.registerCallback()}},_scroll:function(b,a){this._mask[Aheuh.Axis[b].scrollpos]+=this.speed*a;this._moveCursor(b)},_moveCursor:function(a){if(this._cursors["element"+a]){this._cursors["element"+a].style[Aheuh.Axis[a].pos]=this._cursors["start"+a]+this._mask[Aheuh.Axis[a].scrollpos]*this._cursors["fact"+a]+"px"}},_onMouseWheel:function(a){a.stop();this._scroll("y",Event.Wheel(a)*-1*this._wheelFactor)},_stop:function(){this._interval.stop()},_setBg:function(a){if(this._cursors["scroll"+a.key]){var b=$$("#"+this._root+" .scrollerCursorBg"+Aheuh.Axis.pos[a.key]);if(b.length>0){Event.observe(b[0],"click",this._onBgClick.bindAsEventListener(this,a))}}},_onDrag:function(a){this._mask[a.scrollpos]=(this._cursors["element"+a.key][a.offsetpos]-this._cursors["start"+a.key])/this._cursors["fact"+a.key]},_onBgClick:function(c,b){var a=(Event[b.pointer](c)>this._cursors["element"+b.key].cumulativeOffset()[Aheuh.Axis.id[b.key]]+this._cursors["element"+b.key][b.offsetscale])?1:-1;this._scroll(b.key,this._cursors["element"+b.key][b.offsetscale]*a)},moveTo:function(a){Aheuh.Axis.each(function(b){this._mask[b.scrollpos]=$(a)[b.offsetpos];this._moveCursor(b.key)}.bind(this))},_viewScrollTools:function(a,b){this._tools["element"+b].setStyle({visibility:a})},forceScrollTools:function(a,b){if(this._cursors["scroll"+b]){this._viewScrollTools(a,b)}},reload:function(){Aheuh.Axis.each(this._scrolling.bind(this));Aheuh.Axis.each(this._setCursor.bind(this))}});Aheuh.SelectHtml=Class.create({initialize:function(a){this._params=a;this._onChangeFunction=a.onChangeFunction;this.isOpen=this._closeOnClick=this._keyActive=this.changeFunctionActive=false;this._styles=new Array();this._datas=new Array();this.keyIndex={};this._select=$(a.selectHtml);this._select.setStyle({visibility:"hidden"});this._index=this.keyCntCheck=0},init:function(){this._writeHtml=$(this._params.selectWrite);this._zIndex=this._writeHtml.getStyle("zIndex");this._setStyles();this._style=this._styles[this._params.style||0];this._parseDatas(this._select);this._write();this._main=$$("#"+this._params.selectWrite+" .selectMain")[0];this._mask=$$("#"+this._params.selectWrite+" .scrollerMask")[0];this._content=$$("#"+this._params.selectWrite+" .selectOptions")[0];this._scroller=new Aheuh.Scroller({root:this._params.selectWrite,speed:5,speedInterval:2});this._scroller.forceScrollTools("hidden","y");this._setEvents();this.setSelectedIndex(this._index)},_setStyles:function(){var b=Aheuh.SelectHtmlConfig.styles;for(var a in b){this._styles.push({name:a,html:b[a]})}},_parseDatas:function(b){for(var a=0;a<b.length;a++){if(b[a].selected){this._index=a}this._add({data:b[a].value,label:b[a].innerHTML})}},_write:function(){this._writeHtml.innerHTML=this._style.html;var b=$$("#"+this._params.selectWrite+" .selectOptions")[0];var c="<ul>";for(var d=0;d<this._datas.length;d++){if((this._select.id=="episodes"&&d!="0")||(this._select.id=="emissions"&&d!="0")||(this._select.id=="filter"&&d!="0")||(this._select.id=="AnimateurInfo"&&d!="0")||(this._select.id=="guideTV"&&d!="0")||(this._select.id=="recherche"&&d!="0")||(this._select.id=="contrat"&&d!="0")){if(this._datas[d].data!="sélectionnez"){var a=this._datas[d].data}else{var a="#0"}}else{var a="#0"}c+='<li id="'+d+""+this._select.id+'"><a href="'+a+'">'+this._datas[d].label+"</a></li>"}c+="</ul>";b.innerHTML=c},_add:function(a){this._addKeyIndex(a.label.charAt(0).toLowerCase(),this._datas.length);this._datas[this._datas.length]=a},_addKeyIndex:function(b,a){if(!this.keyIndex[b]){this.keyIndex[b]={index:[]}}this.keyIndex[b].index[this.keyIndex[b].index.length]=a},_setEvents:function(){var b=this._content.getElementsByTagName("a");for(var a=0;a<b.length;a++){b[a].className="s"+a;Event.observe(b[a],"click",this._onItemClickEvents.bindAsEventListener(this));Event.observe(b[a],"mouseover",this._onItemOverEvents.bindAsEventListener(this));Event.observe(b[a],"mouseout",this._onItemOutEvents.bindAsEventListener(this))}Event.observe(this._main,"click",this._onMainClick.bindAsEventListener(this));Event.observe(this._main,"click",Event.SelectionClear);Event.observe(this._main,"mouseover",this._onMainOver.bindAsEventListener(this));Event.observe(this._main,"mouseout",this._onMainOut.bindAsEventListener(this));Event.observe(this._main,this._scroller._mouseWheelEvent,this._onMainMouseWheel.bindAsEventListener(this));Event.observe(this._writeHtml,"mouseover",this._onWriteMouseOver.bindAsEventListener(this));Event.observe(this._writeHtml,"mouseout",this._onWriteMouseOut.bindAsEventListener(this));Event.observe(document,"mouseup",this._checkToClose.bindAsEventListener(this));Event.observe(document,"keydown",this._setSelectedKeyboardIndex.bindAsEventListener(this))},_onItemClickEvents:function(a){this._content.style.visibility=this._mask.style.visibility="hidden";this.isOpen=this._closeOnClick=this._keyActive=false;this.setSelectedIndex(parseInt(Event.element(a).parentNode.id));this._scroller.reload();this._scroller.forceScrollTools("hidden","y")},_onItemOverEvents:function(a){if(this.itemMouseOver!=""){Element.removeClassName($(this.keyItemSelected),"on")}this.itemMouseOver=Event.element(a)},_onItemOutEvents:function(){this.itemMouseOver=""},_onMainClick:function(){this._scroller.reload();this._scroller.moveTo(this._index+this._select.id);var a=(this.isOpen)?"hidden":"visible";this._showHideDatas(a)},_onMainOver:function(){this._keyActive=true},_onMainOut:function(){if(!this.isOpen){this._keyActive=false}},_onMainMouseWheel:function(a){(Event.Wheel(a)==-1)?this.setSelectedIndex(this._index+1):this.setSelectedIndex(this._index-1)},_onWriteMouseOver:function(){if(this.isOpen){this._keyActive=true;this._closeOnClick=false}},_onWriteMouseOut:function(){if(this.isOpen){this._keyActive=false;this._closeOnClick=true}},_showHideDatas:function(a){this._content.style.visibility=this._mask.style.visibility=a;this._scroller.forceScrollTools(a,"y");this.isOpen=this._keyActive=(a=="hidden")?false:true;var b=(this.isOpen)?Number(this._zIndex)+1:this._zIndex;this._writeHtml.setStyle({zIndex:b});this.itemMouseOver=""},getSelectedData:function(){return this._datas[this._index].data},getSelectedLabel:function(){return this._datas[this._index].label},setSelectedIndex:function(a){if(a>=0&&a<this._datas.length){Element.removeClassName(this._content.getElementsByTagName("a")[this._index],"on");this._index=a;this._main.innerHTML=this.getSelectedLabel();Element.addClassName(this._content.getElementsByTagName("a")[a],"on");this._select.selectedIndex=a;if(this._onChangeFunction&&this.changeFunctionActive){this._onChangeFunction()}if(!this.changeFunctionActive){this.changeFunctionActive=true}}},setSelectedData:function(b){this.changeFunctionActive=false;for(var a=0;a<this._datas.length;a++){if(this._datas[a].data==b){this.setSelectedIndex(a)}}},_checkToClose:function(){if(this._closeOnClick&&this.isOpen){this._showHideDatas("hidden")}},_setSelectedKeyboardIndex:function(c){if(this._keyActive){var b=(window.event)?c.keyCode:c.which;var a=String.fromCharCode(b).toLowerCase();if(b==13&&this.isOpen){if(this.itemMouseOver!=""){this.setSelectedIndex(parseInt(this.itemMouseOver.parentNode.id))}this._showHideDatas("hidden")}if(this.keyIndex[a]){this.keyCntCheck=(this.currentKey==a)?(this.keyCntCheck<this.keyIndex[a].index.length-1)?this.keyCntCheck+1:0:0;if(this.keyItemSelected!=""){Element.removeClassName($(this.keyItemSelected),"on")}Element.removeClassName(this._content.getElementsByTagName("div")[this._index],"on");this.keyItemSelected=this.keyIndex[a].index[this.keyCntCheck]+this._select.id;Element.addClassName($(this.keyItemSelected),"on");this._scroller.moveTo(this.keyItemSelected);this.currentKey=a;this.itemMouseOver=$(this.keyItemSelected);this.setSelectedIndex(this.keyIndex[a].index[this.keyCntCheck])}if(b==38&&this._index>0){this.setSelectedIndex(this._index-1);this._scroller.moveToAnchor(this._content.getElementsByTagName("li")[this._index].id)}else{if(b==40&&this._index<this._datas.length){this.setSelectedIndex(this._index+1);this._scroller.moveToAnchor(this._content.getElementsByTagName("li")[this._index].id)}}}}});Aheuh.SelectHtmlConfig={styles:{style1:'<div id="collectionSelect" class="selectObj"><div class="main"><div class="selectMain">&nbsp;</div></div><div class="dataScroll scrollerMask"><div class="scrollerContent selectOptions"></div></div><div class="scrollerTools scrollerToolsPush"><div class="scrollerToolsY"><div><a href="#0" class="scrollerTop">&nbsp;</a></div><div><a href="#0" class="scrollerBottom">&nbsp;</a></div><div class="scrollerCursorTop"></div><div class="scrollerCursorBgTop"></div></div></div></div>',style2:'<div id="collectionSelect" class="selectObj"><div class="main"><div class="selectMain">&nbsp;</div></div><div class="dataScroll scrollerMask"><div class="scrollerContent selectOptions"></div></div><div class="scrollerTools scrollerToolsPush"><div class="scrollerToolsY"><a href="#0" class="scrollerTop"></a><a href="#0" class="scrollerBottom"></a><div class="scrollerCursorTop"></div><div class="scrollerCursorBgTop"></div></div></div></div>'}};Aheuh.PopHtml=Class.create({initialize:function(a){this._name=a.name;this._target=a.target;this._contentURL=a.contentURL;this._methodURL=a.methodURL;this._ajaxParams=a.ajaxParams;this._onEvent=a.onEvent;this._targetHtmlStatic=a.targetHtmlStatic;this._content=this._bg=null;this._doc=(!this.Safari)?document.documentElement:document.body;this.IE6=(navigator.appVersion.indexOf("MSIE 6")!=-1)?true:false;this._intervalFixFirefox=null;Event.observe(window,"resize",this._onWindowResize.bind(this));Event.observe(window,"scroll",this._onWindowResize.bind(this));this._writeBg();this._writeContent()},_onWindowResize:function(){this._startSetContentPosition(this._content);Aheuh.Axis.each(this._setBgSize.bind(this,this._bg))},_getPageSize:function(a){return(this._doc[a.scrollscale]<this._getWindowSize(a))?this._getWindowSize(a):this._doc[a.scrollscale]},_getWindowSize:function(a){return document.documentElement[a.clientscale]},_getCenter:function(b,a){return this._doc[a.scrollpos]+(this._getWindowSize(a)/2)-(b[a.offsetscale]/2)},_writeContent:function(){if(this._contentURL){var a=new Ajax.Request(this._contentURL,{method:this._methodURL,postBody:$H(this._ajaxParams).toQueryString(),onComplete:function(b){this._content.innerHTML=b.responseText;this._setInterval()}.bind(this)})}else{this._content.appendChild(this._targetHtmlStatic);Element.setStyle(this._targetHtmlStatic,{display:"block"});this._setInterval()}},_setInterval:function(){if(this._intervalFixFirefox==null){this._intervalFixFirefox=new PeriodicalExecuter(this._setContent.bind(this),0)}else{this._intervalFixFirefox.callback=this._setContent.bind(this);this._intervalFixFirefox.registerCallback()}},_writeBg:function(){var a='<div id="PopHtmlBg" style="z-index:1000;position:absolute;top:0;left:0;background:#000;filter:alpha(opacity=50);-moz-opacity:0.50;opacity:0.50;"></div><div id="PopHtmlContent" style="z-index:1001;position:absolute;top:0;left:0;"></div>';if(this.IE6){a+='<iframe id="PopHtmlIframeIE6Hack" style="z-index:999;position:absolute;top:0;left:0;filter:alpha(opacity=0);"></iframe>'}this._target.innerHTML=a;this._target.setStyle({display:"block"});this._bg=$("PopHtmlBg");this._content=$("PopHtmlContent");this._content.setStyle({visibility:"hidden"});Aheuh.Axis.each(this._setBgSize.bind(this,this._bg));if(this.IE6){this._IframeIE6Hack=$("PopHtmlIframeIE6Hack");Aheuh.Axis.each(this._setBgSize.bind(this,this._IframeIE6Hack))}},_setBgSize:function(b,a){b.style[a.scale]=this._getPageSize(a)+"px"},_setContent:function(){this._intervalFixFirefox.stop();if(this._onEvent){this._onEvent("onReady",this._name)}this._startSetContentPosition(this._content);this._content.focus()},_startSetContentPosition:function(a){Aheuh.Axis.each(this._setContentPosition.bind(this,a));a.style.visibility="visible"},_setContentPosition:function(b,a){b.style[a.pos]=this._getCenter(b,a)+"px"},close:function(){Element.setStyle(this._target,{display:"none"})}});Aheuh.Axis={initialize:function(){this.each(function(a,b){this.base[a]=this.base[a]||this.keys(a)}.bind(this))},base:{x:null,y:null},pos:{x:"Left",y:"Top"},scale:{x:"Width",y:"Height"},id:{x:0,y:1},keys:function(a){this[a]=this[a]||{key:a,min:a+"min",max:a+"max",axis:a+"axis",limit:a+"limit",factor:a+"factor",pos:this.pos[a].toLowerCase(),scale:this.scale[a].toLowerCase(),scrollpos:"scroll"+this.pos[a],scrollscale:"scroll"+this.scale[a],offsetpos:"offset"+this.pos[a],offsetscale:"offset"+this.scale[a],clientscale:"client"+this.scale[a],mouse:a+"mouse",pointer:"pointer"+a.toUpperCase()};return this[a]},from:function(a){return{x:a[0],y:a[1]}},each:function(c,a){for(var b in this.base){a=c((this[b]||b),a)}return a}};Aheuh.Axis.initialize();Aheuh.Drag=Class.create({initialize:function(a){this._target=a.target;this._mouseOldPos={};this._setLimit(a.xmin,a.xmax,a.ymin,a.ymax);this.onMoveFunction=a.onMoveFunction;this.draggable=false;this._targetDown=this.setDraggable.bind(this,true);this._docMouseUp=this.setDraggable.bind(this,false);this._docMouseMove=this._setMove.bindAsEventListener(this);Event.observe(this._target,"mousedown",this._targetDown);Event.observe(document,"mouseup",this._docMouseUp);Event.observe(document,"mousemove",this._docMouseMove)},_setLimit:function(xmin,xmax,ymin,ymax){Aheuh.Axis.each(function(k){this[k.min]=eval(k.min);this[k.max]=eval(k.max);this["target"+[k.max]]=this[k.max]-this._target[k.offsetscale];this._mouseOldPos[k.mouse]=null}.bind(this))},setDraggable:function(a){this.draggable=a;Aheuh.Axis.each(function(b){this._mouseOldPos[b.mouse]=null}.bind(this))},_setMove:function(a){Aheuh.Axis.each(this._move.bind(this,a))},_move:function(c,a){if(this.draggable){var b=Event["pointer"+a.key.toUpperCase()](c);if(this._mouseOldPos[a.mouse]){if(this[a.max]>this[a.min]){var d=this._target[a.offsetpos]-(this._mouseOldPos[a.mouse]-b);if(d<this[a.min]){d=this[a.min]}else{if(d+this._target[a.offsetscale]>this[a.max]){d=this["target"+[a.max]]}}this._target.style[a.pos]=d+"px";if(this.onMoveFunction){this.onMoveFunction()}}}Event.SelectionClear();this._mouseOldPos[a.mouse]=b}c.stop()},reload:function(a){this._setLimit(a.xmin,a.xmax,a.ymin,a.ymax)},kill:function(){Event.stopObserving(this._target,"mousedown",this._targetDown);Event.stopObserving(document,"mouseup",this._docMouseUp);Event.stopObserving(document,"mousemove",this._docMouseMove)}});Object.extend(Event,{Wheel:function(a){var b=0;if(!a){a=window.event}if(a.wheelDelta){b=a.wheelDelta/120;if(window.opera){b=-b}}else{if(a.detail){b=-a.detail/3}}return Math.round(b)}});Object.extend(Event,{SelectionClear:function(){if(document.execCommand&&navigator.userAgent.indexOf("Firefox")==-1){document.execCommand("Unselect")}else{if(window.getSelection&&window.getSelection().removeAllRanges){window.getSelection().removeAllRanges();window.getSelection().addRange(document.createRange())}}}});Object.extend(Array,{sortOnNumber:function(b){return b.sort(function(c,a){return(c-a)})}});
Aheuh.SelectHtmlRoll = Class.create(Aheuh.SelectHtml, {
	
	initialize: function ($super,o) {
		$super(o);
		this._selectWrite = $(this._params.selectWrite);
	},
	
	init: function ($super) {		
		$super();;
	},
	
	_setEvents: function () {
		
		this._scrollerTools = $$('#'+this._selectWrite.id+' .scrollerTools')[0];
		
		var tmp = this._content.getElementsByTagName("a");

		for (var i=0;i<tmp.length;i++) {
			tmp[i].className = "s"+i;
			Event.observe(tmp[i], 'click', this._onItemClickEvents.bindAsEventListener(this));
			Event.observe(tmp[i], "mouseover", this._onItemOverEvents.bindAsEventListener(this));
			Event.observe(tmp[i], "mouseout", this._onItemOutEvents.bindAsEventListener(this));
		}
		
		Event.observe(this._main, "mouseover", this._show.bindAsEventListener(this));
		Event.observe(this._content, "mouseover", this._show.bindAsEventListener(this));		
		Event.observe(this._scrollerTools, "mouseover", this._show.bindAsEventListener(this));
		
		Event.observe(this._main, "mouseout", this._setIntervalHide.bindAsEventListener(this));
		Event.observe(this._content, "mouseout", this._setIntervalHide.bindAsEventListener(this));		
		Event.observe(this._scrollerTools, "mouseout", this._setIntervalHide.bindAsEventListener(this));
		
		Event.observe(this._main, "mouseover", this._onMainOver.bindAsEventListener(this));
		Event.observe(this._main, "mouseout", this._onMainOut.bindAsEventListener(this));
		Event.observe(this._main, this._scroller._mouseWheelEvent, this._onMainMouseWheel.bindAsEventListener(this));
		
		Event.observe(this._writeHtml, "mouseover", this._onWriteMouseOver.bindAsEventListener(this));
		Event.observe(this._writeHtml, "mouseout", this._onWriteMouseOut.bindAsEventListener(this));
		
		Event.observe(document, "keydown", this._setSelectedKeyboardIndex.bindAsEventListener(this));
		
	},
	
	_show: function (e) {
		if (this._intervalHide) {
			this._intervalHide.stop();
		}
		if(Element.getStyle(this._content,'visibility')=='hidden') {
			this._scroller.reload();
			this._scroller.moveTo(this._index+this._select.id);
		}		
		this._showHideDatas('visible');
	},
	
	_setIntervalHide: function (e) {
		if (!this._intervalHide) {
			this._intervalHide = new PeriodicalExecuter(this._showHideDatas.bind(this,'hidden'),0.1);
		}
		else {
			this._intervalHide.callback = this._showHideDatas.bind(this,'hidden');
			this._intervalHide.registerCallback();
		}
	},
	
	_showHideDatas: function ($super,visibility) {
		if (this._intervalHide) {
			this._intervalHide.stop();
		}
		$super(visibility);
	}
	
});