// 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) 
	},
  	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) {
		element = $(element);
		var position = 0;
		while (element && element.tagName != 'body')
		{
			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);
  	}
});

// 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);
	   },
	   change_on: function(evt) {
		 this.image.src = this.source_on;
	   },
	   change_off: function(evt) {
		  this.image.src = this.source;
	   }
	};
/* ------------------------ /Img_Rollover ---------------------------------*/

/* ------------------------ Img_PNG ---------------------------------*/
Img_PNG = Class.create();
Img_PNG.prototype = {
	   initialize: function(img) {
		   //	alert('ii')
			this.image = img;
			this.source = this.image.src;
			this.img_png = document.createElement('div');
			this.img_png.style.height = this.image.height+'px';
			this.img_png.style.width = this.image.width+'px';
			this.img_png.style.display = 'block';
			this.img_png.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.source+"', sizingMethod='crop')";
			this.img_png.className = this.image.className;
			this.image.parentNode.appendChild(this.img_png);
			Element.remove(this.image);
	   }
	};
/* ------------------------ /Img_PNG ---------------------------------*/

/*------------------------------------------------- haut de page ---------------------------------------------------*/
Indicateur_produit = Class.create();
Indicateur_produit.prototype = {
	initialize: function(element,page,diff_bas_page,taille_bt_haut_page) {
		this.element = $(element);/* element haut de page */
		this.margin = mpx(Element.getStyle(element,'margin-top'))/* margin-top (marge entre le debut de la zone d'affichage et le bouton)*/
		this.taille = taille_bt_haut_page ? taille_bt_haut_page : Element.getHeight(element);/* taille du haut de page */
		this.actif=false;/* boolean permettant l'activation du scrolling */
		this.position_initiale = Element.getOffSetPositionTop(element) - this.margin;/* position initiale par rapport au debut du document(marge comprise) */
		/*if(browser.isIE){this.position_initiale -=13}*//* defaut de IE */
		this.hauteur_page = page;/* hauteur de la page */
		this.diff_bas_page = diff_bas_page;/* distance entre la position max du haut de page et la fin de la page */
		if(this.affichage())
		{
			if(this.actif){if(browser.isLinux){new PeriodicalExecuter(this.deplacer.bindAsEventListener(this), 0.02);}else{window.onscroll = this.deplacer.bindAsEventListener(this);}}
		}
		else
		{Element.setStyle(element,{display:'none'})}
	},
	affichage: function() {
		// si la page est plus grande que la zone d'affichage et que le bouton haut de page peut scroller -> activation + affichage
		if((this.hauteur_page > Element.htZoneAffichage()) && ((this.position_initiale + this.taille + this.margin) < (this.hauteur_page - this.diff_bas_page)))
		{this.actif=true;return true;}
		// si la page est plus grande que la zone d'affichage et que le bouton haut de page ne peut pas scroller -> pas d'activation + affichage
		if(this.hauteur_page > Element.htZoneAffichage())
		{
			Element.setStyle(this.element,{position:'relative'});
			//bt image pour ie (vas savoir pourquoi)			
			if(browser.isIE)
			{
				Element.setStyle(this.element,{height:Element.getHeight(this.element)+'px'});
				Element.setStyle(this.element,{width:Element.getWidth(this.element)+'px'});
			}
		return true;}
		return false;
	},
	deplacer: function(evt) {
		var scroltop = Element.getScrollTop()
			if((this.position_initiale - scroltop)<=0)
			{
				Element.setStyle(this.element,{top:scroltop-this.position_initiale+"px"})
			}			
			//corrige defaut (pour que le bouton haut de page revient à sa position initiale(du au proccessus moins rapide que le deplacement du scroll))
			if((this.position_initiale - scroltop)>0)
			{
				Element.setStyle(this.element,{top:0+"px"})
			}
	 }
};
/*------------------------------------------------- haut de page ---------------------------------------------------*/
