$(document).ready(function(){
  CLARKS.sections.navigation();
  CLARKS.sections.main();
  CLARKS.sections.gallery();
  CLARKS.sections.faq();
  CLARKS.sections.remodeling();
  CLARKS.sections.references();
  CLARKS.sections.order();
});


var CLARKS = {};

CLARKS.sections = {};
  CLARKS.sections.main = function () {
    CLARKS.effects.fadeHeader(10000);
    CLARKS.effects.fadeGalleryItems();
    CLARKS.effects.cycleImages();
    CLARKS.effects.fadeHover();
  }

  CLARKS.sections.navigation = function () {
    $('#header .navigation > li').hover(function(){
      clearTimeout($.data(this, 'timeout'));
      $(this).addClass('active');
      $(this).find('ul').show();
    },function(){
      $.data(this, 'timeout', setTimeout($.proxy(function() {
        $(this).find('ul').hide();
        $(this).removeClass('active');
      }, this), 500));
    });
  }

  CLARKS.sections.gallery = function(){
    $('#content .pools .pool-type').click(function(e){
      e.preventDefault();

      var poolType = $(this).data('pool_type');

      CLARKS.ui.gallerySelector.swapData(poolType);

      $('#viewer .selector a').removeClass('selected').first().addClass('selected').click();
      $('#viewer .links .pool-type').removeClass('active').filter(function(index){
        return $(this).data('pool_type') == poolType;
      }).addClass('active');

      $('#viewer-wrap').detach().appendTo('#main');
      $('#viewer-wrap').fadeToggle(function(){
        $('html,body').animate({scrollTop: $('#viewer').offset().top});
        $(this).scrollTop();
        $('#viewer .selector').animate({left: '0'}, 500, 'easeOutCirc', CLARKS.ui.gallerySelector.observer);
      });
    });

    $('#viewer .links .pool-type').click(function(e){
      e.preventDefault();

      var poolType = $(this).data('pool_type');

      CLARKS.ui.gallerySelector.swapData(poolType);

      $(this).addClass('active').siblings().removeClass('active');

      $('#viewer .selector').animate({left: '0'}, 500, 'easeOutCirc', CLARKS.ui.gallerySelector.observer);

      $('#viewer .selector a').removeClass('selected').first().addClass('selected').click();
    });

    CLARKS.ui.closeViewer();
    CLARKS.ui.gallerySelector();
  }
  CLARKS.sections.faq = function(){
    CLARKS.ui.textSlider('#content li.faq a');
  }
  CLARKS.sections.remodeling = function(){
    CLARKS.ui.textSlider('body.pools_remodeling #content li > strong > a');
  }
  CLARKS.sections.references = function(){
    CLARKS.ui.textSlider('body.about_references #content strong a','p, ul');
  }
  CLARKS.sections.order = function(){
    CLARKS.money.itemTotal();
    CLARKS.money.overallTotal();
  }


CLARKS.effects = {};
  CLARKS.effects.fadeHeader = function(d) {
    if (!$('body.index,body.about-us,body.about,body.pools,body.service').length) {
      return
    }
    var delay = d,
        now = new Date(),
        before = new Date();

    setInterval(function(){
      now = new Date();
      var elapsedTime = (now.getTime() - before.getTime());

      if(elapsedTime > delay) {
        $('#header h1 a').clearQueue();
        $('#header h1 a').fadeIn();
      }

      $('#header h1 a').fadeOut(1000,function(){
        if ($(this).parent().hasClass('logo')) {
          $(this).parent().removeClass('logo');
        } else {
          $(this).parent().addClass('logo');
        }
      });
      $('#header h1 a').fadeIn();
    }, delay);
  }
  CLARKS.effects.showGalleryLink = function() {
    $('#header .gallery-wrap').hover(function(){
      $(this).find('.gallery-overlay').stop(true,true).fadeIn();
    },function(){
      $(this).find('.gallery-overlay').stop(true,true).fadeOut();
    });
  }
  CLARKS.effects.fadeHover = function () {
    $('#content .apsp').hover(function(){
      $(this).stop(true,false).fadeTo(500,0,function(){
        $(this).attr('src','/images/logo_pj-psa.png');
        $(this).fadeTo(500,1,function(){
          $(this).css('filter','');
        });
      });
    },function(){
      $(this).stop(true,false).fadeTo(500,0,function(){
        $(this).attr('src','/images/logo_apsp.png');
        $(this).fadeTo(500,1,function(){
          $(this).css('filter','');
        });
      });
    });
  }
  CLARKS.effects.fadeGalleryItems = function() {
    var delay = 4000;
    var now = new Date();
    var before = new Date();

    var $images = $('#header .gallery-wrap .image-gallery a').children('img');
    var $windowImgs = $('#header .gallery-wrap .image-gallery span.windowpane img');

    var getRandSrc = function(){
      var source = $images.eq(Math.floor(Math.random() * $images.length)).attr('src');
      $windowImgs.each(function(index,element){
        if (source == $(element).attr('src')) {
          source = getRandSrc();
        }
      });
      return source;
    }
    var getRandItem = function() {
      var item = $windowImgs.eq(Math.floor(Math.random() * $windowImgs.length));
      return item;
    }
    setInterval(function(){
      now = new Date();
      var elapsedTime = (now.getTime() - before.getTime());

      if(elapsedTime > delay) {
        $windowImgs.each(function(index,element){
          $(element).clearQueue();
        });
      }

      getRandItem().fadeTo(700, 0, function(){
        $(this).attr('src',getRandSrc());
        $(this).fadeTo(700, 1);
      });
    }, delay);
  }
  CLARKS.effects.cycleImages = function() {
    var delay = 7000,
        now = new Date(),
        before = new Date();

    var $cycleable = $('#content .cycleable');

    setInterval(function(){
      now = new Date();
      var elapsedTime = (now.getTime() - before.getTime());

      if(elapsedTime > delay) {
        $cycleable.each(function(index,element){
          $(element).clearQueue();
        });
      }

      $cycleable.filter('#content .cycleable.active').fadeTo(700,0,function(){
        $(this).hide().removeClass('active').next().fadeIn().fadeTo(700,1,function(){
          $(this).css('filter','');
        }).addClass('active');
        if ($(this).is('.last')) {
          $(this).siblings('.first').fadeTo(700,1,function(){
            $(this).css('filter','');
          }).addClass('active');
        }
      });
    }, delay);
  }

