
function morph() {

	Fx.Morph = Fx.Styles.extend({

		start: function(className){

			var to = {};

			$each(document.styleSheets, function(style){
				var rules = style.rules || style.cssRules;
				$each(rules, function(rule){
					if (!rule.selectorText.test('\.' + className + '$')) return;
					Fx.CSS.Styles.each(function(style){
						if (!rule.style || !rule.style[style]) return;
						var ruleStyle = rule.style[style];
						to[style] = (style.test(/color/i) && ruleStyle.test(/^rgb/)) ? ruleStyle.rgbToHex() : ruleStyle;
					});
				});
			});
			return this.parent(to);
		}

	});

	Fx.CSS.Styles = ["backgroundColor", "backgroundPosition", "color", "width", "height", "left", "top", "bottom", "right", "fontSize", "letterSpacing", "lineHeight", "textIndent", "opacity"];

	Fx.CSS.Styles.extend(Element.Styles.padding);
	Fx.CSS.Styles.extend(Element.Styles.margin);

	Element.Styles.border.each(function(border){
		['Width', 'Color'].each(function(property){
			Fx.CSS.Styles.push(border + property);
		});
	});

	/* LA MERVEILLE */

	// locales
	var tps = 500; /* temps pour finir l'effet de morph avt de redonner la main au hoiver sur les cases */
	var dejaclick = false;
	//var derniere_active; var opaciteMorph_reload; var myMorph_reload;

	// Stockage des éléments
	var liens_externes = new Array($('lien1'),$('lien2'),$('lien3'),$('lien4'));
	
	var i = 1;
	liens_externes.each(function(le) {
		var case_morph1 = 'case'+i+'_morph1';
		var case_morph2 = 'case'+i+'_morph2';
		
		var id_case = 'case'+i;
		var myMorph = new Fx.Morph(id_case, {wait: false});
		var opaciteMorph = new Fx.Style (id_case, 'opacity', { duration:500, wait:true });

		le.addEvent('click', function(e){
			new Event(e).stop();
			
			// Premier click
			if (!dejaclick) {
				// rajout effet d'opacité
				//opaciteMorph.start(1);
				myMorph.start(case_morph2);
				
				dejaclick = true;
				derniere_active = le.getNext().id;
				
			} else if (derniere_active != le.getNext().id) {
				id_case = le.getNext().id;				
				case_morph1 = derniere_active+ '_morph1';
				case_morph2 = id_case+ '_morph2';

				//opaciteMorph_reload = new Fx.Style (derniere_active, 'opacity', { duration:500, wait:false });
				myMorph_reload = new Fx.Morph (derniere_active, {wait:false} );

				//opaciteMorph = new Fx.Style (id_case, 'opacity', { duration:500, wait:false });
				myMorph = new Fx.Morph (id_case, { wait:false });
				
				// Lancement FXs
				//opaciteMorph_reload.start(0);
				myMorph_reload.start(case_morph1).chain(function() {
					//opaciteMorph.start(1);
					myMorph.start(case_morph2);
				});
				derniere_active = id_case;
			
			} else if (derniere_active == le.getNext().id) {
				id_case = le.getNext().id;				
				case_morph1 = derniere_active+ '_morph1';			
				
				//opaciteMorph = new Fx.Style (id_case, 'opacity', { duration:500, wait:false });
				myMorph = new Fx.Morph (id_case, { wait:false });
				
				//opaciteMorph.start(0);
				myMorph.start(case_morph1);
				dejaclick = false;
			}
		});
		i++;
	
	});

}
