(function () {

  var currentBannerNo = 0;
  var timerHandle = null;
  var banners;
  var buttons = $("#banner #bannerButtons a");

  var unsetTimer = function () {
    if (timerHandle) {
      clearTimeout(timerHandle);
      timerHandle = null;
    }
  }

  var setTimer = function () {
    unsetTimer();
    timerHandle = setTimeout(onTimer, 3000);
  }

  var onTimer = function () {
    timerHandle = null;
    while (1) {
        currentBannerNo = (currentBannerNo + 1) % banners.length;
        if (banners[currentBannerNo].title) break;
    }
    selectBanner(currentBannerNo);
    setTimer();
  }

  var selectBanner = function (n) {
    for (var i = 0; i < banners.length; i++) {
      var banner = banners[i];
      if (i == n) {
        banner.topic.css("display", "block");
        $(banner.button).addClass("bannerSelected");
      } else {
        banner.topic.css("display", "none");
        $(banner.button).removeClass("bannerSelected");
      }
    }
  }

  var createSelectBannerFunc = function (n) {
    return function () { selectBanner(n); }
  }

  var createSetBannerFunc = function (n) {
    return function () { currentBannerNo = n; selectBanner(n); }
  }

  var xmlLoaded = function (xml) {

    var topics = $(xml).find("topic");

    banners = new Array(topics.length);
    for (var i = 0; i < topics.length; i++) {
      var topic = topics[i];
      banners[i] = {
        title:   $("title", topic).text(),
        img:     $("img", topic).text(),
        link:    $("link", topic).text(),
        tracker: $("tracker", topic).text()
      };
    }

    for (var i = 0; i < banners.length; i++) {
      var banner = banners[i];
      banner.button = buttons[i];
      //$(banner.button).attr("href", banner.link);
      $(banner.button).attr("href", "#");
      if (banner.title) {
        $(banner.button).text(banner.title);
        $(banner.button).mousedown(createSetBannerFunc(i));
      } else {
        $(banner.button).addClass("bannerDisabled");
      }
      //$(banner.button).mouseover(createSelectBannerFunc(i));
      var img = banner.img;
      var h = "";
      if (img.substring(img.length - 4) == '.swf') {
        h = '<div class="bannerTopic">'
          + '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="856" height="200">'
          + '<param name="movie" value="' + img + '">'
          + '<object type="application/x-shockwave-flash" width="856" height="200" data="' + img + '">'
          + '</object></object></div>';
      } else {
        h = '<div class="bannerTopic"><img src="' + img + '"></img><a href="' + banner.link + '"></a></div>';
      }
      banner.topic = $(h);
      $("#banner #bannerTopics").append(banner.topic);
    }

    selectBanner(0);
    setTimer();

    $("#banner").mouseout(setTimer);
    $("#banner").mouseover(unsetTimer);

  }

  $.ajax({ type: "GET", url: "topic.xml", dataType: "xml", success: xmlLoaded });

})();

