if (typeof(TopUp) == "undefined") {

var scriptElement = (function deriveScriptElement() {
  var id = "tu_dummy_script";
  document.write('<script id="' + id + '"></script>');

  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] : "";
}());
var scriptParams = (function deriveScriptParams() {
  var src    = scriptElement.getAttribute("src");
  var pairs  = ((src.match(/([\?]*)\?(.*)+/) || ["", "", ""])[2] || "").replace(/(^[0123456789]+|\.js(\s+)?$)/, "").split("&");
  var params = {};
  
  for (var i = 0; i < pairs.length; i++) {
    if (pairs[i] != "") {
      var key_value = pairs[i].split("=");
      if (key_value.length == 2) {
        params[key_value[0].replace(/^\s+|\s+$/g, "")] = key_value[1].replace(/^\s+|\s+$/g, "");
      }
    }
  }
  return params;
}());

// *
// * TopUp 1.7.2 (Uncompressed)
// * The #1 Javascript Pop Up / Lightbox (http://gettopup.com)
// *
// * This library requires jQuery (http://jquery.com)
// *
// * (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, selector = null, on_ready = [], displaying = false, options = null, group = null, index = null, data = null;
  var fast_mode = false;
  var default_preset = {
    layout: "dashboard",
    effect: "transform",
    resizable: 1
  }, presets = {};
  
  var extendjQuery = function() {
    jQuery.extend({
      keys: function(hash) {
        var keys = [];
        for (var key in hash) {
          if (hash.hasOwnProperty(key)) {
            keys.push(key);
          }
        }
        return keys;
      },
      ie:  jQuery.browser.msie,
      ie6: jQuery.browser.msie && parseInt(jQuery.browser.version, 10) == 6,
      ie7: jQuery.browser.msie && parseInt(jQuery.browser.version, 10) == 7,
      ie8: jQuery.browser.msie && parseInt(jQuery.browser.version, 10) == 8,
      ff2: jQuery.browser.mozilla && parseFloat(jQuery.browser.version) < 1.9
    });
    jQuery.fn.extend({
      id: function() {
        if (!this.is("[id]")) {
          var id = "";
          var counter = 0;
            do {id = "element_" + counter++;} while (jQuery("#" + id).length);
          jQuery(this).attr("id", id);
        }
        return jQuery(this).attr("id");
      },
      markerId: function() {
        return "_" + this.id() + "_marker";
      },
      bubbleDetect: function(selector, separator) {
        var detected = null;
        var element = this;
        jQuery.each(selector.split(separator || ","), function(i, e) {
          var selector = jQuery.trim(e);
          if (jQuery(selector).index(element) != -1) {
            detected = {element: jQuery(element), selector: selector};
          }
        });
        return detected || (element.parent()[0] ? jQuery(element.parent()[0]).bubbleDetect(selector, separator) : null);
      },
      center: function() {
        var css = {top: parseInt((jQuery(window).height() - this.outerHeight()) / 2, 10) + jQuery(window).scrollTop(),
                    left: parseInt((jQuery(window).width() - this.outerWidth()) / 2, 10) + jQuery(window).scrollLeft(),
                    position: "absolute"};
        
        this.css(css);
        return this;
      },
      lockDimensions: function() {
        this.css({width: this.outerWidth(), height: this.outerHeight()});
        return this;
      },
      unlockDimensions: function() {
        this.css({width: "auto", height: "auto"});
        return this;
      },
      centerWrap: function(compare) {
        var current = {width: this.outerWidth(), height: this.outerHeight()}, delta = {width: 0, height: 0}, diff = 0;
        
        // added by Timo Besenreuther (2010-02-24)
        // fix problem with adjusting height in safari (topup used to gradually move down)
        compare.find(".te_frame").css("display", "block");
        
        diff = compare.outerWidth() - current.width;
        if (delta.width < diff) {
          delta.width = diff;
        }
        diff = compare.outerHeight() - current.height;
        
        if (delta.height < diff) {
          delta.height = diff;
        }
        
        var offset = this.offset();
        var css = {
                    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: this.width() + delta.width, 
                    height: this.height() + delta.height
                  };
        
        if (options.x) {
          css.left = options.x - parseInt((css.width  - compare.outerWidth())  / 2, 10);
        }
        if (options.y) {
          css.top  = options.y - parseInt((css.height - compare.outerHeight()) / 2, 10);
        }
        
        jQuery("#tu_center_wrapper").css(css);
        jQuery("#tu_centered_content").append(this);
        
        this.css({
              top: "auto",
              left: "auto",
              width: "auto",
              height: "auto",
              display: "inline-block",
              position: "relative"
             });
        
        if (jQuery.ff2) {
          this.css({display: "table"});
        }
        if (jQuery.ie) {
          this.css({display: "inline"});
        }
        
        jQuery("#tu_center_wrapper").show();
        
        return this;
      },
      removeCenterWrap: function(newTopUpWidth) {
        var position = jQuery("#tu_center_wrapper").offset();
        
        // added by Timo Besenreuther (2010-02-24)
        // this.outerWidth() does not work properly in ie8
        var delta = {
          width: jQuery("#tu_center_wrapper").outerWidth() - newTopUpWidth,
          height: jQuery("#tu_center_wrapper").outerHeight() - this.outerHeight()
        };
        
        this.css({
          top: position.top + parseInt(delta.height / 2, 10),
          left: position.left + parseInt(delta.width / 2, 10),
          position: "absolute"
        }).appendTo("body");
        
        jQuery("#tu_center_wrapper").hide();

        return this;
      },
      draggableZ: function(opts) {
        var element = this;
        
        this.mousedown(function(event) {
          if (opts && opts.only && !jQuery(event.target).is(opts.only)) {
            return;
          }
          
          event.preventDefault();

          var offset = element.offset();
          var diff = {top: event.pageY - offset.top, left: event.pageX - offset.left};
          
          jQuery("body").addClass("te_dragging");
          jQuery("*").bind("mousemove.draggable", function(event) {
            element.css({top: event.pageY - diff.top, left: event.pageX - diff.left});
          });
        });

        jQuery("#top_up").mouseup(function(event) {
          jQuery("body").removeClass("te_dragging");
          jQuery("*").unbind("mousemove.draggable");
        });
      }
    });
  };
  var injectCode = function() {
    var images_url = TopUp.host + TopUp.images_path;
    
    var css = '<style type="text/css" media="screen">.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}</style>';
    var ie7fix = '<style type="text/css" media="screen">.te_dashboard .te_content{margin-bottom:-14px}</style>';
    var ie6fix = '<style type="text/css" media="screen">.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" )}</style>';
    var iefix = '<style type="text/css" media="screen">#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}</style>';
    var html = '<div id="tu_overlay" onclick="TopUp.overlayClose()" style="display: none"></div><div id="top_up" class="te_top_up" style="display: none"><div class="te_wrapper"><div class="te_title"></div><table class="te_frame"><tr class="te_top"><td class="te_left te_corner"><div class="te_left_filler"></div></td><td class="te_middle te_rib"></td><td class="te_right te_corner"><div class="te_right_filler"></div></td></tr><tr class="te_middle"><td class="te_left te_rib"></td><td class="te_middle"><div class="te_content"><!-- Content --></div></td><td class="te_right te_rib"></td></tr><tr class="te_bottom"><td class="te_left te_corner"></td><td class="te_middle te_rib"></td><td class="te_right te_corner"></td></tr></table><div class="te_controls" style="display: none"><a class="te_previous_link" onclick="TopUp.previous()"></a><a class="te_next_link" onclick="TopUp.next()"></a></div><a class="te_close_link" onclick="TopUp.close()" style="display: none"></a></div></div><div id="temp_up" class="te_top_up te_transparent"><div class="te_wrapper"><div class="te_title"></div><table class="te_frame"><tr class="te_top"><td class="te_left te_corner"><div class="te_left_filler"></div></td><td class="te_middle te_rib"></td><td class="te_right te_corner"><div class="te_right_filler"></div></td></tr><tr class="te_middle"><td class="te_left te_rib"></td><td class="te_middle"><div class="te_content"><!-- Content --></div></td><td class="te_right te_rib"></td></tr><tr class="te_bottom"><td class="te_left te_corner"></td><td class="te_middle te_rib"></td><td class="te_right te_corner"></td></tr></table><div class="te_controls" style="display: none"><a class="te_previous_link" onclick="TopUp.previous()"></a><a class="te_next_link" onclick="TopUp.next()"></a></div><a class="te_close_link" onclick="TopUp.close()" style="display: none"></a></div></div><table id="tu_center_wrapper" style="display: none"><tr valign="middle"><td id="tu_centered_content" align="center"><!-- Top ups --></td></tr></table><div id="tu_loader" style="display: none"></div>';

    if (!jQuery("head").length) {
      jQuery(document.body).before("<head></head>");
    }
    jQuery(css).prependTo("head");
    
    if (jQuery.ie7 || jQuery.ie8) {
      jQuery(ie7fix).insertAfter("head > style:first");
    }
    if (jQuery.ie6) {
      jQuery(ie6fix).insertAfter("head > style:first");
    }
    if (jQuery.ie) {
      jQuery(iefix).insertAfter("head > style:first");
    }
  
    jQuery(html).appendTo("body");
  };
  var bind = function() {
    var coptions = [];
    
    // added by Timo Besenreuther (2010-02-24) / modified by Paul Engel (2010-02-25)
    if (!fast_mode) {
      coptions.push("[class^=tu_][class*=x]");
      jQuery.each(["db", "ql", "fl", "image", "html", "dom", "iframe", "ajax", "script"], function(i, coption) {
        coptions.push("[class^=tu_][class*=_" + coption + "]");
      });
    }
    
    selector = jQuery.merge([".top_up", "[toptions]", coptions.join(",")], jQuery.keys(presets)).join();
    
    jQuery(selector).live("click", topUpClick);
    jQuery(document).bind("keyup", documentKeyPress);
  };
  
  // added by Timo Besenreuther (2010-02-24)
  // fade duration 0 prevents black frame from flashing
  var fadeDuration = function(duration) {
    return jQuery.ie8 || jQuery.ie7 || jQuery.ie6 ? 0 : duration;
  };

  var topUpClick = function(event) {
    TopUp.displayTopUp(jQuery(event.target));
    return false;
  };
  var documentKeyPress = function(event) {
    if (jQuery("#top_up").is(":hidden") || jQuery(event.target).is(":input")) {
      return;
    }
    
    switch(event.keyCode) {
      case 27:
        TopUp.close(); break;
      case 37:
        TopUp.previous(); break;
      case 39:
        TopUp.next(); break;
    }
  };
  
  var deriveTopUpOptions = function(topUp, opts) {
    var toptions = jQuery.extend({}, {topUp: "#" + topUp.element.id(), preset: topUp.selector});
    
    jQuery.each(topUp.element.attr("class").split(/\s/), function(i, c) {
      if (c.match(/^tu_/)) {
        jQuery.each(c.replace(/^tu_/, "").split("_"), function(j, coption) {
          switch(coption) {
            case "db": case "ql": case "fl":
              toptions["layout"] = {"db": "dashboard", "ql": "quicklook", "fl": "flatlook"}[coption]; break;
            case "image": case "html": case "dom": case "iframe": case "ajax": case "script":
              toptions["type"] = coption; break;
            default:
              if (coption.match(/\dx\d/)) {
                toptions["width"]  = coption.split("x")[0];
                toptions["height"] = coption.split("x")[1];
              }
          } 
        });
      }
    });
    
    if (topUp.element.is("[toptions]")) {
      jQuery.each(topUp.element.attr("toptions").split(","), function(i, option) {
        var key_value = option.split("=");
        toptions[jQuery.trim(key_value[0])] = jQuery.trim(key_value[1]);
      });
    }
    
    if (toptions.noGroup && parseInt(toptions.noGroup, 10) == 1) {
      toptions.group = null;
    }
      
    if (opts) {
      toptions = jQuery.extend(toptions, opts);
    }
    
    return toptions;
  };
  var deriveOptions = function(reference, opts, store) {
    var result = jQuery.extend({}, default_preset);
    
    if (opts) {
      if (presets[opts.preset]) {
        result = jQuery.extend(result, presets[opts.preset]);
      }
      result = jQuery.extend(result, opts);
    }
    
    if (result.ondisplay && !jQuery.isFunction(result.ondisplay)) {
      var fdisplay     = result.ondisplay;
      result.ondisplay = function() {eval(fdisplay);};
    }
    if (result.onclose && !jQuery.isFunction(result.onclose)) {
      var fclose     = result.onclose;
      result.onclose = function() {eval(fclose);};
    }
    
    if (store) {
      result.reference = result.reference ? jQuery(result.reference) : reference;
      if (!result.type) {
        result.type = deriveType(reference);
      }
      if (movieContentDisplayed(result)) {
        result.resizable = 0;
      }
      options = jQuery.extend({}, result);
    }
    
    return result;
  };
  var deriveType = function(reference) {
    if (reference.toLowerCase().match(/\.(gif|jpg|jpeg|png)(\?[0123456789]+)?$/)) {
      return "image";
    }
    if (reference.toLowerCase().match(/\.(swf)(\?[0123456789]+)?$/)) {
      return "flash";
    }
    if (reference.toLowerCase().match(/\.(flv)(\?[0123456789]+)?$/)) {
      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)(\?[0123456789]+)?$/)) {
      return "quicktime";
    }
    if (reference.toLowerCase().match(/\.(ra|ram|rm|rpm|rv|smi|smil)(\?[0123456789]+)?$/)) {
      return "realplayer";
    }
    if (reference.toLowerCase().match(/\.(asf|avi|wma|wmv)(\?[0123456789]+)?$/)) {
      return "windowsmedia";
    }
    return "ajax";
  };
  var movieContentDisplayed = function(opts) {
    return jQuery.inArray((opts || options).type, ["flash", "flashvideo", "quicktime", "realplayer", "windowsmedia"]) != -1;
  };
  
  var deriveGroup = function() {
    if (options.group) {
    
      if (!(group && group.name == options.group)) {
        group = {name: options.group, items: jQuery([])};
        jQuery.each(jQuery(selector), function(i, e) {
          if (!jQuery(e).is("[tu_group]")) {
            jQuery(e).attr("tu_group", deriveOptions(null, deriveTopUpOptions(jQuery(e).bubbleDetect(selector))).group);
          }

          if (jQuery(e).attr("tu_group") == group.name) {
            group.items = group.items.add(e);
          }
        });
      }
      
      var ids = jQuery.map(group.items, function(e, i) {
                  return "#" + jQuery(e).id();
                });
      index = options.topUp ? jQuery.inArray(options.topUp, ids) : -1;
      
    } 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]);
  };
  
  var prepare = function() {
    if (jQuery("#top_up .te_frame").resizable) {
      jQuery("#top_up .te_frame").resizable("destroy");
    }
    
    jQuery("#top_up .te_title").fadeOut(fadeDuration(200));
    if (!(group && group.items.length > 1)) {
      jQuery("#top_up .te_controls").fadeOut(fadeDuration(200));
    }
    
    jQuery(".te_wrapper").attr("class", "te_wrapper te_" + options.layout);
    jQuery(".te_frame,.te_content").unlockDimensions();
    
    if (parseInt(options.shaded, 10) == 1) {
      jQuery("#tu_overlay").addClass("te_shaded");
    } else {
      jQuery("#tu_overlay").removeClass("te_shaded");
    }
  
    if ((parseInt(options.modal, 10) == 1) || (parseInt(options.shaded, 10) == 1) || (parseInt(options.overlayClose, 10) == 1)) {
      if (jQuery.ie8) {
        var fixOverlay = function() {
          jQuery('#tu_overlay').css('top', document.body.parentElement.scrollTop+'px');
        };
        fixOverlay.apply();
        window.onresize = fixOverlay;
        jQuery(window).bind('scroll', fixOverlay);
      }
      jQuery("#tu_overlay").show();
    } else {
      jQuery("#tu_overlay").hide();
    }
    
    // added by Timo Besenreuther (2009-11-14) / modified by Paul Engel (2009-11-14)
    var altText = "";
    if (options.topUp && (options.topUp != "") && ((parseInt(options.readAltText, 10) == 1) || (options.title && options.title.match("{alt}")))) {
      var topUp = jQuery(options.topUp);

      if (topUp.length) {
        var image = topUp.find("img");
        if (image.length) {
          altText = image.attr("alt") || "";
        }
        if (altText != "" && !(options.title && options.title.match("{alt}"))) {
          options.title = "{alt}";
        }
      }
    }
    options.title = (options.title || "").replace("{alt}", altText).replace("{current}", group === null ? "" : (index + 1)).replace("{total}", group === null ? "" : group.items.length);
  };  
  var loadContent = function() {
    switch(options.type) {
      case "image":
        options.content = new Image();
        jQuery(options.content).load(function() {
                                  options.content = jQuery(this);
                                  onContentReady();
                                })
                               .attr("src", options.reference);
        break;
      case "flash": case "flashvideo": case "quicktime": case "realplayer": case "windowsmedia":
        loadMovie(options.type, options.reference, options.width, options.height); break;
      case "iframe":
        options.content = jQuery('<iframe src="' + options.reference + '" frameborder="0" border="0"></iframe>'); break;
      case "html": case "dom":
        var reference = jQuery(options.reference);
        if (reference.context) {
          var marker = jQuery("<div></div>").attr({
                         id     :  reference.markerId(), 
                         "class": (reference.is(":hidden") ? "hidden" : ""), 
                         style  : "display: none"
                       });
          options.content = jQuery("<div></div>").append(reference.before(marker).addClass("marked"));
          reference.show();
        } else {
          options.content = jQuery("<div></div>").append(reference);
        }
        break;
      case "ajax": case "script":
        options.content = null;
        jQuery.ajax({url: options.reference, 
                     type: (parseInt(options.post, 10) == 1) ? "POST" : "GET", 
                     cache: false, 
                     async: false, 
                     data: options.parameters, 
                     dataType: (options.type == "ajax") ? "html" : "script", 
                     success: onContentReady});
    }
    
    if (jQuery.inArray(options.type, ["html", "dom", "iframe"]) != -1) {
      onContentReady();
    }
  };
  var loadMovie = function(type, src, width, height) {
    if (!jQuery.ie) {
      switch(options.type) {
        case "flash":
          loadFlashContent(); break;
        case "flashvideo":
          loadFlashVideoContent(); break;
        case "quicktime":
          loadQuickTimeContent(); break;
        case "realplayer":
          loadRealPlayerContent(); break;
        case "windowsmedia":
          loadWindowsMediaContent(); break;
      }
      return;
    }
    
    var object_attrs = {width: width, height: height}, params = {src: src}, classid = null, mimetype = null, codebase = null, pluginspage = null;
    
    switch(type) {
      case "flash": case "flashvideo":
        classid     = "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000";
        codebase    = "http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0";
        mimetype    = "application/x-shockwave-flash";
        pluginspage = "http://get.adobe.com/flashplayer/";
        break;
      case "quicktime":
        classid     = "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B";
        codebase    = "http://www.apple.com/qtactivex/qtplugin.cab";
        mimetype    = "video/quicktime";
        pluginspage = "http://www.apple.com/quicktime/download/";
        params.scale    = "aspect";
        params.bgcolor  = "black";
        params.showlogo = "false"; 
        params.autoplay = "true";
        break;
      case "realplayer":
        classid     = "clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA";
        mimetype    = "audio/x-pn-realaudio-plugin";
        pluginspage = "http://www.real.com/freeplayer/?rppr=rnwk";
        params.controls  = "imagewindow";
        params.console   = "one";
        params.autostart = "true";
        params.nojava    = "true";
        break;
      case "windowsmedia":
        classid     = "clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6";
        codebase    = "http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701";
        mimetype    = "application/x-oleobject";
        pluginspage = "http://www.microsoft.com/Windows/MediaPlayer/";
        params.filename           = src;
        params.animationatstart   = "true";
        params.transparentatstart = "true";
        params.autostart          = "true"; 
        params.showcontrols       = "true";
        params.showstatusbar      = "true"; 
        params.windowlessvideo    = "true";
        break;
    }
    
    switch(type) {
      case "flash": case "flashvideo":
        params.allowfullscreen = "true";
      case "flashvideo":
        params.flashvars = "file=" + src + "&autostart=true";
        src              = TopUp.host + TopUp.players_path + "flvplayer.swf";
        params.src       = src;
        params.movie     = src;
        break;
    }
    
    object_attrs.codebase = codebase;
    if (window.ActiveXObject) {
      object_attrs.classid = classid;
      object_attrs.data    = src;
    }
    
    var paramTags = "";
    for (var key in params) {
      paramTags += " " + createElementTag("param", {name: key, value: params[key]});
    }

    params.width       = width;
    params.height      = height;
    params.mimetype    = mimetype;
    params.pluginspage = pluginspage;
    
    var element = document.createElement("div");
    element.innerHTML = createElementTag("object", object_attrs) + paramTags + createElementTag("embed", params) + "</embed></object>";

    options.content = jQuery(element);
    onContentReady();
  };
  var createElementTag = function(tagName, attrs) {
    var html = "<" + tagName;
    for (var key in attrs) {
      html += " " + key + "='" + attrs[key] + "'";
    }
    return html + ">";
  };
  var loadFlashContent = function() {
    var object = jQuery("<object></object>").attr({width   : options.width, 
                                                   height  : options.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.append(jQuery("<param></param>").attr({name: "src"            , value: options.reference}));
    object.append(jQuery("<param></param>").attr({name: "allowfullscreen", value: "true"}));
    
    object.append(jQuery("<embed></embed>").attr({src            : options.reference,
                                                  width          : options.width,
                                                  height         : options.height,
                                                  allowfullscreen: "true",
                                                  type           : "application/x-shockwave-flash",
                                                  pluginspage    : "http://get.adobe.com/flashplayer/"}));
    
    options.content = jQuery("<div></div>").attr({width: options.width, height: options.height});
    options.content.append(object);
    onContentReady();
  };
  var loadFlashVideoContent = function() {
    var object = jQuery("<object></object>").attr({width   : options.width, 
                                                   height  : options.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.append(jQuery("<param></param>").attr({name: "movie"          , value: TopUp.host + TopUp.players_path + "flvplayer.swf"}));
    object.append(jQuery("<param></param>").attr({name: "flashvars"      , value: "file=" + options.reference + "&autostart=true"}));
    object.append(jQuery("<param></param>").attr({name: "allowfullscreen", value: "true"}));
                                        
    object.append(jQuery("<embed></embed>").attr({src            : TopUp.host + TopUp.players_path + "flvplayer.swf", 
                                                  width          : options.width,
                                                  height         : options.height,
                                                  flashvars      : "file=" + options.reference + "&autostart=true",
                                                  allowfullscreen: "true",
                                                  type           : "application/x-shockwave-flash",
                                                  pluginspage    : "http://get.adobe.com/flashplayer/"}));
    
    options.content = jQuery("<div></div>").attr({width: options.width, height: options.height});
    options.content.append(object);
    onContentReady();
  };
  var loadQuickTimeContent = function() {
    var object = jQuery("<object></object>").attr({width   : options.width, 
                                                   height  : options.height,
                                                   classid : "clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B",
                                                   codebase: "http://www.apple.com/qtactivex/qtplugin.cab",
                                                   style   : "display: none"});
                                                   
    object.append(jQuery("<param></param>").attr({name: "src"     , value: options.reference}));
    object.append(jQuery("<param></param>").attr({name: "scale"   , value: "aspect"}));
    object.append(jQuery("<param></param>").attr({name: "bgcolor" , value: "black"}));
    object.append(jQuery("<param></param>").attr({name: "showlogo", value: "false"}));
    object.append(jQuery("<param></param>").attr({name: "autoplay", value: "true"}));
    
    object.append(jQuery("<embed></embed>").attr({src        : options.reference,
                                                  width      : options.width,
                                                  height     : options.height,
                                                  scale      : "aspect", 
                                                  bgcolor    : "black",
                                                  showlogo   : "false", 
                                                  autoplay   : "true",
                                                  type       : "video/quicktime",
                                                  pluginspage: "http://www.apple.com/quicktime/download/"}));
    
    options.content = jQuery("<div></div>").attr({width: options.width, height: options.height, style: "background: black"});
    options.content.append(object);
    onContentReady();
  };
  var loadRealPlayerContent = function() {
    var object = jQuery("<object></object>").attr({width  : options.width, 
                                                   height : options.height,
                                                   classid: "clsid:CFCDAA03-8BE4-11CF-B84B-0020AFBBCCFA",
                                                   style  : "display: none"});
                                                   
    object.append(jQuery("<param></param>").attr({name: "src"      , value: options.reference}));
    object.append(jQuery("<param></param>").attr({name: "controls" , value: "imagewindow"}));
    object.append(jQuery("<param></param>").attr({name: "console"  , value: "one"}));
    object.append(jQuery("<param></param>").attr({name: "autostart", value: "true"}));
    
    object.append(jQuery("<embed></embed>").attr({src        : options.reference,
                                                  width      : options.width,
                                                  height     : options.height,
                                                  controls   : "imagewindow",
                                                  console    : "one",
                                                  autostart  : "true",
                                                  nojava     : "true",
                                                  type       : "audio/x-pn-realaudio-plugin",
                                                  pluginspage: "http://www.real.com/freeplayer/?rppr=rnwk"}));
    
    options.content = jQuery("<div></div>").attr({width: options.width, height: options.height});
    options.content.append(object);
    onContentReady();
  };
  var loadWindowsMediaContent = function() {
    loadQuickTimeContent();
  };

  var onContentReady = function(html) {
    hideLoader();
    
    if (html) {
      options.content = jQuery(html);
    }
    
    switch(options.type) {
      case "image": case "html": case "dom": 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 (jQuery("#top_up").is(":hidden")) {
      show();
    } else {
      replace();
    }
  };
  var showLoader = function() {
    var origin = jQuery("#top_up");
    if (jQuery("#top_up").is(":hidden")) {
      origin = jQuery(options.topUp);
      if (!origin.length) {
        origin = jQuery(document);
      } else if (origin.children().length > 0) {
        origin = jQuery(origin.children()[0]);
      }
    }
    try {
      var dimensions = {top: origin.offset().top, 
                        left: origin.offset().left, 
                        width: origin.outerWidth(), 
                        height: origin.outerHeight()};
    } catch(e) {
      var dimensions = {top: jQuery(window).scrollTop(), 
                        left: jQuery(window).scrollLeft(), 
                        width: parseInt(jQuery(window).width() / 2, 10), 
                        height: parseInt(jQuery(window).height() / 2, 10)};
    }

    // added by Timo Besenreuther (2010-02-24)
    // &nbsp; fixes issue in ie6 (current image disappearing while loading)
    jQuery("#tu_loader").html("&nbsp;").css(dimensions).show();
  };
  var hideLoader = function() {
    jQuery("#tu_loader").hide();
  };
  
  var  show = function() {
    setContent();
    setDimensions();
    
    moveContent("top_up");
    jQuery("#top_up").center();
    
    if (options.x) {
      jQuery("#top_up").css({left: parseInt(options.x, 10)});
    }
    if (options.y) {
      jQuery("#top_up").css({top : parseInt(options.y, 10)});
    }
    
    switch(options.effect) {
      case "appear": case "fade":
        jQuery("#top_up").fadeIn(fadeDuration(300), afterDisplay); break;
      case "switch": case "clip":
        jQuery("#top_up").show("clip", {direction: "vertical"}, 500, afterDisplay); break;
      case "transform":
        var origin = jQuery(options.topUp);
        if (origin.children().length > 0) {
          origin = jQuery(origin.children()[0]);
        }
        var tuContent = jQuery("#top_up").find(".te_content");
        var dimensions = options.topUp ? 
                           jQuery.extend({width: origin.outerWidth(), height: origin.outerHeight()}, origin.offset()) : 
                           {top: parseInt(jQuery(window).height() / 2, 10) - parseInt(tuContent.height() / 2, 10) + jQuery(window).scrollTop(), 
                            left: parseInt(jQuery(window).width() / 2, 10) - parseInt(tuContent.width() / 2, 10) + jQuery(window).scrollLeft(), 
                            width: 10, 
                            height: 10};

        transform("from", dimensions, afterDisplay);
        break;
      default:
        jQuery("#top_up").show();
        afterDisplay();
    }
  };
  
  var replace = function(callback) {
    var isScrollable = jQuery("#top_up .te_content").hasClass("te_scrollable");
    if (isScrollable) {
      jQuery("#top_up .te_content").removeClass("te_scrollable");
    }
      var focusedElement = jQuery("#top_up .te_content");
    var wrapper        = jQuery("#top_up .te_content").lockDimensions().wrapInner("<div></div>").children();
    
    wrapper.fadeOut(fadeDuration(250), function() {
      if (parseInt(options.storeCurrent, 10) == 1) {
        wrapper.addClass("te_stored_content").hide().find(".te_stored_content").before(wrapper);
      } else {
        wrapper.children().appendTo("#temp_up .te_content").end().end().remove();
      }
      
      if (callback) {
        var arg = jQuery("#temp_up .te_content");
        if (jQuery.inArray(options.type, ["html", "dom"]) != -1) {
          arg = arg.children().eq(0);
        }
        callback.apply(arg);
      } else {
        clearContent();
        setContent();
      }
      if (isScrollable) {
        jQuery("#top_up .te_content").addClass("te_scrollable");
      }
      
      
      setDimensions();

      jQuery("#top_up").centerWrap(jQuery("#temp_up"));
      
      var animation = {width: jQuery("#temp_up .te_content").outerWidth(),
                       height: jQuery("#temp_up .te_content").outerHeight()};
      
      // added by Timo Besenreuther (2010-02-24)
      // fix problem with changing width in ie8 (topup used to move left)
      var newTopUpWidth = jQuery("#temp_up").outerWidth();
      jQuery("#top_up .te_content").animate(animation, 400, function() {
        moveContent("top_up");
        jQuery("#top_up").removeCenterWrap(newTopUpWidth);
        focusedElement.focus();
        afterDisplay();
      });
    });
  };
  
  var setContent = function() {
    options.content.appendTo("#temp_up .te_content");
  };
  var moveContent = function(to) {
    var from = to == "top_up" ? "temp_up" : "top_up";
    jQuery("#" + from + " .te_content").children().appendTo("#" + to + " .te_content");
    
    if (to == "top_up") {
      jQuery("#top_up .te_content").css({width: jQuery("#temp_up .te_content").css("width"), 
                                         height: jQuery("#temp_up .te_content").css("height")});
    }
  };
  var clearContent = function() {
    jQuery(".te_content .marked").each(function() {
      var marker = jQuery("#" + jQuery(this).markerId());
      if (marker.hasClass("hidden")) {
        jQuery(this).hide();
      }
      marker.after(jQuery(this).removeClass("marked")).remove();
    });
    
    jQuery(".te_content").children(":not(.te_stored_content)").remove();
  };
  
  var transform = function(direction, dimensions, callback) {
    var topUp     = jQuery("#top_up");
    var tuContent = topUp.find(".te_content");
    
    if (direction == "from") {
      topUp.addClass("te_transparent")
           .show();
    }
    
    var topUpOffset     = topUp.offset();
    var tuContentOffset = tuContent.offset();
    var tuContentDiff   = {width:  topUp.width()  - tuContent.width(), 
                           height: topUp.height() - tuContent.height()};
    
    dimensions.top    -= tuContentOffset.top  - topUpOffset.top;
    dimensions.left   -= tuContentOffset.left - topUpOffset.left;
    
    var origin    = {top: topUp.css("top"), left: topUp.css("left"), width: topUp.outerWidth(), height: topUp.outerHeight()};
    var opts      = {to: direction == "from" ? origin : dimensions, duration: 500};
    
    if (direction == "from") {
      opts.to.width  -= tuContentDiff.width;
      opts.to.height -= tuContentDiff.height;
    }

    var animation = function() {
      var cb = function() {
                 callback.apply();
                 options.content.removeClass("te_overflow");
               };
      
      var onReady = direction == "to" ?
                      function() {
                        topUp.fadeOut(fadeDuration(100), cb);
                      } : cb;

      topUp          .animate({top: opts.to.top, left: opts.to.left}, opts.duration);
      options.content.animate({width:  opts.to.width, 
                               height: opts.to.height}, opts.duration, onReady);
    };
    
    options.content.addClass("te_overflow");
    
    if (direction == "from") {
      topUp          .css({top:   dimensions.top,   left:   dimensions.left});
      options.content.css({width: dimensions.width, height: dimensions.height});

      jQuery(".te_top_up,.te_content").unlockDimensions();
      
      topUp.hide()
           .removeClass("te_transparent")
           .fadeIn(fadeDuration(150), animation);
    } else {
      animation.apply();
    }
  };
  var afterDisplay = function() {
    var duration = fadeDuration(500);
    
    if (jQuery("#top_up .te_frame").resizable && parseInt(options.resizable, 10) == 1) {
      var opts = {stop: function(){ jQuery("#top_up .te_frame").css({width: "auto", height: "auto"}); }, 
                  handles: "se", 
                  minWidth: 200, minHeight: 75, 
                  alsoResize: "#" + options.resize.id(), 
                  aspectRatio: options.type == "image"};
      jQuery("#top_up .te_frame").resizable(opts);
    }
    
    if (jQuery.ie6 || jQuery.ie7) {
      jQuery("#top_up .te_title").css("width", jQuery("#top_up").width());
    }
    jQuery("#top_up .te_title").html(options.title || "")
                               .fadeIn(duration);
    
    if (group && group.items.length > 1 && jQuery("#top_up .te_controls").is(":hidden")) {
      if (jQuery.ie6) {
        jQuery("#top_up .te_controls").show();
      } else {
        jQuery("#top_up .te_controls").fadeIn(duration);
      }
    }
    
    if (jQuery("#top_up .te_close_link").is(":hidden")) {
      if (jQuery.ie6) {
        jQuery("#top_up .te_close_link").show();
      } else {
        jQuery("#top_up .te_close_link").fadeIn(duration);
      }
    }
    
    checkPosition();
    
    jQuery(".te_top_up,.te_content").unlockDimensions();
    if (movieContentDisplayed()) {
      options.content.find("object").show();
    }
    
    if (options.ondisplay) {
      options.ondisplay.apply(this, [jQuery("#top_up .te_content"), data]);
    }
    
    displaying = false;
  };

  var setDimensions = function(dimensions) {
    var func = dimensions ? null : checkHeight;
    
    if (!dimensions) {
      options.resize.unlockDimensions();
      if (jQuery.inArray(options.type, ["image", "html", "dom", "iframe"]) != -1) {
        jQuery("#temp_up .te_content").unlockDimensions();
      }
      
      dimensions = {};
      if (options.width) {
        dimensions.width = parseInt(options.width, 10);
      }
      if (options.height) {
        dimensions.height = parseInt(options.height, 10);
      }
      if (jQuery.ie6) {
        jQuery("#top_up .te_title").css("width", jQuery("#temp_up").outerWidth());
      }
    }
    
    // added by Timo Besenreuther (2010-02-24)
    // close button does not get transformed properly in ie8, so we just hide it
    if (jQuery.ie8) {
      jQuery("#top_up .te_close_link").hide();
    }
    
    options.resize.css(dimensions);
    
    // added by Timo Besenreuther (2010-02-24)
    // display close button again after resizing
    if (jQuery.ie8) {
      jQuery("#top_up .te_close").show();
    }
    
    if (func) {
      func.apply();
    }    
  };
  var checkHeight = function() {
    if (jQuery("#temp_up").outerHeight() <= jQuery(window).height() - 4) {
      return;
    }
    
    var extraHeight = jQuery("#temp_up").outerHeight() - jQuery("#temp_up .te_content").height(),
        dimensions = {height: jQuery(window).height() - 4 - extraHeight};
    
    if (options.type == "image") {
      dimensions.width = parseInt(options.content.width() * (dimensions.height / options.content.height()), 10);
    }
    
    setDimensions(dimensions);
  };
  var checkPosition = function() {
    var offset     = jQuery("#top_up").offset();
    var dimensions = {width: jQuery("#top_up").outerWidth(), height: jQuery("#top_up").outerHeight()};
    var position   = {};
    
    if (offset.top - jQuery(window).scrollTop() < 2) {
      position.top = jQuery(window).scrollTop() + 2;
    } else if (offset.top + dimensions.height - jQuery(window).scrollTop() > jQuery(window).height() - 2) {
      position.top = jQuery(window).scrollTop() + jQuery(window).height() - dimensions.height - 2;
    }

    if (offset.left - jQuery(window).scrollLeft() < 2) {
      position.left = jQuery(window).scrollLeft() + 2;
    } else if (offset.left + dimensions.width - jQuery(window).scrollLeft() > jQuery(window).width() - 2) {
      position.left = jQuery(window).scrollLeft() + jQuery(window).width() - dimensions.width - 24;
    }

    if (jQuery.keys(position).length > 0) {
      if (jQuery.ie6 || jQuery.ie7) {
        // added by Timo Besenreuther (2010-02-24)
        // IE6&7 somehow lose the content (make sure it is displayed)
        jQuery("#top_up").css(position);
        window.setTimeout(function() {
          jQuery("#top_up .te_content").show();
        }, 1);
      } else {
        jQuery("#top_up").animate(position, 300);
      }
    }
  };
  
  var hide = function(callback) {
    jQuery(".te_content .te_stored_content").removeClass("te_stored_content");
    
    var duration = fadeDuration(250);
    var onReady = function() {
      animateHide(callback);
    };
    
    jQuery("#top_up .te_title")   .fadeOut(duration);
    jQuery("#top_up .te_controls").fadeOut(duration);
    
    if (movieContentDisplayed()) {
      options.content.find("object").hide();
    }
    
    if (jQuery.ie) {
      jQuery("#top_up .te_close_link").hide();
      onReady.apply();
    } else {
      jQuery("#top_up .te_close_link").fadeOut(duration, onReady);
    }
  };
  var animateHide = function(callback) {
    var afterHide = function() {
      if (callback) {
        callback.apply(this, [jQuery("#top_up .te_content"), data]);
      }
      if (options.onclose) {
        options.onclose.apply(this, [jQuery("#top_up .te_content"), data]);
      }
      
      clearContent();
      moveContent("temp_up");
    };
    
    switch(options.effect) {
      case "appear": case "fade":
        jQuery("#top_up").fadeOut(fadeDuration(300), afterHide); break;
      case "switch": case "clip":
        jQuery("#top_up").hide("clip", {direction: "vertical"}, 400, afterHide); break;
      case "transform":
        if (jQuery.ie6) {
          // added by Timo Besenreuther (2010-02-24)
          // transforming back to origin sometimes causes problems in ie6
          jQuery("#top_up").hide();
          afterHide.apply();
          break;
        }
        var origin = jQuery(options.topUp);
        if (origin.children().length > 0) {
          origin = jQuery(origin.children()[0]);
        }
        var tuContent = jQuery("#top_up").find(".te_content");
        var dimensions = options.topUp ? 
                           jQuery.extend({width: origin.outerWidth(), height: origin.outerHeight()}, origin.offset()) : 
                           {top: parseInt(jQuery(window).height() / 2, 10) + jQuery(window).scrollTop(), 
                            left: parseInt(jQuery(window).width() / 2, 10) + jQuery(window).scrollLeft(), 
                            width: 10, 
                            height: 10};
                           
        transform("to", dimensions, afterHide);
        break;
      default:
        jQuery("#top_up").hide();
        afterHide();
    }
    
    jQuery("#tu_overlay").hide();
  };
  
  return {
    version: "1.7.2",
    jquery: null,
    host: scriptParams.host || scriptHost,
    images_path: scriptParams.images_path || "/css/img/top_up/",
    players_path: scriptParams.players_path ||  "players/",
    data: data,
    init: function() {
      if (initialized) {
        return false;
      }
      
      try {
        jQuery(document).ready(function() {
          TopUp.jquery = jQuery().jquery;

          fast_mode = parseInt(scriptParams.fast_mode, 10) == 1;
          default_preset.resizable = jQuery.ui && jQuery.ui.resizable ? 1 : 0;
          
          extendjQuery();
          injectCode();
          bind();
        
          jQuery("#top_up").draggableZ({only: ".te_title,.te_top *,.te_bottom *"});
          jQuery.each(on_ready, function(i, func) {
            func.apply();
          });
        });
      
        jQuery(window).unload(function() {
          jQuery("*").unbind();
          if (jQuery("#top_up .te_frame").resizable) {
            jQuery("#top_up .te_frame").resizable("destroy");
          }
        });
        
        initialized = true;
      } catch(e) {}
    },
    defaultPreset: function(set) {
      default_preset = jQuery.extend(default_preset, set);
    },
    addPresets: function(sets) {
      presets = jQuery.extend(presets, sets);
    },
    ready: function(func) {
      on_ready.push(func);
    },
    // added by Timo Besenreuther (2010-02-24) / modified by Paul Engel (2010-02-25)
    // disable cpu-consuming options like .tu_images etc
    enableFastMode: function() {
      var args = arguments;
      
      if (!jQuery.isReady) {
        TopUp.ready(function() {
          TopUp.enableFastMode.apply(null, args);
        });
        return false;
      }
      
      if (arguments.length) {
        var arg  = arguments[0];
        var func = jQuery.isFunction(arg) ? arg : function() { return arg; };
        fast_mode = func.apply();
      } else {
        fast_mode = true;
      }
      fast_mode = fast_mode == true || parseInt(fast_mode, 10) == 1;
      
      TopUp.rebind();
    },
    rebind: function() {
      if (selector) {
        jQuery(selector).die("click", topUpClick);
      }
      bind();
    },
    displayTopUp: function(element, opts) {
      if (!jQuery.isReady) {
        TopUp.ready(function() {
          TopUp.displayTopUp(element, opts);
        });
        return false;
      }
      var topUp = jQuery(element).bubbleDetect(selector);
      var toptions = deriveTopUpOptions(topUp, jQuery.extend(opts || {}, {trigger: "#" + jQuery(element).id()}));
      TopUp.display(topUp.element.attr("href"), toptions);
    },
    display: function(reference, opts) {
      if (!jQuery.isReady) {
        TopUp.ready(function() {
          TopUp.display(reference, opts);
        });
        return false;
      }
      
      if (displaying) {
        return false;
      }
      
      try {
        displaying = true;
        
        data = {};
        deriveOptions(reference, opts, true);
        
        showLoader();
        
        var continueDisplaying = function() {
          try {
            deriveGroup();
            prepare();
            loadContent();
          } catch(e) {
            displaying = false;
            hideLoader();
            alert("Sorry, but the following error occured:\n\n" + e);
          }
        };
        
        // added by Timo Besenreuther (2010-02-24)
        // force ie6 to display loader while deriving groups (which can take a while...)
        if (jQuery.ie6) {
          window.setTimeout(continueDisplaying, 1);
        } else {
          continueDisplaying();
        }
      } catch(e) {
        displaying = false;
        hideLoader();
        alert("Sorry, but the following error occured:\n\n" + e);
      }
    },
    update: function(func) {
      if (jQuery("#top_up").is(":hidden")) {
        return;
      }
      
      replace(func || function() {});
    },
    restore: function(storeCurrent, callback) {
      options.storeCurrent = storeCurrent ? 1 : 0;
      options.ondisplay    = callback;

      TopUp.update(function() {
        clearContent();
        var stored_content = this.children(":not(.te_stored_content):first-child").prev();
        if (!stored_content.length) {
          stored_content = this.children(".te_stored_content:last-child");
        }
        stored_content.children().insertBefore(stored_content).end().end().remove();
      });
    },
    previous: function() {
      navigateInGroup(-1);
    },
    next: function() {
      navigateInGroup(1);
    },
    overlayClose: function() {
      if (parseInt(options.overlayClose, 10) == 1) {
        TopUp.close();
      }
    },
    close: function(callback) {
      if (jQuery("#top_up").is(":visible")) {
        hide(callback);
      }
    }
  };
}());

(function () {
  var missing_libs = [];
  
  if (scriptParams.libs != null) {
    var libs = scriptParams.libs.replace(/clip|switch/g, "fxc-clip").replace(/resize/g, "uic-resizable").split("+");
    
    for (var i = 0; i < libs.length; i++) {
      if (["all", "core", "fxc-clip", "uic-resizable"].indexOf(libs[i]) != -1) {
        if (missing_libs.indexOf(libs[i]) == -1) {
          missing_libs.push(libs[i]);
        }
      }
    }
  } else {
    if (typeof(jQuery) == "undefined") {
      missing_libs.push("all");
    } else {
      if (!jQuery.effects || !jQuery.effects.clip) {
        missing_libs.push("fxc-clip");
      }
      if (!jQuery.ui || !jQuery.ui.resizable) {
        missing_libs.push("uic-resizable");
      }
    }
  }
  
  if (missing_libs.length == 0) {
    TopUp.init();
  } else {
    var src = scriptElement.getAttribute("src").replace(/(development\/)?top_up(\-min)?\.js.*$/, "jquery/" + missing_libs.sort().join(".") + ".js");
    document.write('<script src="' + src + '" type="text/javascript" ' + 
                           'onload="TopUp.init()" onreadystatechange="TopUp.init()">' +
                   '</script>');
  }
}());

}


