 
/*          */
/*  WORKS   */
/*          */


    
  /*  Returns prev/next work  */
    function getPrevWork(work){
        var prev = $("#"+work.find(".prev").val());
        if (prev.length)
            return prev;
        return 0;
    }
    function getNextWork(work){
        var next = $("#"+work.find(".next").val());
        if (next.length)
            return next;
        return 0;
    }


/*                  */
/*  ZOOM HANDLING   */
/*                  */
    
  /*  Selecting work + fading zoom box + displaying zoom  */
    function workSelect(work){
        $("#works .selected").removeClass("selected");
        work.addClass("selected");
        if (work.find(".zoom_block").not(":visible"))
            displayZoom(work);
    }
    
  /*  Displays zoom image + previous/next arrows  */
    function displayZoom(work){
        if ($("#works .work .zoom_block:visible").length){
            $("#works .work .zoom_block:visible").each(function(){
                hideZoom($(this).parent(".work"));
            });
        }

        var zoom_block = work.find("div.zoom_block");
        var h = 302;
        var w = 402;
        
        work.addClass("zoom")
            .find("img.thumb").hide(); // Hiding Thumb to prepare animation
        
        $("#zoom")
            .html(zoom_block.html())    // Saving original zoom content
            .addClass(work.attr("id"));
        
        zoom_block.show()
        .animate({
            height: h,
            width: w,
            paddingLeft: "40px",
            paddingRight: "40px",
            paddingBottom: "40px",
            marginTop: "-"+(h/2)+"px",
            marginLeft: "-"+(w/2+40)+"px"
            }, "slow", function(){
            
                if (getPrevWork(work) || $("#prev").length)
                    zoom_block.find(".zoom_prev").fadeIn();
                if (getNextWork(work) || $("#next").length)
                    zoom_block.find(".zoom_next").fadeIn();

                zoom_block.find("p, .close").fadeIn(); // title & link
                bindPrevNext(work);
            });
    }
    
    function hideZoom(work){
        var zoom_block = work.find("div.zoom_block");
        
        zoom_block.stop().hide()
            .css({
                height: 113,
                width: 150,
                paddingLeft: "0px",
                paddingRight: "0px",
                marginLeft: "-75px",
                marginTop: "-75px",
                paddingBottom: "18px"
            });

        /*  Replace original data  */    
        zoom_block.html($("#zoom").html());
        $("#zoom").removeClass(work.attr("class"));
        
        $("#works .last").removeClass("last");
        $("#works .work.zoom").removeClass("zoom");
        work.removeClass("selected").addClass("last");
    }

/*                  */
/*  ZOOM NAVIGATION */
/*                  */

    
    function workNav(zoom, target, page){
        if (target.length){
            selected = $("#works .work.selected");
            target.find(".zoom_block img.zoom_image").hide();
            
            if (target.attr("id") == selected.attr("id")){
                $("#zoom").find("img.zoom_image").hide();
                selected
                    .find(".zoom_block").html($("#zoom").html())
                    .find("img.zoom_image").fadeIn();
                        
            } else {
                selected
                    .find(".zoom_block").html(target.find(".zoom_block").html())
                    .find("img.zoom_image").fadeIn();
                target.addClass("zoom")
                    .find(".zoom_block img.zoom_image").show();    
            }
                
            zoom.removeClass("zoom");

            if (getPrevWork(target) || $("#prev").length)
                selected.find(".zoom_prev").show();
            
            if (getNextWork(target) || $("#next").length)
                selected.find(".zoom_next").show();
            
            selected.find("p").fadeIn();
            bindPrevNext(selected);
             
        } else if (page.length)
            window.location.href = page.find("a").attr("href");
    }


/*                  */
/*   HOVER EFFECT   */
/*                  */

    
    function workHover(){
        work = $(this);
        work.find('img.thumb')
            .animate({
                marginTop: '-75px',
                marginLeft: '-75px',
                top: '50%',
                left: '50%',
                width: '150px',
                height: '150px'
            }, 200);
    }
    
    function workOff(){
        work = $(this);
        if (work.find(".zoom_block").is(":visible")){
            hideZoom($(this));
            $(this).show();
        }
        // back to normal
        work.animate({ 
                height: '100px',
                width: '100px',
                marginTop: '0px',
                marginLeft: '0px'
            }, 150)
            .find('img.thumb').stop()
            .animate({
                marginTop: '0',
                marginLeft: '0',
                top: '0',
                left: '0',
                width: '100px',
                height: '100px'
            }, 150);
    }

/*                  */
/*   EVENT BINDING  */
/*                  */
    
    /*  Hover and Click behavior of work thumbnails. called from imageDisplay after loading of the image.  */
    function bindWork(work){
        work.click(function(){
            if (!$(this).hasClass("selected") && !$(this).hasClass("last") 
                || ($(this).hasClass("last") && !$("#works .selected").length))
                workSelect($(this));
            })
        
        .hoverIntent({    
            over: workHover,
            interval: 10,
            out: workOff
        });
    }
    
    function bindPrevNext(zone){
        zone.find(".zoom_prev")
            .unbind("click")
            .click(function(){
                var zoom = $("#works .zoom");
                if (!zoom.length)
                    zoom = $("#works .selected");
                workNav(zoom, getPrevWork(zoom), $("#prev"));
                return false;
            });
        zone.find(".zoom_next")
            .unbind("click")
            .click(function(){
                var zoom = $("#works .zoom");
                if (!zoom.length)
                    zoom = $("#works .selected");
                workNav(zoom, getNextWork(zoom), $("#next"));
                return false;
            });
    }

/*               */    
/*   WORK INIT   */
/*               */

  /*  Displaying image at end of loading  */
    function imageDisplay(img){
        $(img).fadeIn();
        bindWork($(img).parent(".work"));
    }
    
    function worksInit(){

    /*   initial behaviour of images   */
        $("#works .work img.thumb").onImagesLoad({
            itemCallback: imageDisplay
        });
        
/*        setTimeout(function(){
            $("#works .work img.thumb").fadeIn();
        }, 3000);*/
    }

