/* 	Darkr Javascript Class
 *	Copyright (c) 2009 Oliver C Dodd
 *	
 *	Licensed under the MIT license.
 */
Darkr = function(image,container) {
	this.image = image;
	this.container = container;
	/*-RAPHAEL------------------------------------------------------------*/
	this.r = null;
	this.img1 = null;
	this.img2 = null;
	this.gradient = null;
	/*-DEFAULTS-----------------------------------------------------------*/
	this.bgColor = "#000000";
	this.gradientOpacity = .5;
	this.reflectionOpacity = .75;
	this.reflectionPercentage = .33;
	this.maxReflectionHeight = 200;
	/*-PARAMETERS---------------------------------------------------------*/
	this.p = function(params,parameter) {
		return params[parameter] || this[parameter];
	};	
};

/*-EFFECTS------------------------------------------------------------*/
Darkr.prototype.reflect = function(params) {
	var img = this.image;
	params |= {};
	var bgColor					= this.p(params,"bgColor");
	var reflectionPercentage	= this.p(params,"reflectionPercentage");
	var gradientOpacity			= this.p(params,"gradientOpacity");
	var reflectionOpacity		= this.p(params,"reflectionOpacity");
	var reflectionPercentage	= this.p(params,"reflectionPercentage");
	var maxReflectionHeight		= this.p(params,"maxReflectionHeight");
	
	var rH = Math.ceil(Math.min(reflectionPercentage * img.height,maxReflectionHeight));
	this.container.style.width = img.width;
	this.container.style.height = 300;
	
	this.r = Raphael(this.container,img.width,rH + img.height);
	this.img1 = this.r.image(img.src,0,0,img.width,img.height);
	this.img2 = this.r.image(img.src,-1,img.height,img.width+1,img.height)
		.scale(1,-1).attr({opacity: reflectionOpacity });
	this.gradient = this.r.rect(-1,img.height,img.width+1,rH).attr({
		gradient: "90-"+bgColor+"-"+bgColor,
		opacity:gradientOpacity, "stroke-width":0 });
	img.style.display = "none";
};

Darkr.prototype.switchImage = function(src,onload) {
	this.clearContainer();
	this.image = document.createElement('img');
	if (onload) {
		this.image.onload = onload;
	}
	this.image.src = src;
	this.container.appendChild(this.image);
	return this.image;
};

Darkr.prototype.clearContainer = function() {
	this.container.innerHTML = "";
};
