(function($) {
  
    $.fn.makegrid = function(options, defaults) {
        //  Options
        var defaults = {
              id: 'poop',
              columns : 30,
              gutter : 10,
              baseline : 10,
              offset : 10

            },
            options = $.extend({}, defaults, options),
            win = {};
            win.e = $(window);
            win.x = win.e.width();
            win.y = win.e.height();
        function grid(winx, winy) {
          var canvas = document.getElementById(options.id);
          var context = canvas.getContext("2d");

          function cols(){
            for (var x = 0.5; x < winx; x += (options.columns + options.gutter)) {
              context.moveTo(x, 0);
              context.lineTo(x, winy);

            }
            for (var x = 0.5; x < winx; x += (options.columns + options.gutter)) {
              context.moveTo(x + options.gutter, 0);
              context.lineTo(x + options.gutter, winy);
            }
            
            context.stroke();
          }
          function base(){
            for (var y = 0.5; y < winy; y += options.baseline) {
              context.moveTo(0, y);
              context.lineTo(winx, y);
            }
            context.strokeStyle = "#666";
            context.stroke();
          }
          cols();
          base();
        }

        $(this).append('<canvas id="'+options.id+'" width="'+win.x+'" height="'+win.y+'"></canvas>');
        $('canvas#'+options.id).css({
          'position' : 'absolute',
          'marginTop' : -1,
          'top' : 0,
          'left' : options.offset,
          'zIndex' : 1000
        });
        grid(win.x, win.y);

        $(window).bind('resize', function(){
          win.x = win.e.width();
          win.y = win.e.height();
          $('canvas#'+options.id).attr('width', win.x).attr('height', win.y);
          grid(win.x, win.y);
        }); 

        return this;

    };

    $.fn.slideShow = function(options, defaults) {
        //  Options
        var defaults = {
              container : '.slideContainer',
              currentPageClass : 'current_page',
              draggable : false,
              mask : false,
              pager : false,
              perPage : 1,
              offset : 0,
              themecolor : '#333333',
              viewport : '#page .contentWrapper', 
              wrapper : '#slideInnerWrapper'
          
            },
            options = $.extend({}, defaults, options),
            win = {},
            viewport = {},
            container = {},
            slides = {};
        
        //  Window
        win.e = window;
        win.x = $(win.e).width();
        
        //  view port
        viewport.e = options.viewport;
        viewport.x = $(viewport.e).outerWidth();
        
        //  Container
        container.e = options.container;
        container.x = $(container.e).width();
        container.y = $(container.e).outerHeight();
        container.position = $(container.e).position();
       
        //  Slides
        slides.e =  $(this).find('>*'); 
        slides.len =  slides.e.length;
        slides.x =  ((slides.e.width() + 1) * slides.len) + (slides.e.width() + 1);
        slides.simulacrum = $(this).find('>*:last').clone().addClass('clone');     
        
        // Wrap Slides
        function wrapSlides(elem) { 
          var wrapperID = options.wrapper.substring(1)
          
          $(elem).prepend(slides.simulacrum).wrapInner('<div id="'+ wrapperID +'">').css({
            'marginLeft' : -slides.x + viewport.x,
            'width' : (slides.x * 2) - viewport.x - slides.e.width() + options.offset  - 1
          });
          
          $(options.wrapper).css({
            'marginLeft' : slides.x - viewport.x - slides.e.width() + options.offset - 1,
            'width' : slides.x
          });
        
        }
        
        // Size Mask
        function sizeMask() {
          var winX = $(win.e).width(); 
          
          $(container.e)
          .css({'overflow' : 'hidden', 'width' : winX})
            .find('.mask')
            .css({'height' : container.y, 'opacity' : 0.6, 'width' : winX - viewport.x});

          if (winX - viewport.x <= 0) {
            
            $(container.e).find('.mask').hide();
          
          } else {
            
            $(container.e).find('.mask').show();
          
          }
        }
        
        // Masks Slides
        function maskSlides() {
          $(container.e).append('<div class="mask" />');
          sizeMask();
        }
        
        // Build Pager
        function buildPager() {
          var pages = Math.ceil(slides.len / options.perPage);
          var i = 0;
          
          $(container.e).next().find('.contentWrapper').prepend('<div class="slideControls"><ol></ol></div>');
          
          for (i = 1; i <= pages; i++) {
            $('.slideControls ol').append('<li><a href="#slidePosition-'+ i +'">'+ i +'</a></li>');
            slides.e.eq((i * options.perPage) - options.perPage).attr('id', 'slidePosition-'+i);  
          }
          
          $('.slideControls ol li:first a').addClass(options.currentPageClass).css('backgroundColor', options.themecolor);
        
        }
        
        // Move Slides
        function moveSlides(target) {
          
          var offset = $(target).offset(),
              wrapper = {},
              end = {},
              max =  slides.x - viewport.x - slides.e.width() + options.offset - 1;
          
          wrapper.e = options.wrapper; 
          wrapper.x = $(wrapper.e).width(); 
          wrapper.position = $(wrapper.e).position('left');

          if (offset.left === options.offset) { // Already on Edge
            
            end.left = wrapper.position.left;
          
          } else if (wrapper.position.left - offset.left <= -max) { // Last Page
            
            end.left = -max;
          
          } else if (wrapper.position.left - offset.left == -options.offset) { // First Page
            
            end.left = 0;
          
          } else { 
            
            end.left = (wrapper.position.left - offset.left) + options.offset;
          
          }

          $('#slideInnerWrapper').animate({
              'left': end.left
          }, 600);  
          
          return false;
        }

        // Switch Class
        function switchClass(elem) {
          $(elem)
          .addClass(options.currentPageClass)
          .css('backgroundColor', options.themecolor)
            .parents('.slideControls')
              .find('.'+options.currentPageClass)
              .not(elem)
              .removeClass(options.currentPageClass)
              .css('backgroundColor', '#CCCCCC');
        }

        // Click Slide
        function clickSlide(elem) {
          
          var target = $(elem),
              id = target.attr('id');
          
          if($(elem).hasClass('clone')) {
            
            target = $(elem).siblings(':last');
          
          } else {
            
            target = $(elem);
          
          }


          if (!id) {
            
            id = target.prev().attr('id');
          
          } else if (id === undefined) {
            
            id = $(elem).siblings(':last').attr('id');
          
          } else {
            
            id = target.attr('id'); 
          
          }
          switchClass('.slideControls a[href=#'+id+']');
          moveSlides(target);
        }

        $(this).each(function() { // Fires On Doc Ready
            wrapSlides(this);
            
            if (options.mask === true) {
              
              maskSlides();
            
            }
            
             // Pager
            if (options.pager === true) {
              
              buildPager();
              
              $('.slideControls a').click(function(){
                
                target = $(this).attr('href');
               
                moveSlides(target);
               
                switchClass(this);
                
                return false;
              });

            }
            
            // Slide Drag
            if (options.draggable === true) {
              $(options.wrapper).draggable({
                  axis : 'x',
                  containment: 'parent',
                  cursor: 'move',
                  distance : 4,
                  handle : '>*',
                  start : function(){
                    
                    $('.slide').unbind('click');
                  
                  },
                  stop : function(){
                    
                    setTimeout(function(){
                      $('.slide').bind('click', function(){
                        clickSlide(this);
                      });
                    }, 50);
                    
                  }
              });
              $(options.wrapper).find('>*').mouseup(function(){
                var id = $(this).attr('id');
                if (!id) { // Highlight Appropriate Page
                  
                  id = $(this).prev().attr('id');
                
                } else if (id === undefined) {
                  
                  id = $(this).siblings(':last').attr('id');
                
                } else {
                  
                  id = $(this).attr('id'); 
                
                }
                switchClass('.slideControls a[href=#'+id+']');
              });
            }
            
            // Slide Click
            $('.slide').click(function(){
              clickSlide(this);
            });


        });

        $(window).bind('resize', sizeMask); 

        return this;

    };

})(jQuery);