CLARKS.ui = {};
  CLARKS.ui.gallerySelector = function() {

    CLARKS.ui.gallerySelector.init();

    $('#viewer .selector-container a.navigation').click(function(e){
      e.preventDefault();

      if ($(this).hasClass('prev')) {
        $('#viewer .selector').animate({left: '+=774px'}, 500, 'easeOutCirc', CLARKS.ui.gallerySelector.observer);
      } else {
        $('#viewer .selector').animate({left: '-=774px'}, 500, 'easeOutCirc', CLARKS.ui.gallerySelector.observer);
      }

    });

    $('#viewer .selector a').live('click', function(event){
      event.preventDefault();

      var url = this.href,
          index = $(this).index(),
          $this = $(this);

      if ( index != $('#viewer .viewport img.active').index() ) {
        $this.addClass('selected');
        $this.siblings().removeClass('selected');
        $('#viewer .viewport img.active').fadeTo(800,0,function(){
          $(this).removeClass('active');
          $(this).css('display','none');
        });
        $('#viewer .viewport img').eq(index).fadeTo(800,1,function(){
          $(this).addClass('active');
          $(this).css('display','block');
        });
      }
    });
  }
    CLARKS.ui.gallerySelector.init = function () {
      $('#viewer .selector').css('left',0);
      CLARKS.ui.gallerySelector.observer();
    }
    CLARKS.ui.gallerySelector.observer = function() {
      if (parseInt($('#viewer .selector').css('left')) >= 0 ){
        $('#viewer .selector-container a.navigation.prev').css('visibility','hidden');
      } else {
        $('#viewer .selector-container a.navigation.prev').css('visibility','visible');
      }

      if (parseInt($('#viewer .selector').css('left')) <= -$('#viewer .selector').width() + 300 ){
        $('#viewer .selector-container a.navigation.next').css('visibility','hidden');
      } else {
        $('#viewer .selector-container a.navigation.next').css('visibility','visible');
      }
    }
    CLARKS.ui.gallerySelector.swapData = function(element) {
      $('#viewer h2')
        .replaceWith(
          $('.viewer-data.' + element)
            .find('h2')
              .clone()
        );
      $('#viewer .viewport')
        .empty()
          .append(
            $('.viewer-data.' + element)
              .find('.viewport')
                .html()
          );
      $('#viewer .selector')
        .empty()
          .append(
            $('.viewer-data.' + element)
              .find('.selector')
                .html()
          );
    }

  CLARKS.ui.textSlider = function(selector,target) {
    target = typeof(target) != 'undefined' ? target : 'p';
    $(selector).click(function(e){
      e.preventDefault();
      $(this).closest('li').toggleClass('active');
      $(this).closest('li').find(target).slideToggle();
    });
  }
  CLARKS.ui.closeViewer = function() {
    $('#viewer').prepend('<div class="controls"><a class="close" href="#">X</a></div>');
    $('#viewer .controls a.close').click(function(e){
      e.preventDefault();
      $(this).closest('#viewer-wrap').fadeOut();
    });
    $(document).keyup(function (e) {
      if (e.keyCode == 27) {
        $('#viewer .controls a.close').click();
      }
    });
  }

CLARKS.money = {};
  CLARKS.money.itemTotal = function() {
    $('body.service_order-chemicals .item .quantity').change(function(){
      var netChange = $(this).val() * parseInt($(this).siblings('.price').text().replace('$','')),
          orderTotal = $('#order-total .calculated-total').text().replace('$','');
    });
  }
  CLARKS.money.overallTotal = function() {
    $('body.service_order-chemicals .item .quantity').change(function(){
      var runningTotal = 0;

      $('form .item').each(function(index, element){
        runningTotal = runningTotal + $(element).find('.quantity').val() * parseInt($(element).find('.price').text().replace('$',''));
      });

      $('#order-total .calculated-total').text('$' + runningTotal);
    });
  }

CLARKS.util = {};
  CLARKS.util.fixIeOpacity = function() {
    if (!jQuery.support.opacity) {
      $(this).css('filter','');
    }
  }
;

