Equens.Lightbox = function(vars) {
	if (vars) {
		this.closeLabel = vars.closeLabel ? vars.closeLabel : "Sluit venster";
		this.content = vars.content ? vars.content : null;
		this.flashData = vars.flashData ? vars.flashData : null;
		this.lightboxlayer = null;
		this.lightbox = null;
		this.inner = null;
		this.flashId = null;
		this.flashContainer = null;
		this.flashLoaded = false;
		this.init();
	}
}

Equens.Lightbox.prototype.init = function() {
	this.buildContainer();
};

Equens.Lightbox.prototype.buildContainer = function() {
	var _this = this;
	this.lightboxlayer = document.createElement("div");
	this.lightboxlayer.className = "lightbox-layer";
	$(this.lightboxlayer).bind("click", function(e){_this.outsideHide(e)});
	this.lightbox = document.createElement("div");
	this.lightbox.className = "lightbox";
	this.inner = document.createElement("div");
	this.inner.className = "inner";
	
	this.closeButton = document.createElement("a");
	this.closeButton.className = "close";
	this.closeButton.href = "";
	this.closeButton.innerHTML = "<span>"+this.closeLabel+"</span>";
	$(this.closeButton).bind("click", function(e){_this.hide(e); return false});
	
	if (this.flashData) {
		this.flashId = this.flashData.id;
		this.flashContainer = document.createElement("div");
		this.flashContainer.id = this.flashId;
		if (this.content) {
			$(this.flashContainer).append(this.content);
		};
		$(this.inner).append(this.flashContainer);
		$(this.lightbox).width(this.flashData.width + "px");
	}
	else if (this.content) {
		$(this.inner).append(this.content);
	};
	
	$(this.lightbox).append(this.closeButton);
	$(this.lightbox).append("<div class=\"lt\"></div><div class=\"rt\"></div><div class=\"rb\"></div><div class=\"lb\"></div>");
	$(this.lightbox).append(this.inner);
	$(this.lightboxlayer).append(this.lightbox);
	$(document.body).append(this.lightboxlayer);
};

Equens.Lightbox.prototype.show = function() {
	var _this = this;
	Equens.LightboxManager.currentLightbox = this;
	Equens.LightboxManager.showOpacityLayer();
	var newtop = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop;
	this.lightboxlayer.style.top = newtop + "px";
	setTimeout(function(){$(_this.lightboxlayer).fadeIn(750, function(){Equens.LightboxManager.currentLightbox = _this;})}, 500);
	if (this.flashContainer && !this.flashLoaded) {
		swfobject.embedSWF(this.flashData.file, this.flashContainer.id, this.flashData.width, this.flashData.height, this.flashData.version, "static/flash/expressInstall.swf", this.flashData.vars, this.flashData.params, this.flashData.attr);
	}
}

Equens.Lightbox.prototype.outsideHide = function(e) {
	var targ = null;
	if (e.target) {
		targ = e.target;
	}
	else if (e.srcElement) {
		targ = e.srcElement;
	}
	if (targ.nodeType == 3) {
		targ = targ.parentNode;
	}
	if (!this.isInside(targ, this.lightbox)){
		this.hide();
	}
}

Equens.Lightbox.prototype.isInside = function (childNode, parentNode) {
	if (childNode == parentNode) {
		return true;
	}
	if (parentNode && parentNode.childNodes) {
		for (var i=0; i<parentNode.childNodes.length; ++i) {
			if (parentNode.childNodes[i] == childNode) {
				return true;
			}
			else if(this.isInside(childNode, parentNode.childNodes[i])){
				return true;
			}
		}
	}	
	return false;
}

Equens.Lightbox.prototype.hide = function() {
	Equens.LightboxManager.currentLightbox = null;
	if (this.flashData && this.flashData.attr && this.flashData.id) {
		if(playerStop){
			playerStop(this.flashData.attr.id);
		}
	}
	$(this.lightboxlayer).fadeOut(500, function(){Equens.LightboxManager.hideOpacityLayer()});
}