YAHOO.namespace("bearcode.util");

YAHOO.bearcode.util.ImagePop = function() {
	/** 
	Step 1: Find Images
	Step 2: Build Hovering Div
	Step 3: Attach Event Handlers
	**/
	this.imgs = YAHOO.util.Dom.getElementsByClassName("gallery-image", "img", "body");
	
	this.div = document.createElement("div");
	this.div.id = "gallery-hover-pane";
	this.div.style.position = "absolute",
	this.div.style.visibility = "hidden";
	this.div.style.overflow = "hidden"
	
	this.img = document.createElement("img");
	this.img.id = "gallery-hover-image";
	this.div.appendChild(this.img);
	
	var t = document.createElement("p");
	t.appendChild(document.createTextNode("Click This Image Again To Close"));
	t.id = "gallery-hover-text";	
	this.div.appendChild(t);
	
	YAHOO.util.Event.addListener(this.div, "click", this.unpopImage, this);
	
	document.body.appendChild(this.div);
	
	for(var i = 0; i < this.imgs.length; i++) {
		this.preload(null, this.imgs[i]);
		//YAHOO.util.Event.addListener(this.imgs[i], "load", this.popImage, this);
		YAHOO.util.Event.addListener(this.imgs[i], "click", this.popImage, this);
	}
	
}

YAHOO.bearcode.util.ImagePop.prototype.preloadedImages = new Array();
YAHOO.bearcode.util.ImagePop.prototype.preloadedNames = new Array();

YAHOO.bearcode.util.ImagePop.prototype.preload = function(e, obj) {
	var preloadedImage = new Image();
	var regex = /(.+)_th\.(jpg|gif|png)/i;
	preloadedImage.src = obj.src.replace( regex, "$1.$2" );
	this.preloadedImages.push(preloadedImage);
	this.preloadedNames.push(preloadedImage.src);
	//alert("preload"+preloadedImage.src);
}

YAHOO.bearcode.util.ImagePop.prototype.popImage = function(e, obj) {
	var regex = /(.+)_th\.(jpg|gif|png)/i;
	var newname = this.src.replace( regex, "$1.$2" );
	var newimg;
	for (var ind = 0; ind < obj.preloadedNames.length; ind++) {
		if ( obj.preloadedNames[ind] == newname ) {
			newimg = obj.preloadedImages[ind];
			break;
		}
	}
	
	
	
	//var newimg = new Image();
	//regex.exec(this.src);
	//newimg.src = this.src.replace( regex, "$1.$2" );
	//alert(regex.exec(this.src)[1]);
	
	var extents = YAHOO.util.Region.getRegion(this);
	obj.div.style.top    = Math.abs(extents.top - 51) + "px"; // top - margin-top
	obj.div.style.left   = Math.abs(extents.left - 51) + "px"; // left - margin-left
	obj.div.style.height = Math.abs(extents.bottom - extents.top - 38) + "px";
	obj.div.style.width  = Math.abs(extents.right - extents.left - 38) + "px";
	YAHOO.util.Dom.setStyle(obj.div, "opacity", "0");
		
	var onload = function(e, obj) {
		obj.img.src = newimg.src;
		var imgWidth  = newimg.width;
		var imgHeight = newimg.height;
		
		var attrs = { 
			opacity: { from: 0, to: 1},
			width: { to: imgWidth },
			height: { to: imgHeight }
		};
		var fadein = new YAHOO.util.Anim(obj.div, attrs, .7, YAHOO.util.Easing.easeNone);

		obj.div.style.visibility = "visible";
		fadein.animate();
	}
	
	if(!newimg.complete) {
		//to get around a safari bug: it doesn't implement Image.complete
		if(newimg.complete == undefined && newimg.height != 0 ) onload(null, obj);
		else 
			YAHOO.util.Event.addListener(newimg, "load", onload, obj);	
	} else onload(null, obj);
	
}
YAHOO.bearcode.util.ImagePop.prototype.unpopImage = function(e, obj) {
	var attrs = {
		opacity: { from: 1, to: 0},
		top: { to: 0, unit: "px" }
	}
	var complete = function() {
		obj.div.style.visibility = "hidden";
	}
	var anim = new YAHOO.util.Anim(obj.div, attrs, 0.5, YAHOO.util.Easing.easeNone);
	anim.onComplete.subscribe(complete, obj);
	anim.animate();
}

var init = function() {
	new YAHOO.bearcode.util.ImagePop();
}

YAHOO.util.Event.addListener(window, "load", init);
