window.addEvent('domready', function() {
	// GESTION DU MENU DU CATALOGUE PRODUITS
	if ($('menu_catalogue')) {
		var menu = $$('#menu_catalogue .rubrique');
		menu.each(function(item, index){
			var sous_menu = item.getElements('ul');
			sous_menu.each(function(item, index){
				item.slide('hide');
			});
			item.addEvent('mouseenter', function(e){
				e.stop();
				item.getElements('ul').slide('toggle');
			});
			item.addEvent('mouseleave', function(e){
				e.stop();
				item.getElements('ul').slide('toggle');
			});
		});
	}
	// GESTION DES CHANGEMENTS DE MODELES AU SEIN DES FICHES PRODUIT
	if ($('sel_modele_produit')) {
		$('sel_modele_produit').addEvent ('change', function (e){
			e.stop();
			$$('#fiche_produit .reference span').set('text', aListeModeles[this.getProperty('value')]["ref"]);
			$$('#fiche_produit .prix span').set('text', aListeModeles[this.getProperty('value')]["prix"]);
		});
	}
	// AFFICHAGE DE LA CARTE (PLAN) SI NECESSAIRE
	if ($('map_canvas')) 
		showAddress();
	// CHANGEMENT DANS LE MENU DEROULANT DES PAYS
	if ($('contact_infos')) {
		$('pays').addEvent ('change', function (e){
			e.stop();
			if ($('pays').getProperty('value') == 1 || $('pays').getProperty('value') == 2) {
				$('contact_infos').submit();
			}
		});
	}
	// REMISE A ZERO DU FORMULAIRE DE CONTACT
	if ($('form_reset')) {
		$('reset_button').addEvent ('click', function (){
			$('form_reset').submit();
		});
	}
	// GESTION DU DEFILEMENT POUR LES LISTES DE PRODUITS DANS LES RUBRIQUES DU CATALOGUE
	if ($('liste_produits')) {
		var liste_produits = $$('#liste_produits td');
		var nb_produits_total = liste_produits.length;
		// FONDU SUR LES PRODUITS
		liste_produits.each(function(item, index){
			item.fade('hide');
		});
		var compteur = 0;
		var delay_display = function(){ 
			liste_produits[compteur].fade('in'); 
			compteur++; 
			if (compteur == nb_produits_total)
				$clear(fade_produits_in);
		}
		var fade_produits_in = delay_display.periodical(10);
		// MISE EN PLACE DU SCROLL
		var nb_produits_visibles = 3;
		var largeur_produit = $('prod_1').offsetWidth;
		if (nb_produits_total>nb_produits_visibles) {
			var table = $$('#liste_produits table');
			// DIMENSIONNEMENT DYNAMIQUE DE LA BARRE DE SCROLL
			$('scroller').setStyle('width', (($('scroller_barre').offsetWidth/nb_produits_total)*nb_produits_visibles));
			var mySlider = new Slider('scroller_barre', 'scroller', {
				// OPTIONS
				range: [1, nb_produits_total],
				snap: false,
				steps: nb_produits_total,
				offset: 1,
				wheel: true,
				mode: 'horizontal', 
				// EVENEMENTS
    			onChange: function(step){
					table[0].setStyle('left', (largeur_produit-((step-1)*largeur_produit)));
					if (step == 1) 
						table[0].setStyle('left', 0);
					else if (step == nb_produits_total) 
						table[0].setStyle('left', ((largeur_produit*(nb_produits_visibles-1))-((step-1)*largeur_produit)));
    			},
    			onTick: function(pos){
					// DEFILEMENT HORIZONTAL (LEFT)
					this.knob.setStyle('left', pos);
    			},
    			onComplete: function(step){
					this.set(step);
				}
			});
			// ACTIONS DES BOUTONS DE DEFILEMENT
			$('move_left').addEvent ('click', function (){
				if (mySlider.step > 1) 
					mySlider.set(mySlider.step-1);
				else 
					mySlider.set(nb_produits_total);
			});
			$('move_right').addEvent ('click', function (){
				if (mySlider.step < nb_produits_total) 
					mySlider.set(mySlider.step+1);
				else 
					mySlider.set(0);
			});
			// INITIALISATION DU SLIDER PAR DEFAUT
			if (typeof(step)!='undefined') 
				mySlider.set(step);
			else 
				mySlider.set(0);
		}
	}
});

// POUR LA GESTION DES GOOGLE MAPS
function showAddress() {
	var map = null;
	var geocoder = null;
	map = new GMap2(document.getElementById("map_canvas"));
	geocoder = new GClientGeocoder();
	if (geocoder) {
		geocoder.getLatLng(
		adresse,
		function(point) {
			if (!point) {
				$('map_canvas').destroy();
				$('plan_intro').destroy();
				alert("Votre adresse n'a pas été trouvée !\nL'affichage du plan a été désactivé. Vérifiez l'adresse saisie dans vos informations personnelles de l'espace VDI. Si votre adresse est correcte et que nous ne parvenons pas à vous localiser, nous vous conseillons de désactiver l'affichage du plan d'accès dans votre espace VDI.\n");
			} else {
				map.setCenter(point, 16);
				map.removeMapType(G_HYBRID_MAP);
				map.addControl(new GMapTypeControl());
				map.addControl(new GLargeMapControl());
				var marker = new GMarker(point);
				map.addOverlay(marker);
				marker.openInfoWindowHtml(adresse_complete);
				GEvent.addListener(marker, "click", function() {
           			marker.openInfoWindowHtml(adresse_complete);
         		});
         		GEvent.trigger(marker, "click");
			}
		});
	}
}

// FONCTION EQUIVALENTE AU PRINT_R() DE PHP
function print_r( array, return_val ) {
    var output = "", pad_char = " ", pad_val = 4;
    var formatArray = function (obj, cur_depth, pad_val, pad_char) {
        if (cur_depth > 0) {
            cur_depth++;
        }
        var base_pad = repeat_char(pad_val*cur_depth, pad_char);
        var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
        var str = "";
        if (obj instanceof Array || obj instanceof Object) {
            str += "Array\n" + base_pad + "(\n";
            for (var key in obj) {
                if (obj[key] instanceof Array) {
                    str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
                } else {
                    str += thick_pad + "["+key+"] => " + obj[key] + "\n";
                }
            }
            str += base_pad + ")\n";
        } else if(obj == null || obj == undefined) {
            str = '';
        } else {
            str = obj.toString();
        }
        return str;
    };
    var repeat_char = function (len, pad_char) {
        var str = "";
        for(var i=0; i < len; i++) { 
            str += pad_char; 
        };
        return str;
    };
    output = formatArray(array, 0, pad_val, pad_char);
    if (return_val !== true) {
        document.write("<pre>" + output + "</pre>");
        return true;
    } else {
        return output;
    }
}
