(function ($) {

  var colorStops = new Array(0,-200,-400,-600);

  Drupal.behaviors.underwater_common = {
    attach: function(context, settings) {
           
      //Duplicate menu elements so they can be hovered upon     
      $('.colornav a').each(function(){
        $(this).children('span').clone().appendTo(this);
        $(this).children('span:first-child').addClass('top');
        $(this).children('span:last-child').addClass('bottom');
      });
      
      //Menu Hover Effect
      $('.colornav a').hover(function(){
        var offset = colorStops[Math.round(Math.random()*3)];
        
        $(this).children('.bottom').addClass('jqHover');
        $(this).stop().css({ 
          backgroundPosition: '0 '+offset+'px'
        }).animate({
          marginTop: '-100px'
        },200,function(){
          $(this).children('.top').addClass('jqHover');
          $(this).children('.bottom').removeClass('jqHover');
          $(this).css({
            backgroundPosition: '0 '+(offset-100)+'px',
            marginTop: '0'
          });
        });
      },function(){
        $(this).stop().animate({
          marginTop: '-100px'
        },400,function(){
          $(this).children('.top').removeClass('jqHover');
          $(this).css({
            backgroundPosition: '0 0',
            marginTop: '0'
          });
        });
      });
      
      $(window).resize(function() {
        setElements();
      });     
      
      setElements();
      
      $('.frontnav').localScroll();
      
      
      
      
      /*
      $('#navigation a').hover(function(){
        
        $(this).stop().animate({
          paddingTop: '35px',
          marginTop: '0'
        },100);
        
        $(this).children('span').stop().show().animate({
          opacity: '1.0'
        },300);
         
      },function(){
      
        $(this).stop().animate({
          paddingTop: '0px',
          marginTop: '20px'
        },200);
        
        $(this).children('span').stop().animate({
          opacity: 0
        },300);        
      });
      */
     
      
      
      /*
      $('.view-work .views-row').hover(function(){
        $(this).children().children('div.work-body').stop().fadeIn();
      
      },function(){
        $(this).children().children('div.work-body').stop().fadeOut();
      });
      */
      
    }
  }; 


  function setElements(){
    var viewportWidth = $('#header').width();
    
    var marginWidth = (viewportWidth-960)/2;
    $('#logo').css('paddingLeft',marginWidth);
  }
  
  
  /*
  function carousel_init_callback(carousel){
    console.log("Hi");
  }
  */
  
})(jQuery);


  
function fontFaceCheck(){

  var ua = navigator.userAgent, parsed;
         
  if (/*@cc_on@if(@_jscript_version>=5)!@end@*/0) 
      return true;
  if (parsed = ua.match(/Chrome\/(\d+\.\d+\.\d+\.\d+)/))
      return parsed[1] >= '4.0.249.4';
  if ((parsed = ua.match(/Safari\/(\d+\.\d+)/)) && !/iPhone/.test(ua))
      return parsed[1] >= '525.13';
  if (/Opera/.test({}.toString.call(window.opera)))
      return opera.version() >= '10.00';
  if (parsed = ua.match(/rv:(\d+\.\d+\.\d+)[^b].*Gecko\//))
      return parsed[1] >= '1.9.1';    
 
  alert("Nope");
 
  return false;
}
  
;
(function ($) {

  //Adjustable Settings
  var totalPoints = 13; //Total # of Peaks & Valleys. Should be an odd number to account for the middle point.
  var ampMultiplier = .4; //Amplitude of the waves. Further multipled by totalPoints.
  var framerate = 30; //framerate in ms (1000/30 = 33.33 fps)
  var cWidth = 960; //Canvas Width will be changed to the width of the viewport
  var cHeight = 250; //Canvas Height
  var waterLevel = 200; //The y value of the surface of the water
  var spreadAccelleration = 1.01; //Acceleration for point spread
  var spreadSpeed = 20; //Fixed speed for point spread
  
  //Global Static Variables
  var dur = (totalPoints-3)*9; //Duration. Calculation is Total points, minus mid and end points
  var midPointIndex = Math.floor(totalPoints/2); //The index of the midpoint within the Points array
  var midPointX; //X position of cursor
  var canvas; //The canvas element
  var ctx; //The Canvas Context
  var animation; //Interval that runs drawing script
  var animationActive = false; //true when an animation is occuring, used to control the frequency of the animation
  var C = Math.PI/180; //Constant used in the sine function
  var points; //An array container that holds each point
  var point; //Holds the current point
  var counter; //The counter that we'll increment to control each frame of the animation
  var textureImg = new Image();
  
  //texture.src = "/sites/all/themes/underwater/images/bluepaper.jpg";
  
  
  Drupal.behaviors.underwater_ripple = { //Document ready wrapper
    attach: function(context, settings) {
      
      if($('#ripple').length != 0){//If the ripple doesnt exist (popup or something) don't run shit
      
        $('#ripple-control').hover(function(e){
          if (canvas.getContext && ctx){
            if (!animationActive){
              clearInterval(animation);
              midPointIndex = Math.floor(totalPoints / 2);
              midPointX = e.pageX;
              point = 1; //Start counting at 1 since we're setting points[0] at the get go
              counter = 0;
              points = new Array();
              points[0] = new Array(spreadSpeed,0);//The outer points ground out the mid point
              animation = setInterval(drawShape, framerate); 
              animationActive = true;
            }
          }
        });
        
        //console.log(document.images);
        canvas = document.getElementById('ripple');
        
        var textureSrc = $("#header").css("background-image").replace(/"/g,"").replace(/url\(|\)$/ig, "");
        textureImg.src = textureSrc;
        //setCanvas();
        
        textureImg.onload = function(){
          setCanvas();
        }
        
        $(window).resize(function() {
          setCanvas();
        });     
      
      }
      
    }
  };

  //Initialize the canvas for supporting browsers
  function setCanvas(){
  $("#ripple").attr('width',viewportWidth)
    if (canvas.getContext){//Check that canvas element will fire  
      //var viewportWidth = $('#trailing-header').width()
      var viewportWidth = $('#header').width();
     
      
      $("#ripple").attr('width',viewportWidth).attr('height',cHeight);
      cWidth = viewportWidth;   
      ctx = canvas.getContext("2d");
      
      $("#header").css({
        'background':'none'
      });
      
      
      //Set the gradient inside the ctx element
      //var grd=ctx.createLinearGradient(0,0,0,waterLevel);
      //grd.addColorStop(0,"#0B0E24");
      //grd.addColorStop(1,"#2B388F");
      //ctx.fillStyle=grd;
      
      var texture = ctx.createPattern(textureImg,'repeat');
      ctx.fillStyle = texture;
      
      //ctx.fillStyle = '#202A6B'; //override gradient for performance
      //ctx.lineWidth = 5;
      
      //Set the shadow inside the ctx element
      //ctx.shadowBlur    = 10;
      //ctx.shadowColor   = 'rgba(0, 0, 0, 0.75)';
        
      drawSquare();  
    }
  }
  
  function stopAni(){
    clearInterval(animation);
  }
   
  //Draw the initial static water shape
  function drawSquare(){
    //ctx.strokeRect(-10,0,cWidth+10,waterLevel);
    ctx.fillRect(0,0,cWidth,waterLevel);
  }  
    
  function drawShape(){
     
    midPointY = Math.sin(counter*10*C)*((dur-counter)*ampMultiplier); //Calculates the y value of the midpoint

    if (counter <= dur){
      points[midPointIndex] = new Array(0,midPointY);
      
      //Check if counter has reached 90deg or 270deg, if so, time to spawn another point
      if (counter%9 == 0 && counter%2 == 1){
        points[point] = Array(-1,midPointY);
        point++;
      }
    }
    
    //ctx.clearRect(0,0,canvas.width,canvas.height); //Clear the canvas
    ctx.clearRect(0,0,cWidth,cHeight); //Clear the canvas

    //ctx.fillRect(0,0,canvas.width,canvas.height);
    
    

    
    
    //ctx.drawImage(texture,0,0);
    
    ctx.beginPath();
    ctx.moveTo(-10, waterLevel); //Start on the left side
    
    //Will contain the previous point to help each point set its bezier curve
    var lastPoint = new Array(0,waterLevel);
    
    //Loop through the array of points
    //Calculates the proper x and y values of each point
    //Does the actual drawing
    for (var pt = 0; pt < totalPoints; pt++){
      if (points[pt]){
        if (pt < midPointIndex){
          points[pt][0] = (points[pt][0]*spreadAccelleration)-spreadSpeed; //Move points away from the center point
          points[(midPointIndex-pt)+midPointIndex] = new Array(-points[pt][0],points[pt][1]); //Create an opposite point
        }
        
        var x = points[pt][0]+midPointX;
        var y = points[pt][1]+waterLevel;
        
        var bezHandle1 = ((x-lastPoint[0])/2)+lastPoint[0];
        var bezHandle2 = x-((x-lastPoint[0])/2);
        ctx.bezierCurveTo(bezHandle1, lastPoint[1], bezHandle2, y, x, y);
        
        lastPoint[0] = x;
        lastPoint[1] = y;
      }
    };

    

    
    
    
    
    //The Water Level has been rendered, draw the rest of the container
    ctx.lineTo(cWidth+10, waterLevel);
    ctx.lineTo(cWidth+10, 0);
    ctx.lineTo(-10,0);
    ctx.closePath();
    //ctx.stroke();
    //ctx.fillRect(
    
    ctx.fill();
    //ctx.clip();
    //ctx.restore();

    /*
    var totalImages = Math.ceil(cWidth/292);
    //console.log( totalImages );
    
    //ctx.drawImage(texture,0,0);
    
    
    for (var i=0 ; i < totalImages ; i++){
      ctx.drawImage(texture,(i*292),0);
    }
    */
    
    
    counter++;
    if ( counter == dur) animationActive = false;
    if (counter >= (dur*2)) stopAni();          

  } 
  
})(jQuery);;
// $Id: colorbox_default_style.js,v 1.3.2.1 2010/12/02 09:14:23 frjo Exp $
(function ($) {

Drupal.behaviors.initColorboxDefaultStyle = {
  attach: function (context, settings) {
  
  
    $(document).bind('cbox_complete', function () {
      // Only run if there is a title.
      if ($('#work-description:empty', context).length == false) {
        $('#cboxLoadedContent', context).bind('mouseover', function () {
          $('#work-description', context).fadeIn();
        });
        $('#cboxOverlay', context).bind('mouseover', function () {
          $('#work-description', context).fadeOut();
        });
      }
    });   
  
  
  
    /*
    $(document).bind('cbox_complete', function () {
      // Only run if there is a title.
      if ($('#cboxTitle:empty', context).length == false) {
        setTimeout(function () { $('#cboxTitle', context).slideUp() }, 1500);
        $('#cboxLoadedContent', context).bind('mouseover', function () {
          $('#cboxTitle', context).slideDown();
        });
        $('#cboxOverlay', context).bind('mouseover', function () {
          $('#cboxTitle', context).slideUp();
        });
      }
      else {
        $('#cboxTitle', context).hide();
      }
    });
    */
    
    
  }
};

})(jQuery);
;
/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);;
/**
 * jQuery.LocalScroll - Animated scrolling navigation, using anchors.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/11/2009
 * @author Ariel Flesler
 * @version 1.2.7
 **/
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);;

