﻿/*
	Milkbox v2.3 - required: mootools.js v1.2.3 core + more 1.2.3.1: Assets

	by Luca Reghellin (http://www.reghellin.com) August 2009, MIT-style license.
	Inspiration: http://www.lokeshdhakar.com/projects/lightbox2/
	AND OF COURSE, SPECIAL THANKS TO THE MOOTOOLS DEVELOPERS
*/

var Milkbox = new Class(
		{
			Implements : [ Options, Events ],
			options : {
				overlayOpacity : 0.9,
				topPosition : 50,
				initialWidth : 250,
				initialHeight : 250,
				canvasBorderWidth : "0px",
				canvasBorderColor : "#000000",
				canvasPadding : "0px",
				resizeDuration : 500,
				resizeTransition : "sine:in:out",
				autoPlay : false,
				autoPlayDelay : 7,
				removeTitle : false,
				autoSize : true,
				maxHeight : 0,
				imageOfText : "of",
				onXmlGalleries : $empty,
				onClosed : $empty,
				onFileReady : $empty
			},
			initialize : function(a) {
				this.setOptions(a);
				this.autoPlayBkup = {
					autoPlayDelay : this.options.autoPlayDelay,
					autoPlay : this.options.autoPlay
				};
				this.fullOptionsBkup = {};
				this.galleries = [];
				this.families = [];
				this.xmlFiles = [];
				this.loadedImages = [];
				this.currentFile = null;
				this.currentIndex = null;
				this.currentGallery = null;
				this.currentRequest = null;
				this.currentResponse = null;
				this.mode = null;
				this.closed = true;
				this.busy = true;
				this.paused = true;
				this.fileReady = false;
				this.eventsok = false;
				this.first = true;
				this.intObj = null;
				this.formtags = null;
				this.prepareGalleries();
				if (this.galleries.length == 0) {
					return
				}
				this.initMilkbox();
				this.saveOptions()
			},
			initMilkbox : function() {
				this.prepareHTML();
				this.prepareEffects();
				this.prepareEvents();
				this.formtags = $$("select", "textarea");
				this.activated = true
			},
			openMilkbox : function(b, d) {
				this.closed = false;
				if (this.formtags.length != 0) {
					this.formtags.setStyle("display", "none")
				}
				this.overlay.setStyles( {
					top : -$(window).getScroll().y,
					height : $(window).getScrollSize().y
							+ $(window).getScroll().y
				});
				this.center.setStyle("top", $(window).getScroll().y
						+ this.options.topPosition);
				this.currentGallery = b;
				this.currentIndex = d;
				this.overlay.tween("opacity", this.options.overlayOpacity);
				if (b.length == 1) {
					this.mode = "singleFile";
					this.loadFile(b[d], d)
				} else {
					this.mode = "fileGallery";
					var a = 0;
					$$(this.prev, this.next, this.count).setStyle("display",
							"block");
					if (this.options.autoPlay) {
						this.playpause.setStyle("display", "block");
						a = this.playpause.getSize().x
					}
					var c = this.center.getStyle("border-right-width").toInt();
					var h = this.prev.getSize().x + this.next.getSize().x
							+ this.close.getSize().x + a + c;
					this.navigation.setStyle("width", h);
					this.description.setStyle("margin-right", h);
					var f = (d != b.length - 1) ? b[d + 1] : b[0];
					var g = (d != 0) ? b[d - 1] : b[b.length - 1];
					var e = (g == f) ? [ g ] : [ g, f ];
					this.loadFile(b[d], e)
				}
			},
			loadFile : function(c, b) {
				this.fileReady = false;
				var a = this.checkFileType(c, "swf");
				if (!a) {
					if (!this.loadedImages.contains(c.retrieve("href"))) {
						this.center.addClass("mbLoading")
					}
					this.loadImage(c.retrieve("href"))
				} else {
					this.loadSwf(c)
				}
				if (b) {
					this.preloadFiles(b)
				}
			},
			preloadFiles : function(a) {
				a.each(function(d, b) {
					var c = this.checkFileType(d.retrieve("href"), "swf");
					if (!c) {
						this.preloadImage(d.retrieve("href"))
					}
				}, this)
			},
			loadImage : function(b) {
				var a = new Asset.image(b, {
					onload : function(c) {
						if (!this.loadedImages.contains(b)) {
							this.loadedImages.push(b)
						}
						this.currentFile = c;
						this.loadAux(this.currentFile)
					}.bindWithEvent(this)
				})
			},
			preloadImage : function(b) {
				if (!this.loadedImages.contains(b)) {
					var a = new Asset.image(b, {
						onload : function(c) {
							this.loadedImages.push(b)
						}.bindWithEvent(this)
					})
				}
			},
			loadSwf : function(b) {
				var a = new Swiff(b.retrieve("href"), {
					width : b.retrieve("width").toInt(),
					height : b.retrieve("height").toInt(),
					params : {
						wMode : "opaque",
						swLiveConnect : "false"
					}
				});
				this.currentFile = a;
				this.loadAux(b)
			},
			loadAux : function(a) {
				this.fileReady = true;
				this.fireEvent("fileReady");
				$$(this.description, this.navigation).setStyle("visibility",
						"hidden");
				this.navigation.setStyle("height", "");
//				$$(this.next, this.prev, this.close).setStyle(
//						"backgroundPosition", "0 0");
				this.showFile(a)
			},
			showFile : function(c) {
				if (this.closed) {
					return
				}
				var f = new Hash();
				var k = new Hash();
				var g, l;
				var e, j, i, a, h;
				g = l = {};
				e = j = i = a = h = 0;
				if (this.options.canvasBorderWidth.toInt() != 0
						&& this.canvas.getStyle("borderWidth").toInt() == 0) {
					i = this.options.canvasBorderWidth + " solid "
							+ this.options.canvasBorderColor;
					this.canvas.setStyle("border", i)
				}
				if (this.options.canvasPadding.toInt() != 0
						&& this.canvas.getStyle("padding").toInt() == 0) {
					a = this.options.canvasPadding;
					this.canvas.setStyle("padding", a)
				}
				l = this.canvas.getSize();
				e = this.canvas.getStyle("borderWidth").toInt() * 2
						+ this.canvas.getStyle("padding").toInt() * 2;
				this.canvas.setStyles( {
					opacity : 0,
					width : "",
					height : ""
				});
				if (!c.retrieve("width")) {
					f = f.extend(c.getProperties("width", "height")).map(
							function(b) {
								return b.toInt()
							});
					if (this.options.autoSize) {
						f = this.computeSize(f);
						c.setProperties( {
							width : f.width,
							height : f.height
						})
					}
				} else {
					f.extend( {
						height : c.retrieve("height").toInt(),
						width : c.retrieve("width").toInt()
					})
				}
				k = k.extend(this.center.getStyles("width", "height")).map(
						function(b) {
							return b.toInt()
						});
				if (f.width != k.width) {
					g.width = f.width + e;
					g.marginLeft = -(g.width / 2).round()
				}
				j = (l.y - e > 0) ? k.height - l.y : 0;
				g.height = f.height + e + j;
				this.canvas.setStyles( {
					width : f.width,
					height : f.height
				});
				this.center.removeClass("mbLoading");
				if (this.first) {
					h = 500;
					this.first = false
				}
				(function() {
					this.center.morph(g)
				}).delay(h, this)
			},
			computeSize : function(g) {
				var d = g;
				var b = window.getSize();
				var f = {
					width : b.x - 60,
					height : b.y - 68 - this.options.topPosition * 2
				};
				var e;
				var c;
				var a = Math.max(f.height, f.width);
				if (a == f.width) {
					e = a / d.width;
					c = "height"
				} else {
					e = a / d.height;
					c = "width"
				}
				e = (e <= 1) ? e : 1;
				d = d.map(function(h) {
					return Math.floor(h * e)
				});
				e = (f[c] / d[c] <= 1) ? f[c] / d[c] : 1;
				d = d.map(function(h) {
					return Math.floor(h * e)
				});
				if (this.options.maxHeight > 0) {
					e = (this.options.maxHeight / d.height < 1) ? this.options.maxHeight
							/ d.height
							: 1;
					d = d.map(function(h) {
						return Math.floor(h * e)
					})
				}
				return d
			},
			showGallery : function(a) {
				if (!a || !a.gallery) {
					return
				}
				var c = ($chk(a.index)) ? a.index : 0;
				var b = this.getGallery(a.gallery);
				var f = false;
				var e;
				if (a.autoplay || (b.options && b.options.autoplay)) {
					f = true
				}
				if (b != -1 && !this.opened) {
					if (f) {
						e = (a && a.delay) ? a.delay
								: (b.options && b.options.delay) ? b.options.delay
										: this.autoPlayDelay;
						this.startAutoPlay( {
							gallery : b,
							index : c,
							delay : e
						})
					} else {
						this.openMilkbox(b, c)
					}
				}
			},
			addGalleries : function(a) {
				this.currentRequest = new Request(
						{
							method : "get",
							autoCancel : true,
							url : a,
							onRequest : function() {
							}.bindWithEvent(this),
							onSuccess : function(d, b) {
								var c = d.replace(/(<a.+)\/>/gi, "$1></a>");
								this.setGalleries(new Element("div", {
									html : c
								}), a)
							}.bindWithEvent(this),
							onFailure : function(b) {
								alert("Milkbox :: addGalleries: XML file path error or local Ajax test: please test addGalleries() on-line")
							}
						});
				this.currentRequest.send()
			},
			setGalleries : function(d, f) {
				if (!this.xmlFiles.contains(f)) {
					this.xmlFiles.push(f)
				}
				var g = d;
				var b = g.getElements(".gallery");
				var e = [];
				var a = [];
				b.each(function(h, j) {
					var m = {
						gallery : h.getProperty("name"),
						autoplay : Boolean(h.getProperty("autoplay")),
						delay : Number(h.getProperty("delay"))
					};
					var c = h.getChildren("a");
					var k = c.map(function(i) {
						return i.setProperty("rel", "lightbox[" + m.gallery
								+ "]")
					});
					e.push(k);
					if (m.autoplay) {
						a.push(m)
					}
				});
				this.prepareGalleries(e.flatten());
				this.setAutoPlay(a);
				if (!this.activated) {
					this.initMilkbox()
				}
				this.fireEvent("xmlGalleries")
			},
			checkFileType : function(b, c) {
				var a = null;
				if ($type(b) != "string") {
					a = b.retrieve("href")
				} else {
					a = b
				}
				var d = new RegExp(".(" + c + ")$", "i");
				return a.split("?")[0].test(d)
			},
			getGallery : function(a) {
				var d = null;
				if (a.test(/^lightbox/i)) {
					d = this.families
				} else {
					d = this.families.map(function(g) {
						var h = g.trim();
						var e = h.slice(0, h.length).substr(8);
						var f = e.replace(/(.+)]$/, "$1");
						return f
					})
				}
				var b = d.indexOf(a);
				var c = (b != -1) ? this.galleries[b] : b;
				return c
			},
			setFileProps : function(c, a) {
				var b = a.split(",");
				b.each(function(f, e) {
					var d = f.trim().split(":");
					c.store(d[0].trim(), d[1].trim())
				}, this)
			},
			changeOptions : function(a) {
				if (!a) {
					return
				}
				this.setOptions(a);
				this.center.get("morph").setOptions( {
					transition : this.options.resizeTransition,
					duration : this.options.resizeDuration
				})
			},
			saveOptions : function(a) {
				if ($chk(a)) {
					this.fullOptionsBkup = a
				} else {
					this.fullOptionsBkup = this.options
				}
			},
			restoreOptions : function() {
				this.setOptions(this.fullOptionsBkup);
				var a = this.options.canvasBorderWidth + " solid "
						+ this.options.canvasBorderColor;
				this.canvas.setStyles( {
					border : a,
					padding : this.options.canvasPadding
				});
				this.center.get("morph").setOptions( {
					transition : this.options.resizeTransition,
					duration : this.options.resizeDuration
				})
			},
			reloadGalleries : function() {
				this.galleries = [];
				this.families = [];
				this.formtags = $$("select", "textarea");
				this.prepareGalleries();
				this.removeGalleriesEvents();
				this.setGalleriesEvents();
				if (this.xmlFiles.length == 0) {
					return
				}
				this.xmlFiles.each(function(b, a) {
					this.addGalleries(b)
				}.bind(this))
			},
			setAutoPlay : function(b) {
				var a = ($type(b) == "object") ? [ b ] : b;
				a.each(function(f) {
					var e = this.getGallery(f.gallery);
					if (e == -1) {
						return
					}
					var c = (f.autoplay == true) ? f.autoplay : false;
					var h = ($chk(f.delay) && c) ? f.delay
							: this.options.autoPlayDelay;
					e.options = {
						autoplay : c,
						delay : h
					}
				}, this)
			},
			startAutoPlay : function(b) {
				var c = -1;
				var a, e;
				if (b && b.gallery) {
					if ($type(b.gallery) == "array") {
						c = b.gallery
					} else {
						if ($type(b.gallery) == "string") {
							c = this.getGallery(b.gallery)
						}
					}
				}
				if (c == -1) {
					c = this.galleries[0]
				}
				e = (b && b.delay && ($type(b.delay) == "number")) ? b.delay * 1000
						: (c.options && c.options.delay) ? c.options.delay * 1000
								: this.options.autoPlayDelay * 1000;
				a = (b && b.index && ($type(b.index) == "number")) ? b.index
						: 0;
				if (e < this.options.resizeDuration * 2) {
					e = this.options.resizeDuration * 2
				}
				this.options.autoPlayDelay = e / 1000;
				if (!this.options.autoPlay) {
					this.setOptions( {
						autoPlay : true,
						autoPlayDelay : this.options.autoPlayDelay
					})
				}
				if (this.closed) {
					this.openMilkbox(c, a);
					if (this.mode != "fileGallery") {
						return
					}
					this.addEvent("fileReady", function() {
						this.intObj = this.next_prev_aux.periodical(e, this, [
								null, "next" ]);
						this.removeEvents("fileReady")
					}.bindWithEvent(this))
				} else {
					if (!this.closed) {
						this.next_prev_aux(null, "next")
					}
					this.intObj = this.next_prev_aux.periodical(e, this, [
							null, "next" ])
				}
				this.paused = false
			},
			stopAutoPlay : function() {
				if (this.intObj) {
					$clear(this.intObj);
					this.intObj = null
				}
				this.playpause.setStyle("backgroundPosition", "0 -44px");
				this.paused = true
			},
			removeGalleriesEvents : function() {
				this.galleries.each(function(a) {
					$$(a).removeEvents("click")
				}, this)
			},
			setGalleriesEvents : function() {
				this.galleries.each(function(a) {
					$$(a).addEvent(
							"click",
							function(d) {
								var b = ($(d.target).match("a")) ? $(d.target)
										: $(d.target).getParent("a");
								d.preventDefault();
								var c = this.getGallery(b.rel);
								if (c.options && c.options.autoplay) {
									this.setOptions( {
										autoPlay : c.options.autoplay,
										autoPlayDelay : c.options.delay
									})
								}
								if (this.options.autoPlay) {
									this.startAutoPlay( {
										gallery : a,
										index : a.indexOf(b)
									})
								} else {
									this.openMilkbox(a, a.indexOf(b))
								}
							}.bindWithEvent(this))
				}, this)
			},
			prepareEvents : function(a) {
				this.setGalleriesEvents();
				this.next.addEvent("click", this.next_prev_aux.bindWithEvent(
						this, "next"));
				this.prev.addEvent("click", this.next_prev_aux.bindWithEvent(
						this, "prev"));
//				$$(this.next, this.prev, this.close).addEvents( {
//					mouseover : function() {
//						this.setStyle("backgroundPosition", "0 -21px")
//					},
//					mouseout : function() {
//						this.setStyle("backgroundPosition", "0 0")
//					}
//				});
				$(window.document).addEvent("keydown", function(b) {
					if (this.mode != "fileGallery" || this.busy == true) {
						return
					}
					if (b.key == "right" || b.key == "space") {
						this.next_prev_aux(b, "next")
					} else {
						if (b.key == "left") {
							this.next_prev_aux(b, "prev")
						} else {
							if (b.key == "esc") {
								this.closeMilkbox()
							}
						}
					}
				}.bindWithEvent(this));
				this.playpause
						.addEvents( {
							mouseover : function(b) {
								if (this.paused == false) {
									this.playpause.setStyle(
											"backgroundPosition", "0 -22px")
								} else {
									this.playpause.setStyle(
											"backgroundPosition", "0 -66px")
								}
							}.bindWithEvent(this),
							mouseout : function() {
								if (this.paused == false) {
									this.playpause.setStyle(
											"backgroundPosition", "0 0")
								} else {
									this.playpause.setStyle(
											"backgroundPosition", "0 -44px")
								}
							}.bindWithEvent(this),
							click : function() {
								if (this.paused == false) {
									this.stopAutoPlay();
									this.paused = true;
									this.playpause.setStyle(
											"backgroundPosition", "0 -66px")
								} else {
									var b = (this.currentGallery.options && this.currentGallery.options.delay) ? this.currentGallery.options.delay
											: this.options.autoPlayDelay;
									this.startAutoPlay( {
										gallery : this.currentGallery,
										index : this.currentIndex + 1,
										delay : b
									});
									this.paused = false;
									this.playpause.setStyle(
											"backgroundPosition", "0 0")
								}
							}.bindWithEvent(this)
						});
				this.overlay
						.get("tween")
						.addEvent(
								"onComplete",
								function() {
									if (this.overlay.getStyle("opacity") == this.options.overlayOpacity) {
										this.center.tween("opacity", 1)
									} else {
										if (this.overlay.getStyle("opacity") == 0) {
											this.overlay.setStyles( {
												height : 0,
												top : ""
											})
										}
									}
								}.bindWithEvent(this));
				this.center
						.get("morph")
						.addEvent(
								"onComplete",
								function() {
									if ($type(this.currentFile) == "element") {
										this.canvas.grab(this.currentFile)
									} else {
										(function() {
											this.canvas.grab(this.currentFile)
										}).delay(500, this)
									}
									this.canvas.tween("opacity", 1);
									var e = (!(this.mode == "showThisImage")) ? this.currentGallery[this.currentIndex]
											.retrieve("title")
											: this.specialDescription;
									if ($chk(e)) {
										this.description.innerHTML = e
									}
									if (this.mode == "fileGallery") {
										this.count
												.appendText((this.currentIndex + 1)
														+ " "
														+ this.options.imageOfText
														+ " "
														+ this.currentGallery.length)
									}
									var b = this.center.getStyle("height")
											.toInt();
									this.navigation.setStyle("height",
											this.bottom.getStyle("height")
													.toInt());
									var f = this.bottom.getSize().y;
									var c = (b > this.canvas.getSize().y) ? (this.bottom
											.getSize().y + this.canvas
											.getSize().y)
											- b
											: f;
									this.bottom.setStyle("display", "none");
									this.center.retrieve("setFinalHeight")
											.start(b, b + c)
								}.bindWithEvent(this));
				this.center.retrieve("setFinalHeight").addEvent(
						"onComplete",
						function() {
							this.bottom.setStyles( {
								visibility : "visible",
								display : "block"
							});
							$$(this.description, this.navigation).setStyle(
									"visibility", "visible");
							var b = $(window).getScrollSize().y;
							var c = $(window).getScroll().y;
							this.overlay.setStyles( {
								height : b + c,
								top : -c
							});
							this.busy = false
						}.bindWithEvent(this));
				window.addEvent("resize", function() {
					if (this.overlay.getStyle("opacity") == 0) {
						return
					}
					var b = $(window).getScrollSize().y;
					var c = $(window).getScroll().y;
					this.overlay.setStyles( {
						height : b + c,
						top : -c
					})
				}.bindWithEvent(this));
				$$(this.overlay, this.close).addEvent("click",
						this.closeMilkbox.bindWithEvent(this));
				this.eventsok = true
			},
			next_prev_aux : function(d, c) {
				if (d) {
					d.preventDefault();
					this.stopAutoPlay()
				} else {
					if (this.busy || !this.fileReady) {
						return
					}
				}
				this.busy = true;
				var a, b;
				if (c == "next") {
					a = (this.currentIndex != this.currentGallery.length - 1) ? this.currentIndex += 1
							: this.currentIndex = 0;
					b = (this.currentIndex != this.currentGallery.length - 1) ? this.currentIndex + 1
							: 0
				} else {
					a = (this.currentIndex != 0) ? this.currentIndex -= 1
							: this.currentIndex = this.currentGallery.length - 1;
					b = (this.currentIndex != 0) ? this.currentIndex - 1
							: this.currentGallery.length - 1
				}
				this.canvas.empty();
				this.description.empty();
				this.count.empty();
				this.loadFile(this.currentGallery[a],
						[ this.currentGallery[b] ])
			},
			prepareEffects : function() {
				this.overlay.set("tween", {
					duration : "short",
					link : "cancel"
				});
				this.center.set("tween", {
					duration : "short",
					link : "chain"
				});
				this.center.set("morph", {
					duration : this.options.resizeDuration,
					link : "chain",
					transition : this.options.resizeTransition
				});
				this.center.store("setFinalHeight", new Fx.Tween(this.center, {
					property : "height",
					duration : "short"
				}));
				this.canvas.set("tween", {
					link : "chain"
				})
			},
			prepareGalleries : function(a) {
				var c = [];
				var b = (a) ? a : $$("a");
				b
						.each(
								function(d) {
									if (d.rel
											&& d.rel.test(/^lightbox/i)
											&& d.href.split("?")[0]
													.test(/\.(gif|jpg|jpeg|png|swf)$/i)) {
										if (d.rel.length > 7
												&& !this.families
														.contains(d.rel)) {
											this.families.push(d.rel)
										}
										c.push(d)
									}
								}, this);
				c.each(function(d) {
					$(d).store("href", d.href);
					$(d).store("rel", d.rel);
					$(d).store("title", d.title);
					if (this.checkFileType(d.href, "swf")) {
						this.setFileProps($(d), d.rev)
					}
					if (this.options.removeTitle) {
						$(d).removeProperty("title")
					}
					if (d.rel.length > 7) {
						this.families.each(function(j, h) {
							if (d.rel == j) {
								var e = false;
								var g;
								this.galleries.each(function(i, f) {
									if (i[0].rel == j) {
										e = true;
										g = f;
										return
									}
								});
								if (e == true) {
									this.galleries[g].push($(d))
								} else {
									this.galleries.push( [ $(d) ])
								}
							}
						}, this)
					} else {
						this.galleries.push( [ $(d) ])
					}
				}, this)
			},
			prepareHTML : function() {
				this.overlay = new Element("div", {
					id : "mbOverlay",
					styles : {
						opacity : 0,
						visibility : "visible",
						height : 0,
						overflow : "hidden"
					}
				}).inject($(document.body));
				this.center = new Element("div", {
					id : "mbCenter",
					styles : {
						width : this.options.initialWidth,
						height : this.options.initialHeight,
						marginLeft : -(this.options.initialWidth / 2),
						opacity : 0
					}
				}).inject($(document.body));
				this.top = new Element("div", {
					id : "mbTop"
				}).inject(this.center);
				this.canvas = new Element("div", {
					id : "mbCanvas"
				}).inject(this.center);
				this.bottom = new Element("div", {
					id : "mbBottom"
				}).inject(this.center).setStyle("visibility", "hidden");
				this.navigation = new Element("div", {
					id : "mbNavigation"
				}).setStyle("visibility", "hidden");
				this.description = new Element("div", {
					id : "mbDescription"
				}).setStyle("visibility", "hidden");
				this.bottom.adopt(this.navigation, this.description,
						new Element("div", {
							"class" : "mbClear"
						}));
				this.close = new Element("a", {
					id : "mbCloseLink"
				});
				this.next = new Element("a", {
					id : "mbNextLink"
				});
				this.prev = new Element("a", {
					id : "mbPrevLink"
				});
				this.playpause = new Element("a", {
					id : "mbPlayPause"
				});
				this.count = new Element("span", {
					id : "mbCount"
				});
				$$(this.next, this.prev, this.count, this.playpause).setStyle(
						"display", "none");
				this.top.adopt(this.close);
				this.navigation.adopt(this.next, this.prev,
						this.playpause, new Element("div", {
							"class" : "mbClear"
						}))
			},
			closeMilkbox : function() {
				this.cancelAllEffects();
				this.stopAutoPlay();
				this.setOptions(this.autoPlayBkup);
				this.currentFile = null;
				this.currentIndex = null;
				this.currentGallery = null;
				this.currentRequest = null;
				this.currentResponse = null;
				$$(this.prev, this.next, this.playpause, this.count).setStyle(
						"display", "none");
				this.playpause.setStyle("backgroundPosition", "0 0");
				var a = this.center.getStyle("border-right-width").toInt();
				var b = this.close.getSize().x + a;
				this.navigation.setStyles( {
					width : b,
					height : "",
					visibility : "hidden"
				});
				this.description.setStyle("margin-right", b);
				this.description.empty();
				this.bottom.setStyles( {
					visibility : "hidden",
					display : ""
				});
				this.canvas.setStyles( {
					opacity : 0,
					width : "",
					height : ""
				});
				this.canvas.empty();
				this.count.empty();
				this.center.setStyles( {
					opacity : 0,
					width : this.options.initialWidth,
					height : this.options.initialHeight,
					marginLeft : -(this.options.initialWidth / 2)
				});
				this.overlay.tween("opacity", 0);
				if (this.formtags.length != 0) {
					this.formtags.setStyle("display", "")
				}
				this.mode = null;
				this.closed = true;
				this.first = true;
				this.fileReady = false;
				this.fireEvent("closed")
			},
			cancelAllEffects : function() {
				this.overlay.get("tween").cancel();
				this.center.get("morph").cancel();
				this.center.get("tween").cancel();
				this.center.retrieve("setFinalHeight").cancel();
				this.canvas.get("tween").cancel()
			}});

window.addEvent('domready', function(){
	milkbox = new Milkbox();
});
