/* Author: Lance Cooper */

/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ACCORDIAN
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
var accordian = {

  init : function(el) {
  
    //Variables
    accordian.activeClass = "active";
    accordian.accHeaderClass = "accHeader";
    accordian.accContentClass = "accContent";
  
    //Cache selectors
    accordian.accHeader = el.find("h3");
    accordian.accContent = el.find("." + accordian.accContentClass);
  
    //Hide all our content    
    accordian.accContent.hide();
    
    //Attach click handlers
    accordian.accHeader.click(function() {
      
      //Cache selectors
      $el = $(this).parent();
      
      //Open this accordian
      accordian.open($el);
      
    });
  
  },
  
  open : function(el) {
    
    //If current element is active we need to close it
    if (el.hasClass(accordian.activeClass)) {
      
      accordian.close(el);
      
    } else {
      
      //If there is active content
      if(accordian.active) {
        
        //Close the active content
        accordian.close(accordian.active);
        
      }
    
      //Store the active element
      accordian.active = el;
      
      //Add a classname for styling
      el.addClass(accordian.activeClass);
      
      //Display the content
      el.find("." + accordian.accContentClass).slideDown("fast");
    
    }
    
    
  },
  
  close : function(el) {
  
    //Remove active class
    el.removeClass(accordian.activeClass);
    
    //Hide content
    el.find("." + accordian.accContentClass).slideUp("fast");
  
  }

}


/*
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ADD CLASS NAME ON HOVER
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
var hoverClass = {

  init : function (el) {
    
    "use strict"; //http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it
  
    el.hover(function() {
      var $this = $(this);
      $this.addClass("hover");
      if($this.hasClass("member")) {
        $this.addClass("memberHover");
      }
      
    },
    function() {
      var $this = $(this);
      $this.removeClass("hover");
      if($this.hasClass("member")) {
        $this.removeClass("memberHover");
      }
    });  
  
  }

};

$(document).ready(function() {

  //Home page carousel
  $("#CarouSlide").CarouSlide({
    animType: "slide",
    autoAnim: true,
    animInfinity: true
  });
  
  //Accordian
  var $accordian = $("#accordian").find("ul");
  if($accordian.length > 0) { accordian.init($accordian); } //Accordian
  var $accHeader = $accordian.find("h3");
  if($accHeader.length > 0) { hoverClass.init($accHeader); } //Navigation hover

  //Isotope initialise
  $('#items').isotope({
    itemSelector : '.item',
    layoutMode : 'fitRows'
  });
  $("#filters a").click(function(e) {
    e.preventDefault();
    
    //Data filter
    var filter = $(this).attr("data-filter");
    $('#items').isotope({ filter: filter });
    
    //Active classnames
    $("#filters a").removeClass("active");
    $(this).addClass("active");
    
  });
  
  //Fancybox
  $(".fancybox").fancybox();
  
});
