/**
* @license 
* jQuery Tools 1.2.4 / Overlay Apple effect. 
* 
* NO COPYRIGHTS OR LICENSES. DO WHAT YOU LIKE.
* 
* http://flowplayer.org/tools/overlay/apple.html
*
* Since: July 2009
* Date:    Sun Aug 15 08:16:31 2010 +0000 
*
*
* Minified version done using http://javascriptcompressor.com/ with options: Base64 encode and Shrink variables 
*
*/
(function ($) {

    // version number
    var t = $.tools.overlay,
		 w = $(window);

    // extend global configuragion with effect specific defaults
    $.extend(t.conf, {
        start: {
            top: null,
            left: null
        },

        fadeInSpeed: 'fast',
        zIndex: 9999
    });

    // utility function
    function getPosition(el) {
        var p = el.offset();
        return {
            top: p.top + el.height() / 2,
            left: p.left + el.width() / 2
        };
    }

    //{{{ load 

    var loadEffect = function (pos, onLoad) {

        var overlay = this.getOverlay(),
			 conf = this.getConf(),
			 trigger = this.getTrigger(),
			 self = this,
			 oWidth = overlay.outerWidth({ margin: true }),
			 img = overlay.data("img");


        // growing image is required.
        if (!img) {
            var bg = overlay.css("backgroundImage");

            if (!bg) {
                throw "background-image CSS property not set for overlay";
            }

            // url("bg.jpg") --> bg.jpg
            bg = bg.slice(bg.indexOf("(") + 1, bg.indexOf(")")).replace(/\"/g, "");
            overlay.css("backgroundImage", "none");

            img = $('<img src="' + bg + '"/>');
            img.css({ border: 0, display: 'none' }).width(oWidth);

            $('body').append(img);
            overlay.data("img", img);
        }

        // initial top & left
        var itop = conf.start.top || Math.round(w.height() / 2),
			 ileft = conf.start.left || Math.round(w.width() / 2);

        if (trigger) {
            var p = getPosition(trigger);
            itop = p.top;
            ileft = p.left;
        }

        // initialize background image and make it visible
        img.css({
            position: 'absolute',
            top: itop,
            left: ileft,
            width: 0,
            zIndex: conf.zIndex
        }).show();


        // put overlay into final position
        pos.top += w.scrollTop();
        pos.left += w.scrollLeft();
        pos.position = 'absolute';
        overlay.css(pos);

        // begin growing
       img.animate({
            top: overlay.css("top"),
            left: overlay.css("left"),
            width: oWidth
        }, conf.speed, function () {

            if (conf.fixed) {
                pos.top -= w.scrollTop();
                pos.left -= w.scrollLeft();
                pos.position = 'fixed';
                img.add(overlay).css(pos);
            }

            // set close button and content over the image
            overlay.css("zIndex", conf.zIndex + 1).fadeIn(conf.fadeInSpeed, function () {

                if (self.isOpened() && !$(this).index(overlay)) {
                    onLoad.call();
                } else {
                    overlay.hide();
                }
            });
        });

    };
    //}}}


    var closeEffect = function (onClose) {

        // variables
        var overlay = this.getOverlay().hide(),
			 conf = this.getConf(),
			 trigger = this.getTrigger(),
			 img = overlay.data("img"),

			 css = {
			     top: conf.start.top,
			     left: conf.start.left,
			     width: 0
			 };

        // trigger position
        if (trigger) { $.extend(css, getPosition(trigger)); }


        // change from fixed to absolute position
        if (conf.fixed) {
            img.css({ position: 'absolute' })
				.animate({ top: "+=" + w.scrollTop(), left: "+=" + w.scrollLeft() }, 0);
        }

        // shrink image		
        img.animate(css, conf.closeSpeed, onClose);
    };


    // add overlay effect	
    t.addEffect("apple", loadEffect, closeEffect);

})(jQuery);	
		

