 $(function()
{
  //sets the interval time 1000 is about 1 secound.
  var trate = 5000;
  
  //set up defaults for page load
  var staffsets = new Array("#staffset1","#staffset2","#staffset3");
  var controlset = new Array("#control_1", "#control_2", "#control_3");
  var sindex=1;
  $(controlset[0]).removeClass("cboxoff").addClass("cboxon");
  $(staffsets[0]).css("display","block");
  
  
  //event handler for control boxes
  $("#control_1").click(function() {
    sindex = 0;
    chooseSet();
    resetInterval();
  });
  
  $("#control_2").click(function() {
    sindex = 1;
    chooseSet(); 
    resetInterval();
  });
  
  $("#control_3").click(function() {
    sindex = 2;
    chooseSet();
    resetInterval();
  });
  
  
  //event handler for containing div - stops switcher
  //while mouseover div, resumes switcher on mouseout
  $("#staffbox").hover(
    function () {
      clearInterval(staffset);
    },
    function () {
      resetInterval();
    }
  );


  //selects staff set called by control box handlers
  function chooseSet(){
    for(var i=0; i < staffsets.length; i++){
       $(staffsets[i]).fadeOut("slow");

       if ($(controlset[i]).hasClass("cboxon")) {
         $(controlset[i]).removeClass("cboxon").addClass("cboxoff");
       }
    }
    
    $(staffsets[sindex]).fadeIn("slow");
    $(controlset[sindex]).removeClass("cboxoff").addClass("cboxon");
    sindex++;
  }
  
  
  // helper function to clear and reset switcher
  function resetInterval(){
    clearInterval(staffset);
    staffset = setInterval( switchStaff, trate); 
  }
  
  
  //switch between staffsets
  function switchStaff(){
    if(sindex > (staffsets.length-1)) {
      sindex = 0;
    }
    
 
    for(var i=0; i < staffsets.length; i++){
       $(staffsets[i]).fadeOut("slow");

       if ($(controlset[i]).hasClass("cboxon")) {
         $(controlset[i]).removeClass("cboxon").addClass("cboxoff");
       }
    }
    
    $(staffsets[sindex]).fadeIn("slow");
    $(controlset[sindex]).removeClass("cboxoff").addClass("cboxon");
    sindex++;
  }
 
  // initial start  and animation of staff sets 
  var staffset = setInterval( switchStaff, trate);
  
});

