var GB_CURRENT = null;
GB_hide = function(cb){
   GB_CURRENT.hide(cb);
}

//  ---------------------------------------

;
GreyBox = new AJS.Class({
   init : function(_2){
      this.use_fx = AJS.fx;
      this.type = "page";
      this.overlay_click_close = false;
      this.salt = 0;
      this.root_dir = GB_ROOT_DIR;
      this.callback_fns = [];
      this.reload_on_close = false;
      this.src_loader = this.root_dir + "loader_frame.html";
      var _3 = window.location.hostname.indexOf("www");
      var _4 = this.src_loader.indexOf("www");
      if(_3 != - 1 && _4 == - 1){
         this.src_loader = this.src_loader.replace("://", "://www.");
      }
      if(_3 == - 1 && _4 != - 1){
         this.src_loader = this.src_loader.replace("://www.", "://");
      }
      this.show_loading = true;
      AJS.update(this, _2);
   }
   , addCallback : function(fn){
      if(fn){
         this.callback_fns.push(fn);
      }
   }
   , show : function(_6){
      GB_CURRENT = this;
      this.url = _6;
      var _7 = [AJS.$bytc("object"), AJS.$bytc("select")];
      AJS.map(AJS.flattenList(_7), function(_8){
         _8.style.visibility = "hidden";
      }
      );
      this.createElements();
      return false;
   }
   , hide : function(cb){
      var me = this;
      AJS.callLater(function(){
         var _b = me.callback_fns;
         if(_b != []){
            AJS.map(_b, function(fn){
               fn();
            }
            );
         }
         me.onHide();
         if(me.use_fx){
            var _d = me.overlay;
            AJS.fx.fadeOut(me.overlay, {
               onComplete : function(){
                  AJS.removeElement(_d);
                  _d = null;
               }
               , duration : 300
            }
            );
            AJS.removeElement(me.g_window);
         }
         else{
            AJS.removeElement(me.g_window, me.overlay);
         }
         me.removeFrame();
         AJS.REV(window, "scroll", _GB_setOverlayDimension);
         AJS.REV(window, "resize", _GB_update);
         var _e = [AJS.$bytc("object"), AJS.$bytc("select")];
         AJS.map(AJS.flattenList(_e), function(_f){
            _f.style.visibility = "visible";
         }
         );
         GB_CURRENT = null;
         if(me.reload_on_close){
            window.location.reload();
         }
         if(AJS.isFunction(cb)){
            cb();
         }
      }
      , 10);
   }
   , update : function(){
      this.setOverlayDimension();
      this.setFrameSize();
      this.setWindowPosition();
   }
   , createElements : function(){
      this.initOverlay();
      this.g_window = AJS.DIV({
         "id" : "GB_window"
      }
      );
      AJS.hideElement(this.g_window);
      AJS.getBody().insertBefore(this.g_window, this.overlay.nextSibling);
      this.initFrame();
      this.initHook();
      this.update();
      var me = this;
      if(this.use_fx){
         AJS.fx.fadeIn(this.overlay, {
            duration : 300, to : 0.7, onComplete : function(){
               me.onShow();
               AJS.showElement(me.g_window);
               me.startLoading();
            }
         }
         );
      }
      else{
         AJS.setOpacity(this.overlay, 0.7);
         AJS.showElement(this.g_window);
         this.onShow();
         this.startLoading();
      }
      AJS.AEV(window, "scroll", _GB_setOverlayDimension);
      AJS.AEV(window, "resize", _GB_update);
   }
   , removeFrame : function(){
      try{
         AJS.removeElement(this.iframe);
      }
      catch(e){
      }
      this.iframe = null;
   }
   , startLoading : function(){
      this.iframe.src = this.src_loader + "?s=" + this.salt ++ ;
      AJS.showElement(this.iframe);
   }
   , setOverlayDimension : function(){
      var _11 = AJS.getWindowSize();
      if(AJS.isMozilla() || AJS.isOpera()){
         AJS.setWidth(this.overlay, "100%");
      }
      else{
         AJS.setWidth(this.overlay, _11.w);
      }
      var _12 = Math.max(AJS.getScrollTop() + _11.h, AJS.getScrollTop() + this.height);
      if(_12 < AJS.getScrollTop()){
         AJS.setHeight(this.overlay, _12);
      }
      else{
         AJS.setHeight(this.overlay, AJS.getScrollTop() + _11.h);
      }
   }
   , initOverlay : function(){
      this.overlay = AJS.DIV({
         "id" : "GB_overlay"
      }
      );
      if(this.overlay_click_close){
         AJS.AEV(this.overlay, "click", GB_hide);
      }
      AJS.setOpacity(this.overlay, 0);
      AJS.getBody().insertBefore(this.overlay, AJS.getBody().firstChild);
   }
   , initFrame : function(){
      if( ! this.iframe){
         var d = {
            "name" : "GB_frame", "class" : "GB_frame", "frameBorder" : 0
         }
         ;
         if(AJS.isIe()){
            d.src = "javascript:false;document.write(\"\");";
         }
         this.iframe = AJS.IFRAME(d);
         this.middle_cnt = AJS.DIV({
            "class" : "content"
         }
         , this.iframe);
         this.top_cnt = AJS.DIV();
         this.bottom_cnt = AJS.DIV();
         AJS.ACN(this.g_window, this.top_cnt, this.middle_cnt, this.bottom_cnt);
      }
   }
   , onHide : function(){
   }
   , onShow : function(){
   }
   , setFrameSize : function(){
   }
   , setWindowPosition : function(){
   }
   , initHook : function(){
   }
}

//  ---------------------------------------

);
_GB_update = function(){
   if(GB_CURRENT){
      GB_CURRENT.update();
   }
}

