// ColorBox v1.3.8 - a full featured, light-weight, customizable lightbox based on jQuery 1.3
(function(b,gb){
    var v="none",t="click",N="LoadedContent",d=false,x="resize.",o="y",u="auto",f=true,M="nofollow",q="on",n="x";
    function e(a,c){
        a=a?' id="'+k+a+'"':"";
        return b("<div"+a+(c?' style="'+c+'"':"")+"/>")
        }
        function p(a,b){
        b=b===n?m.width():m.height();
        return typeof a==="string"?Math.round(a.match(/%/)?b/100*parseInt(a,10):parseInt(a,10)):a
        }
        function Q(c){
        c=b.isFunction(c)?c.call(h):c;
        return a.photo||c.match(/\.(gif|png|jpg|jpeg|bmp)(?:\?([^#]*))?(?:#(\.*))?$/i)
        }
        function cb(){
        for(var c in a)if(b.isFunction(a[c])&&c.substring(0,2)!==q)a[c]=a[c].call(h);a.rel=a.rel||h.rel||M;
        a.href=a.href||b(h).attr("href");
        a.title=a.title||h.title
        }
        function db(d){
        h=d;
        a=b.extend({},b(h).data(r));
        cb();
        if(a.rel!==M){
            i=b("."+H).filter(function(){
                return (b(this).data(r).rel||this.rel)===a.rel
                });
            g=i.index(h);
            if(g===-1){
                i=i.add(h);
                g=i.length-1
                }
            }else{
        i=b(h);
        g=0
        }
        if(!w){
        w=F=f;
        R=h;
        try{
            R.blur()
            }catch(e){}
        b.event.trigger(hb);
        a.onOpen&&a.onOpen.call(h);
        y.css({
            opacity:+a.opacity,
            cursor:a.overlayClose?"pointer":u
            }).show();
        a.w=p(a.initialWidth,n);
        a.h=p(a.initialHeight,o);
        c.position(0);
        S&&m.bind(x+O+" scroll."+O,function(){
            y.css({
                width:m.width(),
                height:m.height(),
                top:m.scrollTop(),
                left:m.scrollLeft()
                })
            }).trigger("scroll."+O)
        }
        T.add(I).add(J).add(z).add(U).hide();
    V.html(a.close).show();
    c.slideshow();
    c.load()
    }
    var eb={
    transition:"elastic",
    speed:300,
    width:d,
    initialWidth:"600",
    innerWidth:d,
    maxWidth:d,
    height:d,
    initialHeight:"450",
    innerHeight:d,
    maxHeight:d,
    scalePhotos:f,
    scrolling:f,
    inline:d,
    html:d,
    iframe:d,
    photo:d,
    href:d,
    title:d,
    rel:d,
    opacity:.9,
    preloading:f,
    current:"image {current} of {total}",
    previous:"previous",
    next:"next",
    close:"close",
    open:d,
    loop:f,
    slideshow:d,
    slideshowAuto:f,
    slideshowSpeed:2500,
    slideshowStart:"start slideshow",
    slideshowStop:"stop slideshow",
    onOpen:d,
    onLoad:d,
    onComplete:d,
    onCleanup:d,
    onClosed:d,
    overlayClose:f,
    escKey:f,
    arrowKey:f
},r="colorbox",k="cbox",hb=k+"_open",P=k+"_load",W=k+"_complete",X=k+"_cleanup",fb=k+"_closed",G=b.browser.msie&&!b.support.opacity,S=G&&b.browser.version<7,O=k+"_IE6",y,j,E,s,Y,Z,ab,bb,i,m,l,K,L,U,T,z,J,I,V,C,D,A,B,h,R,g,a,w,F,c,H=k+"Element";
c=b.fn[r]=b[r]=function(c,d){
    var a=this;
    if(!a[0]&&a.selector)return a;
    c=c||{};

    if(d)c.onComplete=d;
    if(!a[0]||a.selector===undefined){
        a=b("<a/>");
        c.open=f
        }
        a.each(function(){
        b(this).data(r,b.extend({},b(this).data(r)||eb,c)).addClass(H)
        });
    c.open&&db(a[0]);
    return a
    };

c.init=function(){
    var h="hover";
    m=b(gb);
    j=e().attr({
        id:r,
        "class":G?k+"IE":""
        });
    y=e("Overlay",S?"position:absolute":"").hide();
    E=e("Wrapper");
    s=e("Content").append(l=e(N,"width:0; height:0"),L=e("LoadingOverlay").add(e("LoadingGraphic")),U=e("Title"),T=e("Current"),J=e("Next"),I=e("Previous"),z=e("Slideshow"),V=e("Close"));
    E.append(e().append(e("TopLeft"),Y=e("TopCenter"),e("TopRight")),e().append(Z=e("MiddleLeft"),s,ab=e("MiddleRight")),e().append(e("BottomLeft"),bb=e("BottomCenter"),e("BottomRight"))).children().children().css({
        "float":"left"
    });
    K=e(d,"position:absolute; width:9999px; visibility:hidden; display:none");
    b("body").prepend(y,j.append(E,K));
    s.children().hover(function(){
        b(this).addClass(h)
        },function(){
        b(this).removeClass(h)
        }).addClass(h);
    C=Y.height()+bb.height()+s.outerHeight(f)-s.height();
    D=Z.width()+ab.width()+s.outerWidth(f)-s.width();
    A=l.outerHeight(f);
    B=l.outerWidth(f);
    j.css({
        "padding-bottom":C,
        "padding-right":D
    }).hide();
    J.click(c.next);
    I.click(c.prev);
    V.click(c.close);
    s.children().removeClass(h);
    b("."+H).live(t,function(a){
        if(a.button!==0&&typeof a.button!=="undefined"||a.ctrlKey||a.shiftKey||a.altKey)return f;
        else{
            db(this);
            return d
            }
        });
y.click(function(){
    a.overlayClose&&c.close()
    });
b(document).bind("keydown",function(b){
    if(w&&a.escKey&&b.keyCode===27){
        b.preventDefault();
        c.close()
        }
        if(w&&a.arrowKey&&!F&&i[1])if(b.keyCode===37&&(g||a.loop)){
        b.preventDefault();
        I.click()
        }else if(b.keyCode===39&&(g<i.length-1||a.loop)){
        b.preventDefault();
        J.click()
        }
    })
};

c.remove=function(){
    j.add(y).remove();
    b("."+H).die(t).removeData(r).removeClass(H)
    };

c.position=function(f,b){
    function c(a){
        Y[0].style.width=bb[0].style.width=s[0].style.width=a.style.width;
        L[0].style.height=L[1].style.height=s[0].style.height=Z[0].style.height=ab[0].style.height=a.style.height
        }
        var e,h=Math.max(m.height()-a.h-A-C,0)/2+m.scrollTop(),g=Math.max(m.width()-a.w-B-D,0)/2+m.scrollLeft();
    e=j.width()===a.w+B&&j.height()===a.h+A?0:f;
    E[0].style.width=E[0].style.height="9999px";
    j.dequeue().animate({
        width:a.w+B,
        height:a.h+A,
        top:h,
        left:g
    },{
        duration:e,
        complete:function(){
            c(this);
            F=d;
            E[0].style.width=a.w+B+D+"px";
            E[0].style.height=a.h+A+C+"px";
            b&&b()
            },
        step:function(){
            c(this)
            }
        })
};

c.resize=function(b){
    if(w){
        b=b||{};

        if(b.width)a.w=p(b.width,n)-B-D;
        if(b.innerWidth)a.w=p(b.innerWidth,n);
        l.css({
            width:a.w
            });
        if(b.height)a.h=p(b.height,o)-A-C;
        if(b.innerHeight)a.h=p(b.innerHeight,o);
        if(!b.innerHeight&&!b.height){
            b=l.wrapInner("<div style='overflow:auto'></div>").children();
            a.h=b.height();
            b.replaceWith(b.children())
            }
            l.css({
            height:a.h
            });
        c.position(a.transition===v?0:a.speed)
        }
    };

c.prep=function(o){
    var d="hidden";
    function n(t){
        var o,q,s,n,d=i.length,e=a.loop;
        c.position(t,function(){
            function t(){
                G&&j[0].style.removeAttribute("filter")
                }
                if(w){
                G&&p&&l.fadeIn(100);
                a.iframe&&b("<iframe frameborder=0"+(a.scrolling?"":" scrolling='no'")+(G?" allowtransparency='true'":"")+"/>").appendTo(l).attr({
                    src:a.href,
                    name:(new Date).getTime()
                    });
                l.show();
                U.show().html(a.title);
                if(d>1){
                    T.html(a.current.replace(/\{current\}/,g+1).replace(/\{total\}/,d)).show();
                    J[e||g<d-1?"show":"hide"]().html(a.next);
                    I[e||g?"show":"hide"]().html(a.previous);
                    o=g?i[g-1]:i[d-1];
                    s=g<d-1?i[g+1]:i[0];
                    if(a.slideshow){
                        z.show();
                        g===d-1&&!e&&j.is("."+k+"Slideshow_on")&&z.click()
                        }
                        if(a.preloading){
                        n=b(s).data(r).href||s.href;
                        q=b(o).data(r).href||o.href;
                        if(Q(n))b("<img/>")[0].src=n;
                        if(Q(q))b("<img/>")[0].src=q
                            }
                        }
                L.hide();
            a.transition==="fade"?j.fadeTo(f,1,function(){
                t()
                }):t();
            m.bind(x+k,function(){
                c.position(0)
                });
            b.event.trigger(W);
            a.onComplete&&a.onComplete.call(h)
            }
        })
}
if(w){
    var p,f=a.transition===v?0:a.speed;
    m.unbind(x+k);
    l.remove();
    l=e(N).html(o);
    l.hide().appendTo(K.show()).css({
        width:function(){
            a.w=a.w||l.width();
            a.w=a.mw&&a.mw<a.w?a.mw:a.w;
            return a.w
            }(),
        overflow:a.scrolling?u:d
        }).css({
        height:function(){
            a.h=a.h||l.height();
            a.h=a.mh&&a.mh<a.h?a.mh:a.h;
            return a.h
            }()
        }).prependTo(s);
    K.hide();
    b("#"+k+"Photo").css({
        cssFloat:v
    });
    S&&b("select").not(j.find("select")).filter(function(){
        return this.style.visibility!==d
        }).css({
        visibility:d
    }).one(X,function(){
        this.style.visibility="inherit"
        });
    a.transition==="fade"?j.fadeTo(f,0,function(){
        n(0)
        }):n(f)
    }
};

c.load=function(){
    var j,d,q,m=c.prep;
    F=f;
    h=i[g];
    a=b.extend({},b(h).data(r));
    cb();
    b.event.trigger(P);
    a.onLoad&&a.onLoad.call(h);
    a.h=a.height?p(a.height,o)-A-C:a.innerHeight&&p(a.innerHeight,o);
    a.w=a.width?p(a.width,n)-B-D:a.innerWidth&&p(a.innerWidth,n);
    a.mw=a.w;
    a.mh=a.h;
    if(a.maxWidth){
        a.mw=p(a.maxWidth,n)-B-D;
        a.mw=a.w&&a.w<a.mw?a.w:a.mw
        }
        if(a.maxHeight){
        a.mh=p(a.maxHeight,o)-A-C;
        a.mh=a.h&&a.h<a.mh?a.h:a.mh
        }
        j=a.href;
    L.show();
    if(a.inline){
        e("InlineTemp").hide().insertBefore(b(j)[0]).bind(P+" "+X,function(){
            b(this).replaceWith(l.children())
            });
        m(b(j))
        }else if(a.iframe)m(" ");
    else if(a.html)m(a.html);
    else if(Q(j)){
        d=new Image;
        d.onload=function(){
            var e;
            d.onload=null;
            d.id=k+"Photo";
            b(d).css({
                margin:u,
                border:v,
                display:"block",
                cssFloat:"left"
            });
            if(a.scalePhotos){
                q=function(){
                    d.height-=d.height*e;
                    d.width-=d.width*e
                    };

                if(a.mw&&d.width>a.mw){
                    e=(d.width-a.mw)/d.width;
                    q()
                    }
                    if(a.mh&&d.height>a.mh){
                    e=(d.height-a.mh)/d.height;
                    q()
                    }
                }
            if(a.h)d.style.marginTop=Math.max(a.h-d.height,0)/2+"px";
        setTimeout(function(){
            m(d)
            },1);
        i[1]&&(g<i.length-1||a.loop)&&b(d).css({
            cursor:"pointer"
        }).click(c.next);
        if(G)d.style.msInterpolationMode="bicubic"
            };

    d.src=j
    }else e().appendTo(K).load(j,function(c,a,b){
    m(a==="error"?"Request unsuccessful: "+b.statusText:this)
    })
};

c.next=function(){
    if(!F){
        g=g<i.length-1?g+1:0;
        c.load()
        }
    };

c.prev=function(){
    if(!F){
        g=g?g-1:i.length-1;
        c.load()
        }
    };

c.slideshow=function(){
    function f(){
        z.text(a.slideshowStop).bind(W,function(){
            d=setTimeout(c.next,a.slideshowSpeed)
            }).bind(P,function(){
            clearTimeout(d)
            }).one(t,function(){
            e()
            });
        j.removeClass(b+"off").addClass(b+q)
        }
        var e,d,b=k+"Slideshow_";
    z.bind(fb,function(){
        z.unbind();
        clearTimeout(d);
        j.removeClass(b+"off "+b+q)
        });
    e=function(){
        clearTimeout(d);
        z.text(a.slideshowStart).unbind(W+" "+P).one(t,function(){
            f();
            d=setTimeout(c.next,a.slideshowSpeed)
            });
        j.removeClass(b+q).addClass(b+"off")
        };

    if(a.slideshow&&i[1])a.slideshowAuto?f():e()
        };

c.close=function(){
    if(w){
        w=d;
        b.event.trigger(X);
        a.onCleanup&&a.onCleanup.call(h);
        m.unbind("."+k+" ."+O);
        y.fadeTo("fast",0);
        j.stop().fadeTo("fast",0,function(){
            j.find("iframe").attr("src","about:blank");
            l.remove();
            j.add(y).css({
                opacity:1,
                cursor:u
            }).hide();
            try{
                R.focus()
                }catch(c){}
            setTimeout(function(){
                b.event.trigger(fb);
                a.onClosed&&a.onClosed.call(h)
                },1)
            })
        }
    };

c.element=function(){
    return b(h)
    };

c.settings=eb;
b(c.init)
})(jQuery,this);
/**
 *
 * credits for this plugin go to brandonaaron.net
 *
 * unfortunately his site is down
 *
 * @param {Object} up
 * @param {Object} down
 * @param {Object} preventDefault
 */
jQuery.fn.extend({
    mousewheel: function(up, down, preventDefault) {
        return this.hover(
            function() {
                jQuery.event.mousewheel.giveFocus(this, up, down, preventDefault);
            },
            function() {
                jQuery.event.mousewheel.removeFocus(this);
            }
            );
    },
    mousewheeldown: function(fn, preventDefault) {
        return this.mousewheel(function(){}, fn, preventDefault);
    },
    mousewheelup: function(fn, preventDefault) {
        return this.mousewheel(fn, function(){}, preventDefault);
    },
    unmousewheel: function() {
        return this.each(function() {
            jQuery(this).unmouseover().unmouseout();
            jQuery.event.mousewheel.removeFocus(this);
        });
    },
    unmousewheeldown: jQuery.fn.unmousewheel,
    unmousewheelup: jQuery.fn.unmousewheel
});


jQuery.event.mousewheel = {
    giveFocus: function(el, up, down, preventDefault) {
        if (el._handleMousewheel) jQuery(el).unmousewheel();

        if (preventDefault == window.undefined && down && down.constructor != Function) {
            preventDefault = down;
            down = null;
        }

        el._handleMousewheel = function(event) {
            if (!event) event = window.event;
            if (preventDefault)
                if (event.preventDefault) event.preventDefault();
                else event.returnValue = false;
            var delta = 0;
            if (event.wheelDelta) {
                delta = event.wheelDelta/120;
                if (window.opera) delta = -delta;
            } else if (event.detail) {
                delta = -event.detail/3;
            }
            if (up && (delta > 0 || !down))
                up.apply(el, [event, delta]);
            else if (down && delta < 0)
                down.apply(el, [event, delta]);
        };

        if (window.addEventListener)
            window.addEventListener('DOMMouseScroll', el._handleMousewheel, false);
        window.onmousewheel = document.onmousewheel = el._handleMousewheel;
    },

    removeFocus: function(el) {
        if (!el._handleMousewheel) return;

        if (window.removeEventListener)
            window.removeEventListener('DOMMouseScroll', el._handleMousewheel, false);
        window.onmousewheel = document.onmousewheel = null;
        el._handleMousewheel = null;
    }
};

/*
 *
 *  author: Damian Ignacio Valdes.
 *  email: damian.ignacio@gmail.com
 *  date first relase: Wed May 19, 8:15 AM
 *  REcontraBETA
 *
 * */

(function($) {

    $.fn.extend({

        customScroll: function(options){

            var deltaUp = 0;
            var deltaDown = 0;
            var intOverallDelta = 0;
            var contentSize  = 0;
            var currentPage  = 0;
            var countItems  = 0;
            var items  = new Array();
            var currentDelta  = 0;
            var onScroll  = false;
            var currentDirection  = 0;
            var firstScroll  = true;
            var scrollBarHeight  = 0;
            var $scroll_content;

            var $scrollButton,scrollBarSize,$scrollNext,$scrollPrev,countPages;

            var self = this;
            
            var defaults = {
                itemsPerScroll:1,
                scroll: ''

            }

            options = $.extend(defaults, options);

            var butHeight;
            

            _init();


            /***********/
            /* PRIVATE */
            /***********/

            function _init(){

                

                $scrollNext = $(".scroll_next",self);
                $scrollPrev = $(".scroll_prev",self);
                $scrollButton = $(".scroll_button",self);
                
                $scroll_content = $(".scroll_content",self);

                countItems = $(".item",$scroll_content).length;

                countPages = countItems%options.itemsPerScroll == 0 ?
                parseInt(countItems/options.itemsPerScroll):parseInt(countItems/options.itemsPerScroll) + 1;

                /* if(countPages < 2){
                     $scrollNext.hide();
                     
                } 

                $scrollPrev.hide(); */

                switch(options.scroll){
                    case 'vertical':
                        contentSize = $(".scroll_wrapper_inner",self).height();
                        scrollBarSize = $(".scroll_bar",self).outerHeight();

                       
                        break;
                    case 'horizontal':
                        contentSize = $(".scroll_wrapper_inner",self).width();
                        scrollBarSize = $(".scroll_bar",self).outerWidth();

                                                
                        break;
                    default:
                        contentSize = $(".scroll_wrapper_inner",self).height();

                }

                butHeight = $scrollButton.height();

                $(".scroll_next, .scroll_prev",self).mousedown(function(){
                    return false;
                });

                $scrollNext.click(function(){
                    _scrollNext();
                });

                $scrollPrev.click(function(){
                    _scrollPrev();
                });


                self.mousewheel(function(){

                    //if(onScroll){ return false; }

                    /* if(deltaUp < 4){
                deltaUp++;
                return false;
            }

            deltaUp = 0; */

                    _scrollPrev();

                    return false;
                },
                function(){

                    //if($.event.customScroll.onScroll){ return false; }

                    /* if(deltaDown < 4){
                deltaDown++;
                return false;
            } */

                    deltaDown = 0;

                    _scrollNext();

                    return false;
                },true);




            }

            function _scrollNext(){

                currentPage++;

                if(currentPage > (countPages - 1) ){
                    currentPage--;
                    
                    return;
                }

           

                onScroll = true;

                var amount = parseInt((-1)*(currentPage * contentSize));
                var toScroll = {};

                switch(options.scroll){

                    case 'vertical':
                        toScroll.top = amount;
                        
                        
                        break;
                    case 'horizontal':
                        
                        toScroll.left = amount;
                        break;
                    default:
                        toScroll.top = amount;
                }

               

                $scroll_content.animate(
                    toScroll
                    ,600, function(){
                        onScroll = false;
                    });
            }

            function _scrollPrev(){

                currentPage--;
                
                if(currentPage < 0 ){
                    currentPage = 0;
                    return;
                }
                onScroll = true;

                var amount = parseInt((-1)*(currentPage * contentSize ));
                var toScroll = {};

                switch(options.scroll){
                    case 'vertical':

                        
                        toScroll.top = amount;
                        break;
                    case 'horizontal':
                        
                        toScroll.left = amount;
                        break;
                    default:
                        toScroll.top = amount;
                }

                $scroll_content.animate(
                    toScroll
                    ,600, function(){
                        onScroll = false;
                    });
            }


        }
    });

})(jQuery);



(function($) {

    $.fn.extend({

        customImageBorder: function(callback){

            var imageBorderWidth = 11;
            var self = this;
            var $this_glow_box = [];
            var $this_parent = [];
            var $this_inner_t = [];
            var $this_inner_b = [];
            var $this_inner = [];
            var maxWidth = 600;
            var maxHeight = 400;

            _init();

            /***********/
            /* PRIVATE */
            /***********/

            function _init(){

                self.each(function(i,obj){

                    var imgStyle, imgType,imgRatio;

                    imgStyle = 'background-color: transparent; ' + $(this).attr('style');

                    imgType = $(obj).hasClass('no_glow_box') ? 'no_glow_box':'glow_box';

                    $(obj).removeAttr("style");

                    $this_glow_box[i] = $('<span style="' + imgStyle + '" id="glow_box_' + i + '" class="' + imgType + '">'+
                        '<span class="inner_tr"><span class="inner_tl"><span class="inner_t"></span></span></span>'+
                        '<span class="inner_ml"><span class="inner_mr">'+
                        '<img src="includes/css/images/ajax_loader.gif" width="16" height="16" alt="loading..." />'+
                        '</span></span><span class="inner_br"><span class="inner_bl"><span class="inner_b">'+
                        '</span></span></span></span>');


                    $this_parent[i] = $(obj).parent();

                    $this_inner_t[i] = $this_glow_box[i].find(".inner_t");
                    $this_inner_b[i] = $this_glow_box[i].find(".inner_b");
                    
                    $this_inner[i] = $this_glow_box[i].find(".inner_mr");

        

                    loadImage(obj,function(img){

                        imgRatio = img.width / img.height;

                        if(img.width > maxWidth - 2 * imageBorderWidth){
                            
                            img.width = maxWidth - 2 * imageBorderWidth;
                            img.height = img.width/imgRatio;
                        }
                        
                        if(img.height > maxHeight - 2 * imageBorderWidth){
                        
                            img.height = maxHeight - 2 * imageBorderWidth;
                            img.width = img.height*imgRatio;
                        }



                        $this_inner[i].width(img.width).height(img.height);                     
                        $this_inner_t[i].width(img.width);
                        $this_inner_b[i].width(img.width);

                                                 
                        $this_inner[i].html($(img));

                        if( typeof callback == 'function'){
                          
                            callback($this_glow_box[i]);

                        }else{
                            if($this_glow_box[i].css('margin-right') == 'auto' && $this_glow_box[i].css('margin-left') == 'auto'){
                                $this_parent[i].append('<p id="glow_box_p_' + i + '" style="text-align: center;"></p>');
                                $this_glow_box[i].appendTo("#glow_box_p_" + i);
                            }else if($this_glow_box[i].css('float') == 'left' || $this_glow_box[i].css('float') == 'right'){
                                $this_parent[i].append('<p id="glow_box_p_' + i + '" style="text-align: center;"></p>');
                                $this_glow_box[i].appendTo("#glow_box_p_" + i);
                                $("#glow_box_p_" + i).css('float',$this_glow_box[i].css('float'));
                                $this_glow_box[i].css('float','none');
                            }else{
                                $this_parent[i].css('display','inline-block');
                            } 

                            $this_parent[i].append($this_glow_box[i]);
                        }
                        return;
                    });
                });
            }
            

            function loadImage(img,loadImageCallback){

                if(img.complete){
                    loadImageCallback(img);
                }else{
                    $(img).load(function(){
                        loadImageCallback(img);
                    });
                }
            }
        }
    });

})(jQuery);




function imgpreload(imgs,settings)
{
    // settings = { each:Function, all:Function }
    if (settings instanceof Function){
        settings = {
            all:settings
        };
    }

    // use of typeof required
    // https://developer.mozilla.org/En/Core_JavaScript_1.5_Reference/Operators/Special_Operators/Instanceof_Operator#Description
    if (typeof imgs == "string") {
        imgs = [imgs];
    }

    var loaded = [];
    var t = imgs.length;
    var i = 0;

    for (i; i<t; i++)
    {
        var img = new Image();
        img.onload = function()
        {
            loaded.push(this);
            if (settings.each instanceof Function) {
                settings.each.call(this);
            }
            if (loaded.length>=t && settings.all instanceof Function) {
                settings.all.call(loaded);
            }
        };
        img.src = imgs[i];
    }
}


(function($){

    // extend jquery (because i love jQuery)
    $.imgpreload = imgpreload;

    // public
    $.fn.imgpreload = function(settings)
    {
        settings = $.extend({},$.fn.imgpreload.defaults,(settings instanceof Function)?{
            all:settings
        }:settings);

        this.each(function()
        {
            var elem = this;

            imgpreload($(this).attr('src'),function()
            {
                if (settings.each instanceof Function) {
                    settings.each.call(elem);
                }
            });
        });

        // declare urls and loop here (loop a second time) to prevent
        // pollution of above closure with unnecessary variables

        var urls = [];

        this.each(function()
        {
            urls.push($(this).attr('src'));
        });

        var selection = this;

        imgpreload(urls,function()
        {
            if (settings.all instanceof Function) {
                settings.all.call(selection);
            }
        });

        return this;
    };

    // public
    $.fn.imgpreload.defaults =
    {
        each: null // callback invoked when each image in a group loads
        ,
        all: null // callback invoked when when the entire group of images has loaded
    };
})(jQuery);








