<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>.gitmodules</filename>
    </added>
    <added>
      <filename>Tests/UnitTester</filename>
    </added>
    <added>
      <filename>Tests/UserTests/Element/Element.iframe.html</filename>
    </added>
    <added>
      <filename>Tests/UserTests/Element/Element.iframe.js</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1709,7 +1709,7 @@ Creates an IFrame HTML Element and extends its window and document with MooTools
 
 ### Notes:
 
-- If the IFrame is from the same domain as the &quot;host&quot;, its document and window will be extended with MooTools functionalities, allowing you to fully use MooTools within it.
+- If the IFrame is from the same domain as the &quot;host&quot; or running locally, its document and window will be extended with MooTools functionalities, allowing you to fully use MooTools within it.
 - If the IFrame already exists and has a different name than id, the name will be made the same as the id.
 - If the IFrame is from a different domain, its window and document will not be extended with MooTools methods.
 </diff>
      <filename>Docs/Element/Element.md</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ An XMLHttpRequest Wrapper.
 
 ### Options:
 
-* url        - (*string*: defaults to null) The URL to request.
+* url        - (*string*: defaults to null) The URL to request. (Note, this can also be an instance of [URI][])
 * method     - (*string*: defaults to 'post') The HTTP method for the request, can be either 'post' or 'get'.
 * data       - (*string*: defaults to '') The default data for [Request:send][], used when no data is given.
 * link       - (*string*: defaults to 'ignore') Can be 'ignore', 'cancel' and 'chain'.
@@ -301,3 +301,4 @@ Sends a form or a container of inputs with an HTML request.
 
 [$]: /core/Element/Element/#dollar
 [Request:send]: #Request:send
+[URI]: /more/Native/URI
\ No newline at end of file</diff>
      <filename>Docs/Request/Request.md</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ Inspiration:
 */
 
 var MooTools = {
-	'version': '1.2.3dev',
+	'version': '1.2.4dev',
 	'build': '%build%'
 };
 
