if (typeof(TopUp) == "undefined") { var scriptElement = (function deriveScriptElement() { var id = "tu_dummy_script"; document.write(''); var dummyScript = document.getElementById(id); var element = dummyScript.previousSibling; dummyScript.parentNode.removeChild(dummyScript); return element; }()); var scriptHost = (function deriveScriptHost() { var src = scriptElement.getAttribute("src"); return src.match(/^\w+\:\/\//) ? src.match(/^\w+\:\/\/[^\/]*\//)[0] : ""; }()); // * // * TopUp 1.7.2 (Uncompressed) - Alpha release // * The #1 Javascript Pop Up / Lightbox (http://gettopup.com) // * // * This library requires Prototype (http://prototypejs.org) // * // * (c) 2010 Paul Engel (Internetbureau Holder B.V.) // * Except otherwise noted, TopUp is licensed under // * http://creativecommons.org/licenses/by-sa/3.0 // * // * $Date: 2010-03-07 19:47:47 +0100 (Sun, 07 March 2010) $ // * TopUp = (function() { var initialized = false, on_ready = [], displaying = false, options = null, group = null, index = null, data = null, reservedDuration = 0.25; var observing = new Hash({ body : true, selector : null, currently: [] }); var default_preset = new Hash({ layout : "dashboard", effect : "transform", duration : 0.5, resizable: 1 }), presets = new Hash(); var extendPrototype = function() { Prototype.Browser.IE6 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5), 10) == 6; Prototype.Browser.IE7 = Prototype.Browser.IE && parseInt(navigator.userAgent.substring(navigator.userAgent.indexOf("MSIE")+5), 10) >= 7; Element.addMethods({ center: function(element) { element = $(element); var scrollOffsets = document.viewport.getScrollOffsets(); return element.setStyle({ top : parseInt((document.viewport.getHeight() - element.getHeight()) / 2, 10) + scrollOffsets.top + "px", left : parseInt((document.viewport.getWidth() - element.getWidth() ) / 2, 10) + scrollOffsets.left + "px", position: "absolute" }); }, lockDimensions: function(element) { element.setStyle({width: element.getWidth() + "px", height: element.getHeight() + "px"}); return element; }, unlockDimensions: function(element) { element.setStyle({width: "auto", height: "auto"}); return element; }, centerWrap: function(element, compare) { var current = {width: element.getWidth(), height: element.getHeight()}, delta = {width: 0, height: 0}, diff = 0; diff = compare.getWidth() - current.width; if (delta.width < diff) { delta.width = diff; } diff = compare.getHeight() - current.height; if (delta.height < diff) { delta.height = diff; } var offset = element.cumulativeOffset(); var css = $H({ top: offset.top - (delta.height === 0 ? 0 : parseInt(delta.height / 2, 10)), left: offset.left - (delta.width === 0 ? 0 : parseInt(delta.width / 2, 10)), width: element.getWidth() + delta.width, height: element.getHeight() + delta.height }); if (options.get("x")) { css.set("left", options.get("x") - parseInt((css.get("width") - compare.getWidth()) / 2, 10)); } if (options.get("y")) { css.set("top" , options.get("y") - parseInt((css.get("height") - compare.getHeight()) / 2, 10)); } css.keys().each(function(k) { css.set(k, css.get(k) + "px") }); $("tu_center_wrapper").setStyle(css.toObject()); $("tu_centered_content").insert({bottom: element}); element.setStyle({ top: "auto", left: "auto", width: "auto", height: "auto", display: "inline-block", position: "relative" }); if (Prototype.Browser.FF2) { element.setStyle({display: "table"}); } if (Prototype.Browser.IE6) { element.setStyle({display: "inline"}); } $("tu_center_wrapper").show(); return element; }, removeCenterWrap: function(element) { var position = $("tu_center_wrapper").cumulativeOffset(); var delta = {width: $("tu_center_wrapper").getWidth() - element.getWidth(), height: $("tu_center_wrapper").getHeight() - element.getHeight()}; document.body.insert({bottom: element.setStyle({top : position.top + parseInt(delta.height / 2, 10) + "px", left: position.left + parseInt(delta.width / 2, 10) + "px", position: "absolute"})}); $("tu_center_wrapper").hide(); return element; } }); Effect.SwitchOn = function(element) { element = $(element); var elementDimensions = element.getDimensions(); return new Effect.Scale( element, 100, Object.extend({ duration : 0.55, scaleFromCenter: true, scaleX : false, scaleContent : false, scaleFrom : 1, beforeSetup: function(effect) { effect.element.show().makePositioned().makeClipping(); } }, arguments[1] || {}) ); }; }; var injectCode = function() { var images_url = TopUp.host + TopUp.images_path; var css = '.te_overflow{overflow:hidden !important}.te_dragging{cursor:move !important}#tu_overlay,.te_top_up{top:0;left:0}#tu_overlay{width:100%;height:100%;position:fixed;z-index:999}#temp_up{top:-9999px;z-index:-1}.te_transparent{opacity:0}.te_shaded{opacity:.65;background:black}.te_scrollable{overflow:auto}.te_top_up{position:absolute;z-index:1000}.te_top_up a{border:0}.te_top_up a:hover{border:0}.te_top_up .ui-resizable-se{position:absolute !important;background-color:transparent !important;border:0 !important}.te_wrapper{position:relative}.te_title{width:100%;color:white;font-family:"Lucida Grande", "Arial";font-size:11px;position:absolute;text-align:center;z-index:1001}.te_frame,#tu_center_wrapper{border-collapse:collapse}.te_frame tr,.te_frame td{margin:0;padding:0}.te_frame .te_left,.te_frame .te_middle,.te_frame .te_right{padding:0}.te_controls{position:absolute;z-index:1001}.te_close_link,.te_previous_link,.te_next_link{cursor:pointer}.te_close_link{position:absolute;z-index:1002}.te_previous_link,.te_next_link{display:block;float:left}#tu_center_wrapper{position:absolute;z-index:1000}#tu_loader{width:100%;height:100%;position:absolute;background:url(' + images_url + 'loader.gif) no-repeat 50% 50%;display:block;z-index:1003} #top_up .te_dashboard .ui-resizable-se{width:10px !important;height:10px !important;bottom:12px !important;right:10px !important;background-image:url(' + images_url + 'dashboard/sprite.png) !important;background-position:0 0 !important}.te_dashboard .te_title{top:-9px;font-weight:bold;text-shadow:1px 1px 1px black}.te_dashboard .te_corner,.te_dashboard .te_rib{background-image:url(' + images_url + 'dashboard/sprite.png)}.te_dashboard .te_top,.te_dashboard .te_bottom{height:20px}.te_dashboard .te_left_filler{width:20px}.te_dashboard .te_right_filler{width:19px}.te_dashboard .te_middle .te_middle{background:url(' + images_url + 'dashboard/middle.png)}.te_dashboard .te_top .te_left{background-position:-17px -29px}.te_dashboard .te_top .te_middle{background-position:0 -71px}.te_dashboard .te_top .te_right{background-position:-33px -29px}.te_dashboard .te_middle .te_left{background-position:-17px -232px}.te_dashboard .te_middle .te_right{background-position:-33px -232px}.te_dashboard .te_bottom .te_left{background-position:-17px -47px}.te_dashboard .te_bottom .te_middle{background-position:-17px -89px}.te_dashboard .te_bottom .te_right{background-position:-33px -47px}.te_dashboard .te_content{margin:-11px -12px -11px -13px}.te_dashboard .te_controls{left:50%;width:63px;height:29px;margin-left:-33px;padding-left:5px;bottom:35px;background-image:url(' + images_url + 'dashboard/sprite.png);background-position:0 -178px}.te_dashboard .te_previous_link,.te_dashboard .te_next_link{width:31px;height:29px;background-image:url(' + images_url + 'dashboard/sprite.png)}.te_dashboard .te_previous_link{background-position:66px -113px}.te_dashboard .te_next_link{background-position:30px -113px}.te_dashboard .te_previous_link:hover{background-position:66px -142px}.te_dashboard .te_next_link:hover{background-position:30px -142px}.te_dashboard .te_close_link{width:28px;height:26px;top:-1px;right:-6px;background-image:url(' + images_url + 'dashboard/sprite.png);background-position:-20px 0} #top_up .te_quicklook .ui-resizable-se{width:10px !important;height:10px !important;bottom:12px !important;right:9px !important;background-image:url(' + images_url + 'quicklook/sprite.png) !important;background-position:-75px -181px !important}.te_quicklook .te_title{top:6px}.te_quicklook .te_corner,.te_quicklook .te_rib{background-image:url(' + images_url + 'quicklook/sprite.png)}.te_quicklook .te_top{height:24px}.te_quicklook .te_bottom{height:56px}.te_quicklook .te_left_filler,.te_quicklook .te_right_filler{width:12px}.te_quicklook .te_middle .te_middle{background:url(' + images_url + 'quicklook/middle.png)}.te_quicklook .te_top .te_left{background-position:0 0}.te_quicklook .te_top .te_middle{background-position:0 -30px}.te_quicklook .te_top .te_right{background-position:12px 0}.te_quicklook .te_middle .te_left{background-position:0 -181px}.te_quicklook .te_middle .te_right{background-position:12px -181px}.te_quicklook .te_bottom .te_left{background-position:0 -122px}.te_quicklook .te_bottom .te_middle{background-position:0 -61px}.te_quicklook .te_bottom .te_right{background-position:12px -122px}.te_quicklook .te_content{margin:0 -7px}.te_quicklook .te_controls{left:50%;width:66px;margin-left:-33px;bottom:18px}.te_quicklook .te_previous_link,.te_quicklook .te_next_link{width:31px;height:29px;margin:0 1px;background-image:url(' + images_url + 'quicklook/sprite.png)}.te_quicklook .te_previous_link{background-position:89px -195px}.te_quicklook .te_next_link{background-position:52px -195px}.te_quicklook .te_previous_link:hover{background-position:89px -226px}.te_quicklook .te_next_link:hover{background-position:52px -226px}.te_quicklook .te_close_link{width:13px;height:13px;top:7px;left:9px;background-image:url(' + images_url + 'quicklook/sprite.png);background-position:-24px -181px} #top_up .te_flatlook .ui-resizable-se{width:10px !important;height:10px !important;bottom:22px !important;right:14px !important;background-image:url(' + images_url + 'flatlook/sprite.png) !important;background-position:-75px -181px !important}.te_flatlook .te_title{top:5px;text-shadow:1px 1px 2px #2A2A2A}.te_flatlook .te_corner,.te_flatlook .te_rib{background-image:url(' + images_url + 'flatlook/sprite.png)}.te_flatlook .te_top{height:26px}.te_flatlook .te_bottom{height:29px}.te_flatlook .te_left_filler,.te_flatlook .te_right_filler{width:21px}.te_flatlook .te_middle .te_middle{background:url(' + images_url + 'flatlook/middle.png) repeat-x top}.te_flatlook .te_top .te_left{background-position:0 0}.te_flatlook .te_top .te_middle{background-position:0 -29px}.te_flatlook .te_top .te_right{background-position:-89px 0}.te_flatlook .te_middle .te_left{background-position:0 -181px}.te_flatlook .te_middle .te_right{background-position:-89px -181px}.te_flatlook .te_bottom .te_left{background-position:0 -90px}.te_flatlook .te_bottom .te_middle{background-position:0 -58px}.te_flatlook .te_bottom .te_right{background-position:-89px -90px}.te_flatlook .te_content{margin:-2px -11px -3px -11px}.te_flatlook .te_controls{left:50%;width:66px;margin-left:-33px;bottom:18px}.te_flatlook .te_previous_link,.te_flatlook .te_next_link{width:31px;height:29px;margin:0 1px;background-image:url(' + images_url + 'flatlook/sprite.png)}.te_flatlook .te_previous_link{background-position:89px -195px}.te_flatlook .te_next_link{background-position:52px -195px}.te_flatlook .te_previous_link:hover{background-position:89px -226px}.te_flatlook .te_next_link:hover{background-position:52px -226px}.te_flatlook .te_close_link{width:13px;height:13px;top:6px;left:15px;background-image:url(' + images_url + 'flatlook/sprite.png);background-position:-24px -181px}'; var ie7fix = '.te_dashboard .te_content{margin-bottom:-14px}'; var ie6fix = '.te_dashboard .te_content{margin-bottom:-13px}.te_dashboard .te_controls{width:65px;padding-left:3px}.te_dashboard .te_top .te_left,.te_dashboard .te_top .te_middle,.te_dashboard .te_top .te_right{background-image:none}.te_dashboard .te_middle .te_left,.te_dashboard .te_middle .te_right{background-image:none}.te_dashboard .te_bottom .te_left,.te_dashboard .te_bottom .te_middle,.te_dashboard .te_bottom .te_right{background-image:none}.te_dashboard .te_controls,.te_dashboard .te_previous_link,.te_dashboard .te_next_link,.te_dashboard .te_close_link{background-image:none}.te_dashboard .te_top .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/top_left.png" , sizingMethod="crop" )}.te_dashboard .te_top .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/top_middle.png" , sizingMethod="scale")}.te_dashboard .te_top .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/top_right.png" , sizingMethod="crop" )}.te_dashboard .te_middle .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/middle_left.png" , sizingMethod="scale")}.te_dashboard .te_middle .te_middle{filter:alpha(opacity = 75);background:black}.te_dashboard .te_middle .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/middle_right.png" , sizingMethod="scale")}.te_dashboard .te_bottom .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/bottom_left.png" , sizingMethod="crop" )}.te_dashboard .te_bottom .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/bottom_middle.png", sizingMethod="scale")}.te_dashboard .te_bottom .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/bottom_right.png" , sizingMethod="crop" )}.te_dashboard .te_controls{background:#505455}.te_dashboard .te_previous_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/previous.png" , sizingMethod="crop" )}.te_dashboard .te_next_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/next.png" , sizingMethod="crop" )}.te_dashboard .te_close_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'dashboard/close_link.png" , sizingMethod="crop" )} .te_quicklook .te_bottom{height:55px}.te_quicklook .te_controls{width:67px}.te_quicklook .te_top .te_left,.te_quicklook .te_top .te_middle,.te_quicklook .te_top .te_right{background-image:none}.te_quicklook .te_middle .te_left,.te_quicklook .te_middle .te_right{background-image:none}.te_quicklook .te_bottom .te_left,.te_quicklook .te_bottom .te_middle,.te_quicklook .te_bottom .te_right{background-image:none}.te_quicklook .te_previous_link,.te_quicklook .te_next_link,.te_quicklook .te_close_link{background-image:none}.te_quicklook .te_top .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/top_left.png" , sizingMethod="crop" )}.te_quicklook .te_top .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/top_middle.png" , sizingMethod="scale")}.te_quicklook .te_top .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/top_right.png" , sizingMethod="crop" )}.te_quicklook .te_middle .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/middle_left.png" , sizingMethod="scale")}.te_quicklook .te_middle .te_middle{filter:alpha(opacity = 70);background:black}.te_quicklook .te_middle .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/middle_right.png" , sizingMethod="scale")}.te_quicklook .te_bottom .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/bottom_left.png" , sizingMethod="crop" )}.te_quicklook .te_bottom .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/bottom_middle.png", sizingMethod="scale")}.te_quicklook .te_bottom .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/bottom_right.png" , sizingMethod="crop" )}.te_quicklook .te_previous_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/previous.png" , sizingMethod="crop" )}.te_quicklook .te_next_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/next.png" , sizingMethod="crop" )}.te_quicklook .te_close_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'quicklook/close_link.png" , sizingMethod="crop" )} .te_flatlook .te_bottom{height:55px}.te_flatlook .te_controls{width:67px}.te_flatlook .te_top .te_left,.te_flatlook .te_top .te_middle,.te_flatlook .te_top .te_right{background-image:none}.te_flatlook .te_middle .te_left,.te_flatlook .te_middle .te_right{background-image:none}.te_flatlook .te_bottom .te_left,.te_flatlook .te_bottom .te_middle,.te_flatlook .te_bottom .te_right{background-image:none}.te_flatlook .te_previous_link,.te_flatlook .te_next_link,.te_flatlook .te_close_link{background-image:none}.te_flatlook .te_top .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/top_left.png" , sizingMethod="crop" )}.te_flatlook .te_top .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/top_middle.png" , sizingMethod="scale")}.te_flatlook .te_top .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/top_right.png" , sizingMethod="crop" )}.te_flatlook .te_middle .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/middle_left.png" , sizingMethod="scale")}.te_flatlook .te_middle .te_middle{filter:alpha(opacity = 70);background:black}.te_flatlook .te_middle .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/middle_right.png" , sizingMethod="scale")}.te_flatlook .te_bottom .te_left{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/bottom_left.png" , sizingMethod="crop" )}.te_flatlook .te_bottom .te_middle{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/bottom_middle.png", sizingMethod="scale")}.te_flatlook .te_bottom .te_right{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/bottom_right.png" , sizingMethod="crop" )}.te_flatlook .te_previous_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/previous.png" , sizingMethod="crop" )}.te_flatlook .te_next_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/next.png" , sizingMethod="crop" )}.te_flatlook .te_close_link{filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + images_url + 'flatlook/close_link.png" , sizingMethod="crop" )}'; var iefix = '#tu_overlay{top:expression((ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px");left:expression((ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft) + "px");position:absolute}.te_transparent{filter:alpha(opacity = 0)}.te_shaded{filter:alpha(opacity = 65)}.te_content{position:relative;zoom:1}'; var html = '
'; if (css == '
') { return; // This only occurs when running in development mode } var head = $$("head").first(); if (!head) { $(document.body).insert({before: (head = new Element("head"))}); } head.insert({top: styleElement(css)}); var style = head.select("style").first(); if (Prototype.Browser.IE7) { style.insert({after: styleElement(ie7fix)}); } if (Prototype.Browser.IE6) { style.insert({after: styleElement(ie6fix)}); } if (Prototype.Browser.IE) { style.insert({after: styleElement(iefix)}); } $(document.body).insert({bottom: html}); }; var styleElement = function(css) { var style = document.createElement("style"); style.type = "text/css"; if (style.styleSheet) { // All IE developers should burn in hell! style.styleSheet.cssText = css; } else { style.appendChild(document.createTextNode(css)); } return style; } var bind = function() { var body = $(document.body); var observe_body = observing.get("body"); var selector = observing.get("selector"); if (observe_body) { body.observe("click", documentClick); observing.get("currently").push("body"); } if (selector) { $$(selector).each(function(element) { element.observe("click", documentClick); }); observing.get("currently").push(selector); } body.observe("keydown", documentKeyDown); }; var documentClick = function(event) { var top_up = deriveTopUp(event); if (top_up) { topUpClick(top_up, event); } }; var documentKeyDown = function(event) { if ($("top_up").visible()) { switch(event.keyCode) { case 27: TopUp.close(); break; case 37: TopUp.previous(); break; case 39: TopUp.next(); break; } } }; var topUpClick = function(top_up, event) { TopUp.displayTopUp(top_up); event.stop(); }; var deriveTopUp = function(event) { var element = event.element(); if (element.descendantOf("top_up")) { return; } return [element, element.up(), element.up(1)].detect(function(e) { return !!e && (e.hasClassName("top_up") || e.hasAttribute("toptions") || e.classNames().any(function(c) { return c.match(/^tu_/) != null }) || presets.keys().any(function(s) { return e.match(s) })); }); }; var deriveToptions = function(top_up, opts) { var toptions = default_preset.merge({ topUp: top_up.identify(), reference: top_up.readAttribute("href") }); presets.each(function(preset) { if (top_up.match(preset.first())) { toptions.update(preset.last()); } }); if (top_up.hasAttribute("toptions")) { top_up.readAttribute("toptions").split(",").each(function(option) { var key_value = option.split("=").invoke("strip"); toptions.set(key_value[0], key_value[1]); }); } var coptions = top_up.classNames().select(function(x) { return x.match(/^tu_/) }); coptions.each(function(c) { c.sub(/^tu_/, "").split("_").each(function(coption) { if ($w("db ql fl").include(coption)) { var layoutRefs = {db: "dashboard", ql: "quicklook", fl: "flatlook"}; toptions.set("layout", layoutRefs[coption]); } if ($w("image html dom iframe ajax script").include(coption)) { toptions.set("type", coption); } if (coption.match(/[0123456789]+x[0123456789]+/)) { var dimensions = coption.split("x"); toptions.set("width" , dimensions[0]); toptions.set("height", dimensions[1]); } }); }); if (parseInt(toptions.get("noGroup"), 10) == 1) { toptions.unset("group"); } toptions.update(opts || {}); return toptions; }; var deriveOptions = function(reference, opts, store) { var result = default_preset.clone(); if (opts) { if (presets.keys().include(opts.preset)) { result.update(presets[opts.preset]); } result.update(opts); } if (store) { result.set("reference", reference); if (!result.keys().include("type")) { result.set("type", deriveType(reference)); } if (movieContentDisplayed(result)) { result.set("resizable", 0); } options = result.clone(); } return result; }; var deriveType = function(reference) { if (reference.toLowerCase().match(/\.(gif|jpg|jpeg|png)$/)) { return "image"; } if (reference.toLowerCase().match(/\.(swf)$/)) { return "flash"; } if (reference.toLowerCase().match(/\.(flv)$/)) { return "flashvideo"; } if (reference.toLowerCase().match(/\.(aif|aiff|aac|au|bmp|gsm|mov|mid|midi|mpg|mpeg|m4a|m4v|mp4|psd|qt|qtif|qif|qti|snd|tif|tiff|wav|3g2|3gp|wbmp)$/)) { return "quicktime"; } if (reference.toLowerCase().match(/\.(ra|ram|rm|rpm|rv|smi|smil)$/)) { return "realplayer"; } if (reference.toLowerCase().match(/\.(asf|avi|wma|wmv)$/)) { return "windowsmedia"; } return "ajax"; }; var movieContentDisplayed = function(opts) { return $w("flash flashvideo quicktime realplayer windowsmedia").include((opts || options).get("type")); }; var prepare = function() { // TODO: resizable $("top_up").down(".te_title").fade({duration: reservedDuration}); if (!(group && group.items.length > 1)) { $("top_up").down(".te_controls").fade({duration: reservedDuration}); } $$(".te_top_up").each(function(e) { e.down(".te_wrapper").writeAttribute("class", "te_wrapper te_" + options.get("layout")); }); if (parseInt(options.get("shaded"), 10) == 1) { $("tu_overlay").addClassName("te_shaded"); } else { $("tu_overlay").removeClassName("te_shaded"); } if ($w("modal shaded overlayClose").any(function(o) { return parseInt(options.get(o), 10) == 1 })) { $("tu_overlay").show(); } else { $("tu_overlay").hide(); } }; var loadContent = function() { showLoader(); $("top_up").down(".te_title").update(options.get("title") || ""); switch(options.get("type")) { case "image": options.set("content", new Element("img", {src: options.get("reference")})); if (!options.get("content").complete) { Event.observe(options.get("content"), "load", onContentReady); } else { onContentReady(); } break; case "flash": loadFlashContent(); break; case "flashvideo": loadFlashVideoContent(); break; case "quicktime": loadQuickTimeContent(); break; case "realplayer": loadRealPlayerContent(); break; case "windowsmedia": loadWindowsMediaContent(); break; case "iframe": options.set("content", new Element("iframe", {src: options.get("reference"), frameborder: 0, border: 0})); onContentReady(); break; case "html": case "dom": options.set("content", new Element("div")[options.get("type") == "html" ? "update" : "appendChild"](options.get("reference"))); onContentReady(); break; case "ajax": case "script": options.set("content", null); new Ajax.Request(options.get("reference"), { method: (parseInt(options.get("post"), 10) == 1) ? "post" : "get", asynchronous: false, parameters: options.get("parameters"), evalJS: (options.get("type") == "script"), onSuccess: function() { var element = (new Element("div")).update(transport.responseText); options.set("content", element.firstDescendant()); onContentReady(); } }); break; } }; var loadFlashContent = function() { var object = new Element("object", {width : options.get("width"), height : options.get("height"), classid : "clsid:D27CDB6E-AE6D-11CF-96B8-444553540000", codebase: "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0", style : "display: none"}); object.appendChild(new Element("param", {name: "src" , value: options.get("reference")})); object.appendChild(new Element("param", {name: "allowfullscreen", value: "true"})); object.appendChild(new Element("embed", {src : options.get("reference"), width : options.get("width"), height : options.get("height"), allowfullscreen: "true", type : "application/x-shockwave-flash", pluginspage : "http://get.adobe.com/flashplayer/"})); options.set("content", new Element("div", {width: options.get("width"), height: options.get("height")})); options.get("content").appendChild(object); onContentReady(); }; var loadFlashVideoContent = function() { var object = new Element("object", {width : options.get("width"), height : options.get("height"), classid : "clsid:D27CDB6E-AE6D-11CF-96B8-444553540000", codebase: "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0", style : "display: none"}); var src = TopUp.host + TopUp.players_path + "flvplayer.swf"; object.appendChild(new Element("param", {name: "movie" , value: src})); object.appendChild(new Element("param", {name: "flashvars" , value: "file=" + options.get("reference") + "&autostart=true"})); object.appendChild(new Element("param", {name: "allowfullscreen", value: "true"})); object.appendChild(new Element("embed", {src : src, width : options.get("width"), height : options.get("height"), flashvars : "file=" + options.get("reference") + "&autostart=true", allowfullscreen: "true", type : "application/x-shockwave-flash", pluginspage : "http://get.adobe.com/flashplayer/"})); options.set("content", new Element("div", {width: options.get("width"), height: options.get("height")})); options.get("content").appendChild(object); onContentReady(); }; var loadQuickTimeContent = function() { var object = new Element("object", {width : options.get("width"), height : options.get("height"), classid : "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B", codebase: "http://www.apple.com/qtactivex/qtplugin.cab", style : "display: none"}); object.appendChild(new Element("param", {name: "src" , value: options.get("reference")})); object.appendChild(new Element("param", {name: "scale" , value: "aspect"})); object.appendChild(new Element("param", {name: "bgcolor" , value: "black"})); object.appendChild(new Element("param", {name: "showlogo", value: "false"})); object.appendChild(new Element("param", {name: "autoplay", value: "true"})); object.appendChild(new Element("embed", {src : options.get("reference"), width : options.get("width"), height : options.get("height"), scale : "aspect", bgcolor : "black", showlogo : "false", autoplay : "true", type : "video/quicktime", pluginspage: "http://www.apple.com/quicktime/download/"})); options.set("content", new Element("div", {width: options.get("width"), height: options.get("height"), style: "background: black"})); options.get("content").appendChild(object); onContentReady(); }; var loadRealPlayerContent = function() { var object = new Element("object", {width : options.get("width"), height : options.get("height"), classid: "clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA", style : "display: none"}); object.appendChild(new Element("param", {name: "src" , value: options.get("reference")})); object.appendChild(new Element("param", {name: "controls" , value: "imagewindow"})); object.appendChild(new Element("param", {name: "console" , value: "one"})); object.appendChild(new Element("param", {name: "autostart", value: "true"})); object.appendChild(new Element("embed", {src : options.get("reference"), width : options.get("width"), height : options.get("height"), controls : "imagewindow", console : "one", autostart : "true", nojava : "true", type : "audio/x-pn-realaudio-plugin", pluginspage: "http://www.real.com/freeplayer/?rppr=rnwk"})); options.set("content", new Element("div", {width: options.get("width"), height: options.get("height")})); options.get("content").appendChild(object); onContentReady(); }; var loadWindowsMediaContent = function() { loadQuickTimeContent(); }; var onContentReady = function() { hideLoader(); // TODO: resizable // // if (html) { // options.content = jQuery(html); // } // // switch(options.get("type")) { // case "image": case "iframe": // options.resize = options.content; // jQuery(".te_content").removeClass("te_scrollable"); // break; // default: // options.resize = jQuery("#temp_up .te_content"); // jQuery(".te_content").addClass("te_scrollable"); // } if ($("top_up").visible()) { replace(); } else { show(); } }; var showLoader = function() { var top_up = $("top_up"); var origin = top_up.visible() ? top_up : $(options.get("topUp")); if (origin) { if (origin.childElements().length > 0) { origin = $(origin.childElements()[0]); } var dimensions = $H(origin.getDimensions()); var offsets = origin.cumulativeOffset(); } else { var dimensions = $H(document.viewport.getDimensions()); var offsets = document.viewport.getScrollOffsets(); } offsets.each(function(v, i) { dimensions.set($w("left top")[i], v); }); dimensions.keys().each(function(k) { dimensions.set(k, dimensions.get(k) + "px") }); $("tu_loader").setStyle(dimensions.toObject()).show(); }; var hideLoader = function() { $("tu_loader").hide(); }; var show = function() { var afterFinish = function() { $("top_up").down(".te_title").appear({duration: reservedDuration}); $("top_up").down(".te_close_link").appear({duration: reservedDuration}); if (options.get("group") && options.get("group").length > 1 && !$("top_up").down(".te_controls").visible()) { $("top_up").down(".te_controls").appear({duration: reservedDuration}); } afterDisplay(); }; clearContent(); setContent(); setSizeAndPosition(); moveContent("top_up"); var effectDuration = options.get("duration") - reservedDuration; switch(options.get("effect")) { case "appear": case "fade": new Effect.Appear ("top_up", {duration: effectDuration, afterFinish: afterFinish}); break; case "switch": case "clip": new Effect.SwitchOn("top_up", {duration: effectDuration, afterFinish: afterFinish}); break; default: transform(afterFinish); break; } }; var replace = function(callback) { var te_content = $("top_up").down(".te_content").lockDimensions(); var childElements = te_content.childElements(); var wrapper = new Element("div"); te_content.insert({bottom: wrapper}); childElements.each(function(child) { wrapper.insert({bottom: child}); }); wrapper.fade({duration: reservedDuration, afterFinish: function() { moveContent("temp_up"); wrapper.remove(); if (!callback) { callback = function() { clearContent(); setContent(); }; } callback.apply([], [$("top_up").down(".tu_content"), data]); setDimensions(); $("top_up").centerWrap($("temp_up")); te_content.morph({width : $("temp_up").down(".te_content").getWidth() + "px", height: $("temp_up").down(".te_content").getHeight() + "px"}, {duration: 0.4, afterFinish: function() { moveContent("top_up"); $("top_up").removeCenterWrap(); afterDisplay(); } }); }}); }; var hide = function(callback) { var afterFinish = function() { $("tu_overlay").hide(); afterHide(); if (callback) { callback.apply([], [$("top_up").down(".tu_content"), data]); } }; // TODO: IE tweaks in hide() // // jQuery("#top_up .tu_title") .fadeOut(duration); // jQuery("#top_up .tu_controls").fadeOut(duration); // if (jQuery.ie) { // jQuery("#top_up .tu_close_link").hide(); // onReady.apply(); // } else { // jQuery("#top_up .tu_close_link").fadeOut(duration, onReady); // } $("top_up").down(".te_title") .fade({duration: reservedDuration}); $("top_up").down(".te_controls") .fade({duration: reservedDuration}); if (movieContentDisplayed()) { options.get("content").firstDescendant().hide(); } $("top_up").down(".te_close_link").fade({duration: reservedDuration, afterFinish: function() { var effectDuration = options.get("duration") - reservedDuration; switch(options.get("effect")) { case "appear": case "fade": new Effect.Fade ("top_up", {duration: effectDuration, afterFinish: afterFinish}); break; case "switch": case "clip": new Effect.SwitchOff("top_up", {duration: effectDuration, afterFinish: afterFinish}); break; default: transform(afterFinish); break; } }}); }; var setContent = function() { $("temp_up").down(".te_content").appendChild(options.get("content")); }; var moveContent = function(to) { var from = (to == "top_up") ? "temp_up" : "top_up"; var fromContainer = $(from).down(".te_content"); var toContainer = $(to ).down(".te_content"); fromContainer.childElements().each(function(e) { toContainer.appendChild(e); }); }; var clearContent = function() { $("top_up").down(".te_content").childElements().invoke("remove"); }; var transform = function(callback) { var topUp = $("top_up"); var teContent = topUp.down(".te_content"); if (options.get("topUp")) { var topUpElement = $(options.get("topUp")); var dimensions = {top : topUpElement.cumulativeOffset().top, left: topUpElement.cumulativeOffset().left, width : topUpElement.getWidth(), height: topUpElement.getHeight() - 4}; } else { var dimensions = {top : parseInt(document.viewport.getDimensions().height / 2, 10) - parseInt(teContent.getHeight() / 2, 10) + document.viewport.getScrollOffsets().top, left: parseInt(document.viewport.getDimensions().width / 2, 10) - parseInt(teContent.getWidth() / 2, 10) + document.viewport.getScrollOffsets().left, width : 10, height: 10}; } if (displaying) { topUp.addClassName("te_transparent") .show(); if (!options.get("topUp")) { dimensions.top -= parseInt(teContent.getHeight() / 2, 10); dimensions.left -= parseInt(teContent.getWidth() / 2, 10); } } var topUpOffset = topUp .cumulativeOffset(); var teContentOffset = teContent.cumulativeOffset(); var teContentDiff = {width: topUp.getWidth() - teContent.getWidth(), height: topUp.getHeight() - teContent.getHeight()}; dimensions.top -= teContentOffset.top - topUpOffset.top; dimensions.left -= teContentOffset.left - topUpOffset.left; var origin = {top: parseInt(topUp.getStyle("top"), 10), left: parseInt(topUp.getStyle("left"), 10), width: topUp.getWidth(), height: topUp.getHeight()}; var opts = {to : displaying ? origin : dimensions}; if (displaying) { opts.to.width -= teContentDiff.width; opts.to.height -= teContentDiff.height; } var animation = function() { var onReady = function() { displaying ? callback.apply() : topUp.fade({duration: reservedDuration, afterFinish: callback}); topUp.removeClassName("te_overflow"); }; topUp .morph({top: opts.to.top + "px", left: opts.to.left + "px"}, {duration: reservedDuration}); options.get("content").morph({width: opts.to.width + "px", height: opts.to.height + "px"}, {duration: reservedDuration, afterFinish: onReady}); }; if (displaying) { topUp .setStyle({top: dimensions.top + "px", left: dimensions.left + "px"}); options.get("content").setStyle({width: dimensions.width + "px", height: dimensions.height + "px"}); topUp.hide() .addClassName("te_overflow") .removeClassName("te_transparent") .appear({duration: reservedDuration, afterFinish: animation}); } else { animation.apply(); } }; var setSizeAndPosition = function() { setDimensions(); setOffsets(); }; var setDimensions = function() { var viewportDimensions = $H(document.viewport.getDimensions()); var topUpDimensions = $H($("top_up").getDimensions()); var tuContentDimensions = $H($("top_up").down(".te_content").getDimensions()); var dimensions = $H(options.get("content").getDimensions()); var diffs = $w("width height").inject($H(), function(h, k) { h.set(k, topUpDimensions.get(k) - tuContentDimensions.get(k)); return h; }); options.each(function(o) { if ($w("width height").include(o.first())) { dimensions.set(o.first(), parseInt(o.last(), 10)); } }); var change = $w("width height").inject($H(), function(changed, k) { var currentValue = dimensions.get(k); var newValue = deriveDimension(currentValue, viewportDimensions.get(k), diffs.get(k)); if (currentValue != newValue) { options.get("type") == "image" ? changed.set(k, {value: newValue, factor: newValue / currentValue}) : dimensions.set(k, newValue); } return changed; }).toArray().sortBy(function(c) { return c.last().factor; }).first(); if (change) { var counterKey = {width: "height", height: "width"}[change.first()]; dimensions.set(counterKey, parseInt(dimensions.get(counterKey) * change.last().factor, 10)); dimensions.set(change.first(), change.last().value); } dimensions.keys().each(function(k) { dimensions.set(k, dimensions.get(k) + "px") }); options.get("content").setStyle(dimensions.toObject()); }; var deriveDimension = function(currentValue, maxValue, padding) { return (currentValue + padding <= maxValue - 8 ? currentValue : maxValue - padding - 8); }; var setOffsets = function(dimensions) { var dimensions = $H($("temp_up").getDimensions()); // TODO: deriving offsets when TopUp already visible in setOffsets() // // if ($("top_up").visible()) { // // } else { var viewportDimensions = $H(document.viewport.getDimensions()); var offsets = document.viewport.getScrollOffsets().inject($H(), function(result, offset, index) { var key = $w("width height")[index]; result.set($w("left top")[index], offset + parseInt(viewportDimensions.get(key) / 2, 10) - parseInt(dimensions.get(key) / 2, 10)); return result; }); // } if (options.get("x")) { offsets.set("left", options.get("x")); } if (options.get("y")) { offsets.set("top" , options.get("y")); } offsets.keys().each(function(k) { offsets.set(k, offsets.get(k) + "px") }); $("top_up").setStyle(offsets.toObject()); }; var afterDisplay = function() { // TODO: IE tweaks in afterDisplay() $$(".te_top_up,.te_content").invoke("unlockDimensions"); if (movieContentDisplayed()) { options.get("content").firstDescendant().show(); } if (options.get("ondisplay")) { options.get("ondisplay").apply([], [$("top_up").down(".te_content"), data]); } displaying = false; }; var afterHide = function() { if (options.get("onclose")) { options.get("onclose").apply([], [$("top_up").down(".te_content"), data]); } }; var deriveGroup = function() { if (options.get("group")) { if (group && group.name == options.get("group")) { return; } group = {name: options.get("group"), items: new Array}; $$(["[toptions]", presets.keys().join(",")].join(",")).each(function(e) { if (!e.readAttribute("tu_group")) { e.writeAttribute("tu_group", deriveToptions(e).get("group") || ""); } if (e.readAttribute("tu_group") == group.name) { group.items.push(e.identify()); } }); index = group.items.indexOf(options.get("topUp")); } else { group = null; } }; var navigateInGroup = function(step) { if (group === null) { return; } index = index + step; if (index < 0) { index = group.items.length - 1; } if (index > group.items.length - 1) { index = 0; } TopUp.displayTopUp($(group.items[index])); }; return { version: "1.7.2", host: scriptHost, images_path: "images/top_up/", players_path: "players/", init: function() { if (initialized) { return false; } try { document.observe("dom:loaded", function() { extendPrototype(); injectCode(); bind(); // TODO: draggable // new Draggable("top_up", {handle: "te_title", starteffect: null, endeffect: null}); on_ready.each(function(f) { f.apply(); }); }); initialized = true; } catch(e) {} }, defaultPreset: function(set) { default_preset.update(set); }, addPresets: function(sets) { presets.update(sets); }, observe: function(selector, alsoRebind) { observing.set("body" , false); observing.set("selector", selector); if (alsoRebind) { TopUp.rebind(); } }, ready: function(func) { on_ready.push(func); }, rebind: function() { // Normally not needed anymore due to use of event delegation (yay!) // But you might still need this when using custom observed elements (e.g. by calling TopUp.observe("#gallery")) $$(observing.get("currently")).invoke("stopObserving", "click", documentClick); observing.get("currently").clear(); bind(); }, displayTopUp: function(top_up, opts) { var toptions = deriveToptions(top_up, opts); TopUp.display(toptions.unset("reference"), toptions); }, display: function(reference, opts) { if (displaying) { return false; } try { displaying = true; data = {}; deriveOptions(reference, opts, true); deriveGroup(); prepare(); loadContent(); } catch(e) { displaying = false; alert("Sorry, but the following error occured:\n\n" + e); } }, update: function(func) { // if (jQuery("#top_up").is(":hidden")) { // return; // } // // options.type = "html"; // options.resize = jQuery("#temp_up .te_content"); // jQuery(".te_content").addClass("te_scrollable"); // // replace(func || function() {}); }, previous: function() { navigateInGroup(-1); }, next: function() { navigateInGroup(1); }, overlayClose: function() { if (parseInt(options.getoverlayClose, 10) == 1) { TopUp.close(); } }, close: function(afterClose) { if ($("top_up").visible()) { hide(afterClose); } }, onContentReady: onContentReady }; }()); TopUp.init(); }