function HTMLProgressBar(sys, code, description) {
  this.create(sys, null, code, null, null, null, null, description, null);
  this.percent = 0;
}

HTMLProgressBar.inherits(HTMLElementBase);

HTMLProgressBar.prototype.name = 'HTMLProgressBar';
HTMLProgressBar.prototype.WIN_WIDTH = 350;
HTMLProgressBar.prototype.WIN_HEIGHT = 165;

HTMLProgressBar.prototype.design = function(doc) {
	this.timeout(this.designSync, 0, [doc]);
}

HTMLProgressBar.prototype.designSync = function(doc) {
  this.div = generateContainerDiv();

  var content = "";

  content += "<table width='100%' height='100%'>";
  content += " <tr>";
  content += "   <td align='center' valign='middle'>";
  content += "    <table width='275' cellspacing='0' cellpadding='0'>";
  content += "      <tr><td>&nbsp;</td><td width='65' height='20' align='center' valign='middle'><div class='exitProgressBar' id='Exit'><a href='javascript:;' onClick='d.pb.close();'><table><tr><td valign='middle'><img src='"+ skin + "remove_item.gif' width='13' height='13' border='0'></td><td valign='middle' style='cursor:pointer'> " + getLocaleMessage("LABEL.CLOSE") + "</td></tr></table></a></div></td></tr>";
  content += "    </table>";
  content += "     <table width='280' height='100' bgColor='#FFFFFF' style='border:1px solid #666666' celspacing='0' cellpadding='0'>";
  content += "      <tr>";
  content += "     <td align='center' valign='middle' bgcolor='#FFFFFF'>";
  content += "        <div id='Message' align='center'>" + this.getDescription() + "</div>";
  content += "        <br>";

  content += "      <table width='250' border='0' align='center' cellpadding='2' cellspacing='1' bgcolor='#000000' id='progressBar'>";
  content += "       <tr>";
  content += "        <td bgcolor='#FFFFFF'>";
  content += "          <table width='0' border='0' cellspacing='0' cellpadding='0'>";
  content += "         <tr>";
  content += "           <td bgcolor='#FFFFFF'><img src='" + skin + "progress.gif' name='Bar' width='0' height='10' id='Bar'></td>";
  content += "           </tr>";
  content += "          </table>";
  content += "         </td>";
  content += "        </tr>";
  content += "         </table>";

  content += "          <table width='250' border='0' align='center' cellpadding='0' cellspacing='0'>";
  content += "         <tr>";
  content += "           <td valign='top' align='right'><div style='font-weight: bold;' id='PercentText'>0%</div></td>";
  content += "       </tr>";
  content += "        </table>";
  content += "    </td>"; 
  content += "     </tr>";
  content += "    </table>";
  content += "   </td>";
  content += "  </tr>";
  content += "</table>";

  this.div.innerHTML = content;
  
  this.progressBar             = findNode(this.div, 'progressBar');
  this.progressBarPercentText  = findNode(this.div, 'PercentText');
  this.progressBar_Bar         = findNode(this.div, 'Bar');
  this.progressBarMessage      = findNode(this.div, 'Message');
  this.progressBarExit         = findNode(this.div, 'Exit');
  
  this.progressBarExit.style.display = "block";
}

HTMLProgressBar.prototype.setPercent = function(percent) {
  this.timeout(this.setPercentSync, 0, [percent]);	
}

HTMLProgressBar.prototype.setPercentSync = function(percent) {
  this.percent = percent;

  var barSize = this.progressBar.width - 5;
  
  this.progressBarPercentText.innerHTML = percent + "%";
  
  if (percent == 0) {
    this.progressBar_Bar.style.width = 0;
  } else {
    this.progressBar_Bar.style.width = (percent * (barSize / 100))+'px';
  }
  
  if (percent >= 100){
    this.progressBar_Bar.style.width = (100 * (barSize / 100))+'px';
  }
}

HTMLProgressBar.prototype.getPercent = function() {
  return this.percent;
}

HTMLProgressBar.prototype.setDescription = function(description) {
	this.timeout(this.setDescriptionSync, 0, [description]);
}

HTMLProgressBar.prototype.setDescriptionSync = function(description) {
  this.description = description;

  this.progressBarMessage.innerHTML = description;
}

HTMLProgressBar.prototype.getDescription = function() {
  return this.description;
}

HTMLProgressBar.prototype.getForm = function() {
  return this.form;
}

HTMLProgressBar.prototype.close = function() {
	this.timeout(this.closeSync, 0, []);
}

HTMLProgressBar.prototype.closeSync = function() {
  try {
	  removeContainerDiv(this.div);
	} catch (ex) {}
}