var cpi_rand, cpi_cpcache;
var cpi = {};

cpi.idealthumbsize = 150;
cpi.colspacing = 10;
cpi.captionheight = 50;
cpi.singlecaptionheight = 35;
cpi.rand = Math.random();
cpi.cpcache = 'http://content' + Math.ceil(cpi.rand * 9) + '.cpcache.com';
//cpi.webstore = 'http://0.0.0.0:3000';
cpi.webstore = 'http://widgets.cafepress.com';
cpi.affiliate = '';

cpi.redirect = function(link){
  var url = link.split('?');
  var poke = 'http://widgets.cafepress.com/poke/javascript?CMP=swidget_logo&utm_campaign=swidget&utm_medium=seo&utm_source=image_click_logo' + url[1];
  cpiJQ('body').append('<iframe style="width: 0px; height: 0px; overflow: hidden; display: none;" src="javascript:false;" scrollbar="no" class="cafepress_loader" name="cafepress_loader" id="cafepress_loader" frameborder="0" scrolling="no"></iframe>');
  cpiJQ('iframe#cafepress_loader').load(function(){
    try {
      window.top.location = link;
    } catch (e) {
      window.location = link;
    }
    
  });
  cpiJQ('iframe#cafepress_loader').attr('src', poke);
};

cpi.queue = function() {

	if (typeof(window.cpi_queued) == 'undefined') {
		window.cpi_queued = 1;

		cpi.applets = {};
		cpi.appletqueue = [];

		cpiJQ('.cpi').each(function() {

			cpi.me = {};

			cpi.me.id = '#' + cpiJQ(this).attr('id');
			cpi.me.seeallurl = 'http://www.cafepress.com/';
			cpi.me.source = cpiJQ(this).attr('source');
			cpi.applets[cpi.me.id] = cpi.me;
			cpi.appletqueue.push(cpi.me.id);
			cpi.me.affiliate = cpiJQ(this).attr('affiliate') || '';
			cpi.me.tracking = cpiJQ(this).attr('tracking') || '';
			cpi.me.color = ' cpi-' + cpiJQ(this).attr('color');

			cpiJQ(this).css('display','none');
			cpiJQ(cpi.me.id + ' a').css({'position':'absolute','left':'0'});
			cpiJQ(cpi.me.id + ' a').css('font-size','10px');
			cpiJQ(this).append('<div class="cpi-barbg' + cpi.me.color + '"></div>');
			var barbg = cpiJQ(this).find('.cpi-barbg');
			
			barbg.append('<div class="cpi-barleft" title="Find custom gifts at CafePress"></div>');
			barbg.append('<div class="cpi-seeall" title="See all products" appletid="' + cpi.me.id + '"></div>');
			barbg.append('<div class="cpi-settings" appletid="' + cpi.me.id + '"></div>');
			barbg.append('<div class="cpi-bar"></div>');
			
			cpiJQ(this).append('<div class="cpi-window"></div>');
			cpiJQ(cpi.me.id + ' .cpi-window').append('<div class="cpi-canvas"></div>');
			cpiJQ(cpi.me.id + ' .cpi-window').append('<div appletid="' + cpi.me.id + '" class="cpi-pageless"></div>');
			cpiJQ(cpi.me.id + ' .cpi-window').append('<div appletid="' + cpi.me.id + '" class="cpi-pagemore"></div>');
			cpiJQ(this).append('<div class="cpi-settings-overlay"><div class="cpi-settings-overlay-title">Share This Widget</div><div appletid="' + cpi.me.id + '" class="cpi-settings-overlay-close">x</div>To use this widget on your own site, just copy and paste this HTML:<br/><textarea appletid="' + cpi.me.id + '" class="cpi-settings-html" readonly="true" style="width:100%;height:50px;position:relative;"/></div>');
			cpiJQ(cpi.me.id + ' .cpi-settings-html').val('<div color="' + cpiJQ(this).attr('color') + '" affiliate="' + cpi.me.affiliate + '" source="' + cpiJQ(this).attr('source') + '" class="' + cpiJQ(this).attr('class') + '" id="' + cpiJQ(this).attr('id') + '" height="' + cpiJQ(this).attr('height') + '" width="' + cpiJQ(this).attr('width') + '">Make&nbsp;<a href="http://www.cafepress.com/make/">Custom Gifts</a>&nbsp;at CafePress</div><script type="text/javascript" src="' + cpi.cpcache + '/marketplace/widgets/javascripts/widget.js"></script>');


			cpi.me.height = cpiJQ(this).attr('height');
			if (cpi.me.height < 200) {
				cpi.me.height = 200;
			} else if (cpi.me.height > 2000) {
				cpi.me.height = 2000;
			}
			cpi.me.width = cpiJQ(this).attr('width');
			if (cpi.me.width < 200) {
				cpi.me.width = 200;
			} else if (cpi.me.width > 2000) {
				cpi.me.width = 2000;
			}

			if (cpiJQ.browser.msie) {
				cpiJQ(cpi.me.id + ' .cpi-bar').css('width',(cpi.me.width - 144) + 'px');
				cpiJQ(cpi.me.id + ' .cpi-canvas').css('height',(cpi.me.height - 42) + 'px');
				cpiJQ(cpi.me.id + ' .cpi-window').css('height',(cpi.me.height - 42) + 'px');
			}

			cpiJQ(this).css('height',cpi.me.height + 'px');
			cpiJQ(this).css('width',cpi.me.width + 'px');
			cpiJQ(this).css('display','block');

			if (cpi.me.height > 600) {
				cpi.me.canvasheight = cpi.me.height - 70;
			} else {
				cpi.me.canvasheight = cpi.me.height - 40;
			}
			cpi.me.canvaswidth = cpi.me.width - 60;
			cpi.me.colspacing = cpi.colspacing;

			var cpi_rowcount = cpi.me.canvasheight / (cpi.idealthumbsize + cpi.captionheight);
			var cpi_colcount = cpi.me.canvaswidth / (cpi.idealthumbsize + cpi.me.colspacing);
			cpi.me.shortside = (cpi_rowcount < cpi_colcount) ? "height" : "width";
			cpi.me.shortsize = (cpi_rowcount < cpi_colcount) ? Math.round(cpi_rowcount) : Math.round(cpi_colcount);

			if (cpi.me.shortsize <= 0) {
				cpi.me.shortsize = 1;
			}

			if (cpi.me.shortside == "height") {
				cpi.me.thumbsize = Math.floor(cpi.me.canvasheight / cpi.me.shortsize) - cpi.captionheight;
				cpi.me.rowcount = cpi.me.shortsize;
				cpi.me.colcount = Math.floor(cpi.me.canvaswidth / (cpi.me.thumbsize + cpi.me.colspacing));
				if (cpi.me.colcount === 0) { cpi.me.colcount++; }

				//if the perspective calls for an additional row or column, add it
				if (cpi.me.canvaswidth % (cpi.me.thumbsize + cpi.colspacing) > cpi.me.thumbsize * 0.8) {
					cpi.me.colcount++;
					cpi.me.thumbsize = Math.floor(cpi.me.canvaswidth / cpi.me.colcount) - cpi.colspacing;
				}

			} else {
				cpi.me.thumbsize = Math.floor(cpi.me.canvaswidth / cpi.me.shortsize) - cpi.me.colspacing;
				cpi.me.colcount = cpi.me.shortsize;
				cpi.me.rowcount = Math.floor(cpi.me.canvasheight / (cpi.me.thumbsize + cpi.captionheight));
				if (cpi.me.rowcount === 0) { cpi.me.rowcount++; }

				//if the perspective calls for an additional row or column, add it
				if ((cpi.me.canvasheight % (cpi.me.thumbsize + cpi.captionheight)) > cpi.me.thumbsize * 0.8) {
					cpi.me.rowcount++;
					cpi.me.thumbsize = Math.floor(cpi.me.canvasheight / cpi.me.rowcount) - cpi.captionheight;
				}
			}

			cpi.me.colspacing = (cpi.me.canvaswidth / cpi.me.colcount) - cpi.me.thumbsize;
			cpi.me.cellheight = cpi.me.thumbsize + cpi.captionheight;
			cpi.me.cellwidth = cpi.me.thumbsize + cpi.me.colspacing;
			cpi.me.leftpad = 30;
			cpi.me.toppad = Math.floor((cpi.me.canvasheight - (cpi.me.rowcount * cpi.me.cellheight)) / 2);

			cpi.me.issquare = (cpi.me.width == cpi.me.height) ? true : false;
			cpi.me.issingle = ((cpi.me.colcount == 1) && (cpi.me.rowcount == 1)) ? true : false;
			if (cpi.me.issquare && cpi.me.issingle) {
				cpi.me.thumbsize = cpi.me.width - 36;
				cpi.me.cellwidth = cpi.me.thumbsize;
				cpi.me.cellheight = cpi.me.thumbsize;
			}

			cpiJQ(cpi.me.id + ' .cpi-pagemore').css('height',cpi.me.canvasheight);
			cpiJQ(cpi.me.id + ' .cpi-pageless').css('height',cpi.me.canvasheight);
			cpiJQ(cpi.me.id + ' .cpi-pagemore').css('width',cpi.me.leftpad);
			cpiJQ(cpi.me.id + ' .cpi-pageless').css('width',cpi.me.leftpad);

			cpi.me.pageno = 0;
			cpi.me.counter = 0;
			cpi.me.currentpage = 1;
			cpi.me.lastproduct = 0;
			cpi.me.pagesloaded = 0;
			cpi.me.lastpage = 100;

			if (cpiJQ(cpi.me.id).attr('animate') == 'false') {
				cpi.me.disableanimation = true;
			}

		});

		cpi.addpages();

		cpiJQ('.cpi-pagemore').bind('click',function(index) {
			if(cpi.me.currentpage < cpi.me.lastpage){
				cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
				cpi.me.currentpage++;
				if (cpiJQ(cpi.me.id + ' .cpi-pagemore').css('opacity') > 0.5) {
					if (cpi.me.pagesloaded < cpi.me.currentpage) {
						cpi.appletqueue.push(cpi.me.id);
						cpi.addpages();
					}
					if (cpi.me.disableanimation) { jQuery.fx.off = true; }
					cpiJQ(cpi.me.id + ' .cpi-canvas').stop(true).animate({left: ((cpi.me.currentpage - 1) * cpi.me.width * -1) },300 + (100 * cpi.me.colcount),function() {
						cpi.checkvals(cpi.me);
					});
					if (cpi.me.disableanimation) { jQuery.fx.off = false; }
					cpi.setbuttons(cpi.me);
					if (cpiJQ(cpi.me.id).attr('jumptotop') == "true") { window.scrollTo(0, 0); }
				}
			}
		});

		cpiJQ('.cpi-pageless').bind('click',function(index) {
			if(cpi.me.currentpage > 1){
				cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
				cpi.me.currentpage--;
				if (cpiJQ(cpi.me.id + ' .cpi-pageless').css('opacity') > 0.5) {
					if (cpi.me.currentpage < 1) {
						cpi.me.currentpage = 1;
					} else {
						if (cpi.me.disableanimation) { jQuery.fx.off = true; }
						cpiJQ(cpi.me.id + ' .cpi-canvas').stop(true).animate({left: ((cpi.me.currentpage - 1) * cpi.me.width * -1) },300 + (100 * cpi.me.colcount),function() {
							cpi.checkvals(cpi.me);
						});
						if (cpi.me.disableanimation) { jQuery.fx.off = false; }
					}
				}
				cpi.setbuttons(cpi.me);
				if (cpiJQ(cpi.me.id).attr('jumptotop') == "true") { window.scrollTo(0, 0); }
			}
		});
		
		cpiJQ('.cpi-cell').live('click',function(event) {
			var cpi_linkurl = cpiJQ(this).attr('linkurl');
			//window.location.href = cpi_linkurl;
      cpi.redirect(cpi_linkurl);
		});

		cpiJQ('.cpi-screenright').click(function(index) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-pagemore').click();
		});
		cpiJQ('.cpi-screenleft').click(function(index) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-pageless').click();
		});
		cpiJQ('.cpi-linkmore').bind('click',function(event) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-pagemore').click();
		});
		cpiJQ('.cpi-linkless').bind('click',function(event) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-pageless').click();
		});
		cpiJQ('.cpi-barleft').bind('click',function(event) {
      var linky = 'http://www.cafepress.com?';
      if (cpi.me.affiliate != '')
        linky = linky + '&aid=' + cpi.me.tracking;
			//window.location.href = linky;
      cpi.redirect(linky);
		});
		cpiJQ('.cpi-seeall').bind('click',function(event) {
			cpi.doseeall(cpi.applets[cpiJQ(this).attr('appletid')]);
		});
		cpiJQ('.cpi-settings').bind('click',function(event) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-settings-overlay').slideToggle(300);
		});
		cpiJQ('.cpi-settings-overlay-close').bind('click',function(event) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-settings-overlay').slideToggle(300);
		});
		cpiJQ('.cpi-settings-html').bind('click',function(event) {
			cpi.me = cpi.applets[cpiJQ(this).attr('appletid')];
			cpiJQ(cpi.me.id + ' .cpi-settings-html').focus();
			cpiJQ(cpi.me.id + ' .cpi-settings-html').select();
		});

    // create iframe page loader here

	}
};

