$(function(){
  
  $('#asx-list').asxList();
  
  var bannerObj = $('#banner-images'), 
      banners = $('.banner', bannerObj), 
      animTime = 2000, 
      waitTime = 4000, 
      prevBannerId = 0, 
      currBannerId = 1;
  
  function switchBanner() {
    $(banners).eq(prevBannerId).removeClass('top');
    $(banners).eq(currBannerId).addClass('top').fadeOut(1).delay(waitTime).fadeIn(animTime, function(){
      $(banners).eq(prevBannerId).hide();
      prevBannerId = currBannerId;
      if(currBannerId+1 >= banners.length) {
        currBannerId = 0;
      } else {
        currBannerId++;
      }
      switchBanner();
    });
  }
  
  $(banners).hide();
  $(banners).eq(prevBannerId).show().addClass('top');
  
  if( $(banners).length > 1 ) {
    switchBanner();
  }
  
  $('input[type="text"],input[type="email"],textarea').defaultText();
  
  $('.primary a.gallery-image, .primary a:has(img), .primary a[rel*="lightbox"]').fancybox();
  
  $('#nav li').hover(function(){
    $(this).addClass('hover');
  },function(){
    $(this).removeClass('hover');
  });
  
  $('#share-price-value').load('/stock/quote?id=AUZ.AX&option=last');
  $('#share-price-qty').load('/stock/quote?id=AUZ.AX&option=vol');
  
  $('body.page-reports .primary .content-body ul').each(function(){
    var listLength = $('li', this).length;
    if(listLength>10) {
      $(this).wrap('<div class="list-set" />');
      $(this).after('<a href="#" class="show-all" style="display:block;margin:0 0 1.6em 0;">Show all...</a>');
      $('.show-all').click(function(){
        showExcessItems( $(this).parent().find('ul') );
        $(this).hide();
        return false;
      });
      hideExcessItems( $(this) );
    }
  });
  
  function hideExcessItems(list){
    $('li:gt(9)', list).hide();
  }
  
  function showExcessItems(list){
    $('li', list).show();
  }
  
});

jQuery.fn.defaultText = function() {
  var self = this;
  $('form').submit(function() {
    $(self).each(function() {
      var t = $(this);
      if (t.val() == t.attr('title') && t.hasClass('default')) {
        t.val('');
      }
    });
  });
  return $(this).blur(function() {
    var t = $(this);
    if (t.val() == '') {
      t.val(t.attr('title'));
      t.addClass('default');
    }
  }).focus(function() {
    var t = $(this);
    if (t.val() == t.attr('title') && t.hasClass('default')) {
      t.val('');
      t.removeClass('default');
    }
  }).blur();
};

(function( $ ){
  
  jQuery.fn.asxList = function() {
    
    var $self = this;
    
    return this.each(function() {
      
      var $list_items = $('li', $self);
      
      var years_list = new Array();
      
      $list_items.each(function(){
        var year = $(this).data('year');
        years_list.push(year);
      });
      
      years_list = years_list.unique();
      
      var tab_html = '<ul id="asx-tabs">';
      $.each(years_list, function(index, value) {
        tab_html += '<li title="'+value+'">'+value+'</li>';
      });
      tab_html += '</ul>';
      $self.before(tab_html);
      
      var $tab_items = $('#asx-tabs li');
      
      $tab_items.click(function(){
        $tab_items.removeClass('active');
        var year = $(this).addClass('active').attr('title');
        $list_items.hide().filter('[data-year='+year+']').show();
      });
      
      $tab_items.eq(0).click();
      
    });
    
  };
  
  jQuery.fn.defaultText = function() {
    var self = this;
    $('form').submit(function() {
      $(self).each(function() {
        var t = $(this);
        if (t.val() == t.attr('title') && t.hasClass('default')) {
          t.val('');
        }
      });
    });
    return $(this).blur(function() {
      var t = $(this);
      if (t.val() == '') {
        t.val(t.attr('title'));
        t.addClass('default');
      }
    }).focus(function() {
      var t = $(this);
      if (t.val() == t.attr('title') && t.hasClass('default')) {
        t.val('');
        t.removeClass('default');
      }
    }).blur();
  };
  
})( jQuery );

Array.prototype.unique = function () {
  var r = new Array();
  o:for(var i = 0, n = this.length; i < n; i++) {
    for(var x = 0, y = r.length; x < y; x++) {
      if(r[x]==this[i]) {
        continue o;
      }
    }
    r[r.length] = this[i];
  }
  return r;
};

/**
* jQuery.rand v1.0
*
* Randomly filters any number of elements from a jQuery set.
*
* MIT License: @link http://www.afekenholm.se/license.txt
*
* @author: Alexander Wallin (http://www.afekenholm.se)
* @version: 1.0
* @url: http://www.afekenholm.se/jquery-rand
*/
(function($){
  $.fn.rand = function(k){
    var b = this,
        n = b.size(),k = k ? parseInt(k) : 1;
    
    // Special cases
    if (k > n) return b.pushStack(b);
    else if (k == 1) return b.filter(":eq("
                                     + Math.floor(Math.random()*n) + ")");
    
    // Create a randomized copy of the set of elements,
    // using Fisher-Yates sorting
    r = b.get();
    for (var i = 0; i < n - 1; i++) {
      var swap = Math.floor(Math.random() * (n - i)) + i;
      r[swap] = r.splice(i, 1, r[swap])[0];
    }
    r = r.slice(0, k);
    
    // Finally, filter jQuery stack
    return b.filter(function(i){
      return $.inArray(b.get(i), r) > -1;
    });
  };
})(jQuery);
