$(function() {
  jQuery.visual = { pane: 0 };
  jQuery.visual.slideRight = function(again) {
    if(!jQuery.visual.allRight()) {
      $("#wrapper > dl, #wrapper > dd")
      .each(function() { $(this).animate({ left: parseInt($(this).css("left")) - 255},500,
        function() {
          if(!$(this).is(".absolute")) {
            var size = (-1 * (jQuery("#wrapper > dl, #wrapper > dd").length));
            if(($("dd.text:visible").length != 0) && $("dd.text:visible").offset().width < 350 && ((jQuery.visual.pane - 1) > size) && again) {
              jQuery.visual.slideRight(1);
            }
          }
        }
      ) });
      jQuery.visual.pane -= 1;
    }
    $.visual.setArrows();
  }

  jQuery.visual.slideLeft = function() {
    if(!jQuery.visual.allLeft()) {
      var c = $("dd.text:visible");
      if((c.length != 0) && ($("dd.text:visible").offset().width - 255) < 255) {
        $("dd.text:visible").remove();
$("#wrapper > dl:visible:last dt.direct").removeClass("level3-active");
				$("#wrapper > dl:visible:last dt.active div.active").removeClass("active");
        $("#wrapper > dl:visible:last dt.active").removeClass("active");
				$(this).children("div").addClass("active");

      }
      $("#wrapper > dl, #wrapper > dd")
      .each(function() { $(this).animate({ left: parseInt($(this).css("left")) + 255},250); });
      jQuery.visual.pane += 1;
    }
    $.visual.setArrows();
  }

  jQuery.visual.setArrows = function() {
    jQuery("#left-button").css("display", jQuery.visual.allLeft() ? "none" : "");
    jQuery("#right-button").css("display", jQuery.visual.allRight() ? "none" : "");
  }

  jQuery.visual.allLeft = function() {
    return (jQuery.visual.pane == 0);
  }

  jQuery.visual.allRight = function() {
    return (jQuery.visual.pane - 1) == (-1 * (jQuery("#wrapper > dl, #wrapper > dd").length));
  }

  $("a#left-button").click(jQuery.visual.slideLeft)
  $("a#right-button").click(jQuery.visual.slideRight)

  $.visual.setArrows();
  $("body > dl > dt").click(function() {  })
  $("dt").click(function(e) {

    $(this).siblings("dt.active").removeClass("active");
    $(this).addClass("active");

    $(this).siblings("dt.weather-active").removeClass("weather-active")
		if ( $(this).attr("class") == 'weather active' )	{
		    $(this).addClass("weather-active");
		}

    $(this).siblings("dt.level1-active").removeClass("level1-active")
		if ( $(this).attr("class") == 'level1 active' )	{
		    $(this).addClass("level1-active");
		}

    $(this).siblings("dt.level2-active").removeClass("level2-active")
		if ( $(this).attr("class") == 'level2 active' )	{
		    $(this).addClass("level2-active");
		}

    $(this).siblings("dt.level2-weather-active").removeClass("level2-weather-active")
		if ( $(this).attr("class") == 'weather level2 level2-weather active' )	{
		    $(this).addClass("level2-weather-active");
		}

    $(this).siblings("dt.level3-active").removeClass("level3-active")
		if ( $(this).attr("class") == 'direct level3 active' )	{
		    $(this).addClass("level3-active");
		}


		$(this).siblings("dt").children("div").removeClass("active");
		$(this).children("div.button").addClass("active");


    $("#wrapper")[0].scrollTop = 0;
    if(!$(this.parentNode).is(".absolute") && $("+ dd", this).length == 0) {
      $("dl.absolute").remove();
    } else {
      curr = $("dl.absolute").index(this.parentNode);
//      $("dl.absolute, #wrapper > dd.text").gt(curr).remove();
      $("dl.absolute, #wrapper > dd.text").slice(curr+1).remove();
      if(c = $("+ dd > dl", this).length > 0) c = $("+ dd > dl", this);
      else c = $("+ dd", this)
      c = c.clone().appendTo("#wrapper").addClass("absolute");
      var d = c.is(".text") ? c : c.find("dt")
      if(d[0]) d.not(".text").click(arguments.callee)
      var dds = $("#wrapper > dl").length;
      if(!d.is(".text")) {
        $(d[0].parentNode).css("left", ((dds - 1 + jQuery.visual.pane) * 255) + 10 + "px").show()
        var offset = $(d).offset();
        if((offset.left + offset.width) > $("body").offset().width) jQuery.visual.slideRight()
      }
      else {
        d.css("left", ((dds + jQuery.visual.pane) * 255) + 10 + "px").show();
        var size = (-1 * (jQuery("#wrapper > dl, #wrapper > dd").length))
        var offset = d.offset();
        if((offset.width < 350 || (offset.left + offset.width) > $("body").offset().width) && (jQuery.visual.pane - 1) > size) { jQuery.visual.slideRight(1); }
      }
      $.visual.setArrows();
      return false;
    }
  })

  $(document).keydown(function(e) {
		var key = e.charCode ? e.charCode : e.keyCode ? e.keyCode : 0;
		switch(key) {
			case 37:
			  if(e.ctrlKey) $.visual.slideLeft()
			  break;
			case 39:
			  if(e.ctrlKey) $.visual.slideRight();
			  break;
    }
  });

});