var Entega = window.Entega || {}

Entega.SwingBox = function(params){
  var $box = (params['id'])? $('#'+params['id']) : $(params['element']);
  var debugMod = params['debug'] || false;
  var effect = params['effect'] || 'slow';
  var closeOthersOnOpen = params['closeOthersOnOpen'] || true;
  var $title = null;
  var $content = null;
  
  if (!Entega.SwingBox.boxes) {
    Entega.SwingBox.boxes = new Array();
  }
  Entega.SwingBox.boxes.push(this);

  /* Private functions */
  function createHTML() {   
    var children = $box.children();

    if (children[0].tagName.match(/DIV/i)) children = $(children[0]).children();
    
    $title = $(children[0]);
    
    $title.css('cursor','pointer');
    
    $title.after('<div class="swing-box-content"></div>');
    $content = $($box.find('.swing-box-content')[0])
    if ($box.hasClass('collapsed')) $content.css('display','none');
    
    for (var i=1; i< children.length; i++) {
      $content.append(children[i])
    }
  }
  
  function bindEvents() {
    $title.click(function(e){
      if (closeOthersOnOpen && $box.hasClass('collapsed')) {
        for (var i=0; i<Entega.SwingBox.boxes.length; i++) {
          Entega.SwingBox.boxes[i].slideUp('slow');
        }
      } 

      window.setTimeout(function(){$content.slideToggle(effect, afterSlide);},300);
      //$content.slideToggle(effect, afterSlide);
    })  
  }
  
  this.triggerClick = function() {
    $title.trigger('click')
  }
  
  function afterSlide() {
    if ($content.css('display') == 'none') {
      $box.addClass('collapsed');
    } else {
      $box.removeClass('collapsed');
    }
    if (!isIE6()) {Scrollbars.init(rolloId);}
  }
    
  /* Public functions */
  this.isCollapsed = function() {
    return $box.hasClass('collapsed');
  }
  
  this.slideUp = function(sEffect) {
    $content.slideUp(sEffect,afterSlide);
  }
  
  this.slideDown = function(sEffect) {
    $content.slideDown(sEffect,afterSlide);
  }
  
  this.close = function(){
    $content.css('display','none');
    afterSlide();
  }
  
  this.id = $box.attr('id')
  /*------------------------*/
   
  /* INIT */  
  try {
    createHTML();
    bindEvents();
    return this;
  }catch(e){if (debugMod) {alert(e+', '+e.description);} return null }
}

Entega.SwingBox.boxes = new Array();

Entega.SwingBox.closeAllExceptCart = function() {
  var cartNotEmpty = ($('#cart_data_container .swing-box-content').length >0)
  for(var i=0; i<Entega.SwingBox.boxes.length; i++) {
    var box = Entega.SwingBox.boxes[i];
    if(cartNotEmpty && (box.id != 'cart_data_container') ) box.close();
  }
}

Entega.SwingBox.init = function(ids,open) {
  var elements = (ids)? $(ids) : $('.swing-box');
  var length = $('.swing-box').length

  elements.each(function(element){
    if (!$(this).hasClass('static')) {
      var box = new Entega.SwingBox({element: this, closeOthersOnOpen:true});
      //if (!open) box.close();
    }
  }); 
  
  Entega.SwingBox.closeAllExceptCart();
}