// JavaScript Document
Object.extend(Element, {
   	getWidth: function(element) {
    element = $(element);
    return element.offsetWidth;
	},
    getX: function(element) {
    element = $(element);
    return (document.all)?element.style.pixelLeft:parseInt(element.style.left) 
	},
 	getY: function(element) {
    element = $(element);
    return (document.all)?element.style.pixelTop:parseInt(element.style.top) 
	},
	setX: function(element) {
    element = $(element);
    return (document.all)?element.style.pixelLeft:parseInt(element.style.left) 
	},
 	setY: function(element) {
    element = $(element);
    return (document.all)?element.style.pixelTop:parseInt(element.style.top) 
	},

  	htZoneAffichage: function() {
		var windowHeight=0;
		if (typeof(window.innerHeight)=='number') {
			windowHeight=window.innerHeight;
		}
		else {
		 if (document.documentElement&&
		   document.documentElement.clientHeight) {
			 windowHeight = document.documentElement.clientHeight;
		}
		else {
		 if (document.body&&document.body.clientHeight) {
			 windowHeight=document.body.clientHeight;
		  }
		}
    }
    return windowHeight;
	},
	getOffSetPositionTop: function(element) {
		element = $(element);
		var position = 0;
		while (element && element.tagName != 'body')
		{
			position += element.offsetTop;
			element = element.offsetParent;
		}
		return position;
	},
	getOffSetPositionLeft: function(element,id_cible) {
		element = $(element);
		var position = 0;
		while (element && (element.id != id_cible))
		{
			position += element.offsetLeft;
			element = element.offsetParent;
		}
		return position;
	},
	getOffSetPositionLeftIFrame: function(element,id_cible,id_a_sauter) {
		element = $(element);
		var position = 0;
		var saut = false;
		while (element && (element.id != id_cible.id))
		{
			if(element.id == id_a_sauter)
			{
				var saut = true				
			}
			if(!saut)
			{
				position += element.offsetLeft;
			}
			element = element.offsetParent;
		}
		return position;
	},

	getScrollTop: function() {
		return document.documentElement.scrollTop || document.body.scrollTop;
	},
 	fixeHeight: function(element) {
		element = $(element);
		Element.setStyle(element,{height:Element.getHeight(element)+'px'});
	},
	fixeWidth: function(element) {
		element = $(element);
		Element.setStyle(element,{width:Element.getWidth(element)+'px'});
	},
 	fixeElement: function(element) {
   		element = $(element)
		Element.fixeHeight(element)
		Element.fixeWidth(element)
	},
	versPosition: function(element) {
		element = $(element);
		var x = 0,
		   y=Element.getOffSetPositionTop(element);
		window.scrollTo(x, y);
  	},
	coordXY : function(objet,conteneur)
	{
			var pos_obj = Position.cumulativeOffset($(objet));
			var pos_c = Position.cumulativeOffset($(conteneur));
		//alert(pos_obj+' '+pos_c)
		return  [pos_obj[0] - pos_c[0],pos_obj[1] - pos_c[1]]
	},
	pointXY : function(obj,pos)
	{
		var objet = $(obj)
		var h = Element.getHeight(objet)
		var v = Element.getWidth(objet)
		var l = null;
		var t = null;
		switch(pos)
		{
			case 1: l = 0; t = 0;
			break;
			case 2: l = v/2; t = 0;
			break;
			case 3: l = v; t = 0;
			break;
			case 4: l = 0; t = h/2;
			break;
			case 5: l = v/2; t = h/2;
			break;
			case 6: l = v; t = h/2;
			break;
			case 7: l = 0; t = h;
			break;
			case 8: l = v/2; t =h;
			break;
			case 9: l = v; t = h;
			break;
		}
		return  [l,t]
	}
});

// detection sur tout le document (et non body (original)); Ie5.5 : ne marche pas avec un parent
document.getElementsByClassName = function(className, parentElement) {
	var children = $(parentElement) ?  $(parentElement).getElementsByTagName('*') : document.all || document.getElementsByTagName('*');
	return $A(children).inject([], function(elements, child) {
    if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)")))
      elements.push(child);
    return elements;
  });
}

function mpx(element) {
	return parseInt(element.replace(/px/,""));
}

