/*
 * 	The main javascript for snapple.com
 *	written by Mike Fey (Hello Monday)	
 *	http://hellomonday.com
 *
 */
$(document).ready(function() {

  var addressArray = [];
  var prevAddressArray = [];
  var curAd = '';
  var prevAd = '';
  var contentHtml = '';
  var basePageUrl = getBaseURL();
  var firstView = true;
  var footerMinY = 710;
  var totalModuleHeight = 0;
  var overflowTimeout = 0;
  var sliderStopTimeout = 0;
  var productPlArray = [];
  var pageData;
  var curPage = '';
  var prevPage = '';
  var productsViewed = false;
  var slidersSet = false;
  var overlayTimeout = 0;
  var firstSlide = true;
  var curBrowserUrl = location.href;
  var isSinglePage = false;
  var curBrowser = navigator.userAgent.toLowerCase();
  var previewMode = false;
  var thumbHoverTimeout = 0;
  var isMobile = false;
  
	//checks to see if there is a hash mark in the url
  if (curBrowserUrl.indexOf('#') == -1 && curBrowserUrl.length > basePageUrl.length + 1) {
    isSinglePage = true;
  }
  
	//checks to see if there the user is on a mobile device
  if (curBrowser.indexOf('iphone') != -1 || curBrowser.indexOf('ipod') != -1 || curBrowser.indexOf('ipad') != -1 || curBrowser.indexOf('android') != -1 || curBrowser.indexOf('blackBerry') != -1) {
    isMobile = true;
  }

  setCaps();
  
	//initializes module plugin
  $('.contentModule').snappleModule();
  
	//sets rollovers for modules
  $('.contentModule').each(function() {
    if ($(this).attr('class').indexOf('large-width') != -1 || $(this).attr('id') == 'products' && isMobile == false) {
      $(this).bind('mouseenter', moduleOver);
      $(this).bind('mouseleave', moduleOut);
    }
  });
  
	//sets event listers for the top menu
  $('#tmLcol li, #tmRcol li').each(function() {
    $(this).bind('click', tmClick);
  });
  
	//setup content and page plugins
  $('#productLegal').hide();
  $('#mainLoader').show();
  $('#footerButtons').snapplePage();
  $('#logo, #moduleOverlay').bind('click', goHome);
  
	//adds the background gradient
	//does this after the dom is ready for load time
  $('#gradientHolder').html('<img src="wp-content/themes/snapple/images/main/backgroundglow.png" />');

	//preload and transition in modules
  if (curBrowser.indexOf('msie 8.0') == -1 && curBrowser.indexOf('msie 7.0') == -1) {
    $('.contentModule').hide().css({
      opacity: 0.0
    });
  } else {
    $('.contentModule').hide();
  }

	//repositions elements
  sizeModuleContainer();

  if ($('#mainLoader').length > 0) {
    positionLoader();
  }

  $(window).resize(function() {
    onSiteResize();
  });

	positionBackgroundGradient();
	
	positionPageContainer();
  positionLegal();

	$('#pageContainer').css({
    'top': $(window).height() + 'px'
  });

	//gets the base url of the site
  function getBaseURL() {
    var url = location.href;
    var baseURL = url.substring(0, url.indexOf('/', 14));

    if (baseURL.indexOf('http://localhost') != -1) {
      var url = location.href;
      var pathname = location.pathname;
      var index1 = url.indexOf(pathname);
      var index2 = url.indexOf("/", index1 + 1);
      var baseLocalUrl = url.substr(0, index2);
      return baseLocalUrl;
    } else {
      return baseURL;
    }
  }

	//click function for the top menu 
  function tmClick(e) {
    var gtAd = '';
    var nAd = $(this).find('a').attr('href');
    var adArray = nAd.split('/');
    if (adArray[1] != 'modules') {
      gtAd = adArray[1];
    } else {
      gtAd = adArray[2];
    }

    $.address.value(gtAd);
    return false;
  }

	function goHome() {
    $.address.value('/');
    return false;
  }
  
	//sets all the sliders for the home page
  function setSliders() {
    $('#bestStuffCollapsedGallery').snappleImageSlider({
      imageWidth: 317,
      imageHeight: 189,
      buttonContainer: 'bestStuffCollapsedNav',
      animationTime: 1500,
      animationDelay: 8000,
      viewed: slidersSet,
      type: 'slideDown'
    });

    $('#bestStuffCollapsedNav').css({
      'left': ((173 - ($('#bestStuffCollapsedNav').width() / 2)) + 50) + 'px'
    });

    $('#bestFanCollapsedGallery').snappleImageSlider({
      imageWidth: 160,
      imageHeight: 180,
      buttonContainer: 'bestFanCollapsedNav',
      animationTime: 3000,
      animationDelay: 8000,
      startDelay: 2000,
      type: 'flashFade',
      vertNav: 'true'
    });

    $('#newsCollapsedGallery').snappleImageSlider({
      imageWidth: 380,
      imageHeight: 92,
      topOffset: 11,
      buttonContainer: 'newsCollapsedNav',
      animationTime: 1500,
      animationDelay: 8000,
      startDelay: 4000,
      type: 'slideDown'
    });

    $('#promotionsCollapsedGallery').snappleImageSlider({
      imageWidth: 472,
      imageHeight: 218,
      buttonContainer: 'promotionsCollapsedNav',
      animationTime: 1000,
      animationDelay: 8000,
      startDelay: 600,
      type: 'fade'
    });

    $('#campaignsCollapsedGallery').snappleImageSlider({
      imageWidth: 260,
      imageHeight: 197,
      buttonContainer: 'campaignsCollapsedNav',
      animationTime: 1200,
      animationDelay: 8000,
      startDelay: 8000,
      type: 'tv'
    });

    $('#campaignsCollapsedNav').css({
      'left': (363 - ($('#campaignsCollapsedNav').width() / 2)) + 'px'
    });

    $('#realfactsTextContent').snappleRealFactsCap({
      moveTime: 7000
    });

    var fbId = $('#facebookFeedUrl').html();
    $('#facebookFeedContent').snapplefbFanpageWall({
      facebookId: fbId,
      animate: 'true',
      viewed: slidersSet
    });
    $('#facebookFeedUrl').hide();

    $('#twitterStatuses').twitterFeed({
      animate: 'true',
      viewed: slidersSet
    });

    slidersSet = true;
  }
  
	//stops all the sliders on the home page
	//called when a module is opened so everything is not running in the
	//background
  function stopSliders() {
    $('#bestStuffCollapsedGallery').snappleImageSlider('stop');
    $('#bestFanCollapsedGallery').snappleImageSlider('stop');
    $('#newsCollapsedGallery').snappleImageSlider('stop');
    $('#promotionsCollapsedGallery').snappleImageSlider('stop');
    $('#campaignsCollapsedGallery').snappleImageSlider('stop');
    $('#campaignsCollapsedNav').snappleImageSlider('stop');
    $('#realfactsTextContent').snappleRealFactsCap('stop');
    $('#twitterStatuses').twitterFeed('stop');
    $('#facebookFeedContent').snapplefbFanpageWall('stop');
  }
  
	//module rollover function
  function moduleOver(e) {
    clearTimeout(thumbHoverTimeout);
    removeThumbHover();
  }
  
	//shows a flag on module rollover (not currently used)
  function flagOver(e) {
    clearTimeout(thumbHoverTimeout);
    if (curBrowser.indexOf('msie 8.0') == -1 && curBrowser.indexOf('msie 7.0') == -1) {
      $('#moduleHoverInfo').stop(true, true).animate({
        opacity: 1.0
      },
      {
        duration: 300,
        specialEasing: {
          opacity: 'easeOutSine',
          top: 'easeOutExpo'
        }
      });
    } else {
      $('#moduleHoverInfo').show();
    }
  }
  
	//gets mouse position to position rollover flag
  $(document).bind('mousemove',
  function(e) {
    var mouseX = Number(e.pageX) - 102;

    if ((mouseX + 230) > Number($(window).width())) {
      mouseX = Number($(window).width()) - 230;
    }

    var mouseY = Number(e.pageY) - 90;

    if (curBrowser.indexOf('msie 8.0') != -1) {
      setTimeout(function() {
        $('#moduleHoverInfo').stop(true, true).css({
          'left': mouseX + 'px',
          'top': mouseY + 'px'
        });
      },
      0);
    } else {
      $('#moduleHoverInfo').stop(true, true).css({
        'left': mouseX + 'px',
        'top': mouseY + 'px'
      });
    }
  });
  
	//rollout function for modules (not currently used)
  function moduleOut(e) {
    clearTimeout(thumbHoverTimeout);

    $('#moduleHoverInfo').unbind('mouseenter', flagOver);
    var mhfYpos = $('#moduleHoverInfo').offset().top;

    if (curBrowser.indexOf('msie 8.0') == -1 && curBrowser.indexOf('msie 7.0') == -1) {
      $('#moduleHoverInfo').stop(true, true).delay(100).animate({
        opacity: 0.0
      },
      {
        duration: 500,
        specialEasing: {
          opacity: 'easeOutSine',
          top: 'easeOutExpo'
        }
      });
    } else {
      $('#moduleHoverInfo').stop(true, true).delay(100).css({
        opacity: 0.0
      });
    }


    thumbHoverTimeout = setTimeout(removeThumbHover, 600);
  }
  
	//capitalizes a string
  function capitalizeString(str) {
    return str.replace(/(^|\s)([a-z])/g,
    function(m, p1, p2) {
      return p1 + p2.toUpperCase();
    });
  }
  
	//removes the flag hover from the modules 
  function removeThumbHover() {
    $('#moduleHoverInfo').unbind('mouseenter', flagOver);
    $('#moduleHoverInfo').remove();
  }
  
	//array of images to preload before site transitions in
  var productPromoImageUrl = $('#productsCollapsedPromoImage img').attr('src');
  var preloadArray = ['wp-content/themes/snapple/images/module_facebook/fb-button.png',
  'wp-content/themes/snapple/images/main/wood-bg-page-shadow.png',
  'wp-content/themes/snapple/images/module_facebook/fb-paper.png',
  'wp-content/themes/snapple/images/module_best_stuff/best-stuff-back.png',
  'wp-content/themes/snapple/images/module_best_stuff/best-stuff-banner.png',
  'wp-content/themes/snapple/images/module_pursuit_of_bestness/pob-collapsed-frame.png',
  'wp-content/themes/snapple/images/module_twitter/twitter-module-back.png',
  'wp-content/themes/snapple/images/module_twitter/twitter-module-bird.png',
  'wp-content/themes/snapple/images/module_best_fan/best-fan-collapsed-back.png',
  'wp-content/themes/snapple/images/module_real_facts/real-facts-collapsed-cap.png',
  'wp-content/themes/snapple/images/module_news/news-collapsed-border.png',
  'wp-content/themes/snapple/images/module_promotions/promotions-collapsed-back.png',
  'wp-content/themes/snapple/images/module_promotions/promotions-collapsed-card-back.png',
  'wp-content/themes/snapple/images/module_campaigns/campaigns-collapsed-tv.png',
  'wp-content/themes/snapple/images/module_products/products-collapsed-shelf.png',
  'wp-content/themes/snapple/images/module_products/products-collapsed-plaque.png',
  'wp-content/themes/snapple/images/products/product-shelf.png',
  productPromoImageUrl,
  'wp-content/themes/snapple/images/products/products-thumb-hover-back.png',
  'wp-content/themes/snapple/images/products/drinks-tag-header.png',
  'wp-content/themes/snapple/images/products/flavors-tag-header.png',
  'wp-content/themes/snapple/images/products/products-close-btn.png',
  'wp-content/themes/snapple/images/products/products-left-arrow.png',
  'wp-content/themes/snapple/images/main/wood-bg-page.jpg',
  'wp-content/themes/snapple/images/products/products-right-arrow.png',
  'wp-content/themes/snapple/images/module_news/news-glow.png','wp-content/gallery/promotions-collapsed/hashOut_promographic.png'];

  if ($('#mainLoader').length == 0) {
    $('body').append('<div id="mainLoader"></div>');
  }
  
	//if browser is not IE8, preload all images and transition them in, 
	//otherwise just show the content
  if (curBrowser.indexOf('msie 8.0') == -1 && isSinglePage == false) {

    addressArray = $.address.value().split('/');
    if (addressArray[0] == '') {
      addressArray.splice(0, 1);
    }

    var shouldInit = false;
    if ($.address.value() == '/') {
      shouldInit = true;
    }

    if (addressArray[0] == 'products' && addressArray.length == 1) {
      shouldInit = true;
    }

    if (addressArray[1] == 'sort' || addressArray[1] == 'search') {
      shouldInit = true;
    }

    if (shouldInit == true) {
      jQuery.imgpreload(preloadArray, {
        all: function() {
          $('#mainLoader').remove();
          $('.contentModule').show();
          $('.contentModule').snappleModule('transitionInAll');
          setSliders();
        }
      });
    } else {
      $('.contentModule').show().css({
        opacity: 1.0
      });
    }
  } else {
    $('#mainLoader').remove();
    $('#bestFanImageBack').show();
    $('.contentModule').show();
    if ($.address.value() == '/') {
      setSliders();
    }
  }

  //listens for the address and opens or closes modules accordingly
  $.address.change(function(e) {
//	$('#promotionsCollapsedGallery').live('click', function(){
//		alert('i rule!');
//	});

    $('#moduleOverlay').unbind('click');
    $('#moduleOverlay').bind('click', goHome);

    $(window).unbind('click');

    clearTimeout(overlayTimeout);

    addressArray = e.value.split('/');
    if (addressArray[0] == '') {
      addressArray.splice(0, 1);
    }

    // show hide legal line
    var legalAlpha = 1;
    if (addressArray[0] == 'products')
    {
      legalAlpha = 0;
    }
    $("#mainLegalCopy").stop(true, false).delay(300).animate({
      opacity: legalAlpha
    },
    1000, "easeOutSine");

    var curAd = addressArray[0];
    if (curAd.substr(0, 1) == '/') {
      curAd = curAd.substr(1, curAd.length)
    }

    $('#staticOverlay').remove();
    $('#realFactsOverlay').remove();

    if (e.value != '/' && addressArray[0] != "products" && addressArray[0] != "page") {

      if (curAd != prevAd) {
        previewMode = false;
        $('#moduleOverlay').show();
        $('#moduleOverlay').css({
          opacity: 0.8
        });
        $('.contentModule').snappleModule('expand', curAd, basePageUrl);
        removeThumbHover();
      }

      if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
        slideOutOverlay();
      }

      stopSliders();

    } else {

      if (firstView == false && e.value == '/') {

        $('#pageContent').snappleProducts('destroy');
        if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
          slideOutOverlay();
        }

        if (prevAddressArray[0] != 'products' && prevAddressArray[0] != 'page') {
          setSliders();
          $('.contentModule').snappleModule('transitionOutAll');
        }

      } else {
        if (curAd != prevAd) {

          if (addressArray[0] == 'products') {

            positionFooter();

            if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
              slideOutOverlay();

              overlayTimeout = setTimeout(function() {
                loadPage(basePageUrl + '/products/');
              },
              1000);
            } else {
              if (prevAddressArray[0] != '' && prevAddressArray[0] != 'products' && prevAddressArray[0] != 'page') {
                $('.contentModule').snappleModule('transitionOutAll');
              }
              loadPage(basePageUrl + '/products/');
            }
          }

          if (addressArray[0] == 'page') {

            positionFooter();

            if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
              slideOutOverlay();
              overlayTimeout = setTimeout(function() {
                $('#footerButtons').snapplePage('loadPage', addressArray[1]);
                slideInOverlay()
              },
              1000);
            } else {
              slideInOverlay();
              $('#footerButtons').snapplePage('loadPage', addressArray[1]);
              if (prevAddressArray[0] != '') {
                $('.contentModule').snappleModule('transitionOutAll');
              }
            }
          }
        } else {
          if (prevAddressArray[1] != addressArray[1] && addressArray[0] == 'page') {

            positionFooter();

            if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
              slideOutOverlay();
            } else {
              $('.contentModule').snappleModule('transitionOutAll');
            }

            overlayTimeout = setTimeout(function() {
              $('#footerButtons').snapplePage('loadPage', addressArray[1]);
              slideInOverlay()
            },
            1000);
          } else {
            if (prevAddressArray[1] != addressArray[1] && addressArray[0] == 'products') {
              if (addressArray[1] != 'sort' && addressArray[1] != 'search' && addressArray.length == 2) {
                if (previewMode == true) {
                  previewMode = false;
                  animateOverlayUp();
                  overflowTimeout = setTimeout(setOverflows, 1100);
                  sliderStopTimeout = setTimeout(stopSliders, 1000);
                }
              }
            }
          }
        }
      }
    }

    prevAddressArray = addressArray;

    prevAd = curAd;
    firstView = false;

    disableMainButtons();
    disableFooterButtons();
  });
  
	//disables the top menu
  function disableMainButtons() {
    $('#topMenu li').each(function(i) {
      var bid = $(this).attr('id').split('~')[1];
      if (bid == addressArray[0]) {
        $(this).addClass('mbSelected');
      } else {
        $(this).removeClass('mbSelected');
      }
    });
  }
  
	//disables the footer menu
  function disableFooterButtons() {
    $('#footerButtons li').each(function(i) {
      var bid = $(this).attr('id');
      if (bid == addressArray[1]) {
        $(this).addClass('mbSelected');
      } else {
        $(this).removeClass('mbSelected');
      }
    });
  }
  
	//called when the browser is resized
  function onSiteResize() {
    if ($('#mainLoader').length) {
      positionLoader();
    }

    if ($('#overlayCloseButton').length > 0) {
      if ($(window).width() < 1240) {
        $('#overlayCloseButton').css({
          'left': '1080px',
          'right': ''
        });
      } else {
        $('#overlayCloseButton').css({
          'left': '',
          'right': '30px'
        });
      }
    }

    if ($('#staticOverlay').length) {
      if ($(document).width() < 1240) {
        $('#staticOverlay').css({
          'width': '1230px'
        });
      } else {
        $('#staticOverlay').css({
          'width': '100%'
        });
      }

      if ($(document).height() <= 945) {
        $('#staticOverlay').css({
          'height': '945px'
        });
      } else {
        $('#staticOverlay').css({
          'height': '100%'
        });
      }
    }

    if (addressArray[0] != 'products' && addressArray[0] != 'page') {
      sizeModuleContainer();
    }

    if (addressArray[0] == 'products' || addressArray[0] == 'page') {
      if (previewMode == false) {
        $('#pageContainerInner').css({
          'margin-top': ( - $(window).height() + 115) + 'px'
        });
        if (!previewMode && $(window).height() <= 975) {
          $('#pageContainerInner').css({
            'margin-top': '-860px'
          });
        }
      }
      positionPageContainer();
      positionFooter();
    }

    if (addressArray[0] == 'products') {
      positionLargeProduct();
      positionProductInfo();
      positionLegal();
    }

    if (addressArray[0] == 'page') {
      positionGenericPageImage();
    }

    positionCaps();
    positionBackgroundGradient();

  }
	
	//positions the background gradient
  function positionBackgroundGradient() {
    var bgw = $(window).width();
    var bgh = $(window).height() - 40;

    if (bgw < $('#woodTop').width()) {
      bgw = $('#woodTop').width();
    }

    if ($(window).width() < 1230) {
      bgw = 1230;
    }

    if ($(window).height() < 945) {
      bgh = 920;
    }

    $('#gradientHolder img').css({
      'width': bgw + 'px',
      'height': bgh + 'px'
    });
    $('#gradientBlock').css({
      'width': bgw + 'px',
      'height': bgh + 'px'
    });
  }
  
	//resizes the module container on browser resize to prevent scrollbars from
	//showing up
  function sizeModuleContainer() {
    var minSize = 1230;
    if (addressArray[0] == 'products' || addressArray[0] == 'page') {
      minSize = 1230;
    }

    var maxSize = 1260;

    if ($(window).width() < minSize) {
      $('#wrapper').css({
        'width': $(window).width() + 'px',
        'margin': '0px 0px -70px 0px'
      });
      $('header').css({
        'width': $(window).width() + 'px'
      });
    } else {
      if ($(window).width() < maxSize) {
        $('#wrapper').css({
          'width': $(window).width() + 'px',
          'margin': '0 auto -70px auto'
        });
        $('header').css({
          'width': $(window).width() + 'px'
        });
      } else {
        $('#wrapper').css({
          'width': maxSize + 'px',
          'margin': '0 auto -70px auto'
        });
        $('header').css({
          'width': maxSize + 'px'
        });
      }
    }

    if (Number($('#wrapper').css('width').substr(0, $('#wrapper').css('width').length - 2)) < minSize) {
      $('#wrapper').css({
        'width': '1230px'
      });
      $('header').css({
        'width': '1230px'
      });
    }

    var cmt = ($(window).height() / 2) - (945 / 2) - 20;
    if ($(window).height() < 1000) {
      cmt = 20;
    }

    $('#container').css({
      'margin-top': cmt + 'px'
    });

  }
  
	//loads pages that come up in overlay via AJAX.
  function loadPage(pageUrl) {
    positionLoader();

    $('#pageContent').html('');

    slideInOverlay();

    $('#moduleOverlay').show();
    $('#moduleOverlay').css({
      opacity: 0.8
    });

    $.ajaxSetup({
      cache: false
    });
    $.ajax({
      type: "GET",
      url: pageUrl,
      success: function(data) {
        pageData = $(data).find('#snappleSectionContent').html();
        addPageContent();
      }
    });
  }
  
	//adds the page content to the overlay
  function addPageContent() {
    if (addressArray[0] == 'products') {
      setCaps();
      $('#pageContent').html(pageData);
      $('#pageContent').snappleProducts({
        productsViewed: productsViewed
      });
      positionLargeProduct();
      positionProductInfo();
      productsViewed = true;
    }
  }
  
	//positions the page overlay
  function slideInOverlay() {
    resetPageContainer();
    removeThumbHover();

    if (addressArray[0] == 'products') {
      $('#yumCap').show();
    } else {
      $('#yumCap').hide();
    }

    if (addressArray[1] == 'about') {
      $('#historianCap').show();
    } else {
      $('#historianCap').hide();
    }

    positionCaps();

    clearTimeout(overflowTimeout);
    clearTimeout(sliderStopTimeout);

    if ($('#mainLoader').length == 0) {
      $('body').append('<div id="mainLoader"></div>');
    }

    positionLoader();

    clearProductData();
    animateOverlayUp();

    if (addressArray[0] != 'products') {
      $('#productLegal').hide();
      $('#productLeftBtn').hide();
      $('#productRightBtn').hide();
      $('.productShelf').hide();
      $('#productThumbContainer').hide();
    }

    previewMode = false;

    if (addressArray[0] == 'products' && addressArray.length == 1) {
      previewMode = true;
    }

    if (addressArray[1] == 'sort' || addressArray[1] == 'search') {
      previewMode = true;
    }

    if (previewMode == true) {
      $('#pageContentWrapper').css({
        'min-height': '305px'
      });
    } else {
      $('#pageContentWrapper').css({
        'min-height': '780px'
      });
    }

    $('#pageContainerInner').css({
      'height': '305px',
      'overflow': 'hidden'
    });

    positionPageContainer();

    overflowTimeout = setTimeout(setOverflows, 1100);
    sliderStopTimeout = setTimeout(stopSliders, 1000);
  }
  
	//slides in the page overlay
  function animateOverlayUp() {
    var slideAmount;

    if ($(window).height() > 940) {
      $('body').css({
        'overflow': 'hidden'
      });
    } else {
      if (curBrowser.indexOf('msie 8.0') == -1 && curBrowser.indexOf('msie 7.0') == -1) {
        $('body').css({
          'overflow-x': 'hidden'
        });
      }
    }

    if (firstSlide == true) {
      firstSlide = false;
      slideAmount = ( - $(window).height() + 115);
    } else {
      slideAmount = ( - $(window).height() + 115);
    }

    if ($(window).height() <= 940) {
      slideAmount = -855;
    }

    var sp = false;

    if (addressArray[0] == 'products' && addressArray.length == 1) {
      sp = true;
    }

    if (addressArray[1] == 'sort' || addressArray[1] == 'search') {
      sp = true;
    }

    if (sp == true) {
      slideAmount = -355;
    }

    if (addressArray[0] == 'products') {
      $('#moduleOverlay').show();
      $('#moduleOverlay').css({
        opacity: 0.0
      });
    }

    positionPageContainer();

    $('#pageContainerInner').stop(true, true).animate({
      marginTop: slideAmount
    },
    {
      duration: 1000,
      specialEasing: {
        marginTop: 'easeInOutExpo'
      }
    });

    if (sp == true && $(window).height() < 945) {
      setTimeout(scrollToBottom, 1000);
    }
  }
  
	//scrolls the site to the bottom
  function scrollToBottom() {
    $(window)._scrollable();
    $(window).stop(true, true).scrollTo(355, 1000, {
      easing: 'easeInOutExpo',
      axis: 'y'
    });
  }
  
	//removes the products content from the overlay
  function clearProductData() {
    $('#productThumbContainerInner').html('');
    $('#productTagMenu').remove();
    $('#productInfoContainer').html('');
    $('#productLargeContainer').html('');
  }
  
	//repositions the page container
  function resetPageContainer() {
    if ($('#pageContainer').position().top != $(window).height())
    {
      $('#pageContainer').css({
        'top': $(window).height() + 'px'
      });
    }

    var sp = false;

    if (addressArray[0] == 'products' && addressArray.length == 1) {
      sp = true;
    }

    if (addressArray[1] == 'sort' || addressArray[1] == 'search') {
      sp = true;
    }

    if (sp == false) {
      $('#moduleOverlay').show();
    }

    $('#moduleOverlay').css({
      opacity: 0.0
    });

    $('#pageContainer').show();

    positionPageContainer();
  }
  
	//slides overlay down
  function slideOutOverlay() {

    clearTimeout(overflowTimeout);
    clearTimeout(sliderStopTimeout);

    removeThumbHover();

    $('#container').css({
      'height': '940px',
      'overflow': 'visible'
    });
    $('#wrapper').css({
      'height': '100%'
    });

    var placeFooter = true;

    if (addressArray[0] == 'products' || addressArray[0] == 'page') {
      $(document).bind('mousewheel', preventMouseWheel);
      if (prevAddressArray[0] == 'products' || prevAddressArray[0] == 'page') {
        placeFooter = false;
      }
    }

    if (addressArray[0] == '') {
      $(document).unbind('mousewheel', preventMouseWheel);
    }

    if (placeFooter) {
      setTimeout(function() {
        $('footer').css({
          'position': 'relative',
          'top': '',
          'clear': 'both'
        });
      },
      1000);
    }

    var sdmAmount = 70;
    var difHeight = $(document).height() - $(window).height();
    if (difHeight > 0) {
      sdmAmount = 70 + difHeight;
    }

    $('#pageContainerInner').stop(true, true).animate({
      marginTop: sdmAmount
    },
    {
      duration: 1000,
      specialEasing: {
        marginTop: 'easeInOutExpo'
      }
    });

    if (addressArray[0] == '') {
      $('#moduleOverlay').hide();
    }

    overflowTimeout = setTimeout(resetOverflows, 1100);

    if ($.address.value() == '/') {
      setSliders();
    }

    if ($(window).height() > 940) {
      $('body').css({
        'overflow': 'hidden'
      });
    } else {
      if (curBrowser.indexOf('msie 8.0') == -1 && curBrowser.indexOf('msie 7.0') == -1) {
        $('body').css({
          'overflow-x': 'hidden'
        });
      }
    }

    positionPageContainer();
  }
  
	//sets the 'overflow' css property of the site
  function setOverflows() {
    $(document).unbind('mousewheel', preventMouseWheel);

    if (!previewMode) {
      $('#container').css({
        'height': '500px',
        'overflow': 'hidden'
      });
      $('#wrapper').css({
        'height': '500px',
        'overflow': 'hidden'
      });
    }

    $('body').css({
      'overflow': 'auto'
    });

    positionPageContainer();
    onSiteResize();
  }
  
	//sets the 'overflow' css property of the site to auto
  function resetOverflows() {
    $('#pageContainer').hide();
    $('body').css({
      'overflow': 'auto'
    });
    $('#pageContent').html('');
    sizeModuleContainer();
  }
  
	//positions the footer
  function positionFooter(initOffset) {
    var fp = $(window).height() - 70;
    if (initOffset == true) {
      fp = fp + 15;
    }

    if (fp < 905) {
      fp = 905;
    }

    $('footer').css({
      'position': 'absolute',
      'top': fp + 'px',
      'clear': 'none'
    });
  }
  
	//positions the page container within the overlay
  function positionPageContainer() {
    var pcHeight = $(window).height() - 115;
    if (pcHeight < 690) {
      pcHeight = 690;
    }

    if (previewMode) {
      pcHeight = 355;
      $('#pageContainerInner').css({
        'min-height': '355px'
      });
    } else {
      $('#pageContainerInner').css({
        'min-height': '815px'
      });
    }

    var pcWidth = $(window).width();
    if (pcWidth < 1230) {
      pcWidth = 1230;
    }

    if ($('#pageContainer').length > 0) {
      var nPagePos = $(window).height();

      if ($(window).height() < 975) {
        nPagePos = 975;
      }

      $('#pageContainer').css({
        'top': nPagePos + 'px'
      });

      $('#pageContainerInner').css({
        'height': pcHeight + 'px'
      });
    }

  }
  
	//positions the large product image after a product thumbnail is clicked
  function positionLargeProduct() {
    var imWidth = $('#productLargeContainer img').attr('width');
    var imHeight = $('#productLargeContainer img').attr('height');

    var lpPosL = (1220 - imWidth) + $('#pageContentWrapper').offset().left;
    var lpPosT = $('footer').position().top - imHeight - 85;

    $('#productLargeContainer').css({
      'left': lpPosL + 'px',
      'top': lpPosT + 'px'
    });
  }
  
	//positions the info text after a product thumbnail is clicked
  function positionProductInfo() {
    var piB = $('footer').offset().top - 580;
    $('#productInfoContainer').css({
      'top': piB + 'px'
    });
  }
  
	//positions the legal info
  function positionLegal() {
    if ($('footer').length > 0) {
      var plPosT = $('footer').position().top - 130;
      $('#productLegal').css({
        'top': plPosT + 'px'
      });
    }
  }
  
	//positions the site preloader
  function positionLoader() {
    var tpos = ($(window).height() / 2) - 16;
    if ($(window).height() < 945) {
      tpos = (945 / 2) - 16;
    }

    var lpos = ($(window).width() / 2) - 32;
    if ($(window).width() < 1210) {
      lpos = (1210 / 2) - 32;
    }

    $('#mainLoader').css({
      'top': tpos + 'px',
      'left': lpos + 'px'
    });
  }
  
	//positions the image for the overlay pages, such as the "About" page
  function positionGenericPageImage() {
    if ($('#gPageImage').length > 0) {
      var lpPosL = (1220 - $('#gPageImage img').attr('width')) + $('#pageContentWrapper').offset().left;
      if ($('#gPageImage img').attr('width') == undefined) {
        var lpPosL = (1220 - $('#gPageImage img').width()) + $('#pageContentWrapper').offset().left;
      }
      var lpPosT = $('footer').position().top - $('#gPageImage img').attr('height') - 85;
      if ($('#gPageImage img').attr('height') == undefined) {
        var lpPosT = $('.pageBottom').position().top - $('#gPageImage img').height() - 85;
      }

      $('#gPageImage').css({
        'left': lpPosL + 'px',
        'top': lpPosT + 'px'
      });
    }
  }
  
	//positions the caps that are hidden throughout the site
  function positionCaps() {
    var plPosT = $('footer').position().top - 130;

    if ($('#historianCap').length > 0) {
      var cp = $(window).height() - 240;
      if ($(window).height() < 975) {
        cp = 730;
      }
      $('#historianCap').css({
        'top': cp + 'px'
      });
    }

    if ($('#yumCap').length > 0) {
      $('#yumCap').css({
        'top': (plPosT - 30) + 'px'
      });
    }
  }
  
	//sets the event handlers for when the hidden caps are clicked
  function setCaps() {
    $('.hiddenCap').bind('click', pobCapClick);
  }
  
	//the cap click function
  function pobCapClick(e) {
    var hrAr = $(this).find('a').attr('href').split('/');
    var code = hrAr[hrAr.length - 1];
    $.address.value('/pursuit-of-bestness/' + code);
    return false;
  }
  
	//prevents the mousewheel from functioning
  function preventMouseWheel() {
    return false;
  }

});
