var ProgressClass = function(){
  var self = this;
  var overlay, progressBox, progressBar, progressBarContainer;
  var slideTimer;
  var step    = 0;
  var maxStep = 11;

  Object.extend(this, {
    start:  function(){
      try {
        $('noptions').hide();
        $('progressStandby').hide();
        progressBox           = $('progressTour');
        progressBar           = $(progressBox.select('.progressBar')[0]);
        progressBarContainer  = $(progressBox.select('.progressBarContainer')[0]);
        overlay               = new OverlayClass(progressBox);
        progressBar.style.width = "0px";
        self.nextSlide();
        slideTimer = setInterval(self.nextSlide, 12000);
	  
        $('progressTour').show();
        $('progressBar').show();
        $('progressTour').show();
        $('progressButton').show();
        $('progressHeadlineUpload').show();
        $('progressX').show();
      }
      catch(e) { console.log(e.message); }
    }, 

    stop:   function(){
      try {
        clearInterval(slideTimer);
        overlay.closeOverlay(); 
        $('noptions').show();
      }
      catch(e) { console.log(e.message); }
    }, 

    update: function(ratio, rTime){
      if (isNaN(ratio)) return;
      ratio = Math.max(Math.min(ratio,1),0);
      try {
        progressBar.style.width =  Math.max(Math.round(Element.getWidth(progressBarContainer) * ratio )-4,0) + "px";
        $('remainingTime').innerHTML = rTime ? rTime : '';
      }
      catch(e) { console.log(e.message); }
    },

    nextSlide: function(){
      new Effect.Fade($('progressTour_'+(step+1)),    {duration: 0.3});
      step = ((step+1) % maxStep);
      new Effect.Appear($('progressTour_'+(step+1)),  {duration: 0.3});
    },

    displayError: function(errorText){
      try {
        $('progressTour').show();
        clearInterval(slideTimer);
        $('progressErrorContent').innerHTML   = errorText;
        self.hideTourSlides();
        $('progressStandby').hide();
        new Effect.Appear($('progressError'),         {duration: 0.3});
      }
      catch(e) { console.log(errorText+": "+e.message); }
    },

    hideError: function(){
      $('progressError').hide();
    },
    
    displayWarning: function(warningText){
      try {
        $('progressTour').show();
        clearInterval(slideTimer);
        $('progressWarningContent').innerHTML   = warningText;
        self.hideTourSlides();
        $('progressStandby').hide();
	$('progressButton').hide();
        new Effect.Appear($('progressWarning'),{duration: 0.3});
        new Effect.Appear($('confirmWarning'),{duration: 0.3});
      }
      catch(e) { console.log(errorText+": "+e.message); }
    },

    hideWarning: function(){
      $('progressWarning').hide();
      $('confirmWarning').hide();
    },
    
    closeWindow: function(){
      $('progressTour').hide();
		  $('progressBar').hide();
      self.hideTourSlides();
		  $('progressButton').hide();
		  $('closeWindow').hide();
		  $('ConfirmWarning').hide();
		  $('progressHeadlineUpload').hide();
		  $('progressHeadlineWarning').hide();
		  $('progressHeadlineInfo').hide();
		  $('progressStandby').hide();
		  $('progressWarning').hide();
		  $('confirmWarning').hide();
    },

    hideTourSlides: function() {
      for (var i=1; i<=maxStep; i++) {
        $('progressTour_'+i).hide();
      };
    },

    displayStandby: function(){
      try {
        self.hideTourSlides();
        $('progressStandby').show();
        clearInterval(slideTimer);
      }
      catch(e) { console.log(e.message); }
    }


  });
}

