	var fileWin;
	function ViewOtherCurr(curr, amount)
	{
		var fileName;
			
		fileName = 'chkPriceOtherCurr.asp?curr=' + curr + '&value=' + amount;
		if (fileWin) { fileWin.close(); }
		var leftPos = (screen.availWidth-700) / 2;
		var topPos = (screen.availHeight-500) / 2 ;
		fileWin = window.open(fileName,'viewChkCurr','width=700,height=300,scrollbars=yes,status=yes,resizable=yes,titlebar=0,top=' + topPos + ',left=' + leftPos);
		fileWin.focus();
	
	}

	function fnNavigate(url)
	{
		for(i=0;i<document.all.length;i++)
		{
		    if(document.all(i).tagName=="IFRAME")
		    {
				document.all(i).contentWindow.location = url;
		    }
		}
	}

	function fnSearch()
	{
		var objSearch = document.getElementById('searchMain');
		//alert(objSearch.value)
		fnNavigate('webshaper/pcm/user/searchProduct.asp?searchText=' + objSearch.value);
	}






	imagename='';
	function enlarge() {
		var f = document.FormViewProd;
		
		bEnlarge = true;

		if(f.pkSubProduct)
		{
			

			//if imagename is empty and not been assigned to any sub product large image
			if(imagename == '')
			{
				imagename = f.PicLargeURL.value;	

			}
		}
		else {
			if(imagename == '' && f.PicLargeURL.value != '')
			{
				//get from default
				imagename = f.PicLargeURL.value;
			}
			
			
		}
		
		if (imagename == '')
		{
			alert('No large image available.');
			bEnlarge = false;
		}

		if(bEnlarge)
		{

			lrgewin=window.open("about:blank","","height=200,width=200,scrollbars=yes,resizable=yes");
			setTimeout('update()',500);
		}		
				
		
		
	}

	imgLarge = '';
	

	function update() {
		doc=lrgewin.document;
		doc.open('text/html');
		doc.write('<HTML><HEAD><TITLE>Enlarged Image<\/TITLE><\/HEAD><BODY bgcolor="white" onLoad="if  			(self.resizeTo)self.resizeTo((document.images[0].width+30),(document.images[0].height+110))" topmargin="4" leftmargin="0" 			rightmargin="0" bottommargin="0"><table width=""' + document.images[0].width + '" border="0" cellspacing="0" cellpadding="0"><tr><td>');
		doc.write('<IMG SRC="' + imagename + '"><\/td><\/tr><tr><td><form name="viewn"><input type="image" src="../0img/close.gif" align="right" value="Close Window" onClick="self.close()"><\/td><\/tr><\/table>');
		doc.write('<\/form><\/BODY><\/HTML>');
		doc.close();
	}



	//author-yip
	//date: 13 june 05
	//InsertCart - sends item to shoppping cart
	//				1) For each product, check if compulsory product option selected
	//				2) submit to viewCart.asp
	function InsertCartViewProd()
	{


		var objVal = new Validation();

		var f = document.FormViewProd;
		var bQtyValidAll = false;

		for(i=0; i<f.TotalProduct.value; i++)
		{
			//1. Check if qty is valid
			var bQtyValid;
			bQtyValid = false
			
			if (parseInt(f.TotalProduct.value) > 1)
			{
				//check if correct qty keyed in
				var objQtyProduct = eval('f.qtyProduct' + i);
				if(objQtyProduct.value.length == 0)
				{
					bQtyValid = false;
				}
				else if(isNaN(objQtyProduct.value))
				{
					bQtyValid = false;
				}
				else
				{
					bQtyValid = true;
				
				}
				
				
			}
			else if(parseInt(f.TotalProduct.value) == 1)
			{
				bQtyValid = true;
			}
			
			if(bQtyValid)
			{	
				bQtyValidAll = true;					

				var objPKProduct = eval('f.iPKProduct' + i);
				
				totalProductOpt = eval('f.TotalProdOpt_' + objPKProduct.value);
				
				if(totalProductOpt)
				{
					//alert('totalProductOpt=' + totalProductOpt.value)
				
					for(j=0; j< totalProductOpt.value; j++)
					{
						//get pkOptGrps
						objProdOpt = eval('f.idProdOpt_' + objPKProduct.value + '_' + j);
						objProdOptChk = eval('f.idProdOptChk_' + objPKProduct.value + '_' + objProdOpt.value);

						
						objProdOptName = eval('f.idProdOptName_' + objPKProduct.value + '_' + objProdOpt.value);
						objProdOptType = eval('f.idProdOptType_' + objPKProduct.value + '_' + objProdOpt.value);
						objProdOptDisplay = eval('f.idProdOptDisplay_' + objPKProduct.value + '_' + objProdOpt.value);

						//if objProdOptChk.value = 1 then, must check whether product option is selected
						if(objProdOptChk.value == '1')
						{
							if(objProdOptType.value == '0')
							{
								objProdOptAttrs = eval('f.idProdOptAttr_' + objPKProduct.value + '_' + objProdOpt.value);

								if(objProdOptDisplay.value == '1') {
									if(objProdOptAttrs.options.selectedIndex == 0 )
									{
										
										alert('Please select the product option \'' + objProdOptName.value + '\'');
										return;
									}
								}
								else if(objProdOptDisplay.value == '2') {
									bChecked = false;
									for(k=1; k<objProdOptAttrs.length; k++)
									{
										
										if(objProdOptAttrs[k].checked) bChecked = true;
									}

									if(!bChecked) {
										alert('Please select the product option \'' + objProdOptName.value + '\'');
										return;
									}
								}
							}	
							else if(objProdOptType.value == '1' || objProdOptType.value == '2' || objProdOptType.value == '3')
							{
								objProdOptAttrValue = eval('f.prodOptAttrValue_' + objPKProduct.value + '_' + objProdOpt.value);
								
								if(objProdOptAttrValue.value == '')
								{
									alert('Please enter for product option \'' + objProdOptName.value + '\'');
									objProdOptAttrValue.focus();
									return;
								}
								
								if(objProdOptType.value == '1')
								{
									objProdOptAttrMaxChars = eval('f.prodOptAttrMaxChars_' + objPKProduct.value + '_' + objProdOpt.value);
						
									if(objProdOptAttrValue.value.length > parseInt(objProdOptAttrMaxChars.value))
									{
										alert( objProdOptName.value + ': Please enter not more than ' + objProdOptAttrMaxChars.value + ' characters');	
										objProdOptAttrValue.focus();
										return;
									}
								}
								if(objProdOptType.value == '2')
								{
									//check for format dd/mm/yyyy
									

									if(!objVal.validateInput(objProdOptAttrValue.value, objVal.regex_date_ddmmyyyy ))
									{
										alert( objProdOptName.value + ': Please enter date using the format dd\/mm\/yyyy e.g. 01\/12\/2008.');	
										objProdOptAttrValue.focus();
										return;
									}

								}
								if(objProdOptType.value == '3')
								{

									if(!objVal.validateInput(objProdOptAttrValue.value, objVal.regex_numeric_int ))
									{
										
										alert( objProdOptName.value + ': Please enter numbers only.');	
										objProdOptAttrValue.focus();
										return;

									}	

								}
								
								
							}
						}
					}
				}
			}
		}
		
		if (!bQtyValidAll) {
			alert('Please select or enter quantity for the product that you wish to buy.');
			return;
		}

		f.action = 'cartAddItem.asp';
		f.submit();
	}

	function GoTranslate()
	{
		var f = document.FormViewProd;
		
		var url = 'http://translate.google.com/translate?';
		
		var subUrl = 'u=' + encodeURIComponent(location.href) + '&' + 
					'langpair=' + encodeURIComponent(f.langpair.options[f.langpair.selectedIndex].value) + '&' + 
					'hl=' + encodeURIComponent(f.hl.value) + '&' + 
					'ie=' + encodeURIComponent(f.ie.value) + '&' +
					'oe=' + encodeURIComponent(f.oe.value) + '&' +
					'prev=' + encodeURIComponent(f.prev.value);
		
		
		var fullURL = url + subUrl;
		
		
		
		windowName = 'winTranslate';
		
		window.open(fullURL, windowName, 'top=100,left=100,height=400,width=750,location=no,resizable=yes,scrollbars=yes,status=yes');
		
		return false;
	
	}

	function SelectOption(obj, indexOption, imgInput, imgSrc, optionAlpha)
	{
		var objImg = document.getElementById(imgInput);
		
		if(objImg) {
			objImg.src = imgSrc;
	
	
			if(optionAlpha == '1')
			{
				objImg.className = 'imgOptionFocus';
			}
			else if(optionAlpha == '0')
			{
				objImg.className = 'imgOptionBlur';
			}
		}

		toggleOptionGroup(obj, indexOption, 'direct')

	}



	/*** sub sku ***/
	function toggleImageSwap(pkOptAttr, mode)
	{
		var f = document.FormViewProd;
		//find the image from list of sub products with subProdRel containing the index of pkOpt
		
		if( pkOptAttr.length == 0)
		{ 
			return;
		}
		

		pkOptAttr = parseInt(pkOptAttr);

		var bBreak = false;
		for(i=0; i<sp.o.length; i++)
		{
			//alert(sp.o[i].subProdRel);
		
			var arrSubProdrel = sp.o[i].subProdRel.split('-');
			
			for(j=1; j<arrSubProdrel.length; j++)
			{
				//alert(arrSubProdrel[j]);
				
				if(pkOptAttr == parseInt(arrSubProdrel[j]) )
				{
					//get image
					imageNormal = sp.o[i].imageNormal;
					imageLarge = sp.o[i].imageLarge;

					if (imageNormal == '')
					{
						imageNormal = imageNormal_def;
						//imageLarge = imageLarge_def;	
					}

					var objImage = document.getElementById('viewProdNormalImage');
					
					objImage.src = imageNormal;
					imagename = imageLarge;

					if(sp.o[i].imageNormal != '') {
						bBreak = true;
					}
				}
			}
			if (bBreak) break;
		}
	
		
		
		if(mode == 'direct')
		{
			//alert(mode);

			
			var pkProduct = f.iPKProduct0.value;
			var PKOptGrps = optGrp.PKOptGrps[0];
			var objTemp;

			
			var objProdOptDisplay = document.getElementById('idProdOptDisplay_' + pkProduct + '_' + PKOptGrps);

			if (objProdOptDisplay.value == '1')		
			{
				objTemp = document.getElementById('idProdOptAttr_' + pkProduct + '_' + PKOptGrps);

				//set the index 
				for(i=0; i<objTemp.options.length; i++)
				{
					
					if( parseInt(objTemp.options[i].value) == pkOptAttr)
					{
	
						objTemp.options[i].selected = true;
	
					}
		
				}	
			}
			else if (objProdOptDisplay.value == '2') {

				objTemp = eval('f.idProdOptAttr_' + pkProduct + '_' + PKOptGrps);

				for(i=1; i<objTemp.length; i++)
				{
					if( parseInt(objTemp[i].value) == pkOptAttr)
					{
						objTemp[i].checked = true;
						var objProdOptAttrPic = document.getElementById('idProdOptAttrPic_' + pkProduct + '_' + PKOptGrps + '_' + objTemp[i].value);
						
						var objImg = document.getElementById('imgOption_' + pkProduct + '_' + PKOptGrps );

						if(objImg) {
							objImg.src = objProdOptAttrPic.value;
						}
	

					}
				}

			}

			

			toggleOptionGroup(objTemp, 0, 'function');

		}
	}

	function toggleOptionGroup(obj, indexOption, mode)
	{
		
		if( typeof(sp) == 'undefined') return;

		var f = document.FormViewProd;


		
		pkProduct = f.iPKProduct0.value;
		PKOptGrps = eval('f.idProdOpt_' + pkProduct + '_' + indexOption + '.value')

		objProdOptDisplay = eval('f.idProdOptDisplay_' + pkProduct + '_' + PKOptGrps);
		if (objProdOptDisplay.value == 1) {
			var attrPK = obj.options[obj.options.selectedIndex].value;
		}
		else if(objProdOptDisplay.value == 2) {
			var attrPK = getCheckedValue(obj);
		}
		


		//for each option, list down possible list of attributes based on sub products list.

		

		
		PKOptGrps = '';



		for(i=0; i<optGrp.grp.length; i++)
		{

			
			PKOptGrps = optGrp.PKOptGrps[i];
			OptGrpName = optGrp.OptGrpName[i];


			if(indexOption != i)
			{
				
				strPK = '';
				for(j=0; j<sp.o.length; j++)
				{


					var arrSubProdrel = sp.o[j].subProdRel.split('-');
					


					//if matching PKOptGrps AND strPK has not yet been assigned
					
					bMatchPK = false;
					if(attrPK == '')
					{
						bMatchPK = true;
					}
					else
					{
						for(m=1; m<arrSubProdrel.length; m++)
						{
							if (parseInt(arrSubProdrel[m]) == parseInt(attrPK) )
							{
								bMatchPK = true;

							}
		
						}
					}


					bInserted = false;

					var arrPK1 = strPK.split(',');

					for(m=0; m<arrPK1.length; m++)
					{
						if(parseInt(arrPK1[m]) == parseInt(arrSubProdrel[i+1]) ) bInserted = true;
					}

					if( !bInserted && bMatchPK)		
					{
						if(strPK.length == 0)
						{
							strPK = arrSubProdrel[i+1];
						}
						else
						{
							strPK = strPK + ',' + arrSubProdrel[i+1];
						}

					}
					
				
				}


				var objOpt = eval('f.idProdOptAttr_' + pkProduct + '_' + PKOptGrps);
				var objProdOptDisplay = eval('f.idProdOptDisplay_' + pkProduct + '_' + PKOptGrps);
				
				if(objProdOptDisplay.value == '1')
				{
					//remove all items from dropdownlist
								
					var optSelectedValue = objOpt.options[objOpt.options.selectedIndex].value;
					//alert('optSelectedValue = ' + optSelectedValue);
					
					objOpt.options.length = 0;
	
	
					//add items
	
					var arrPK = strPK.split(',');
					objOpt.options[0] = new Option('Select ' + OptGrpName, '' );
	
					for(k=0; k<arrPK.length; k++)
					{
						objOpt.options[k+1] = new Option(getPKDesc(i, arrPK[k]), arrPK[k]  );
	
						if(parseInt(optSelectedValue) == parseInt(arrPK[k]) )
							objOpt.options[k+1].selected = true;
					}
				}
				else if(objProdOptDisplay.value == '2')
				{
					//disble those not in the list
					var arrPK = strPK.split(',');
					
					
					//disable all buttons first
					for(k=1; k < objOpt.length; k++)
					{
						objOpt[k].disabled = true;
					}
	
					//for each radio button, check if have item in arrPK
					for(k=1; k < objOpt.length; k++)
					{
						
						for(m=0; m<arrPK.length; m++)
						{

							if( parseInt(objOpt[k].value) == parseInt(arrPK[m]) )
								objOpt[k].disabled = false;
						}
					}

				}


			}

		}	
		

		displaySelectedProduct();			

		if(mode == 'direct')
		{
			if(indexOption == 0)
				toggleImageSwap(attrPK, 'function');
		}

	}

	function displaySelectedProduct()
	{
		var f = document.FormViewProd;
		var pkProduct = f.iPKProduct0.value;	

			

		//get the selected product from the options combination
		selectedProduct = pkProduct;
		
		bShow = true;
	
		for(i=0; i<optGrp.grp.length; i++)
		{
			PKOptGrps = optGrp.PKOptGrps[i];
			var objOpt = eval('f.idProdOptAttr_' + pkProduct + '_' + PKOptGrps);
			
			var objProdOptDisplay = eval('f.idProdOptDisplay_' + pkProduct + '_' + PKOptGrps);
			if (objProdOptDisplay.value == 1) {
				
				optSelectedValue = objOpt.options[objOpt.options.selectedIndex].value;
			}
			else if(objProdOptDisplay.value == 2) {
				optSelectedValue = getCheckedValue(objOpt);
			}


			
			
			if(optSelectedValue == '')
			{
				bShow = false;
			}
			else
			{
				//alert('optSelectedValue = ' + optSelectedValue );
				selectedProduct = selectedProduct + '-' + optSelectedValue;
			}

		}
		//alert('selectedProduct = ' + selectedProduct);
		
		if(bShow)
		{
			for(j=0; j<sp.o.length; j++)
			{
				if(sp.o[j].subProdRel == selectedProduct)
				{	
					
	
					//stock
					var stockLabel = '';
					var bBuyAllowed = false;
					var objdivSubProducts_stock = document.getElementById('viewProdStock');
					if (sp.o[j].stockBackOrder == 'True' || sp.o[j].stockPreorder == 'True' || sp.o[j].stockIgnore == 'True' )
					{

						stockLabel = 'Stock allowed for purchase.';
						bBuyAllowed = true;
					}
					else	//check stock status
					{	
						if(sp.o[j].stockStatus == 'In Stock' || sp.o[j].stockStatus == 'Needs Reorder')
						{
							stockLabel = sp.o[j].stockQty + ' units in stock.';
							bBuyAllowed = true;

						}
						else if(sp.o[j].stockStatus == 'Suspended' || sp.o[j].stockStatus == 'Out of Stock')
						{
							stockLabel = 'Stock not available.';

						}
					}
					var objSelectQty = document.getElementById('qtyProduct0');
					var objBuyButton = document.getElementById('BtnAddToCart');
					

					//weight
			
					(f.weightOpt.value == '1') ? strWeight = ' kg' : strWeight = ' lb';
					var objviewProdWeight = document.getElementById('viewProdWeight');
					if (objviewProdWeight) {
						objviewProdWeight.innerHTML = sp.o[j].weight;
					}

					//---price
					var priceLabel = '';

					var currSymbol = f.currSymbol.value ;

					
					

					if(sp.o[j].alternativePrice != '')
					{
						bBuyAllowed = false;
						priceLabel = sp.o[j].alternativePrice;
					}
					else if(sp.o[j].sellingPrice != '')
					{
						priceLabel = '<strike>' + sp.o[j].normalPrice + '</strike>' + 
								'&nbsp;' + sp.o[j].sellingPrice;
					}
					else if(sp.o[j].normalPrice != '')
					{
						priceLabel = sp.o[j].normalPrice;

					}
					var objMainPrice = document.getElementById('viewProdPrice');
					objMainPrice.innerHTML = '<span class="currCode" >' + currSymbol + '</span>' +
									'<span class="normalPrice" >' + priceLabel + '</span> ' + 
								'<span class="taxLabel" >' + f.TAX_LABEL.value + '</span>';


					//assign pkSubProduct selected
					f.pkSubProduct.value = 	sp.o[j].pkSubProduct;

					objdivSubProducts_stock.innerHTML = stockLabel ;	
	
					if(!bBuyAllowed)
					{
						
						objSelectQty.style.display ='none';
						objBuyButton.style.display ='none';

					}	
					else
					{
						objSelectQty.style.display ='block';
						objBuyButton.style.display ='block';

						//display only a certain  number of stock in qty drop down list
						var stockQty = parseInt(sp.o[j].stockQty);
						ResetQtyDropDown(objSelectQty, stockQty);

					}
	
					//free shipping
					var objfreeShippingText	= document.getElementById('freeShippingText');

					if(sp.o[j].freeShipping == 'True')
					{
						objfreeShippingText.innerHTML = 'Free Shipping';
					}
					else {
						objfreeShippingText.innerHTML = '';
					}
				
				}
	
			}
		}

	}

	function ResetQtyDropDown(obj, qty)
	{
		obj.options.length = 0;
		
		var i;
		for(i=1; i<=qty; i++)
		{
			obj.options[i-1] = new Option(i, i);
		}
	}

	function getPKDesc(optionIndex, attrIndex)
	{
		var optValue = '';

		for(a=0; a<optGrp.grp[optionIndex].opt.length; a++)
		{
			//alert('opt = ' + optGrp.grp[optionIndex].name[a]);
			

			
			if(parseInt(optGrp.grp[optionIndex].opt[a]) == parseInt(attrIndex) )
			{
				optValue = optGrp.grp[optionIndex].name[a];
			}
			

		}
		//alert('optValue = ' + optValue);

		return optValue;
	}

	// return the value of the radio button that is checked
	// return an empty string if none are checked, or
	// there are no radio buttons
	function getCheckedValue(radioObj) {
		if(!radioObj)
			return "";
		var radioLength = radioObj.length;
		if(radioLength == undefined)
			if(radioObj.checked)
				return radioObj.value;
			else
				return "";
		for(var i = 0; i < radioLength; i++) {
			if(radioObj[i].checked) {
				return radioObj[i].value;
			}
		}
		return "";
	}

