var days = 'D';
var enableGTMDebugLogs = true;
var oneDay = 86400000;

// Send visit date once per day. 
function sendVisitDate () {
    try{
        var getVisitDate = getCookie('visit_date');
        console.log(getVisitDate);
        var dateNow = new Date().getTime();
        var difference = Math.floor((dateNow - getVisitDate) / oneDay);
        
        if (difference != 0) {
            saveVisitDateCookie();
            dataLayer.push({
                'event' : 'ga_event',
                'ga_category' : 'Gamepage', 
                'ga_action' : 'Return',
                'ga_label': days + '-' + productTitle,
                'days' : days + '-' + productTitle,
                'ga_noninteraction' : true
            })
            if (enableGTMDebugLogs) {
                console.log('Days set to: ', days);
                console.log('Return ', dataLayer);
                
            }
        } else {
            if (enableGTMDebugLogs) {
                console.log('Visit date already sent today.');
            }
        }
    } catch (e) {}
}

// action can be: Main Menu, Start, Restart, Completion, Return
function sendUserAction (action, shouldShowAds, ga_noninteraction) {
    // We wrap the calls to try catch so that the game will
    // proceed in case the ads plugin fails to load
    try {


        if (enableGTMDebugLogs) {
            console.log(action, dataLayer);
        }
        
        if (shouldShowAds) {
            if (enableGTMDebugLogs) {
                console.log('>>> playAds called')
            }
            playAds();
        }

        dataLayer.push({
            'event' : 'ga_event',
            'ga_category' : 'Gamepage', 
            'ga_action' : action,
            'ga_label': productTitle,
            'ga_noninteraction': ga_noninteraction,
        });

        
    } catch (e) {}
}

function zeroPad(number, width){
    width -= number.toString().length;
    if ( width > 0 )
    {
        return new Array( width + (/\./.test( number ) ? 2 : 1) ).join( '0' ) + number;
    }
    return number + ""; // always return a string
}

function saveVisitDateCookie () {
    var firstDate = getCookie('first_date');
    var dateNow = new Date().getTime();
    if (!firstDate || firstDate == '') {
        days = days + '00';
        setCookie('first_date', dateNow);
        setCookie('visit_date', dateNow);
    } else {
        var difference = Math.floor((dateNow - firstDate) / oneDay);
        
        if (difference == 0) {
            days = 'D00';
            setCookie('visit_date', dateNow);
        } else if (difference >= 99) {
            days = 'D99';
            setCookie('visit_date', dateNow);
        } else {
            days = 'D' + zeroPad(difference, 2);
            setCookie('visit_date', dateNow)
        }
    }
}
