angular.module('eHealthVAMHelper', []).filter('ehvamReadableDate', function() {

    return function(input) {

        try {

            var dateTimeRegEx = /.{2}-.{2}-.{4} .{2}:.{2}:.{2}/g;

            var replaceStrings = [];
            var matches = input.match(dateTimeRegEx);

            if (matches) {

                // loop through each date/time string picked up by the regex
                matches.forEach(function(dateTimeString, index) {
                    var gdtArr1 = dateTimeString.split('-');
                    var sDay = gdtArr1[0];
                    var sMonth = gdtArr1[1];
                    var gdtArr2 = gdtArr1[2].split(' ');
                    var sYear = gdtArr2[0];
                    var gdtArr3 = gdtArr2[1].split(':');
                    var sHour = gdtArr3[0];
                    var sMinute = gdtArr3[1];
                    var sSecond = gdtArr3[2];

                    var date = new Date(sYear, sMonth - 1, sDay, sHour, sMinute, sSecond);

                    options = {
                        hour: 'numeric',
                        minute: 'numeric',
                        hour12: true
                    };

                    var timeString = new Intl.DateTimeFormat('en-AU', options).format(date);

                    options = {
                        day: 'numeric',
                        month: 'short',
                        year: 'numeric',
                        weekday: 'long'
                    };

                    var dateString = new Intl.DateTimeFormat('en-AU', options).format(date);

                    var dtString = dateString + ' at ' + timeString;

                    replaceStrings.push(dtString);
                });

            }

            var loopCount = 0;

            return input.replace(dateTimeRegEx, function() {
                loopCount++;
                return replaceStrings[loopCount - 1];
            });

        } catch (error) {
            return input;
        }
    };
});