		function bzCarousel_initCallback(carousel, state) {
			
			if (carousel.prevFirst != null) {
			// Remove the last visible items to keep the list small
				for (var i = carousel.prevFirst; i <= carousel.prevLast; i++) {
				// jCarousel takes care not to remove visible items
				carousel.remove(i);
				}
			}
			
			var per_page = carousel.last - carousel.first + 1;
			var currPage = 0;
			var f = 0;
			var l = 0;
			var cr = carousel;
			
			for (var i = carousel.first; i <= carousel.last; i++) {
				var page = Math.ceil(i / per_page);

				if (currPage != page) {
					currPage = page;

					f = ((page - 1) * per_page) + 1;
					l = f + per_page - 1;

					f = f < carousel.first ? carousel.first : f;
					l = l > carousel.last ? carousel.last : l;

					if (carousel.has(f, l)) {
						continue;
					}
					
						bzCarousel_makeRequest(carousel, f, l, per_page, page);
					
				}
			}
			
			// stop when hovering over current gallery item
			carousel.clip.hover(function() {
                carousel.stopAuto();
            }, function() {
                carousel.startAuto();
            });
			
			//stop when clicking through the gallery
			carousel.buttonNext.bind('click', function() {
                carousel.startAuto(0);
            });
 
            carousel.buttonPrev.bind('click', function() {
                carousel.startAuto(0);
            });
		}; 

		//make a var list for holding the returned json, and reuse it on callback, to avoid hitting server too often.
		var list = 0;

		function bzCarousel_makeRequest(carousel, first, last, per_page, page){

			// Lock carousel until request has been made
			carousel.lock();

			
			if (list == 0) {
				$.getJSON("http://ws.bilzonen.dk/partnersites.asmx/GetAdCarGalleryWithDetails?format=json&partnerID=8&make=Audi&numberOfSize=30&jsonp=?", function(data){
					list = data;
					bzCarousel_itemAddCallback(carousel, first, last, data, page);
				});
			}
			else {
				bzCarousel_itemAddCallback(carousel, first, last, list, page);
			}
		};

		function bzCarousel_itemAddCallback(carousel, first, last, data, page)
		{
			// Unlock
			carousel.unlock();
						
			// Set size
			carousel.size(29);
	
			var per_page = carousel.last - carousel.first + 1;

			for (var i = first; i <= last; i++) {
				var pos = i - 1;
				var idx = Math.round(((pos / per_page) - Math.floor(pos / per_page)) * per_page);
	
				carousel.add(i, bzCarousel_renderGalleryAd( data.adCarGalleryWithDetailsItems[i] ));
			}
		}; 


	function bzCarousel_renderGalleryAd(adCarItem) {
			
	var c = $('<div></div>').attr("id", "bzGalleryCar");
    
	var description = adCarItem.description;
	if (description.length > 260) {
		description = description.substring(0, 260) + '...';	
	}
	
	var name_version = adCarItem.name_version;
	if (name_version.length > 20) {
		name_version = name_version.substring(0, 20) + '...';
	}
	
	
	c.append('<h2>' + adCarItem.name_make + ' ' + adCarItem.name_model + ' ' + name_version + '</h2>');
	c.append('<div id="bzGalleryImgPlcHld"><img src="http://billeder.bilzonen.dk/Car/Pro/' +  GalleryLargeImageSize + '/0/' + adCarItem.photoID + '.jpg"/></div>');
	
	c.append('<table id="bzGalleryDescriptionTable"><tr><td>Registrering: </td><td class="specs">' + FormatString(adCarItem.year_registration, '-1', '--') + '/' + FormatString(adCarItem.month_registration, '-1', '--') + '</td></tr><tr><td>Km: </td><td class="specs">' + FormatString(FormatNumber(adCarItem.km), '-1', '--') + '</td></tr><tr><td>Pris: </td><td class="specs">' + FormatString(FormatNumber(adCarItem.price), '-1', 'Ring for pris') + '</td></tr><tr><td>Kviknummer:</td><td class="specs">' + adCarItem.adCarID + '</td></tr></table>');
	
	//c.append('<div class="description">' + description + '</div>'); 
	
	c.append('<table id="bzGalleryDealerTable"><tr><td><b>Forhandler:</b></td></tr><tr><td>' + adCarItem.dealer_name + '</td></tr><tr><td>' + adCarItem.dealer_address_01 + ', ' + adCarItem.dealer_zip_code + ' ' + adCarItem.dealer_city_name + '</td></tr></table>');
	c.append('<div><button onclick="location.href=\'' + getUrl(gup('page_index')) + "&ad_car_id=" + adCarItem.adCarID + '&so=' + gup('so') + '&sc=' + gup('sc') + '\';" id="bzGalleryCarInfoButton">Se Mere</button></div>');
	
	return c;
	}; 
 	 
    function bzGalleryLoad(){
		$('#bzGalleryCarousel').jcarousel({
			auto: 5,
			wrap: 'last',
			scroll: 1,
			itemLoadCallback: bzCarousel_initCallback
		});
	}
