;

HorizontalSlideMenu=Class.create();HorizontalSlideMenu.prototype={initialize:function(a,d,b){this.element=$(a);this.itemClass=d;this.currentItem=null;var c=new URL(document.URL).getFile();if((b!=null)&&((c==null)||(c==""))){this.element.setStyle({display:"block"});this.changeItem(b)}setTimeout(this.load.bind(this),0)},load:function(a){var b=0;this.element.select("."+this.itemClass).each(function(c){c.id=c.id||this.element.id+b++;Event.observe(c,"mouseover",this.keep.bindAsEventListener(this));Event.observe(c,"mouseout",this.hide.bindAsEventListener(this))}.bind(this));if(this.currentId!=null){this.hide()}},changeItem:function(a){this.element.select("."+this.itemClass).each(function(b){b.setStyle({display:b.id==a?"inline":"none"})});this.currentId=a},select:function(a){Effect.Queues.get(this.element.id).removeIdle();if(this.currentId==null){new Effect.SlideDown(this.element,{control:this,itemId:a,duration:0.5,queue:{position:"end",scope:this.element.id},beforeSetup:function(b){b.options.control.changeItem(a)}})}else{if(this.currentId!=a){this.changeItem(a)}}},keep:function(){Effect.Queues.get(this.element.id).removeIdle()},hide:function(){Effect.Queues.get(this.element.id).removeIdle();new Effect.SlideUp(this.element,{control:this,delay:3,duration:0.5,queue:{position:"end",scope:this.element.id},beforeSetup:function(a){a.options.control.currentId=null}})}};MagnifiedList=Class.create();MagnifiedList.prototype={initialize:function(a,d,c,b){this.element=$(a);this.itemClass=d;this.scale=c;this.duration=b;setTimeout(this.load.bind(this),0)},load:function(a){var b=0;this.element.select("."+this.itemClass).each(function(c){c.id=c.id||this.element.id+b++;new MagnifiedItem(c.id,this.scale,this.duration)}.bind(this))}};MagnifiedItem=Class.create();MagnifiedItem.prototype={initialize:function(a,c,b){this.element=$(a);this.scale=c;this.duration=b;this.scaledUp=false;Event.observe(a,"mouseover",this.upScale.bindAsEventListener(this));Event.observe(a,"mouseout",this.downScale.bindAsEventListener(this))},upScale:function(){Effect.Queues.get(this.element.id).removeIdle();if(!this.scaledUp){new Effect.Scale(this.element,this.scale,{control:this,duration:this.duration,queue:{position:"end",scope:this.element.id},beforeSetup:function(a){a.options.control.scaledUp=true}})}},downScale:function(){Effect.Queues.get(this.element.id).removeIdle();if(this.scaledUp){new Effect.Scale(this.element,10000/this.scale,{control:this,duration:this.duration,queue:{position:"end",scope:this.element.id},beforeSetup:function(a){a.options.control.scaledUp=false}})}}};Voting=Class.create();Voting.prototype={initialize:function(f,b,a,e,d,c){this.contentId=f;this.element=$(b);this.imgClass=a;this.counterClass=e;this.count=d;this.rating=c;this.images=new Array();setTimeout(this.load.bind(this),0)},load:function(a){var b=0;this.element.select("."+this.imgClass).each(function(c){this.images[b]=c;new VotingListener(this,b++,c)}.bind(this));this.counter=this.element.select("."+this.counterClass)[0]},updateStars:function(c,b){if(c>this.images.length){c=this.images.length}var a=Math.floor(c);for(i=0;i<a;i++){this.images[i].src="http://www.bomba.sk/img/"+(b?"voted_star4.gif":"star4.gif")}if(a<this.images.length){this.images[a].src="http://www.bomba.sk/img/"+(b?"voted_star":"star")+Math.round((c-a)*4)+".gif";if(a<this.images.length-1){for(i=a+1;i<this.images.length;i++){this.images[i].src="http://www.bomba.sk/img/"+(b?"voted_star0.gif":"star0.gif")}}}},vote:function(a){this.updateStars(a,true);this.counter.innerHTML="Aktualizácia...";new Ajax.Request("http://www.bomba.sk/ajax/hodnotenie?id="+this.contentId,{asynchronous:true,onFailure:this.onFailure.bind(this),onSuccess:this.onSuccess.bind(this),parameters:"hodnota="+a})},onSuccess:function(transport){var response=eval("("+transport.responseText+")");if(response==null){this.counter.innerHTML="Hlasovať môžeš iba raz!"}else{this.rating=response.value;this.count=response.count;this.counter.innerHTML=response.count+" "+((response.count==0)||(response.count>4)?"hlasov":(response.count==1?"hlas":"hlasy"))}this.updateStars(this.rating,false)},onFailure:function(a){this.counter.innerHTML="Neznáma chyba";show(this.rating,false)}};VotingListener=Class.create();VotingListener.prototype={initialize:function(c,a,b){this.voting=c;this.order=a;this.element=b;Event.observe(b,"click",this.onClick.bindAsEventListener(this))},onClick:function(a){this.voting.vote(this.order+(Event.pointerX(a)-Position.cumulativeOffset(this.element)[0])/(Element.getDimensions(this.element).width-1))}};SlideShow=Class.create();SlideShow.prototype={initialize:function(b,a,c){this.element=$(b);this.slideUrl=a;this.timeout=c;this.slides=new Array();Event.observe(b,"mouseover",this.enableShow.bindAsEventListener(this));Event.observe(b,"mouseout",this.disableShow.bindAsEventListener(this))},enableShow:function(a){new Effect.Opacity(this.element,{control:this,from:1,to:0,queue:{position:"end",scope:this.element.id}})},disableShow:function(a){new Effect.Opacity(this.element,{control:this,from:0,to:1,queue:{position:"end",scope:this.element.id}})}};Chat=Class.create();Chat.prototype={initialize:function(a){this.url=a;this.rooms=new Array()},addRoom:function(c,b,a){this.rooms[c]=new ChatRoom(c,$(b),$(a))}};ChatRoom=Class.create();ChatRoom.prototype={initialize:function(c,b,a){this.id=c;this.inputElement=b;this.outputElement=a}};

