(function(){
  
  // define global previousPos for use with scroll methods
  var previousPos;
  
  // setup flash movies
  setup_swfs: function setup_swfs()
  {
    swfobject.embedSWF("/swf/whoWeAre-spacer.swf", "whoWeAreSpacerFlash", "306", "444", "8.0.0", "", {imagepath:"/images/people/face-swf.jpg"}, {}, {});
    swfobject.embedSWF("/swf/news-spacer.swf", "newsSpacerFlash", "234", "444", "8.0.0", "");
    swfobject.embedSWF("/swf/contact-spacer.swf", "contactSpacerFlash", "450", "444", "8.0.0", "");
  };
  
  // setting up the navigation to scroll and highlight
  setup_navigation: function setup_navigation()
  {
    $('#menu li a').click(function(){
      $.scrollTo('#' + this.id + 'Pane', 900, {onAfter:track_page($(this).attr('href'))});
      return false;
     });

    $(window).scroll(function()
    {
      var scrollPos = parseInt( $(window).scrollLeft() );
      var firstArea = $("#whoWeArePane").width() + $("#whoWeAreSpacer").width() - 1;
      var secondArea = firstArea + $("#theWorkPane").width() + $("#theWorkSpacer").width() - 1;
      var thirdArea = secondArea + $("#sitesPane").width() - 1;
      var fourthArea = thirdArea + $("#peoplePane").width() + $("#newsSpacer").width() - 1;
      var fifthArea = fourthArea + $("#newsPane").width() + $("#contactSpacer").width() - 1;
      var sixthArea = fifthArea + $("#contactPane").width() + $("#worldwideSpacer").width() - 1;
      var seventhArea = sixthArea + $("#worldwidePane").width();
      
      scrollDir = set_direction(scrollPos);
      
      if (scrollDir == "right") {
        $('#menu li a').removeClass('active');
        if (scrollPos < firstArea) {
          $("#whoWeAre").addClass('active');
        }
        if (scrollPos > firstArea && scrollPos < secondArea) {
          $("#theWork").addClass('active');
        }
        if (scrollPos > secondArea && scrollPos < thirdArea) {
          $("#sites").addClass('active');
        }
        if (scrollPos > thirdArea && scrollPos < fourthArea) {
          $("#people").addClass('active');
        }
        if (scrollPos > fourthArea && scrollPos < fifthArea) {
          $("#news").addClass('active');
        }
        if (scrollPos > fifthArea && scrollPos < sixthArea) {
          $("#contact").addClass('active');
        }
        if (scrollPos > sixthArea) {
          $("#worldwide").addClass('active');
        }
      }
  
      if (scrollDir == "left") {
        if (scrollPos <= 1) {
          $('#menu li a').removeClass('active');
          $("#whoWeAre").addClass('active');
        }
        if (scrollPos >= firstArea && scrollPos <= firstArea + 10) {
          $('#menu li a').removeClass('active');
          $("#theWork").addClass('active');
        }
        if (scrollPos >= secondArea && scrollPos <= secondArea + 10) {
          $('#menu li a').removeClass('active');
          $("#sites").addClass('active');
        }
        if (scrollPos >= thirdArea && scrollPos <= thirdArea + 10) {
          $('#menu li a').removeClass('active');
          $("#people").addClass('active');
        }
        if (scrollPos >= fourthArea && scrollPos <= fourthArea + 10) {
          $('#menu li a').removeClass('active');
          $("#news").addClass('active');
        }
        if (scrollPos >= fifthArea && scrollPos <= fifthArea + 10) {
          $('#menu li a').removeClass('active');
          $("#contact").addClass('active');
        }
        if (scrollPos >= sixthArea) {
          $('#menu li a').removeClass('active');
          $("#worldwide").addClass('active');
        }
      }
  
    });
  };

  // determine the direction of the scroll
  set_direction: function set_direction(currentPos)
  {
    if (previousPos == undefined) {
      previousPos = 0;
    }
    if (currentPos > previousPos) {
      previousPos = currentPos;
      return "right";
    }
    if (currentPos < previousPos) {
      previousPos = currentPos;
      return "left";
    }
  };

  // define logo click action
  setup_logo_click: function setup_logo_click()
  {
    $("#logoLink").click(function()
    {
      $("#whoWeAre").click();
    });
  };
  
  // define action for when arrow is clicked
  setup_arrow_function: function setup_arrow_function()
  {
    $("#footerScrollRight").click(function()
    {
      var nextPane = $("#menu li .active").parent().next().children(":first");
      if (nextPane != undefined) nextPane.click();
    });
    $("#footerScrollRight").attr("title","Next Page");
  };
  
  // track the "pages"
  track_page: function track_page(page_href)
  {
    pageTracker._trackPageview('/' + page_href);
  };
  
  // setting up the menus to display portfolio work
  setup_work_menus: function setup_work_menus()
  {
    // THE WORK
    $('#theWorkCreativeFrame div:first').show();
    $('#theWorkCreativeFrame div div:first').show();

    $('#theWorkMenu li').children().click(function(){
      $('#theWorkCreativeFrame > div').hide();
      $('#theWorkCreativeFrame > div.' + this.className).show();
      $('#theWorkMenu > li').removeClass('active');
      $(this).closest('li').addClass('active');

      redraw_submenu();
      
      $('#theWorkSubMenu li:first a').click();
    });

    $("#theWorkSubMenu li a").live("click", function()
    {
      if ($(this).parent().attr('class') != 'active') {
        $('#theWorkSubMenu > li').removeClass('active');
        $(this).closest('li').addClass('active');
        // show the corresponding content
        var category = $("#theWorkMenu li.active a").attr("class");
        var id = $(this).text();
        $('.' + category).children().hide();
        $('.' + category + "-" + id).show();
      }
    });
    
    redraw_submenu();
    $("#theWorkSubMenu li:first").addClass('active');
  };
  
  redraw_submenu: function redraw_submenu()
  {
    $("#theWorkSubMenu li").remove();
    var category = $("#theWorkMenu li.active a").attr("class");
    var count = 1;
    $('.' + category).children().each(function(){
      $("#theWorkSubMenu").append("<li><a id=\"submenu-" + count + "\">" + count + "</a></li>");
      count++;
    });
  };
  
  setup_work_zooms: function setup_work_zooms()
  {
    $("a.zoom").fancybox();
    
    $("a.videoZoom").fancybox({
      'frameWidth': 320,
      'frameHeight': 280,
      'hideOnContentClick': false,
      'zoomSpeedIn':  100,
      'zoomSpeedOut': 50,
      'overlayShow': true,
      'overlayOpacity': 0.75,
      'callbackOnClose': function() { $("#fancy_content").empty();}
    });
    $("a.videoZoom1").fancybox({
      'frameWidth': 520,
      'frameHeight': 270,
      'hideOnContentClick': false,
      'zoomSpeedIn':  100,
      'zoomSpeedOut': 50,
      'overlayShow': true,
      'overlayOpacity': 0.75,
      'callbackOnClose': function() { $("#fancy_content").empty();}
    });
    $("a.videoZoom2").fancybox({
      'frameWidth': 750,
      'frameHeight': 360,
      'hideOnContentClick': false,
      'zoomSpeedIn':  100,
      'zoomSpeedOut': 50,
      'overlayShow': true,
      'overlayOpacity': 0.75,
      'callbackOnClose': function() { $("#fancy_content").empty();}
    });
  };
  
  setup_site_magnify: function setup_site_magnify()
  {
    $('#sitesPane div div').hover(function() {
      $(this).parent('div').addClass('hover');
    }, function() {
      $(this).parent('div').removeClass('hover');
    });
  };
  
  // setting the tabs in the sidebar hide and show, setting the current tab
  setup_people_menus: function setup_people_menus()
  {
    $('#bioPane div').hide().filter(':first').show();
    $('#peoplePane ul li:first a').addClass('active');

    $('#peoplePane ul li a').click(function(){
      if ($(this).attr("class").indexOf('active') == -1) {
        $('#bioPane div').hide();
        $('#bioPane div.' + this.className).show();
        $('#peoplePane ul li a').removeClass('active');
        $(this).addClass('active');   
      }
     
    });
  };
  
  //Changes class to for Worldwide CSS sprite background
  setup_worldmaps: function setup_worldmaps()
  {
    $('#worldBubbles area').mouseover(function() {
      var bubble = this.id;
      $('#worldHover').addClass(bubble);
    });
    $('#worldBubbles area').mouseout(function() {
      return false;
    });
    $('#worldBubbles area').mouseout(function(){
      var bubble = this.id;
      $('#worldHover').removeClass(bubble);
    });
    $('#worldBubbles area').click(function(){
      var bubble = this.id;
      $("#worldBubbles").attr("class", bubble);
      
      switch(bubble.substr("bubble".length + 1, 1)) {
        // middle east
        case "1":
         load_region(4);
          break;
        // europe
        case "2":
          load_region(3);
          break;
        // americas
        case "3":
          load_region(1);
          break;
          // asia pacific
        case "4":
          load_region(2);
          break;
      }
    });
  };
  
  setup_offices: function setup_offices()
  {
    $('.office').live("click", function(){
      var id = $(this).attr("id");
      draw_region(region, id);
    });
  };
  
  // when dom is completely rendered
  $(document).ready(function() {
    setup_swfs();
    setup_navigation();
    setup_logo_click();
    setup_work_menus();
    setup_work_zooms();
    setup_site_magnify();
    setup_people_menus();
    setup_worldmaps();
    setup_arrow_function();
    setup_offices();
    
    // loads the regions.php file
    load_region(1, 4);
    
    
  });
  
})();

