src/pyams_skin/resources/js/ext/jquery-progressbar.js
changeset 0 bb4aabe07487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/jquery-progressbar.js	Thu Feb 19 10:59:00 2015 +0100
@@ -0,0 +1,210 @@
+/*
+ * jQuery Progress Bar plugin
+ * Version 2.0 (06/22/2009)
+ * @requires jQuery v1.2.1 or later
+ *
+ * Copyright (c) 2008 Gary Teo
+ * http://t.wits.sg
+
+ USAGE:
+ $(".someclass").progressBar();
+ $("#progressbar").progressBar();
+ $("#progressbar").progressBar(45);							// percentage
+ $("#progressbar").progressBar({showText: false });			// percentage with config
+ $("#progressbar").progressBar(45, {showText: false });		// percentage with config
+ */
+(function ($) {
+
+	$.extend({
+
+				 progressBar: new function () {
+
+					 this.defaults = {
+						 steps: 20,											// steps taken to reach target
+						 step_duration: 20,
+						 max: 100,											// Upon 100% i'd assume, but configurable
+						 showText: true,											// show text with percentage in next to the progressbar? - default : true
+						 textFormat: 'percentage',									// Or otherwise, set to 'fraction'
+						 width: 120,											// Width of the progressbar - don't forget to adjust your image too!!!												// Image to use in the progressbar. Can be a single image too: 'images/progressbg_green.gif'
+						 height: 12,											// Height of the progressbar - don't forget to adjust your image too!!!
+						 callback: null,											// Calls back with the config object that has the current percentage, target percentage, current image, etc
+						 boxImage: '/--static--/ztfy.jqueryui/img/progressbar.gif',						// boxImage : image around the progress bar
+						 barImage: {
+							 0: '/--static--/ztfy.jqueryui/img/progressbg_red.gif',
+							 30: '/--static--/ztfy.jqueryui/img/progressbg_orange.gif',
+							 70: '/--static--/ztfy.jqueryui/img/progressbg_green.gif'
+						 },
+						 // Internal use
+						 running_value: 0,
+						 value: 0,
+						 image: null
+					 };
+
+					 /* public methods */
+					 this.construct = function (arg1, arg2) {
+						 var argvalue = null;
+						 var argconfig = null;
+
+						 if (arg1 != null) {
+							 if (!isNaN(arg1)) {
+								 argvalue = arg1;
+								 if (arg2 != null) {
+									 argconfig = arg2;
+								 }
+							 } else {
+								 argconfig = arg1;
+							 }
+						 }
+
+						 return this.each(function (child) {
+							 var pb = this;
+							 var config = this.config;
+
+							 if (argvalue != null && this.bar != null && this.config != null) {
+								 this.config.value = argvalue
+								 if (argconfig != null)
+									 pb.config = $.extend(this.config, argconfig);
+								 config = pb.config;
+							 } else {
+								 var $this = $(this);
+								 var config = $.extend({}, $.progressBar.defaults, argconfig);
+								 config.id = $this.attr('id') ? $this.attr('id') : Math.ceil(Math.random() * 100000);	// random id, if none provided
+
+								 if (argvalue == null)
+									 argvalue = $this.html().replace("%", "")	// parse percentage
+
+								 config.value = argvalue;
+								 config.running_value = 0;
+								 config.image = getBarImage(config);
+
+								 $this.html("");
+								 var bar = document.createElement('img');
+								 var text = document.createElement('span');
+								 var $bar = $(bar);
+								 var $text = $(text);
+								 pb.bar = $bar;
+
+								 $bar.attr('id', config.id + "_pbImage");
+								 $text.attr('id', config.id + "_pbText");
+								 $text.html(getText(config));
+								 $bar.attr('title', getText(config));
+								 $bar.attr('alt', getText(config));
+								 $bar.attr('src', config.boxImage);
+								 $bar.attr('width', config.width);
+								 $bar.css("width", config.width + "px");
+								 $bar.css("height", config.height + "px");
+								 $bar.css("background-image", "url(" + config.image + ")");
+								 $bar.css("background-position", ((config.width * -1)) + 'px 50%');
+								 $bar.css("padding", "0");
+								 $bar.css("margin", "0");
+								 $this.append($bar);
+								 $this.append($text);
+							 }
+
+							 function getPercentage(config) {
+								 return config.running_value * 100 / config.max;
+							 }
+
+							 function getBarImage(config) {
+								 var image = config.barImage;
+								 if (typeof(config.barImage) == 'object') {
+									 for (var i in config.barImage) {
+										 if (getPercentage(config) >= parseInt(i)) {
+											 image = config.barImage[i];
+										 } else {
+											 break;
+										 }
+									 }
+								 }
+								 return image;
+							 }
+
+							 function getText(config) {
+								 if (config.showText) {
+									 if (config.textFormat == 'percentage') {
+										 return " " + Math.round(config.running_value) + "%";
+									 } else if (config.textFormat == 'fraction') {
+										 return " " + config.running_value + '/' + config.max;
+									 }
+								 }
+							 }
+
+							 config.increment = Math.round((config.value - config.running_value) / config.steps);
+							 if (config.increment < 0)
+								 config.increment *= -1;
+							 if (config.increment < 1)
+								 config.increment = 1;
+
+							 var t = setInterval(function () {
+								 var pixels = config.width / 100;			// Define how many pixels go into 1%
+								 var stop = false;
+
+								 if (config.running_value > config.value) {
+									 if (config.running_value - config.increment < config.value) {
+										 config.running_value = config.value;
+									 } else {
+										 config.running_value -= config.increment;
+									 }
+								 }
+								 else if (config.running_value < config.value) {
+									 if (config.running_value + config.increment > config.value) {
+										 config.running_value = config.value;
+									 } else {
+										 config.running_value += config.increment;
+									 }
+								 }
+
+								 if (config.running_value == config.value)
+									 clearInterval(t);
+
+								 var $bar = $("#" + config.id + "_pbImage");
+								 var $text = $("#" + config.id + "_pbText");
+								 var image = getBarImage(config);
+								 if (image != config.image) {
+									 $bar.css("background-image", "url(" + image + ")");
+									 config.image = image;
+								 }
+								 $bar.css("background-position", (((config.width * -1)) + (getPercentage(config) * pixels)) + 'px 50%');
+								 $bar.attr('title', getText(config));
+								 $text.html(getText(config));
+
+								 if (config.callback != null && typeof(config.callback) == 'function')
+									 config.callback(config);
+
+								 pb.config = config;
+							 }, config.step_duration);
+						 });
+					 };
+
+					 this.submit = function (form) {
+						 var files = $('input:file', form);
+						 if (files.length > 0) {
+							 var frame = $('iframe[name=progress]', form);
+							 if (frame.length > 0) {
+								 var uuid = "";
+								 for (var i = 0; i < 32; i++) {
+									 uuid += Math.floor(Math.random() * 16).toString(16);
+								 }
+								 var action = $(form).attr("action");
+								 if (old_id = /X-Progress-ID=([^&]+)/.exec(action)) {
+									 action = action.replace(old_id[1], uuid);
+								 } else {
+									 action = action + "?X-Progress-ID=" + uuid;
+								 }
+								 $(form).attr("action", action);
+								 var progress = $(frame).get(0).contentWindow.updateUploadProgress;
+								 if (progress) {
+									 progress(uuid);
+									 return uuid;
+								 }
+							 }
+						 }
+					 }
+				 }
+			 });
+
+	$.fn.extend({
+					progressBar: $.progressBar.construct
+				});
+
+})(jQuery);