Apache2-UploadProgress
view release on metacpan or search on metacpan
extra/progress.js view on Meta::CPAN
var num = new Number(number);
return num.toFixed(precision)
}
function setActiveStyleSheet(title) {
var i, a, main;
for(i=0; (a = document.getElementsByTagName("link")[i]); i++) {
if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {
a.disabled = true;
if(a.getAttribute("title") == title)
a.disabled = false;
}
}
}
var alpha = "0123456789abcdef";
function generateProgressID() {
var id = '';
for(var i=0; i < 32; i++) {
id += alpha.charAt(Math.round(Math.random()*14));
}
return id;
}
/*------------------------------------------------------------------------------
Jemplate - Template Toolkit for Javascript
DESCRIPTION - This module provides the runtime Javascript support for
compiled Jemplate templates.
AUTHOR - Ingy döt Net <ingy@cpan.org>
Copyright 2006 Ingy döt Net. All Rights Reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself.
------------------------------------------------------------------------------*/
//------------------------------------------------------------------------------
// Main Jemplate class
//------------------------------------------------------------------------------
if (typeof Jemplate == 'undefined')
Jemplate = function() {};
Jemplate.templateMap = {};
Jemplate.process = function(template, data, output) {
var context = new Jemplate.Context();
context.stash = new Jemplate.Stash();
context._filter = new Jemplate.Filter();
var result;
var proc = function(input) {
try {
result = context.process(template, input);
}
catch(e) {
if (! String(e).match(/Jemplate\.STOP\n/))
throw(e);
result = e.toString().replace(/Jemplate\.STOP\n/, '')
}
if (typeof output == 'undefined')
return result;
if (typeof output == 'function') {
output(result);
return;
}
if (typeof(output) == 'string' || output instanceof String) {
if (output.match(/^#[\w\-]+$/)) {
var id = output.replace(/^#/, '');
var element = document.getElementById(id);
if (typeof element == 'undefined')
throw('No element found with id="' + id + '"');
element.innerHTML = result;
return;
}
}
else {
output.innerHTML = result;
return;
}
throw("Invalid arguments in call to Jemplate.process");
return 1;
}
if (typeof data == 'function')
data = data();
else if (typeof data == 'string') {
Ajax.get(data, function(r) { proc(JSON.parse(r)) });
return;
}
return proc(data);
}
//------------------------------------------------------------------------------
// Jemplate.Context class
//------------------------------------------------------------------------------
if (typeof Jemplate.Context == 'undefined')
Jemplate.Context = function() {};
proto = Jemplate.Context.prototype;
proto.include = function(template, args) {
return this.process(template, args, true);
}
proto.process = function(template, args, localise) {
if (localise)
this.stash.clone(args);
else
this.stash.update(args);
var func = Jemplate.templateMap[template];
if (typeof func == 'undefined')
throw('No Jemplate template named "' + template + '" available');
var output = func(this);
if (localise)
this.stash.declone();
return output;
}
proto.set_error = function(error, output) {
this._error = [error, output];
return error;
}
proto.filter = function(text, name, args) {
if (name == 'null')
name = "null_filter";
if (typeof this._filter.filters[name] == "function")
return this._filter.filters[name](text, args, this);
else
throw "Unknown filter name ':" + name + "'";
}
//------------------------------------------------------------------------------
// Jemplate.Filter class
//------------------------------------------------------------------------------
if (typeof Jemplate.Filter == 'undefined') {
Jemplate.Filter = function() { };
}
proto = Jemplate.Filter.prototype;
proto.filters = {};
proto.filters.null_filter = function(text) {
return '';
}
proto.filters.upper = function(text) {
return text.toUpperCase();
}
proto.filters.lower = function(text) {
return text.toLowerCase();
}
proto.filters.ucfirst = function(text) {
var first = text.charAt(0);
var rest = text.substr(1);
return first.toUpperCase() + rest;
}
proto.filters.lcfirst = function(text) {
var first = text.charAt(0);
var rest = text.substr(1);
return first.toLowerCase() + rest;
}
proto.filters.trim = function(text) {
return text.replace( /^\s+/g, "" ).replace( /\s+$/g, "" );
}
proto.filters.collapse = function(text) {
return text.replace( /^\s+/g, "" ).replace( /\s+$/g, "" ).replace(/\s+/, " ");
}
proto.filters.html = function(text) {
text = text.replace(/&/g, '&');
text = text.replace(/</g, '<');
text = text.replace(/>/g, '>');
text = text.replace(/"/g, '"'); // " end quote for emacs
return text;
}
proto.filters.html_para = function(text) {
var lines = text.split(/(?:\r?\n){2,}/);
return "<p>\n" + lines.join("\n</p>\n\n<p>\n") + "</p>\n";
}
proto.filters.html_break = function(text) {
return text.replace(/(\r?\n){2,}/g, "$1<br />$1<br />$1");
extra/progress.js view on Meta::CPAN
return list.sort(function(a, b) { return (a-b) });
}
// size number of pairs
proto.hash_functions.size = function(hash) {
var size = 0;
for (var key in hash)
size++;
return size;
}
// sort keys sorted alphabetically
proto.hash_functions.sort = function(hash) {
var list = new Array();
for (var key in hash)
list.push(key);
return list.sort();
}
// values list of values
proto.hash_functions.values = function(hash) {
var list = new Array();
for ( var key in hash )
list.push(hash[key]);
return list;
}
//------------------------------------------------------------------------------
// Jemplate.Iterator class
//------------------------------------------------------------------------------
if (typeof Jemplate.Iterator == 'undefined') {
Jemplate.Iterator = function(object) {
if( object instanceof Array ) {
this.object = object;
}
else if ( object instanceof Object ) {
this.object = object;
var object_keys = new Array;
for( var key in object ) {
object_keys[object_keys.length] = key;
}
this.object_keys = object_keys.sort();
}
}
}
proto = Jemplate.Iterator.prototype;
proto.get_first = function() {
this.index = 0;
return this.get_next();
}
proto.get_next = function() {
var object = this.object;
var index = this.index++;
if (typeof object == 'undefined')
throw('No object to iterate');
if( this.object_keys ) {
if (index < this.object_keys.length)
return [this.object_keys[index], false];
} else {
if (index < object.length)
return [object[index], false];
}
return [null, true];
}
//------------------------------------------------------------------------------
// Debugging Support
//------------------------------------------------------------------------------
function XXX(msg) {
if (! confirm(msg))
throw("terminated...");
}
function JJJ(obj) {
XXX(JSON.stringify(obj));
}
//------------------------------------------------------------------------------
// Ajax support
//------------------------------------------------------------------------------
if (! this.Ajax) Ajax = {};
Ajax.get = function(url, callback) {
var req = new XMLHttpRequest();
req.open('GET', url, Boolean(callback));
return Ajax._send(req, null, callback);
}
Ajax.post = function(url, data, callback) {
var req = new XMLHttpRequest();
req.open('POST', url, Boolean(callback));
req.setRequestHeader(
'Content-Type',
'application/x-www-form-urlencoded'
);
return Ajax._send(req, data, callback);
}
Ajax._send = function(req, data, callback) {
if (callback) {
req.onreadystatechange = function() {
if (req.readyState == 4) {
if(req.status == 200)
callback(req.responseText);
}
};
}
req.send(data);
if (!callback) {
if (req.status != 200)
throw('Request for "' + url +
'" failed with status: ' + req.status);
return req.responseText;
}
}
//------------------------------------------------------------------------------
// Cross-Browser XMLHttpRequest v1.1
//------------------------------------------------------------------------------
/*
Emulate Gecko 'XMLHttpRequest()' functionality in IE and Opera. Opera requires
the Sun Java Runtime Environment <http://www.java.com/>.
by Andrew Gregory
http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/
This work is licensed under the Creative Commons Attribution License. To view a
copy of this license, visit http://creativecommons.org/licenses/by/1.0/ or send
a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305,
USA.
*/
// IE support
if (window.ActiveXObject && !window.XMLHttpRequest) {
window.XMLHttpRequest = function() {
return new ActiveXObject((navigator.userAgent.toLowerCase().indexOf('msie 5') != -1) ? 'Microsoft.XMLHTTP' : 'Msxml2.XMLHTTP');
};
}
// Opera support
if (window.opera && !window.XMLHttpRequest) {
window.XMLHttpRequest = function() {
this.readyState = 0; // 0=uninitialized,1=loading,2=loaded,3=interactive,4=complete
this.status = 0; // HTTP status codes
this.statusText = '';
this._headers = [];
this._aborted = false;
this._async = true;
this.abort = function() {
this._aborted = true;
};
this.getAllResponseHeaders = function() {
return this.getAllResponseHeader('*');
};
this.getAllResponseHeader = function(header) {
var ret = '';
for (var i = 0; i < this._headers.length; i++) {
if (header == '*' || this._headers[i].h == header) {
ret += this._headers[i].h + ': ' + this._headers[i].v + '\n';
}
}
return ret;
};
this.setRequestHeader = function(header, value) {
this._headers[this._headers.length] = {h:header, v:value};
};
this.open = function(method, url, async, user, password) {
this.method = method;
this.url = url;
this._async = true;
this._aborted = false;
( run in 0.487 second using v1.01-cache-2.11-cpan-39bf76dae61 )