jQuery(function($) {

    function rand(max) {
        var B32 = 4294967296; // 2^32
        if (max <= B32) {
            return Math.floor(Math.random() * max);
        } else {
            var d0 = Math.floor(Math.random() * B32);
            var d1 = Math.floor(Math.random() * Math.floor(max / B32));
            return d0 + d1 * B32;
        }
    };

    function tohex(n, length) {
        var hex = n.toString(16);
        while (hex.length < length) {
            hex = '0' + hex;
        }
        return hex;
    };

    var id = tohex(rand(281474976710656), 12);

    var $window = $(window);
    var $document = $(document);

    var logger = null;

    var th = $document.height();


    var targetImages = $(".track");

    function logImage() {
        var st = $document.scrollTop();
        var wh = $window.height();
        var sb = st + wh;
        targetImages.each(function() {
            var $this = $(this);
            var offset = $this.offset();
            var height = $this.height();
            var src = $this.attr("src");
            var iid = $this.attr("id");
            var middle = offset.top + (height / 2);
            var shown = st < middle && middle < sb;
            var status = shown ? "in" : "out";
            jQuery.get("js/log.js", {id: id, img: src, imageid: iid, status: status});
        });
    }

    function logScroll() {
        var st = $document.scrollTop();
        var wh = $window.height();
        var cp = st + wh;
        var r = cp / th;
        jQuery.get("js/log.js", {id: id, r: r, st: st, wh: wh, cp: cp, th: th});
    }


    function onScroll() {
        if (logger != null) {
            window.clearTimeout(logger);
            logger = null;
        }
        logger = window.setTimeout(function() {
            logScroll();
            logImage();
        }, 100);
    }

    $window.scroll(onScroll);

});

