var ImagePopup = Class.create({
	initialize: function(container) {
		this.container = container;
		Element.childElements(this.container).each(function(e) {
			if (e.hasClassName("imagelist")) {
				e.childElements().each(function(ie) {
					if (ie.hasClassName("overlay") == false) {
						this.imagelist.push(ie);
					} else {
						ie.setStyle({
							zIndex: ie.getStyle("z-index") + 1,
							display: "block"
						});
					}
				}, this);
			} else {
				e.childElements().each(function(ee) {
					if (ee.hasClassName("close")) {
						ee.instance = this;
						ee.observe('click', function(event) {
							this.instance.Destroy();
						});
					}
				}, this);
			}
		}, this);

		var layout = Element.getDimensions(this.container);

		this.container.style.top = "0px";
	},

	Show: function() {
		Element.show(this.container);
		Element.setStyle(this.container, {
			display: "block"
		});
		if (this.imagelist.length > 0) {
			this.imagelist[this.imageindex].style.display = "block";
		}
	},

	Close: function() {
		this.container.style.display = "none";
	},

	Destroy: function() {
		this.container.remove();
	},

	Fade: function(yesno) {
		if (yesno == true) {
			var instance = this;
			this.iid = setInterval(function() {
				if (instance.isfading == false) {
					var from = instance.imageindex;
					instance.imageindex++;
					if (instance.imageindex >= instance.imagelist.length) {
						instance.imageindex = 0;
					}
					var to = instance.imageindex;
					instance.FadeFromTo(from, to);
				}
			}, 5000);
		} else {
			clearInterval(this.iid);
		}
	},
	FadeFromTo: function(index1, index2) {
		var step = 1.0 / 10.0;
		var duration = 1000;
		var opacity = 0.0;
		var instance = this;

		if (index1 == index2) {
			return false;
		}

		this.imagelist[index1].style.display = "block";
		this.imagelist[index2].style.display = "block";

		Element.setOpacity(this.imagelist[index1], 1.0);
		Element.setOpacity(this.imagelist[index2], 0.0);

		this.isfading = true;

		var id = setInterval(function() {
			Element.setOpacity(instance.imagelist[index1], 1.0 - opacity);
			Element.setOpacity(instance.imagelist[index2], opacity);

			opacity += step;
			if (opacity >= 1.0) {
				instance.imagelist[index1].style.display = "none";
				instance.isfading = false;
				clearInterval(id);
			}
		}, duration * step);
		return true;
	},

	imagelist: [],
	imageindex: 0,
	isfading: false
});