$(document).ready(function() {
  
  // firstup
  
  $('div.overview').hide();

  // Configuration

  $.c = {
    browser : "",
    bodyClass : "",
    bodyId : "",
    slides : $("div.slide"),
    slideNum : 0,
    slideMax : $("div.slide").size(),
    slideDirection : "",
    slideWidth : 0,
    navPos : $("div#navigation ul").css("backgroundPosition"),
    canvasImage : 1,
    canvasImageMax : 3,
    canvasRoot : "/templates/default/images/canvas/"
  }

  // Browser

  $.each($.browser, function(i, val) {
    if (i=='safari' && val==true) { $.c.browser='safari'; };
    if (i=='opera' && val==true) { $.c.browser='opera'; };
    if (i=='msie' && val==true) { $.c.browser='msie'; };
    if (i=='mozilla' && val==true) { $.c.browser='mozilla'; };
  });


  // Utility Functions

  jQuery.fn.delay = function(time, callback){
    jQuery.fx.step.delay = function(){};
    return this.animate({delay:1}, time, callback);
  };

  // Body Id/Class

  $.c.bodyClass = $("body").attr("class");
  $.c.bodyId = $("body").attr("id");
  
  if ($.c.browser == 'mozilla' || $.c.browser == 'safari') {
    $('body').css('overflowX', 'hidden');
  }
  
  // Tooltip
  
  if ($.c.bodyId == 'clients') {
    $('body').append('<div id="tooltip"></div>');
    var $tooltip = $('div#tooltip');
  };
  

  // Canvas

  var $canvas = $('div#canvas');
  var $canvasImg = $canvas.find('> a img');

  if ($.c.bodyId == 'home') {
    $canvas.height($(window).height());
    $canvas.after('<div id="canvas-loader"><img /></div>');
    var $canvasLoader = $('div#canvas-loader');
    var $canvasLoaderImg = $canvasLoader.find('> img');
    $canvasLoader.hide();

    if ($.c.browser == 'mozilla' || $.c.browser == 'safari') {
      $('h1#logo').hide();
      $canvas.css('opacity', 0).delay(500).fadeTo(500, 1, function(){
        $('h1#logo').fadeIn(500);
      });
    }

  };

  $canvas.bind('click', function(event) {

    if (event.type == 'click') {
      $.c.canvasImage ++;
      if ($.c.canvasImage > $.c.canvasImageMax) {
        $(this).unbind('click');
        return true;
      } else {
        $canvasLoaderImg.attr('src', $.c.canvasRoot + $.c.canvasImage + '.jpg').load(function() {
          $canvasLoader.fadeIn(500, function(){
            $canvasImg.attr('src', $.c.canvasRoot + $.c.canvasImage + '.jpg');
            $canvasLoader.hide();
          });
        });
        return false;
      }
    };

  });

  // Meta Case Studies

  $("#meta ol").hide().slideDown(500);

  // Slides

  $.c.slides.hide();
  $.c.slides.eq($.c.slideNum).show();

  if($.c.slideMax > 1) {
    $("div#button").show().css({ width : 0 }).animate({ width : "67px" }, { duration : 500 });
  } else {
    $("div#button").hide();
  }

  function slidr() {
    if ($.c.slideNum == 0) {
      $("div#button div.next").show();
      $("div#button div.both").hide();
      $("div#button div.prev").hide();
    }
    if ($.c.slideNum > 0 && $.c.slideNum < $.c.slideMax-1) {
      $("div#button div.next").hide();
      $("div#button div.prev").hide();
      $("div#button div.both").show();
    }
    if ($.c.slideNum == $.c.slideMax-1) {
      $("div#button div.next").hide();
      $("div#button div.both").hide();
      $("div#button div.prev").show();
    }
    
  }

  $("div#button a").click(function() {
    $.c.slideDirection = $(this).attr("class");
    switch($.c.slideDirection)
    {
      case "next":
      $.c.slides.eq($.c.slideNum).hide();
      $.c.slideNum ++;
      $.c.slides.eq($.c.slideNum).fadeIn(300, function() {
        slidr();
      });
      break;
      case "prev":
      $.c.slides.eq($.c.slideNum).hide();
      $.c.slideNum --;
      $.c.slides.eq($.c.slideNum).fadeIn(300, function() {
        slidr();
      });
      break;
    }
    if ($.c.bodyId == 'us' || $.c.bodyId == 'services') {
      var link = $.c.slideNum > 2 ? 2 : $.c.slideNum;
      metaUsSwitch(link, $.c.slideNum, false);
    };
    return false;
  });

  $("div.slide.nextr").click(function() {
    if(!$(this).hasClass("flowed")) {
      $.c.slides.eq($.c.slideNum).hide();
      $.c.slideNum ++;
      $.c.slides.eq($.c.slideNum).fadeIn(300, function(){
        slidr();
      });
    }
  });

  // Reflections

  $.c.slideWidth = $("div#content").width();
  $.c.slideWidth = $.c.slideWidth < 400 ? 400 : $.c.slideWidth;
  $.c.slideWidth = $.c.slideWidth > 900 ? 900 : $.c.slideWidth;
  $("img.reflect").each(function() {
    $(this).css({width : $.c.slideWidth, height : $.c.slideWidth*0.6875});
    $(this).reflect({height: 0.16, opacity: 0.5});
    $(this).parent().css({width : $.c.slideWidth, height : ($.c.slideWidth*0.6875)+($.c.slideWidth*0.16)});
    $(this).parent().find("> canvas").css({width : $.c.slideWidth});
  });


  $(window).bind('resize', function() {
    $.c.slideWidth = $("div#content").width();
    $.c.slideWidth = $.c.slideWidth < 400 ? 400 : $.c.slideWidth;
    $.c.slideWidth = $.c.slideWidth > 900 ? 900 : $.c.slideWidth;
    $("img.reflected").each(function(){
      $(this).css({width : $.c.slideWidth, height : $.c.slideWidth*0.6875});
      $(this).reflect({height: 0.16, opacity: 0.5});
      $(this).parent().css({width : $.c.slideWidth, height : ($.c.slideWidth*0.6875)+($.c.slideWidth*0.16)});
      $(this).parent().find("> canvas").css({width : $.c.slideWidth});
    });
    
  });

  // Meta Links

  var $metaUsLinks = $("div#meta.slidetoggle li");
  
  function metaUsSwitch(link,num,slidrDo) {
    $metaUsLinks.removeClass("active");
    $metaUsLinks.eq(link).addClass("active");
    if (slidrDo == true) {
      $.c.slides.eq($.c.slideNum).hide();
      $.c.slideNum = num;
      $.c.slides.eq($.c.slideNum).fadeIn(300);
      slidr();
    };
  };

  $metaUsLinks.click(function() {
    var slide = $(this).attr('class').substring(1,2)-1;
    metaUsSwitch(slide, slide, true);
    return false;
  });

  // Clients Slides

  var $clientSlides = $("div.slide.clients");
  var $clientSlide = $clientSlides.find('> div.client');
  var $clientOverview = $clientSlides.find('div.overview');
  var $clientOverviewWork = $clientOverview.find('div.featured div.feature');

  $clientOverview.find('div.close').css('display', 'block');
  $clientSlides.css('background', 'none');
  
  $clientSlide.css('opacity', 0.3);

  $clientSlide.bind('mouseover mouseout click', function(event) {
    if (event.type == 'click') {
      $(this).addClass('active');
      $clientSlide.hide();
      $clientSlides.css('background', '#ffffff');
      $(this).show().stop().fadeTo(300, 1).next().slideDown('300', function() {
        
      });
    };
    if (event.type == 'mouseover') {
      $(this).stop().fadeTo(300, 1);
    };
    if (event.type == 'mouseout' && !$(this).hasClass('active')) {
      $(this).stop().fadeTo(1000, 0.3);
    };
  });

  $clientOverview.find('div.close').click(function () {
    $(this).parent().hide();
    $clientSlides.css('background', 'none');
    $clientSlide.show().css('opacity', 0.3).removeClass("active");
    
  });

  $clientOverviewWork.bind('mouseover mouseout mousemove', function(event) {
    if($.c.browser == 'msie') {
      mY = 15;
    } else {
      mY = 115;
    };
    if (event.type == 'mouseover') {
      $clientOverviewWork.stop().fadeTo(300, 0.2);
      $(this).stop().fadeTo(400, 1);
      $tooltip.css({left: event.pageX + 15, top : event.pageY - mY});
      $tooltip.text($(this).find('span').text()).stop().fadeTo(300, 1);
    };
    if (event.type == 'mousemove') {
      $tooltip.fadeIn(400);
      $tooltip.css({left: event.pageX + 15, top : event.pageY - mY});
    };
    if (event.type == 'mouseout') {
      $tooltip.stop().fadeTo(400, 0);
      $clientOverviewWork.stop().fadeTo(300, 1);
    };
  });

  // Biogs
  
  $person = $('div.person');
  $biog = $('div.biog');
  
  $person.bind('mouseover', function(event) {
    
    if(event.type == 'mouseover') {
      if ($(this).hasClass('yes')) {
        $person.removeClass('active');
        $(this).addClass('active');
        if ($(this).hasClass('six')) {
          $biog.css('left', 0);
        } else {
          $biog.css('left', '33%');
        }
        $biog.hide();
        $biog.height($(this).height());
        $biog.css('top', $(this).height());
        if($.c.browser == 'msie') {
          $biog.css('top', -$(this).height());
        };
        $(this).next().fadeIn(400);
      };
      $person.each(function(index) {
        if (!$(this).hasClass('active')) {
          $(this).stop().fadeTo(400, 0.2);
        };
      });
      $(this).stop().fadeTo(400, 1);
    }
    
  });
  
  $biog.bind('mouseleave', function(event) {   
    $(this).fadeOut(400);
    $('div.person.active').removeClass('active').stop().fadeTo(400, 0.2);
  });
  
  $('div.slide.people').mouseleave(function(event) {
    $biog.fadeOut(400);
    $person.removeClass('active').stop().fadeTo(400, 1);
  });

  // Navigation
  
  $nav = $("div#navigation ul li a");

  $nav.bind('mouseover mouseout', function(e) {
    if (e.type == 'mouseover') {
      var ulLeft = $(this).closest('ul').offset().left;
      var thisLeft = $(this).offset().left;
      var thisWidth = $(this).width();
      var pointerPos = Math.floor((thisLeft - ulLeft) + (thisWidth / 2)) + 4;
      $(this).closest('ul').stop().animate({backgroundPosition: pointerPos + "px 4px"}, 200, "easeOutQuad");
    };
    var rollback = '';
    $.c.bodyId == 'home' ? rollback = '40px 4px' : null;
    if (e.type == 'mouseout') {
      $(this).closest('ul').stop().animate({backgroundPosition: rollback}, 200, "easeOutQuad");
    };
  });
  
  

  $.preloadCssImages();

});
