(function($) {
	var bundles = {};
	var language = boState.getLanguage();
	if( !language ) language = 'fr';

	/**
	* @class
	* @name boi18n
	* @static
	* @version 1.0
	*/
	"boi18n".namespace(/** @lends boi18n.prototype */ {
		/**
		 * Retourne un message internationalisé
		 * @param bundleName Nom complet du bundle à utiliser. ( ex : '/bov3/wcm' )
		 * @param key Clé du message à retrouver. ( ex : 'datahelp_blocbuttons_cancel' )
		 * @param params Paramètres additionnels. ( ex : ['ok', 'nok'] )
		 * @example
		 * console.log(boi18n.getMessage('/bov3/wcm','datahelp_blocbuttons_cancel'));
		 * console.log(boi18n.getMessage('/bov3/wcm','head.title.complement.login'));
		 * console.log(boi18n.getMessage('/bov3/wcm','dataedit_dataedit_datanew_object', 'param1', 'param2'));
		*/
		getMessage: function(bundleName, key, params) {

			if (typeof(bundles)=='undefined' || bundles==null) bundles={};

			var message = null;

			var bundle_lang = bundles[bundleName+'_' + language];
			if (typeof(bundle_lang)=='undefined' || bundle_lang==null) {
				$.ajax({
					context: {
						bundleName: bundleName,
						language: language
					},
					async:false,
					url:boState.getContextPath()+'/bov3/common/actions/ajaxBundle.jspz',
					data: {
						bundle: bundleName,
						language: language
					},
					dataType: 'json',
					cache:true,
					success: function(data) {
						var name = this.bundleName+'_'+language;
						bundles[name] = data;
					},
					error: function(request, textStatus, exception) {
						var name = this.bundleName+'_'+language;
						bundles[name] = null;
					}
				});
				// remettons la variable
				bundle_lang = bundles[bundleName+'_' + language];
			}
			if (typeof(bundle_lang)!='undefined' && bundle_lang!=null) {
				message = bundle_lang[key];
			}

			// Cherchons dans le bundle commun (sans language)
			if (message==null) {
				var bundle_lang = bundles[bundleName];
				if (typeof(bundle_lang)=='undefined' || bundle_lang==null) {
					$.ajax({
						context: {
							bundleName: bundleName
						},
						async:false,
						url:boState.getContextPath()+'/bov3/common/actions/ajaxBundle.jspz',
						data: {
							bundle: bundleName
						},
						dataType: 'json',
						cache:true,
						success: function(data) {
							var name = this.bundleName;
							bundles[name] = data;
						},
						error: function(request, textStatus, exception) {
							var name = this.bundleName;
							bundles[name] = null;
						}
					});
					// remettons la variable
					bundle_lang = bundles[bundleName];
				}
				if (typeof(bundle_lang)!='undefined' && bundle_lang!=null) {
					message = bundle_lang[key];
				}
			}

			if (message==null || message.length==0) return key;

			message = message.format( params );

			// Aucune valeur trouvée
			return message;
		}
	});

	$(function() {
		var datepicker_reg = $.datepicker.regional[boState.getLanguage()];
		datepicker_reg = $.extend(datepicker_reg, {
			timeOnlyTitle: boi18n.getMessage('/bov3/wcm','datepicker_timeOnlyTitle'), //Choisir une heure
			timeText: boi18n.getMessage('/bov3/wcm','datepicker_timeText'), //Heure
			hourText: boi18n.getMessage('/bov3/wcm','datepicker_hourText'), //'Heure',
			minuteText: boi18n.getMessage('/bov3/wcm','datepicker_minuteText'), //'Minute',
			secondText: boi18n.getMessage('/bov3/wcm','datepicker_secondText'), //'Seconde',
			currentText: boi18n.getMessage('/bov3/wcm','datepicker_currentText')//'Maintenant'
		});

		$.datepicker.setDefaults(datepicker_reg);
		$.timepicker.setDefaults(datepicker_reg);

		var validator_reg = $.validator_bo_regional[language];
		$.extend($.validator.messages, validator_reg);
	});

})(jQuery);