// Init Slide Show
function initSlide(e, duration, color) {
  var opts = {};
  opts.container = '.projectMedia';
  opts.draggable = true;
  opts.mask = true; 
  opts.offset = 41;
  opts.pager = true;
  opts.perPage = 2;
  opts.themecolor = color;
  opts.viewport = '#page .contentWrapper';
  
  $(e)
  .slideShow(opts)
    .find('img')
    .hide();

  $('.slide img').load(function(){
  setTimeout(function(){
    $('.slides img') // regrab img to account for clone
    .fadeIn(duration)
      .parents('.slide')
      .removeClass('loading');
  }, (duration * 2));
  });

}

// Stack Project 
function stackProject() {
  var media = {},
      info = {};
  
  media.e = '.projectMedia';
  media.offset = $(media.e).offset();
  media.x = $(media.e).height(); 
   
  info.e = '.projectInfo';
  info.offset = $(info.e).offset(); 
   
   $(window).bind('scroll', function(){
     var y = $(this).scrollTop(),
        slideShown = (1 - (y / info.offset.top)),
        infoShown = (info.offset.top / (y / 2)) - 1;
     
     if ( y <= media.offset.top) { 
        
        $(media.e).css({
           'marginTop' : Math.round(media.offset.top),
           'position' : 'absolute'
         })
         .find('img')
         .css({
            'opacity' : 1
          });
      
      } else {
        
        $(media.e).css({
           'marginTop' : 0,
           'position' : 'fixed',
           'top' : 0   
         })
          .find('img')
          .css({
            'opacity' : Math.round(slideShown * 100) / 100
          });
          // console.log(Math.round(slideShown * 100) / 100)
      
      }
      if ($('.projectList').is(':animated')) { 
        
        return;
      
      } else {
        
        if ( y >= Math.round(info.offset.top) + 1) { // Stacks List
          
          $(info.e).css({
            'marginTop' : 0,
            'position' : 'fixed',
            'top' : 0
          })
            .find('.contentWrapper >*')
            .css({
              'opacity' : Math.round(infoShown * 100) / 100
            });
        
        } else {
          
          $(info.e).css({
             'marginTop' : media.x,
             'position' : 'absolute',
             'top' : media.offset.top
           })
           .find('.contentWrapper >*')
           .css({
             'opacity' : 1
           });
        
        }
      
      }
   });
}