//  ---------------------------------------

;
_GB_setOverlayDimension = function(){
   if(GB_CURRENT){
      GB_CURRENT.setOverlayDimension();
   }
}

//  ---------------------------------------

;
AJS.preloadImages(GB_ROOT_DIR + "indicator.gif");
script_loaded = true;
var GB_SETS = {
}

//  ---------------------------------------

;
function decoGreyboxLinks(){
   var as = AJS.$bytc("a");
   AJS.map(as, function(a){
      if(a.getAttribute("href") && a.getAttribute("rel")){
         var rel = a.getAttribute("rel");
         if(rel.indexOf("gb_") == 0){
            var _17 = rel.match(/\w+/)[0];
            var _18 = rel.match(/\[(.*)\]/)[1];
            var _19 = 0;
            var _1a = {
               "caption" : a.title || "", "url" : a.href
            }
            ;
            if(_17 == "gb_pageset" || _17 == "gb_imageset"){
               if( ! GB_SETS[_18]){
                  GB_SETS[_18] = [];
               }
               GB_SETS[_18].push(_1a);
               _19 = GB_SETS[_18].length;
            }
            if(_17 == "gb_pageset"){
               a.onclick = function(){
                  GB_showFullScreenSet(GB_SETS[_18], _19);
                  return false;
               }
               ;
            }
            if(_17 == "gb_imageset"){
               a.onclick = function(){
                  GB_showImageSet(GB_SETS[_18], _19);
                  return false;
               }
               ;
            }
            if(_17 == "gb_image"){
               a.onclick = function(){
                  GB_showImage(_1a.caption, _1a.url);
                  return false;
               }
               ;
            }
            if(_17 == "gb_page"){
               a.onclick = function(){
                  var sp = _18.split(/, ?/);
                  GB_show(_1a.caption, _1a.url, parseInt(sp[1]), parseInt(sp[0]));
                  return false;
               }
               ;
            }
            if(_17 == "gb_page_fs"){
               a.onclick = function(){
                  GB_showFullScreen(_1a.caption, _1a.url);
                  return false;
               }
               ;
            }
            if(_17 == "gb_page_center"){
               a.onclick = function(){
                  var sp = _18.split(/, ?/);
                  GB_showCenter(_1a.caption, _1a.url, parseInt(sp[1]), parseInt(sp[0]));
                  return false;
               }
               ;
            }
         }
      }
   }
   );
}

//  ---------------------------------------

AJS.AEV(window, "load", decoGreyboxLinks);
GB_showImage = function(_1d, url, _1f){
   var _20 = {
      width : 300, height : 300, type : "image", fullscreen : false, center_win : true, caption : _1d, callback_fn : _1f
   }
   ;
   var win = new GB_Gallery(_20);
   return win.show(url);
}

//  ---------------------------------------

;
GB_showPage = function(_22, url, _24){
   var _25 = {
      type : "page", caption : _22, callback_fn : _24, fullscreen : true, center_win : false
   }
   ;
   var win = new GB_Gallery(_25);
   return win.show(url);
}

//  ---------------------------------------

