function centerImg( img, correction )
{

	elmt = img.parentNode;
	hauteur = elmt.offsetHeight;

	if( correction )
		adjust = correction;
	else
		adjust = 0;
				
	if( img.offsetHeight < hauteur  )
	{
		padding = (hauteur - img.offsetHeight)/2;
		img.parentNode.style.paddingTop = padding + "px";
		elmt.style.height = hauteur - adjust - padding +"px";
	}
}

function centerImgs() {
	var imgs = document.getElementsByTagName("img");

	for( i=0; i<imgs.length; i++ )
	{
		if( imgs[i].className == "vignette" )
		{
			centerImg( imgs[i] );
		}
	 }
}

function autoSelect() {
	var selects = document.getElementsByTagName( "select" );
	if( !selects )
		return; 
	
	for( i=0; i<selects.length; i++)
	{
		var select = selects[i];
		var inputs = document.getElementsByTagName( "input" );
		
		if( select.className != "autoSubmit" )
			continue;
		
		select.onchange = function(e) {
			if(!e) e = window.event;
			if(!this) me = e.srcElement;
			else me = this;
			
			var form = this.form;
			form.submit();
		}		
				
		for( j=0; j<inputs.length; j++)
		{
			var input = inputs[j];
			
			if( input.className != "autoSubmit")
				continue;
			
			input.parentNode.removeChild( input );


		}
	}
}
/* Panier **************************************************************** */
function fixCart()
{
	var cart = $('cart');
	if ( document.viewport.getScrollOffsets()[1] > 75 ) {
		if( Prototype.Browser.IE ) 
			cart.setStyle( "position: fixed; top: 0; z-index: 100;" );
		else
			cart.addClassName( "follower" );
	 } else {
		if( Prototype.Browser.IE ) 
			cart.setStyle( "position: relative;");
		else
			cart.removeClassName( "follower" );
	 }
}

function setCart() {
	$$('#cart .numerique').each( function(el) { el.observe( 'change', updateCart ) } );
	$$('#cart .delete').each( function(el) { el.observe( 'click', updateCart ) } );
	fixCart();

	$$('#cart li').each(
		function( item ) {
			item.observe( 'mouseenter', redimCartItem );
			item.observe( 'mouseleave', setCartWidths );
		});
	setCartWidths( null );
}

function setCartWidths( active ) {
	var items = $$('#cart li');
	
	var usableWidth = 620;
	var width = Math.floor( usableWidth/items.length );
	
	if( active && active.getWidth ) {
		usableWidth = 620 - 254;
		width = Math.floor( usableWidth/(items.length - 1) );
		}
	
	items.each(
		function( item ) {
			if( item != active  ) {
				item.removeClassName( "hover" );
				item.setStyle("width:" + width + "px;");			
			}
			else if( item.getWidth() < '230' )
			{
				item.setStyle("width: 220px;");
			}
			});
}

function redimCartItem(e) {
	var li = Event.findElement(e, 'li');
	li.addClassName( 'hover' );
	setCartWidths( li );
}

function updateCart(e)
{
	var input = Event.element(e);
	var cart = $('cart_parent');
	new Ajax.Updater(
		cart,
		'/panier/recalculer',
		{ 
			parameters: input.serialize(),
			onComplete: function(){ setCart();  cartMessage(); }
		}
		)
	Event.stop(e);
}

function cartMessage()
{
	if(message = $('cart_message') )
	{
		message.fade({ duration: 2.0, delay: 1.0, afterFinish: centerImgs });
	}
}

function addToCart(e)
{
	var input = Event.element(e);
	
	new Ajax.Updater(
		$('cart_parent'),
		'/panier/add',
		{
			parameters: input.serialize(),
			onComplete: function(){ setCart(); cartMessage(); }
		}
		)
	Event.stop(e);
}

/* Rollover menu types **************************************************** */

function switchRed( e )
{
	var roll = Event.findElement( e, 'a' ).getElementsByTagName("IMG")[0];
	roll.src = roll.src.sub( /-inactif\.gif/, '.gif' );
}

function switchGray( e )
{
	var roll = Event.findElement( e, 'a' ).getElementsByTagName("IMG")[0];
	roll.src = roll.src.sub( /\.gif/, '-inactif.gif' );
}