// Set Title
function setTitle(title) {
  document.title = 'NoFavorite'+title;
}

// Open Project
function openProject(data, duration, title) {
  
  var $wrapper = $('#slideInnerWrapper'),
      $info = $('.projectInfo'),
      $media = $('.projectMedia'),
      $list = $('.projectList');

  
  if(data.media) {
    var color = '';
    if(data.color) {
      color = data.color;
    } else {
      color = '#333333';
    }
    initSlide('.slides', duration, color);
    $('.close').css('background-color', color);
  }
  
  setTitle(' | '+title);

  $.scrollTo(230, duration, {
    onAfter : stackProject  
  });

  $('#work').addClass('projectActive loading');

  $info.animate({
    'marginTop' : 340
  }, duration)
    .find('.contentWrapper >*')
    .css({
      'opacity' : 1
    });

  $media.animate({
   'top' : 0
  }, duration, 'easeInOutCirc');

  $list.animate({
   'marginTop' : 910
  }, duration);

  setTimeout(function(){
    $('#work').removeClass('loading');
    $('.masker').remove();
  }, duration);

  

  return false;
}

// Close Project
function closeProject(duration, title, reset) {
  // var winTop = $(window).scrollTop();
  
  setTitle(title);
  
  $.scrollTo(230, duration);
 
  
  $('.projectList, .projectInfo').animate({
    'marginTop' : 0
  }, duration);
  
  $('.projectMedia').animate({
    'position' : 'fixed',
    'top' : 0   
  }, duration);
  
  setTimeout(function(){
    
    $('#work').removeClass('projectActive');
    
    $('.mask, .slideControls, .services ul, .projectLink').remove();
    
    $('.slides').empty();
    
    if($('.console').length) {
      $('.console').remove();
    }
    
    if(reset) {
      setTitle(' ');
    }
    
  }, duration);
  
}

