function setVideoJSAdListeners(player){

    var next_token    = '';
    var curAdTagIndex = 0;
    var adPlaySent    = false;

    function sendEvent(event) {
        if(event == 'STARTED') {

            if(! adPlaySent) {

                adPlaySent = true;

                if(typeof vid != 'undefined' && vid.length == 32) {
                    var postUrl = CH_BASE+'/videos/generate_token?r='+Math.round(Math.random()*1000000);
                }

                if(typeof gid != 'undefined' && gid.length == 32) {
                    var postUrl = CH_BASE+'/games/generate_token?r='+Math.round(Math.random()*1000000);
                }

                $.post(postUrl, {'csrf_token':page_token}, function(data) {
                    if(data && data.status=='ok' && data.token) {

                        next_token = data.token.toString();

                        if(typeof adtags === 'string') {
                            curAdTag = adtags;
                        } else  {
                            var curAdTag = adtags[curAdTagIndex] ? adtags[curAdTagIndex]:'';
                        }
                        
                        if((typeof adtags === 'string' && adtags == curAdTag) || $.inArray(curAdTag, adtags) > -1) {

                            ad_network_id = '';
                            if(typeof adtags_full[curAdTag] != 'undefined' && adtags_full[curAdTag].length == '32') {
                                ad_network_id = adtags_full[curAdTag];
                            }

                            if(vid && vid.length == 32) {

                                $.ajax({
                                    type: 'POST',
                                    url: CH_BASE+'/videos/ad?r='+Math.round(Math.random()*1000000),
                                    data: {
                                        'csrf_token':              next_token,
                                        'vid':                     vid,
                                        'video_encrypted_id':      curVideoEncrId,
                                        'ad_network_id':           ad_network_id
                                    },
                                    success: function(){
                                        console.log('ad');
                                    },
                                    dataType: 'json'
                                })
                            }

                            if(gid && gid.length == 32) {
                                $.post(CH_BASE+'/games/ad?r='+Math.round(Math.random()*1000000), {
                                    'csrf_token':    next_token,
                                    'gid':           gid,
                                    'ad_network_id': ad_network_id
                                }, function(data) {
                                    console.log('ad');
                                });
                            }
                        }
                    }
                }, 'json');
            }
        }

        if(event == 'COMPLETE') {
            adPlaySent = false;
        }

        if(event == 'ALL_ADS_COMPLETED') {
            if(gid && gid.length == 32) {
                player.remove();
                load_game();
                gid = null;
            }
        }
    }

    player.on('adsready', function() {
        var reportedEvents = [
            'STARTED',
            'COMPLETE',
            'ALL_ADS_COMPLETED'
        ];

        for(var i=0;i<reportedEvents.length;i++) {
            player.ima.addEventListener(google.ima.AdEvent.Type[reportedEvents[i]], (function(i) {
                return function() {
                    sendEvent(reportedEvents[i]);
                }
            })(i));
        }

    });
}