/*
 * 	Dynamic image preview for Picasa templates
 *	written by Chris Heilmann (http://www.wait-till-i.com)
 *  Free to use, but please contact the author for commercial use and 
 *  alteractions
 */
dp={
	imgContainerId:'largeImage',
	showClass:'show',
	hideClass:'hide',
	imageListId:'imagelist',
	albumId:'album',
	closeTitle:'Click to close the photo',
	init:function(){
		if(!document.getElementById || !document.createTextNode){return;}
		dp.imgList=document.getElementById(dp.imageListId);
		if(!dp.imgList){return}
		var imgs=dp.imgList.getElementsByTagName('a');
		for(var i=0;i<imgs.length;i++){
			dp.addEvent(imgs[i],'click',dp.showpic,false);	
			imgs[i].onclick=function(){return false;} // cheers Safari
		}
		dp.imgContainer=document.createElement('div');
		dp.imgContainer.setAttribute('id',dp.imgContainerId);
		dp.imgLink=document.createElement('a');
		dp.imgContainer.appendChild(dp.imgLink);
		dp.imgLink.setAttribute('href','#');
		dp.addEvent(dp.imgLink,'click',dp.killpic,false);	
		dp.imgLink.onclick=function(){return false;} // cheers Safari
		if(document.getElementById(dp.albumId)){
			document.getElementById(dp.albumId).appendChild(dp.imgContainer);
		} else {
			document.body.appendChild(dp.imgContainer);
		}
	},
	killpic:function(e){
		dp.imgLink.removeChild(dp.imgLink.getElementsByTagName('img')[0]);
		dp.cancelClick(e);
		dp.cssjs('remove',dp.imgList,'hide');
		dp.cssjs('remove',dp.imgContainer,'show');
	},
	showpic:function(e){
		dp.cssjs('add',dp.imgList,'hide');
		dp.cssjs('add',dp.imgContainer,'show');
		if(dp.imgLink.getElementsByTagName('img')[0]){
			dp.imgLink.removeChild(dp.imgLink.getElementsByTagName('img')[0]);
		}
		var t=dp.getTarget(e);
		var img=t.getElementsByTagName('img')[0];
		var bigImg=img.cloneNode(true);
		bigImg.src=bigImg.src.replace('thumbnails','images');
		bigImg.removeAttribute('width');
		bigImg.setAttribute('title',dp.closeTitle);
		bigImg.removeAttribute('height');
		dp.imgContainer.getElementsByTagName('a')[0].appendChild(bigImg);
		var sT;
		if(self.pageYOffset){
			sT = self.pageYOffset;
		}else if (document.documentElement && document.documentElement.scrollTop){
			sT = document.documentElement.scrollTop;
		} else if(document.body){
			sT = document.body.scrollTop;
		}
		dp.imgContainer.style.top=sT+'px';
		dp.cancelClick(e);
	},
/* helper methods */
	getTarget:function(e){
		var target = window.event ? window.event.srcElement : e ? e.target : null;
		if (!target){return false;}
		if (target.nodeName.toLowerCase() != 'a'){target = target.parentNode;}
		return target;
	},
	cancelClick:function(e){
		if (window.event){
			window.event.cancelBubble = true;
			window.event.returnValue = false;
			return;
		}
		if (e){
			e.stopPropagation();
			e.preventDefault();
		}
	},
	addEvent: function(elm, evType, fn, useCapture){
		if (elm.addEventListener) 
		{
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	},
	cssjs:function(a,o,c1,c2){
		switch (a){
			case 'swap':
				o.className=!dp.cssjs('check',o,c1)?o.className.replace(c2,c1):o.className.replace(c1,c2);
			break;
			case 'add':
				if(!dp.cssjs('check',o,c1)){o.className+=o.className?' '+c1:c1;}
			break;
			case 'remove':
				var rep=o.className.match(' '+c1)?' '+c1:c1;
				o.className=o.className.replace(rep,'');
			break;
			case 'check':
				return new RegExp("(^|\s)" + c1 + "(\s|$)").test(o.className)
			break;
		}
	}
}
dp.addEvent(window, 'load', dp.init, false);