// Update Project Content
function updateProject(data, duration){
  var $info = $('.projectInfo'),
      media = data.media,
      title = data.title,
      text = data.text,
      quote = data.love,
      services = data.services;
  
  $('.projects').append('<div class="masker" />');
  function build() {
    var i = 0;
    if(media){
      
      $('.projectMedia').removeClass('error').find('.console').remove();
      for (i = 0; i <= media.length - 1; i++) { // Add Slides
        $('.slides').removeClass('error').append('<div class="slide loading"><img src="'+media[i]+'" alt=" " height="340" width="450" /></div>');
      }
    
    } else {
      
      $('.projectMedia').addClass('error');
      $.ajax({
        url: '/components/slide_error.html?id='+data.id+'&name='+data.permalink,
        success: function(data) {
          $('.projectMedia').prepend(data);
        }
      });
    
    }
    
    
    $info
      .find('h2').text(title)
    .end()
      .find('.desc').html(text);
    
    if (quote) { // Mad Love Yall
      
      $info
        .find('.madlove')
        .show()
          .find('blockquote p')
          .html(quote.text)
        .end()
          .find('cite')
          .text(quote.author)
          .append('<span>'+ quote.company + '</span>')
        .end()
      .end()
        .find('.desc')
        .removeClass('nolove');
    
    } else {
      
      $info
        .find('.madlove')
        .hide()
      .end()
        .find('.desc')
        .addClass('nolove');
    
    }
    
    $('.services').append('<ul>').append('<a href="'+ data.link +'" class="projectLink" rel="external">Visit Project</a>');
    if(services) {
      
      for (i = 0; i <= services.length - 1; i++) { // Add Services
        $('.services')
          .find('ul, h3')
          .show()
        .end()
          .find('ul')
          .append('<li>'+ services[i] +'</li>');
      }
    
    } else {
    
      $('.services')
        .find('ul, h3')
        .hide();
    
    }
    
    $('.desc')
    .append('<p><a class="close" href="#"></a></p>')
      .find('p:last')
      .css('marginBottom', 0);
  
    openProject(data, duration, title); 
  
  }
  
  if ($('#work').hasClass('projectActive')) { // A Project is Currently Open
    
    closeProject(0, ' | Working ...');
    setTimeout(function(){
      build();
    }, duration);
  
  } else {
  
    build();
  
  }

}
// Update Project List Content
function updateProjects(data, action, duration) {
  var $content = $('.projects ul, .projectList .info'),
      $info = $('.projectList .info'),
      $list = $('.projects ul'),
      type = data.type,
      title = data.title,
      text = data.text,
      projects = data.projects,
      perPage = parseInt(data.per_page);

  
  
  
  if (action === 'section') { // Section
    
    $('.projectListNav').remove();
    
    $content
    .fadeOut(duration)
      .parents('.projectList')
      .addClass('loading');
    
  } else if (action === 'list') { // List
    
    $list
    .fadeOut(duration)
      .parents('.projects')
      .addClass('loading');
  }
  
  function build() {
    
    if (action === 'section') { //build out the site section
      
      $content.empty();
      $info.hide().append('<h3>'+title+'</h3>'+text);
      
      if (type == 'archive') {
        
        $info.append('<p><a href="#" class="recent">'+ data.link_text +'</a></p>');
        $list.addClass('minimize');
      
      } else {
        
        $info.append('<p><a href="#" class="archive">'+ data.link_text +'</a></p>');
        $list.removeClass('minimize');
      
      }
      
      if(data.total_projects > perPage) { // Fetch Pager if Needed
        
        $.ajax({
          url: '/components/project_list_nav.html',
          success: function(data) {
            $('.projectList .info').append(data);
            $('.projectListNav a').bind('click', function(){ // Rebind Clizniks
              pageProjects(this);
              return false;
            });
          }
        });
      
      }
    
    } else if (action === 'list') {
      
      $list.empty();
    
    }

    var i = 0;
    for (i = 0; i <= projects.length - 1; i++) { // Add Projects
      var html = '';
      if (type == 'archive') {
        if (i >= 12) { // Add Bottom Class
          
          html += '<li class="bottom">';
        
        } else {
          
          html += '<li>';
        
        }
      } else {
        if (i >= 6) { // Add Bottom Class
          
          html += '<li class="bottom">';
        
        } else {
          
          html += '<li>';
        }
      }
      
      if (type === 'archive') {
        html += '<a class="thumb archive" href="'+projects[i].link+'" rel="external">';
        html += '<img src="'+projects[i].thumb+'" alt="" height="66" width="191" />';
      
      } else {
        html += '<a class="thumb" href="'+projects[i].url+'">';
        html += '<img src="'+projects[i].thumb+'" alt="" height="100" width="285" />';
      
      }
      
      html += '</a>';
      html += '<h4><a href="'+projects[i].url+'" title="'+projects[i].title+'">'+projects[i].title+'</a></h4>';
      html += '</li>';
      $list.append(html);
    
    }
    
    // Add Row End Classes
    if (type == 'archive') { 
      
      $list
        .find('li:nth-child(3n)')
        .addClass('end');
    
    } else {
      
      $list
        .find('li:nth-child(2n)')
        .addClass('end');
    
    }
    $list.find('img').bind('load', function(){ // Wait for img assets to load
      if (action === 'section') { 
        
        $content
        .fadeIn(duration)
          .parents('.projectList')
          .removeClass('loading');
          
      } else if (action === 'list') {
       
        $list
        .fadeIn(duration)
          .parents('.projects')
          .removeClass('loading');
      }
      
    });
  }
  
  setTimeout(function(){

    build();
    
  }, duration);
  
}

