Statistics
| Branch: | Tag: | Revision:

root / snf-astakos-app / astakos / im / static / im / js / jquery.colorbox.js @ 1571edb0

History | View | Annotate | Download (27.2 kB)

1 0f4a8a68 Olga Brani
// ColorBox v1.3.19 - jQuery lightbox plugin
2 0f4a8a68 Olga Brani
// (c) 2011 Jack Moore - jacklmoore.com
3 0f4a8a68 Olga Brani
// License: http://www.opensource.org/licenses/mit-license.php
4 0f4a8a68 Olga Brani
(function ($, document, window) {
5 0f4a8a68 Olga Brani
    var
6 0f4a8a68 Olga Brani
    // Default settings object.        
7 0f4a8a68 Olga Brani
    // See http://jacklmoore.com/colorbox for details.
8 0f4a8a68 Olga Brani
    defaults = {
9 0f4a8a68 Olga Brani
        transition: "elastic",
10 0f4a8a68 Olga Brani
        speed: 300,
11 0f4a8a68 Olga Brani
        width: false,
12 0f4a8a68 Olga Brani
        initialWidth: "600",
13 0f4a8a68 Olga Brani
        innerWidth: false,
14 0f4a8a68 Olga Brani
        maxWidth: false,
15 0f4a8a68 Olga Brani
        height: false,
16 0f4a8a68 Olga Brani
        initialHeight: "450",
17 0f4a8a68 Olga Brani
        innerHeight: false,
18 0f4a8a68 Olga Brani
        maxHeight: false,
19 0f4a8a68 Olga Brani
        scalePhotos: true,
20 0f4a8a68 Olga Brani
        scrolling: true,
21 0f4a8a68 Olga Brani
        inline: false,
22 0f4a8a68 Olga Brani
        html: false,
23 0f4a8a68 Olga Brani
        iframe: false,
24 0f4a8a68 Olga Brani
        fastIframe: true,
25 0f4a8a68 Olga Brani
        photo: false,
26 0f4a8a68 Olga Brani
        href: false,
27 0f4a8a68 Olga Brani
        title: false,
28 0f4a8a68 Olga Brani
        rel: false,
29 0f4a8a68 Olga Brani
        opacity: 0.9,
30 0f4a8a68 Olga Brani
        preloading: true,
31 0f4a8a68 Olga Brani
        current: "image {current} of {total}",
32 0f4a8a68 Olga Brani
        previous: "previous",
33 0f4a8a68 Olga Brani
        next: "next",
34 0f4a8a68 Olga Brani
        close: "close",
35 0f4a8a68 Olga Brani
        open: false,
36 0f4a8a68 Olga Brani
        returnFocus: true,
37 0f4a8a68 Olga Brani
        reposition: true,
38 0f4a8a68 Olga Brani
        loop: true,
39 0f4a8a68 Olga Brani
        slideshow: false,
40 0f4a8a68 Olga Brani
        slideshowAuto: true,
41 0f4a8a68 Olga Brani
        slideshowSpeed: 2500,
42 0f4a8a68 Olga Brani
        slideshowStart: "start slideshow",
43 0f4a8a68 Olga Brani
        slideshowStop: "stop slideshow",
44 0f4a8a68 Olga Brani
        onOpen: false,
45 0f4a8a68 Olga Brani
        onLoad: false,
46 0f4a8a68 Olga Brani
        onComplete: false,
47 0f4a8a68 Olga Brani
        onCleanup: false,
48 0f4a8a68 Olga Brani
        onClosed: false,
49 0f4a8a68 Olga Brani
        overlayClose: true,                
50 0f4a8a68 Olga Brani
        escKey: true,
51 0f4a8a68 Olga Brani
        arrowKey: true,
52 0f4a8a68 Olga Brani
        top: false,
53 0f4a8a68 Olga Brani
        bottom: false,
54 0f4a8a68 Olga Brani
        left: false,
55 0f4a8a68 Olga Brani
        right: false,
56 0f4a8a68 Olga Brani
        fixed: false,
57 0f4a8a68 Olga Brani
        data: undefined
58 0f4a8a68 Olga Brani
    },
59 0f4a8a68 Olga Brani
        
60 0f4a8a68 Olga Brani
    // Abstracting the HTML and event identifiers for easy rebranding
61 0f4a8a68 Olga Brani
    colorbox = 'colorbox',
62 0f4a8a68 Olga Brani
    prefix = 'cbox',
63 0f4a8a68 Olga Brani
    boxElement = prefix + 'Element',
64 0f4a8a68 Olga Brani
    
65 0f4a8a68 Olga Brani
    // Events        
66 0f4a8a68 Olga Brani
    event_open = prefix + '_open',
67 0f4a8a68 Olga Brani
    event_load = prefix + '_load',
68 0f4a8a68 Olga Brani
    event_complete = prefix + '_complete',
69 0f4a8a68 Olga Brani
    event_cleanup = prefix + '_cleanup',
70 0f4a8a68 Olga Brani
    event_closed = prefix + '_closed',
71 0f4a8a68 Olga Brani
    event_purge = prefix + '_purge',
72 0f4a8a68 Olga Brani
    
73 0f4a8a68 Olga Brani
    // Special Handling for IE
74 0f4a8a68 Olga Brani
    isIE = !$.support.opacity && !$.support.style, // IE7 & IE8
75 0f4a8a68 Olga Brani
    isIE6 = isIE && !window.XMLHttpRequest, // IE6
76 0f4a8a68 Olga Brani
    event_ie6 = prefix + '_IE6',
77 0f4a8a68 Olga Brani
78 0f4a8a68 Olga Brani
    // Cached jQuery Object Variables
79 0f4a8a68 Olga Brani
    $overlay,
80 0f4a8a68 Olga Brani
    $box,
81 0f4a8a68 Olga Brani
    $wrap,
82 0f4a8a68 Olga Brani
    $content,
83 0f4a8a68 Olga Brani
    $topBorder,
84 0f4a8a68 Olga Brani
    $leftBorder,
85 0f4a8a68 Olga Brani
    $rightBorder,
86 0f4a8a68 Olga Brani
    $bottomBorder,
87 0f4a8a68 Olga Brani
    $related,
88 0f4a8a68 Olga Brani
    $window,
89 0f4a8a68 Olga Brani
    $loaded,
90 0f4a8a68 Olga Brani
    $loadingBay,
91 0f4a8a68 Olga Brani
    $loadingOverlay,
92 0f4a8a68 Olga Brani
    $title,
93 0f4a8a68 Olga Brani
    $current,
94 0f4a8a68 Olga Brani
    $slideshow,
95 0f4a8a68 Olga Brani
    $next,
96 0f4a8a68 Olga Brani
    $prev,
97 0f4a8a68 Olga Brani
    $close,
98 0f4a8a68 Olga Brani
    $groupControls,
99 0f4a8a68 Olga Brani
    
100 0f4a8a68 Olga Brani
    // Variables for cached values or use across multiple functions
101 0f4a8a68 Olga Brani
    settings,
102 0f4a8a68 Olga Brani
    interfaceHeight,
103 0f4a8a68 Olga Brani
    interfaceWidth,
104 0f4a8a68 Olga Brani
    loadedHeight,
105 0f4a8a68 Olga Brani
    loadedWidth,
106 0f4a8a68 Olga Brani
    element,
107 0f4a8a68 Olga Brani
    index,
108 0f4a8a68 Olga Brani
    photo,
109 0f4a8a68 Olga Brani
    open,
110 0f4a8a68 Olga Brani
    active,
111 0f4a8a68 Olga Brani
    closing,
112 0f4a8a68 Olga Brani
    loadingTimer,
113 0f4a8a68 Olga Brani
    publicMethod,
114 0f4a8a68 Olga Brani
    div = "div",
115 0f4a8a68 Olga Brani
    init;
116 0f4a8a68 Olga Brani
117 0f4a8a68 Olga Brani
        // ****************
118 0f4a8a68 Olga Brani
        // HELPER FUNCTIONS
119 0f4a8a68 Olga Brani
        // ****************
120 0f4a8a68 Olga Brani
    
121 0f4a8a68 Olga Brani
        // Convience function for creating new jQuery objects
122 0f4a8a68 Olga Brani
    function $tag(tag, id, css) {
123 0f4a8a68 Olga Brani
                var element = document.createElement(tag);
124 0f4a8a68 Olga Brani
125 0f4a8a68 Olga Brani
                if (id) {
126 0f4a8a68 Olga Brani
                        element.id = prefix + id;
127 0f4a8a68 Olga Brani
                }
128 0f4a8a68 Olga Brani
129 0f4a8a68 Olga Brani
                if (css) {
130 0f4a8a68 Olga Brani
                        element.style.cssText = css;
131 0f4a8a68 Olga Brani
                }
132 0f4a8a68 Olga Brani
133 0f4a8a68 Olga Brani
                return $(element);
134 0f4a8a68 Olga Brani
    }
135 0f4a8a68 Olga Brani
136 0f4a8a68 Olga Brani
        // Determine the next and previous members in a group.
137 0f4a8a68 Olga Brani
        function getIndex(increment) {
138 0f4a8a68 Olga Brani
                var 
139 0f4a8a68 Olga Brani
                max = $related.length, 
140 0f4a8a68 Olga Brani
                newIndex = (index + increment) % max;
141 0f4a8a68 Olga Brani
                
142 0f4a8a68 Olga Brani
                return (newIndex < 0) ? max + newIndex : newIndex;
143 0f4a8a68 Olga Brani
        }
144 0f4a8a68 Olga Brani
145 0f4a8a68 Olga Brani
        // Convert '%' and 'px' values to integers
146 0f4a8a68 Olga Brani
        function setSize(size, dimension) {
147 0f4a8a68 Olga Brani
                return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
148 0f4a8a68 Olga Brani
        }
149 0f4a8a68 Olga Brani
        
150 0f4a8a68 Olga Brani
        // Checks an href to see if it is a photo.
151 0f4a8a68 Olga Brani
        // There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
152 0f4a8a68 Olga Brani
        function isImage(url) {
153 0f4a8a68 Olga Brani
                return settings.photo || /\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(url);
154 0f4a8a68 Olga Brani
        }
155 0f4a8a68 Olga Brani
        
156 0f4a8a68 Olga Brani
        // Assigns function results to their respective properties
157 0f4a8a68 Olga Brani
        function makeSettings() {
158 0f4a8a68 Olga Brani
        var i;
159 0f4a8a68 Olga Brani
        settings = $.extend({}, $.data(element, colorbox));
160 0f4a8a68 Olga Brani
        
161 0f4a8a68 Olga Brani
                for (i in settings) {
162 0f4a8a68 Olga Brani
                        if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
163 0f4a8a68 Olga Brani
                            settings[i] = settings[i].call(element);
164 0f4a8a68 Olga Brani
                        }
165 0f4a8a68 Olga Brani
                }
166 0f4a8a68 Olga Brani
        
167 0f4a8a68 Olga Brani
                settings.rel = settings.rel || element.rel || 'nofollow';
168 0f4a8a68 Olga Brani
                settings.href = settings.href || $(element).attr('href');
169 0f4a8a68 Olga Brani
                settings.title = settings.title || element.title;
170 0f4a8a68 Olga Brani
        
171 0f4a8a68 Olga Brani
        if (typeof settings.href === "string") {
172 0f4a8a68 Olga Brani
            settings.href = $.trim(settings.href);
173 0f4a8a68 Olga Brani
        }
174 0f4a8a68 Olga Brani
        }
175 0f4a8a68 Olga Brani
176 0f4a8a68 Olga Brani
        function trigger(event, callback) {
177 0f4a8a68 Olga Brani
                $.event.trigger(event);
178 0f4a8a68 Olga Brani
                if (callback) {
179 0f4a8a68 Olga Brani
                        callback.call(element);
180 0f4a8a68 Olga Brani
                }
181 0f4a8a68 Olga Brani
        }
182 0f4a8a68 Olga Brani
183 0f4a8a68 Olga Brani
        // Slideshow functionality
184 0f4a8a68 Olga Brani
        function slideshow() {
185 0f4a8a68 Olga Brani
                var
186 0f4a8a68 Olga Brani
                timeOut,
187 0f4a8a68 Olga Brani
                className = prefix + "Slideshow_",
188 0f4a8a68 Olga Brani
                click = "click." + prefix,
189 0f4a8a68 Olga Brani
                start,
190 0f4a8a68 Olga Brani
                stop,
191 0f4a8a68 Olga Brani
                clear;
192 0f4a8a68 Olga Brani
                
193 0f4a8a68 Olga Brani
                if (settings.slideshow && $related[1]) {
194 0f4a8a68 Olga Brani
                        start = function () {
195 0f4a8a68 Olga Brani
                                $slideshow
196 0f4a8a68 Olga Brani
                                        .text(settings.slideshowStop)
197 0f4a8a68 Olga Brani
                                        .unbind(click)
198 0f4a8a68 Olga Brani
                                        .bind(event_complete, function () {
199 0f4a8a68 Olga Brani
                                                if (settings.loop || $related[index + 1]) {
200 0f4a8a68 Olga Brani
                                                        timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
201 0f4a8a68 Olga Brani
                                                }
202 0f4a8a68 Olga Brani
                                        })
203 0f4a8a68 Olga Brani
                                        .bind(event_load, function () {
204 0f4a8a68 Olga Brani
                                                clearTimeout(timeOut);
205 0f4a8a68 Olga Brani
                                        })
206 0f4a8a68 Olga Brani
                                        .one(click + ' ' + event_cleanup, stop);
207 0f4a8a68 Olga Brani
                                $box.removeClass(className + "off").addClass(className + "on");
208 0f4a8a68 Olga Brani
                                timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
209 0f4a8a68 Olga Brani
                        };
210 0f4a8a68 Olga Brani
                        
211 0f4a8a68 Olga Brani
                        stop = function () {
212 0f4a8a68 Olga Brani
                                clearTimeout(timeOut);
213 0f4a8a68 Olga Brani
                                $slideshow
214 0f4a8a68 Olga Brani
                                        .text(settings.slideshowStart)
215 0f4a8a68 Olga Brani
                                        .unbind([event_complete, event_load, event_cleanup, click].join(' '))
216 0f4a8a68 Olga Brani
                                        .one(click, function () {
217 0f4a8a68 Olga Brani
                                                publicMethod.next();
218 0f4a8a68 Olga Brani
                                                start();
219 0f4a8a68 Olga Brani
                                        });
220 0f4a8a68 Olga Brani
                                $box.removeClass(className + "on").addClass(className + "off");
221 0f4a8a68 Olga Brani
                        };
222 0f4a8a68 Olga Brani
                        
223 0f4a8a68 Olga Brani
                        if (settings.slideshowAuto) {
224 0f4a8a68 Olga Brani
                                start();
225 0f4a8a68 Olga Brani
                        } else {
226 0f4a8a68 Olga Brani
                                stop();
227 0f4a8a68 Olga Brani
                        }
228 0f4a8a68 Olga Brani
                } else {
229 0f4a8a68 Olga Brani
            $box.removeClass(className + "off " + className + "on");
230 0f4a8a68 Olga Brani
        }
231 0f4a8a68 Olga Brani
        }
232 0f4a8a68 Olga Brani
233 0f4a8a68 Olga Brani
        function launch(target) {
234 0f4a8a68 Olga Brani
                if (!closing) {
235 0f4a8a68 Olga Brani
                        
236 0f4a8a68 Olga Brani
                        element = target;
237 0f4a8a68 Olga Brani
                        
238 0f4a8a68 Olga Brani
                        makeSettings();
239 0f4a8a68 Olga Brani
                        
240 0f4a8a68 Olga Brani
                        $related = $(element);
241 0f4a8a68 Olga Brani
                        
242 0f4a8a68 Olga Brani
                        index = 0;
243 0f4a8a68 Olga Brani
                        
244 0f4a8a68 Olga Brani
                        if (settings.rel !== 'nofollow') {
245 0f4a8a68 Olga Brani
                                $related = $('.' + boxElement).filter(function () {
246 0f4a8a68 Olga Brani
                                        var relRelated = $.data(this, colorbox).rel || this.rel;
247 0f4a8a68 Olga Brani
                                        return (relRelated === settings.rel);
248 0f4a8a68 Olga Brani
                                });
249 0f4a8a68 Olga Brani
                                index = $related.index(element);
250 0f4a8a68 Olga Brani
                                
251 0f4a8a68 Olga Brani
                                // Check direct calls to ColorBox.
252 0f4a8a68 Olga Brani
                                if (index === -1) {
253 0f4a8a68 Olga Brani
                                        $related = $related.add(element);
254 0f4a8a68 Olga Brani
                                        index = $related.length - 1;
255 0f4a8a68 Olga Brani
                                }
256 0f4a8a68 Olga Brani
                        }
257 0f4a8a68 Olga Brani
                        
258 0f4a8a68 Olga Brani
                        if (!open) {
259 0f4a8a68 Olga Brani
                                open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
260 0f4a8a68 Olga Brani
                                
261 0f4a8a68 Olga Brani
                                $box.show();
262 0f4a8a68 Olga Brani
                                
263 0f4a8a68 Olga Brani
                                if (settings.returnFocus) {
264 0f4a8a68 Olga Brani
                                        $(element).blur().one(event_closed, function () {
265 0f4a8a68 Olga Brani
                                                $(this).focus();
266 0f4a8a68 Olga Brani
                                        });
267 0f4a8a68 Olga Brani
                                }
268 0f4a8a68 Olga Brani
                                
269 0f4a8a68 Olga Brani
                                // +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
270 0f4a8a68 Olga Brani
                                $overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
271 0f4a8a68 Olga Brani
                                
272 0f4a8a68 Olga Brani
                                // Opens inital empty ColorBox prior to content being loaded.
273 0f4a8a68 Olga Brani
                                settings.w = setSize(settings.initialWidth, 'x');
274 0f4a8a68 Olga Brani
                                settings.h = setSize(settings.initialHeight, 'y');
275 0f4a8a68 Olga Brani
                                publicMethod.position();
276 0f4a8a68 Olga Brani
                                
277 0f4a8a68 Olga Brani
                                if (isIE6) {
278 0f4a8a68 Olga Brani
                                        $window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
279 0f4a8a68 Olga Brani
                                                $overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
280 0f4a8a68 Olga Brani
                                        }).trigger('resize.' + event_ie6);
281 0f4a8a68 Olga Brani
                                }
282 0f4a8a68 Olga Brani
                                
283 0f4a8a68 Olga Brani
                                trigger(event_open, settings.onOpen);
284 0f4a8a68 Olga Brani
                                
285 0f4a8a68 Olga Brani
                                $groupControls.add($title).hide();
286 0f4a8a68 Olga Brani
                                
287 0f4a8a68 Olga Brani
                                $close.html(settings.close).show();
288 0f4a8a68 Olga Brani
                        }
289 0f4a8a68 Olga Brani
                        
290 0f4a8a68 Olga Brani
                        publicMethod.load(true);
291 0f4a8a68 Olga Brani
                }
