// JavaScript Document
Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (this._timer)  clearInterval(this._timer);
    
    this._readyCallbacks.each(function(f) { f() });
    this._readyCallbacks = null;
},
  onDOMReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady.bind(this);
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") domReady(); 
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) { 
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady(); 
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});

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]
	}
});

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 ---------------------------------*/
/* ------------------------ Input_value ---------------------------------*/
Input_value = Class.create();
Input_value.prototype = {
	   initialize: function(element) {
			this.element = $(element);
			this.value = this.element.value;
			//assigning our method to the event
			this.element.onfocus = this.enlever_value.bindAsEventListener(this);
			this.element.onblur = this.remettre_value.bindAsEventListener(this);
	   },
	   enlever_value: function(evt) {
		 this.element.value = '';
	   },
	   remettre_value: function(evt) {
		 if(this.element.value == "") this.element.value = this.value;
	   }
	};
/* ------------------------ /Input_value ---------------------------------*/
/* ------------------------ 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 ---------------------------------*/

/* ------------------------ ListeDeroulante ---------------------------------*/
var anim_liste = false;

ListeDeroulante = Class.create();
ListeDeroulante.prototype = {
	   initialize: function(liste,bouton) {
			this.liste = $(liste);
			this.bouton = $(bouton);
			this.h_liste = Element.getHeight(this.liste);
			this.liste_affichee = false;
			Element.setStyle(this.liste,{display:"none", top:"0px"})
			//assigning our method to the event
			this.bouton.onclick = this.click_bouton.bindAsEventListener(this);
			this.bouton.onmouseover = this.onmouseover_bouton.bindAsEventListener(this);
			this.bouton.onmouseout = this.onmouseout_bouton.bindAsEventListener(this);
	   },
	   click_bouton: function(evt){
			if(!anim_liste)
			{
				if(this.liste_affichee)
				{
					this.desafficher(anim_liste);
				}
				else
				{
					this.afficher(anim_liste);
				}
			}
	   },
	   afficher: function(anim_liste) {
			g_anim_liste(true)

			this.liste_affichee = true;

			var liste = this.liste;
			var h_liste = this.h_liste;
			
			new Effect.Parallel(
			[ 
				new Effect.MoveBy(this.liste,-(this.h_liste),0,{sync:true}),
				new Effect.BlindDown(this.liste,{sync:true})
			],
			{duration:0.7,
				afterFinish: function(element, anim_liste)
				{ 
					Element.setStyle(liste,{top:-(h_liste)+"px"})
					Element.setStyle(liste,{display:"block"})
					g_anim_liste(false)
				}
			})
	   },
	   desafficher: function() {
			g_anim_liste(true)

			this.liste_affichee = false;

			var liste = this.liste;
			var h_liste = this.h_liste;
			
			new Effect.Parallel(
			[ 
				new Effect.MoveBy(this.liste,(this.h_liste),0,{sync:true}),
				new Effect.BlindUp(this.liste,{sync:true})
			],
			{duration:0.7,
				afterFinish: function(element, anim_liste)
				{ 
					Element.setStyle(liste,{display:"none"})
					Element.setStyle(liste,{top:"0px"})
					g_anim_liste(false)
				}
			})
	   },
	   onmouseover_bouton: function() {
			Element.setStyle(this.bouton,{cursor:"pointer"})
	   },
	   onmouseout_bouton: function() {
			Element.setStyle(this.bouton,{cursor:"default"})
	   }

	};
	
function g_anim_liste(bool)
{
	anim_liste = bool;	
}

/* ------------------------ /ListeDeroulante ---------------------------------*/

/* ------------------------ Vignette ---------------------------------*/
Vignette = Class.create();
Vignette.prototype = {
	   initialize: function(vignette) {
			this.vignette = $(vignette);
			//assigning our method to the event
			this.vignette.onmouseover = this.onmouseover_bouton.bindAsEventListener(this);
			this.vignette.onmouseout = this.onmouseout_bouton.bindAsEventListener(this);
			// detection champ peau
			if(this.vignette.childNodes[2].childNodes[0]){
    			if(this.vignette.childNodes[2].childNodes[0].nodeName != "#text"){
    				this.peau = this.vignette.childNodes[2].childNodes[0];
    				
    				Element.setStyle(this.peau,{height: "auto", overflow: "auto"})
    				// 1 ligne environ 13px;
    				Element.setStyle(this.peau,{display: "block", top: - (3 + Element.getHeight(this.peau))+"px"})
    				/*if(Element.getHeight(this.peau)+3 > 16)
    				{
    					this.image = this.vignette.childNodes[1];
    					Element.setStyle(this.image,{paddingBottom: (Element.getHeight(this.peau)-13)+"px"})
    				}*/
    			}
			}
	   },
	   onmouseover_bouton: function() {
			Element.addClassName(this.vignette,"on")
	   },
	   onmouseout_bouton: function() {
			Element.removeClassName(this.vignette,"on")
	   }
	};
/* ------------------------ /Vignette ---------------------------------*/