;
GB_Gallery = GreyBox.extend({
   init : function(_27){
      this.parent({
      }
      );
      this.img_close = this.root_dir + "g_close.gif";
      AJS.update(this, _27);
      this.addCallback(this.callback_fn);
   }
   , initHook : function(){
      AJS.addClass(this.g_window, "GB_Gallery");
      var _28 = AJS.DIV({
         "class" : "inner"
      }
      );
      this.header = AJS.DIV({
         "class" : "GB_header"
      }
      , _28);
      AJS.setOpacity(this.header, 0);
      AJS.getBody().insertBefore(this.header, this.overlay.nextSibling);
      var _29 = AJS.TD({
         "id" : "GB_caption", "class" : "caption", "width" : "40%"
      }
      , this.caption);
      var _2a = AJS.TD({
         "id" : "GB_middle", "class" : "middle", "width" : "20%"
      }
      );
      var _2b = AJS.IMG({
         "src" : this.img_close
      }
      );
      AJS.AEV(_2b, "click", GB_hide);
      var _2c = AJS.TD({
         "class" : "close", "width" : "40%"
      }
      , _2b);
      var _2d = AJS.TBODY(AJS.TR(_29, _2a, _2c));
      var _2e = AJS.TABLE({
         "cellspacing" : "0", "cellpadding" : 0, "border" : 0
      }
      , _2d);
      AJS.ACN(_28, _2e);
      if(this.fullscreen){
         AJS.AEV(window, "scroll", AJS.$b(this.setWindowPosition, this));
      }
      else{
         AJS.AEV(window, "scroll", AJS.$b(this._setHeaderPos, this));
      }
   }
   , setFrameSize : function(){
      var _2f = this.overlay.offsetWidth;
      var _30 = AJS.getWindowSize();
      if(this.fullscreen){
         this.width = _2f - 40;
         this.height = _30.h - 80;
      }
      AJS.setWidth(this.iframe, this.width);
      AJS.setHeight(this.iframe, this.height);
      AJS.setWidth(this.header, _2f);
   }
   , _setHeaderPos : function(){
      AJS.setTop(this.header, AJS.getScrollTop() + 10);
   }
   , setWindowPosition : function(){
      var _31 = this.overlay.offsetWidth;
      var _32 = AJS.getWindowSize();
      AJS.setLeft(this.g_window, ((_31 - 50 - this.width) / 2));
      var _33 = AJS.getScrollTop() + 55;
      if( ! this.center_win){
         AJS.setTop(this.g_window, _33);
      }
      else{
         var fl = ((_32.h - this.height) / 2) + 20 + AJS.getScrollTop();
         if(fl < 0){
            fl = 0;
         }
         if(_33 > fl){
            fl = _33;
         }
         AJS.setTop(this.g_window, fl);
      }
      this._setHeaderPos();
   }
   , onHide : function(){
      AJS.removeElement(this.header);
      AJS.removeClass(this.g_window, "GB_Gallery");
   }
   , onShow : function(){
      if(this.use_fx){
         AJS.fx.fadeIn(this.header, {
            to : 1
         }
         );
      }
      else{
         AJS.setOpacity(this.header, 1);
      }
   }
}

//  ---------------------------------------

);
AJS.preloadImages(GB_ROOT_DIR + "g_close.gif");
GB_showFullScreenSet = function(set, _36, _37){
   var _38 = {
      type : "page", fullscreen : true, center_win : false
   }
   ;
   var _39 = new GB_Sets(_38, set);
   _39.addCallback(_37);
   _39.showSet(_36 - 1);
   return false;
}

//  ---------------------------------------

;
GB_showImageSet = function(set, _3b, _3c){
   var _3d = {
      type : "image", fullscreen : false, center_win : true, width : 300, height : 300
   }
   ;
   var _3e = new GB_Sets(_3d, set);
   _3e.addCallback(_3c);
   _3e.showSet(_3b - 1);
   return false;
}

//  ---------------------------------------

;
GB_Sets = GB_Gallery.extend({
   init : function(_3f, set){
      this.parent(_3f);
      if( ! this.img_next){
         this.img_next = this.root_dir + "next.gif";
      }
      if( ! this.img_prev){
         this.img_prev = this.root_dir + "prev.gif";
      }
      this.current_set = set;
   }
   , showSet : function(_41){
      this.current_index = _41;
      var _42 = this.current_set[this.current_index];
      this.show(_42.url);
      this._setCaption(_42.caption);
      this.btn_prev = AJS.IMG({
         "class" : "left", src : this.img_prev
      }
      );
      this.btn_next = AJS.IMG({
         "class" : "right", src : this.img_next
      }
      );
      AJS.AEV(this.btn_prev, "click", AJS.$b(this.switchPrev, this));
      AJS.AEV(this.btn_next, "click", AJS.$b(this.switchNext, this));
      GB_STATUS = AJS.SPAN({
         "class" : "GB_navStatus"
      }
      );
      AJS.ACN(AJS.$("GB_middle"), this.btn_prev, GB_STATUS, this.btn_next);
      this.updateStatus();
   }
   , updateStatus : function(){
      AJS.setHTML(GB_STATUS, (this.current_index + 1) + " / " + this.current_set.length);
      if(this.current_index == 0){
         AJS.addClass(this.btn_prev, "disabled");
      }
      else{
         AJS.removeClass(this.btn_prev, "disabled");
      }
      if(this.current_index == this.current_set.length - 1){
         AJS.addClass(this.btn_next, "disabled");
      }
      else{
         AJS.removeClass(this.btn_next, "disabled");
      }
   }
   , _setCaption : function(_43){
      AJS.setHTML(AJS.$("GB_caption"), _43);
   }
   , updateFrame : function(){
      var _44 = this.current_set[this.current_index];
      this._setCaption(_44.caption);
      this.url = _44.url;
      this.startLoading();
   }
   , switchPrev : function(){
      if(this.current_index != 0){
         this.current_index -- ;
         this.updateFrame();
         this.updateStatus();
      }
   }
   , switchNext : function(){
      if(this.current_index != this.current_set.length - 1){
         this.current_index ++ ;
         this.updateFrame();
         this.updateStatus();
      }
   }
}

//  ---------------------------------------

);
AJS.AEV(window, "load", function(){
   AJS.preloadImages(GB_ROOT_DIR + "next.gif", GB_ROOT_DIR + "prev.gif");
}

//  ---------------------------------------

);
GB_show = function(_45, url, _47, _48, _49){
   var _4a = {
      caption : _45, height : _47 || 500, width : _48 || 500, fullscreen : false, callback_fn : _49
   }
   ;
   var win = new GB_Window(_4a);
   return win.show(url);
}