292 0f4a8a68 Olga Brani
        }
293 0f4a8a68 Olga Brani
294 0f4a8a68 Olga Brani
        // ColorBox's markup needs to be added to the DOM prior to being called
295 0f4a8a68 Olga Brani
        // so that the browser will go ahead and load the CSS background images.
296 0f4a8a68 Olga Brani
        function appendHTML() {
297 0f4a8a68 Olga Brani
                if (!$box && document.body) {
298 0f4a8a68 Olga Brani
                        init = false;
299 0f4a8a68 Olga Brani
300 0f4a8a68 Olga Brani
                        $window = $(window);
301 0f4a8a68 Olga Brani
                        $box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();
302 0f4a8a68 Olga Brani
                        $overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
303 0f4a8a68 Olga Brani
                        $wrap = $tag(div, "Wrapper");
304 0f4a8a68 Olga Brani
                        $content = $tag(div, "Content").append(
305 0f4a8a68 Olga Brani
                                $loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),
306 0f4a8a68 Olga Brani
                                $loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),
307 0f4a8a68 Olga Brani
                                $title = $tag(div, "Title"),
308 0f4a8a68 Olga Brani
                                $current = $tag(div, "Current"),
309 0f4a8a68 Olga Brani
                                $next = $tag(div, "Next"),
310 0f4a8a68 Olga Brani
                                $prev = $tag(div, "Previous"),
311 0f4a8a68 Olga Brani
                                $slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),
