var fly = {
    show : function( e, $o ) {
        var v = fly.getViewport();
        var pageX = fly.getMouseCoord( v, e )[0] + 15;
        var pageY = fly.getMouseCoord( v, e )[1];
        $o.find( ".fly_pointer_right" ).addClass( "fly_pointer_left" ).removeClass( "fly_pointer_right" );
        if ( pageX + $o.width() > v.innerWidth + v.pageXOffset ) {
            pageX = pageX - $o.width() - 30;
            $o.find( ".inner" ).addClass( "inner_right" );
            $o.find( ".fly_pointer_left" ).addClass( "fly_pointer_right" ).removeClass( "fly_pointer_left" );
        }
        $o.css( "left", pageX ).css( "top", pageY+5 ).css( "display", "block" );
    },
    hide : function( e, $o ) {
        $o.css( "display", "none" );
    },
    getMouseCoord : function( v, e ) {
        ( !e ) ? e = window.event : e = e;
        ( e.pageX ) ? v.pageX = e.pageX : v.pageX = e.clientX + v.scrollLeft;
        ( e.pageY ) ? v.pageY = e.pageY : v.pageY = e.clientY + v.scrollTop;
        return [ e.pageX, e.pageY ];
    },
    getViewport : function() {
        var viewport = {}
        if ( self.innerHeight ) {
            viewport.pageYOffset = self.pageYOffset;
            viewport.pageXOffset = self.pageXOffset;
            viewport.innerHeight = self.innerHeight;
            viewport.innerWidth = self.innerWidth;
        } else if ( document.documentElement && document.documentElement.clientHeight ) {
            viewport.pageYOffset = document.documentElement.scrollTop;
            viewport.pageXOffset = document.documentElement.scrollLeft;
            viewport.innerHeight = document.documentElement.clientHeight;
            viewport.innerWidth = document.documentElement.clientWidth;
        }
        return viewport;
    }
};

function geturl(addr) {  
        var r = $.ajax({  
        type: 'GET',  
        url: addr,  
        async: false  
        }).responseText;  
        return r;  
}  

$(function() {
            $( ".descfly").hover(function( e ) {
                var url = "/get-fly-image/"+this.id+"/";
                var descjson = geturl(url);
                var desc = JSON.parse(descjson).data;

                if (desc != "#") {
                
                        $( ".for-flying" ).html([
                            "<div class='fly' id='fly_",
                            this.id,
                            "'><div class='fly_pointer_left'><!-- fly pointer --></div><div class='inner'><img src='",
                            desc,
                            "'/></div></div>" ].join( "" ));
        
        
                            fly.show( e, $( "#fly_" + this.id ) );
                }
                }, function( e ) {
                    fly.hide( e, $( "#fly_" + this.id ) );

            });
});