//Handing tabbed interfaces
(function($) {
  $.fn.tabs = function(){
    $(this).each(function() {
        
        var $tabContainer = $(this),
            $tabs = $tabContainer.children('.tab');
            
        if($tabs.length > 0) {
          $tabContainer.before('<ul class="nav-tabs"></ul>');
          var $tabNav = $tabContainer.prev('.nav-tabs');
          
          $tabs.filter(':not(:first)').addClass('hide');
          
          $tabs.each(function() {
            var $tab = $(this),
                $tabHeading = $tab.find('.hdr-tab');
            
            $tabHeading.hide();
            
            if($tabHeading.length > 0) {
              $tabNav.append('<li><a href="#"><strong>'+$tabHeading.text()+'</strong></a></li>');
            }
          });
          $tabNav.children('li:first-child').addClass('current');
          $tabNav.find('a').click(function() {
            var $tabLink = $(this),
                $tabLinkParent = $tabLink.parent(),
                tabNavIndex = $tabLinkParent.prevAll().length + 1;
              
            if(!$tabLinkParent.hasClass('current')) {
              $tabs.filter(':visible').fadeOut(300, function() {
                $tabNav.children('.current').removeClass('current');
                $tabContainer.children('.tab:nth-child('+tabNavIndex+')').fadeIn(200);
                $tabLinkParent.addClass('current');
              });
              
            }
            return false
          });
        }
        
        
    });
    return $(this);
  };
})(jQuery);

//Handing scroller interfaces
(function($) {
  $.fn.scroller = function(){
    $(this).each(function() {
        
        var $scrollContainer = $(this),
            $scrollFrame = $scrollContainer.find('.scroller-inner'),
            $scrollItems = $scrollFrame.children(),
            numScrollItems = $scrollItems.length,
            $scrollNav = $scrollContainer.find('.nav-scroller'),
            $pagerNav = $scrollContainer.find('.nav-pager'),
            count = 0;
                        
        if($scrollContainer.hasClass('vertical')) {
          var totalDimension = $scrollContainer.height()
              visibleItems = $scrollContainer.attr('data-size'),
              itemSize = $scrollItems.innerHeight(),
              numScrollItems = Math.ceil(numScrollItems / visibleItems),
              scrollContainerDimension = (itemSize * visibleItems); 
          $scrollContainer.find('.scroller-wrapper').height(scrollContainerDimension);
        } else {
          var scrollContainerDimension = $scrollContainer.width();
          $scrollFrame.width((scrollContainerDimension * numScrollItems));
        }
        
        
        $scrollNav.find('a').click(function() {
          var $scrollLink = $(this),
              action = $scrollLink.parent().attr('class');
              
          if(action === 'prev') {
            if(count > 0) {
              count--;
            } else {
              count = numScrollItems - 1;
            }
          } else if (action === 'next') {
            if(count < (numScrollItems - 1)) {
              count++;
            } else {
              count = 0;
            }
          }
          
          var moveTo = scrollContainerDimension * count;
          if($scrollContainer.hasClass('vertical')) {
            $scrollFrame.animate({top: '-'+moveTo},600);
          } else {
            $scrollFrame.animate({left: '-'+moveTo},600);
          }
          
          if($pagerNav.length) {
            $pagerNav.find('.current').removeClass('current');
            $pagerNav.find('li:nth-child('+(count+1)+')').addClass('current');
          }
          
          return false;
        });
        
        //If there is a pager
        if($pagerNav.length) {
          $pagerNav.find('a').click(function() {
            var $selectedPage = $(this),
                $selectedPageParent = $selectedPage.parent(),
                count = $selectedPage.parent().prevAll().length,
                moveTo = scrollContainerDimension * count;
            
            if(!$selectedPageParent.hasClass('current')) {
                
              if($scrollFrame.hasClass('vertical')) {
                $scrollFrame.animate({top: '-'+moveTo},600);
              } else {
                $scrollFrame.animate({left: '-'+moveTo},600);
              }
            
              $pagerNav.find('.current').removeClass('current');
              $selectedPageParent.addClass('current');
            }
            
            return false;
            
          });
        }
        
    });
    return $(this);
  };
})(jQuery);