312 0f4a8a68 Olga Brani
                                $close = $tag(div, "Close")
313 0f4a8a68 Olga Brani
                        );
314 0f4a8a68 Olga Brani
                        
315 0f4a8a68 Olga Brani
                        $wrap.append( // The 3x3 Grid that makes up ColorBox
316 0f4a8a68 Olga Brani
                                $tag(div).append(
317 0f4a8a68 Olga Brani
                                        $tag(div, "TopLeft"),
318 0f4a8a68 Olga Brani
                                        $topBorder = $tag(div, "TopCenter"),
319 0f4a8a68 Olga Brani
                                        $tag(div, "TopRight")
320 0f4a8a68 Olga Brani
                                ),
321 0f4a8a68 Olga Brani
                                $tag(div, false, 'clear:left').append(
322 0f4a8a68 Olga Brani
                                        $leftBorder = $tag(div, "MiddleLeft"),
323 0f4a8a68 Olga Brani
                                        $content,
324 0f4a8a68 Olga Brani
                                        $rightBorder = $tag(div, "MiddleRight")
325 0f4a8a68 Olga Brani
                                ),
326 0f4a8a68 Olga Brani
                                $tag(div, false, 'clear:left').append(
327 0f4a8a68 Olga Brani
                                        $tag(div, "BottomLeft"),
328 0f4a8a68 Olga Brani
                                        $bottomBorder = $tag(div, "BottomCenter"),
329 0f4a8a68 Olga Brani
                                        $tag(div, "BottomRight")
330 0f4a8a68 Olga Brani
                                )
331 0f4a8a68 Olga Brani
                        ).find('div div').css({'float': 'left'});
