$estr = function() { return js.Boot.__string_rec(this,''); }
js = {}
js.Boot = function() { }
js.Boot.__name__ = ["js","Boot"];
js.Boot.__unhtml = function(s) {
	return s.split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;");
}
js.Boot.__trace = function(v,i) {
	{
		var msg = (i != null?i.fileName + ":" + i.lineNumber + ": ":"");
		msg += js.Boot.__unhtml(js.Boot.__string_rec(v,"")) + "<br/>";
		var d = document.getElementById("haxe:trace");
		if(d == null) alert("No haxe:trace element defined\n" + msg);
		else d.innerHTML += msg;
	}
}
js.Boot.__clear_trace = function() {
	{
		var d = document.getElementById("haxe:trace");
		if(d != null) d.innerHTML = "";
		else null;
	}
}
js.Boot.__closure = function(o,f) {
	{
		var m = o[f];
		if(m == null) return null;
		var f1 = function() {
			return m.apply(o,arguments);
		}
		f1.scope = o;
		f1.method = m;
		return f1;
	}
}
js.Boot.__string_rec = function(o,s) {
	{
		if(o == null) return "null";
		if(s.length >= 5) return "<...>";
		var t = typeof(o);
		if(t == "function" && (o.__name__ != null || o.__ename__ != null)) t = "object";
		switch(t) {
		case "object":{
			if(o instanceof Array) {
				if(o.__enum__ != null) {
					if(o.length == 2) return o[0];
					var str = o[0] + "(";
					s += "\t";
					{
						var _g1 = 2, _g = o.length;
						while(_g1 < _g) {
							var i = _g1++;
							if(i != 2) str += "," + js.Boot.__string_rec(o[i],s);
							else str += js.Boot.__string_rec(o[i],s);
						}
					}
					return str + ")";
				}
				var l = o.length;
				var i;
				var str = "[";
				s += "\t";
				{
					var _g = 0;
					while(_g < l) {
						var i1 = _g++;
						str += ((i1 > 0?",":"")) + js.Boot.__string_rec(o[i1],s);
					}
				}
				str += "]";
				return str;
			}
			var tostr;
			try {
				tostr = o.toString;
			}
			catch( $e0 ) {
				{
					var e = $e0;
					{
						return "???";
					}
				}
			}
			if(tostr != null && tostr != Object.toString) {
				var s2 = o.toString();
				if(s2 != "[object Object]") return s2;
			}
			var k;
			var str = "{\n";
			s += "\t";
			var hasp = (o.hasOwnProperty != null);
			for( var k in o ) { ;
			if(hasp && !o.hasOwnProperty(k)) continue;
			if(k == "prototype" || k == "__class__" || k == "__super__" || k == "__interfaces__") continue;
			if(str.length != 2) str += ", \n";
			str += s + k + " : " + js.Boot.__string_rec(o[k],s);
			}
			s = s.substring(1);
			str += "\n" + s + "}";
			return str;
		}break;
		case "function":{
			return "<function>";
		}break;
		case "string":{
			return o;
		}break;
		default:{
			return String(o);
		}break;
		}
	}
}
js.Boot.__interfLoop = function(cc,cl) {
	if(cc == null) return false;
	if(cc == cl) return true;
	var intf = cc.__interfaces__;
	if(intf != null) {
		var _g1 = 0, _g = intf.length;
		while(_g1 < _g) {
			var i = _g1++;
			var i1 = intf[i];
			if(i1 == cl || js.Boot.__interfLoop(i1,cl)) return true;
		}
	}
	return js.Boot.__interfLoop(cc.__super__,cl);
}
js.Boot.__instanceof = function(o,cl) {
	{
		try {
			if(o instanceof cl) {
				if(cl == Array) return (o.__enum__ == null);
				return true;
			}
			if(js.Boot.__interfLoop(o.__class__,cl)) return true;
		}
		catch( $e1 ) {
			{
				var e = $e1;
				{
					if(cl == null) return false;
				}
			}
		}
		switch(cl) {
		case Int:{
			return (Math.ceil(o) === o) && isFinite(o);
		}break;
		case Float:{
			return typeof(o) == "number";
		}break;
		case Bool:{
			return (o === true || o === false);
		}break;
		case String:{
			return typeof(o) == "string";
		}break;
		case Dynamic:{
			return true;
		}break;
		default:{
			if(o != null && o.__enum__ == cl) return true;
			return false;
		}break;
		}
	}
}
js.Boot.__init = function() {
	{
		js.Lib.isIE = (document.all != null && window.opera == null);
		js.Lib.isOpera = (window.opera != null);
		Array.prototype.copy = Array.prototype.slice;
		Array.prototype.insert = function(i,x) {
			this.splice(i,0,x);
		}
		Array.prototype.remove = function(obj) {
			var i = 0;
			var l = this.length;
			while(i < l) {
				if(this[i] == obj) {
					this.splice(i,1);
					return true;
				}
				i++;
			}
			return false;
		}
		Array.prototype.iterator = function() {
			return { cur : 0, arr : this, hasNext : function() {
				return this.cur < this.arr.length;
			}, next : function() {
				return this.arr[this.cur++];
			}}
		}
		String.prototype.__class__ = String;
		String.__name__ = ["String"];
		Array.prototype.__class__ = Array;
		Array.__name__ = ["Array"];
		var cca = String.prototype.charCodeAt;
		String.prototype.charCodeAt = function(i) {
			var x = cca.call(this,i);
			if(isNaN(x)) return null;
			return x;
		}
		var oldsub = String.prototype.substr;
		String.prototype.substr = function(pos,len) {
			if(pos != null && pos != 0 && len != null && len < 0) return "";
			if(len == null) len = this.length;
			if(pos < 0) {
				pos = this.length + pos;
				if(pos < 0) pos = 0;
			}
			else if(len < 0) {
				len = this.length + len - pos;
			}
			return oldsub.apply(this,[pos,len]);
		}
		Int = new Object();
		Dynamic = new Object();
		Float = Number;
		Bool = new Object();
		Bool["true"] = true;
		Bool["false"] = false;
		$closure = js.Boot.__closure;
	}
}
js.Boot.prototype.__class__ = js.Boot;
js.fx = {}
js.fx.Anim = function(p) { if( p === $_ ) return; {
	this.fps = 60;
	this.duration = 250;
	this.transition = js.fx.TransitionFunctions.get(js.fx.Transition.Linear);
}}
js.fx.Anim.__name__ = ["js","fx","Anim"];
js.fx.Anim.prototype.cancel = function() {
	if(this.stopTimer() && this.onCancel != null) this.onCancel();
}
js.fx.Anim.prototype.complete = function() {
	if(this.stopTimer()) {
		if(this.onComplete != null) this.onComplete();
		return true;
	}
	return false;
}
js.fx.Anim.prototype.duration = null;
js.fx.Anim.prototype.fps = null;
js.fx.Anim.prototype.next = function() {
	var now = Date.now().getTime();
	if(now < this.time + this.duration) {
		var delta = this.transition((now - this.time) / this.duration,null);
		this.set(delta);
	}
	else {
		this.set(1);
		this.complete();
	}
}
js.fx.Anim.prototype.onCancel = null;
js.fx.Anim.prototype.onComplete = null;
js.fx.Anim.prototype.onStart = null;
js.fx.Anim.prototype.pause = function() {
	this.stopTimer();
}
js.fx.Anim.prototype.resume = function() {
	this.startTimer();
}
js.fx.Anim.prototype.set = function(delta) {
	throw "set(delta:Float) not implemented";
}
js.fx.Anim.prototype.setTransition = function(t) {
	this.transition = js.fx.TransitionFunctions.get(t);
}
js.fx.Anim.prototype.start = function() {
	this.time = 0;
	this.startTimer();
	if(this.onStart != null) this.onStart();
}
js.fx.Anim.prototype.startTimer = function() {
	if(this.timer != null) return false;
	this.time = Date.now().getTime() - this.time;
	this.timer = js.fx.Timer.periodical(function(f) {
		return function() {
			return f();
		}
	}($closure(this,"next")),Math.round(1000 / this.fps));
	return true;
}
js.fx.Anim.prototype.stopTimer = function() {
	if(this.timer == null) return false;
	this.time = Date.now().getTime() - this.time;
	this.timer = js.fx.Timer.clear(this.timer);
	return true;
}
js.fx.Anim.prototype.time = null;
js.fx.Anim.prototype.timer = null;
js.fx.Anim.prototype.transition = null;
js.fx.Anim.prototype.__class__ = js.fx.Anim;
js.fx.Slide = function(e,k,noFlow) { if( e === $_ ) return; {
	js.fx.Anim.apply(this,[]);
	this.keepElementSpace = noFlow == true;
	this.element = e;
	this.kind = k;
	if(this.element.wrapper == null) {
		var parent = this.element.parentNode;
		this.wrapper = js.Lib.document.createElement("DIV");
		parent.replaceChild(this.wrapper,this.element);
		this.wrapper.appendChild(this.element);
		js.fx.Style.setStyles(this.wrapper,js.fx.Style.getStyles(this.element,{ margin : 0, position : ""}));
		js.fx.Style.setStyles(this.wrapper,{ overflow : "hidden", position : "relative"});
		js.fx.Style.setStyles(this.element,{ margin : "0px", position : "relative"});
		this.element.wrapper = this.wrapper;
	}
	else {
		this.wrapper = this.element.wrapper;
	}
	var $e = (this.kind);
	switch( $e[1] ) {
	case 0:
	case 1:
	{
		this.height = this.element.offsetHeight;
		if(this.keepElementSpace) js.fx.Style.setStyles(this.wrapper,{ height : this.height});
	}break;
	case 2:
	case 3:
	{
		this.width = this.element.offsetWidth;
		if(this.keepElementSpace) js.fx.Style.setStyles(this.wrapper,{ width : this.width});
	}break;
	}
	this.open = true;
}}
js.fx.Slide.__name__ = ["js","fx","Slide"];
js.fx.Slide.__super__ = js.fx.Anim;
for(var k in js.fx.Anim.prototype ) js.fx.Slide.prototype[k] = js.fx.Anim.prototype[k];
js.fx.Slide.prototype.complete = function() {
	if(js.fx.Anim.prototype.complete.apply(this,[])) {
		this.open = function($this) {
			var $r;
			var $e = ($this.kind);
			switch( $e[1] ) {
			case 0:
			{
				$r = $this.element.style.marginTop == "0px";
			}break;
			case 1:
			{
				$r = ($this.keepElementSpace?$this.element.style.marginTop == "0px":$this.wrapper.offsetHeight == $this.height);
			}break;
			case 2:
			{
				$r = $this.element.style.marginLeft == "0px";
			}break;
			case 3:
			{
				$r = ($this.keepElementSpace?$this.element.style.marginLeft == "0px":$this.wrapper.offsetWidth == $this.width);
			}break;
			default:{
				$r = null;
			}break;
			}
			return $r;
		}(this);
		return true;
	}
	return false;
}
js.fx.Slide.prototype.element = null;
js.fx.Slide.prototype.height = null;
js.fx.Slide.prototype.hide = function() {
	if(!this.open) return;
	this.open = false;
	this.set(0);
}
js.fx.Slide.prototype.keepElementSpace = null;
js.fx.Slide.prototype.kind = null;
js.fx.Slide.prototype.offset = null;
js.fx.Slide.prototype.open = null;
js.fx.Slide.prototype.set = function(delta) {
	if(this.keepElementSpace) {
		var $e = (this.kind);
		switch( $e[1] ) {
		case 0:
		{
			js.fx.Style.setStyles(this.element,{ marginTop : Std["int"]((this.open?-this.height * delta:-this.height + delta * this.height))});
		}break;
		case 1:
		{
			js.fx.Style.setStyles(this.element,{ marginTop : -1 * Std["int"]((this.open?-this.height * delta:-this.height + delta * this.height))});
		}break;
		case 2:
		{
			js.fx.Style.setStyles(this.element,{ marginLeft : Std["int"]((this.open?-this.width * delta:-this.width + delta * this.width))});
		}break;
		case 3:
		{
			js.fx.Style.setStyles(this.element,{ marginLeft : -1 * Std["int"]((this.open?-this.width * delta:-this.width + delta * this.width))});
		}break;
		}
	}
	else {
		var $e = (this.kind);
		switch( $e[1] ) {
		case 0:
		{
			var marginTop = Std["int"]((this.open?-this.height * delta:-this.height + delta * this.height));
			js.fx.Style.setStyles(this.element,{ marginTop : marginTop});
			js.fx.Style.setStyles(this.wrapper,{ height : this.height + marginTop});
		}break;
		case 2:
		{
			var marginLeft = Std["int"]((this.open?-this.width * delta:-this.width + delta * this.width));
			js.fx.Style.setStyles(this.element,{ marginLeft : marginLeft});
			js.fx.Style.setStyles(this.wrapper,{ width : this.width + marginLeft});
		}break;
		case 1:
		{
			var marginTop = -1 * Std["int"]((this.open?-this.height * delta:-this.height + delta * this.height));
			js.fx.Style.setStyles(this.wrapper,{ height : this.height - marginTop});
		}break;
		case 3:
		{
			var marginLeft = -1 * Std["int"]((this.open?-this.width * delta:-this.width + delta * this.width));
			js.fx.Style.setStyles(this.wrapper,{ width : this.width - marginLeft});
		}break;
		}
	}
}
js.fx.Slide.prototype.show = function() {
	if(this.open) return;
	this.open = true;
	this.set(0);
}
js.fx.Slide.prototype.toggle = function() {
	if(this.timer != null) {
		this.open = !this.open;
		var elapsed = Date.now().getTime() - this.time;
		var remain = this.duration - elapsed;
		this.time = Date.now().getTime() - remain;
	}
	else {
		this.start();
	}
}
js.fx.Slide.prototype.width = null;
js.fx.Slide.prototype.wrapper = null;
js.fx.Slide.prototype.__class__ = js.fx.Slide;
js.Lib = function() { }
js.Lib.__name__ = ["js","Lib"];
js.Lib.isIE = null;
js.Lib.isOpera = null;
js.Lib.alert = function(v) {
	alert(js.Boot.__string_rec(v,""));
}
js.Lib.eval = function(code) {
	return eval(code);
}
js.Lib.setErrorHandler = function(f) {
	js.Lib.onerror = f;
}
js.Lib.prototype.__class__ = js.Lib;
ValueType = { __ename__ : ["ValueType"], __constructs__ : ["TNull","TInt","TFloat","TBool","TObject","TFunction","TClass","TEnum","TUnknown"] }
ValueType.TBool = ["TBool",3];
ValueType.TBool.toString = $estr;
ValueType.TBool.__enum__ = ValueType;
ValueType.TClass = function(c) { var $x = ["TClass",6,c]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; }
ValueType.TEnum = function(e) { var $x = ["TEnum",7,e]; $x.__enum__ = ValueType; $x.toString = $estr; return $x; }
ValueType.TFloat = ["TFloat",2];
ValueType.TFloat.toString = $estr;
ValueType.TFloat.__enum__ = ValueType;
ValueType.TFunction = ["TFunction",5];
ValueType.TFunction.toString = $estr;
ValueType.TFunction.__enum__ = ValueType;
ValueType.TInt = ["TInt",1];
ValueType.TInt.toString = $estr;
ValueType.TInt.__enum__ = ValueType;
ValueType.TNull = ["TNull",0];
ValueType.TNull.toString = $estr;
ValueType.TNull.__enum__ = ValueType;
ValueType.TObject = ["TObject",4];
ValueType.TObject.toString = $estr;
ValueType.TObject.__enum__ = ValueType;
ValueType.TUnknown = ["TUnknown",8];
ValueType.TUnknown.toString = $estr;
ValueType.TUnknown.__enum__ = ValueType;
Type = function() { }
Type.__name__ = ["Type"];
Type.toEnum = function(t) {
	try {
		if(t.__ename__ == null) return null;
		return t;
	}
	catch( $e2 ) {
		{
			var e = $e2;
			null;
		}
	}
	return null;
}
Type.toClass = function(t) {
	try {
		if(t.__name__ == null) return null;
		return t;
	}
	catch( $e3 ) {
		{
			var e = $e3;
			null;
		}
	}
	return null;
}
Type.getClass = function(o) {
	if(o == null) return null;
	if(o.__enum__ != null) return null;
	return o.__class__;
}
Type.getEnum = function(o) {
	if(o == null) return null;
	return o.__enum__;
}
Type.getSuperClass = function(c) {
	return c.__super__;
}
Type.getClassName = function(c) {
	if(c == null) return null;
	var a = c.__name__;
	return a.join(".");
}
Type.getEnumName = function(e) {
	var a = e.__ename__;
	return a.join(".");
}
Type.resolveClass = function(name) {
	var cl;
	{
		try {
			cl = eval(name);
		}
		catch( $e4 ) {
			{
				var e = $e4;
				{
					cl = null;
				}
			}
		}
		if(cl == null || cl.__name__ == null) return null;
		else null;
	}
	return cl;
}
Type.resolveEnum = function(name) {
	var e;
	{
		try {
			e = eval(name);
		}
		catch( $e5 ) {
			{
				var e1 = $e5;
				{
					e1 = null;
				}
			}
		}
		if(e == null || e.__ename__ == null) return null;
		else null;
	}
	return e;
}
Type.createInstance = function(cl,args) {
	if(args.length >= 6) throw "Too many arguments";
	return new cl(args[0],args[1],args[2],args[3],args[4],args[5]);
}
Type.createEmptyInstance = function(cl) {
	return new cl($_);
}
Type.getInstanceFields = function(c) {
	var a = Reflect.fields(c.prototype);
	c = c.__super__;
	while(c != null) {
		a = a.concat(Reflect.fields(c.prototype));
		c = c.__super__;
	}
	while(a.remove("__class__")) null;
	return a;
}
Type.getClassFields = function(c) {
	var a = Reflect.fields(c);
	a.remove("__name__");
	a.remove("__interfaces__");
	a.remove("__super__");
	a.remove("prototype");
	return a;
}
Type.getEnumConstructs = function(e) {
	return e.__constructs__;
}
Type["typeof"] = function(v) {
	switch(typeof(v)) {
	case "boolean":{
		return ValueType.TBool;
	}break;
	case "string":{
		return ValueType.TClass(String);
	}break;
	case "number":{
		if(v + 1 == v) return ValueType.TFloat;
		if(Math.ceil(v) == v) return ValueType.TInt;
		return ValueType.TFloat;
	}break;
	case "object":{
		if(v == null) return ValueType.TNull;
		var e = v.__enum__;
		if(e != null) return ValueType.TEnum(e);
		var c = v.__class__;
		if(c != null) return ValueType.TClass(c);
		return ValueType.TObject;
	}break;
	case "function":{
		if(v.__name__ != null) return ValueType.TObject;
		return ValueType.TFunction;
	}break;
	case "undefined":{
		return ValueType.TNull;
	}break;
	default:{
		return ValueType.TUnknown;
	}break;
	}
}
Type.enumEq = function(a,b) {
	if(a == b) return true;
	if(a[0] != b[0]) return false;
	{
		var _g1 = 2, _g = a.length;
		while(_g1 < _g) {
			var i = _g1++;
			if(!Type.enumEq(a[i],b[i])) return false;
		}
	}
	var e = a.__enum__;
	if(e != b.__enum__ || e == null) return false;
	return true;
}
Type.enumConstructor = function(e) {
	return e[0];
}
Type.enumParameters = function(e) {
	return e.slice(2);
}
Type.enumIndex = function(e) {
	return e[1];
}
Type.prototype.__class__ = Type;
js.fx.Style = function() { }
js.fx.Style.__name__ = ["js","fx","Style"];
js.fx.Style.camel = function(hyphen) {
	return new EReg("(-[a-z])","").customReplace(hyphen,function(reg) {
		return reg.matched(1).charAt(1).toUpperCase();
	});
}
js.fx.Style.hyphen = function(camel) {
	return new EReg("([A-Z])","").customReplace(camel,function(reg) {
		return "-" + reg.matched(1).toLowerCase();
	});
}
js.fx.Style.getDocumentStyles = function(selector) {
	var result = Reflect.empty();
	var found = false;
	{
		var _g1 = 0, _g = js.Lib.document.styleSheets.length;
		while(_g1 < _g) {
			var i = _g1++;
			var sheet = js.Lib.document.styleSheets[i];
			if(sheet.href != null && sheet.href.indexOf("://") != -1 && sheet.href.indexOf(js.Lib.document.domain) == -1) continue;
			var rules = (sheet.rules != null?sheet.rules:sheet.cssRules);
			{
				var _g3 = 0, _g2 = rules.length;
				while(_g3 < _g2) {
					var j = _g3++;
					var rule = rules[j];
					if(rule.style == null || rule.selectorText == null || rule.selectorText != selector) {
						continue;
					}
					found = true;
					if(js.Lib.isIE) {
						{
							var _g4 = 0, _g5 = Reflect.fields(rule.style);
							while(_g4 < _g5.length) {
								var f = _g5[_g4];
								++_g4;
								var value = Reflect.field(rule.style,f);
								if(value == null || value == "") continue;
								var value1 = js.fx.Style.parseStyle(value);
								if(value1 != null && value1 != "") {
									Reflect.setField(result,f,value1);
								}
							}
						}
					}
					else {
						var _g5 = 0, _g4 = rule.style.length;
						while(_g5 < _g4) {
							var s = _g5++;
							var style = rule.style[s];
							var camel = js.fx.Style.camel(style);
							var value = Reflect.field(rule.style,camel);
							if(value != null && value != "") Reflect.setField(result,camel,js.fx.Style.parseStyle(value));
						}
					}
				}
			}
		}
	}
	if(!found) return null;
	return result;
}
js.fx.Style.getStyles = function(e,template) {
	var getter = null;
	if(e.currentStyle != null) {
		getter = function(key) {
			return e.currentStyle[key];
		}
	}
	if(getter == null) {
		var window = (js.Lib.document.defaultView?js.Lib.document.defaultView:js.Lib.document.parentWindow);
		if(window != null && window.getComputedStyle != null) {
			var cs = window.getComputedStyle(e,null);
			if(cs != null) getter = function(key) {
				return cs.getPropertyValue(js.fx.Style.hyphen(key));
			}
		}
	}
	if(getter == null) {
		getter = function(key) {
			return Reflect.field(e,key);
		}
	}
	var result = Reflect.empty();
	{
		var _g = 0, _g1 = Reflect.fields(template);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			var currentValue = (f == "opacity"?Std.string(js.fx.Style.getOpacity(e)):getter(f));
			var expectedType = Reflect.field(template,f);
			if(Std["is"](expectedType,js.fx.RGB)) {
				var value = js.fx.RGB.parse(currentValue);
				if(value == null) value = new js.fx.RGB(0,0,0);
				Reflect.setField(result,f,value);
				continue;
			}
			if(Std["is"](expectedType,js.fx.Unit)) {
				var value = js.fx.Unit.parse(currentValue);
				if(value == null) value = new js.fx.Unit((expectedType).kind,0);
				if(value.kind != expectedType.kind) throw "Unit kind mismatch " + value + " != " + expectedType;
				Reflect.setField(result,f,value);
				continue;
			}
			if(Std["is"](expectedType,String)) {
				Reflect.setField(result,f,currentValue);
			}
			var type = Type["typeof"](expectedType);
			if(type == ValueType.TFloat || f == "opacity") {
				var value = Std.parseFloat(Std.string(currentValue)) + 0.000000001;
				if(value == null) value = 0.000000001;
				Reflect.setField(result,f,value);
			}
			else if(type == ValueType.TInt) {
				var value = Std.parseInt(Std.string(currentValue));
				if(value == null) value = 0;
				Reflect.setField(result,f,value);
			}
		}
	}
	return result;
}
js.fx.Style.setStyles = function(e,styles) {
	{
		var _g = 0, _g1 = Reflect.fields(styles);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			js.fx.Style.setStyle(e,f,Reflect.field(styles,f));
		}
	}
}
js.fx.Style.setStyle = function(e,property,value) {
	switch(property) {
	case "opacity":{
		js.fx.Style.setOpacity(e,value);
		return;
	}break;
	case "float":{
		property = (js.fx.Style.REQUIRES_FILTERS?"styleFloat":"cssFloat");
	}break;
	case "zIndex":{
		value = Std.string(value);
	}break;
	}
	Reflect.setField(e.style,property,js.fx.Style.styleValueToString(value));
}
js.fx.Style.setOpacity = function(e,opacity) {
	e.style.visibility = (opacity == 0.0?"hidden":"visible");
	if(js.fx.Style.REQUIRES_FILTERS) e.style.filter = (opacity == 1.0?"":"alpha(opacity=" + opacity * 100 + ")");
	e.style.opacity = opacity;
	e.style._opacity = opacity;
}
js.fx.Style.getOpacity = function(element) {
	var v = element.style._opacity;
	if(v == null) {
		return function($this) {
			var $r;
			switch(element.style.visibility) {
			case "visible":{
				$r = 1.0;
			}break;
			case "hidden":{
				$r = 0.0;
			}break;
			case "":{
				$r = (element.style.display == "none"?0.0:1.0);
			}break;
			default:{
				$r = null;
			}break;
			}
			return $r;
		}(this);
	}
	return v;
}
js.fx.Style.styleValueToString = function(v) {
	return function($this) {
		var $r;
		var $e = (Type["typeof"](v));
		switch( $e[1] ) {
		case 6:
		var c = $e[2];
		{
			$r = Std.string(v);
		}break;
		case 1:
		{
			$r = v + "px";
		}break;
		case 2:
		{
			$r = Std.string(v);
		}break;
		case 0:
		{
			$r = "";
		}break;
		default:{
			$r = function($this) {
				var $r;
				throw "Unsupported js.fx.Style value " + Type["typeof"](v);
				return $r;
			}($this);
		}break;
		}
		return $r;
	}(this);
}
js.fx.Style.parseStyle = function(s) {
	var rgb = js.fx.RGB.parse(s);
	if(rgb != null) return rgb;
	var unit = js.fx.Unit.parse(s);
	if(unit != null) return unit;
	return s;
}
js.fx.Style.prototype.__class__ = js.fx.Style;
js.fx.RGB = function(r,g,b) { if( r === $_ ) return; {
	this.r = r;
	this.g = g;
	this.b = g;
}}
js.fx.RGB.__name__ = ["js","fx","RGB"];
js.fx.RGB.hexToInt = function(str) {
	str = str.toLowerCase();
	if(str.length == 0) return 0;
	if(str.length == 1) {
		var c = str.charCodeAt(0);
		var a = "a".charCodeAt(0);
		if(c >= a) return 10 + c - a;
		var z = "0".charCodeAt(0);
		if(c >= z) return c - z;
	}
	if(str.length == 2) return 16 * js.fx.RGB.hexToInt(str.charAt(0)) + js.fx.RGB.hexToInt(str.charAt(1));
	return 0;
}
js.fx.RGB.parse = function(value) {
	var reg = new EReg("^#?([a-f0-9]{1,2})([a-f0-9]{1,2})([a-f0-9]{1,2})$","i");
	if(reg.match(value)) {
		var result = new js.fx.RGB(js.fx.RGB.hexToInt(reg.matched(1)),js.fx.RGB.hexToInt(reg.matched(2)),js.fx.RGB.hexToInt(reg.matched(3)));
		return result;
	}
	var reg1 = new EReg("rgb\\(\\s*(\\d+),\\s*(\\d+),\\s*(\\d+)\\s*\\)","");
	if(reg1.match(value)) return new js.fx.RGB(Std.parseInt(reg1.matched(1)),Std.parseInt(reg1.matched(2)),Std.parseInt(reg1.matched(3)));
	return null;
}
js.fx.RGB.prototype.b = null;
js.fx.RGB.prototype.g = null;
js.fx.RGB.prototype.r = null;
js.fx.RGB.prototype.toString = function() {
	return "rgb(" + this.r + "," + this.g + "," + this.b + ")";
}
js.fx.RGB.prototype.__class__ = js.fx.RGB;
js.fx.UnitKind = { __ename__ : ["js","fx","UnitKind"], __constructs__ : ["KEm","KPt","KPc","KPx"] }
js.fx.UnitKind.KEm = ["KEm",0];
js.fx.UnitKind.KEm.toString = $estr;
js.fx.UnitKind.KEm.__enum__ = js.fx.UnitKind;
js.fx.UnitKind.KPc = ["KPc",2];
js.fx.UnitKind.KPc.toString = $estr;
js.fx.UnitKind.KPc.__enum__ = js.fx.UnitKind;
js.fx.UnitKind.KPt = ["KPt",1];
js.fx.UnitKind.KPt.toString = $estr;
js.fx.UnitKind.KPt.__enum__ = js.fx.UnitKind;
js.fx.UnitKind.KPx = ["KPx",3];
js.fx.UnitKind.KPx.toString = $estr;
js.fx.UnitKind.KPx.__enum__ = js.fx.UnitKind;
js.fx.Unit = function(k,v) { if( k === $_ ) return; {
	this.kind = k;
	this.value = v;
	this.toString = function($this) {
		var $r;
		var $e = (k);
		switch( $e[1] ) {
		case 0:
		{
			$r = $closure($this,"emToString");
		}break;
		case 1:
		{
			$r = $closure($this,"ptToString");
		}break;
		case 2:
		{
			$r = $closure($this,"pcToString");
		}break;
		case 3:
		{
			$r = $closure($this,"pxToString");
		}break;
		default:{
			$r = null;
		}break;
		}
		return $r;
	}(this);
}}
js.fx.Unit.__name__ = ["js","fx","Unit"];
js.fx.Unit.parse = function(value) {
	var reg = new EReg("^([0-9.]+)(em|pt|%|px|)$","i");
	if(!reg.match(value)) return null;
	var val = Std.parseFloat(reg.matched(1));
	var kst = reg.matched(2);
	return function($this) {
		var $r;
		switch(kst) {
		case "em":{
			$r = new js.fx.Unit(js.fx.UnitKind.KEm,val);
		}break;
		case "pt":{
			$r = new js.fx.Unit(js.fx.UnitKind.KPt,val);
		}break;
		case "px":{
			$r = new js.fx.Unit(js.fx.UnitKind.KPx,val);
		}break;
		case "%":{
			$r = new js.fx.Unit(js.fx.UnitKind.KPc,val);
		}break;
		default:{
			$r = new js.fx.Unit(js.fx.UnitKind.KPx,val);
		}break;
		}
		return $r;
	}(this);
}
js.fx.Unit.prototype.emToString = function() {
	return (Math.round(this.value * 10) / 10) + "em";
}
js.fx.Unit.prototype.kind = null;
js.fx.Unit.prototype.pcToString = function() {
	return (Math.round(this.value * 10) / 10) + "%";
}
js.fx.Unit.prototype.ptToString = function() {
	return (Math.round(this.value * 10) / 10) + "pt";
}
js.fx.Unit.prototype.pxToString = function() {
	return Math.round(this.value) + "px";
}
js.fx.Unit.prototype.toString = null;
js.fx.Unit.prototype.value = null;
js.fx.Unit.prototype.__class__ = js.fx.Unit;
js.fx.Delta = function() { }
js.fx.Delta.__name__ = ["js","fx","Delta"];
js.fx.Delta.getDeltaFunc = function(from,to) {
	return (Std["is"](a,js.fx.RGB)?$closure(js.fx.Delta,"rgb"):(Std["is"](a,js.fx.Unit)?$closure(js.fx.Delta,"unit"):(Std["is"](a,String)?$closure(js.fx.Delta,"string"):(Type["typeof"](a) == ValueType.TFloat?$closure(js.fx.Delta,"float"):(Type["typeof"](a) == ValueType.TInt?$closure(js.fx.Delta,"int"):$closure(js.fx.Delta,"unknown"))))));
}
js.fx.Delta.styles = function(from,to,delta) {
	var result = Reflect.empty();
	{
		var _g = 0, _g1 = Reflect.fields(from);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			Reflect.setField(result,f,js.fx.Delta.any(Reflect.field(from,f),Reflect.field(to,f),delta));
		}
	}
	return result;
}
js.fx.Delta.unknown = function(from,to,delta) {
	return (delta < 0.5?from:to);
}
js.fx.Delta.any = function(a,b,delta) {
	return (Std["is"](a,js.fx.RGB)?$closure(js.fx.Delta,"rgb"):(Std["is"](a,js.fx.Unit)?$closure(js.fx.Delta,"unit"):(Std["is"](a,String)?$closure(js.fx.Delta,"string"):(Type["typeof"](a) == ValueType.TFloat?$closure(js.fx.Delta,"float"):(Type["typeof"](a) == ValueType.TInt?$closure(js.fx.Delta,"int"):$closure(js.fx.Delta,"unknown"))))))(a,b,delta);
}
js.fx.Delta.rgb = function(from,to,delta) {
	return new js.fx.RGB(js.fx.Delta["int"](from.r,to.r,delta),js.fx.Delta["int"](from.g,to.g,delta),js.fx.Delta["int"](from.b,to.b,delta));
}
js.fx.Delta.unit = function(from,to,delta) {
	return new js.fx.Unit(from.kind,js.fx.Delta["float"](from.value,to.value,delta));
}
js.fx.Delta.string = function(from,to,delta) {
	return (delta < 0.5?from:to);
}
js.fx.Delta["int"] = function(from,to,delta) {
	return Std["int"](Math.floor((to - from) * delta + from));
}
js.fx.Delta["float"] = function(from,to,delta) {
	return (to - from) * delta + from;
}
js.fx.Delta.prototype.__class__ = js.fx.Delta;
Std = function() { }
Std.__name__ = ["Std"];
Std["is"] = function(v,t) {
	return js.Boot.__instanceof(v,t);
}
Std.string = function(s) {
	return js.Boot.__string_rec(s,"");
}
Std["int"] = function(x) {
	if(x < 0) return Math.ceil(x);
	return Math.floor(x);
}
Std.bool = function(x) {
	return (x !== 0 && x != null && x !== false);
}
Std.parseInt = function(x) {
	{
		var v = parseInt(x);
		if(Math.isNaN(v)) return null;
		return v;
	}
}
Std.parseFloat = function(x) {
	return parseFloat(x);
}
Std.chr = function(x) {
	return String.fromCharCode(x);
}
Std.ord = function(x) {
	if(x == "") return null;
	else return x.charCodeAt(0);
}
Std.random = function(x) {
	return Math.floor(Math.random() * x);
}
Std.resource = function(name) {
	return js.Boot.__res[name];
}
Std.prototype.__class__ = Std;
js.fx.TransitionFunctions = function() { }
js.fx.TransitionFunctions.__name__ = ["js","fx","TransitionFunctions"];
js.fx.TransitionFunctions.transitionParam = function(p,f) {
	return function($this) {
		var $r;
		var $e = (p);
		switch( $e[1] ) {
		case 0:
		{
			$r = f;
		}break;
		case 1:
		{
			$r = function(pos,pa) {
				return 1 - f(1 - pos,pa);
			}
		}break;
		case 2:
		{
			$r = function(pos,pa) {
				return (pos <= 0.5?f(2 * pos,pa) / 2:(2 - f(2 * (1 - pos),pa) / 2));
			}
		}break;
		default:{
			$r = null;
		}break;
		}
		return $r;
	}(this);
}
js.fx.TransitionFunctions.get = function(t) {
	return function($this) {
		var $r;
		var $e = (t);
		switch( $e[1] ) {
		case 0:
		{
			$r = $closure(js.fx.TransitionFunctions,"linear");
		}break;
		case 1:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"quad"));
		}break;
		case 2:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"cubic"));
		}break;
		case 3:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"quart"));
		}break;
		case 4:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"quint"));
		}break;
		case 5:
		{
			$r = $closure(js.fx.TransitionFunctions,"pow");
		}break;
		case 6:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"expo"));
		}break;
		case 7:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"circ"));
		}break;
		case 8:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"sine"));
		}break;
		case 9:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"back"));
		}break;
		case 10:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"bounce"));
		}break;
		case 11:
		var p = $e[2];
		{
			$r = js.fx.TransitionFunctions.transitionParam(p,$closure(js.fx.TransitionFunctions,"elastic"));
		}break;
		default:{
			$r = null;
		}break;
		}
		return $r;
	}(this);
}
js.fx.TransitionFunctions.linear = function(p,pa) {
	return p;
}
js.fx.TransitionFunctions.pow = function(p,x) {
	return Math.pow(p,(x == null?x:6));
}
js.fx.TransitionFunctions.expo = function(p,pa) {
	return Math.pow(2,8 * (p - 1));
}
js.fx.TransitionFunctions.circ = function(p,pa) {
	return 1 - Math.sin(Math.acos(p));
}
js.fx.TransitionFunctions.sine = function(p,pa) {
	return 1 - Math.sin((1 - p) * Math.PI / 2);
}
js.fx.TransitionFunctions.back = function(p,x) {
	x = (x == null?1.618:x);
	return Math.pow(p,2) * ((x + 1) * p - x);
}
js.fx.TransitionFunctions.bounce = function(p,pa) {
	var value = null;
	var a = 0;
	var b = 1;
	while(true) {
		if(p >= (7 - 4 * a) / 11) {
			value = -Math.pow((11 - 6 * a - 11 * p) / 4,2) + b * b;
			break;
		}
		a += b;
		b /= 2;
	}
	return value;
}
js.fx.TransitionFunctions.elastic = function(p,x) {
	x = (x == null?1:x);
	return Math.pow(2,10 * --p) * Math.cos(20 * p * Math.PI * x / 3);
}
js.fx.TransitionFunctions.quad = function(p,pa) {
	return Math.pow(p,2);
}
js.fx.TransitionFunctions.cubic = function(p,pa) {
	return Math.pow(p,3);
}
js.fx.TransitionFunctions.quart = function(p,pa) {
	return Math.pow(p,4);
}
js.fx.TransitionFunctions.quint = function(p,pa) {
	return Math.pow(p,5);
}
js.fx.TransitionFunctions.prototype.__class__ = js.fx.TransitionFunctions;
js.fx.Timer = function(p) { if( p === $_ ) return; {
	null;
}}
js.fx.Timer.__name__ = ["js","fx","Timer"];
js.fx.Timer.timeout = function(cb,delay) {
	var t = new js.fx.Timer();
	t.data = setTimeout(cb,delay);
	return t;
}
js.fx.Timer.periodical = function(cb,delay) {
	var t = new js.fx.Timer();
	t.data = setInterval(cb,delay);
	return t;
}
js.fx.Timer.clear = function(t) {
	{
		clearTimeout(t.data);
		clearInterval(t.data);
		return null;
	}
}
js.fx.Timer.prototype.data = null;
js.fx.Timer.prototype.__class__ = js.fx.Timer;
js.fx.Transition = { __ename__ : ["js","fx","Transition"], __constructs__ : ["Linear","Quad","Cubic","Quart","Quint","Pow","Expo","Circ","Sine","Back","Bounce","Elastic"] }
js.fx.Transition.Back = function(p) { var $x = ["Back",9,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Bounce = function(p) { var $x = ["Bounce",10,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Circ = function(p) { var $x = ["Circ",7,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Cubic = function(p) { var $x = ["Cubic",2,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Elastic = function(p) { var $x = ["Elastic",11,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Expo = function(p) { var $x = ["Expo",6,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Linear = ["Linear",0];
js.fx.Transition.Linear.toString = $estr;
js.fx.Transition.Linear.__enum__ = js.fx.Transition;
js.fx.Transition.Pow = ["Pow",5];
js.fx.Transition.Pow.toString = $estr;
js.fx.Transition.Pow.__enum__ = js.fx.Transition;
js.fx.Transition.Quad = function(p) { var $x = ["Quad",1,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Quart = function(p) { var $x = ["Quart",3,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Quint = function(p) { var $x = ["Quint",4,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.Transition.Sine = function(p) { var $x = ["Sine",8,p]; $x.__enum__ = js.fx.Transition; $x.toString = $estr; return $x; }
js.fx.TransitionParam = { __ename__ : ["js","fx","TransitionParam"], __constructs__ : ["In","Out","InOut"] }
js.fx.TransitionParam.In = ["In",0];
js.fx.TransitionParam.In.toString = $estr;
js.fx.TransitionParam.In.__enum__ = js.fx.TransitionParam;
js.fx.TransitionParam.InOut = ["InOut",2];
js.fx.TransitionParam.InOut.toString = $estr;
js.fx.TransitionParam.InOut.__enum__ = js.fx.TransitionParam;
js.fx.TransitionParam.Out = ["Out",1];
js.fx.TransitionParam.Out.toString = $estr;
js.fx.TransitionParam.Out.__enum__ = js.fx.TransitionParam;
EReg = function(r,opt) { if( r === $_ ) return; {
	opt = opt.split("u").join("");
	this.r = new RegExp(r,opt);
}}
EReg.__name__ = ["EReg"];
EReg.prototype.customReplace = function(s,f) {
	var buf = new StringBuf();
	while(true) {
		if(!this.match(s)) break;
		buf.add(this.matchedLeft());
		buf.add(f(this));
		s = this.matchedRight();
	}
	buf.add(s);
	return buf.toString();
}
EReg.prototype.match = function(s) {
	{
		this.r.m = this.r.exec(s);
		this.r.s = s;
		this.r.l = RegExp.leftContext;
		this.r.r = RegExp.rightContext;
		return (this.r.m != null);
	}
}
EReg.prototype.matched = function(n) {
	return (this.r.m != null && n >= 0 && n < this.r.m.length?this.r.m[n]:function($this) {
		var $r;
		throw "EReg::matched";
		return $r;
	}(this));
}
EReg.prototype.matchedLeft = function() {
	{
		if(this.r.m == null) throw "EReg::matchedLeft";
		if(this.r.l == null) return this.r.s.substr(0,this.r.m.index);
		return this.r.l;
	}
}
EReg.prototype.matchedPos = function() {
	if(this.r.m == null) throw "EReg::matchedPos";
	return { pos : this.r.m.index, len : this.r.m[0].length}
}
EReg.prototype.matchedRight = function() {
	{
		if(this.r.m == null) throw "EReg::matchedRight";
		if(this.r.r == null) {
			var sz = this.r.m.index + this.r.m[0].length;
			return this.r.s.substr(sz,this.r.s.length - sz);
		}
		return this.r.r;
	}
}
EReg.prototype.r = null;
EReg.prototype.replace = function(s,by) {
	return s.replace(this.r,by);
}
EReg.prototype.split = function(s) {
	var d = "#__delim__#";
	return s.replace(this.r,d).split(d);
}
EReg.prototype.__class__ = EReg;
Reflect = function() { }
Reflect.__name__ = ["Reflect"];
Reflect.empty = function() {
	return {}
}
Reflect.hasField = function(o,field) {
	{
		if(o.hasOwnProperty != null) return o.hasOwnProperty(field);
		var arr = Reflect.fields(o);
		{ var $it6 = arr.iterator();
		while( $it6.hasNext() ) { var t = $it6.next();
		if(t == field) return true;
		}}
		return false;
	}
}
Reflect.field = function(o,field) {
	try {
		return o[field];
	}
	catch( $e7 ) {
		{
			var e = $e7;
			{
				return null;
			}
		}
	}
}
Reflect.setField = function(o,field,value) {
	o[field] = value;
}
Reflect.callMethod = function(o,func,args) {
	return func.apply(o,args);
}
Reflect.fields = function(o) {
	if(o == null) return new Array();
	{
		var a = new Array();
		if(o.hasOwnProperty) {
			
					for(var i in o)
						if( o.hasOwnProperty(i) )
							a.push(i);
				;
		}
		else {
			var t;
			try {
				t = o.__proto__;
			}
			catch( $e8 ) {
				{
					var e = $e8;
					{
						t = null;
					}
				}
			}
			if(t != null) o.__proto__ = null;
			
					for(var i in o)
						if( i != "__proto__" )
							a.push(i);
				;
			if(t != null) o.__proto__ = t;
		}
		return a;
	}
}
Reflect.isFunction = function(f) {
	return typeof(f) == "function" && f.__name__ == null;
}
Reflect.compare = function(a,b) {
	return ((a == b)?0:((((a) > (b))?1:-1)));
}
Reflect.compareMethods = function(f1,f2) {
	if(f1 == f2) return true;
	if(!Reflect.isFunction(f1) || !Reflect.isFunction(f2)) return false;
	return f1.scope == f2.scope && f1.method == f2.method && f1.method != null;
}
Reflect.isObject = function(v) {
	if(v == null) return false;
	var t = typeof(v);
	return (t == "string" || (t == "object" && !v.__enum__) || (t == "function" && v.__name__ != null));
}
Reflect.deleteField = function(o,f) {
	{
		if(!Reflect.hasField(o,f)) return false;
		delete(o[f]);
		return true;
	}
}
Reflect.copy = function(o) {
	var o2 = Reflect.empty();
	{
		var _g = 0, _g1 = Reflect.fields(o);
		while(_g < _g1.length) {
			var f = _g1[_g];
			++_g;
			Reflect.setField(o2,f,Reflect.field(o,f));
		}
	}
	return o2;
}
Reflect.makeVarArgs = function(f) {
	return function() {
		var a = new Array();
		{
			var _g1 = 0, _g = arguments.length;
			while(_g1 < _g) {
				var i = _g1++;
				a.push(arguments[i]);
			}
		}
		return f(a);
	}
}
Reflect.prototype.__class__ = Reflect;
StringBuf = function(p) { if( p === $_ ) return; {
	this.b = "";
}}
StringBuf.__name__ = ["StringBuf"];
StringBuf.prototype.add = function(x) {
	this.b += x;
}
StringBuf.prototype.addChar = function(c) {
	this.b += String.fromCharCode(c);
}
StringBuf.prototype.addSub = function(s,pos,len) {
	this.b += s.substr(pos,len);
}
StringBuf.prototype.b = null;
StringBuf.prototype.toString = function() {
	return this.b;
}
StringBuf.prototype.__class__ = StringBuf;
js.fx.SlideKind = { __ename__ : ["js","fx","SlideKind"], __constructs__ : ["Vertical","VerticalBottom","Horizontal","HorizontalRight"] }
js.fx.SlideKind.Horizontal = ["Horizontal",2];
js.fx.SlideKind.Horizontal.toString = $estr;
js.fx.SlideKind.Horizontal.__enum__ = js.fx.SlideKind;
js.fx.SlideKind.HorizontalRight = ["HorizontalRight",3];
js.fx.SlideKind.HorizontalRight.toString = $estr;
js.fx.SlideKind.HorizontalRight.__enum__ = js.fx.SlideKind;
js.fx.SlideKind.Vertical = ["Vertical",0];
js.fx.SlideKind.Vertical.toString = $estr;
js.fx.SlideKind.Vertical.__enum__ = js.fx.SlideKind;
js.fx.SlideKind.VerticalBottom = ["VerticalBottom",1];
js.fx.SlideKind.VerticalBottom.toString = $estr;
js.fx.SlideKind.VerticalBottom.__enum__ = js.fx.SlideKind;
IntIter = function(min,max) { if( min === $_ ) return; {
	this.min = min;
	this.max = max;
}}
IntIter.__name__ = ["IntIter"];
IntIter.prototype.hasNext = function() {
	return this.min < this.max;
}
IntIter.prototype.max = null;
IntIter.prototype.min = null;
IntIter.prototype.next = function() {
	return this.min++;
}
IntIter.prototype.__class__ = IntIter;
$_ = {}
js.Boot.__res = {}
js.Boot.__init();
{
	
			onerror = function(msg,url,line) {
				var f = js.Lib.onerror;
				if( f == null )
					return false;
				return f(msg,[url+":"+line]);
			}
		;
}
{
	Date.now = function() {
		return new Date();
	}
	Date.fromTime = function(t) {
		var d = new Date();
		d["setTime"](t);
		return d;
	}
	Date.fromString = function(s) {
		switch(s.length) {
		case 8:{
			var k = s.split(":");
			var d = new Date();
			d["setTime"](0);
			d["setUTCHours"](k[0]);
			d["setUTCMinutes"](k[1]);
			d["setUTCSeconds"](k[2]);
			return d;
		}break;
		case 10:{
			var k = s.split("-");
			return new Date(k[0],k[1] - 1,k[2],0,0,0);
		}break;
		case 19:{
			var k = s.split(" ");
			var y = k[0].split("-");
			var t = k[1].split(":");
			return new Date(y[0],y[1] - 1,y[2],t[0],t[1],t[2]);
		}break;
		default:{
			throw "Invalid date format : " + s;
		}break;
		}
	}
	Date.prototype["toString"] = function() {
		var m = this.getMonth() + 1;
		var d = this.getDate();
		var h = this.getHours();
		var mi = this.getMinutes();
		var s = this.getSeconds();
		return this.getFullYear() + "-" + ((m < 10?"0" + m:"" + m)) + "-" + ((d < 10?"0" + d:"" + d)) + " " + ((h < 10?"0" + h:"" + h)) + ":" + ((mi < 10?"0" + mi:"" + mi)) + ":" + ((s < 10?"0" + s:"" + s));
	}
	Date.prototype.__class__ = Date;
	Date.__name__ = ["Date"];
}
{
	Math.NaN = Number["NaN"];
	Math.NEGATIVE_INFINITY = Number["NEGATIVE_INFINITY"];
	Math.POSITIVE_INFINITY = Number["POSITIVE_INFINITY"];
	Math.isFinite = function(i) {
		return isFinite(i);
	}
	Math.isNaN = function(i) {
		return isNaN(i);
	}
}
js.Lib.document = document;
js.Lib.window = window;
js.Lib.onerror = null;
js.fx.Style.REQUIRES_FILTERS = js.Lib.window.ActiveXObject != null;

