$(document).on('ready', function () {
    dlConfig = JSON.parse(dlConfig);
    var eventName = (/iphone|ipad/gi).test(navigator.appVersion) ? "touchstart" : "mousedown";
    $(document).on(eventName, '[data-dl-role]', handlerDataLayer);
    $(document).on('change', 'select[data-dl-role]', handlerDataLayer);
});

var handlerDataLayer = function (e) {
    if (([1, 2, 0].indexOf(e.which) > -1) || e.originalEvent == undefined || e.type === 'change') {
        e.stopPropagation();
        var $target = e.type === 'change' ? $(this).find(':selected') : $(this);
        if ($target.data('dl-role') && dlConfig.hasOwnProperty($target.data('dl-role'))) {
            if ($target.data('one-click') && $target.data('count-click') != 0) {
                return false;
            }

            var data = JSON.parse(JSON.stringify(dlConfig[$target.data('dl-role')]));
            if (e.type === 'change') {
                data.eventLabel = glueText($target.text());
            }


            for (var prop in data) {
                var eventLabel = prop.toLowerCase();

                if ($target.data('dl-e-' + eventLabel)) {
                    data[prop] = $target.data('dl-e-' + eventLabel);
                }
            }

            var date = new Date();

            var month = addZero(date.getMonth() + 1);
            var day = addZero(date.getDate());
            var year = date.getFullYear();
            var hour = addZero(date.getHours());
            var minutes = addZero(date.getMinutes());
            var seconds = addZero(date.getSeconds());

            var dates = [month, day, year];
            var times = [hour, minutes, seconds];
            data['eventDate'] = dates.join('/') + ' ' + times.join(':');
            // console.log(data);
            // $('body').append( '<div>' + JSON.stringify(data) + '</div>');
            // alert(JSON.stringify(data));
            (typeof dataLayer !== 'undefined') && dataLayer.push(data);
            if ($target.data('one-click')) {
                $target.data('count-click', 1);
            }
        }
    }
};

function addZero(i) {
    if (i < 10) {
        i = '0' + i;
    }
    return i;
}

function glueText(string) {
    var result = '';
    var textArray = string.split(/\s+/);
    for (var i in textArray) {
        result = result + textArray[i].charAt(0).toUpperCase() + textArray[i].substr(1);
    }

    return result;
}