| 
														
															@@ -190,17 +190,18 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/* Method not implemented handlers */ 
														 | 
														
														 | 
														
															 		/* Method not implemented handlers */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		var methods = [], methodDict = Object.create(null), checker = Object.create(null); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		var methods = [], methodDict = Object.create(null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		this.selectors = []; 
														 | 
														
														 | 
														
															 		this.selectors = []; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		this.jsSelectors = []; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		this.get = function (stSelector) { 
														 | 
														
														 | 
														
															 		this.get = function (stSelector) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			var method = methodDict[stSelector]; 
														 | 
														
														 | 
														
															 			var method = methodDict[stSelector]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if(method) { 
														 | 
														
														 | 
														
															 			if(method) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				return method; 
														 | 
														
														 | 
														
															 				return method; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			this.selectors.push(stSelector); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			var jsSelector = st.st2js(stSelector); 
														 | 
														
														 | 
														
															 			var jsSelector = st.st2js(stSelector); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			checker[jsSelector] = true; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			this.selectors.push(stSelector); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			this.jsSelectors.push(jsSelector); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			method = {jsSelector: jsSelector, fn: createHandler(stSelector)}; 
														 | 
														
														 | 
														
															 			method = {jsSelector: jsSelector, fn: createHandler(stSelector)}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			methodDict[stSelector] = method; 
														 | 
														
														 | 
														
															 			methodDict[stSelector] = method; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			methods.push(method); 
														 | 
														
														 | 
														
															 			methods.push(method); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -208,10 +209,6 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			return method; 
														 | 
														
														 | 
														
															 			return method; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}; 
														 | 
														
														 | 
														
															 		}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		this.isSelector = function (jsSelector) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			return checker[jsSelector]; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/* Dnu handler method */ 
														 | 
														
														 | 
														
															 		/* Dnu handler method */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		function createHandler(stSelector) { 
														 | 
														
														 | 
														
															 		function createHandler(stSelector) { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -219,19 +216,12 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				return brikz.messageSend.messageNotUnderstood(this, stSelector, arguments); 
														 | 
														
														 | 
														
															 				return brikz.messageSend.messageNotUnderstood(this, stSelector, arguments); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			}; 
														 | 
														
														 | 
														
															 			}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		this.installHandlers = function (klass) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			for(var i=0; i<methods.length; i++) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				manip.installMethodIfAbsent(methods[i], klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	function ClassInitBrik(brikz, st) { 
														 | 
														
														 | 
														
															 	function ClassInitBrik(brikz, st) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		var dnu = brikz.ensure("dnu"); 
														 | 
														
														 | 
														
															 		var dnu = brikz.ensure("dnu"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		var manip = brikz.ensure("manipulation"); 
														 | 
														
														 | 
														
															 		var manip = brikz.ensure("manipulation"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		var nil = brikz.ensure("root").nil; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/* Initialize a class in its class hierarchy. Handle both classes and 
														 | 
														
														 | 
														
															 		/* Initialize a class in its class hierarchy. Handle both classes and 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		 metaclasses. */ 
														 | 
														
														 | 
														
															 		 metaclasses. */ 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -246,46 +236,27 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		function initClass(klass) { 
														 | 
														
														 | 
														
															 		function initClass(klass) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			if(klass.wrapped) { 
														 | 
														
														 | 
														
															 			if(klass.wrapped) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				copySuperclass(klass); 
														 | 
														
														 | 
														
															 				copySuperclass(klass); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				dnu.installHandlers(klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			} 
														 | 
														
														 | 
														
															 			} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		this.initClass = initClass; 
														 | 
														
														 | 
														
															 		this.initClass = initClass; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		function copySuperclass(klass, superclass) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			var inheritedMethods = Object.create(null); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			deinstallAllMethods(klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			for (superclass = superclass || klass.superclass; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				 superclass && superclass !== nil; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				 superclass = superclass.superclass) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				for (var keys = Object.keys(superclass.methods), i = 0; i < keys.length; i++) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					inheritMethodIfAbsent(superclass.methods[keys[i]]); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			manip.reinstallMethods(klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			function inheritMethodIfAbsent(method) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				var selector = method.selector; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				//TODO: prepare klass methods into inheritedMethods to only test once 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				if(klass.methods[selector] || inheritedMethods[selector]) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					return; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				manip.installMethod(method, klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				inheritedMethods[method.selector] = true; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		function deinstallAllMethods(klass) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			var proto = klass.fn.prototype; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			for(var keys = Object.getOwnPropertyNames(proto), i=0; i<keys.length; i++) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				var key = keys[i]; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				if (dnu.isSelector(key)) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-					proto[key] = null; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		function copySuperclass(klass) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			var superclass = klass.superclass, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				localMethods = klass.methods, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				protectedJsSelectors = {}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			Object.keys(localMethods).forEach(function (each) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				protectedJsSelectors[localMethods[each].jsSelector] = true; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			var superproto = superclass.fn.prototype; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			dnu.jsSelectors.forEach(function (selector) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				if (!protectedJsSelectors[selector]) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					manip.installMethod({ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						jsSelector: selector, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+						fn: superproto[selector] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+					}, klass); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 				} 
														 | 
														
														 | 
														
															 				} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -304,13 +275,6 @@ define("amber/boot", [ 'require', './browser-compatibility' ], function (require 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			}); 
														 | 
														
														 | 
														
															 			}); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		} 
														 | 
														
														 | 
														
															 		} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		this.installMethod = installMethod; 
														 | 
														
														 | 
														
															 		this.installMethod = installMethod; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															- 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		this.reinstallMethods = function (klass) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			var methods = klass.methods; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			for(var keys = Object.keys(methods), i=0; i<keys.length; i++) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-				installMethod(methods[keys[i]], klass); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-			} 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		}; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	} 
														 | 
														
														 | 
														
															 	} 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	function ClassesBrik(brikz, st) { 
														 | 
														
														 | 
														
															 	function ClassesBrik(brikz, st) { 
														 |