/**
* Observateur au chargement de la page
*/
Event.observe(window, 'load', function() {
	Event.observe('langCurrent', 'click', showLanguages);
});

showLanguages = function(event) {
	$('langLinks').toggle();
}

/**
*		FONCTIONS AJAX
*/

/**
* Récupération des pages
*/
getPage = function (sUrl, sData, sButton) {
	var oAjax = new Ajax.Request(
		sUrl, 
		{
			method: 'post', 
			parameters: sData,
			onLoading: displayLoading('message', __LOADING__),
			onSuccess: displayPage,
			onError: displayError,
			asynchronous: true
		}
	);
}

/**
* Affichage des pages
*/
displayPage = function (XMLflood) {
	var strDocument = XMLflood.responseText; 
	var xmlDocument = XMLflood.responseXML;
	
	try {
		if (!xmlDocument || xmlDocument.childNodes.length==0) {
			xmlDocument = (new DOMParser()).parseFromString(strDocument, "text/xml");
		}
		if (xmlDocument.firstChild.tagName == 'parsererror') {
			throw 'parsererror';
		}
		var XMLroot = xmlDocument.lastChild;
		var XMLerror = XMLroot.getElementsByTagName('error').item(0);
		var XMLresult = XMLroot.getElementsByTagName('html').item(0);
		var errorStr = '';
		var missingFields = 0;
		
		if (XMLerror !== null) {
			for (var i = 0; i < XMLerror.childNodes.length; i++) {
				if (XMLerror.childNodes[i].tagName === 'missingField') {
					var inputField = $('form_subscr')[XMLerror.childNodes[i].lastChild.data];
					if (inputField.type !== 'hidden') {
						var inputLabel = $('RBE').getElementsBySelector('[for="' + XMLerror.childNodes[i].lastChild.data + '"]');
						inputLabel[0].addClassName('missing');
						missingFields += 1;
					}
				}
				else {
					errorStr += XMLerror.childNodes[i].data + '<br />';
				}
			}
			if (missingFields > 0) errorStr += __MESSAGE_MISSING_REQUIRED__;
			displayError('message', errorStr);
			if (missingFields > 0) alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$('message').hide();
			$('RBE_content').update(XMLresult.lastChild.data);
			switch (mod) {
				case 'myaccount':
					Event.observe('btn_mod_1', 'click', editAddress);
					Event.observe('btn_mod_2', 'click', editCoord);
					var orders_qty = XMLroot.getElementsByTagName('orders_qty').item(0);
					if (orders_qty !== null) {
						if (orders_qty.lastChild.data == 1) {
							displayError('message', '<b>' + orders_validate_single + '</b>');
						}
						else {
							displayError('message', '<b>' + orders_validate_mutliple + '</b>');
						}
						$('message').show();
					}
					break;
				case 'editaddress':
					Event.observe('modifyAddr', 'click', submitForm);
					break;
				case 'editcoord':
					Event.observe('modifyCoord', 'click', submitForm);
					break;
				case 'cartaddress':
					Event.observe('modifyAddr', 'click', submitForm);
					Event.observe('goBack', 'click', goBack);
					break;
				case 'ordersum':
					Event.observe('validateOrder', 'click', submitForm);
					Event.observe('goBack', 'click', goBack);
					break;
			}
		}
	}
	catch (e) {
		displayError('message', strDocument);	
	}
}

goBack = function(event) {
	window.history.back();
}

/**
* Vérification des critères avant soumission du formulaire
*/
submitForm = function(event) {
	if (event.target.id == 'authBtn') {
		$('form_auth_message').update('');
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_auth', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_auth', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_auth'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			postForm('ajax/ajax.auth.php', sPosts, event.target.id);
		}
	}
	else if (event.target.id == 'authBtnAdmin') {
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_auth', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_auth', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_auth'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			postForm('ajax/ajax.subscriptions.php', sPosts + '&action=auth', event.target.id);
		}
	}
	else if (event.target.id == 'lostPwdBtn') {
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_lost_pwd', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_lost_pwd', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_lost_pwd'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			postForm('ajax/ajax.new.pwd.php', sPosts, event.target.id);
		}
	}
	else if (event.target.id == 'subcribeBtn') {
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_subscr', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_subscr', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_subscr'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			postForm('ajax/ajax.subscribe.php', sPosts, event.target.id);
		}
	}
	else if (event.target.id == 'modifyAddr') {
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_edit_addr', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_edit_addr', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_edit_addr'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			switch (mod) {
				case 'editaddress':
					postForm('ajax/ajax.editaddress.php', sPosts, event.target.id);
					break;
				case 'cartaddress':
					postForm('ajax/ajax.cartaddress.php', sPosts, event.target.id);
					break;
			}
		}
	}
	else if (event.target.id == 'modifyCoord') {
		var missingRequired = 0;
		/**
		* Suppressions du marquage en rouge des labels des champs obligatoires
		*/
		$$('label.missing').each(function(label) {
						unsetMissing(label, 'form_edit_coord', 'missing');
					}
				);
		
		/**
		* Vérification des champs requis
		*/
		var requiredFields = $$('label.required');
		$$('label.required').each(function(label) {
						missingRequired += checkMissingRequired(label, 'form_edit_coord', 'missing');
					}
				);
		
		if (missingRequired > 0) {
			alert(__MESSAGE_MISSING_REQUIRED__);
		}
		else {
			$$('.disabled').each(function(input) {
							$(input).enable();
						}
					);
			sPosts = Form.serialize($('form_edit_coord'));
			$$('.disabled').each(function(input) {
							$(input).disable();
						}
					);
			postForm('ajax/ajax.editcoord.php', sPosts, event.target.id);
		}
	}
	else if (event.target.id == 'validateOrder') {
		postForm('ajax/ajax.validateorder.php', '', event.target.id);
	}
}

/**
* POST des données 
*/
postForm= function (sUrl, sData, sButton) {
	switch (sButton) {
		case 'authBtn':
			var messageTarget = 'form_auth_message';
			var message = __MESSAGE_AUTH_RUNNING__;
			var displayFunction = displayAuthResult;
			break;
		case 'authBtnAdmin':
			var messageTarget = 'message';
			var message = __MESSAGE_AUTH_RUNNING__;
			var displayFunction = displayResult;
			break;
		case 'lostPwdBtn':
			var messageTarget = 'message';
			var message = __MESSAGE_SENDING_DATA__;
			var displayFunction = displayNewPwd;
			break;
		case 'subcribeBtn':
			var messageTarget = 'form_subscr_message';
			var message = __MESSAGE_SENDING_DATA__;
			var displayFunction = displaySubscribeResult;
			break;
		case 'modifyAddr':
			var messageTarget = 'message';
			var message = __MESSAGE_SENDING_DATA__;
			var displayFunction = displayAddrResult;
			break;
		case 'modifyCoord':
			var messageTarget = 'message';
			var message = __MESSAGE_SENDING_DATA__;
			var displayFunction = displayCoordResult;
			break;
		case 'validateOrder':
			var messageTarget = 'message';
			var message = __MESSAGE_SENDING_DATA__;
			var displayFunction = displayValidateResult;
			break;
	}
	var oAjax = new Ajax.Request(
		sUrl, 
		{
			method: 'post', 
			parameters: sData,
			onLoading: displayLoading(messageTarget, message),
			onSuccess: displayFunction,
			onError: displayError,
			asynchronous: true
		}
	);
}
