myDeco.roomSlideDown = {
  hold : true,
  visible : true,
  
  init : function() {
    myDeco.roomSlideDown.link = $('room-main-link');
    myDeco.roomSlideDown.bar = $('room-main-shade-wrap');
    myDeco.roomSlideDown.room1 = $('room-1');
    if(myDeco.roomSlideDown.link && myDeco.roomSlideDown.bar) {
      myDeco.roomSlideDown.link.observe('mouseover', function(){myDeco.roomSlideDown.show()});
      myDeco.roomSlideDown.link.observe('mouseout',  function(){myDeco.roomSlideDown.hide()});
      myDeco.roomSlideDown.setevents(myDeco.roomSlideDown.bar);
      myDeco.roomSlideDown.bar.firstDescendant().firstDescendant().descendants()._each(function(elem){
        myDeco.roomSlideDown.setevents(elem);
      });
      myDeco.roomSlideDown.bar.show();
      myDeco.roomSlideDown.hide(7000);
    }
  },
  
  setevents : function(elem) {
    elem.observe('mouseover', function(){myDeco.roomSlideDown.keepVisible()});
    elem.observe('mouseout', function(){myDeco.roomSlideDown.hide()});
  },
  
  show : function() {
    myDeco.roomSlideDown.hold = true;
    myDeco.roomSlideDown.link.addClassName('hilited');
    myDeco.roomSlideDown.room1.addClassName('hilited');
    if(!myDeco.roomSlideDown.visible) {
      new Effect.SlideDown('room-main-shade',{duration:0.2,afterFinish:function(){
          myDeco.roomSlideDown.visible = true;
        }
      });
    }
  },
  
  keepVisible : function(){
    myDeco.roomSlideDown.hold = true;
    myDeco.roomSlideDown.link.addClassName('hilited');
  },
  
  hide : function(delay) {
    if(delay == undefined) delay = 1000;
    myDeco.roomSlideDown.hold = false;
    setTimeout(function(){
      if(!myDeco.roomSlideDown.hold && myDeco.roomSlideDown.visible) {
        new Effect.SlideUp('room-main-shade',{duration:0.2,
          afterFinish:function(){
            myDeco.roomSlideDown.hold = false;
            myDeco.roomSlideDown.visible = false;
            myDeco.roomSlideDown.link.removeClassName('hilited');
            myDeco.roomSlideDown.room1.removeClassName('hilited');
          }
        });
      }
    }, delay);
  }
}
addLoadEvent(myDeco.roomSlideDown.init);

myDeco.showRoomScrollerBubble = {
	init : function(){
    var scrollers = $$('.comm-room-bubble');
    scrollers._each(function(scroller){
  		var i=0;

      scroller_id=scroller.id.replace(/gallery-id-/,'');

      var containers = $$('#gallery-id-'+scroller_id+' .room-item').compact();
      scroller.count = 4;
			scroller.overall = containers.length;
      scroller.faded = false;
      scroller.shows = false;
			scroller.scroller_id=scroller_id;
      containers._each(function(container){
  			container.showDescription = function(e){
  				clearTimeout(container.descr_timeout);
  		    container.footer.setStyle({marginLeft:container.offset+'px'});
  				Effect.Appear(container.description, {duration:0.2});
  			}
  			container.hideDescription = function(){
  				container.descr_timeout = setTimeout(function(){
  					Effect.Fade(container.description, {duration:0.1});
  				}, 100);
  			}
  			container.keepVisible = function(){
  			  clearTimeout(scroller.timeout);
  			  clearTimeout(container.timeout);
  				clearTimeout(container.descr_timeout);
  				scroller.faded = false;
  			}
        container.getFirst = function(){ // First elem from visible set
          id=container.id.replace('room-item-'+scroller.scroller_id+'-','');
          res = new Array();
          return Math.floor((id-1)/scroller.count)*scroller.count+1;
        }			
  			container.getNeighbors = function(){
          var nids = new Array();
					first = this.getFirst();
          i=first;
					while(i < Math.min(first+scroller.count, scroller.overall)) { 
            if(i != id) nids.push(i); 
            i++; 
          } 
          return nids;
        }
        container.appear = function(){
          clearTimeout(container.timeout);
          clearTimeout(scroller.timeout);
          Effect.Appear(container,{to:1,duration:0.1});
          if(!scroller.faded) container.getNeighbors()._each(function(nid){
            $('room-item-'+scroller.scroller_id+'-'+nid).fade();
            scroller.faded = true;
          });
          scroller.shows = true;
        }
        container.fade = function(){
          container.timeout = setTimeout(function(){
            Effect.Appear(container,{to:0.3,duration:0.1});
          }, 100);
          scroller.timeout = setTimeout(function(){
            if(!scroller.shows) {
              first = container.getFirst();
              i = first;
							while(i <= Math.min(first+scroller.count, scroller.overall)) {
                Effect.Appear('room-item-'+scroller.scroller_id+'-'+i,{to:1,duration:0.2});
                i++;
              }
              scroller.faded = false;
            }
          }, 500);
          scroller.shows = false;
        }
        
  			container.description = $(container.id.replace('room-item-'+scroller.scroller_id,'room-descr-'+scroller.scroller_id));
  			container.description.observe('mouseover',function(){container.keepVisible()});
  			container.description.observe('mouseout',function(){
          container.fade();
          container.hideDescription();        
        });
        container.footer = container.description.getElementsByClassName('bubble-footer')[0];
//        container.offset = 49.5+i++%4*85;
        container.offset = 49.5+i++%3*(75+12*2+3*2);
  			container.image = container.firstDescendant();
  			container.image.observe('mouseover',function(e){
          container.appear();
          container.showDescription(e);
        });
  			container.image.observe('mouseout',function(){
          container.fade();
          container.hideDescription();
        });
  		})
		})
	}
}
addLoadEvent(myDeco.showRoomScrollerBubble.init);