332 0f4a8a68 Olga Brani
                        
333 0f4a8a68 Olga Brani
                        $loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
334 0f4a8a68 Olga Brani
                        
335 0f4a8a68 Olga Brani
                        $groupControls = $next.add($prev).add($current).add($slideshow);
336 0f4a8a68 Olga Brani
337 0f4a8a68 Olga Brani
                        $(document.body).append($overlay, $box.append($wrap, $loadingBay));
338 0f4a8a68 Olga Brani
                }
339 0f4a8a68 Olga Brani
        }
340 0f4a8a68 Olga Brani
341 0f4a8a68 Olga Brani
        // Add ColorBox's event bindings
342 0f4a8a68 Olga Brani
        function addBindings() {
343 0f4a8a68 Olga Brani
                if ($box) {
344 0f4a8a68 Olga Brani
                        if (!init) {
345 0f4a8a68 Olga Brani
                                init = true;
346 0f4a8a68 Olga Brani
347 0f4a8a68 Olga Brani
                                // Cache values needed for size calculations
348 0f4a8a68 Olga Brani
                                interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
349 0f4a8a68 Olga Brani
                                interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
350 0f4a8a68 Olga Brani
                                loadedHeight = $loaded.outerHeight(true);
351 0f4a8a68 Olga Brani
                                loadedWidth = $loaded.outerWidth(true);
352 0f4a8a68 Olga Brani
                                
353 0f4a8a68 Olga Brani
                                // Setting padding to remove the need to do size conversions during the animation step.
354 0f4a8a68 Olga Brani
                                $box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});
355 0f4a8a68 Olga Brani
356 0f4a8a68 Olga Brani
                                // Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
357 0f4a8a68 Olga Brani
                                $next.click(function () {
358 0f4a8a68 Olga Brani
                                        publicMethod.next();
359 0f4a8a68 Olga Brani
                                });
360 0f4a8a68 Olga Brani
                                $prev.click(function () {
361 0f4a8a68 Olga Brani
                                        publicMethod.prev();
362 0f4a8a68 Olga Brani
                                });
363 0f4a8a68 Olga Brani
                                $close.click(function () {
364 0f4a8a68 Olga Brani
                                        publicMethod.close();
365 0f4a8a68 Olga Brani
                                });
366 0f4a8a68 Olga Brani
                                $overlay.click(function () {
367 0f4a8a68 Olga Brani
                                        if (settings.overlayClose) {
368 0f4a8a68 Olga Brani
                                                publicMethod.close();
369 0f4a8a68 Olga Brani
                                        }
370 0f4a8a68 Olga Brani
                                });
371 0f4a8a68 Olga Brani
                                
372 0f4a8a68 Olga Brani
                                // Key Bindings
373 0f4a8a68 Olga Brani
                                $(document).bind('keydown.' + prefix, function (e) {
374 0f4a8a68 Olga Brani
                                        var key = e.keyCode;
375 0f4a8a68 Olga Brani
                                        if (open && settings.escKey && key === 27) {
376 0f4a8a68 Olga Brani
                                                e.preventDefault();
377 0f4a8a68 Olga Brani
                                                publicMethod.close();
378 0f4a8a68 Olga Brani
                                        }
379 0f4a8a68 Olga Brani
                                        if (open && settings.arrowKey && $related[1]) {
380 0f4a8a68 Olga Brani
                                                if (key === 37) {
381 0f4a8a68 Olga Brani
                                                        e.preventDefault();
382 0f4a8a68 Olga Brani
                                                        $prev.click();
383 0f4a8a68 Olga Brani
                                                } else if (key === 39) {
384 0f4a8a68 Olga Brani
                                                        e.preventDefault();
385 0f4a8a68 Olga Brani
                                                        $next.click();
386 0f4a8a68 Olga Brani
                                                }
387 0f4a8a68 Olga Brani
                                        }
388 0f4a8a68 Olga Brani
                                });
389 0f4a8a68 Olga Brani
390 0f4a8a68 Olga Brani
                                $('.' + boxElement, document).live('click', function (e) {
391 0f4a8a68 Olga Brani
                                // ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
392 0f4a8a68 Olga Brani
                                // See: http://jacklmoore.com/notes/click-events/
393 0f4a8a68 Olga Brani
                                if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
394 0f4a8a68 Olga Brani
                                    e.preventDefault();
395 0f4a8a68 Olga Brani
                                    launch(this);
396 0f4a8a68 Olga Brani
                                }
397 0f4a8a68 Olga Brani
                            });
398 0f4a8a68 Olga Brani
                        }
399 0f4a8a68 Olga Brani
                        return true;
400 0f4a8a68 Olga Brani
                }
401 0f4a8a68 Olga Brani
                return false;
402 0f4a8a68 Olga Brani
        }
403 0f4a8a68 Olga Brani
404 0f4a8a68 Olga Brani
        // Don't do anything if ColorBox already exists.
405 0f4a8a68 Olga Brani
        if ($.colorbox) {
406 0f4a8a68 Olga Brani
                return;
407 0f4a8a68 Olga Brani
        }
408 0f4a8a68 Olga Brani
409 0f4a8a68 Olga Brani
        // Append the HTML when the DOM loads
410 0f4a8a68 Olga Brani
        $(appendHTML);
411 0f4a8a68 Olga Brani
412 0f4a8a68 Olga Brani
413 0f4a8a68 Olga Brani
        // ****************
414 0f4a8a68 Olga Brani
        // PUBLIC FUNCTIONS
415 0f4a8a68 Olga Brani
        // Usage format: $.fn.colorbox.close();
416 0f4a8a68 Olga Brani
        // Usage from within an iframe: parent.$.fn.colorbox.close();
417 0f4a8a68 Olga Brani
        // ****************
418 0f4a8a68 Olga Brani
        
419 0f4a8a68 Olga Brani
        publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
420 0f4a8a68 Olga Brani
                var $this = this;
421 0f4a8a68 Olga Brani
                
422 0f4a8a68 Olga Brani
        options = options || {};
423 0f4a8a68 Olga Brani
        
424 0f4a8a68 Olga Brani
        appendHTML();
425 0f4a8a68 Olga Brani
426 0f4a8a68 Olga Brani
                if (addBindings()) {
427 0f4a8a68 Olga Brani
                        if (!$this[0]) {
428 0f4a8a68 Olga Brani
                                if ($this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
429 0f4a8a68 Olga Brani
                        return $this;
430 0f4a8a68 Olga Brani
                    }
431 0f4a8a68 Olga Brani
                    // if no selector was given (ie. $.colorbox()), create a temporary element to work with
432 0f4a8a68 Olga Brani
                                $this = $('<a/>');
433 0f4a8a68 Olga Brani
                                options.open = true; // assume an immediate open
434 0f4a8a68 Olga Brani
                        }
435 0f4a8a68 Olga Brani
                        
436 0f4a8a68 Olga Brani
                        if (callback) {
437 0f4a8a68 Olga Brani
                                options.onComplete = callback;
438 0f4a8a68 Olga Brani
                        }
439 0f4a8a68 Olga Brani
                        
440 0f4a8a68 Olga Brani
                        $this.each(function () {
441 0f4a8a68 Olga Brani
                                $.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
442 0f4a8a68 Olga Brani
                        }).addClass(boxElement);
443 0f4a8a68 Olga Brani
                        
444 0f4a8a68 Olga Brani
                if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
445 0f4a8a68 Olga Brani
                                launch($this[0]);
446 0f4a8a68 Olga Brani
                        }
