      var $rootPath = '';
      var $menuItems = new Array(); 
      var $contentType;
      var $openMenuToId = null;
      var $slideToContentItemNumber = -1;
      var $currentContentItemNumber = 1;
      var $currentContentDbId = -1;
      var $contentItemContainerHeight = 0;
      var $contentItemContainerWidth = 0;
      var $contentItemOffsetLeft = 0;
      var $colorChangeSpeed = 400;      
      var $contentItemFadeSpeed = 1000;
      var $contentItemSlideDuration = 3000;
      var $contentItemResizeSlideBackDuration = 500;
      var $origColor = 'grey';
      var $totalContentItemCount = 0;
      var $contentItemSlideSpeed= 3000;
      var $isMenuOn = true;
      var $logoSectionHeight = 141;
      var $menuContainerSlideSpeed = 'slow';
      var $menuContainerFadeSpeed = 'slow';
      var $contentItemControllerFadeSpeed = 'slow';
      var $contentItemControllerBlue = '#48c2c5';
      var $contentItemControllerBlack = '#000000';
      var $contentItemControllerTransparent = 'rgba(0,0,0,0.5)';
      var $menuCategoryUlToOpen;
      var $menuCategorySlideSpeed = 'slow';
      var $fixedWindowOptions = { 'target': '_blank', 'width': '1000', 'height': '750', 'scrollbars': '0', 'resizable': '0'};

      function buildRandomRgbString() {
        return 'rgb(' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ',' + (Math.floor(Math.random() * 256)) + ')';
      }     
      
      function fadeInMenu() {
      	
      	$('#div-menu-container').animate({ opacity: 1 }, $menuContainerFadeSpeed, function() {          
          $('#div-content-controller').animate({ opacity: 1}, $contentItemControllerFadeSpeed, function() {});
      	  setupColorChange('li','li-menu-item-colorswitch','li-menu-item-current');
      	  setupAccordianMenu();      
          setupMenuBannerToggle();	
          if ($openMenuToId != null) {
            $('#' + $openMenuToId).toggle($menuCategorySlideSpeed);
	        $('#' + $openMenuToId).addClass('menu-category-open');	    	
          }
          if ($contentType == 'films') {
            changeActiveMenuItem(null,'span-menu-category-item-film',$currentBgImageSet);	
          }
      	});        	
      }
      
      function setupAccordianMenu() {
	     $('.span-menu-category').click(function(){
	       $menuCategoryUlToOpen = $('.ul-menu-category-items',$(this).parent());
	       if($('.menu-category-open').length == 0) {
	         $menuCategoryUlToOpen.toggle($menuCategorySlideSpeed);
	         $menuCategoryUlToOpen.addClass('menu-category-open');	
	       } else {	       
	         $('.menu-category-open').toggle($menuCategorySlideSpeed,function(){
	       	   if ($(this).attr('id') != $menuCategoryUlToOpen.attr('id')) {
	             $menuCategoryUlToOpen.toggle($menuCategorySlideSpeed);
	             $menuCategoryUlToOpen.addClass('menu-category-open');  	
	           }
	           $(this).removeClass('menu-category-open');
	         });
	       }	        
	     });
	     $('.span-menu-category-item-project').click(function(){
	       loadNewBgImageSet($(this).attr('href'));
	     });	  	     
      }
      
      function setupMenuBannerToggle() {
        $('#div-menu-logo').click(function(){ toggleMenuBanner(); });	
        $('#div-menu-name').click(function(){ toggleMenuBanner(); });
      }
      
      function toggleMenuBanner() {        
        if($isMenuOn) {
          var $currentMenuContainerHeight = $('#div-menu-container').height();  	
          var $topOffSet = -1 * ($currentMenuContainerHeight - $logoSectionHeight);
          $('#div-menu-container').animate({ top: $topOffSet  },{ duration: $menuContainerSlideSpeed, complete: function() {
            $isMenuOn = false;	
          }});	
          $('#div-content-controller').animate({ 
            backgroundColor: $contentItemControllerTransparent,
            color: $contentItemControllerBlue
          },{ 
          	duration: $contentItemControllerFadeSpeed
          });
          //$('#div-menu-logo').rotateRight([angle=90]);
        } else {
          var $topOffSet = 0;
          $('#div-menu-container').animate({ top: $topOffSet  },{ duration: $menuContainerSlideSpeed, complete: function() {
            $isMenuOn = true;	
          }});
          $('#div-content-controller').animate({ 
            backgroundColor: $contentItemControllerBlue,
            color: $contentItemControllerBlack
          },{ 
          	duration: $contentItemControllerFadeSpeed
          });
          //$('#div-menu-logo').rotateLeft([angle=90]);	
        }   	
      	
      }

      function slideToContentItem($targetImageNumber,$slideDuration) {
        if ($targetImageNumber > $totalContentItemCount) { $targetImageNumber = 1; }
        if ($targetImageNumber <= 0) { $targetImageNumber = $totalContentItemCount; }
        var $newOffsetLeft = ($targetImageNumber - 1) * $contentItemContainerWidth;
        $('#span-content-controller-currentnum').html($targetImageNumber);
        $currentContentItemNumber = $targetImageNumber;
        $('#div-content-container').stop().animate({ 'margin-left': '-' + $newOffsetLeft },{ duration: $slideDuration });
        $contentItemOffsetLeft = $newOffsetLeft;    
      }
      
      
      function setContentItemSize($containerClassName, $className, $contentItemNumber) {
        var $contentItem = $($containerClassName + "[href='" + $contentItemNumber + "'] " + $className);
        var $contentItemWidth = getContentItemWidth($containerClassName, $className, $contentItemNumber);
        var $contentItemHeight = getContentItemHeight($containerClassName, $className, $contentItemNumber);
        var $contentItemAspectRatio = $contentItemWidth / $contentItemHeight;
        var $windowHeight = getWindowHeight();
        var $windowWidth = getWindowWidth();        
        var $windowAspectRatio = getWindowAspectRatio();
        if (isNaN($contentItemAspectRatio) || $windowAspectRatio > $contentItemAspectRatio) {
          if ($windowHeight > 0) {
            $contentItem.height($windowHeight);
          } else {
          	$(window).resize();
          }
          $contentItem.width($windowHeight * $contentItemAspectRatio );     	        	
        } else {
          $contentItem.width($windowWidth);
          var $newHeight = $windowWidth / $contentItemAspectRatio ;
          if ($newHeight > 0) {
            $contentItem.height($newHeight);
          } else {
          	$(window).resize();
          }
        } 	
      }
            
      
      function getContentItemWidth($containerClassName, $className, $contentItemNumber) {
        var $contentItem = $($containerClassName + "[href='" + $contentItemNumber + "'] " + $className);
        return $contentItem.width(); 	
      }
      
      function getContentItemHeight($containerClassName, $className, $contentItemNumber) {
        var $contentItem = $($containerClassName + "[href='" + $contentItemNumber + "'] " + $className);
        return $contentItem.height(); 	
      }
            
      function getWindowAspectRatio() {
        return getWindowWidth() / getWindowHeight();	      	
      }
      
      function getWindowWidth() {
        var $widthChecker = $("<div id='div-window-widthchecker'>&nbsp;</div>"); 
        $('body').append($widthChecker);
        var $width = $widthChecker.width(); 
        $widthChecker.remove();
        return $width;	      	
      }
      
      function getWindowHeight() {
        var $heightChecker = $("<div id='div-window-heightchecker'>&nbsp;</div>"); 
        $('body').append($heightChecker);
        var $height = $heightChecker.height(); 
        $heightChecker.remove();
        return $height;	      	
      }
      
      
      
      function setContentItemContainerHeightVariable($className) {
        $contentItemContainerHeight = $($className).height();	
      }
      
      function setContentItemContainerWidthVariable($className) {
        $contentItemContainerWidth = $($className).width();	
      }
      
      function setContentItemContainersSizes($className, $newWidth, $newHeight) {
        $($className).css({
          height: $newHeight,
          minHeight: $newHeight,
          maxHeight: $newHeight,
          width: $newWidth
        });  	
      }
      
      function setContentConainerSize() {
      	var $newWidth = ($totalContentItemCount * $contentItemContainerWidth) + 100;
      	$('#div-content-container').css({
          width: $newWidth
        });
      }
      
      function setupWindowResizeAction() {
        $(window).resize(function(){
          var $newWidth = getWindowWidth();
          var $newHeight = getWindowHeight();          
                    
          setContentConainerSize();          
          
          if ($contentType == 'images') {
            setContentItemContainersSizes('.div-bgimage-container', $newWidth, $newHeight);          
            resizeContentItems('.div-bgimage-container', '.img-bgimage');
            setContentItemContainerHeightVariable('.div-bgimage-container');
            setContentItemContainerWidthVariable('.div-bgimage-container');
          } else if ($contentType == 'films') {
            setContentItemContainersSizes('.div-film-container', $newWidth, $newHeight);          
            resizeContentItems('.div-film-container', '.iframe-film');
            setContentItemContainerHeightVariable('.div-film-container');
            setContentItemContainerWidthVariable('.div-film-container');
          }
          
          slideToContentItem($currentContentItemNumber,$contentItemResizeSlideBackDuration);
        });	
      }
            
            
      
      function fadeInContentItems($className) {
        $($className).animate({opacity: 1},$contentItemFadeSpeed, function() {
          $(window).resize();
        });
      }
      
      
      
      function loadNewBgImageSet($parentId) {
        if ($currentContentDbId == $parentId) { return; }
        $('.img-bgimage').animate({opacity: 0},{ duration: $contentItemFadeSpeed });
        $.ajax({
          url: $rootPath + "/php/content/getBgPhotos.php",
          data: { parentId: $parentId, requestorRootPath: $rootPath },
          dataType: 'json',
          success: function(data) {
          	$currentContentItemNumber = 1;
            $('#div-content-container').html(data.html);
            $('#div-content-container').css({ marginLeft: 0 });
            $totalContentItemCount = data.count;
            setupBgImageControllerClickAction();
            $('.img-bgimage').each(function(){
              $(this).load(function(){
                $(this).animate({opacity: 1},$contentItemFadeSpeed, function() {
                  //setBgImageWidthVariable();
                  setBgImageHeightVariable(); 	
                });	
              });	            	
            });
            setupBgImageClickAction();
            $(window).resize();            
            
            $('#span-content-controller-currentnum').html('1');  
            $('#span-content-controller-totalnum').html(data.count);  
          }
        
        });
        $currentContentDbId = $parentId;
        window.location.hash = "#pid=" + $currentContentDbId.toString();
        
      }
      
      function loadNewFilmPlayerSet($parentId) {
        
      }
      
      function setupContentControllerClickAction() {
        $('#span-content-controller-leftarrow').click(function(){
          slideToContentItem($currentContentItemNumber - 1,$contentItemSlideDuration);
          if ($contentType == 'films') {
          	if ($contentType == 'films') {
            changeActiveMenuItem($currentContentItemNumber,'span-menu-category-item-film',null);
          }  
          }  
        });
        $('#span-content-controller-rightarrow').click(function(){
          slideToContentItem($currentContentItemNumber + 1,$contentItemSlideDuration);
          if ($contentType == 'films') {
            changeActiveMenuItem($currentContentItemNumber,'span-menu-category-item-film',null);
          }  
        });
      }
            
      function changeActiveMenuItem($itemPos, $className, $itemId) {
        var $activeMenuAnchor = $('.a-menu-item-category-active').first();
        $activeMenuAnchor.removeClass('a-menu-item-category-active');
        $activeMenuAnchor.parent().removeClass('span-menu-item-category-active');
        
        var $newItemId;
        if ($itemId == null) {
          $itemPos--;
          $newItemId = $menuItems[$contentType][$itemPos.toString()].id;
        } else {
          $newItemId = $itemId;	
        }
        var $newItemSpan = $('.' + $className + "[href='" + $newItemId + "']");
        $newItemSpan.removeAttr('style');
        $newItemSpan.addClass('span-menu-item-category-active');	
        $newItemSpan.find('a').removeAttr('style');
        $newItemSpan.find('a').addClass('a-menu-item-category-active');	                  	
      }
      
      function setupContentItemContainerClickAction($className) {
        $($className).click(function(){ 
        	slideToContentItem(parseInt($(this).attr('href'))+1,$contentItemSlideDuration);
        	if ($contentType == 'films') {
              changeActiveMenuItem($currentContentItemNumber,'span-menu-category-item-film',null);	
            } 
        });
        $('#div-content-container').swipe({
          swipeLeft: function(){ 
            slideToContentItem($currentContentItemNumber + 1, $totalContentItemCount); 
          },
          swipeRight: function(){ 
            slideToContentItem($currentContentItemNumber - 1, $totalContentItemCount); 
          }
        });
        
      }
      
      function setupColorChange($holderElemType, $holderClassName, $currentClassName) {
        $origColor = $('.' + $holderClassName + ' span').css('color'); 
        $($holderElemType + '.' + $holderClassName + ' span').hover(function() {
          if (!$(this).hasClass('span-menu-item-category-active')) {
            var $color =  buildRandomRgbString();
            $(this).animate({'color': $color},$colorChangeSpeed);
            $('a',this).animate({'color': $color},$colorChangeSpeed);
          }
        },function() {
          if (!$(this).hasClass('span-menu-item-category-active')) {	
            $(this).not('.' + $currentClassName + ' span').animate ({'color': $origColor},$colorChangeSpeed);
            $('a',this).not('.' + $currentClassName + ' span').animate ({'color': $origColor},$colorChangeSpeed);
          } 
        });			
        var $color = buildRandomRgbString(); 
        $('.' + $currentClassName + ' span').css({'color': $color});
        $('a','.' + $currentClassName + ' span').css({'color': $color});	
      }
      
      function checkWindowSize($url) {
      	var $result = false;
        if ($(window).height() != $fixedWindowOptions.height.toString() || $(window).height() != $fixedWindowOptions.height.toString()) {
          alert("window width: " + $(window).width() + "\nwindow height: " + $(window).height());
          //loadFixedSizeWindow($url);
          $result = true;	
        } else {
          $result = true;	
        }
        return $result;	      	
      }
      
      
      function resizeContentItems($containerClassName, $className) {
        $($containerClassName).each(function(){
          var $contentItemNumber = $(this).attr('href');
          setContentItemSize($containerClassName, $className, $contentItemNumber);    	
        });	      	
      }
      
      function checkForHashContentTag() {      	
        var $hash = window.location.hash.substring(1);
        var $args = $hash.split("&");
        for(var $x = 0; $x < $args.length; $x++) {
          var $keyValue = $args[$x].split("=");
          if ($keyValue[0] == 'pid') {
            loadNewBgImageSet($keyValue[1]);  	
          }	
        }	
      }
      
      function loadFixedSizeWindow($url) {
      	
      	var $windowOpenOptions = "";
        for(var $optionName in $fixedWindowOptions) {
          if(typeof($fixedWindowOptions[$optionName]) != "undefined") {
            $windowOpenOptions += $optionName + "=" + $fixedWindowOptions[$optionName] + ",";
          }
        }
        var $newWindow = window.open($url,$fixedWindowOptions.target,$windowOpenOptions);    	      	
        
        //window.resizeTo(parseInt($fixedWindowOptions.width),parseInt($fixedWindowOptions.height));
        //fadeInInitialObjects();
    	
        
      }
            
      function initPage() {
        fadeInMenu();  
        setupContentItemContainerClickAction('.div-bgimage-container');
        setupContentItemContainerClickAction('.div-film-container');
        setupContentControllerClickAction();                
        fadeInContentItems('.img-bgimage');
        fadeInContentItems('.iframe-film');	
        setupWindowResizeAction();
        $(window).resize();
        checkForHashContentTag();
        if($slideToContentItemNumber > -1) {
          slideToContentItem($slideToContentItemNumber, $totalContentItemCount); 	
        }
      }
      
      $(document).ready(function(){
        initPage();     	
      });
      
            
