    var xm = 0;
    var ym = 0;

    document.onmousemove = function(e){
            if (window.event) e=window.event;
            xm = e.clientX;
            ym = e.clientY;
    }

    var panel = {
            speed : .004,
            t : 0,
            O : [],
            over : false,

            run : function() {
                    panel.t += panel.speed;
                    for (var i = 0, o; o = panel.O[i]; i++)
                            o.anim(i + panel.t);
            },

            init : function(){
	                document.getElementById("screen").style.visibility="visible";
					document.getElementById("loading").style.visibility="hidden";
                    for (var i = 0, o; o = document.images[i]; i++){
                            if (o.className.indexOf('panel') >= 0) {
                                    if(o.parentNode.href != undefined) {
                                            var div = document.createElement("a");
                                            div.href = o.parentNode.href;
                                    } else {
                                            var div = document.createElement("div");
                                    }
                                    div.className = 'panel';
                                    var img = document.createElement("img");
                                    img.src = o.src;
                                    img.className = 'imgPanel';
                                    o.parentNode.replaceChild(div,o);
                                    div.appendChild(img);
                                    div.ims = img.style;
                                    div.iw = img.width;
                                    div.ih = img.height;
                                    div.cx = -div.iw / 2;
                                    div.cy = -div.ih / 2;
                                    div.anim = function(t) {
                                            nw = this.offsetWidth;
                                            nh = this.offsetHeight;
                                            if (panel.over == this){
                                                    for (var nx = 0, ny = 0, o = this; o != null; o = o.offsetParent) nx += o.offsetLeft, ny += o.offsetTop;
                                                    var x = Math.max(-this.iw + nw, Math.min(0, (-(xm - nx) * (this.iw - nw)) / nw));
                                                    var y = Math.max(-this.ih + nh, Math.min(0, (-(ym - ny) * (this.ih - nh)) / nh));
                                                    if (Math.abs(xm-nx-nw * .5) > nw || Math.abs(ym-ny-nh * .5) > nw ) panel.over = false;
                                            } else {
                                                    var mx = (this.iw - nw) * .5;
                                                    var my = (this.ih - nh) * .5;
                                                    var x = -mx * (1 + Math.cos(t * 1.2));
                                                    var y = -my * (1 + Math.sin(t));
                                            }
                                            this.cx += (x - this.cx) * .1;
                                            this.cy += (y - this.cy) * .1;
                                            this.ims.left = Math.round(this.cx) + 'px';
                                            this.ims.top  = Math.round(this.cy) + 'px';
                                    }

                                    div.onmouseover = function()
                                    {
                                            panel.over = this;
                                    }
                                    this.O.push(div);
                            }
                    }
                    setInterval(panel.run, 16);
            }
    }


    window.onload = function ()
    {
            panel.init();
    }