447 0f4a8a68 Olga Brani
                }
448 0f4a8a68 Olga Brani
        
449 0f4a8a68 Olga Brani
                return $this;
450 0f4a8a68 Olga Brani
        };
451 0f4a8a68 Olga Brani
452 0f4a8a68 Olga Brani
        publicMethod.position = function (speed, loadedCallback) {
453 0f4a8a68 Olga Brani
        var 
454 0f4a8a68 Olga Brani
        top = 0, 
455 0f4a8a68 Olga Brani
        left = 0, 
456 0f4a8a68 Olga Brani
        offset = $box.offset(),
457 0f4a8a68 Olga Brani
        scrollTop = $window.scrollTop(), 
458 0f4a8a68 Olga Brani
        scrollLeft = $window.scrollLeft();
459 0f4a8a68 Olga Brani
        
460 0f4a8a68 Olga Brani
        $window.unbind('resize.' + prefix);
461 0f4a8a68 Olga Brani
462 0f4a8a68 Olga Brani
        // remove the modal so that it doesn't influence the document width/height        
463 0f4a8a68 Olga Brani
        $box.css({top: -9e4, left: -9e4});
464 0f4a8a68 Olga Brani
465 0f4a8a68 Olga Brani
        if (settings.fixed && !isIE6) {
466 0f4a8a68 Olga Brani
                        offset.top -= scrollTop;
467 0f4a8a68 Olga Brani
                        offset.left -= scrollLeft;
468 0f4a8a68 Olga Brani
            $box.css({position: 'fixed'});
469 0f4a8a68 Olga Brani
        } else {
470 0f4a8a68 Olga Brani
            top = scrollTop;
471 0f4a8a68 Olga Brani
            left = scrollLeft;
472 0f4a8a68 Olga Brani
            $box.css({position: 'absolute'});
473 0f4a8a68 Olga Brani
        }
474 0f4a8a68 Olga Brani
475 0f4a8a68 Olga Brani
                // keeps the top and left positions within the browser's viewport.
476 0f4a8a68 Olga Brani
        if (settings.right !== false) {
477 0f4a8a68 Olga Brani
            left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
478 0f4a8a68 Olga Brani
        } else if (settings.left !== false) {
479 0f4a8a68 Olga Brani
            left += setSize(settings.left, 'x');
480 0f4a8a68 Olga Brani
        } else {
481 0f4a8a68 Olga Brani
            left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
482 0f4a8a68 Olga Brani
        }
483 0f4a8a68 Olga Brani
        
484 0f4a8a68 Olga Brani
        if (settings.bottom !== false) {
485 0f4a8a68 Olga Brani
            top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
486 0f4a8a68 Olga Brani
        } else if (settings.top !== false) {
487 0f4a8a68 Olga Brani
            top += setSize(settings.top, 'y');
488 0f4a8a68 Olga Brani
        } else {
489 0f4a8a68 Olga Brani
            top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
490 0f4a8a68 Olga Brani
        }
491 0f4a8a68 Olga Brani
492 0f4a8a68 Olga Brani
        $box.css({top: offset.top, left: offset.left});
493 0f4a8a68 Olga Brani
494 0f4a8a68 Olga Brani
                // setting the speed to 0 to reduce the delay between same-sized content.
495 0f4a8a68 Olga Brani
                speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
496 0f4a8a68 Olga Brani
        
497 0f4a8a68 Olga Brani
                // this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
498 0f4a8a68 Olga Brani
                // but it has to be shrank down around the size of div#colorbox when it's done.  If not,
499 0f4a8a68 Olga Brani
                // it can invoke an obscure IE bug when using iframes.
500 0f4a8a68 Olga Brani
                $wrap[0].style.width = $wrap[0].style.height = "9999px";
501 0f4a8a68 Olga Brani
                
502 0f4a8a68 Olga Brani
                function modalDimensions(that) {
503 0f4a8a68 Olga Brani
                        $topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
504 0f4a8a68 Olga Brani
                        $content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
505 0f4a8a68 Olga Brani
                }
506 0f4a8a68 Olga Brani
                
507 0f4a8a68 Olga Brani
                $box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: top, left: left}, {
508 0f4a8a68 Olga Brani
                        duration: speed,
509 0f4a8a68 Olga Brani
                        complete: function () {
510 0f4a8a68 Olga Brani
                                modalDimensions(this);
511 0f4a8a68 Olga Brani
                                
512 0f4a8a68 Olga Brani
                                active = false;
513 0f4a8a68 Olga Brani
                                
514 0f4a8a68 Olga Brani
                                // shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
515 0f4a8a68 Olga Brani
                                $wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
516 0f4a8a68 Olga Brani
                                $wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
517 0f4a8a68 Olga Brani
                
518 0f4a8a68 Olga Brani
                if (settings.reposition) {
519 0f4a8a68 Olga Brani
                        setTimeout(function () {  // small delay before binding onresize due to an IE8 bug.
520 0f4a8a68 Olga Brani
                            $window.bind('resize.' + prefix, publicMethod.position);
521 0f4a8a68 Olga Brani
                        }, 1);
522 0f4a8a68 Olga Brani
                    }
523 0f4a8a68 Olga Brani
524 0f4a8a68 Olga Brani
                                if (loadedCallback) {
525 0f4a8a68 Olga Brani
                                        loadedCallback();
526 0f4a8a68 Olga Brani
                                }
527 0f4a8a68 Olga Brani
                        },
528 0f4a8a68 Olga Brani
                        step: function () {
529 0f4a8a68 Olga Brani
                                modalDimensions(this);
530 0f4a8a68 Olga Brani
                        }
531 0f4a8a68 Olga Brani
                });
532 0f4a8a68 Olga Brani
        };
533 0f4a8a68 Olga Brani
534 0f4a8a68 Olga Brani
        publicMethod.resize = function (options) {
535 0f4a8a68 Olga Brani
                if (open) {
536 0f4a8a68 Olga Brani
                        options = options || {};
537 0f4a8a68 Olga Brani
                        
538 0f4a8a68 Olga Brani
                        if (options.width) {
539 0f4a8a68 Olga Brani
                                settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
540 0f4a8a68 Olga Brani
                        }
541 0f4a8a68 Olga Brani
                        if (options.innerWidth) {
542 0f4a8a68 Olga Brani
                                settings.w = setSize(options.innerWidth, 'x');
543 0f4a8a68 Olga Brani
                        }
544 0f4a8a68 Olga Brani
                        $loaded.css({width: settings.w});
545 0f4a8a68 Olga Brani
                        
546 0f4a8a68 Olga Brani
                        if (options.height) {
547 0f4a8a68 Olga Brani
                                settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
548 0f4a8a68 Olga Brani
                        }
549 0f4a8a68 Olga Brani
                        if (options.innerHeight) {
550 0f4a8a68 Olga Brani
                                settings.h = setSize(options.innerHeight, 'y');
551 0f4a8a68 Olga Brani
                        }
552 0f4a8a68 Olga Brani
                        if (!options.innerHeight && !options.height) {
553 0f4a8a68 Olga Brani
                                $loaded.css({height: "auto"});
554 0f4a8a68 Olga Brani
                                settings.h = $loaded.height();
555 0f4a8a68 Olga Brani
                        }
556 0f4a8a68 Olga Brani
                        $loaded.css({height: settings.h});
557 0f4a8a68 Olga Brani
                        
558 0f4a8a68 Olga Brani
                        publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
559 0f4a8a68 Olga Brani
                }
560 0f4a8a68 Olga Brani
        };
