
$(document).ready(function(){

  // Attach click event to thumbs
  $("#listing-thumbs ul.thumbs li a").click(function(){

    changeLargeImage($(this).parent('li'));

    return false;

  });

  // Attach click event to photo nav prev/next
  $("#listing-tabpanes-container .listing-photo-nav a.prev").click(function(){
    var prev = $("#listing-thumbs ul.thumbs li.current").prev();
    // nada? go to last
    if(!prev.length) {
      prev = $("#listing-thumbs ul.thumbs li:last");
    }

    changeLargeImage(prev);

    return false;

  });

  $("#listing-tabpanes-container .listing-photo-nav a.next").click(function(){
    var next = $("#listing-thumbs ul.thumbs li.current").next();
    // nada? go to first
    if(!next.length) {
      next = $("#listing-thumbs ul.thumbs li:first");
    }

    changeLargeImage(next);

    return false;

  });
  
  if($("#no-listing-image").html() != null){
	if($('#listing-image-header-nav li:first').attr('class') == 'photos here'){
	  $('ul.tab-panes').addClass('hide-display');
	}  
  }
  // Tab panes
  $(".tab-links li a").click(function(){
    
    if($(this).parent('li').hasClass('here')) {
      return false;
    }
    
    if($("#no-listing-image").html() != null){
      if($(this).parent('li').hasClass('photos')){
        $('ul.tab-panes').addClass('hide-display');
      }
      else{
    	$('ul.tab-panes').removeClass('hide-display');
      }
    }
    
    var position = $(this).parents('ul.tab-links').children('li').index($(this).parent('li'));
    $(this).parent('li').addClass('here').siblings().removeClass('here');
    
    // hide all panes, show selected one
    $(".tab-panes").each(function(){
      
      if ($(this).attr('id') == 'listing-statistics') {
        return true; //next iteration
      };
      
      $(this).children('li').removeClass('here').hide().eq(position).addClass('here').show();
      
    });
    
    // Special block for photo tab
    if($(this).parent('li').hasClass('photos')) {
      $(".listing-photo-nav").show();
    } else {
      $(".listing-photo-nav").hide();
    }
    
    // gmap issues
    if(typeof(gmap) == 'object') {
      var centre = gmap.getCenter();
      gmap.checkResize();
      gmap.setCenter(centre);
    }
    
    return false;
    
  });
  
  // Statistics tabs, TODO: should really make a plugin to be reusable with tab panes above and this
  $("#tab-links-statistics li.stats-tab a").click(function(){
    
    // Highlight tab
    $(this).parent().addClass('selected').siblings().removeClass('selected');
    
    // Display pane
    var paneId = $(this).parent().attr('id').replace(/tab/, 'pane');
    $("#listing-statistics li").hide();
    $("#listing-statistics li#"+paneId).show();
    
    return false;
  });

  // Scroll the thumbs
  $("#listing-thumbs ul.thumbs").thumbscroll({
    'scrollUpBtn': '#listing-thumbs-nav-up',
    'scrollDownBtn': '#listing-thumbs-nav-down'
  });

  $('a#listing-thumbs-nav-up').click(function() { return false; });
  $('a#listing-thumbs-nav-down').click(function() { return false; });

});

/**
 * Update large large with new thumb
 */
function changeLargeImage(newone) {

  // Update current item
  $("#listing-thumbs ul.thumbs li.current").removeClass('current');
  newone.addClass('current');

  // Update large image
  var newsrc = $('a', newone).attr('href');
  $("#listing-image-large").attr('src', newsrc);

  // Update position number
  $(".listing-photo-nav span.position").text($("#listing-thumbs ul.thumbs li").index(newone)+1);

}


/**
 * Featured listing action bar rollover
 */
$(document).ready(function(){

  $("ul.listings-featured li").hover(
    function(){
      $("li.details div.bar", this).stop(true, true).show();
    },
    function(){
      var bar = $("li.details div.bar", this);
      // Preserve styles
      var top = bar.css('top');
      var height = bar.css('height');

      bar.delay(3000).animate({top: 0, height: 0}, 1000, 'linear', function(){
        $(this).hide().css({top: top, height: height});
      });
    }
  );

});

// Charts
function Loaded_Chart() {}
function Rendered_Chart() {}


/**
 *
 * Simple scroller
 * Jamie Norton 2009
 *
 ***/
(function($) {

  $.fn.thumbscroll = function(options) {
    return this.each(function() {
      new $ts(this, options);
    });
  };

  var defaults = {
    'itemTime': 150
  }

  $.thumbscroll = function(element, options) {
    this.container    = null;
    this.clip      = null;
    this.list      = null;
    this.numItems    = null;
    this.itemOuterWidth  = null;
    this.totalWidth    = null;
    this.numberShowing  = null;
    this.minItems    = null; // min items required to activate

    this.options    = $.extend({}, defaults, options || {});

    if (element.nodeName == 'UL' || element.nodeName == 'OL') {

      this.list = $(element);
      this.container = this.list.parent();

      $('li:first', this.list).addClass('current');

      if(!this.setup()) {
        return false;
      }

    }

    var self = this;

    $(this.options.scrollUpBtn).hover(
      function(){
        self.scrollUp();
      },

      function() {
        self.stop();
      }
    );

    $(this.options.scrollDownBtn).hover(
      function(){
        self.scrollDown();
      },

      function() {
        self.stop();
      }
    );
  };


  // Create shortcut for internal use
  var $ts = $.thumbscroll;

  $ts.fn = $ts.prototype = {
    thumbscroll: '0.0.1'
  };

  $ts.fn.extend = $ts.extend = $.extend;

    $ts.fn.extend({

    setup: function(){

      this.numItems = $("li", this.list).length;

      this.totalHeight = this.list.outerHeight(true); //this.numItems/2 * this.itemOuterHeight;

      // enough items to warrant scrolling?
      if(this.container.height() > this.totalHeight) { // don't bother
        $(this.options.scrollDownBtn + ',' + this.options.scrollUpBtn).hide();
        return false;
      }

      this.itemOuterHeight = this.list.children('li:first').outerHeight(true);

      // Total number showing
      this.numberShowing = parseFloat(this.container.outerHeight(true) / this.itemOuterHeight);
      //this.pixelsHiding = this.totalHeight - this.container.height();

      this.totalTime = this.numItems/2 * this.options.itemTime;

      // Set height
      //this.list.css({width: this.totalHeight+'px'});

      // Set container width
      //this.container.css({width: (this.numberShowing*this.itemOuterWidth)+'px'});

      return true;

    },

    scrollUp: function(){

      this.list.animate({top: "0px"}, this.totalTime, "linear");

    },

    scrollDown: function(){

      var top = this.container.outerHeight(true) - this.totalHeight;

      if(top <= 0) {
        this.list.animate({top: top+"px"}, this.totalTime, "linear");
      }

    },

    stop: function() {

      this.list.stop();

    }

  });

})(jQuery);