/*
* Copyright (c) 2008 Azeus Systems, Ltd.
* All rights reserved.
*/

/*progress.js
  Created May 25, 2005 by Kristine Chan
 
  Amendment History:
  1) by xxxx
     - xxxx
*/
  
  function toHex(aValue){
    var HEX_DIGITS = "0123456789ABCDEF";
    var lDigit1 = Math.floor(aValue / 16);
    var lDigit2 = Math.floor(aValue % 16);        
    return HEX_DIGITS.charAt(lDigit1)+HEX_DIGITS.charAt(lDigit2);
  }
      
  function undoEvents() {
    if (document.layer)
      document.captureEvents(Event.KEYDOWN);
    document.onkeydown = function (evt) { };
  }


  function genDiv(aTitle, aText, aButton) {  
    var sSmall = "";

    /*
     * no need for this
     *    
    if(window.top.opener || window.top.dialogArguments) {
      sSmall = "_small";
    }
    */
    
    //var form = document.frmETS;
    var form = document.form1;
    var el = document.createElement('div');
    with (el) {
      className="backcover";
      id="backcover";
      innerHTML = '<iframe frameborder="0" width="100%" height="100%" src="blank.html" style="margin:0px;border:0px;padding:0px;"></iframe>';
    }
    form.appendChild(el);
    el = document.createElement('div');
    with (el) {
      className="cover";
      id="cover";
    }
    form.appendChild(el);    
    
    el = document.createElement('div');
    with (el) {     
      className="progress" + sSmall;
      id="progress";
      
      var sClassName = 'progress_child' + sSmall;
      var sRouteName = 'route' + sSmall;
      
      var s = '<div class="'+sRouteName+'" id="route"></div>';
      s = s + '  <table class="'+sClassName+'">';
      if (aTitle)
        s = s + '    <tr><td><span class="section_hdr">'+aTitle+'</span><hr size="1"></td></tr>';
      else
        s = s + '    <tr><td><span class="section_hdr"> ' + LBJSMsgs.MSG_PROCESSING + ' </span><hr size="1"></td></tr>';
      if (aText)
        s = s + '    <tr><td>'+aText+'</td></tr>';
      else
        s = s + '    <tr><td> ' + LBJSMsgs.MSG_WAIT + ' </td></tr>';
      if (aButton)
        s = s + '    '+aButton;
      s = s + '  </table>';
      s = s + '</div>';
      el.innerHTML = s;
    }
    form.appendChild(el);        
  }
  
  function initProgress(aTitle, aText, aButton) {
    var totalSteps = 50;
    undoEvents();
    genDiv(aTitle, aText, aButton);

    var bar = document.getElementById('route');
    bar.Steps = new Array();
    bar.Colors = new Array();
    bar.CurPos = totalSteps - 2;
    bar.CurIndex = Math.floor(totalSteps)-1;
    bar.Direction = 1;
    var i;
    var lRed = 0;
    var lGreen = 60;
    var lBlue = 235;
    
    for (i = 0; i < totalSteps * 2 - 2; i++) {
      //bar.Colors[i] = parseInt((toHex(lRed) + toHex(lGreen+=1.5) + toHex(lBlue-=1.5)),16);
      bar.Colors[i] = ('#' + toHex(lRed) + toHex(lGreen+=1.5) + toHex(lBlue-=1.5));
    }
    
    for (i = 0; i < totalSteps; i++) {
      var el = document.createElement('div');
      with (el.style) {
        width = '3px'; 
        height = '15px';       
        position = 'absolute';
        fontSize = '15px';
        top = '0px';
        left = (i*3) + 'px';
        backgroundColor = bar.Colors[i+bar.CurIndex];
      }
      el.bgColor = bar.Colors[i+bar.CurIndex];
      el.id = "bar_"+i;
      bar.appendChild(el);                    
      bar.Steps[i] = el;
    }
  }
  
  function Dimension(aWidth, aHeight) {
    this.Width = aWidth;
    this.Height = aHeight;
  }
  
  function getPageDimension() {
    var iScrollHeight = document.body.scrollHeight;
    var iOffsetHeight = document.body.clientHeight;
    
    if (iScrollHeight > iOffsetHeight) {
      return new Dimension(document.body.scrollWidth, iScrollHeight);
    } 
    return new Dimension(document.body.clientWidth, iOffsetHeight);
  }      

  function setWidthHeight(aDimension, anID) {
    var obj = document.getElementById(anID);
    with (obj.style) {
      width = aDimension.Width + 'px';
      height = aDimension.Height + 'px';
      left = 0;
      top = 0;
      display = 'block';
    }        
  }
  
  function showProgress(aTitle, aText, aButton) {
    initProgress(aTitle, aText, aButton);        
    //window.scrollTo(0, 0);        
    document.body.style.cursor = 'wait';
    var bar = document.getElementById('progress');
    
    // !vcanas - needs to specify width and height first before setting the display since it causes the page to extend
    var x = Math.floor(document.body.clientWidth / 2) + document.body.scrollLeft;
    var y = Math.floor(document.body.clientHeight / 2) + document.body.scrollTop;
    bar.style.left = (x - 200) + 'px'
    bar.style.top = (y - 50) + 'px'       
    bar.style.display = 'block';
    
    setInterval('progress()', 25);
  }

  function hideProgress() {
    var form = document.frmETS;
    var cover = document.getElementById('cover');
    var progress = document.getElementById('progress');
    var backcover = document.getElementById('backcover');    
    if (cover)
      form.removeChild(cover); 
    if (progress)
      form.removeChild(progress);    
    if (backcover) 
      form.removeChild(backcover);    
    var cover = document.getElementById('cover');
    var progress = document.getElementById('progress');
    var backcover = document.getElementById('backcover');    
    if (cover)
      form.removeChild(cover); 
    if (progress)
      form.removeChild(progress);    
    if (backcover) 
      form.removeChild(backcover);    
    document.body.style.cursor = '';    
  }  
    
  function stopProgress() {
    document.getElementById('route').style.display = "hidden";
  }
  
  function progress() {        
    if (!document.getElementById('progress')||!document.getElementById('backcover')||!document.getElementById('cover')||!document.getElementById('route')) {
      return;
    }
    var bar = document.getElementById('route');
    if (!bar.Colors) {
      return;
    }
    
    var dimension = getPageDimension();
    setWidthHeight(dimension, 'cover');
    setWidthHeight(dimension, 'backcover');
    
    var totalSteps = 50;
    var progress = document.getElementById('progress');        
    
    var x = Math.floor(document.body.clientWidth / 2) + document.body.scrollLeft;
    var y = Math.floor(document.body.clientHeight / 2) + document.body.scrollTop;

    progress.style.left = (x - 200) + 'px'
    progress.style.top = (y - 50) + 'px'
    
    var iMax = bar.Colors.length - 1;
    
    var i;
    if (bar.CurPos <= 0 || bar.CurPos >= totalSteps - 1)
      bar.Direction*=-1;
    bar.CurPos += bar.Direction;
    
    var iStart = bar.CurIndex;
    for (i = 0; i < bar.CurPos; i++) {
      document.getElementById("bar_"+i).style.backgroundColor = bar.Colors[iStart];
      bar.Steps[i].style.backgroundColor = bar.Colors[iStart++];
    }
    document.getElementById("bar_"+bar.CurPos).style.backgroundColor = bar.Colors[iMax];
    bar.Steps[bar.CurPos].style.backgroundColor = bar.Colors[iMax];
    if (bar.Direction == -1)
      iStart = iMax-1;
    else
      iStart = bar.CurIndex - bar.CurPos;
    for (i = bar.CurPos + 1; i < totalSteps; i++) {
      document.getElementById("bar_"+i).style.backgroundColor = bar.Colors[iStart];  			  
      bar.Steps[i].style.backgroundColor = bar.Colors[iStart--];  			  
    }
    bar.CurIndex-=1;
    if (bar.CurIndex < 0)
      bar.CurIndex = bar.Colors.length - 1;
    //setTimeout('progress()', 20);
  }
  
  function resetProgress() {
    try {
      hideProgress();
    } catch (e) {
      //ignore error
    }
  }
  
  window.onunload=resetProgress;
  