561 0f4a8a68 Olga Brani
562 0f4a8a68 Olga Brani
        publicMethod.prep = function (object) {
563 0f4a8a68 Olga Brani
                if (!open) {
564 0f4a8a68 Olga Brani
                        return;
565 0f4a8a68 Olga Brani
                }
566 0f4a8a68 Olga Brani
                
567 0f4a8a68 Olga Brani
                var callback, speed = settings.transition === "none" ? 0 : settings.speed;
568 0f4a8a68 Olga Brani
                
569 0f4a8a68 Olga Brani
                $loaded.remove();
570 0f4a8a68 Olga Brani
                $loaded = $tag(div, 'LoadedContent').append(object);
571 0f4a8a68 Olga Brani
                
572 0f4a8a68 Olga Brani
                function getWidth() {
573 0f4a8a68 Olga Brani
                        settings.w = settings.w || $loaded.width();
574 0f4a8a68 Olga Brani
                        settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
575 0f4a8a68 Olga Brani
                        return settings.w;
576 0f4a8a68 Olga Brani
                }
577 0f4a8a68 Olga Brani
                function getHeight() {
578 0f4a8a68 Olga Brani
                        settings.h = settings.h || $loaded.height();
579 0f4a8a68 Olga Brani
                        settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
580 0f4a8a68 Olga Brani
                        return settings.h;
581 0f4a8a68 Olga Brani
                }
582 0f4a8a68 Olga Brani
                
583 0f4a8a68 Olga Brani
                $loaded.hide()
584 0f4a8a68 Olga Brani
                .appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
585 0f4a8a68 Olga Brani
                .css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
586 0f4a8a68 Olga Brani
                .css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
587 0f4a8a68 Olga Brani
                .prependTo($content);
588 0f4a8a68 Olga Brani
                
589 0f4a8a68 Olga Brani
                $loadingBay.hide();
590 0f4a8a68 Olga Brani
                
591 0f4a8a68 Olga Brani
                // floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
592 0f4a8a68 Olga Brani
                //$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
593 0f4a8a68 Olga Brani
                
594 0f4a8a68 Olga Brani
        $(photo).css({'float': 'none'});
595 0f4a8a68 Olga Brani
        
596 0f4a8a68 Olga Brani
                // Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
597 0f4a8a68 Olga Brani
                if (isIE6) {
598 0f4a8a68 Olga Brani
                        $('select').not($box.find('select')).filter(function () {
599 0f4a8a68 Olga Brani
                                return this.style.visibility !== 'hidden';
600 0f4a8a68 Olga Brani
                        }).css({'visibility': 'hidden'}).one(event_cleanup, function () {
601 0f4a8a68 Olga Brani
                                this.style.visibility = 'inherit';
602 0f4a8a68 Olga Brani
                        });
603 0f4a8a68 Olga Brani
                }
604 0f4a8a68 Olga Brani
                
605 0f4a8a68 Olga Brani
                callback = function () {
606 0f4a8a68 Olga Brani
            var preload, i, total = $related.length, iframe, frameBorder = 'frameBorder', allowTransparency = 'allowTransparency', complete, src, img;
607 0f4a8a68 Olga Brani
            
608 0f4a8a68 Olga Brani
            if (!open) {
609 0f4a8a68 Olga Brani
                return;
610 0f4a8a68 Olga Brani
            }
611 0f4a8a68 Olga Brani
            
612 0f4a8a68 Olga Brani
            function removeFilter() {
613 0f4a8a68 Olga Brani
                if (isIE) {
614 0f4a8a68 Olga Brani
                    $box[0].style.removeAttribute('filter');
615 0f4a8a68 Olga Brani
                }
616 0f4a8a68 Olga Brani
            }
617 0f4a8a68 Olga Brani
            
618 0f4a8a68 Olga Brani
            complete = function () {
619 0f4a8a68 Olga Brani
                clearTimeout(loadingTimer);
620 0f4a8a68 Olga Brani
                $loadingOverlay.hide();
621 0f4a8a68 Olga Brani
                trigger(event_complete, settings.onComplete);
622 0f4a8a68 Olga Brani
            };
623 0f4a8a68 Olga Brani
            
624 0f4a8a68 Olga Brani
            if (isIE) {
625 0f4a8a68 Olga Brani
                //This fadeIn helps the bicubic resampling to kick-in.
626 0f4a8a68 Olga Brani
                if (photo) {
627 0f4a8a68 Olga Brani
                    $loaded.fadeIn(100);
628 0f4a8a68 Olga Brani
                }
629 0f4a8a68 Olga Brani
            }
630 0f4a8a68 Olga Brani
            
631 0f4a8a68 Olga Brani
            $title.html(settings.title).add($loaded).show();
632 0f4a8a68 Olga Brani
            
633 0f4a8a68 Olga Brani
            if (total > 1) { // handle grouping
634 0f4a8a68 Olga Brani
                if (typeof settings.current === "string") {
635 0f4a8a68 Olga Brani
                    $current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
636 0f4a8a68 Olga Brani
                }
637 0f4a8a68 Olga Brani
                
638 0f4a8a68 Olga Brani
                $next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
639 0f4a8a68 Olga Brani
                $prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
640 0f4a8a68 Olga Brani
                                
641 0f4a8a68 Olga Brani
                if (settings.slideshow) {
642 0f4a8a68 Olga Brani
                    $slideshow.show();
643 0f4a8a68 Olga Brani
                }
644 0f4a8a68 Olga Brani
                                
645 0f4a8a68 Olga Brani
                // Preloads images within a rel group
646 0f4a8a68 Olga Brani
                if (settings.preloading) {
647 0f4a8a68 Olga Brani
                                        preload = [
648 0f4a8a68 Olga Brani
                                                getIndex(-1),
649 0f4a8a68 Olga Brani
                                                getIndex(1)
650 0f4a8a68 Olga Brani
                                        ];
651 0f4a8a68 Olga Brani
                                        while (i = $related[preload.pop()]) {
652 0f4a8a68 Olga Brani
                                                src = $.data(i, colorbox).href || i.href;
653 0f4a8a68 Olga Brani
                                                if ($.isFunction(src)) {
654 0f4a8a68 Olga Brani
                                                        src = src.call(i);
655 0f4a8a68 Olga Brani
                                                }
656 0f4a8a68 Olga Brani
                                                if (isImage(src)) {
657 0f4a8a68 Olga Brani
                                                        img = new Image();
658 0f4a8a68 Olga Brani
                                                        img.src = src;
659 0f4a8a68 Olga Brani
                                                }
660 0f4a8a68 Olga Brani
                                        }
661 0f4a8a68 Olga Brani
                }
662 0f4a8a68 Olga Brani
            } else {
663 0f4a8a68 Olga Brani
                $groupControls.hide();
664 0f4a8a68 Olga Brani
            }
665 0f4a8a68 Olga Brani
            
666 0f4a8a68 Olga Brani
            if (settings.iframe) {
667 0f4a8a68 Olga Brani
                iframe = $tag('iframe')[0];
668 0f4a8a68 Olga Brani
                
669 0f4a8a68 Olga Brani
                if (frameBorder in iframe) {
670 0f4a8a68 Olga Brani
                    iframe[frameBorder] = 0;
671 0f4a8a68 Olga Brani
                }
672 0f4a8a68 Olga Brani
                if (allowTransparency in iframe) {
673 0f4a8a68 Olga Brani
                    iframe[allowTransparency] = "true";
674 0f4a8a68 Olga Brani
                }
675 0f4a8a68 Olga Brani
                // give the iframe a unique name to prevent caching
676 0f4a8a68 Olga Brani
                iframe.name = prefix + (+new Date());
677 0f4a8a68 Olga Brani
                if (settings.fastIframe) {
678 0f4a8a68 Olga Brani
                    complete();
679 0f4a8a68 Olga Brani
                } else {
680 0f4a8a68 Olga Brani
                    $(iframe).one('load', complete);
681 0f4a8a68 Olga Brani
                }
682 0f4a8a68 Olga Brani
                iframe.src = settings.href;
683 0f4a8a68 Olga Brani
                if (!settings.scrolling) {
684 0f4a8a68 Olga Brani
                    iframe.scrolling = "no";
685 0f4a8a68 Olga Brani
                }
686 0f4a8a68 Olga Brani
                $(iframe).addClass(prefix + 'Iframe').appendTo($loaded).one(event_purge, function () {
687 0f4a8a68 Olga Brani
                    iframe.src = "//about:blank";
688 0f4a8a68 Olga Brani
                });
689 0f4a8a68 Olga Brani
            } else {
690 0f4a8a68 Olga Brani
                complete();
691 0f4a8a68 Olga Brani
            }
692 0f4a8a68 Olga Brani
            
693 0f4a8a68 Olga Brani
            if (settings.transition === 'fade') {
694 0f4a8a68 Olga Brani
                $box.fadeTo(speed, 1, removeFilter);
695 0f4a8a68 Olga Brani
            } else {
696 0f4a8a68 Olga Brani
                removeFilter();
697 0f4a8a68 Olga Brani
            }
698 0f4a8a68 Olga Brani
                };
699 0f4a8a68 Olga Brani
                
700 0f4a8a68 Olga Brani
                if (settings.transition === 'fade') {
701 0f4a8a68 Olga Brani
                        $box.fadeTo(speed, 0, function () {
702 0f4a8a68 Olga Brani
                                publicMethod.position(0, callback);
703 0f4a8a68 Olga Brani
                        });
704 0f4a8a68 Olga Brani
                } else {
705 0f4a8a68 Olga Brani
                        publicMethod.position(speed, callback);
706 0f4a8a68 Olga Brani
                }
707 0f4a8a68 Olga Brani
        };
