var title_count = 0;
var title_weights = null;
var title_weight_sum = 0;
var scroll_timer = null;
var active_btn_num = 0;
var scroll_waiting = 0;
var scrolling = false;
var current_title = 0;
var scroll_src_y = 0;
var scroll_dest_title = 0;
var scroll_dest_y = 0;
var scroll_inc_y = 0;
var scroll_freezed = false;

function freeze_scroll() {
  scroll_freezed = true;
}
function unfreeze_scroll() {
  scroll_freezed = false;
}

function activate_button(num) {
  if (active_btn_num == num) {
    return;
  }
  if (active_btn_num > 0) {
    document.getElementById("pickup_btn" + active_btn_num).style.display = "";
    document.getElementById("pickup_act_btn" + active_btn_num).style.display = "none";
  }
  document.getElementById("pickup_btn" + num).style.display = "none";
  document.getElementById("pickup_act_btn" + num).style.display = "";
  active_btn_num = num;
}

function jump_pickup(dest) {
  if (scroll_waiting != 0 && current_title == dest ||
      scroll_waiting == 0 && (scroll_dest_title == dest || scroll_dest_title == dest + title_count)) {
    return;
  }
  var c = document.getElementById("mainTop_content");
  scroll_src_y = - parseInt(c.style.top, 10);
  scroll_dest_title = dest;
  scroll_dest_y = 165 * (dest - 1);
  scroll_inc_y = scroll_waiting = 0;
  scrolling = true;
  if (dest > title_count) {
    activate_button(1);
  } else {
    activate_button(dest);
  }
}

function scroll_pickup_title() {
  if (scroll_waiting > 0) {
    scroll_waiting -= 1;
    if (scroll_waiting > 0) {
      return;
    }
  }
  if (!scrolling && scroll_freezed) {
    return;
  }
  if (!scrolling) {
    jump_pickup(current_title + 1);
  }
  var c = document.getElementById("mainTop_content");
  var y = - parseInt(c.style.top, 10);
  if (y * 2 < scroll_src_y + scroll_dest_y) {
    scroll_inc_y += 2;
  } else {
    scroll_inc_y -= 2;
  }
  y += scroll_inc_y;
  if (scroll_src_y < scroll_dest_y && scroll_dest_y < y || scroll_src_y > scroll_dest_y && scroll_dest_y > y) {
    y = scroll_dest_y; scroll_inc_y = 0;
  }
  if (scroll_inc_y == 0 && scroll_dest_title == title_count + 1) {
    y = 0; scroll_dest_title = 1;
  }
  c.style.top = -y.toString() + "px";
  if (scroll_inc_y == 0) {
    show_pickup_title(scroll_dest_title);
  }
}

function show_pickup_title(num) {
  current_title = num;
  var c = document.getElementById("mainTop_content");
  var y = 165 * (num - 1);
  c.style.top = -y.toString() + "px";
  activate_button(num);
  scroll_waiting = 50;
  scrolling = false;
}

function get_start_title() {
  var n = Math.floor(Math.random() * title_weight_sum);
  var m = 0;
  for (var i = 0; i < title_weights.length; i++) {
    if (title_weights[i] > 0) {
      m += title_weights[i];
      if (n < m) {
        return i + 1;
      }
    }
  }
  return 1;
}
