
    var CDCoverCount = 1;
    var CDDivId = 1;
    var searchIntroPage = null;
    var cdnum = null;
    
	function mycarousel_itemLoadCallback(carousel, state)
	{

		var firstCount = carousel.first;
		var lastCount = carousel.last + 12;
		

		
		// Check if the requested items already exist
		if (carousel.has(firstCount, lastCount)) {
			return;
		}
		

		jQuery.get(
			'/search/query.php',
			{
			    action: "getAll",
				start: firstCount,
				end: lastCount
			},
			function(xml) {
				mycarousel_itemAddCallback(carousel, carousel.first, lastCount, xml);
			}
		);
	};

	function mycarousel_itemAddCallback(carousel, first, last, xml)
	{
		// Set the size of the carousel
		if(xml !== undefined) {
			var result = eval( '(' + xml + ')' );
			carousel.size(64);
		}
		
		for(var i=0; i< result.count; i++) {
			var cd = result.rows[i];
			if (!carousel.has(parseInt(cd.compactDiscNumber)))
			{
			    carousel.add(parseInt(cd.compactDiscNumber), mycarousel_getItemHTML(cd));
			}
		}

	};

	/**
	 * Item html creation helper.
	 */
	function mycarousel_getItemHTML(result)
	{

      var cdIdValue = "cdDesc" + CDDivId;
      imagePath='images/cd_covers/SLVol' + result.compactDiscNumber +'.jpg ';

	  //New CD Covers ImagePath - code for missing covers
	  if(result.compactDiscNumber==1){ imagePath='images/cds/CoverOrange.jpg';}
	  if(result.compactDiscNumber==2){ imagePath='images/cds/CoverRed.jpg';}
	  if(result.compactDiscNumber==5){ imagePath='images/cds/CoverRed.jpg';}
	  if(result.compactDiscNumber==6){ imagePath='images/cds/CoverPurple.jpg';}
	  if(result.compactDiscNumber==13){ imagePath='images/cds/CoverPurple.jpg';}
	  if(result.compactDiscNumber==14){ imagePath='images/cds/CoverRed.jpg';}

	var description = result.compactDiscName.replace("'", "");

 if(!searchIntroPage)
  {
  cdInnerHTML ='<a href="' +
		  'javascript:ShowCDDesc(\''+result.compactDiscNumber+'\',\'getcdbyid\','+'\''+result.Description+'\',\''+description+'\');' +
		  //'javascript:sonicLibSearch.Search(\''+result.compactDiscNumber+'\',\'getcdbyid\');' +
		  '"><img src="' +
		  imagePath +
		'" width="' +
		85 +
		'" height="' +
		85+
		'"/>'+trunc(result.compactDiscName, 18, 20) +
		  '<\/a>' + '<br />' + 'CD #' +
		  trunc(result.compactDiscNumber, 20, 20);
	  }
	  else{
	  cdInnerHTML = '<a href="cdsearch/' + '?cdnum=' + result.compactDiscNumber + '"><img src="' +
		  imagePath +
		'" width="' +
		85 +
		'" height="' +
		85+
		'"/>' +
		  trunc(result.compactDiscName, 18, 20) +
		  '<\/a>' + '<br />' + 'CD #' +
		  trunc(result.compactDiscNumber, 20, 20)+
		  '<div' + ' id=\"'+ cdIdValue + '\"' + ' class=\"hiddenCDDesc\">' + description + '</div>';
	  
	  }

  	CDCoverCount = CDCoverCount + 1;
  	CDDivId = CDDivId + 1;

	return cdInnerHTML;
	
	};

	jQuery(document).ready(function() {
	    
	    var startValue = 55;
	    
        var qs = new Querystring();
        var cdnumQs = qs.get("cdnum");
        
        if(cdnumQs)
        {
            cdnum = parseInt(cdnumQs);
        }
        
        if(cdnum)
        {
            startValue = cdnum;
        }
        
         if(cdnum)
            {
                jQuery.get('/search/query.php',
			    {
				    action: "getCdDesc",
				    value: cdnum
			    },
			    function(xml) {
                 var messages = [];
                    try {
                        messages = YAHOO.lang.JSON.parse(xml);
                    }
                    catch (x) {
                        return;
                    }
                    ShowDefaultCDDesc(cdnum,"getcdbyid",messages.rows[0].Description,messages.rows[0].compactDiscName);
                }
                );
            }
            
		jQuery('#mycarousel').jcarousel({
			// Uncomment the following option if you want items
			// which are outside the visible range to be removed
			// from the DOM.
			// Useful for carousels with MANY items.
			visible: 9,
			scroll: 9,
			start: startValue,
			size:63,
			wrap:'both',
			itemLoadCallback: mycarousel_itemLoadCallback
		});
	});
	
	var trunc = function(str, maxLen, maxWordLen) 
	{
		// Strip markup
		str = str.replace("<b>", "");
		str = str.replace("<\/b>", "");
		str = str.replace("<B>", "");
		str = str.replace("<\/B>", "");
		
		// Simple truncation
		if(str.length > maxLen) {
			str = str.substring(0,maxLen) + "...";
		}

		// Truncate for long words
		var start = 0;
		var loopCnt = 0;
		var strSlice = str;
		
		do  {
			var spaceBreak = strSlice.indexOf(' ');
			var lenOfWord = spaceBreak;
			if(lenOfWord == -1)
			{
				lenOfWord = strSlice.length;
			}

			if (lenOfWord > maxWordLen) {
				//debugMsg("Long word found in: " + strSlice);
				str = str.substring(0, maxWordLen);  // TRUNCATE
			}
			start = spaceBreak+1;
			strSlice = strSlice.substring(start);
			spaceBreak = strSlice.indexOf(' ');
		} while(spaceBreak != -1)
		
		
		return str;
	};