cpi.setbuttons = function(applet) {
	cpi.me = applet;
	if ((cpi.me.currentpage == 1) && (cpi.me.lastpage == 1)) {
			cpiJQ(cpi.me.id + ' .cpi-pageless').css('display','none');
			cpiJQ(cpi.me.id + ' .cpi-pagemore').css('display','none');
	} else {
		if (cpi.me.currentpage <= 1) {
			cpiJQ(cpi.me.id + ' .cpi-pageless').stop(true).fadeTo(300,0.2);
			cpiJQ(cpi.me.id + ' .cpi-pageless').css('cursor','default');
		} else {
			cpiJQ(cpi.me.id + ' .cpi-pageless').stop(true).fadeTo(300,1);
			cpiJQ(cpi.me.id + ' .cpi-pageless').css('cursor','pointer');
		}
		if (cpi.me.currentpage >= cpi.me.lastpage) {
			cpiJQ(cpi.me.id + ' .cpi-pagemore').stop(true).fadeTo(300,0.2);
			cpiJQ(cpi.me.id + ' .cpi-pagemore').css('cursor','default');
		} else {
			cpiJQ(cpi.me.id + ' .cpi-pagemore').stop(true).fadeTo(300,1);
			cpiJQ(cpi.me.id + ' .cpi-pagemore').css('cursor','pointer');
		}
	}
};

