/*
 * Javascript for acwrightdesign.com
 */

var acwrightdesign = {

  run : function(section){
    
    //Add enhancement css using javascript to pass the CSS validator
    this.addEnhancement();
    
    //Hide all banners then show the requested page banner
    this.showSection(section);

    //Initialize logo link
    this.initLogoLink();

    //Initialize menus
    this.initNavMenu(section);
    this.initPortfolioMenu();
    this.initPortfolioItemsMenus();
    
    //Initialize the slider. Has to happen before hiding banners!
    this.initSlider();

    //Initialize lightbox
    this.initLightbox();

    //Initialize form
    this.initForm();

    //Update Twitter, and Flickr data
    this.updateTwitter();
    this.updateFlickr();

  },

  showSection: function(section){
    
    if($('section#' + section).length > 0){
      $('section').hide();
      $('section#' + section).css('margin-bottom', '0px').fadeIn();
    } else {
      $('section').hide();
      $('section#home').fadeIn();
    }

  },

  addEnhancement: function(){
    
    $('head').append('<link href="/css/css3.acwrightdesign.css" ' +
             'rel="stylesheet" type="text/css" media="screen, projection" title="A.C. Wright Design">');
            
  },

  initSlider: function(){
    
    $('ol.slider_menu li a').click(function(){
      
      var parent = $(this).parent();
      
      $('div.slider').fadeOut(400, function(){
        
        $('div.slider ul li').hide();
        var item_index = $('ol.slider_menu li').index($(parent));
        var element = $('div.slider ul li').get(item_index);
        
        $(element).show();
        
        $('h3.slider_title').html($(element).find('img').attr('alt'));
        $('div.slider').fadeIn();
        
      });
      
      return false;
      
    });
    
  },

  initLightbox: function(){

    $("a.zoom").click(function(){
      
      var link = $(this);
      
      $('div.lightbox img').attr('src', $(link).attr('href')).load(function(){
        
        $('div.lightbox p').html($('img', link).attr('title'));
        
        var lightbox_width = $('div.lightbox').outerWidth();
        var lightbox_overlay_width = $('div.lightbox_overlay').outerWidth();
        
        $('div.lightbox').css('left', (lightbox_overlay_width / 2) - (lightbox_width / 2));
        
        $('div.lightbox_overlay').show();
        $('div.lightbox').fadeIn();
        
      });
      
      return false;
      
    });
    
    $('div.lightbox_overlay').click(function(){
      
      $('div.lightbox').fadeOut();
      $('div.lightbox_overlay').hide();
      
      return false;
      
    });
    
    $('div.lightbox a.close').click(function(){
      
      $('div.lightbox').fadeOut();
      $('div.lightbox_overlay').hide();
      
      return false;
      
    });

  },

  initForm: function(){

    //Initialize form validation
    $("#contact_form").validate();

    //Handle the submit process
    $("#contact_form").submit(function(){

      if($("#contact_form").valid()){
      
        $.post(
          '/contact',
          $("#contact_form").serialize(),
          function(data){

            $("#contact_form ul.feedback li:first-child").html(data.feedback);

          },
          'json'
        );

      }
      
      return false;

    });

  },

  initLogoLink: function(){

    $('h1.logo a').click(function(){

      acwrightdesign.showSection('home');
      acwrightdesign.animateNavMenu(0);

      return false;
      
    });
    
  },

  initNavMenu: function(section){

    var main_menu_index = 0;

    //Set the menu index to home
    if(section == 'home' || section == 'error'){
      main_menu_index = 0;
    } else if(section == 'portfolio'){
      main_menu_index = 1;
      acwrightdesign.animateNavMenu(main_menu_index);
    } else if(section == 'contact') {
      main_menu_index = 2;
      acwrightdesign.animateNavMenu(main_menu_index);
    } else {
      if($('section#' + section).length > 0){
        main_menu_index = 1;
        acwrightdesign.animateNavMenu(main_menu_index);
      }
    }

    $('ul.menu').css({
      backgroundPosition: '20px 0px'
    });

    //Initialize the navigation menu events
    $('ul.menu li a').mouseover(function(){

      acwrightdesign.animateNavMenu($('ul.menu li').index($(this).parent()));

      $(this).mouseout(function(){

        acwrightdesign.animateNavMenu(main_menu_index);

      });

    }).click(function(){

      acwrightdesign.showSection($(this).attr('class'));

      main_menu_index = $('ul.menu li').index($(this).parent());

      return false;

    });

  },

  animateNavMenu: function(position){

    var animate_position = (position * 160) + 20;

    $('ul.menu').stop().animate(
      {backgroundPosition: animate_position + "px 0px"},
      {duration: 500});

  },

  initPortfolioMenu: function(){

    $('div.slider ul li a').click(function(){

      acwrightdesign.showSection($(this).attr('class'));

      return false;

    });
    $('a.portfolio_back').click(function(){

      acwrightdesign.showSection('portfolio');

      return false;

    });

  },

  initPortfolioItemsMenus: function(){

    var portfolio_menu_indexes = {};

    $('ul.portfolio_menu').css({
      backgroundPositionX: '0px',
      backgroundPositionY: '0px'
    });

    //Initialize the portfolio items menus
    $('section.portfolio_item div.right').each(function(index){

      if($('ul.portfolio_images li',this).size() < 5){

        $('ul.portfolio_menu',this).hide();

      } else {

        portfolio_menu_indexes[index] = 0;

        $('ul.portfolio_menu li a',this).mouseover(function(){

          var item_index = $('ul.portfolio_menu li').index($(this).parent()) - (index * 2);

          acwrightdesign.animatePortfolioItemsMenu($(this).parent().parent(),item_index * 154);

          $(this).mouseout(function(){

            acwrightdesign.animatePortfolioItemsMenu($(this).parent().parent(),portfolio_menu_indexes[index] * 154);

          });

        }).click(function(){

          portfolio_menu_indexes[index] = $('ul.portfolio_menu li').index($(this).parent()) - (index * 2);

          $(this).parentsUntil('section.portfolio_item div.right')
               .parent().find('ul.portfolio_images li')
               .hide()
               .each(function(image_index){
                if(portfolio_menu_indexes[index] == 0 && image_index < 4){
                  $(this).show();
                  $(this).css('display','inline');
                } else if(portfolio_menu_indexes[index] == 1 && image_index >= 4){
                  $(this).show();
                  $(this).css('display','inline');
                }
          });

          return false;

        });

      }

    });

  },

  animatePortfolioItemsMenu: function(menu,position){

    $(menu).stop()
         .animate(
          {
            backgroundPosition: "0 " + position + "px"
          },
          {duration: 500});
  },

  updateTwitter: function(){
    
    $.getJSON('http://api.twitter.com/status/user_timeline/acwrightdesign.json?count=1&callback=?', function(data){
      
      $('p.twitter_data').hide();
      $('p.twitter_date').hide();
      
      $.each(data, function(index, tweet){
        var date = new Date(tweet.created_at);
        $('p.twitter_data').html(tweet.text);
        $('p.twitter_date').html(date.toLocaleString());
      });
      
      $('p.twitter_data').removeClass('loader');
      $('p.twitter_data').delay(200).fadeIn();
      $('p.twitter_date').delay(400).fadeIn();
      
    });
    
  },
  
  updateFlickr: function(){
    
    var api_key = '963dfc537f3543fa8af5b0f2e6f1a0f8';
    var user_id = '30753095@N00';
    var per_page = '4';
    var photo_urls = new Array();
    
    $.getJSON('http://api.flickr.com/services/rest/?format=json&method='+
      'flickr.photos.search&api_key=' + api_key + '&user_id=' + user_id + 
      '&per_page=' + per_page + '&jsoncallback=?', function(data){
        
        $.each(data.photos.photo, function(index, photos){
          photo_urls.push('http://farm' + photos.farm + '.static.flickr.com/' + photos.server + '/' + photos.id + '_' + photos.secret + '_s.jpg');
        });
        
        $('ul.flickr_data li a img').each(function(index){
          $(this).attr('src', photo_urls[index]);
        });
        
        $('ul.flickr_data').removeClass('loader');
        $('ul.flickr_data li').delay(200).fadeIn();
        
    });

  }
  
};
