
ProStores.Detail = {
	ACTIVE_BORDER_COLOR : "#8FB6DB",
	INACTIVE_BORDER_COLOR : "#CCCCCC",

	ID_DIV_MEDIUM_CONTAINER : "divMediumContainer",	
	ID_DIV_SMALL_IMAGE : "divSmallImage_",
	ID_IMG_MEDIUM : "imgMedium",
	ID_IMG_SMALL : "imgSmall_",
	ID_TBL_IMAGE_CONTAINER : "imgtable",
	
	ID_DIV_TAB : "divTab_",
	ID_DIV_DESC : "divDesc_",
	
	aProductImages : new Array(),
	nActiveImage : 1,
	nMaxHeight : 200,
	nMaxWidth : 200,
	nTabCount : 0,
	
	init:
		function() {
			// Allow the merchant to modify height/width of medium image container to meed their needs.
			if (typeof(nMinHeight) != "undefined")
				ProStores.Detail.nMaxHeight = nMinHeight;

			if (typeof(nMinWidth) != "undefined")
				ProStores.Detail.nMaxWidth = nMinWidth;
			
			var nFirstHeight = 0;
			var nFirstWidth = 0;
			
			for (var i = 0; i < ProStores.Detail.aProductImages.length; i++) {
				var elSmallImage = _(ProStores.Detail.ID_IMG_SMALL + (i + 1));
				if (elSmallImage) {
					elSmallImage.onmouseover = ProStores.Detail.swapImage;
					elSmallImage.onmouseout = ProStores.Detail.updateStyle;
				}
				var nHeight = parseInt(ProStores.Detail.aProductImages[i].getMediumHeight);
				var nWidth = parseInt(ProStores.Detail.aProductImages[i].getMediumWidth);

				if (i == 0) {
					nFirstHeight = nHeight;
					nFirstWidth = nWidth;
				}
				ProStores.Detail.nMaxHeight = Math.max(nHeight, ProStores.Detail.nMaxHeight);
				ProStores.Detail.nMaxWidth = Math.max(ProStores.Detail.nMaxWidth, nWidth);				
			}
			
			var elDivMediumContainer = _(ProStores.Detail.ID_TBL_IMAGE_CONTAINER);
			if (elDivMediumContainer && ProStores.Detail.nMaxHeight > 0 && ProStores.Detail.nMaxWidth > 0) {
				elDivMediumContainer.style.height = ProStores.Detail.nMaxHeight + 10;
				elDivMediumContainer.style.width = ProStores.Detail.nMaxWidth + 10;
			}
			
			var elImgMedium = _(ProStores.Detail.ID_IMG_MEDIUM);
			if (elImgMedium) {
			 	if (ProStores.Detail.aProductImages.length > 0)
					elImgMedium.onclick = ProStores.Detail.zoomImage;
				else
					elImgMedium.style.cursor = 'default';
			}

			// Add listeners for tabs.
			// Allow the merchant to add more tabs on the fly.
			if (typeof(nTabCount) != "undefined")
				ProStores.Detail.nTabCount = nTabCount;
				
			for (var i = 0; i < ProStores.Detail.nTabCount; i++) {
				var elTab = _(ProStores.Detail.ID_DIV_TAB + (i + 1));
				if (elTab)
					elTab.onclick = ProStores.Detail.toggleTabs;
			}
		},

	oProductImage:
		function (urlMediumImage, heightMedium, widthMedium, urlLargeImage, strTitle){
			this.getMediumImage = urlMediumImage;
			this.getMediumHeight = heightMedium;
			this.getMediumWidth = widthMedium;
			this.getLargeImage = urlLargeImage;
			this.getTitle = strTitle;
		},

	swapImage:
		function(e) {
			var elEvent = e || window.event;
			var elTarget = null;
			if (elEvent) {
				elTarget = elEvent.target;
				if (elTarget == null)
					elTarget = elEvent.srcElement;

				// Make sure we caught an event for an element we care about.
				if (elTarget) {
					var id = elTarget.id;
					if (id.indexOf(ProStores.Detail.ID_IMG_SMALL) != -1) {
						ProStores.Detail.nActiveImage = id.substring(ProStores.Detail.ID_IMG_SMALL.length);
						
						var elDivSmallImage = _(ProStores.Detail.ID_DIV_SMALL_IMAGE + ProStores.Detail.nActiveImage);
						if (elDivSmallImage)
							elDivSmallImage.style.borderColor = ProStores.Detail.ACTIVE_BORDER_COLOR;
						
						var elImgMedium = _(ProStores.Detail.ID_IMG_MEDIUM);
						if (elImgMedium) {
							var url = ProStores.Detail.aProductImages[ProStores.Detail.nActiveImage - 1].getMediumImage;
							if (url) {
								elImgMedium.src = url;
								
								var strTitle = ProStores.Detail.aProductImages[ProStores.Detail.nActiveImage - 1].getTitle;
								if (strTitle)
									elImgMedium.title = strTitle;
							}
						}
					}
				}
			}
		},
	
	toggleTabs:
		function(e) {
			var elEvent = e || window.event;
			var elTarget = null;
			if (elEvent) {
				elTarget = elEvent.target;
				if (elTarget == null)
					elTarget = elEvent.srcElement;

				// Ignore event if shopper clicks on active tab.
				if (elTarget && elTarget.className != "tab_on") {
					var id = elTarget.id;
					if (id.indexOf(ProStores.Detail.ID_DIV_TAB) != -1) {
						var nIdx = id.substring(ProStores.Detail.ID_DIV_TAB.length);
						
						for (var i = 0; i < ProStores.Detail.nTabCount; i++) {
							var j = i + 1;
							var strClassName = "tab_off";
							var elDesc = _(ProStores.Detail.ID_DIV_DESC + j);
							if (elDesc) {
								if (j == nIdx)
									elDesc.style.display = "inline";
								else
									elDesc.style.display = "none";
							}
							var elTab = _(ProStores.Detail.ID_DIV_TAB + j);
							if (elTab) {
								if (j == nIdx)
									elTab.className = "tab_on";
								else
									elTab.className = "tab_off";
							}
						}
					}
				}
			}
		},
		
	updateStyle:
		function(e) {
			var elEvent = e || window.event;
			var elTarget = null;
			if (elEvent) {
				elTarget = elEvent.target;
				if (elTarget == null)
					elTarget = elEvent.srcElement;

				// Make sure we caught an event for an element we care about.
				if (elTarget) {
					var id = elTarget.id;
					if (id.indexOf(ProStores.Detail.ID_IMG_SMALL) != -1) {
						var elDivSmallImage = _(ProStores.Detail.ID_DIV_SMALL_IMAGE + id.substring(ProStores.Detail.ID_IMG_SMALL.length));
						if (elDivSmallImage)
							elDivSmallImage.style.borderColor = ProStores.Detail.INACTIVE_BORDER_COLOR;
					}
				}
			}
		},
		
	zoomImage:
		function() {
		 	if (ProStores.Detail.aProductImages.length > 0) {
				var urlZoom = ProStores.Detail.aProductImages[ProStores.Detail.nActiveImage - 1].getLargeImage;
	
				if (!urlZoom)
					var urlZoom = ProStores.Detail.aProductImages[ProStores.Detail.nActiveImage - 1].getMediumImage;
					
				if (urlZoom) {
					zoomWindow = window.open(urlZoom, 'zoomLargeImage','width=600,height=650,resizable=yes,menubar=yes,location=no,status=no,scrollbars=yes');
					zoomWindow.focus();
				}
			}
		}
};

ProStores.Detail.Images = function(urlMediumImage, heightMedium, widthMedium, urlLargeImage) {
	this.m_urlMediumImage = urlMediumImage;
	this.m_heightMedium = heightMedium;
	this.m_widthMedium = widthMedium;
	this.m_urlLargeImage = urlLargeImage;
};

ProStores.Detail.Images.prototype = {
	m_urlMediumImage : null,
	m_heightMedium : 0,
	m_widthMedium : 0,
	m_urlLargeImage : null,

	getMediumHeight:
		function() {
			return this.m_heightMedium;
		},

	getMediumImageUrl:
		function() {
			return this.m_urlMediumImage;
		},

	getMediumWidth:
		function() {
			return this.m_widthMedium;
		},

	getLargeImageUrl:
		function() {
			return this.m_urlLargeImage;
		}
};

onload = ProStores.Detail.init;