// Copyright 2009 John Heminghous
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

//
// LoaderStatus - provides user feedback indicating a page load is taking place
//
function LoaderStatus(minOpacity, changeTime)
{
  var direction = -1;
  var opacity = 100;
  
  function changeOpacity(element, delta)
  {
    if (delta != direction || 
      (delta < 0 && opacity == minOpacity) || 
      (delta > 0 && opacity == 100))
    {
      return;
    }
    opacity += delta;
    element.style.opacity = opacity / 100;
    element.style.MozOpacity = opacity / 100;
    element.style.filter = "alpha(opacity=" + opacity + ")";
    
    setTimeout(
      function() { changeOpacity(element, delta); },
      changeTime/(opacity-minOpacity));
  }
  
  this.preload = function(elementID)
  {
    // Turn on loading indicators
    var content = document.getElementById(elementID);
    if (content)
    {
      direction = -1;
      changeOpacity(content, direction);
    }
  }
  
  this.load = function(elementID)
  {
    // Turn off loading indicators
    var content = document.getElementById(elementID);
    if (content)
    {
      direction = 1;
      changeOpacity(content, direction);
    }
  }
}