cpi.checkvals = function(applet) {
	cpi.me = applet;
	cpi.me.currentpage = Math.round(parseInt(cpiJQ(cpi.me.id + ' .cpi-canvas').css('left'),10) * -1 / cpi.me.width) + 1;
	if (parseInt(cpiJQ(cpi.me.id + ' .cpi-canvas').css('left'),10) > 0) {
		cpiJQ(cpi.me.id + ' .cpi-canvas').css('left',0);
		cpi.me.currentpage = 1;
	}
	if (parseInt(cpiJQ(cpi.me.id + ' .cpi-canvas').css('left'),10) < ((cpi.me.lastpage - 1) * cpi.me.width * -1)) {
		cpiJQ(cpi.me.id + ' .cpi-canvas').css('left',((cpi.me.lastpage - 1) * cpi.me.width * -1));
		cpi.me.currentpage = cpi.me.lastpage;
	}
	cpi.setbuttons(cpi.me);
};

cpi.load = function() {
	cpi.load.getScript();
	cpi.load.tryReady(0);
};

cpi.doseeall = function(applet) {
	cpi.me = applet;
  var linky = cpi.me.seeallurl;

  if (cpi.me.affiliate != '')
    linky = linky + '&aid=' + cpi.me.tracking;
  
	//window.location.href = linky;
  cpi.redirect(linky);
};