// Page Projects
function pageProjects(e) {
  var $parent = $(e).parents('.projectListNav'),
      listType = '',
      url = '/includes/php/projects.php',
      page = $(e).attr('rel');
  
  
  $(e).unbind('click').bind('click', function(){ return false;});
  
  if($('.projects ul').hasClass('minimize')) {
  
    listType = 'archive';
  
  } else {
  
    listType = 'recent';
  
  }
  
  $.getJSON(url+'?type=list&listtype='+listType+'&page='+page, function(data){
    var $next = $('.projectListNav .next'),
        next = '',
        $prev = $('.projectListNav .prev'),
        prev = '';
    
    
    if(data.total_pages == page) {

      next = '1';

    } else {
      
      next = data.page;

    }
    
    if (page <= 1) {
      
      prev = data.total_pages;

    } else {
      
      prev = data.page - 2;
/*
      
      if(prev <= 1) {
        prev = '1';
      }
*/

    }
    $next.show().find('a').attr('rel', next);
    $prev.show().find('a').attr('rel', prev);

    setTimeout(function(){ // rebind but wait till fade
      $(e).bind('click', function(){
        pageProjects(this);
        return false;
      }); 
    }, 100);
    
    
    if(data.projects) {
      
      updateProjects(data, 'list', 100);
    
    }
    
  
  });
}

