	var debug = false;
	if(debug) zoomLoc = ''; else zoomLoc = '/?zoom&';
	var psbk = 0;
	var curset = 1;
	var curthumb = 3;
	var curbook=0;
	var curItm=0;
	var srcdir = "psalbum/";
	var books = ["27"];
	var imgwidth = [356];
	var pages = ["printservicesview"];
	var arrows = ["prev","next"];
	var numlist ="0123456789";
	var itmOpts = [[dOpt1,dOpt1a,dOpt1b],[dOpt2,dOpt2a,dOpt2b],[dOpt3,dOpt3a,dOpt3b],[dOpt4,dOpt4a,dOpt4b],[dOpt5,dOpt5a,dOpt5b],[dOpt6,dOpt6a,dOpt6b]];
    var itmSizes1 = [[106,98],[106,98],[106,98],[106,98],[106,98],[106,98]];
    var itmSizes2 = [[106,98],[106,98],[106,98],[106,98],[106,98],[106,98]];
    var maxPickLen = 30;
    			   
    function trimDesign(des,slash) {
    	tpos = des.indexOf('/',0);
    	if (slash && tpos>=0) ndes=des.substr(0,tpos)+des.substr(tpos+1,des.length-tpos-1);
    	else ndes=des;
    	pos = ndes.indexOf('$',0);
    	if (pos>=0)
    		return ndes.substr(0,pos);
    	else
    		return ndes;
    }
    	        
    function orderThisCard() {
		addProd = document.pickerForm.prodselect.options[document.pickerForm.prodselect.selectedIndex].value;
		if (curset !=0 && addProd != "" && eval(addProd) < designs[curbook][curset].length && designs[curbook][curset][eval(addProd)] != "")
			window.location.href="http://services.ccagroup.co.uk/htbin/oforms?"+trimDesign(designs[curbook][curset][eval(addProd)],true);
		else
			window.location.href="http://services.ccagroup.co.uk/htbin/oforms";
	}
    	  
    	  
    function checkArrows(prevthumb) {
    	if (curthumb<=3) {
			curthumb=3;
			if (prevthumb>3) {
				MM_swapImage(arrows[0],'','media/blank.gif',1);
				document.getElementById('prevtext').innerHTML = '';
			}
		} else if (curthumb>=designs[curbook].length-3) {
			curthumb=designs[curbook].length-3;
			if (prevthumb < designs[curbook].length-3) {
				MM_swapImage(arrows[1],'','media/blank.gif',1);
				document.getElementById('nexttext').innerHTML = '';	
			}
		}
		if (curthumb>3 && prevthumb <=3) {
			MM_swapImage(arrows[0],'','buttons/prevon.gif',1);
			document.getElementById('prevtext').innerHTML = 'Previous';
		} else if (curthumb < designs[curbook].length-3 && prevthumb >=designs[curbook].length-3 && designs[curbook].length>6) {
			MM_swapImage(arrows[1],'','buttons/nexton.gif',1);
			document.getElementById('nexttext').innerHTML = 'Next';			
		}
 	    return;    
    }
    
    function selector(direction) {
    	prevthumb = curthumb;
		if (direction==0) curthumb--; else curthumb++;
		checkArrows(prevthumb);
    }
    
    function next() {
    	curset++;
    	if (curset>=designs[curbook].length) curset=1;
    	setCard();
    }
    
    function prev() {
    	curset--;
    	if (curset<=0) curset=designs[curbook].length-1;
    	setCard();
    }
     
    function doMove(which,what) {
    	if ((curthumb > 3 && which == 0) || (curthumb < designs[curbook].length-3 && which == 1))
    	switch (what) {
    		case 0: 
    			MM_swapImage(arrows[which],'','buttons/'+arrows[which]+'.gif',1) 		
    			break
    		case 1:
 				MM_swapImage(arrows[which],'','buttons/'+arrows[which]+'on.gif',1)
 				break;
 		}	
    }
     
   function cardSub(desc) {
    	var newdesc = "";
    	var start=0;
    	while (start < desc.length && (pos = desc.indexOf('$',start)) >= 0) {
    		newdesc+=desc.substr(start,pos-start);
    		pos++; //skip $
    		idx="";
    		while (pos<desc.length && numlist.indexOf(desc.charAt(pos)) >=0) idx+=desc.charAt(pos++); //get index
    		newdesc+=descr[parseInt(idx)];
    		start=pos;
    	}
    	newdesc+=desc.substr(start,desc.length-start);
   		return newdesc;
    }
    
    function makeCardDesc(itm) {
    	var newdesc='';
    	for (i=0;i<itmOpts[itm].length;i++) 
	    	if (designs[curbook][curset][itmOpts[itm][i]+1]>=0) {
	    		soldOut = false;
	    		des = designs[curbook][curset][itmOpts[itm][i]];
				pos = des.indexOf('$',0);
    			if (pos>=0) {
					idx="";
					npos=pos+1 //skip $
    				while (npos<des.length && numlist.indexOf(des.charAt(npos)) >=0) idx+=des.charAt(npos++);
    				soldOut = (parseInt(idx)>=soldOutItm);
    				if (soldOut) 
    					thisdesc = itmDesc[parseInt(idx)-soldOutItm][0]+'<br><font color="#CC0000">SOLD OUT</font>'+(itmDesc[parseInt(idx)-soldOutItm][1].length>0?'<br>'+itmDesc[parseInt(idx)-soldOutItm][1]:'');
    				else {
    					thisdesc = itmDesc[parseInt(idx)][0]+(itmDesc[parseInt(idx)][1].length>0?'<br>'+itmDesc[parseInt(idx)][1]:'');
					des = des.substr(0,pos);
					}
				} else {
					thisdesc = itmDesc[(itmOpts[itm][i]-dOpt1)/3][0]+(itmDesc[(itmOpts[itm][i]-dOpt1)/3][1].length>0?'<br>'+itmDesc[(itmOpts[itm][i]-dOpt1)/3][1]:'');
				}
				if (designs[curbook][curset][itmOpts[itm][i]+2]>=500) pg = prices[designs[curbook][curset][itmOpts[itm][i]+2]-500]; else pg=[0,"",""];
				if (soldOut)
					newdesc+=(newdesc!=''?'<br>':'')+'<span class="productheader">'+thisdesc+'</span>';
				else {
					newdesc+=(newdesc!=''?'<br>':'')+'<span class="productheader">'+thisdesc+'</span><br><span class="productbody">'+((i==0 || designs[curbook][curset][itmOpts[itm][i]+1]!=designs[curbook][curset][itmOpts[itm][0]+1])?sizes[designs[curbook][curset][itmOpts[itm][i]+1]]+'<br>':'')+'<em>'+des+'</em>';
					if (debug || window.location.href.indexOf('services.ccagroup') != -1) newdesc+=' <span class="buyPS"><a href="http://services.ccagroup.co.uk/htbin/oforms?'+des+'">&nbsp;Buy&nbsp;Now&nbsp;</a></span>'+
																						(pg[0]?'<br>Price Group '+pg[1]:'<br>')+pg[2]+'[<a href="pspricing.html#'+pg[1]+'">more</a>]</span>';
				}
			}
   
    	return newdesc;
    }
    
    
    function whichCard() {
    	design = trimDesign(designs[curbook][curset][dOpt1],true);
    	if (wedsolist.indexOf(design) >=0) soloc="so/"; else soloc="/";
		return srcdir+books[curbook]+"images"+soloc+design.toLowerCase() +".jpg";
  	}  	
  	
  	function whichSub(sub) {
  		actualItem = designs[curbook][curset][sub];
  		if (actualItem == 0) return "media/blank.gif";
  		else {
  			design = trimDesign(designs[curbook][curset][itmOpts[actualItem-1][0]],true);
  			if (design.charAt(design.length-1)=="X") design=design.substr(0,design.length-1); // Place cards with /X are always named without the suffix
  			if (design == "") return "media/blank.gif";
  			else {
    			if (wedsolist.indexOf(design) >=0) soloc="so/"; else soloc="/";
				return srcdir+books[curbook]+"thumbs"+soloc+design.toLowerCase() +".jpg";
			}
		}
  	}  	 
  	 
    function whichZoom(sub) {
  		actualItem = designs[curbook][curset][sub];
  		if (actualItem == 0) return "";
  		else {
  			design = trimDesign(designs[curbook][curset][itmOpts[actualItem-1][0]],true);
  			if (design.charAt(design.length-1)=="X") design=design.substr(0,design.length-1); // Place cards with /X are always named without the suffix
  			if (design == "") return "";
  			else {
				return "zoom/"+books[curbook]+"zoom/"+design.toLowerCase() +".jpg";
			}
		}
  	}  	 

    function whichThumb(which) {
    	design = trimDesign(designs[curbook][which][dOpt1],true);
    	if (wedsolist.indexOf(design) >=0) soloc="so/"; else soloc="/";
		return srcdir+books[curbook]+"thumbs"+soloc+design.toLowerCase() +".jpg";
  	}  	 
    
    function setThumb() {
    	pt = 1;
 		for (c=1;c<designs[curbook].length;c++) 
			if (c==curset) {
				document.getElementById('picker'+String(c)).className='linkboxvisPS';
				//document.images['pickthumb'+String(pt)].src=whichThumb(c);
				//document.images['pickthumb'+String(pt)].alt=designs[curbook][c][dTitle];
				//document.getElementById('picklink'+String(pt)).href='javascript:curset='+String(c)+';setCard()';
				//document.getElementById('pickname'+String(pt)).innerHTML=designs[curbook][c][dTitle];
				//document.getElementById('pickname'+String(pt)).className=(c==curset?'menuselected':'');
				//document.getElementById('picknamelink'+String(pt++)).href='javascript:curset='+String(c)+';setCard()';
			}	else
				document.getElementById('picker'+String(c)).className='';
    	return;
   }

   function SetLocation(book,page) {
   		if (book==curbook) { curset=page; setCard() }
   		else document.location.href='?'+pages[book]+'#'+String(page);
   }

   function setCard() {
 		document.images['hero'].src= whichCard();
 		document.images['hero'].alt=designs[curbook][curset][dTitle];
		document.getElementById('dtitle1').innerHTML=designs[curbook][curset][dTitle];
		//document.getElementById('dtitle2').innerHTML=designs[curbook][curset][dTitle];
		document.getElementById('dbody1').innerHTML=cardSub(designs[curbook][curset][dDesc1]);
		document.getElementById('dbody2').innerHTML='<em>'+cardSub(designs[curbook][curset][dDesc2])+'</em>';
		document.getElementById('crumb').innerHTML='<a href="'+pages[curbook]+'.html#'+designs[curbook][curset][dOpt1]+'">'+designs[curbook][curset][dTitle].toLowerCase()+'</a>';
		//document.getElementById('comp1').innerHTML=((curbook == snbk && curset==31)?'':'<p class="indentDefault"><a href="javascript:SetLocation(snbk,37)">Personalised Confetti</a></p>');
		//document.getElementById('comp2').innerHTML=((curbook == pdbk && curset==34)?'':'<p class="indentDefault"><a href="javascript:SetLocation(pdbk,34)">Cake Box</a></p>');
		//document.getElementById('comp3').innerHTML=((curbook == snbk && curset==30)?'':'<p class="indentDefault"><a href="javascript:SetLocation(snbk,36)">Keepsake Tin</a></p>');
		//prevthumb=curthumb;
		//if (curset < 3) curthumb = 3;
		//else if (curset > designs[curbook].length-3) curthumb = designs[curbook].length-3;
		//else curthumb=curset;
		//checkArrows(prevthumb);
		//alert(curthumb);
		for (sub=0;sub<=5;sub++) {
			//zimg = whichZoom(sub);
			document.images['sub'+String(sub)].src=whichSub(sub);
			document.getElementById('subdesc'+String(sub)).innerHTML=makeCardDesc(sub);
			//document.getElementById('zoomlink'+String(sub)).href="javascript:ZoomWin("+String(sub)+",'"+zimg+"')";
		}
		setThumb();
		document.pickerForm.setSelector.selectedIndex=curset-1;
    	return;
    }
    function thumbVis(c) {
		if ((curthumb <=3 && c<=5) || (curthumb >=designs[curbook].length-2 && c >=designs[curbook].length-5 ))
			return true;
		else if
			((c<=curthumb && curthumb-c<=2) || (c>curthumb && c-curthumb<=2)) 
			return true;
		else 
			return false;
    }
    
    
    function GetSet() {
        if (curset == 1) {
	    	var pos = document.URL.indexOf('#');
	    	if ( pos >= 0) {
	    		page=document.URL.substr(pos+1,document.URL.length-pos-1);
				if (!isNaN(Number(page))) {
					curset = Number(page);
		  			if (curset < 1) curset = 1; // set bottom
					if (curset >= designs[curbook].length) curset = designs[curbook].length-1; // set top
				} else {
					var fnd = false;
					for (st = 1; !fnd && st<designs[curbook].length;st++)
						for (im = dOpt1;!fnd && im<=dOrdOpt1;im+=3)
							if (page==trimDesign(designs[curbook][st][im],true)) fnd=true;
					if (fnd) curset = st-1; else curset=1;
				}
	  		}
	  	}
		if (curset < 3) curthumb = 3;
		else if (curset > designs[curbook].length-3) curthumb = designs[curbook].length-3;
		else curthumb=curset;
	}
    
    function StartItem(what,sub,itmSizes) { 	
  		switch (what) {
			case 1:
				document.write('<p class="producttitlePS" id="dtitle1">'+designs[curbook][curset][dTitle]+'</p>');
				break;
	  		case 2:
	  			document.write('<p class="indentPS"><img id="hero" src="'+whichCard()+'" alt="'+designs[curbook][curset][dTitle]+'" width="'+imgwidth[curbook]+'" height="356"></p>');
				break;
			case 3:
				document.write('<p class="productdesc" id="dbody2"><em>'+cardSub(designs[curbook][curset][dDesc2])+'</em></P>');
				break;
			case 4:
				document.write('<span class="productheader" id="dtitle2">'+designs[curbook][curset][dTitle]+'</span>');
				break;
			case 5:
				document.write('<p class="productdesc" id="dbody1">'+cardSub(designs[curbook][curset][dDesc1])+'</p>');
				break
			case 6:
				document.write('<table width="100%" border="0" cellspacing="1" cellpadding="2" class="picker"><tr class="linkbox"><td width="2%" align="center"'+(designs[curbook].length>maxPickLen?' rowspan="2"':'')+'><a href="javascript:prev()">&lt;&lt;</a></td>');		
				for (c=1;c<designs[curbook].length;c++) {
					if  (designs[curbook].length>maxPickLen && c==Math.floor((designs[curbook].length+2)/2)) document.write('<td width="2%" align="center" rowspan="2"><a href="javascript:next()">&gt;&gt;</a></td></tr><tr class="linkbox">');
					document.write('<td width="2%" id="picker'+String(c)+'" '+(c==curset?'class="linkboxvisPS"':'')+'><div align="center"><a href="javascript:thisCard('+String(c)+')">'+String(c)+'</a></div></td>');
				}
				if  (designs[curbook].length>maxPickLen && (designs[curbook].length-1) % 2 != 0) document.write('<td width="2%">&nbsp;</td>');
				document.write((designs[curbook].length<=maxPickLen?'<td width="2%" align="center"><a href="javascript:next()">&gt;&gt;</a></td>':'')+'</tr></table>');
				break;
			case 7:
				pt = 1;
				for (c=1;c<designs[curbook].length;c++) 
					if (thumbVis(c)) 
						document.write('<td valign="bottom"><div align="center"><a id="picklink'+String(pt)+'" href="javascript:curset='+String(c)+';setCard()"><img id="pickthumb'+String(pt++)+'" src="'+whichThumb(c)+'"  alt="'+designs[curbook][c][dTitle]+'" width="106" height="98" border="0"></a></div></td>');
				break;
			case 8:
				pt = 1;
				for (c=1;c<designs[curbook].length;c++)
					if (thumbVis(c))
						document.write('<td valign="bottom"><a id="picknamelink'+String(pt)+'" href="javascript:curset='+String(c)+';setCard()"><div align="center" id="pickname'+String(pt++)+'" '+(c==curset?'class="menuselected"':'')+'>'+designs[curbook][c][dTitle]+'</div></a></td>');
				break;
			case 9:
				//zimg = whichZoom(sub);
				//document.write('<a href="javascript:ZoomWin('+String(sub)+',\''+zimg+'\')" id="zoomlink'+String(sub)+'" ><img border=0 id="sub'+String(sub)+'" src="'+whichSub(sub)+'" width="'+itmSizes[sub][0]+'" height="'+itmSizes[sub][1]+'"></a>');
				document.write('<img border=0 id="sub'+String(sub)+'" src="'+whichSub(sub)+'" width="'+itmSizes[sub][0]+'" height="'+itmSizes[sub][1]+'">');
				break;
			case 10:
				document.write('<span id="subdesc'+String(sub)+'">'+makeCardDesc(sub)+'</span>');
				break;
			case 11:
				document.write('<span class="productdesc" id="comp1">'+((curbook == snbk && curset==31)?'':'<p class="indentDefault"><a href="javascript:SetLocation(snbk,37)">Personalised Confetti</a></P>')+'</span>');
                document.write('<span class="productdesc" id="comp2">'+((curbook == pdbk && curset==34)?'':'<p class="indentDefault"><a href="javascript:SetLocation(pdbk,34)">Cake Box</a></P>')+'</span>');
                document.write('<span class="productdesc" id="comp3">'+((curbook == snbk && curset==30)?'':'<p class="indentDefault"><a href="javascript:SetLocation(snbk,36)">Keepsake Tin</a></P>')+'</span>');
				break;
			case 12:
				document.write('<span id="crumb"><a href="'+pages[curbook]+'.html#'+designs[curbook][curset][dOpt1]+'">'+designs[curbook][curset][dTitle].toLowerCase()+'</a></span>');
				break;

			}
  	    return;
    }

    function desDesc(des,opt,addProduct) {
		pos = des.indexOf('$',0);
		var outDes = des;
		if (pos>=0) {
			idx="";
			npos=pos+1 //skip $
			while (npos<des.length && numlist.indexOf(des.charAt(npos)) >=0) idx+=des.charAt(npos++);
			thisdesc = itmDesc[parseInt(idx)];
			outDes = des.substr(0,pos);
		} else
			thisdesc = itmDesc[(opt-dOpt1)/2];
		if (addProduct) 
			thisdesc+=' <strong>'+outDes+'</strong> ';
		return thisdesc
	}
	
	function thisCard(which) {
		curset = which;
		setCard();
	}
	
	function menuSet(){
    	curset=document.pickerForm.setSelector.selectedIndex+1;
    	setCard();
	}
	
	function makeMenu() {
    	selstring='<select name="setSelector" onChange="menuSet()">';
    	for (c=1;c<designs[curbook].length;c++) {//>
    		setName = designs[curbook][c][dTitle];
    		if (curset == c) selstring+='<option selected>'+setName+'</option>';    
    		else selstring+='<option>'+setName+'</option>';
    	}
    	selstring+='</select>';
    	document.write(selstring);
    	document.pickerForm.setSelector.selectedIndex=curset-1;
    	return;
    }

	
	function ZoomWin(sub,imgLoc) {
	 var pitm = document.getElementById('zoomlink'+String(sub));
	 var x=pitm.offsetLeft,y=pitm.offsetTop,p=pitm.offsetParent,win,w=350+30,h=350+50,href=zoomLoc+imgLoc,tgt='Zoom';
	 while (p && (p!=p.offsetParent)) {x+=p.offsetLeft;y+=p.offsetTop;p=p.offsetParent;};
	 if (window.screenTop||window.screenLeft) {x+=window.screenLeft;y+=window.screenTop;}
	 else if (window.screenX||window.screenY) {x+=window.screenX;y+=window.screenY;
	  if (window.screen.availTop||window.screen.availLeft) {x+=window.screen.availLeft;y+=window.screen.availTop};};
	 if (window.scrollTop||window.scrollLeft) {x-=window.scrollLeft;y-=window.scrollTop;}
	 else if (window.scrollX||window.scrollY) {x-=window.scrollX;y-=window.scrollY;};
	 if (x+w>window.screen.availWidth) x=window.screen.availWidth-w;
	 if (y+h>window.screen.availHeight) y=window.screen.availHeight-h;
	 win=window.open(href,tgt,'resizable=no,scrollbars=yes,width='+w+',height='+h+',top='+y+',left='+x);
	 if (win) {win.location.href=href; if (win.opener==null) win.opener = self;};
 	return;}
