diff --git a/build/docs.js b/build/docs.js
new file mode 100644
index 000000000..4ed6cc79c
--- /dev/null
+++ b/build/docs.js
@@ -0,0 +1,98 @@
+load("build/js/json.js");
+load("build/js/xml.js");
+load("build/js/writeFile.js");
+
+var types = {
+ jQuery: "A jQuery object.",
+ Object: "A simple Javascript object. For example, it could be a String or a Number.",
+ String: "A string of characters.",
+ Number: "A numeric valid.",
+ Element: "The Javascript object representation of a DOM Element.",
+ Hash: "A Javascript object that contains key/value pairs in the form of properties and values.",
+ "Array<Element>": "An Array of DOM Elements.",
+ "Array<String>": "An Array of strings.",
+ Function: "A reference to a Javascript function."
+};
+
+var f = readFile("../jquery-svn.js");
+
+var c = [], bm, m;
+var blockMatch = /\/\*\*\s*((.|\n)*?)\s*\*\//g;
+var paramMatch = /\@(\S+) *((.|\n)*?)(?=\n\@|!!!)/m;
+
+while ( bm = blockMatch.exec(f) ) {
+ block = bm[1].replace(/^\s*\* ?/mg,"") + "!!!";
+ var ret = { params: [], examples: [] };
+
+ while ( m = paramMatch.exec( block ) ) {
+ block = block.replace( paramMatch, "" );
+
+ var n = m[1];
+ var v = m[2]
+ .replace(/\s*$/g,"")
+ .replace(/^\s*/g,"")
+ .replace(/&/g, "&")
+ .replace(//g, ">")
+ .replace(/\n/g, "
")
+ /*.replace(/(\s\s+)/g, function(a){
+ var ret = "";
+ for ( var i = 0; i < a.length; i++ )
+ ret += " ";
+ return ret;
+ })*/ || 1;
+
+ if ( n == 'param' || n == 'any' ) {
+ var args = v.split(/\s+/);
+ v = args.slice( 2, args.length );
+ v = { type: args[0], name: args[1], desc: v.join(' ') };
+ if ( n == 'any' ) v.any = 1;
+ n = "params";
+ } else if ( n == 'example' ) {
+ v = { code: v };
+ n = "examples";
+ }
+
+ if ( n == 'desc' || n == 'before' || n == 'after' || n == 'result' ) {
+ ret.examples[ ret.examples.length - 1 ][ n ] = v;
+ } else {
+ if ( ret[ n ] ) {
+ if ( ret[ n ].constructor == Array ) {
+ ret[ n ].push( v );
+ } else {
+ ret[ n ] = [ ret[ n ], v ];
+ }
+ } else {
+ ret[ n ] = v;
+ }
+ }
+ }
+
+ ret.desc = block.replace(/\s*!!!$/,"")
+ .replace(//g, ">");
+ //.replace(/\n\n/g, "
")
+ //.replace(/\n/g, " ");
+
+ var m = /^((.|\n)*?(\.|$))/.exec( ret.desc );
+ if ( m ) ret['short'] = m[1];
+
+ if ( ret.name ) c.push( ret );
+}
+
+var json = Object.toJSON( c );
+
+writeFile( "data/jquery-docs-json.js", json );
+writeFile( "data/jquery-docs-jsonp.js", "docsLoaded(" + json + ")" );
+
+Object.toXML.force = { desc: 1, code: 1, before: 1, result: 1 };
+
+var xml = Object.toXML( { method: c }, "docs" );
+
+writeFile( "data/jquery-docs-xml.xml",
+ "\n" + xml );
+
+writeFile( "index.xml",
+ "\n" +
+ "\n" + xml
+);
diff --git a/build/js/json.js b/build/js/json.js
new file mode 100644
index 000000000..d59ca0c97
--- /dev/null
+++ b/build/js/json.js
@@ -0,0 +1,117 @@
+/*
+ json.js
+ 2006-04-28
+
+ This file adds these methods to JavaScript:
+
+ object.toJSONString()
+
+ This method produces a JSON text from an object. The
+ object must not contain any cyclical references.
+
+ array.toJSONString()
+
+ This method produces a JSON text from an array. The
+ array must not contain any cyclical references.
+
+ string.parseJSON()
+
+ This method parses a JSON text to produce an object or
+ array. It will return false if there is an error.
+*/
+(function () {
+ var m = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ },
+ s = {
+ array: function (x) {
+ var a = ['['], b, f, i, l = x.length, v;
+ for (i = 0; i < l; i += 1) {
+ v = x[i];
+ f = s[typeof v];
+ if (f) {
+ v = f(v);
+ if (typeof v == 'string') {
+ if (b) {
+ a[a.length] = ',';
+ }
+ a[a.length] = v;
+ b = true;
+ }
+ }
+ }
+ a[a.length] = ']';
+ return a.join('');
+ },
+ 'boolean': function (x) {
+ return String(x);
+ },
+ 'null': function (x) {
+ return "null";
+ },
+ number: function (x) {
+ return isFinite(x) ? String(x) : 'null';
+ },
+ object: function (x) {
+ if (x) {
+ if (x instanceof Array) {
+ return s.array(x);
+ }
+ var a = ['{'], b, f, i, v;
+ for (i in x) {
+ v = x[i];
+ f = s[typeof v];
+ if (f) {
+ v = f(v);
+ if (typeof v == 'string') {
+ if (b) {
+ a[a.length] = ',';
+ }
+ a.push(s.string(i), ':', v);
+ b = true;
+ }
+ }
+ }
+ a[a.length] = '}';
+ return a.join('');
+ }
+ return 'null';
+ },
+ string: function (x) {
+ if (/["\\\x00-\x1f]/.test(x)) {
+ x = x.replace(/([\x00-\x1f\\"])/g, function(a, b) {
+ var c = m[b];
+ if (c) {
+ return c;
+ }
+ c = b.charCodeAt();
+ return '\\u00' +
+ Math.floor(c / 16).toString(16) +
+ (c % 16).toString(16);
+ });
+ }
+ return '"' + x + '"';
+ }
+ };
+
+ Object.toJSON = function(obj) {
+ return s.object(obj);
+ };
+})();
+
+String.prototype.parseJSON = function () {
+ try {
+ return !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/.test(
+ this.replace(/"(\\.|[^"\\])*"/g, ''))) &&
+ eval('(' + this + ')');
+ } catch (e) {
+ return false;
+ }
+};
+
diff --git a/build/js/xml.js b/build/js/xml.js
new file mode 100644
index 000000000..cc94eb750
--- /dev/null
+++ b/build/js/xml.js
@@ -0,0 +1,27 @@
+Object.toXML = function( obj, tag ) {
+ if ( obj.constructor == Array ) {
+ var ret = "";
+ for ( var i = 0; i < obj.length; i++ )
+ ret += Object.toXML( obj[i], tag );
+ return ret;
+ } else if ( obj.constructor == Object ) {
+ var tag = tag || "tmp";
+ var p = "", child = "";
+
+ for ( var i in obj )
+ if ( obj[i].constructor == Array || /\n" + child + "" + tag + ">\n" : "/>\n" );
+ } else if ( obj.constructor == String ) {
+ //obj = obj.replace(/</g,"<").replace(/>/g,">");
+ //return "<" + tag + ">" + tag + ">";
+ return "<" + tag + ">" + obj + "" + tag + ">\n";
+ }
+
+ return "";
+};
+
+Object.toXML.force = {};
diff --git a/docs/build/js.jar b/docs/build/js.jar
deleted file mode 100644
index 194e5923e..000000000
Binary files a/docs/build/js.jar and /dev/null differ