function loadit(data) {
  
	cpiJQ('#log').append(cpi.me.id + '<br/>');

	cpi.me.pagesloaded++;

	cpi.me.maxresults = parseInt(data.maxresults,10);
	var cpi_resultcount = parseInt(data.resultcount,10);
	var cpi_firstresult = parseInt(data.firstresult,10);
	cpi.me.seeallurl = data.seeallurl;
	cpi.me.lastpage = (cpi.me.maxresults % (cpi.me.rowcount * cpi.me.colcount) > 0) ? Math.ceil(cpi.me.maxresults / (cpi.me.rowcount * cpi.me.colcount)) : Math.floor(cpi.me.maxresults / (cpi.me.rowcount * cpi.me.colcount));
	cpi.setbuttons(cpi.me);
  
	for(cpi_row=0;cpi_row<cpi.me.rowcount;cpi_row++) {
		for(cpi_col=0;cpi_col<cpi.me.colcount;cpi_col++) {
			cpi.me.counter++;
			cpi.me.pageproductno++;

			if (cpi.me.counter <= cpi.me.maxresults) {

				cpi.me.currentrow = cpi_row + 1;

				var product = data.product[cpi.me.counter - 1],
					cpi_caption = product.caption,
					cpi_image = product.imageurl,
					cpi_price = product.price,
					cpi_productid = product.productid,
					cpi_linkurl = product.linkurl;

        if (cpi.me.affiliate != '') 
          cpi_linkurl = cpi_linkurl + '&aid=' + cpi.me.tracking;

				if (cpi.me.issingle && cpi.me.issquare) {
					cpiJQ(cpi.me.id + ' .cpi-canvas').append('<div linkurl="' + cpi_linkurl + '" productid="' + cpi_productid + '" class="cpi-cell-' + cpi.me.counter + ' cpi-cell"><div class="cpi-thumb-' + cpi.me.counter + ' cpi-thumb"></div><div class="cpi-captionback-' + cpi.me.counter + ' cpi-captionback"></div><div class="cpi-caption-' + cpi.me.counter + ' cpi-caption"></div></div>');
					cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('top', Math.floor(cpi.me.thumbsize * -0.01));
					cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('left',(cpi.me.colspacing * -0.5) + 18 + (cpi.me.width * (cpi.me.pagesloaded - 1)));
				} else {
					cpiJQ(cpi.me.id + ' .cpi-canvas').append('<div linkurl="' + cpi_linkurl + '" productid="' + cpi_productid + '" class="cpi-cell-' + cpi.me.counter + ' cpi-cell"><div class="cpi-thumb-' + cpi.me.counter + ' cpi-thumb"></div><div class="cpi-caption-' + cpi.me.counter + ' cpi-caption"></div></div>');
					cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('top', ((cpi_row * cpi.me.cellheight) + cpi.me.toppad) + 'px');
					cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('left', ((cpi_col * cpi.me.cellwidth) + cpi.me.leftpad + (cpi.me.width * (cpi.me.pagesloaded - 1))) + 'px');
				}

				cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('height',cpi.me.cellheight);
				cpiJQ(cpi.me.id + ' .cpi-cell-' + cpi.me.counter).css('width',cpi.me.cellwidth);
				cpiJQ(cpi.me.id + ' .cpi-thumb-' + cpi.me.counter).css('margin-left',cpi.me.colspacing/2);
				cpiJQ(cpi.me.id + ' .cpi-thumb-' + cpi.me.counter).css('height',cpi.me.thumbsize);
				cpiJQ(cpi.me.id + ' .cpi-thumb-' + cpi.me.counter).css('width', cpi.me.thumbsize);
				cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('margin-left',cpi.me.colspacing/2);
				cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('height',cpi.captionheight);
				cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('width', cpi.me.thumbsize);
				cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('margin-left',cpi.me.colspacing/2);
				cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('height',cpi.captionheight);
				cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('width', cpi.me.thumbsize);

				var cpi_imageurl = cpi_image.replace("150x150",cpi.me.thumbsize + 'x' + cpi.me.thumbsize);

				if (cpi.me.issingle && cpi.me.issquare) {
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).html('<div class="cpi-captionname">' + cpi_caption + ' </div><div class="cpi-captionprice">' + cpi_price + '</div>');
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('position','absolute');
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('bottom',0);
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('left',15);
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('width',cpi.me.cellwidth - 30);
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('height',cpi.singlecaptionheight);
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).css('font-weight','bold');
					cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('position','absolute');
					cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('bottom',0);
					cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('left',0);
					cpiJQ(cpi.me.id + ' .cpi-captionback-' + cpi.me.counter).css('height',cpi.singlecaptionheight);
				} else {
					cpiJQ(cpi.me.id + ' .cpi-caption-' + cpi.me.counter).html('<div class="cpi-captionname">' + cpi_caption + ' </div><div class="cpi-captionprice">' + cpi_price + '</div>');

				}
				cpiJQ(cpi.me.id + ' .cpi-thumb-' + cpi.me.counter).html('<img class="cpi-image" cpurl="http://www.cafepress.com/" productid="' + cpi_productid + '" src="' + cpi_imageurl + '" height="' + cpi.me.thumbsize + '" width="' + cpi.me.thumbsize + '"/>');
			}
		}
	}

	if (cpi.me.height > 600) {
		cpiJQ(cpi.me.id + ' .cpi-canvas').append('<div class="cpi-pagelinks cpi-pagelinks-' + cpi.me.pageno + '"></div>');
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).css('width',cpi.me.width - 80);
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).css('left',40 + ((cpi.me.pageno - 1) * cpi.me.width));
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).css('top',cpi.me.currentrow * cpi.me.cellheight + cpi.me.toppad);
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).append('<span class="cpi-linkless cpi-linkless-' + cpi.me.pageno + '" appletid="' + cpi.me.id + '">&lt; previous</span>');
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).append(' | ');
		cpiJQ(cpi.me.id + ' .cpi-pagelinks-' + cpi.me.pageno).append('<span class="cpi-linkmore cpi-linkmore-' + cpi.me.pageno + '" appletid="' + cpi.me.id + '">next &gt;</span>');
		if (cpi.me.currentpage > 1) {
			cpiJQ(cpi.me.id + ' .cpi-linkless-' + cpi.me.pageno).css('color','#3366CC');
			cpiJQ(cpi.me.id + ' .cpi-linkless-' + cpi.me.pageno).css('cursor','pointer');
		}
		if (cpi.me.currentpage < cpi.me.lastpage) {
			cpiJQ(cpi.me.id + ' .cpi-linkmore-' + cpi.me.pageno).css('color','#3366CC');
			cpiJQ(cpi.me.id + ' .cpi-linkmore-' + cpi.me.pageno).css('cursor','pointer');
		}
	}

	if (cpi.me.counter < (cpi_resultcount + (cpi_firstresult - 1))) {
		cpi.me.datastore = data;
	} else {
		cpi.me.datastore = null;
	}

	cpi.addpages();

}


