(function($) { // closure and $ portability

  /* -------------------- Plug-ins ---------------------- */
  
  /* -- Modal Window -- */
  
  $.fn.modalShow = function(duration) {
    return this.each( function() {
      $(this).affix({ shim: true,  w: "c" }).modalize().fadeIn( { duration: (duration != null ? duration : "normal"), complete: function() { $(this).trigger("modal.aftershow"); } } );
    });
  };
  
  $.fn.modalHide = function(duration) {
    return this.each( function() {
      $(this).unaffix().unmodalize().fadeOut((duration != null ? duration : "fast"));
    });
  };
  
  $.fn.modal = function() {
    // setup close buttons
    return this.find(".close").click( function() {
      $(this).closest(".modal").modalHide();
    })
    .end();
  };


  /* -- Initialisation -- */ 
  
  $(document).ready( function() {

    /* -------------------- Behaviours common to all pages ---------------------- */
  
    $('.toggletarget').hide();
    
    // setup panel toggles
    
    $('.panel .toggletrigger').click( function() {
      $(this).find(".paneltoggle").toggleClass("paneltoggleopen").closest(".panel").find(".toggletarget").slideToggle("fast");
    }).closest(".panel").find(".toggletarget").hide();
    
    
    // setup link toggles
    
    $('a.toggle').click( function() {
      $(this).toggleClass("toggleopen").next().toggle();
      
      return false;
    });
    
    
    
    // setup tabs
    $('ul.tabbuttons').tabs();
    
    
    /* -------------------- Behaviours for specific pages ---------------------- */

    /* -- Fund Selection Page -- */
    
    $('body#fundselection').each( function() {
      
      $('.modal').modal();
      
      $('#modalformat')
        .modal()
        .bind("modal.aftershow", function() {
          $('#format_fund_profile').focus();
        });

      $("#investmentoption").change( function() { 
        $('#modalformat').modalShow();
      });
      
      $('#formatviewonline').click( function() {
        $('#modalformat').modalHide(0);
        $('#modalfinally').modalShow(1);
        
        return false;
      });
      
    });
    
    
  });
  
    
})(jQuery);