function ppx(element) {
	element = element.toString()
	return element.search(/px/)== -1 ? element+'px':element;
}
/* ------------------------ Img_Rollover ---------------------------------*/
Img_rollover = Class.create();
Img_rollover.prototype = {
	   initialize: function(img) {
			this.image = img;
			this.source = this.image.src;
			this.url = this.source.substring(0,this.source.lastIndexOf('.'));
			this.format = this.source.substring(this.source.lastIndexOf('.'),this.source.length);
			this.source_on = this.url+"_on"+this.format;
			//assigning our method to the event
			this.image.onmouseover = this.change_on.bindAsEventListener(this);
			this.image.onmouseout = this.change_off.bindAsEventListener(this);
			this.rollover_actif = true;
	   },
	   change_on: function(evt) {
		 if(this.rollover_actif) this.set_src_on();
	   },
	   change_off: function(evt) {
		 if(this.rollover_actif) this.set_src_off();
	   },
	   set_rollover_actif: function(bool) {
		 this.rollover_actif = bool;
	   },
	   set_src_off: function() {
		 this.image.src = this.source;
	   },
	   set_src_on: function() {
		 this.image.src = this.source_on;
	   }

	};
/* ------------------------ /Img_Rollover ---------------------------------*/
/* ------------------------ TimerExecuter ---------------------------------*/

var TimerExecuter = Class.create();
TimerExecuter.prototype = {
  initialize: function(callback, frequency) {
    this.callback = callback;
    this.frequency = frequency;
    this.currentlyExecuting = false;

    this.registerCallback();
  },

  registerCallback: function() {
    this.var_timer = setTimeout(this.onTimerEvent.bind(this), this.frequency * 1000);
  },
  
  arret: function() {
	clearTimeout(this.var_timer)
  },

  onTimerEvent: function() {
	this.callback();
  }
}
/* ------------------------ /TimerExecuter ---------------------------------*/
/*--------------------------------------------------------------------- toggle --------------------------------------------------------------------*/

var Toogle_anim = false

Toggle = Class.create();
Toggle.prototype = {
	   initialize: function(id_image,id_conteneur) {
			this.image = $(id_image);
			this.source = this.image.src;
			this.url = this.source.substring(0,this.source.lastIndexOf('/'));

			this.source_fermer = this.url+"/bt_fermer.gif";
			this.source_ouvrir = this.url+"/bt_ouvrir.gif";
			//alert(this.url)

			this.conteneur = $(id_conteneur);
			//this.anim = false;
			//Element.fixeElement(this.conteneur);
			if(!Element.hasClassName(this.conteneur,"ouvert"))
			{
				Element.setStyle(this.conteneur,{display:'none'});
			}
			this.etat_initial = Element.hasClassName(this.conteneur,"ouvert") ? true : false;// true ouvert, false ferme
			this.image.onclick = this.onclick.bindAsEventListener(this);
	   },
	  onclick: function(evt) {
		if(!Toogle_anim)
		 {
			 if(this.etat_initial)
			 {
				this.ferme()
				}
			 else
			 {
				 this.ouvre()
			}
		}
	   },
	   ouvre: function() {
		 this.image.src = this.source_fermer;
		if(browser.isMac)
		{
			Effect.BlindDown(this.conteneur,{duration:0.7, beforeStart:function() {Toogle_anim=true;}, afterFinish:function(){Toogle_anim=false;}});
		}
		else
		{
			new Rico.Effect.FadeTo(this.conteneur, 1.0, 800, 10);
			Effect.BlindDown(this.conteneur,{duration:0.7, beforeStart:function() {Toogle_anim=true;}, afterFinish:function(){Toogle_anim=false;}});
		}
		 this.etat_initial = true;
		  
	   },
	   ferme: function() {
		this.image.src = this.source_ouvrir;
		if(browser.isMac)
		{
			Effect.BlindUp(this.conteneur,{duration:0.7, beforeStart:function() {Toogle_anim=true;}, afterFinish:function(){Toogle_anim=false}});
		}
		else
		{
			new Rico.Effect.FadeTo(this.conteneur, 0.0, 600, 10);
			Effect.BlindUp(this.conteneur,{duration:0.7, beforeStart:function() {Toogle_anim=true;}, afterFinish:function(){Toogle_anim=false}});
		}
		this.etat_initial = false;
	   }
	};

/*--------------------------------------------------------------------- /toggle --------------------------------------------------------------------*/