@@ -53,7 +53,8 @@ var Native = function(options){
 
 	object.alias = function(a1, a2, a3){
 		if (typeof a1 == 'string'){
-			if ((a1 = this.prototype[a1])) return add(this, a2, a1, a3);
+			var pa1 = this.prototype[a1];
+			if ((a1 = pa1)) return add(this, a2, a1, a3);
 		}
 		for (var a in a1) this.alias(a, a1[a], a2);
 		return this;
@@ -199,7 +200,7 @@ function $H(object){
 };
 
 function $lambda(value){
-	return (typeof value == 'function') ? value : function(){
+	return ($type(value) == 'function') ? value : function(){
 		return value;
 	};
 };</diff>
      <filename>Source/Core/Core.js</filename>
    </modified>
    <modified>
      <diff>@@ -59,17 +59,7 @@ Element.implement({
 		return null;
 	},
 
-	getOffsets: function(){		
-		if (this.getBoundingClientRect){
-			var bound = this.getBoundingClientRect(),
-			html = $(this.getDocument().documentElement),
-			scroll = html.getScroll(),
-			isFixed = (styleString(this, 'position') == 'fixed');
-			return {
-				x: parseInt(bound.left, 10) + ((isFixed) ? 0 : scroll.x) - html.clientLeft,
-				y: parseInt(bound.top, 10) +  ((isFixed) ? 0 : scroll.y) - html.clientTop
-			};
-		}
+	getOffsets: function(){
 
 		var element = this, position = {x: 0, y: 0};
 		if (isBody(this)) return position;
@@ -106,7 +96,7 @@ Element.implement({
 		if (isBody(this)) return {x: 0, y: 0};
 		var offset = this.getOffsets(), scroll = this.getScrolls();
 		var position = {x: offset.x - scroll.x, y: offset.y - scroll.y};
-		var relativePosition = (relative &amp;&amp; (relative = $(relative))) ? relative.getPosition() : {x: 0, y: 0};
+		var relativePosition = (relative &amp;&amp; (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
 		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
 	},
 
@@ -194,8 +184,7 @@ function getCompatElement(element){
 })();
 
 //aliases
-
-Element.alias('position', 'setPosition'); //compatability
+Element.alias('setPosition', 'position'); //compatability
 
 Native.implement([Window, Document, Element], {
 </diff>
      <filename>Source/Element/Element.Dimensions.js</filename>
    </modified>
    <modified>
      <diff>@@ -93,7 +93,7 @@ Native.implement([Element, Window, Document], {
 	},
 
 	cloneEvents: function(from, type){
-		from = $(from);
+		from = document.id(from);
 		var fevents = from.retrieve('events');
 		if (!fevents) return this;
 		if (!type){</diff>
      <filename>Source/Element/Element.Event.js</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@ var Element = new Native({
 		var konstructor = Element.Constructors.get(tag);
 		if (konstructor) return konstructor(props);
 		if (typeof tag == 'string') return document.newElement(tag, props);
-		return $(tag).set(props);
+		return document.id(tag).set(props);
 	},
 
 	afterImplement: function(key, value){
@@ -49,23 +49,26 @@ var IFrame = new Native({
 	initialize: function(){
 		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
 		var props = params.properties || {};
-		var iframe = $(params.iframe) || false;
+		var iframe = document.id(params.iframe);
 		var onload = props.onload || $empty;
 		delete props.onload;
-		props.id = props.name = $pick(props.id, props.name, iframe.id, iframe.name, 'IFrame_' + $time());
+		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
 		iframe = new Element(iframe || 'iframe', props);
 		var onFrameLoad = function(){
 			var host = $try(function(){
 				return iframe.contentWindow.location.host;
 			});
-			if (host == window.location.host){
+			if (!host || host == window.location.host){
 				var win = new Window(iframe.contentWindow);
 				new Document(iframe.contentWindow.document);
 				$extend(win.Element.prototype, Element.Prototype);
 			}
 			onload.call(iframe.contentWindow, iframe.contentWindow.document);
 		};
-		(window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
+		var contentWindow = $try(function(){
+			return iframe.contentWindow;
+		});
+		((contentWindow &amp;&amp; contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
 		return iframe;
 	}
 
@@ -79,7 +82,7 @@ var Elements = new Native({
 		if (options.ddup || options.cash){
 			var uniques = {}, returned = [];
 			for (var i = 0, l = elements.length; i &lt; l; i++){
-				var el = $.element(elements[i], !options.cash);
+				var el = document.id(elements[i], !options.cash);
 				if (options.ddup){
 					if (uniques[el.uid]) continue;
 					uniques[el.uid] = true;
@@ -115,7 +118,7 @@ Document.implement({
 			});
 			tag = '&lt;' + tag + '&gt;';
 		}
-		return $.element(this.createElement(tag)).set(props);
+		return document.id(this.createElement(tag)).set(props);
 	},
 
 	newTextNode: function(text){
@@ -128,17 +131,52 @@ Document.implement({
 
 	getWindow: function(){
 		return this.window;
-	}
+	},
+	
+	id: (function(){
+		
+		var types = {
+
+			string: function(id, nocash, doc){
+				id = doc.getElementById(id);
+				return (id) ? types.element(id, nocash) : null;
+			},
+			
+			element: function(el, nocash){
+				$uid(el);
+				if (!nocash &amp;&amp; !el.$family &amp;&amp; !(/^object|embed$/i).test(el.tagName)){
+					var proto = Element.Prototype;
+					for (var p in proto) el[p] = proto[p];
+				};
+				return el;
+			},
+			
+			object: function(obj, nocash, doc){
+				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
+				return null;
+			}
+			
+		};
+
+		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
+		
+		return function(el, nocash, doc){
+			if (el &amp;&amp; el.$family &amp;&amp; el.uid) return el;
+			var type = $type(el);
+			return (types[type]) ? types[type](el, nocash, doc || document) : null;
+		};
+
+	})()
 
 });
 
-Window.implement({
+if (window.$ == null) Window.implement({
+	$: function(el, nc){
+		return document.id(el, nc, this.document);
+	}
+});
 
-	$: function(el, nocash){
-		if (el &amp;&amp; el.$family &amp;&amp; el.uid) return el;
-		var type = $type(el);
-		return ($[type]) ? $[type](el, nocash, this.document) : null;
-	},
+Window.implement({
 
 	$$: function(selector){
 		if (arguments.length == 1 &amp;&amp; typeof selector == 'string') return this.document.getElements(selector);
@@ -164,31 +202,10 @@ Window.implement({
 
 });
 
-$.string = function(id, nocash, doc){
-	id = doc.getElementById(id);
-	return (id) ? $.element(id, nocash) : null;
-};
-
-$.element = function(el, nocash){
-	$uid(el);
-	if (!nocash &amp;&amp; !el.$family &amp;&amp; !(/^object|embed$/i).test(el.tagName)){
-		var proto = Element.Prototype;
-		for (var p in proto) el[p] = proto[p];
-	};
-	return el;
-};
-
-$.object = function(obj, nocash, doc){
-	if (obj.toElement) return $.element(obj.toElement(doc), nocash);
-	return null;
-};
-
-$.textnode = $.whitespace = $.window = $.document = $arguments(0);
-
 Native.implement([Element, Document], {
 
 	getElement: function(selector, nocash){
-		return $(this.getElements(selector, true)[0] || null, nocash);
+		return document.id(this.getElements(selector, true)[0] || null, nocash);
 	},
 
 	getElements: function(tags, nocash){
@@ -247,7 +264,7 @@ var walk = function(element, walk, start, match, all, nocash){
 	var elements = [];
 	while (el){
 		if (el.nodeType == 1 &amp;&amp; (!match || Element.match(el, match))){
-			if (!all) return $(el, nocash);
+			if (!all) return document.id(el, nocash);
 			elements.push(el);
 		}
 		el = el[walk];
@@ -259,6 +276,7 @@ var attributes = {
 	'html': 'innerHTML',
 	'class': 'className',
 	'for': 'htmlFor',
+	'defaultValue': 'defaultValue',
 	'text': (Browser.Engine.trident || (Browser.Engine.webkit &amp;&amp; Browser.Engine.version &lt; 420)) ? 'innerText' : 'textContent'
 };
 var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
@@ -299,12 +317,12 @@ Hash.each(inserters, function(inserter, where){
 	where = where.capitalize();
 
 	Element.implement('inject' + where, function(el){
-		inserter(this, $(el, true));
+		inserter(this, document.id(el, true));
 		return this;
 	});
 
 	Element.implement('grab' + where, function(el){
-		inserter($(el, true), this);
+		inserter(document.id(el, true), this);
 		return this;
 	});
 
@@ -390,7 +408,7 @@ Element.implement({
 
 	adopt: function(){
 		Array.flatten(arguments).each(function(element){
-			element = $(element, true);
+			element = document.id(element, true);
 			if (element) this.appendChild(element);
 		}, this);
 		return this;
@@ -401,23 +419,23 @@ Element.implement({
 	},
 
 	grab: function(el, where){
-		inserters[where || 'bottom']($(el, true), this);
+		inserters[where || 'bottom'](document.id(el, true), this);
 		return this;
 	},
 
 	inject: function(el, where){
-		inserters[where || 'bottom'](this, $(el, true));
+		inserters[where || 'bottom'](this, document.id(el, true));
 		return this;
 	},
 
 	replaces: function(el){
-		el = $(el, true);
+		el = document.id(el, true);
 		el.parentNode.replaceChild(this, el);
 		return this;
 	},
 
 	wraps: function(el, where){
-		el = $(el, true);
+		el = document.id(el, true);
 		return this.replaces(el).grab(el, where);
 	},
 
@@ -475,7 +493,7 @@ Element.implement({
 		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
 			if (!parent) return null;
 		}
-		return $.element(el, nocash);
+		return document.id(el, nocash);
 	},
 
 	getSelected: function(){
@@ -493,7 +511,7 @@ Element.implement({
 	toQueryString: function(){
 		var queryString = [];
 		this.getElements('input, select, textarea', true).each(function(el){
-			if (!el.name || el.disabled) return;
+			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
 			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
 				return opt.value;
 			}) : ((el.type == 'radio' || el.type == 'checkbox') &amp;&amp; !el.checked) ? null : el.value;
@@ -528,7 +546,7 @@ Element.implement({
 		}
 
 		clean(clone, this);
-		return $(clone);
+		return document.id(clone);
 	},
 
 	destroy: function(){
@@ -550,7 +568,7 @@ Element.implement({
 	},
 
 	hasChild: function(el){
-		el = $(el, true);
+		el = document.id(el, true);
 		if (!el) return false;
 		if (Browser.Engine.webkit &amp;&amp; Browser.Engine.version &lt; 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
 		return (this.contains) ? (this != el &amp;&amp; this.contains(el)) : !!(this.compareDocumentPosition(el) &amp; 16);</diff>
      <filename>Source/Element/Element.js</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ Fx.Morph = new Class({
 	Extends: Fx.CSS,
 
 	initialize: function(element, options){
-		this.element = this.subject = $(element);
+		this.element = this.subject = document.id(element);
 		this.parent(options);
 	},
 </diff>
      <filename>Source/Fx/Fx.Morph.js</filename>
    </modified>
    <modified>
      <diff>@@ -11,7 +11,7 @@ Fx.Tween = new Class({
 	Extends: Fx.CSS,
 
 	initialize: function(element, options){
-		this.element = this.subject = $(element);
+		this.element = this.subject = document.id(element);
 		this.parent(options);
 	},
 </diff>
      <filename>Source/Fx/Fx.Tween.js</filename>
    </modified>
    <modified>
      <diff>@@ -55,8 +55,8 @@ Request.HTML = new Class({
 		response.elements = temp.getElements('*');
 
 		if (options.filter) response.tree = response.elements.filter(options.filter);
-		if (options.update) $(options.update).empty().set('html', response.html);
-		else if (options.append) $(options.append).adopt(temp.getChildren());
+		if (options.update) document.id(options.update).empty().set('html', response.html);
+		else if (options.append) document.id(options.append).adopt(temp.getChildren());
 		if (options.evalScripts) $exec(response.javascript);
 
 		this.onSuccess(response.tree, response.elements, response.html, response.javascript);</diff>
      <filename>Source/Request/Request.HTML.js</filename>
    </modified>
    <modified>
      <diff>@@ -50,6 +50,7 @@ var Request = new Class({
 		$try(function(){
 			this.status = this.xhr.status;
 		}.bind(this));
+		this.xhr.onreadystatechange = $empty;
 		if (this.options.isSuccess.call(this, this.status)){
 			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
 			this.success(this.response.text, this.response.xml);
@@ -57,7 +58,6 @@ var Request = new Class({
 			this.response = {text: null, xml: null};
 			this.failure();
 		}
-		this.xhr.onreadystatechange = $empty;
 	},
 
 	isSuccess: function(){
@@ -114,10 +114,10 @@ var Request = new Class({
 
 		var old = this.options;
 		options = $extend({data: old.data, url: old.url, method: old.method}, options);
-		var data = options.data, url = options.url, method = options.method;
+		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
 
 		switch ($type(data)){
-			case 'element': data = $(data).toQueryString(); break;
+			case 'element': data = document.id(data).toQueryString(); break;
 			case 'object': case 'hash': data = Hash.toQueryString(data);
 		}
 
@@ -126,7 +126,7 @@ var Request = new Class({
 			data = (data) ? format + '&amp;' + data : format;
 		}
 
-		if (this.options.emulation &amp;&amp; ['put', 'delete'].contains(method)){
+		if (this.options.emulation &amp;&amp; !['get', 'post'].contains(method)){
 			var _method = '_method=' + method;
 			data = (data) ? _method + '&amp;' + data : _method;
 			method = 'post';
@@ -137,18 +137,19 @@ var Request = new Class({
 			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
 		}
 
-		if(this.options.noCache) {
-			var noCache = &quot;noCache=&quot; + new Date().getTime();
+		if (this.options.noCache){
+			var noCache = 'noCache=' + new Date().getTime();
 			data = (data) ? noCache + '&amp;' + data : noCache;
 		}
 
+		var trimPosition = url.lastIndexOf('/');
+		if (trimPosition &gt; -1 &amp;&amp; (trimPosition = url.indexOf('#')) &gt; -1) url = url.substr(0, trimPosition);
 
 		if (data &amp;&amp; method == 'get'){
 			url = url + (url.contains('?') ? '&amp;' : '?') + data;
 			data = null;
 		}
 
-
 		this.xhr.open(method.toUpperCase(), url, this.options.async);
 
 		this.xhr.onreadystatechange = this.onStateChange.bind(this);
@@ -185,7 +186,7 @@ var methods = {};
 ['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
 	methods[method] = function(){
 		var params = Array.link(arguments, {url: String.type, data: $defined});
-		return this.send($extend(params, {method: method.toLowerCase()}));
+		return this.send($extend(params, {method: method}));
 	};
 });
 </diff>
      <filename>Source/Request/Request.js</filename>
    </modified>
    <modified>
      <diff>@@ -27,7 +27,8 @@ Element.Events.domready = {
 		var temp = document.createElement('div');
 		(function(){
 			($try(function(){
-				return $(temp).inject(document.body).set('html', 'temp').dispose();
+				temp.doScroll(); // Technique by Diego Perini
+				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
 			})) ? domready() : arguments.callee.delay(50);
 		})();
 	} else if (Browser.Engine.webkit &amp;&amp; Browser.Engine.version &lt; 525){</diff>
      <filename>Source/Utilities/DomReady.js</filename>
    </modified>
    <modified>
      <diff>@@ -39,7 +39,7 @@ var Swiff = new Class({
 		this.setOptions(options);
 		options = this.options;
 		var id = this.id = options.id || this.instance;
-		var container = $(options.container);
+		var container = document.id(options.container);
 
 		Swiff.CallBacks[this.instance] = {};
 
@@ -76,13 +76,13 @@ var Swiff = new Class({
 	},
 
 	replaces: function(element){
-		element = $(element, true);
+		element = document.id(element, true);
 		element.parentNode.replaceChild(this.toElement(), element);
 		return this;
 	},
 
 	inject: function(element){
-		$(element, true).appendChild(this.toElement());
+		document.id(element, true).appendChild(this.toElement());
 		return this;
 	},
 </diff>
      <filename>Source/Utilities/Swiff.js</filename>
    </modified>
    <modified>
      <diff>@@ -21,7 +21,9 @@ License:
 				display: 'block',
 				position: 'absolute',
 				top: 100,
-				left: 100
+				left: 100,
+				overflow: 'hidden',
+				zIndex: 1
 			}
 		}).inject($(document.body));
 		
@@ -33,9 +35,10 @@ License:
 				padding: 5,
 				border: '1px solid green',
 				visibility: 'hidden',
-				position: 'relative'				
+				position: 'relative',
+				overflow: 'hidden'
 			}
-		}).inject(div)
+		}).inject(div);
 		
 		absDiv = new Element('div', {
 			styles: {
@@ -47,9 +50,10 @@ License:
 				visibility: 'hidden',
 				position: 'absolute',
 				top: 10,
-				left: 10				
+				left: 10,
+				overflow: 'hidden'
 			}
-		}).inject(relDiv)
+		}).inject(relDiv);
 	
 		scrollDiv = new Element('div', {
 			styles: {</diff>
      <filename>Specs/Element/Element.Dimensions.js</filename>
    </modified>
    <modified>
      <diff>@@ -1161,6 +1161,17 @@ describe('Element.toQueryString', {
 			'&lt;textarea name=&quot;textarea&quot;&gt;&lt;/textarea&gt;'
 		});
 		value_of(form.toQueryString()).should_be('input=&amp;textarea=');
+	},
+
+	&quot;should return a query string ignoring submit, reset and file form Elements&quot;: function(){
+		var form = new Element('form', { 'html': '' +
+			'&lt;input type=&quot;checkbox&quot; name=&quot;input&quot; value=&quot;checked&quot; checked=&quot;checked&quot; /&gt;' +
+			'&lt;input type=&quot;file&quot; name=&quot;file&quot; /&gt;' +
+			'&lt;textarea name=&quot;textarea&quot;&gt;textarea-value&lt;/textarea&gt;' +
+			'&lt;input type=&quot;submit&quot; name=&quot;go&quot; value=&quot;Go&quot; /&gt;' +
+			'&lt;input type=&quot;reset&quot; name=&quot;cancel&quot; value=&quot;Reset&quot; /&gt;'
+		});
+		value_of(form.toQueryString()).should_be('input=checked&amp;textarea=textarea-value');
 	}
 
 });
@@ -1327,7 +1338,7 @@ describe('Element.removeProperty', {
 		readonly.removeProperty('readonly');
 		readonly.removeProperty('maxlength');
 		var props = readonly.getProperties('type', 'readonly', 'maxlength');
-		value_of(props).should_be({ type: 'text', readonly: false, maxlength: 0});
+		value_of(props).should_be({ type: 'text', readonly: false, maxlength: Browser.Engine.webkit ? 524288 : 0});
 	}
 
 });</diff>
      <filename>Specs/Element/Element.js</filename>
    </modified>
    <modified>
      <diff>@@ -20,6 +20,27 @@
 					}
 				}).send();
 			}
+		},
+		{
+			title: &quot;Request + Hash&quot;,
+			description: &quot;Sends an AJAX request to the server with a fragment at the end of the URL.&quot;,
+			verify: &quot;Did the ajax log to the screen a success?&quot;,
+			before: function(){
+				new Request({
+					url: 'UserTests/Request/simple.php#test',
+					method: 'get',
+					onRequest: function(){
+						$('log').adopt(new Element('li', {
+							html: 'attempting request...'
+						}))
+					},
+					onSuccess: function(r){
+						$('log').adopt(new Element('li', {
+							html: 'success: ' + r
+						}))
+					}
+				}).send();
+			}
 		}
 	],
 	otherScripts: ['Element']</diff>
      <filename>Tests/UserTests/Request/Request.all.js</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,6 @@
 {
 	&quot;Element&quot;: {
+		&quot;Element&quot;:['iframe'],
 		&quot;Element.Dimensions&quot;:['offsets', 'scrollSize']
 	},
 	&quot;Request&quot;: {</diff>
      <filename>Tests/UserTests/tests.json</filename>
    </modified>
    <modified>
      <diff>@@ -1,14 +1,15 @@
-UnitTester.site = 'MooTools Core';
-UnitTester.title = 'Unit Tests';
-
-window.addEvent('load', function(){
-	var sources = {
-		mootoolsCore: '../'
-	};
-
-	new UnitTester(sources, {
-		'mootools-core': 'UserTests/'
-	}, {
-		autoplay: true
-	});
-});
+var UnitTester = {
+	site: 'MooTools Core',
+	title: 'Unit Tests',
+	path: 'UnitTester/',
+	ready: function(){
+		var sources = {
+			mootoolsCore: '..'
+		};
+		new UnitTester(sources, {
+			'mootools-core': 'UserTests'
+		}, {
+			autoplay: true
+		});
+	}
+};
\ No newline at end of file</diff>
      <filename>Tests/config.js</filename>
    </modified>
    <modified>
      <diff>@@ -3,13 +3,22 @@
 &lt;head&gt;
 	&lt;title&gt;Unit Tester&lt;/title&gt;
 	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
-	&lt;script src=&quot;assets/mootools-1.2.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;assets/mootools-more-1.2.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;assets/clientside.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;assets/UnitTester.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;assets/posteditor.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;assets/Debugger.cnet.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
-	&lt;script src=&quot;config.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;
+&lt;/head&gt;
+&lt;body&gt;
+	&lt;script src=&quot;config.js&quot; type=&quot;text/javascript&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;
+	&lt;script&gt;
+		function scripter(scr) {
+			document.write(&quot;&lt;scri&quot;+&quot;pt src='&quot;+scr+&quot;'&gt; &lt;/scr&quot;+&quot;ipt&gt;&quot;);
+		};
+		scripter(UnitTester.path+'assets/mootools-1.2.js');
+		scripter(UnitTester.path+'assets/mootools-more-1.2.js');
+		scripter(UnitTester.path+'assets/clientside.js');
+		scripter(UnitTester.path+'assets/UnitTester.js');
+		scripter(UnitTester.path+'assets/posteditor.js');
+		scripter(UnitTester.path+'assets/Debugger.cnet.js');
+		
+		document.write('&lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;'+UnitTester.path+'assets/tests.css&quot;/&gt;');
+	&lt;/script&gt;
 	&lt;script&gt;
 		window.addEvent('domready', function(){
 			$('script').set('value', '');
@@ -17,9 +26,6 @@
 		});
 	&lt;/script&gt;
 
-	&lt;link rel=&quot;STYLESHEET&quot; type=&quot;text/css&quot; href=&quot;assets/tests.css&quot;&gt;
-&lt;/head&gt;
-&lt;body&gt;
 	&lt;div id=&quot;title&quot;&gt;
 		&lt;h1&gt;
 			&lt;div style=&quot;float:right; margin-right: 20px&quot;&gt;
@@ -60,8 +66,8 @@
 			&lt;div class=&quot;verify&quot;&gt;
 				&lt;p&gt;{verify}&lt;/p&gt;
 				&lt;div class=&quot;actions&quot;&gt;
-					&lt;a class=&quot;pass&quot;&gt;yes&lt;/a&gt;
-					&lt;a class=&quot;fail&quot;&gt;no&lt;/a&gt;
+					 &lt;a class=&quot;pass&quot;&gt;yes&lt;/a&gt;
+					 &lt;a class=&quot;fail&quot;&gt;no&lt;/a&gt;
 				&lt;/div&gt;
 			&lt;/div&gt;
 		&lt;/dd&gt;</diff>
      <filename>Tests/index.html</filename>
    </modified>
    <modified>
      <diff>@@ -3,10 +3,10 @@
 &lt;head&gt;
 	&lt;title&gt;Unit Test Runner&lt;/title&gt;
 	&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot;/&gt;
-	&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;assets/tests.css&quot; /&gt;
 	&lt;script&gt;
 		//map dbug in this frame to the parent logger
 		var dbug = window.parent.dbug;
+		document.write('&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; media=&quot;screen&quot; href=&quot;'+window.parent.UnitTester.path+'assets/tests.css&quot; /&gt;')
 		//these two methods are referenced in UnitTester.js via the parent window
 		//define $exec, which needs to work w/o any dependencies for the test framework
 		function $exec(text){
@@ -29,7 +29,7 @@
 			script.src = scr;
 			var head = document.getElementsByTagName('head')[0];
 			head.appendChild(script);
-		}
+		}		
 	&lt;/script&gt;
 	&lt;style&gt;
 	body {</diff>
      <filename>Tests/test_frame.html</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>Tests/DemoScripts/Source/Methods/StringMethods.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoScripts/Source/Methods/getElement.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoScripts/Source/Methods/setHTML.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoScripts/Source/PromptUser/SimplePrompt.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoScripts/Source/scripts.json</filename>
    </removed>
    <removed>
      <filename>Tests/DemoTests/PromptUser/SimplePrompt.capitalization.html</filename>
    </removed>
    <removed>
      <filename>Tests/DemoTests/PromptUser/SimplePrompt.capitalization.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoTests/PromptUser/SimplePrompt.nocaps.html</filename>
    </removed>
    <removed>
      <filename>Tests/DemoTests/PromptUser/SimplePrompt.nocaps.js</filename>
    </removed>
    <removed>
      <filename>Tests/DemoTests/tests.json</filename>
    </removed>
    <removed>
      <filename>Tests/assets/Debugger.cnet.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/UnitTester.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/clientside.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/docs.css</filename>
    </removed>
    <removed>
      <filename>Tests/assets/empty_test.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/fireDomReady.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/bookmarklet.html</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/debugger-iframe.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/debugger.css</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/debugger.html</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/debugger.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/close.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/error.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/group-close.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/group-open.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/icon.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/info.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/lick.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/max.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/min.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/mootools.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/time.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/images/warning.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/moobugger/test.html</filename>
    </removed>
    <removed>
      <filename>Tests/assets/mootools-1.2.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/mootools-more-1.2.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/posteditor.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/radio.checked.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/radio.unchecked.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/showdown.js</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/big_button.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/big_button_over.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/body.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/body.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/bottom.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/bottom.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/closebtn.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/closebtn_over.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/drag_corner.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/full.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/full.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/full.psd</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/stickywin.css</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/stickywin.html</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/top.gif</filename>
    </removed>
    <removed>
      <filename>Tests/assets/stickyWinHTML/top.png</filename>
    </removed>
    <removed>
      <filename>Tests/assets/tests.css</filename>
    </removed>
    <removed>
      <filename>Tests/assets/waiter/waiter.gif</filename>
    </removed>
    <removed>
      <filename>Tests/readme.html</filename>
    </removed>
    <removed>
      <filename>Tests/readme.md</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>8d710013ea90e5eb283a9b3add78f97d0a068757</id>
    </parent>
  </parents>
  <author>
    <name>Scott Kyle</name>
    <email>scott@appden.com</email>
  </author>
  <url>http://github.com/subtleGradient/mootools-core/commit/0f028f5a4ccc52c3e6b6200f948bafbae7d1945e</url>
  <id>0f028f5a4ccc52c3e6b6200f948bafbae7d1945e</id>
  <committed-date>2009-07-29T19:22:51-07:00</committed-date>
  <authored-date>2009-07-29T19:22:51-07:00</authored-date>
  <message>Updated to 1.2.3</message>
  <tree>b45b053b22d8f58cffa5193ac546e51c382b11c1</tree>
  <committer>
    <name>Scott Kyle</name>
    <email>scott@appden.com</email>
  </committer>
</commit>