(function($) {
  $.fn.imageCarousel = function() {
    $(this).each(function() {
      // set up the nav
      $(this).append('<div class="nav" />');
      $(".nav", this).append('<div class="caption" />');

      var images  = $(".images li", this),
          nav     = $(".nav", this),
          caption = $(".caption", nav),
          current;

      // create the bullet tabs
      var bullets = $("<ol />");
      images.each(function(i) {
        var title = $("img", this).attr("title");

        $("<li />")
          .append(
            $('<a href="#" />').text(title)
          )
          .data("image", $(this))
          .appendTo(bullets);
      });
      nav.append(bullets);

      // bullet click handler
      $("li a", nav).click(function() {
        // hide and unset current
        current.fadeOut();
        $("li", bullets).removeClass("current");
        // set new current and show
        current = $(this).parent().data("image");
        $(this).parent().addClass("current");
        current.fadeIn();
        // set the caption
        caption.text($(this).text());
        return false;
      });

      // setup
      current = images.hide().eq(0).show();
      bullets.find("li:first").addClass("current");
      $("ol", nav).css("width", (15*images.size()) + "px");
      caption.text($("li a:first", nav).text());
    });
    return $(this);
  };
})(jQuery);


$(document).ready(function() {

  $('label.label-over').inFieldLabels();
  $('.scroller').scroller();
  $('.tabbed').tabs();
  
  //Show & hide more description
  /*$('.description .more').hide().before('<span class="continue">&hellip;</span> ');
  $('.description')
  $('<a>', {
    'class': 'show-more',
    'href': '#',
    'text': 'Show More',
    click: function() {
      var $showMoreLink = $(this);
      $('.description .more').slideToggle(function() {
        if($(this).is(':visible')) {
          $('.description .continue').hide();
          $showMoreLink.text('Hide More');
        } else {
          $('.description .continue').show();
          $showMoreLink.text('Show More');
        }
      });
      return false;
    }
  }).appendTo('.description');*/
  //End Show & hide more description
  
  //Add alternate classes since browsers don't support advanced CSS
  (function($) {
    $('tbody tr:nth-child(odd)').addClass('odd');
    $('tbody tr:nth-child(even)').addClass('even');
    $('.similar-listings li:nth-child(3n)').addClass('alt');
  })(jQuery);
  //End Add alternate classes
  
  //Photo Gallery
  (function($) {
    $('.gallery .thumbs a').click(function() {
      var $thumb = $(this),
          newImage = $thumb.attr('href'),
          shortDescription = $thumb.attr('title'),
          header = $thumb.children('img').attr('alt'),
          $gallery = $thumb.closest('.gallery'),
          $feature = $gallery.find('.feature'),
          $linkParent = $thumb.parent();
    
      if(!$linkParent.hasClass('current')) {
        $feature.children('.caption').slideUp(250,function() {
          var $caption = $(this);
          $feature.append('<img src="'+newImage+'" alt="" class="new hide" />');
          $caption.children('h3').text(header);
          $caption.children('p').text(shortDescription);
          $gallery.find('.thumbs').find('.current').removeClass('current');
          $linkParent.addClass('current');
          $caption.slideDown(250);
          var $oldImage = $feature.find('img:not(.new)');
          $oldImage.fadeOut(250,function() {
            $feature.find('.new').fadeIn(250,function() {
              $oldImage.remove();
            }).removeClass('new');
          });
        });
      }
        
      return false;
    });
  })(jQuery);
  //End Photo Gallery

  //Agent website image carousel
  $("#agent-site #carousel").imageCarousel();
  //End Agent website image carousel 
  
  //Homepage scroller
  if($('#home').length) {
    (function($) {
      var $container = $('#content'),
          $items = $('#content').children('.article'),
          itemWidth = $items.width(),
          containerWidth = itemWidth * $items.length,
          $scrollControls = $('#nav a');
        
      $container.css('overflow','hidden').wrapInner('<div class="scroller-wrapper" style="width:'+containerWidth+'px;"></div>');
    
      $scrollControls.click(function() {
        var $this = $(this),
            $par = $this.parent();
      
        if(!$par.hasClass('current')) {
          var pos = $par.prevAll().length,
              $scrollWrapper = $container.children('.scroller-wrapper');
        
          $('#nav .current').removeClass('current');
          $par.addClass('current');
          $.scrollTo('#nav', 600);
          $scrollWrapper.stop().animate({left: '-'+(pos * itemWidth)},600);
        }
        return false;
      });
    
      $('a[href=#pricing], #header a[href*=plans], #footer a[href*=plans]').click(function() {
        $container.children('.scroller-wrapper').stop().animate({left: '-'+(itemWidth)},600);
        $.scrollTo('#nav', 600);
        $('#nav .current').removeClass('current');
        $('#nav li:last-child').addClass('current');
        return false;
      });
      
      $('.benefits .modal').colorbox({
        opacity: 0.5,
        rel: 'group'
      });
      
    })(jQuery);
  }
  //End Homepage scroller
});
