$(document).ready(function(){
  $('#page').slidecarousel({controls: true,pager: true,start: 1});
  $('.pager a.pagenum').click(function() {
    if ($(window).scrollTop()<$('#main').offset().top) {
      $('html,body').animate({scrollTop: $('#main').offset().top},800);
    }
  });
});
// functions
/*
the images preload plugin
*/
(function($) {
  $.fn.preload = function(options) {
    var opts   = $.extend({}, $.fn.preload.defaults, options),
        o      = $.meta ? $.extend({}, opts, this.data()) : opts;
    return this.each(function() {
      var $e  = $(this),
          t   = $e.attr('rel'),
          i   = $e.attr('href'),
          l   = 0;
      $('<img/>').load(function(i){
        ++l;
        if(l==2) o.onComplete();
      }).attr('src',i);  
      $('<img/>').load(function(i){
        ++l;
        if(l==2) o.onComplete();
      }).attr('src',t);  
    });
  };
  $.fn.preload.defaults = {
    onComplete  : function(){
    	return false;
    }
  };
})(jQuery);

$(function() {
  //some elements..
  var $ps_container    = $('#ps_container'),
    $ps_image_wrapper   = $ps_container.find('.ps_image_wrapper'),
    $ps_next      = $ps_container.find('.ps_next'),
    $ps_prev      = $ps_container.find('.ps_prev'),
    $ps_nav        = $ps_container.find('.ps_nav'),
    $ps_nav_wrapper = $ps_container.find('.ps_nav_wrapper'),
    $tooltip      = $ps_container.find('.ps_preview'),
    $ps_preview_wrapper = $tooltip.find('.ps_preview_wrapper'),
    $links        = $ps_nav.children('li').not($tooltip),
    geteasing      = 'easeOutExpo',//easeInBack
    total_images    = $links.length,
    currentHovered    = -1,
    current        = 0,
    intervalId		= -1;
    $loader        = $('#loader');
  

	$ps_nav_wrapper.css('left', ($ps_image_wrapper.width()/2 - $ps_nav_wrapper.width()/2)+'px');


  var ie         = false;
  if ($.browser.msie) {
    ie = true;//you are not!Anyway let's give it a try
  }
  if(!ie)
    $tooltip.css({
      opacity  : 0
    }).show();
  var loaded  = 0;
  $links.each(function(i){
    var $link   = $(this);
    $link.find('a').preload({
      onComplete  : function(){
        ++loaded;
        if(loaded == total_images){
          $loader.hide();
          $('.firstimg').fadeIn();
          $links.bind('mouseenter',showTooltip)
              .bind('mouseleave',hideTooltip)
              .bind('click',showImage);
          $ps_next.bind('click',nextImage);
          $ps_prev.bind('click',prevImage);
          
          startInterval();
        }
      }
    });
  });
  
  function startInterval() {
  	if(intervalId != -1) {
  		clearInterval(intervalId);
  	}
  	
  	intervalId = setInterval(function() {
    	nextImage();
    }, 4000);
  }
  function showTooltip(){
    var $link         = $(this),
      idx             = $link.index(),
      linkOuterWidth  = $link.outerWidth(),
      left            = parseFloat(idx * linkOuterWidth) - $tooltip.width()/2 + linkOuterWidth/2,
      $thumb          = $link.find('a').attr('rel'),
      imageLeft;

    if(currentHovered != idx){
      if(currentHovered != -1){
        if(currentHovered < idx){
          imageLeft  = 163;
        } else{
          imageLeft  = -163;
        }
      }
      currentHovered = idx;
      var $newImage = $('<img/>').css('left','0px').attr('src',$thumb);
      if($ps_preview_wrapper.children().length > 1)
        $ps_preview_wrapper.children(':last').remove();
      $ps_preview_wrapper.prepend($newImage);
      var $tooltip_imgs       = $ps_preview_wrapper.children(),
          tooltip_imgs_count  = $tooltip_imgs.length;
      if(tooltip_imgs_count > 1){
        $tooltip_imgs.eq(tooltip_imgs_count-1)
               .stop()
               .animate({
                left:-imageLeft+'px'
                },150,geteasing,function(){
                  //remove the old one
                  $(this).remove();
                });
        $tooltip_imgs.eq(0)
               .css('left',imageLeft + 'px')
               .stop()
               .animate({
                left:'0px'
                },150,geteasing);
      }
    }
    if(ie)
      $tooltip.css('left',left + 'px').show();
    else
    $tooltip.stop()
        .animate({
          left     : left + 'px',
          opacity  : 1
        },150,geteasing);
  }
  function hideTooltip(){
    if(ie)
      $tooltip.hide();
    else
    $tooltip.stop()
          .animate({
          opacity    : 0
        },150,geteasing);
  }
  function showImage(e){
    var $link        = $(this),
      idx            = $link.index(),
      $image         = $link.find('a').attr('href'),
      $currentImage      = $ps_image_wrapper.find('img'),
      currentImageWidth  = $currentImage.width();
    if(current == idx) return false;
    $links.eq(current).removeClass('selected');
    $link.addClass('selected');
    var $newImage = $('<img/>').css('left',currentImageWidth + 'px').attr('src',$image);
    if($ps_image_wrapper.children().length > 1)
      $ps_image_wrapper.children(':last').remove();
    $ps_image_wrapper.prepend($newImage);
    var newImageWidth  = $newImage.width();
    if(current > idx){
      $newImage.css('left',-newImageWidth + 'px');
      currentImageWidth = -$ps_image_wrapper.width();
    }
    current = idx;
    $newImage.stop().animate({
        left  : ($ps_image_wrapper.width()-newImageWidth)/2
    },350,geteasing);
    $currentImage.stop().animate({
        left  : -currentImageWidth + 'px'
    },350,geteasing);
    e.preventDefault();
  }
  function nextImage(){
  	startInterval();
  	
    if(current+1 == total_images) {
      $links.eq(0).trigger('click');
    } else {
      if(current < total_images){
        $links.eq(current+1).trigger('click');
      }
    }
  }
  function prevImage(){
  	startInterval();
  	
    if(current == 0){
      $links.eq(current+(total_images-1)).trigger('click');
    } else {
      if(current > 0){
        $links.eq(current-1).trigger('click');
      }
    }
  }
});