cpi.addpages = function() {
	if (cpi.appletqueue.length === 0) { return; }

	cpi.me = cpi.applets[cpi.appletqueue.shift()];

	cpi.me.pageno++;
	cpi.me.pageproductno = -1;

	var source = 'tag:cats',
		type = '',
		sourcecode,
		size = parseInt(cpi.me.width, 10) + parseInt(cpi.me.height, 10),
		rpp = '&resultsPerPage=',
		tracking = '&tracking=' + cpi.me.tracking;

	/* hardcode size as 25, for cacheing */
	// if(size == 800){
	// 	rpp += "15";
	// } else if(size > 1500){
	// 	rpp += "25";
	// } else {
	// 	rpp += "10";
	// }
	rpp += "25";
	
	// trim extraneous data from source
	if ((cpiJQ(cpi.me.id).attr('source') !== undefined) && (cpiJQ(cpi.me.id).attr('source') !== '')) {
		sourcecode = cpiJQ(cpi.me.id).attr('source');
		if(sourcecode.indexOf('shop:') === 0 && cpiJQ(cpi.me.id).attr('affiliate') !== ''){
			source = sourcecode.replace('shop:','');
			type = '?type=affiliateshop';
		} else if(sourcecode.indexOf('shop:') === 0){
			source = sourcecode.replace('shop:','');
			type = '?type=shop';
		} else if(sourcecode.indexOf('tag:') === 0){
			source = sourcecode.replace('tag:','');
			type = '?type=tag';
		}
	}

	if ((cpi.me.datastore !== undefined) && (cpi.me.datastore !== null)) {
		loadit(cpi.me.datastore);
	} else {
		cpiJQ.ajax({
			url: cpi.webstore + '/search/show/' + source + type + rpp + tracking,
			dataType: 'jsonp',
			contentType: 'application/json',
			jsonpCallback: 'loadit'
		});
	}
};

// dynamically load any javascript file.
cpi.load.getScript = function() {
	if(typeof jQuery !== "function" || parseInt(jQuery.fn.jquery.split('.')[1]) < 4){
		var script = document.createElement('script');
		script.setAttribute("type","text/javascript");
		script.setAttribute("src", cpi.cpcache + '/js/jquery/jquery-1.4.min.js');
		if (typeof script !== "undefined") { document.getElementsByTagName("head")[0].appendChild(script); }
	}

	var css = document.createElement('link');
	css.setAttribute("type","text/css");
	css.setAttribute("rel", 'stylesheet');
	css.setAttribute("href", cpi.cpcache + '/marketplace/widgets/stylesheets/widget.css');
	css.setAttribute("media", 'screen');
	if (typeof css!="undefined") { document.getElementsByTagName("head")[0].appendChild(css); }
};

cpi.load.tryReady = function(time_elapsed) {
	if (typeof jQuery == "undefined") {
		if (time_elapsed <= 10000) {
			setTimeout("cpi.load.tryReady(" + (time_elapsed + 200) + ")", 200);
		}
	} else {
		cpiJQ = jQuery;
		cpi.queue();
	}
};
cpi.load();

