/*********** EYES - Javascript Eyes That Follow ***********\
Courtesy of http://oopstudios.com/
Head over
\**********************************************************/

EYES = {};
EYES.stack = [];
//
// Stores the element
//
EYES.follow = function(eye, xOffset, yOffset)
{
    // Get the "white"
    var el1 = document.getElementById(eye);
    // And the "pupil"
    var el2 = el1.getElementsByTagName("IMG");
    el2 = el2[0];
    el2.xOffset = xOffset ? xOffset : 0;
    el2.yOffset = yOffset ? yOffset : 0;
    // Figure out the "centre" (for the top-left coords)
    el2.centre = (el1.offsetWidth - el2.offsetWidth) / 2;
    el2.style.margin = el2.centre + "px 0 0 " + el2.centre + "px";
    // The "max" distance is N x the width
    //  I used trial and error for this, do have a fiddle!
    el1.maxDist = 10 * el1.offsetWidth;
    // Add them to the list
    EYES.stack.push([el1, el2]);
};
EYES.mousemove = function(e)
{
    if (!EYES.stack.length)
    {
        return;
    }
    //
    // Cheers to quirksmode for mouse position lark!
    //  http://www.quirksmode.org/js/events_properties.html#position
    //
    var mouseX = mouseY = 0;
    if (!e) var e = window.event;

    /*
    if (e.pageX || e.pageY)
    {
        mouseX = e.pageX;
        mouseY = e.pageY;
    }
    else if (e.clientX || e.clientY)
    {
        mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }*/

    if (!browserRef.isIE)
    {
        mouseX = e.screenX;
        mouseY = e.screenY;
    }
    else if (browserRef.version < 7)
    {
        mouseX = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
        mouseY = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;
    }
    else
    {
        mouseX = e.clientX;
        mouseY = e.clientY;
    }
    //
    // Loop through all the defined eyes and calc them!
    //
    for (var e = 0, l = EYES.stack.length; e < l; e++)
    {
        var el = EYES.stack[e];
        // Calculate it's position on the page
        //  (quirksmode based)
        var elX = elY = 0;
        if (el[0].offsetParent)
        {
            obj = el[0];
            do
            {
                elX += obj.offsetLeft;
                elY += obj.offsetTop;
            } while (obj = obj.offsetParent);
        }
        el[0].centreX = elX + Math.round(el[0].offsetWidth / 2);
        el[0].centreY = elY + Math.round(el[0].offsetHeight / 2);
        // Compare to the mouse position
        var difX = mouseX - el[0].centreX;
        var difY = mouseY - el[0].centreY;
        var dTan = Math.atan2(difX, difY);
        var dist = Math.sqrt((difX * difX) + (difY * difY));
        //dist = Math.sin((dist > el[0].maxDist ? 1 : dist / el[0].maxDist));
        if (dist > el[0].maxDist)
            dist = 1;
        else if (dist > el[0].maxDist / 3)
            dist = dist / el[0].maxDist;
        else if (dist > el[0].maxDist / 6)
            dist = (2 - 12 * dist / el[0].maxDist) / 5 + 0.7;
        else
            dist = (21 / 5) * dist / el[0].maxDist;
        // What's the pupil position?
        var newX = el[1].xOffset + el[1].centre + Math.round(Math.sin(dTan) * el[1].centre * dist);
        var newY = el[1].yOffset + el[1].centre + Math.round(Math.cos(dTan) * el[1].centre * dist);
        el[1].style.margin = newY + "px 0 0 " + newX + "px";
    }
};
//
// Automatically add the mouse event to the document
//
if (window.attachEvent)
    document.attachEvent("onmousemove", EYES.mousemove);
else
    document.addEventListener("mousemove", EYES.mousemove, false);