708 0f4a8a68 Olga Brani
709 0f4a8a68 Olga Brani
        publicMethod.load = function (launched) {
710 0f4a8a68 Olga Brani
                var href, setResize, prep = publicMethod.prep;
711 0f4a8a68 Olga Brani
                
712 0f4a8a68 Olga Brani
                active = true;
713 0f4a8a68 Olga Brani
                
714 0f4a8a68 Olga Brani
                photo = false;
715 0f4a8a68 Olga Brani
                
716 0f4a8a68 Olga Brani
                element = $related[index];
717 0f4a8a68 Olga Brani
                
718 0f4a8a68 Olga Brani
                if (!launched) {
719 0f4a8a68 Olga Brani
                        makeSettings();
720 0f4a8a68 Olga Brani
                }
721 0f4a8a68 Olga Brani
                
722 0f4a8a68 Olga Brani
                trigger(event_purge);
723 0f4a8a68 Olga Brani
                
724 0f4a8a68 Olga Brani
                trigger(event_load, settings.onLoad);
725 0f4a8a68 Olga Brani
                
726 0f4a8a68 Olga Brani
                settings.h = settings.height ?
727 0f4a8a68 Olga Brani
                                setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
728 0f4a8a68 Olga Brani
                                settings.innerHeight && setSize(settings.innerHeight, 'y');
729 0f4a8a68 Olga Brani
                
730 0f4a8a68 Olga Brani
                settings.w = settings.width ?
731 0f4a8a68 Olga Brani
                                setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
732 0f4a8a68 Olga Brani
                                settings.innerWidth && setSize(settings.innerWidth, 'x');
733 0f4a8a68 Olga Brani
                
734 0f4a8a68 Olga Brani
                // Sets the minimum dimensions for use in image scaling
735 0f4a8a68 Olga Brani
                settings.mw = settings.w;
736 0f4a8a68 Olga Brani
                settings.mh = settings.h;
737 0f4a8a68 Olga Brani
                
738 0f4a8a68 Olga Brani
                // Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
739 0f4a8a68 Olga Brani
                // If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
740 0f4a8a68 Olga Brani
                if (settings.maxWidth) {
741 0f4a8a68 Olga Brani
                        settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
742 0f4a8a68 Olga Brani
                        settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
743 0f4a8a68 Olga Brani
                }
744 0f4a8a68 Olga Brani
                if (settings.maxHeight) {
745 0f4a8a68 Olga Brani
                        settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
746 0f4a8a68 Olga Brani
                        settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
747 0f4a8a68 Olga Brani
                }
748 0f4a8a68 Olga Brani
                
749 0f4a8a68 Olga Brani
                href = settings.href;
750 0f4a8a68 Olga Brani
                
751 0f4a8a68 Olga Brani
        loadingTimer = setTimeout(function () {
752 0f4a8a68 Olga Brani
            $loadingOverlay.show();
753 0f4a8a68 Olga Brani
        }, 100);
754 0f4a8a68 Olga Brani
        
755 0f4a8a68 Olga Brani
                if (settings.inline) {
756 0f4a8a68 Olga Brani
                        // Inserts an empty placeholder where inline content is being pulled from.
757 0f4a8a68 Olga Brani
                        // An event is bound to put inline content back when ColorBox closes or loads new content.
758 0f4a8a68 Olga Brani
                        $tag(div).hide().insertBefore($(href)[0]).one(event_purge, function () {
759 0f4a8a68 Olga Brani
                                $(this).replaceWith($loaded.children());
760 0f4a8a68 Olga Brani
                        });
761 0f4a8a68 Olga Brani
                        prep($(href));
762 0f4a8a68 Olga Brani
                } else if (settings.iframe) {
763 0f4a8a68 Olga Brani
                        // IFrame element won't be added to the DOM until it is ready to be displayed,
764 0f4a8a68 Olga Brani
                        // to avoid problems with DOM-ready JS that might be trying to run in that iframe.
765 0f4a8a68 Olga Brani
                        prep(" ");
766 0f4a8a68 Olga Brani
                } else if (settings.html) {
767 0f4a8a68 Olga Brani
                        prep(settings.html);
768 0f4a8a68 Olga Brani
                } else if (isImage(href)) {
769 0f4a8a68 Olga Brani
                        $(photo = new Image())
770 0f4a8a68 Olga Brani
                        .addClass(prefix + 'Photo')
771 0f4a8a68 Olga Brani
                        .error(function () {
772 0f4a8a68 Olga Brani
                                settings.title = false;
773 0f4a8a68 Olga Brani
                                prep($tag(div, 'Error').text('This image could not be loaded'));
774 0f4a8a68 Olga Brani
                        })
775 0f4a8a68 Olga Brani
                        .load(function () {
776 0f4a8a68 Olga Brani
                                var percent;
777 0f4a8a68 Olga Brani
                                photo.onload = null; //stops animated gifs from firing the onload repeatedly.
778 0f4a8a68 Olga Brani
                                
779 0f4a8a68 Olga Brani
                                if (settings.scalePhotos) {
780 0f4a8a68 Olga Brani
                                        setResize = function () {
781 0f4a8a68 Olga Brani
                                                photo.height -= photo.height * percent;
782 0f4a8a68 Olga Brani
                                                photo.width -= photo.width * percent;        
783 0f4a8a68 Olga Brani
                                        };
784 0f4a8a68 Olga Brani
                                        if (settings.mw && photo.width > settings.mw) {
785 0f4a8a68 Olga Brani
                                                percent = (photo.width - settings.mw) / photo.width;
786 0f4a8a68 Olga Brani
                                                setResize();
787 0f4a8a68 Olga Brani
                                        }
788 0f4a8a68 Olga Brani
                                        if (settings.mh && photo.height > settings.mh) {
789 0f4a8a68 Olga Brani
                                                percent = (photo.height - settings.mh) / photo.height;
790 0f4a8a68 Olga Brani
                                                setResize();
791 0f4a8a68 Olga Brani
                                        }
792 0f4a8a68 Olga Brani
                                }
793 0f4a8a68 Olga Brani
                                
794 0f4a8a68 Olga Brani
                                if (settings.h) {
795 0f4a8a68 Olga Brani
                                        photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';
796 0f4a8a68 Olga Brani
                                }
797 0f4a8a68 Olga Brani
                                
798 0f4a8a68 Olga Brani
                                if ($related[1] && (settings.loop || $related[index + 1])) {
799 0f4a8a68 Olga Brani
                                        photo.style.cursor = 'pointer';
800 0f4a8a68 Olga Brani
                                        photo.onclick = function () {
801 0f4a8a68 Olga Brani
                        publicMethod.next();
802 0f4a8a68 Olga Brani
                    };
803 0f4a8a68 Olga Brani
                                }
804 0f4a8a68 Olga Brani
                                
805 0f4a8a68 Olga Brani
                                if (isIE) {
806 0f4a8a68 Olga Brani
                                        photo.style.msInterpolationMode = 'bicubic';
807 0f4a8a68 Olga Brani
                                }
808 0f4a8a68 Olga Brani
                                
809 0f4a8a68 Olga Brani
                                setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
810 0f4a8a68 Olga Brani
                                        prep(photo);
811 0f4a8a68 Olga Brani
                                }, 1);
812 0f4a8a68 Olga Brani
                        });