// global to keep track of current region
var region = 1;
var region1 = new Array();
var region2 = new Array();
var region3 = new Array();
var region4 = new Array();

load_region: function load_region(id, active_office)
{
  $("#worldOfficeList").html("<p class='loading'><img src='/images/ajax-loader-transparent.gif' alt=''/> Loading&hellip;</p>");
  
  // set the global region each time
  region = id;
  
  // check the cache
  if (eval("region" + id).length == 0) {
    $.getScript('/js/regions.php?region=' + id, function(){
      if (active_office == undefined) {
        active_office = eval("region" + id)[0][0];
      }
      draw_region(id, active_office);
    });
  } else {
    if (active_office == undefined) {
      active_office = eval("region" + id)[0][0];
    }
    draw_region(id, active_office);
  }
};

draw_region: function draw_region(id, active_office)
{
  var region = eval('region' + id);
  
  str = "<ul id='region-" + id + "'>";
  for (var i in region) {
    var office_id = region[i][0];
    var name = region[i][1];
    if(office_id == active_office) {
      str += "<li class='active'><a id='" + office_id + "' class='office'>" + name + "</a></li>";
    } else {
      str += "<li><a id='" + office_id + "' class='office' title='View office details'>" + name + "</a></li>";
    }
  }
  str += "</ul>";
  
  $("#worldOfficeList").html(str);
  
  load_office(active_office);
};

load_office: function load_office(id)
{
  $("#worldOfficeDetails").html("<p class='loading'><img src='/images/ajax-loader-transparent.gif' alt=''/> Loading&hellip;</p>");
  $.getScript('/js/offices.php?id=' + id, function(){
    draw_office(id);
  });
};

draw_office: function draw_office(id)
{
  // grab info from officeX array and insert into id="worldOfficeList"
  var office = eval("office" + id);
  
  str = "<h2>" + office['name'] + "</h2>";
  str += "<p>" + office['address'] + "</p>";
  str += "<p><strong>Contact:</strong> <br/>" + office['contact_name'] + "<br/><a href='mailto:" + office['contact_email'] + "'>" + office['contact_email'] + "</a></p>";
  str += "<ul>";
  if (office['contact_map'] != "") {
    str += "<li><a href='" + office['contact_map'] + "' target='_blank'>map</a></li>";
  }
  if (office['contact_website'] != "") {
    str += "<li><a href='" + office['contact_website'] + "' target='_blank'>www</a></li>";
  }
  str += "</ul>";
  
  $("#worldOfficeDetails").html(str);
};