function frenchFloatConverter( s ) {
        //FIXME: > 1000000 => erreur !
        s = s.replace( /\./, '' );
        var value = s.match( /^(-?[0-9]+)(,[0-9]+)([^0-9]*)$/ );
        if( null != value ) {
            value[0] = value[0].replace( /,/, '.' );
            return parseFloat( value[0] );
        }
		else {
			return parseFloat( s );
		}
}

function frenchDateConverter( s ) {
        var parts = s.split("/");
        var d = new Date(0);
        d.setFullYear(parts[2]);
        d.setDate(parts[0]);
        d.setMonth(parts[1] - 1);
        return d.valueOf();
};

function frenchTimeConverter( s ) {
        var parts = s.split(":");
        var d = new Date(0);
        d.setHours(parts[0]);
        d.setMinutes(parts[1]);
        d.setSeconds(parts[2]);
        return d.valueOf();
};

function shortFrenchDateTimeConverter( s ) {
        var parts = s.split(" ");
        var d = new Date(0);

        var date = parts[0].split("/");
        d.setDate(date[0]);
        d.setMonth(date[1] - 1);
        d.setFullYear(date[2]);

        var time = parts[1].split(":");
        d.setHours(time[0]);
        d.setMinutes(time[1]);

        return d.valueOf();
};

SortableTable.prototype.addSortType( "FrenchFloat", frenchFloatConverter );
SortableTable.prototype.addSortType( "FrenchDate", frenchDateConverter );
SortableTable.prototype.addSortType( "FrenchTime", frenchTimeConverter );
SortableTable.prototype.addSortType( "FrenchShortDateTime", shortFrenchDateTimeConverter );