/*
 * JSFDays main script
 * Version: 1.0
 * Date: 22_10_2008
 * Author: Adonis Raul Raduca
 */

/* Do stuff when the DOM is ready */
$(document).ready(addBehaviour);

/*
 * Add elements behaviours.
 */
function addBehaviour() {
  addBrowserDiscriminator();
  addAccordionBehaviour();
  addFormControlsBehaviour();
  addSectionsBehaviour();
  addDownloadButtonBehaviour();
  //addPaginatorBehaviour();
  addStepsWizardBehaviour();
}

function addBrowserDiscriminator() {
  if ($.browser.msie && parseInt($.browser.version) == 6) {
    $("body").addClass("ie6");
  }
}

function addAccordionBehaviour() {
  // main accordion behaviour
  $("#accordion_menu .item .head").hover(
  function() {
    $(this).parent().addClass("hover");
  },
  function(){
    $(this).parent().removeClass("hover");
  });

  $("#accordion_menu .item").click(
  function() {
    $(this).parent().find(".item.selected").removeClass("selected");
    $(this).addClass("selected");
  });

  // lanes accordion behaviour
  $("#accordion_menu .lane .head").hover(
  function() {
    $(this).parent().addClass("hover");
  },
  function(){
    $(this).parent().removeClass("hover");
  });
  $("#accordion_menu .lane").click(
  function() {
    $(this).parent().find(".lane.selected").removeClass("selected");
    $(this).addClass("selected");
  });
}

function addFormControlsBehaviour() {
  //input button types hover behaviour
  $(".input_submit, .input_button, .input_reset").hover(
  function() {
    $(this).addClass("hover");
  },
  function(){
    $(this).removeClass("hover");
  });
}

function addSectionsBehaviour() {
  // expand-collape button hover behaviour
  $(".expand_collapse_button, .collapse_button_all, .expand_button_all").hover(
  function() {
    $(this).addClass("hover");
  },
  function(){
    $(this).removeClass("hover");
  });

  //expand collapse behaviour
  $(".expand_collapse_button").click(
  function() {
    var section = $(this).parent().parent();
    var button = $(this);
    if (section.hasClass("expanded")) {
      section.removeClass("expanded");
      section.addClass("collapsed") ;
    }
    else {
      section.removeClass("collapsed") ;
      section.addClass("expanded");
    }
  });
}

function addDownloadButtonBehaviour() {
  //input button types hover behaviour
  $(".section.session .body .download span").hover(
  function() {
    $(this).addClass("hover");
  },
  function(){
    $(this).removeClass("hover");
  });
}

function addStepsWizardBehaviour() {
  //add the next_sel class for IE6 CSS
  $("li.next.selected").addClass("next_sel");

  //add step switchers hover behaviour
  $(".step_switch.back_step").hover(
  function() {
    if($(".steps_nav li.selected").prev("li.done").size()>0) {
      $(this).addClass("back_step_hover");
    }
  },
  function(){
    $(this).removeClass("back_step_hover");
  });

  $(".step_switch.next_step").hover(
  function() {
    if($(".steps_nav li.selected").next("li.done, li.next").size()>0) {
      $(this).addClass("next_step_hover");
    }
  },
  function(){
    $(this).removeClass("next_step_hover");
  });


  //add steps buttons hover behaviour
  $(".steps_nav li.done, .steps_nav li.next").hover(
  function() {
    $(this).addClass("hover");
  },
  function(){
    $(this).removeClass("hover");
  });


  //add step switchers click behaviour
  /*
  $(".step_switch.back_step").click(
  function() {
    var newSelectedStep = $(".steps_nav li.selected").prev("li.done");
    if(newSelectedStep.size()>0) {
      selectStep (newSelectedStep);
      if (newSelectedStep.prev("li.done").size()==0) {
        $(".step_switch.back_step").removeClass("back_step_hover");
      }
    }
  });


  $(".step_switch.next_step").click(
  function() {
    var newSelectedStep = $(".steps_nav li.selected").next("li.done, li.next");
    if(newSelectedStep.size()>0) {
      selectStep (newSelectedStep);
      if (newSelectedStep.next("li.done, li.next").size()==0) {
        $(".step_switch.next_step").removeClass("next_step_hover");
      }
    }
  });


  //add steps buttons click bahaviour
  $(".steps_nav li.done, .steps_nav li.next").click(
  function() {
    selectStep ($(this));
  });*/
}



/* -------------------------------------------------------------------------- */
/* Utility methods ---------------------------------------------------------- */
/* -------------------------------------------------------------------------- */
function selectStep (step) {
    var oldSelectedStepId = step.parent().find("li.selected").attr("id") ;
    var oldSelectedStep = step.parent().find("li.selected") ;
    var newSelectedStepId = step.attr("id") ;
    var newSelectedStep = step;

    // deselect the old step and select the new one
    if (oldSelectedStep.hasClass("next")) {
      oldSelectedStep.removeClass("next_sel");
    }
    oldSelectedStep.removeClass("selected");
    if (newSelectedStep.hasClass("next")) {
      newSelectedStep.addClass("next_sel");
    }
    newSelectedStep.addClass("selected");

    // hide the old step content and show the new one
    /*var oldSelectedStepContentId = oldSelectedStepId + "_content";*/
    $("#" + oldSelectedStepId + "_content").removeClass("selected");
    $("#" + newSelectedStepId + "_content").addClass("selected");
}
