function jewelryViewer() {	// constructor
	var imgDir= "jewelrypix/";
	
	var nImages= 2;		// number of image thumbbnails to display horizontally	
	var nLines= 3;			// number of  image thumbnail lines
	var MAXWIDTH= 550;		// detail image dimensions
	var NORMALWIDTH= 350;
	var idPrefix= "img";
	var divPrefix= "divImg";
	var optionsPrefix= "optionImg";
	var optionsIdPrefix="optImg";
	var detailImgId= "detailImage";
	var detailTxtId= "detailText";
	var optionsTxtId= "optionsText";

	var detailItem= null;	// holds current display item
	var curIndex= 0;		// current index into array
	var pageStartIndex= 0;	// index of top of page
	
	var sourcejs="Leaf.js";	// default if can't parse query	
//	var pageTitle="all";
	
	// Parse query string to input appropriate source arrays
	var query = window.location.search.substring(1);	// retrieve ?queryString after the ?
	var pos = query.indexOf('=');

	// now ALL source item scripts are already loaded; itemsArr must be set to correct array
	// leafItemsArray
	// bambooItemsArr
	// candyItemsArr 
	// zenItemsArr  -- defunct
	// balanceItemsArr -- defunct
	// necklacesArr ...
	var itemsArr= new Array();
	// each must define itemsArr ********************************************
	if (pos > 0) {
		var key = query.substring(0,pos);
		var val = query.substring(pos+1);
		if (val=="0") {
//			pageTitle="all";
			if (heartsItemsArr)
				itemsArr= itemsArr.concat(heartsItemsArr);
			if (leafItemsArr)
				itemsArr= itemsArr.concat(leafItemsArr);
/*			if (balanceItemsArr)
				itemsArr= itemsArr.concat(balanceItemsArr);*/
			if (bambooItemsArr)
				itemsArr= itemsArr.concat(bambooItemsArr);
/*			if (zenItemsArr)
				itemsArr= itemsArr.concat(zenItemsArr);*/
			if (candyItemsArr)
				itemsArr= itemsArr.concat(candyItemsArr);
		} else if (val=="1") {	
			//pageTitle="Hearts Collection";
			if (heartsItemsArr)
				itemsArr= heartsItemsArr.slice(0);
		} else if (val=="2") {	
//			pageTitle="Leaf Collection";
			if (leafItemsArr)
				itemsArr= itemsArr.concat(leafItemsArr);
		} else if (val=="3") {
//			pageTitle="Bamboo Collection";
			if (bambooItemsArr)
				itemsArr= bambooItemsArr.slice(0);
		} else if (val=="4") {	
//			pageTitle="Candy Collection";
			if (candyItemsArr)
				itemsArr= candyItemsArr.slice(0);
		/*} else if (val=="4") {	/* DEFUNCT 
			pageTitle="Zen";
			if (zenItemsArr)
				itemsArr= zenItemsArr.slice(0);*/
		} else if (val=="5") {
//			pageTitle="Necklaces";
			if (necklacesArr)
				itemsArr= necklacesArr.slice(0);
		} else if (val=="6") {
//			pageTitle="Earrings";
			if (earringsArr)
				itemsArr= earringsArr.slice(0);
		} else if (val=="7") {
//			pageTitle="Braclets";
			if (braceletsArr)
				itemsArr= braceletsArr.slice(0);
		} else if (val=="8") {
//			pageTitle="Rings";
			if (ringsArr)
				itemsArr= ringsArr.slice(0);
		}
	} else { // all
//			pageTitle="all";
			if (heartsItemsArr) 
				itemsArr= itemsArr.concat(heartsItemsArr);
			if (leafItemsArr)
				itemsArr= itemsArr.concat(leafItemsArr);
/*			if (balanceItemsArr)
				itemsArr= itemsArr.concat(balanceItemsArr);*/
			if (bambooItemsArr)
				itemsArr= itemsArr.concat(bambooItemsArr);
/*			if (zenItemsArr)
				itemsArr= itemsArr.concat(zenItemsArr);*/
			if (candyItemsArr)
				itemsArr= itemsArr.concat(candyItemsArr);
	}
		
	function displayPageButtons(arr) {
		if (curIndex>nImages*nLines)
			document.getElementById("pageLeftButton").style.visibility= "visible";
		else
			document.getElementById("pageLeftButton").style.visibility= "hidden";
		if (arr && curIndex < arr.length)
			document.getElementById("pageRightButton").style.visibility= "visible";
		else
			document.getElementById("pageRightButton").style.visibility= "hidden";
	}

	this.doPageLeft= function() {
		curIndex= curIndex-(nImages*nLines*2);
		if (curIndex < 0) curIndex= 0;
		displayItems(itemsArr);
		displayDetails(detailItem);
		displayPageButtons(itemsArr);
	}
	
	this.doPageRight= function() {
//		if (itemsArr && curIndex < itemsArr.length) 
//			curIndex++;
		displayItems(itemsArr);
		displayDetails(detailItem);
		displayPageButtons(itemsArr);
	}	
	
	function displayItems(arr) {
		if (arr) {
			detailItem= null;
			var last= curIndex + nImages*nLines;
			pageStartIndex= curIndex;
			for (; curIndex < arr.length && curIndex < last; curIndex++) {
				document.getElementById(divPrefix + (curIndex-pageStartIndex + 1)).style.visibility="visible";			
				var arrItem= arr[curIndex];
				if (arrItem!=null) {			
						document.getElementById(idPrefix + (curIndex-pageStartIndex + 1)).src= imgDir + arrItem[0];
						if (detailItem==null) detailItem= arrItem;	// inital filling of page, 1st displayed image= large image					
				}
			}
		}
		for (var i=curIndex; i < last; i++) { // blank out columns that have no image
			document.getElementById(divPrefix + (i-pageStartIndex+1)).style.visibility="hidden";
		}
		return curIndex; 	// current index
	}
	
	function displayDetails(detailsArr) {
		// item array format:  image, description, itemName, itemNumber, price, type
//alert("displayDetails " + detailsArr.join(""));
//debugger;	
		if (detailsArr && detailsArr.length>1) {
			var obj= document.getElementById(detailImgId);
			if (obj) {
				obj.style.width="";
				var img= new String(detailsArr[0]);		/* #0= image */
				img= img.replace("GIF", "JPG");				
				img= img.replace("gif", "jpg");				
				obj.src= imgDir + img;
				if (detailsArr.length > 3) {
					obj.alt= detailsArr[3];
					obj.title= detailsArr[3];
				}
				if (obj.offsetWidth > MAXWIDTH) obj.style.width= MAXWIDTH;
			}
			document.getElementById(detailTxtId).innerHTML= detailsArr[1];	/* #1= details text == description of item */
			if (detailsArr.length > 4 && detailsArr[4]!="") {				/* #4= price */
				// add price + cart info ...
//debugger;				
				document.getElementById(detailTxtId).innerHTML+= "<br><b>$" + detailsArr[4] + "</b>";
				document.getElementById("addToCart").amount.value= detailsArr[4];
				document.getElementById("addToCart").item_name.value= detailsArr[2];
				document.getElementById("addToCart").item_number.value= detailsArr[3];
				document.getElementById("addToCart").style.visibility= 'visible';
			
			}
			else {
				document.getElementById("addToCart").amount.value= "";
				document.getElementById("addToCart").item_name.value= "";
				document.getElementById("addToCart").item_number.value= "";
				document.getElementById("addToCart").style.visibility= 'hidden';
			}
			// $5= type 
			// options -- #6
/*			var nopts= 0;
			if (detailsArr.length > 6 && detailsArr[6]!="" && detailsArr[6] instanceof Array) {
				document.getElementById("Options").style.visibility="visible";		
				var optionsArr= detailsArr[6].slice(0);
				if (optionsArr && optionsArr.length > 0) {
					var optionsText= optionsArr[optionsArr.length-1];
					document.getElementById(optionsTxtId).innerHTML= optionsArr[optionsArr.length-1];
					for (var z= 0; z < optionsArr.length-1; z+=2) {
						document.getElementById(optionsPrefix + (nopts + 1)).style.visibility="visible";			
						document.getElementById(optionsIdPrefix + (nopts + 1)).src= imgDir + optionsArr[z];
						document.getElementById(optionsIdPrefix + (nopts + 1)).details= optionsArr[z+1];
						nopts++;
					}
				}
			} else  {
				document.getElementById(optionsTxtId).innerHTML= "";
				document.getElementById("Options").style.visibility="hidden";		
			}
			// hide unused options
			while (nopts < 4) {
				document.getElementById(optionsPrefix + (nopts+1)).style.visibility="hidden";
				nopts++;
			}*/
		}
		
		detailItem= detailsArr;
	}
	
    this.getDetails= function(targetObj) {		
		if (targetObj) {
			var s= targetObj.id;
			if (s) {
				var i= parseInt(s.substring(idPrefix.length));
				i= i+pageStartIndex-1;
				if(i < 0) i= 0;	// shouldn't be!!
				displayDetails(itemsArr[i]);
			}
		}
	}	
    this.getOptions= function(targetObj) {		
		if (targetObj) {
			var obj= document.getElementById(detailImgId);
			if (obj) {
				obj.style.width="";
				obj.src= targetObj.src;
				document.getElementById(detailTxtId).innerHTML= targetObj.details;
			}
		}
	}	

	// Initial Display
	this.doPageLoad= function() {
//		var t= document.getElementById("pageTitle");
	
//		if (t!=null)
//			t.innerHTML=pageTitle;

		if (!(window.itemsArr===undefined)) {
			curIndex= 0;		
			displayItems(itemsArr);			
			displayDetails(detailItem);
		}
		displayPageButtons(itemsArr);
//		document.getElementById("pageLeftButton").style.visibility= "hidden";
	}			
	/*
	if (window.event) {
     key = window.event.keyCode;
   } else if (event) {
     key = event.keyCode;
   }
	*/
}