//  ---------------------------------------

;
GB_showCenter = function(_4c, url, _4e, _4f, _50){
   var _51 = {
      caption : _4c, center_win : true, height : _4e || 500, width : _4f || 500, fullscreen : false, callback_fn : _50
   }
   ;
   var win = new GB_Window(_51);
   return win.show(url);
}

//  ---------------------------------------

;
GB_showFullScreen = function(_53, url, _55){
   var _56 = {
      caption : _53, fullscreen : true, callback_fn : _55
   }
   ;
   var win = new GB_Window(_56);
   return win.show(url);
}

//  ---------------------------------------

;
GB_Window = GreyBox.extend({
   init : function(_58){
      this.parent({
      }
      );
      this.img_header = this.root_dir + "header_bg.gif";
      this.img_close = this.root_dir + "w_close.gif";
      this.show_close_img = true;
      AJS.update(this, _58);
      this.addCallback(this.callback_fn);
   }
   , initHook : function(){
      AJS.addClass(this.g_window, "GB_Window");
      this.header = AJS.TABLE({
         "class" : "header"
      }
      );
      this.header.style.backgroundImage = "url(" + this.img_header + ")";
      var _59 = AJS.TD({
         "class" : "caption"
      }
      , this.caption);
      var _5a = AJS.TD({
         "class" : "close"
      }
      );
      if(this.show_close_img){
         var _5b = AJS.IMG({
            "src" : this.img_close
         }
         );
         var _5c = AJS.SPAN("Close");
         var btn = AJS.DIV(_5b, _5c);
         AJS.AEV([_5b, _5c], "mouseover", function(){
            AJS.addClass(_5c, "on");
         }
         );
         AJS.AEV([_5b, _5c], "mouseout", function(){
            AJS.removeClass(_5c, "on");
         }
         );
         AJS.AEV([_5b, _5c], "mousedown", function(){
            AJS.addClass(_5c, "click");
         }
         );
         AJS.AEV([_5b, _5c], "mouseup", function(){
            AJS.removeClass(_5c, "click");
         }
         );
         AJS.AEV([_5b, _5c], "click", GB_hide);
         AJS.ACN(_5a, btn);
      }
      tbody_header = AJS.TBODY();
      AJS.ACN(tbody_header, AJS.TR(_59, _5a));
      AJS.ACN(this.header, tbody_header);
      AJS.ACN(this.top_cnt, this.header);
      if(this.fullscreen){
         AJS.AEV(window, "scroll", AJS.$b(this.setWindowPosition, this));
      }
   }
   , setFrameSize : function(){
      if(this.fullscreen){
         var _5e = AJS.getWindowSize();
         overlay_h = _5e.h;
         this.width = Math.round(this.overlay.offsetWidth - (this.overlay.offsetWidth / 100) * 10);
         this.height = Math.round(overlay_h - (overlay_h / 100) * 10);
      }
      AJS.setWidth(this.header, this.width + 6);
      AJS.setWidth(this.iframe, this.width);
      AJS.setHeight(this.iframe, this.height);
   }
   , setWindowPosition : function(){
      var _5f = AJS.getWindowSize();
      AJS.setLeft(this.g_window, ((_5f.w - this.width) / 2) - 13);
      if( ! this.center_win){
         AJS.setTop(this.g_window, AJS.getScrollTop());
      }
      else{
         var fl = ((_5f.h - this.height) / 2) - 20 + AJS.getScrollTop();
         if(fl < 0){
            fl = 0;
         }
         AJS.setTop(this.g_window, fl);
      }
   }
}

//  ---------------------------------------

);
AJS.preloadImages(GB_ROOT_DIR + "w_close.gif", GB_ROOT_DIR + "header_bg.gif");


script_loaded = true;