// Map
function nfMap(e, url, list, zoom) {
    var map;
    // Map
    function buildMap(data) {
      var style = [{
            // Reset
            featureType: "all",
            elementType: "all",
            stylers: [{
              hue: "#282828"
            },{
              lightness: -20
            },{
              saturation: -100
            }]
          
          },
          {
            // Water
            featureType: "water",
            elementType: "all",
            stylers: [{
              hue: "#FFFFFF"
            },{
              lightness: -40
            },{
              saturation: -100
            }]
          
          },
          {
            // Landscape Labels
            featureType: "landscape",
            elementType: "labels",
            stylers: [{
              visibility: "off"
            }]
          
          },{
            // Landscape Global
            featureType: "landscape",
            elementType: "all",
            stylers: [{
              hue: "#cccccc"
            },{
              lightness: 100
            },{
              saturation: 0
            }]
          
          }],
          keystone = data[0],
          latlng = new google.maps.LatLng(keystone.lat, keystone.lng),
          opts = {
            zoom: zoom,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.TERRAIN,
            scaleControl: false,
            scrollwheel: false
          },
          styledMapOptions = {
              map: map
          },
          nofavorite =  new google.maps.StyledMapType(style, styledMapOptions);
      
      map =  new google.maps.Map(document.getElementById(e), opts);
      
      map.mapTypes.set('nofavorite', nofavorite);
      
      map.setMapTypeId('nofavorite');
      
      addMarkers(data); 
    }
    // Map Markers

    function addMarkers(data) {
      var i = 0;
      for (i = 0; i <= data.length - 1; i++) { // Add Markers
        var latlng = new google.maps.LatLng(data[i].lat, data[i].lng),
            size = new google.maps.Size(100, 100),
            point = new google.maps.Point(0, 0);

        if (data[i].keystone){
          
          var zIndex = 100;
        
        } else {
          
          var zIndex = 50;
        
        }
        
        var icon = new google.maps.MarkerImage(data[i].icon, size, point),
            title = data[i].title,
            marker = new google.maps.Marker({
              position: latlng,
              map: map,
              icon: icon,
              title: title,
              zIndex: zIndex,
              navigationControl: false
            }),
            click = new google.maps.event.addListener(marker, "click", function() {
              panMap(list+' a:eq('+(this.__gm_id - 1)+')', this.position.b, this.position.c);
              if ($(list).hasClass('open')) {
                return;
              } else {
                toggleList(list, 57, 0);
              }
            });
      }
      
      buildList(data, list);
    
    }
    
    // Toggle List
    function toggleList(list, start, duration){
      var len = $(list).find('li').length,
          unitY = $(list).find('li').outerHeight(),
          end = ((unitY + 1) * len) + start;
      
      if ($(list).hasClass('open')) {
        $(list).animate({
          'height' : start
        }, duration).removeClass('open');
      } else {
        $(list).animate({
          'height' : end
        }, duration).addClass('open');
      }
    
    }
    
    // Map List
    function buildList(data, list){
      var startY = $(list).find('h3').outerHeight();
      
      $(list).append('<ul>').css({
        'height' : startY
      }).find('h3').click(function(){
        toggleList(list, startY, 500);
        return false;
      });
      
      addLocations(data, list);
      
    }
    
    // Add Locations
    function addLocations(data, list) {
      var i = 0;
      for (i = 0; i <= data.length - 1; i++) {
        var lat = data[i].lat,
            lng = data[i].lng;
        
        $(list)
          .find('ul')
          .append('<li><a href="#" rel="'+lat+' '+lng+'">'+data[i].title+'</a></li>')
            .find('li:first a')
            .addClass('current')
          .end()
            .find('a:eq('+i+')')
            .bind('click', function(){
              
              var lat = $(this).attr('rel').split(' ').slice(0, -1),
                  lng = $(this).attr('rel').split(' ').slice(1);
              
              panMap(this, lat, lng);
              
              return false;
            });
      }
    }
    
    // Pan Map
    function panMap(e, lat, lng){
      $(e)
      .addClass('current')
        .parents('li')
          .siblings()
            .find('a.current')
            .removeClass('current');
      map.panTo(new google.maps.LatLng(lat, lng), zoom);
    }
    
    $.getJSON(url, function(data){
      buildMap(data);
    });
}
// Open Section
function openSection(target, duration){
  if ($(target).is(':visible')) {
    if(target == '#contactForm') { // Refetch the form if the whole shit is missing
      var $form = $('.form');
      if ($form.hasClass('success')) {
        
        $form.removeClass('success').empty();
        $.ajax({
          url: '/components/contactForm.html',
          success: function(data) {
            $form.append(data).find('form').validate({ submitHandler : contactSubmit });
            $.scrollTo(target, duration);
          }
        });
        
      } else {
        
        $.scrollTo(target, duration);
        
      }
      
    } else {
      
      if($(target).hasClass('projectActive')) { //if project is open on work click
        closeProject(duration, ' | Work');
      } else {
        $.scrollTo(target, duration);
      }
      
    }

  } else {
    
    $('.projects').append('<div class="masker" />');
    $(target).slideDown(duration);
    setTimeout(function(){
      $.scrollTo(target, duration);
      setTimeout(function(){
        $('.masker').remove();
      }, duration);
    }, duration);
    
  }
}