813 0f4a8a68 Olga Brani
                        
814 0f4a8a68 Olga Brani
                        setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
815 0f4a8a68 Olga Brani
                                photo.src = href;
816 0f4a8a68 Olga Brani
                        }, 1);
817 0f4a8a68 Olga Brani
                } else if (href) {
818 0f4a8a68 Olga Brani
                        $loadingBay.load(href, settings.data, function (data, status, xhr) {
819 0f4a8a68 Olga Brani
                                prep(status === 'error' ? $tag(div, 'Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());
820 0f4a8a68 Olga Brani
                        });
821 0f4a8a68 Olga Brani
                }
822 0f4a8a68 Olga Brani
        };
823 0f4a8a68 Olga Brani
        
824 0f4a8a68 Olga Brani
        // Navigates to the next page/image in a set.
825 0f4a8a68 Olga Brani
        publicMethod.next = function () {
826 0f4a8a68 Olga Brani
                if (!active && $related[1] && (settings.loop || $related[index + 1])) {
827 0f4a8a68 Olga Brani
                        index = getIndex(1);
828 0f4a8a68 Olga Brani
                        publicMethod.load();
829 0f4a8a68 Olga Brani
                }
830 0f4a8a68 Olga Brani
        };
831 0f4a8a68 Olga Brani
        
832 0f4a8a68 Olga Brani
        publicMethod.prev = function () {
833 0f4a8a68 Olga Brani
                if (!active && $related[1] && (settings.loop || index)) {
834 0f4a8a68 Olga Brani
                        index = getIndex(-1);
835 0f4a8a68 Olga Brani
                        publicMethod.load();
836 0f4a8a68 Olga Brani
                }
837 0f4a8a68 Olga Brani
        };
838 0f4a8a68 Olga Brani
839 0f4a8a68 Olga Brani
        // Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
840 0f4a8a68 Olga Brani
        publicMethod.close = function () {
841 0f4a8a68 Olga Brani
                if (open && !closing) {
842 0f4a8a68 Olga Brani
                        
843 0f4a8a68 Olga Brani
                        closing = true;
844 0f4a8a68 Olga Brani
                        
845 0f4a8a68 Olga Brani
                        open = false;
846 0f4a8a68 Olga Brani
                        
847 0f4a8a68 Olga Brani
                        trigger(event_cleanup, settings.onCleanup);
848 0f4a8a68 Olga Brani
                        
849 0f4a8a68 Olga Brani
                        $window.unbind('.' + prefix + ' .' + event_ie6);
850 0f4a8a68 Olga Brani
                        
851 0f4a8a68 Olga Brani
                        $overlay.fadeTo(200, 0);
852 0f4a8a68 Olga Brani
                        
853 0f4a8a68 Olga Brani
                        $box.stop().fadeTo(300, 0, function () {
854 0f4a8a68 Olga Brani
                 
855 0f4a8a68 Olga Brani
                                $box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
856 0f4a8a68 Olga Brani
                                
857 0f4a8a68 Olga Brani
                                trigger(event_purge);
858 0f4a8a68 Olga Brani
                                
859 0f4a8a68 Olga Brani
                                $loaded.remove();
860 0f4a8a68 Olga Brani
                                
861 0f4a8a68 Olga Brani
                                setTimeout(function () {
862 0f4a8a68 Olga Brani
                                        closing = false;
863 0f4a8a68 Olga Brani
                                        trigger(event_closed, settings.onClosed);
864 0f4a8a68 Olga Brani
                                }, 1);
865 0f4a8a68 Olga Brani
                        });
866 0f4a8a68 Olga Brani
                }
867 0f4a8a68 Olga Brani
        };
868 0f4a8a68 Olga Brani
869 0f4a8a68 Olga Brani
        // Removes changes ColorBox made to the document, but does not remove the plugin
870 0f4a8a68 Olga Brani
        // from jQuery.
871 0f4a8a68 Olga Brani
        publicMethod.remove = function () {
872 0f4a8a68 Olga Brani
                $([]).add($box).add($overlay).remove();
873 0f4a8a68 Olga Brani
                $box = null;
874 0f4a8a68 Olga Brani
                $('.' + boxElement)
875 0f4a8a68 Olga Brani
                        .removeData(colorbox)
876 0f4a8a68 Olga Brani
                        .removeClass(boxElement)
877 0f4a8a68 Olga Brani
                        .die();
878 0f4a8a68 Olga Brani
        };
879 0f4a8a68 Olga Brani
880 0f4a8a68 Olga Brani
        // A method for fetching the current element ColorBox is referencing.
881 0f4a8a68 Olga Brani
        // returns a jQuery object.
882 0f4a8a68 Olga Brani
        publicMethod.element = function () {
883 0f4a8a68 Olga Brani
                return $(element);
884 0f4a8a68 Olga Brani
        };
885 0f4a8a68 Olga Brani
886 0f4a8a68 Olga Brani
        publicMethod.settings = defaults;
887 0f4a8a68 Olga Brani
888 0f4a8a68 Olga Brani
}(jQuery, document, this));