function rtPhotoAlbum(objectType, args){

   this.initInheritedParams(args);
   this.initHelp(objectType);

   /* Initialize Parameters */
   this.params.albumName = 'albumName' in args? args.albumName: "";
   this.params.thumbClass = 'thumbClass' in args? args.thumbClass: "";
   /* Pass through to Nav Scroller */
   this.params.navStyle = 'navStyle' in args? args.navStyle: "slide"; // Pan Show, Slide Show
   this.params.clickToScroll = 'clickToScroll' in args? args.clickToScroll:0;
   this.params.selectContent = 'selectContent' in args? args.selectContent:0;
   this.params.disableContext = 'disableContext' in args? args.disableContext:0;
   this.params.photoBorder = 'photoBorder' in args? args.photoBorder: 0;
   this.params.photoBorderColor = 'photoBorderColor' in args? args.photoBorderColor: "black";
   this.params.photoBorderStyle = 'photoBorderStyle' in args? args.photoBorderStyle: "solid";

   this.container = controlFactory("scrollNav", {position: "absolute", left:"0px", top: "0px", navStyle: this.params.navStyle, 
                                                 clickToScroll: this.params.clickToScroll, selectContent: this.params.selectContent, 
                                                 disableContext: this.params.disableContext, width: this.styleParams.width, border: this.styleParams.border,
                                                 borderStyle: this.styleParams.borderStyle, borderColor: this.styleParams.borderColor});
   this.containerReturn = document.createElement("div");
   this.containerReturn.innerHTML = "";
   this.containerReturn.style.textAlign = "left";
   this.containerReturn.style.color = "white";

   this.thumbReturn = document.createElement("div");
   this.thumbReturn.innerHTML = "Loading Gallery....";
   document.body.style.cursor = 'wait';
   this.thumbReturn.appendChild(document.createElement("br"));
   this.thumbReturn.style.textAlign = "center";
   this.thumbReturn.style.color = "white";

   this.thumbContainer = document.createElement("div");
   this.thumbContainer.className = this.params.thumbClass; 

   this.params.scrollStep;
   this.params.panStep = 1;
   this.timer = "";

   var self = this;
   this.thumbCont;
   this.currentAlbum;

   this.drawAlbum = function() {
      this.loadPhoto(0); 
   }

   this.loadPhoto = function(photoNumber) {
      if(photoNumber == self.currentAlbum.length) {
         this.thumbReturn.innerHTML = "";  this.containerReturn.innerHTML = "";
         document.body.style.cursor = 'auto';
         this.thumbReturn.appendChild(this.thumbContainer);
         this.containerReturn.appendChild(this.container.getControl());
         this.startPhoto();
      } else if (photoNumber < self.currentAlbum.length) {
       // Construct Thumb
         var nav = document.createElement('div');
         nav.style.float = "left"; nav.style.display = "inline"; nav.style.width = "40px";

         var thumb = document.createElement("img");
         thumb.src = self.currentAlbum[photoNumber].source;
         thumb.style.height = "40px";
         thumb.style.width = "40px";
         nav.appendChild(thumb);

         // Construct Stage
         var image = new Image();
         image.photoNum = photoNumber;
         image.parent = this;
         image.nav = nav;

         image.style.border = this.params.photoBorder + "px";
         image.style.borderStyle = this.params.photoBorderStyle;
         image.style.borderColor = this.params.photoBorderColor;

         image.src = self.currentAlbum[photoNumber].source;
         if(image.complete) {
            this.thumbContainer.appendChild(image.nav);
            image.nav.photoCallback =  this.container.appendSection(image, this.params.photoBorder);
            if(photoNumber == 0) { self.startPhoto = image.nav.photoCallback; }
            image.nav.onmouseover = function() { this.photoCallback(); }
            this.loadPhoto(image.photoNum + 1);
         } else {
            image.onload = function() {
               this.parent.thumbContainer.appendChild(this.nav);
               this.nav.photoCallback =  this.parent.container.appendSection(this, this.parent.params.photoBorder);
               this.nav.onmouseover = function() { this.photoCallback(); }
               if(photoNumber == 0) { self.startPhoto = this.nav.photoCallback; }
               var progressNav = document.createElement('div');
               progressNav.style.cssFloat = "left";
               progressNav.style.styleFloat = "left";
               progressNav.style.backgroundColor = "red";
               progressNav.style.height = "5px";
               progressNav.style.width = Math.round(200 / this.parent.currentAlbum.length)  + "px";
               this.parent.thumbReturn.appendChild(progressNav);
               this.parent.loadPhoto(this.photoNum + 1);
            }
         }
      }
   }

   this.loadAlbum = function() {   
      var strScript = "Requests/submitRequest.php";
      strScript = strScript + "?album=" + this.params.albumName;
      strScript = strScript + "&mode=navigation";

      // Make AJAX/JSON call to get the ablum OR get it from the cache
      var json1 = new jsChe(strScript, this);
   }
   
   this.drawPage = function() {
      this.currentAlbum = gContext[this.params.albumName];
      self.drawAlbum();
   }

   this.getThumbNails = function() { 
      return this.thumbReturn;
   }

   // Start downloading the photos so they are cached 
   this.loadAlbum();
   this.setGuts(this.containerReturn);
}
  
rtPhotoAlbum.prototype = new control;