// Contact Form
function contactSubmit(form){
    var data = $(form).serialize(),
        url = $(form).attr('action');
    
    $(form).css('opacity', 0.5).parents('.form').addClass('working');
    
    setTitle(' | Working ...');
    
    $.ajax({
      type: "POST",
      url: url ,
      data: data,
      dataType: 'html',
      success: function(data) {
        
        $(form).remove();
        
        $('.form').addClass('success').removeClass('working').append(data);
      
        setTitle(' | Thanks!');
      
      }
    });
    return false;
}

// Document
////////////////////////////////////////////// 
$(document).ready(function(){
  
  // Rel External in New Window
  $('a[rel*=external]').live('click', function(){
      window.open(this.href);
      return false;
  });
  
  // Project Nav Hovers

/*
  $('.projects').hover(function(){
    $(this).find('li:not(.hover)').stop().fadeTo(100, 0.5).hover(function(){
      $(this).addClass('hover').stop().fadeTo(100, 1);
    }, function(){
      $(this).removeClass('hover').stop().fadeTo(100, 0.5);
    });
  }, function(){
    $(this).find('li').stop().fadeTo(100, 1);
  });
*/

  
  // Loads Content On Refresh and Page Request
  $.address.init(function(event){
    var section = event.value.split('/').slice(0)[1];
        project = event.value.split('/').slice(1)[1];
    if (section || project) {
      //openSection('#'+section, 0);
      if (project) {
          // openSection('#'+section, 0);
          setTimeout(function(){
            var url = '/includes/php/projects.php?id='+project+'&type=single';
            $.getJSON(url, function(data){
              updateProject(data, 500);
            });
          }, 500);
          
      } else {
        
        openSection('#'+section, 500);
      
      }
    
    }
  });
  
  // Open Sections
  $('#primaryNavigation a, #shoutout a, .learnMore').address(function() { // Jquery Address
    var target = $(this).attr('href'),
        title = $(this).attr('title'),
        address = target.replace(/^#/, '');
    openSection(target, 500);
    setTitle(' | '+title); 
    return address;
  });
  
  // Load Project Template
  $.ajax({
    url: '/components/project-template.html',
    success: function(data) {
      $('#work').prepend(data);
      // Load Project
      $('.projects li a:not(.archive)').address(function() { // Jquery Address
        var url = $(this).attr('href'),
            address = 'work/'+url.split('?').slice(1)[0].split('&').slice(0, 1)[0].split('=').slice(1)[0];
        
        $.getJSON(url, function(data){
          updateProject(data, 500);
        }); 
        return address;
      
      });
    }
  });
  
  // Close Project
  $('a.close').live('click', function() {
    closeProject(500, ' | Working...', 1);
    return false;
  });
  
  // Load Project List
  $('.archive, .recent').live('click', function(){
    var listType = $(this).attr('class'),
        url = '/includes/php/projects.php';
    $.getJSON(url+'?type=list&listtype='+listType+'&page=1', function(data){
      updateProjects(data, 'section', 500);
    });
    return false;
  });
 
  // Page Project List
  if($('.projectListNav a').length) {// Bind Click if already in DOM
    $('.projectListNav a').click(function(){

      pageProjects(this);

      return false;
    });
  }
  
  
  //  Validate Contact Form
  $('#contactForm form').validate({ submitHandler : contactSubmit }); 
  
   // $('body').makegrid();

  // Keep The Stylez Valid
  $('head').append('<link href="/includes/css/enrichment.css" rel="stylesheet" type="text/css" media="screen" />');


});

// Window
//////////////////////////////////////////////
$(window).bind('load', function(){
  $('#header,#page,#footer').css('visibility', 'visible');
  $('body').removeClass('loading');
  // Init Map
  var map = new nfMap('stage', '/includes/php/locations.php', '#locationList', 16);
});