ScrollPaneComponent = Class.create();
ScrollPaneComponent.prototype = {

  initialize: function (element, clazz, width, index, count, visible, uri) {
    this.element = element;
    this.clazz = clazz;
    this.width = width;
    this.count = count;
    this.visible = visible;
    this.uri = uri;
    this.loading = false;
    this.updatePager(index);
  },

  updatePager: function(index) {
    this.index = index;
    $(this.element + '.previous').src = 'http://www.bomba.sk/img/pager_' + this.clazz + '_previous1' + (index <= 0 ? '_disabled' : '') + '.png';
    $(this.element + '.next').src='http://www.bomba.sk/img/pager_' + this.clazz + '_next1' + (index >= this.count - this.visible ? '_disabled' : '') + '.png';
  },

  onPrevious: function(event) {
    if ((this.index > 0) && (!this.loading)) {
      this.loading = true;
      new Ajax.Request(this.uri.replace("{index}", this.index - 1), {
        asynchronous:true,
        onSuccess: this.onPreviousRender.bind(this)
      });
    }
  },

  onPreviousRender: function(transport) {
    if (transport != null) {
      var inner = '<div id="' + this.element + '.body" class="scrollPaneBody" style="width: ' + (this.width * (this.visible + 1)) + 'px; position: relative; left: -' + this.width + 'px;">';
      inner += '<div id="' + this.element + '.body.' + (this.index - 1) + '" class="scrollPaneItem" style="width: ' + this.width + 'px">' + transport.responseText + '</div>';
      for (var i = this.index; i < this.index + this.visible; i++) {
        inner += '<div id="' + this.element + '.body.' + i + '" class="scrollPaneItem" style="width: ' + this.width + 'px">' + $(this.element + '.body.' + i).innerHTML + '</div>';
      }
      $(this.element + '.container').innerHTML = inner + '</div>';

      this.updatePager(this.index - 1);

      new Effect.Move($(this.element + '.body'), { 
        x: this.width, y: 0, duration: 0.5,
        transition: Effect.Transitions.sinoidal,
        queue: {scope:'scrollPane', position:'end'}
      });

      this.loading = false;
    }
  },

  onNext: function(event) {
    if ((this.index < this.count - this.visible) && (!this.loading))  {
      this.loading = true;
      new Ajax.Request(this.uri.replace("{index}", this.index + this.visible), {
        asynchronous:true,
        onSuccess: this.onNextRender.bind(this)
      });
    }
  },

  onNextRender: function(transport) {
    if (transport != null) {
      var inner = '<div id="' + this.element + '.body" class="scrollPaneBody" style="width: ' + (this.width * (this.visible + 1)) + 'px; left: 0px;">';
      for (var i = this.index; i < this.index + this.visible; i++) {
        inner += '<div id="' + this.element + '.body.' + i + '" class="scrollPaneItem" style="width: ' + this.width + 'px">' + $(this.element + '.body.' + i).innerHTML + '</div>';
      }
      inner += '<div id="' + this.element + '.body.' + (this.index + this.visible) + '" class="scrollPaneItem" style="width: ' + this.width + 'px">' + transport.responseText + '</div>';
      $(this.element + '.container').innerHTML = inner + '</div>';

      this.updatePager(this.index + 1);

      new Effect.Move($(this.element + '.body'), { 
        x: -this.width, y: 0, duration: 0.5,
        transition: Effect.Transitions.sinoidal,
        queue: {scope:'scrollPane', position:'end'}
      });

      this.loading = false;
    }
  }
}
