﻿/**
 * Classe AccueilRollOver, lance le rollover des produits de la page d'accueil
 */
var AccueilRollOver = new Class({
	_container: null,
	_containerCache: null,
	_elements: null,
	_elementsCaches: null,
	_duration: 20,
	_currentIndex: 0,
	_nbElements: 0,
	_currentIndexCache: 0,
	_nbElementsCaches: 0,
	_ordreAffichage: null,
	initialize: function(container, containerCache, duration, ordreAffichage) {
		this._container = $(container);
		this._containerCache = $(containerCache);
		this._duration = duration;
		this._ordreAffichage = ordreAffichage;
		this._elements = this._container.getElements('li');
		this._elementsCaches = this._containerCache.getElements('li');
		this._nbElements = this._elements.length;
		this._nbElementsCaches = this._elementsCaches.length;
	},
	rollOver: function() {
		if (this._nbElements == 0 || this._nbElementsCaches == 0) {
			return;
		}
		
		if (this._nbElements <= this._currentIndex) {
			this._currentIndex = 0;
		}
		
		if (this._nbElementsCaches <= this._currentIndexCache) {
			this._currentIndexCache = 0;
		}
		
		var elt = this._elements[this._ordreAffichage[this._currentIndex]];
		var eltCache = this._elementsCaches[this._currentIndexCache];
		
		elt.innerHTML = eltCache.innerHTML;
		
		++this._currentIndex;
		++this._currentIndexCache;
		this.rollOver.delay(this._duration / this._nbElements * 1000, this);
	},
	start: function() {
		for (var i = 0; i < this._nbElements; ++i) {			
			this._elements[i].innerHTML = this._elementsCaches[i].innerHTML;
		}
		
		this._currentIndex = i;
		this._currentIndexCache = i;
		this.rollOver.delay(this._duration * 1000, this);
	}
});

/**
 * Classe RageConceptionForm, permet d'enregistrer automatiquement un formulaire et sa procédure de vérification
 */

var RageConceptionForm = new Class({
	initialize: function(element, checkUrl, registerCheckEvent) {
		element = $(element);
		this.element = element;
		this.checkUrl = checkUrl;

		if (registerCheckEvent && this.element) {
			this.element.addEvent('submit', function(e) {
				new Event(e).stop();
				checkForm(element, checkUrl);
			});
		}
	},
	check: function() {
		checkForm(this.element, this.url);
	}
});



/**
 * Vérification via le serveur de la validité des champs d'un formulaire
 */

function checkForm(element, url) {		
	if (!element) {
		return;
	}

	if ('form_produits' == element.getProperty('id')) {
		var nbChecked = 0;
		element.getElements('.addColoris').each(function (e) {
			if (e.checked) {
				++nbChecked;
			}
		});
		
		if (! nbChecked) {
			alert('Vous devez cocher au moins un coloris pour ce produit !');
			return;
		}
	}

	new Ajax(url, {
		method: 'post',
		onComplete: function(response) {
			$$('.erreurs_form').each(function(el) {
				el.innerHTML = '';
			});

			var obj = Json.evaluate(response);

			if (obj != true) {	
				parseFormErrors(obj, '');
			} else {
				element.submit();
			}
		},
		data: element
	}).request();
}


/**
 * Parcours récursif des erreurs d'un formulaire
 */

function parseFormErrors(errors, prefix) {	
	$each(errors, function(value, key) {
		if ($type(value) == 'string') {
			var p = new Element('p');
			p.innerHTML = value;
			$('erreurs_' + prefix).adopt(p);
		} else {
			if (prefix != '' && prefix.substring(prefix.length - 1) != '-') {
				prefix += '-';
			}
			
			parseFormErrors(value, prefix + key);
		}
	});
}

window.onDomReady(function() {	
	// Enregistrement des procédures de vérification
	var formAdministrateurs = new RageConceptionForm('form_administrateurs', '/prive/administrateurs/verif-form/', true);
	var formClients = new RageConceptionForm('form_clients', '/prive/clients/verif-form/', true);
	var formCategoriesProduits = new RageConceptionForm('form_categories_produits', '/prive/categories-produits/verif-form/', true);
	var formProduits = new RageConceptionForm('form_produits', '/prive/produits/verif-form/', true);
	var formCommandes = new RageConceptionForm('form_commandes', '/prive/commandes/verif-form/', true);
	var formConfiguration = new RageConceptionForm('form_configuration', '/prive/configuration/verif-form/', true);
	var formLogin = new RageConceptionForm('form_login', '/default/index/verif-login/', true);
	var formLoginCommande = new RageConceptionForm('form_login_commande', '/default/panier/verif-login/', true);
	var formLoginAdmin = new RageConceptionForm('form_login_admin', '/default/index/verif-login-admin/', true);
	var formPanier = new RageConceptionForm('form_panier', '/default/panier/verif-panier/', true);	
	var formContact = new RageConceptionForm('form_contact', '/default/index/verif-contact/', true);	
	var formProfil = new RageConceptionForm('form_profil', '/client/profil/verif-form/', true);		
	var formCoordonneesCommande = new RageConceptionForm('form_coordonnees_commande', '/client/panier/verif-coordonnees-commande/', true);		
	var formInscription = new RageConceptionForm('form_inscription', '/inscription/verif-inscription/', true);		

	// Bouton de suppression du backoffice
	if ($('delete')) {
		$('delete').addEvent('click', function(e) {
			if (!confirm('La sélection courante sera supprimée. Êtes-vous sûr de vouloir continuer ?')) {
				new Event(e).stop();
			}
		});
	}
	
	// Switch identification / inscription du passage de commmande
	var nouveauClient = $$('form input[name=nouveau_client]');

	$each(nouveauClient, function(radio) {
		radio.addEvent('click', function() {
			var display = (this.value == 1) ? 'block' : 'none';
			$('inscription').style.display = display;
		});
	});
			
	Lightbox.init({descriptions: '.lightboxDesc', showControls: false});
	
	if ($defined($('paiement'))) {
		//confirmation des cgv avant choix de paiement
		$('paiement').setStyles('display: none');
		
		$('cgv').addEvent('click', function() {
			if ($('cgv').checked==false){
				$('paiement').setStyles('display: none');
			} else{
				$('paiement').setStyles('display: block');
			}
		});
	}
	
/** Menu déroulant **/
	var accordeon = new Accordion($('menu').getElements('a.parent'), $('menu').getElements('ul'), { 'opacity' : false, 'display' : $('currentPosition').value }); 

	if ($defined($('hiddenCatalogue'))) {
		new AccueilRollOver('vitrine', 'hiddenCatalogue', 12, [0,4,2,5,1,3]).start();
	}
});