function addEventToObject(obj,evt,func) {
	var oldhandler = obj[evt];
	obj[evt] = (typeof obj[evt] != 'function') ? func : function(ev){oldhandler(ev);func(ev);};
}
function preloadImages(imageArray)
	{
	var tempImages = new Array();
	for(var i=0;i<imageArray.length;i++){tempImages[i] = new Image();tempImages[i].src = imageArray[i];}
	return true;
	}
function stopDefaultAction(ev) {
	if (!ev) ev = window.event;
	(ev.stopPropagation) ? ev.stopPropagation() : ev.cancelBubble = true;
	(ev.preventDefault) ? ev.preventDefault() : ev.returnValue = false;
	return false;
}



function getElementsByClassName(parentNode,node,classname)
	{
	var a = [];
	var re = new RegExp('(^| )'+classname+'( |$)');
	var els = parentNode.getElementsByTagName(node);
	for(var i=0,j=els.length; i<j; i++)
	if(re.test(els[i].className))a.push(els[i]);
	return a;
	}


var foo = {
	iActiveProdNum: null,
	aProds: [],
	init: function()
		{
		var aPreloadImgs = new Array('/jp/store/holiday2005/images/card-h-btm.png','/jp/store/holiday2005/images/card-h-top.png');
		preloadImages(aPreloadImgs);
		foo.aProds = getElementsByClassName(document.getElementById('gg-mdl'),'div','gg-p');
		for(var i=0;i<foo.aProds.length;i++)
			{
			var oImgDiv = document.getElementById('gg-p-'+i+'-img');
			
			oImgDiv.prodnum = i;
			document.getElementById('gg-p-'+i).prodnum = i;
			document.getElementById('gg-p-'+i+'-card').prodnum = i;
			document.getElementById('gg-p-'+i+'-overlay').prodnum = i;
			document.getElementById('gg-p-'+i+'-ribbon').prodnum = i;
			document.getElementById('gg-p-'+i+'-close').prodnum = i;
			
			addEventToObject(oImgDiv,'onmouseover',foo.hoverit);
			addEventToObject(oImgDiv,'onclick',foo.clickit);
			}
		},
	hoverit: function(ev)
		{
		if (!ev) ev = window.event;
		var oEvObj = (ev.currentTarget) ? ev.currentTarget : ev.srcElement;
		while (oEvObj.nodeName.toLowerCase() != 'div') {oEvObj = oEvObj.parentNode;}
		var iThisProdNum = oEvObj.prodnum;
		if (iThisProdNum != foo.iActiveProdNum)
			{
			for(var i=0;i<foo.aProds.length;i++)
				{
				var iProdNum = foo.aProds[i].prodnum;
				var oOverlay = document.getElementById('gg-p-'+iProdNum+'-overlay');
				oOverlay.style.display = 'none';
				}
			oOverlay = document.getElementById('gg-p-'+iThisProdNum+'-overlay');
			oOverlay.style.display = 'block';
			addEventToObject(oOverlay,'onmouseout',foo.unhoverit);
			addEventToObject(oOverlay,'onclick',foo.clickit);
			}
		stopDefaultAction(ev);
		return false;
		},
	unhoverit: function(ev)
		{
		if (!ev) ev = window.event;
		for(var i=0;i<foo.aProds.length;i++)
			{
			var iProdNum = foo.aProds[i].prodnum;
			document.getElementById('gg-p-'+iProdNum+'-overlay').style.display = 'none';
			}
		stopDefaultAction(ev);
		return false;
		},
	clickit: function(ev)
		{
		if (!ev) ev = window.event;
		var oEvObj = (ev.currentTarget) ? ev.currentTarget : ev.srcElement;
		if (foo.iActiveProdNum != oEvObj.prodnum)
			{
			foo.showit(ev);
			}
		stopDefaultAction(ev);
		return false;
		},
	showit: function(ev)
		{
		if (!ev) ev = window.event;
		var oEvObj = (ev.currentTarget) ? ev.currentTarget : ev.srcElement;
		var iThisProdNum = oEvObj.prodnum;
		for(var i=0;i<foo.aProds.length;i++)
			{
			var iProdNum = foo.aProds[i].prodnum;
			document.getElementById('gg-p-'+iProdNum+'-card').style.display = 'none';
			document.getElementById('gg-p-'+iProdNum+'-overlay').style.display = 'none';
			document.getElementById('gg-p-'+iProdNum+'-ribbon').style.display = 'none';
			foo.aProds[i].style.zIndex = 10;
			}
		document.getElementById('gg-p-'+iThisProdNum).style.zIndex = 3000;
	
		document.getElementById('gg-p-'+iThisProdNum+'-card').style.display = 'block';
		document.getElementById('gg-p-'+iThisProdNum+'-overlay').style.display = 'none';
		document.getElementById('gg-p-'+iThisProdNum+'-ribbon').style.display = 'block';
		
		addEventToObject(document.getElementById('gg-p-'+iThisProdNum+'-close'),'onclick',foo.closeit);
		
		foo.iActiveProdNum = iThisProdNum;
		
		var aImgs = document.getElementById('gg-p-'+iThisProdNum+'-right').getElementsByTagName('img');
		for(var i=1;i<aImgs.length;i++)
			{
			aImgs[i].prodNum = iThisProdNum;
			addEventToObject(aImgs[i],'onmouseover',foo.swapit);
			}
		stopDefaultAction(ev);
		return false;
		},
	swapit: function(ev)
		{
		if (!ev) ev = window.event;
		var oEvObj = (ev.currentTarget) ? ev.currentTarget : ev.srcElement;
		var sSrc = oEvObj.getAttribute('src');
		var sRepUrlStart = sSrc.indexOf('?repurl=');
		if (sRepUrlStart != -1){sSrc = sSrc.substring(sRepUrlStart+8);}
		var sPrefixEnd = sSrc.indexOf('-detail-')+8;
		var sPrefix = sSrc.substring(0,sPrefixEnd); 
		var iNumStart = sSrc.indexOf('-s')+2;
		var iNumEnd = sSrc.lastIndexOf('.');
		var sNum = sSrc.substring(iNumStart,iNumEnd);
		var iTypeStart = sSrc.lastIndexOf('.')+1;
		var sType = sSrc.substring(iTypeStart); 
		var oImageBig = document.getElementById('gg-p-'+oEvObj.prodNum+'-detail');
		oImageBig.src = sPrefix+'b'+sNum+'.'+sType;
		},
	closeit: function(ev)
		{
		if (!ev) ev = window.event;
		for(var i=0;i<foo.aProds.length;i++)
			{
			var iProdNum = foo.aProds[i].prodnum;
			document.getElementById('gg-p-'+iProdNum+'-card').style.display = 'none';
			document.getElementById('gg-p-'+iProdNum+'-ribbon').style.display = 'none';
			document.getElementById('gg-p-'+iProdNum+'-overlay').style.display = 'none';
			foo.aProds[i].style.zIndex = 10;
			}
		foo.iActiveProdNum = null;
		stopDefaultAction(ev);
		return false;
		}
	}
	
addEventToObject(window,'onload',foo.init); 