/* Vignettes ************************************************************* */
var img_detail = null;
var current_parent = null;
var interval = null;
var opacity = 0;

function prepareDetails() {
	var vignettes = document.getElementsByTagName("p");


	for( i=0; i<vignettes.length; i++ )
	{
			if( vignettes[i].className == "vignette" )
			{
				
				vignettes[i].onmouseover = showDetail;
				vignettes[i].onmouseout = hideDetail;
				vignettes[i].onmousemove = moveDetail;	
				if (vignettes[i].addEventListener)
				   	   vignettes[i].addEventListener('DOMMouseScroll', wheel, false);
				else
						vignettes[i].onmousewheel = wheel;
		
			}
	}
}

function wheel(e)
{
	if(!e) e = window.event;
	if(!this) me = e.srcElement;
	else me = this;
	
	// var img = null;
	
	me = me.parentNode;
	imgs = me.getElementsByTagName( "img" );
	for( i=0; i<imgs.length; i++ )
	{
		if( imgs[i].className == "detail" )
		{
			img = imgs[i];
			break;
		}
	}
	
	if( img == null )
	 	return; 
		
	if( img.src.indexOf( "zG.jpg" ) == -1 )
		img.src = img.src.replace( /G/, "zG" );
	else
		img.src = img.src.replace( /zG/, "G" );
		
	if (e.preventDefault)
        e.preventDefault();
	e.returnValue = false;
}

function showDetail(e)
{
	if(!e) e = window.event;
	if(!this) me = e.srcElement;
	else me = this;
	
	var img;
	
	imgs = me.getElementsByTagName( "img" );
	for( i=0; i<imgs.length; i++ )
	{
		if( imgs[i].className == "detail" )
		{
			img = imgs[i];
			break;
		}
	}
	
	if( !img )
		return;
	
	if( img != img_detail )
		hideDetail();
		

	if( img_detail == null )
	{
		img_detail = img;
		current_parent = img.parentNode;
		me.removeChild( img );
		document.getElementById("wrapper").appendChild( img );

	
		// if( document.all ) 
		// {
		// 	img_detail.style.filter = "progid:DXImageTransform.Microsoft.Alpha"; 
		// }
		img.style.opacity = 0;	
		interval = setInterval( "fadeIn()", 1 );
		moveDetail( e );
	}
}

function fadeIn()
{
	if( opacity < 1 )
	{

		if( document.all )
		{
			// opacity += 0.3;
			// img_detail.filters.item("DXImageTransform.Microsoft.Alpha").opacity = opacity * 100;
			
		}
		else
		{
			opacity += 0.04;
			img_detail.style.opacity = opacity;
		}
	}
}


function moveDetail( e )
{
	if(!e) e = window.event;
	
	var img = img_detail;
	
	if( img )
	{
		img.style.padding = "10px";
		img.style.border = "1px solid #999";
		img.style.background = "#CCC";
		img.style.display = "block";
		img.onmouseover = hideDetail;
		img.onmouseout = hideDetail;
		relativeToMouse( e, img );
	
	}
}

