/**
 * @author shuet
 *
 * Fonctions :
 * 	- formatNumber
 *  - isDate
 *  - stringToTimestamp
 *  - comparerDates
 */
Fonctions = {
	/**
	 * formatNumber
	 * @param tampon
	 * @return tampon
	 */
	formatNumber : function (tampon) {
		tampon = String(tampon).replace(/,/gi, ".");
		tampon = tampon.replace(/ /gi, "");
		for(var i=1;i<tampon.length;i++)
		{tampon=tampon.replace(String.fromCharCode(160),'');}
		tampon = tampon.replace(/e/gi, "###");
		if(tampon.slice(0,1)=='-' || tampon.slice(0,1)=='+'){
			signe=tampon.slice(0,1);
			tampon=tampon.substring(1,tampon.length);
		}
		else{
			signe='';
		}

		if (isNaN(tampon) || tampon == "") tampon = "0";
		var nb_decimals = 3;

		if (tampon.indexOf(".") == -1) tampon += ".000";
		var tablo_tampon = tampon.split(".");

		// Traitement de decimaux
		if (tablo_tampon[1].length < nb_decimals)
		{
			var limit = 0;
			while (tablo_tampon[1].length < nb_decimals && limit++ < nb_decimals+2)
			{
				tablo_tampon[1] = tablo_tampon[1] + "0";
			}
		}else{
			tablo_tampon[1] = tablo_tampon[1].substr(0, 3);
		}

		// Traitement de la partie entiere
		var retour_entier = "";
		for (var i=0; i<=tablo_tampon[0].length; i++) {
			if ((i-1) % 3 == 0 && i>1) retour_entier = " " + retour_entier;
			retour_entier = tablo_tampon[0].substr(tablo_tampon[0].length-i, 1) + "" + retour_entier;
		}
		tablo_tampon[0] = retour_entier;
		tampon = signe + tablo_tampon[0] + "," + tablo_tampon[1];

		return tampon;
	},

	redirect_submit : function(target) {

		var page_save = $('formulaire_filtre').action;
		var page_new = page_save;

		page_new = page_new.replace(/[\?|&]+from_retour=\w$/,'');
		page_new = page_new.replace(/lister_etats_versement/, 'lister');
		page_new = page_new.replace(/lister/, target);

		$('formulaire_filtre').action = page_new;
		$('formulaire_filtre').method = "post";
		$('formulaire_filtre').submit();
		$('formulaire_filtre').method = "";
		$('formulaire_filtre').action = page_save;
	},

	/**
	 * isDate
	 * @param date (date au format français ou anglais)
	 * @param format (format de la date : 'EN' ou 'FR')
	 * @return ret (true date valide, false date invalide)
	 */
	isDate: function (date, format) {
		var ret = true;
		if (format == 'FR') {
			var format_date = /^(\d{2})(\/)(\d{2})(\/)(\d{4})$/;
			var step = '/';
		} else {
			var format_date = /^(\d{4})-(\d{2})-(\d{2})$/;
			var step = '-';
		}

		if (date.match(format_date) == null) {
			ret = false;
		} else {

			tab = date.split(step);
			if (format == 'FR') {
				jour = tab[0];
				mois = tab[1];
				annee = tab[2];
			} else {
				annee = tab[0];
				mois = tab[1];
				jour = tab[2];
			}

			if (mois < 1 || mois > 12) {
				ret = false;

			} else if (jour < 1 || jour > 31) {
				ret = false;

			} else if ((mois==4 || mois==6 || mois==9 || mois==11) && jour==31) {
				ret = false;

			} else if (mois == 2) {
				if (jour > 29 || (jour==29 && !(annee % 4 == 0 && (annee % 100 != 0 || annee % 400 == 0)))) {
					ret = false;
				}
			}
		}
		return ret;
	},

	/**
	 * stringToTimestamp
	 * @param sdate (date au format français)
	 * @return (date au fomat timestamp)
	 */
	stringToTimestamp : function (sdate) {
		var date = new Date();

		date.setFullYear(sdate.substr(6,4));
		date.setMonth(sdate.substr(3,2));
		date.setDate(sdate.substr(0,2));

		return date.getTime();
	},

	/**
	 * comparerDates
	 * @param date1 (date au format français)
	 * @param date2 (date au format français)
	 * @return retour (1 si date1 plus récente, 2 si date2 plus récente,
	 * 					0 si mêmes dates, -1 l'une des dates est invalide)
	 */
	comparerDates : function (date1, date2) {
		var retour = -1;
		// Validité des dates
		if ( Fonctions.isDate(date1, 'FR') && Fonctions.isDate(date2, 'FR') ) {
			// Transformation de la date pour les calculs
			var timestamp1 = Fonctions.stringToTimestamp(date1);
			var timestamp2 = Fonctions.stringToTimestamp(date2);
			var resultat = timestamp1 - timestamp2;
			retour = 0;

			// Date 1 plus récente
			if (resultat > 0) {
				retour = 1;
			// Date 2 plus récente
			} else if (resultat < 0) {
				retour = 2;
			}
			// Sinon même date
		}

		return retour;
	},

	isset : function (  ) {
		var a=arguments; var l=a.length; var i=0;
		if (l==0) {
			throw new Error('Empty isset');
		}
		while (i!=l) {
			if (typeof(a[i])=='undefined' || a[i]===null) {
				return false;
			} else {
				i++;
			}
		}
		return true;
	}

};
