

/**
 * Fonctions utilisées par le formulaire MEP, ce script est invoqué par form.js
 * L'utilisation des calendriers impose aussi l'utilisation de calendar.js et calendar.css
 *
 * Encapsulation de variables locales (privées).
 */
(function() {
	// Raccourci vers window
	var WIN = this,
			// Raccourci vers window.ev
			EASY = WIN.ev,
			// Raccourci vers window.ev.log
			LOG = EASY && EASY.log,
			// Raccourci vers window.ev.dom
			DOM = EASY && EASY.dom,
			// Raccourci vers fonctions utiles
			element = DOM && DOM.element,
			addClass = DOM && DOM.addClass,
			removeClass = DOM && DOM.removeClass,
			initJours = WIN.initJours,
			initMois = WIN.initMois,
			addJavascriptToAttribute = WIN.addJavascriptToAttribute;

	if (!EASY || !DOM) { throw 'Needs ev.core and ev.dom modules!'; }

	WIN.verifyFormMEP = function() {
		var f = element('formMEP');
		try {
			if (f.formulaName.options[f.formulaName.selectedIndex].value == 'sejour_forme') {
				f.formulaName.options[f.formulaName.selectedIndex].value = '';
				f.themeName.value = 'thalasso';
			}
		}catch (e) {}
		try {
			f.prixMin.value = f.budget.value.replace(/z.*$/ig, '');
		}catch (er) {}
		try {
			f.prixMax.value = f.budget.value.replace(/^.*z/g, '');
		}catch (err) {}
		return true;
	};

	/**
	 * Fonction invoquée par initForm() du script form.js
	 **/
	WIN.MEPP = function() {
		// Ajout des calendriers dynamiques (si les icones sont présentes)
		var jourMEP = element('jourMEP'),
				moisMEP = element('moisMEP'),
				calendrierMEPIcon = element('calendrierMEPIcon'),
				calendrierMEP = element('calendrierMEP'),
				submitMEP = element('submitMEP');
		if (!jourMEP || !moisMEP || !submitMEP) { return; }

		initJours(jourMEP, '----', 0);
		initMois(moisMEP);
		var formListener = function() {
			WIN.verifyFormMEP();
		};
		jourMEP.onchange = formListener;
		moisMEP.onchange = formListener;
		if (calendrierMEPIcon && calendrierMEP) {
			try {
				var calendarMEP = new WIN.Calendar(jourMEP, moisMEP, calendrierMEP, formListener);
				calendrierMEPIcon.onclick = function() {
					calendarMEP.clicAction(calendarMEP.poolIndex, true);
				};
			}
			catch (e) {
				LOG.error('initFormMEP> problème de définition du calendrier MEP : ' + e);
			}
		}
		addJavascriptToAttribute(submitMEP, 'onclick', 'submitFormMEP();');
	};

	/**
	 * Cette fonction vérifie la cohérence des données, et le cas échéant soumet le formulaire formMEP.
	 * Elle ajoute la classe wait à submitMEP pour permettre l'affichage d'une image de chargement.
	 **/
	WIN.submitFormMEP = function() {
		if (WIN.verifyFormMEP()) {
			addClass(element('submitMEP'), 'wait');
			element('formMEP').submit();
		}
	};

	WIN.resetSubmitMEPButton = function() {
		removeClass(element('submitMEP'), 'wait');
	};
}());

