light over text

by OwenMelbz

HTML

<img onload="init();" id="light" alt="" src="http://home.comcast.net/~jscheuer1/side/flashlight/light2_o.png">
<div class="text">Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Quisque eu tortor. Suspendisse non velit feugiat odio molestie tincidunt. Sed dolor est, accumsan aliquam, mattis sed, rutrum ut, erat. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus nec ligula a nisl varius dignissim. Mauris orci enim, placerat non, laoreet id, hendrerit eget, tortor. Etiam at nibh. Proin egestas ante sed metus malesuada feugiat. Integer quis lorem quis est aliquet cursus. Donec posuere leo a tortor. Sed metus purus, viverra ut, vulputate in, dignissim sed, ipsum. Nullam mi. Nullam interdum. Donec nec velit varius orci consectetuer pretium. Mauris nec leo id sem rhoncus tincidunt. Donec sagittis, diam eu adipiscing sodales, augue enim porta massa, id tempus neque lorem ac dolor. Mauris elementum interdum nisi. Phasellus nonummy lacus eget nisi. Quisque lorem diam, dapibus quis, vestibulum in, nonummy eget, pede. Fusce hendrerit libero semper elit. Praesent nulla nunc, pulvinar eu, consequat ac, fermentum non, nisi. Nulla facilisi. Aenean pharetra, ligula id tincidunt ultricies, odio urna molestie lectus, eget vestibulum ligula felis viverra lorem. Mauris nonummy porttitor pede. Mauris elit pede, ultrices vel, auctor vel, fringilla sed, ante. Aliquam sed lectus ac nulla suscipit volutpat. Vivamus sem turpis, adipiscing nec, pulvinar varius, egestas vitae, tortor. Suspendisse sagittis nibh non felis. Aenean elementum auctor eros. Proin aliquet scelerisque ante. Mauris sem felis, sollicitudin id, rutrum auctor, gravida vitae, lectus. Vivamus euismod. Aliquam erat volutpat. Aliquam molestie ipsum ut metus. Aenean eget nisl eget magna mattis adipiscing. Etiam erat. Nullam blandit, risus sit amet elementum iaculis, metus velit tempor mi, nec luctus orci dui non tortor. Aenean tellus nunc, dignissim ac, dapibus...

CSS

#light {
    z-index:1;
    position:fixed;
    display:none;
}
body {
    background-color:black;
    color:white;
}
.text {
    position:relative;
    z-index:3;
}

JavaScript

function touchHandler(event) {
    //alert("handler");
    var touches = event.changedTouches,
        first = touches[0],
        type = "";
    switch (event.type) {
        case "touchstart":
            type = "mousedown";
            break;
        case "touchmove":
            type = "mousemove";
            break;
        case "touchend":
            type = "mouseup";
            break;
        default:
            return;
    }

    //initMouseEvent(type, canBubble, cancelable, view, clickCount, 
    //           screenX, screenY, clientX, clientY, ctrlKey, 
    //           altKey, shiftKey, metaKey, button, relatedTarget);

    var simulatedEvent = document.createEvent("MouseEvent");
    simulatedEvent.initMouseEvent(type, true, true, window, 1,
    first.screenX, first.screenY,
    first.clientX, first.clientY, false,
    false, false, false, 0 /*left*/ , null);

    first.target.dispatchEvent(simulatedEvent);
    event.preventDefault();
}

function init() {
    //alert("init");
    document.addEventListener("touchstart", touchHandler, true);
    document.addEventListener("touchmove", touchHandler, true);
    document.addEventListener("touchend", touchHandler, true);
    document.addEventListener("touchcancel", touchHandler, true);
}

function trakLight(e) {
    var iet = function () {
        return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
    },
    ev = e ? e : window.event,
        posx = 0,
        posy = 0,
        l = document.getElementById('light'),
        good = 1;
    if (l.tagName.toLowerCase() == 'img' && typeof l.complete == 'boolean' && !l.complete) good = 0;
    else if (l.tagName.toLowerCase() == 'img' && typeof l.complete != 'boolean') {
        alert('Your browser isn\'t capable of displaying this page as intended')
        good = 0;
        trakLight.bad = 1;
    }
    l.style.display = good ? 'block' : 'none';
    if (typeof light != 'undefined' &&...