function relativeToMouse( evt, elmt, deltax )
{
	elmt.style.position = "absolute";
	
	if( deltax < 1 )
		dx = (elmt.offsetWidth / 2) + 10;
	else
		dx = 0;
		
	if (self.innerHeight) // all except Explorer
	{
		winx = self.innerWidth;
		winy = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
	{
		winx = document.documentElement.clientWidth;
		winy = document.documentElement.clientHeight;
	}
	else if (document.body) // other Explorers
	{
		winx = document.body.clientWidth;
		winy = document.body.clientHeight;
	}
		
	if( evt.pageX )
	{ 
		newX = (evt.pageX ) + 15;
		newY = (evt.pageY ) + 15;
	
		if( (newX + elmt.offsetWidth + 20 ) - self.pageXOffset > winx )
		{
			elmt.style.left = self.pageXOffset + newX + dx - elmt.offsetWidth - 30 - document.getElementById("wrapper").offsetLeft + "px";
		}
		else
		{
			elmt.style.left = newX - dx - document.getElementById("wrapper").offsetLeft + "px";
		}		
			
		if( ((newY + elmt.offsetHeight + 20 ) - self.pageYOffset) > winy )
		{
			elmt.style.top = self.pageYOffset + winy - elmt.offsetHeight - 20 + document.getElementById("wrapper").offsetTop + "px";
		}
		else
		{
			elmt.style.top = newY - document.getElementById("wrapper").offsetTop + "px";
		}
	}
	else
	{
		newX = (evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft - document.getElementById("wrapper").offsetLeft ) + 15;
		newY = (evt.clientY + document.body.scrollTop + document.documentElement.scrollTop - document.getElementById("wrapper").offsetTop ) + 15;
		
		if( (newX + elmt.offsetWidth + 20 ) - document.documentElement.scrollLeft > winx )
		{
			elmt.style.left = newX + dx - 30 - elmt.offsetWidth + "px";
		}
		else
		{	
			elmt.style.left =  newX - dx + "px";
		}
		
		if( ((newY + elmt.offsetHeight + 20 ) - document.documentElement.scrollTop ) > winy )
		{
			elmt.style.top = document.documentElement.scrollTop + winy - elmt.offsetHeight + document.getElementById("wrapper").offsetTop + "px";
		}
		else
		{
			elmt.style.top = newY - document.getElementById("wrapper").offsetTop + "px";
		}
	}
}

function hideDetail( e )
{
	if( img_detail )
	{
		document.getElementById("wrapper").removeChild( img_detail );
		current_parent.appendChild( img_detail );
		opacity = 0;
		img_detail.style.display = "none";
		img_detail = null;
		current_parent = null;
		clearInterval( interval );
	}
}

/* Fin vignettes ************************************************ */


var bubulle = null;
var bubulletextes = new Array();

function tailleSubmitHover()
{
	inputs = document.getElementsByTagName("input");
	
	for( i = 0; i < inputs.length; i++ )
	{
		if( inputs[i].className == "taille" )
		{
			inputs[i].onmouseover = showBulleTaille;
			inputs[i].onmouseout = hideBulleTaille;
			
			bubulletextes[inputs[i].id] = inputs[i].title;
			inputs[i].title = "";
		}
	}	
}

function showBulleTaille( e )
{
	if(	!e ) e = window.event;
	if( !this ) me = e.srcElement;
	else me = this;
		
	if( !bubulle )
	{
		bubulle = document.createElement("p");
		insidebubulle = document.createElement("span");
		document.getElementById("wrapper").appendChild( bubulle );
		bubulle.appendChild( insidebubulle );
		insidebubulle.innerHTML = bubulletextes[me.id];
		bubulle.className = "bulle";
		bubulle.style.position = "absolute";
		relativeToMouse( e, bubulle, 0.5 );	

	}
	
	me.style.color = "red";
	me.style.textDecoration = "underline";

	return true;
}

function moveBulleTaille( e )
{
	if(	!e ) e = window.event;
	if( !this ) me = e.srcElement;
	else me = this;
		
	relativeToMouse( e, bubulle, 0.5 );
}

function hideBulleTaille( e )
{
	if(	!e ) e = window.event;
	if( !this ) me = e.srcElement;
	else me = this;

	if( bubulle )
	{
		bubulle.parentNode.removeChild( bubulle );
		bubulle = null;
	}

	me.style.color = "#333";
	me.style.textDecoration = "none";
}

function init() 
{
	Event.observe( window, 'scroll', fixCart );
	setCart();
	
	if( inputs = $$("input.taille") ) 
		inputs.each(
			function( el ) {
				el.observe( 'click', addToCart );
			}
			);

	if( button_add = $('add_to_cart'))
		button_add.observe( 'click',
			function( e ) {
				new Ajax.Updater( $('cart_parent'), '/panier/add', { parameters: $("form_add").serialize(), onComplete: function(){ setCart(); centerImgs(); cartMessage();  }}); 
				Event.stop(e);
			}
		 );
	
	if( type_imgs = $$('#type_selector a'))
		type_imgs.each(
			function( el ) {
				el.observe('mouseenter', switchRed );
				el.observe('mouseleave', switchGray );
			}
			);
	
	if( window.install_thumb_events != null )
		 install_thumb_events();
	centerImgs();
	prepareDetails();
	tailleSubmitHover();

	if( photo = $('grande_photo') )
		DetailZoom.install( photo ); 
}

window.onload = init;

