/*
 * jQuery Progress Bar plugin
 * Version 1.1.0 (06/20/2008)
 * @requires jQuery v1.2.1 or later
 *
 * Copyright (c) 2008 Gary Teo
 * http://t.wits.sg

USAGE:
  jQuery(".someclass").progressBar();
  jQuery("#progressbar").progressBar();
  jQuery("#progressbar").progressBar(45);              // percentage
  jQuery("#progressbar").progressBar({showText: false });      // percentage with config
  jQuery("#progressbar").progressBar(45, {showText: false });    // percentage with config
*/
(function(jQuery) {
  jQuery.extend({
    progressBar: new function() {

      this.defaults = {
        increment : 2,
        speed   : 15,
        showText  : true,                     // show text with percentage in next to the progressbar? - default : true
        width   : 120,                      // Width of the progressbar - don't forget to adjust your image too!!!
        boxImage    : '/Themes/Default/Images/ProgressBar/progressbar.gif',   // boxImage : image around the progress bar
        barImage    : '/Themes/Default/Images/ProgressBar/progressbg_green.gif', // Image to use in the progressbar. Can be an array of images too.
        height    : 12                      // Height of the progressbar - don't forget to adjust your image too!!!
      };
      
      /* public methods */
      this.construct = function(arg1, arg2) {
        var argpercentage = null;
        var argconfig   = null;
        
        if (arg1 != null) {
          if (!isNaN(arg1)) {
            argpercentage   = arg1;
            if (arg2 != null) {
              argconfig = arg2; }
          } else {
            argconfig   = arg1; 
          }
        }
        
        return this.each(function(child) {
          var pb    = this;
          if (argpercentage != null && this.bar != null && this.config != null) {
            this.config.tpercentage = argpercentage;
            if (argconfig != null)
              pb.config     = jQuery.extend(this.config, argconfig);
          } else {
            var jQuerythis       = jQuery(this);
            var config        = jQuery.extend({}, jQuery.progressBar.defaults, argconfig);
            var percentage      = argpercentage;
            if (argpercentage == null)
              var percentage    = jQuerythis.html().replace("%",""); // parsed percentage
            
            
            jQuerythis.html("");
            var bar         = document.createElement('img');
            var text        = document.createElement('span');
            bar.id          = this.id + "_percentImage";
            text.id         = this.id + "_percentText";
            bar.src         = config.boxImage;
            bar.width       = config.width;
            var jQuerybar        = jQuery(bar);
            var jQuerytext       = jQuery(text);
            
            this.bar        = jQuerybar;
            this.ntext        = jQuerytext;
            this.config       = config;
            this.config.cpercentage = 0;
            this.config.tpercentage = percentage;
            
            jQuerybar.css("width", config.width + "px");
            jQuerybar.css("height", config.height + "px");
            jQuerybar.css("background-image", "url(" + config.barImage + ")");
            jQuerybar.css("padding", "0");
            jQuerybar.css("margin", "0");
            jQuerythis.append(jQuerybar);
            jQuerythis.append(jQuerytext);
            
            bar.alt       = this.tpercentage;
            bar.title     = this.tpercentage;
          }
          
          
          
          var t = setInterval(function() {
            var config    = pb.config;
            var cpercentage = parseInt(config.cpercentage);
            var tpercentage = parseInt(config.tpercentage);
            var increment = parseInt(config.increment);
            var bar     = pb.bar;
            var text    = pb.ntext;
            var pixels    = config.width / 100;     // Define how many pixels go into 1%
            
            bar.css("background-position", (((config.width * -1)) + (cpercentage * pixels)) + 'px 50%');
            
            if (config.showText)
              text.html(" " + Math.round(cpercentage) + "%");
            
            if (cpercentage > tpercentage) {
              if (cpercentage - increment  < tpercentage) {
                pb.config.cpercentage = 0 + tpercentage
              } else {
                pb.config.cpercentage -= increment;
              }
            }
            else if (pb.config.cpercentage < pb.config.tpercentage) {
              if (cpercentage + increment  > tpercentage) {
                pb.config.cpercentage = tpercentage
              } else {
                pb.config.cpercentage += increment;
              }
            } 
            else {
              clearInterval(t);
            }
          }, pb.config.speed); 
        });
      };
    }
  });
    
  jQuery.fn.extend({
        progressBar: jQuery.progressBar.construct
  });
  
})(jQuery);