$(document).ready(function(){
  SK.enforceHover('.performances li')

  toggleRowHighlight = function(button) {
    if($(button).attr("form_class") == "tracking-i-might-go") return;
    $(button).parents("li").toggleClass("attending")
  };
  
  determineIfInstanceIsAttended = function(formClass) {

    if (formClass == "tracking-im-going") {

      if ($("#schedule form."+formClass+" .button.selected").length == 1) {
        $("#toolbar form.tracking-i-might-go .button").removeClass("selected");
        if ($("#toolbar form."+formClass+" .button.selected").length == 1) return;
        SK.trackings.forceTrackingFormToTrackedState("#toolbar form."+formClass)
      }      

    } else {
      if ($("#toolbar form.tracking-im-going .button.selected").length == 1) return;

      if ($("#schedule form."+formClass+" .button.selected").length == 1) {
        if ($("#toolbar form."+formClass+" .button.selected").length == 1) return;
        SK.trackings.forceTrackingFormToTrackedState("#toolbar form."+formClass)
      }
      
    }
  };
  
  removeScheduledTrackings = function(button) {
    type = $(button).attr("form_class")
    $("#schedule form."+type).each(function(index, form){
      SK.trackings.forceTrackingFormToUntrackedState(form)
      $(form).find("input.button").removeClass("selected")
      $(form).parents("li").removeClass("attending")
    })
  }
  
  scheduleCallback = function(button) {
    toggleRowHighlight(button);
    determineIfInstanceIsAttended($(button).attr("form_class"));
  }
  
  SK.trackings.registerCallback({
    selector: "#schedule", type:SK.trackings.startCallbacks, 
    callback:scheduleCallback
  });
  
  SK.trackings.registerCallback({
    selector: "#schedule", type:SK.trackings.endCallbacks, 
    callback:scheduleCallback
  });
  
  SK.trackings.registerCallback({
    selector: "#toolbar", type:SK.trackings.endCallbacks, 
    callback:removeScheduledTrackings
  });
});