function ScrollableCells(left_button_id, right_button_id, cell_class, visible_count) {
  this.cells = jQuery('.' + cell_class); 
  this.cell_right_borders = jQuery('.' + cell_class + '_right_border');
  this.cell_count = this.cells.size();
  this.visible_count = visible_count;
  this.left_button = jQuery('#' + left_button_id);
  this.right_button = jQuery('#' + right_button_id);
  this.current_idx = 0;
  var sc = this;
  
  this.shift_left = function() {
    var shifted_count = 0;

    while (shifted_count < 3 && sc.current_idx > 0) {
      var hiding_cell = jQuery(sc.cells.get(sc.current_idx + sc.visible_count - 1));
      var hiding_border = jQuery(sc.cell_right_borders.get(sc.current_idx + sc.visible_count - 2));
      hiding_cell.css("display", "none");
      hiding_border.css("width", "0");
      var visible_cell = jQuery(sc.cells.get(sc.current_idx - 1));
      var visible_border = jQuery(sc.cell_right_borders.get(sc.current_idx - 1));
      visible_cell.css("display", "inline");
      visible_border.css("width", "25px");
      sc.current_idx -= 1;
      shifted_count += 1;
    }

    if (sc.current_idx == 0) {
      button_off(sc.left_button);
    }
    button_on(sc.right_button, sc.shift_right);
    
    return false;
  };
  
  this.shift_right = function() {
    var shifted_count = 0;

    while (shifted_count < 3 && (sc.current_idx + sc.visible_count < sc.cell_count)) {
      var hiding_cell = jQuery(sc.cells.get(sc.current_idx));
      var hiding_border = jQuery(sc.cell_right_borders.get(sc.current_idx));
      hiding_cell.css("display", "none");
      hiding_border.css("width", "0");
      var visible_cell = jQuery(sc.cells.get(sc.current_idx + sc.visible_count));
      var visible_border = jQuery(sc.cell_right_borders.get(sc.current_idx + sc.visible_count - 1));
      visible_cell.css("display", "inline");
      visible_border.css("width", "25px");
      sc.current_idx += 1;
      shifted_count += 1;
    }

    if (sc.current_idx + sc.visible_count >= sc.cell_count) {
      button_off(sc.right_button);
    }
    button_on(sc.left_button, sc.shift_left);
    
    return false;
  }
  
  button_off(this.left_button);
  if (this.cell_count > this.visible_count) {
    button_on(this.right_button, this.shift_right);
  }  
}

function button_on(button, click_function) {
  var src = button.attr("src");
  src = src.replace(/-off.gif/, "-on.gif");
  button.attr("src", src);
  button.css("cursor", "pointer");
  button.unbind("click");
  button.click(click_function);
}

function button_off(button) {
  var src = button.attr("src");
  src = src.replace(/-on.gif/, "-off.gif");
  button.attr("src", src);  
  button.css("cursor", "default");
  button.unbind("click");
  button.click(function() { return false;});
}

function toggleMainAdvancedSearch() {
  button_img = jQuery('#home_advanced_search_button').attr('src');
  if ('block' == jQuery('#home_advanced_search_options').css('display')) {
    jQuery('#home_advanced_search_options').css('display', 'none');
    button_img = button_img.replace(/_on.png/, '_off.png');
    jQuery('#home_advanced_search_button').attr('src', button_img);
    jQuery('#home_advanced_select option').removeAttr('selected');
    jQUery('#home_advanced_all_option').attr('selected', 'true');
  }
  else {
    jQuery('#home_advanced_search_options').css('display', 'block');
    button_img = button_img.replace(/_off.png/, '_on.png');
    jQuery('#home_advanced_search_button').attr('src', button_img);
  }
}

function toggleArticleAdvancedSearch() {
  button_img = jQuery('#article_advanced_search_button').attr('src');
  if ('block' == jQuery('#article_advanced_search_options').css('display')) {
    jQuery('#article_advanced_search_options').css('display', 'none');
    button_img = button_img.replace(/_on.png/, '_off.png');
    jQuery('#article_advanced_search_button').attr('src', button_img);
    jQuery('#article_advanced_select option').removeAttr('selected');
    jQUery('#article_advanced_all_option').attr('selected', 'true');
  }
  else {
    jQuery('#article_advanced_search_options').css('display', 'block');
    button_img = button_img.replace(/_off.png/, '_on.png');
    jQuery('#article_advanced_search_button').attr('src', button_img);
  }
}

function toggleDiv(div_id, button_id) {
  var disp = jQuery('#'+div_id).css("display");
  var button_src = jQuery('#'+button_id).attr("src");
  if (disp == "block") {
    jQuery('#'+div_id).css("display", "none");
    jQuery('#'+button_id).attr("src", button_src.replace(/_on.gif/, "_off.gif"));
  }
  else {
    jQuery('#'+div_id).css("display", "block");
    jQuery('#'+button_id).attr("src", button_src.replace(/_off.gif/, "_on.gif"));
  }
}