/*
* name: search.js
* author: RAJF
* notes: Functionality for search behaviour.
* Do not edit below the config block without re-testing search interface and results.
*/

/*
* ## CONFIG ##
*/
var _usedSearchSubmissionUrl = "http://atsearch.autotrader.co.uk/datafeed/freestyle?modelexact=1";
var _newSearchSubmissionUrl = "http://nvs.autotrader.co.uk/partner/xml/cars_search?partner=top_marques&modelexact=1";
var _usedPrivateAdvertUrl = "http://atsearch.autotrader.co.uk/freestyle/cars_advert?xml=1";
// Enable browser caching of search HTML.
var _cacheIncludes = false;
// starting search type
var _detailType = "Quick";
var _searchType = "Used";
var _pagingSets = new Array(10,20,30);
// Default number of results per page
var _itemsPerPage = _pagingSets[0];
// Number of records for new search
var _maxNewRecords = 200;
// if prefilled form fields are used add their id and value here.
var _preFilledFormFields = new Hash("postcode", "Full Postcode", "variant", "Trim e.g. 318 or GTI", "keywords", "Keywords e.g. LHD");
// Search Make
var _searchedMake

//for refresh of Iframe banners
var areaname;
var adType;
var _bannerParams;

// lightbox settings
_lightboxSettings = jQuery.extend({
	overlayBgColor: '#000',
	overlayOpacity: 0.7,
	imageLoading: '/images/site/lightbox/loading.gif',
	imageBtnClose: '/images/site/lightbox/lightbox-btn-close.gif',
	imageBtnPrev: '/images/site/lightbox/lightbox-btn-prev.gif',
	imageBtnNext: '/images/site/lightbox/lightbox-btn-next.gif',
	imageBlank: '/images/site/lightbox/lightbox-blank.gif'
});
// Use to output to firebug console (FF only).
// Set to false for Live!
var _debug = false;
var _popupW = 490;
var _popupH = 560;
/*
* ## END CONFIG ##
*/

// global vars
var _num;
var _interval;
var _mkIndex;
var _curPos;
var _distance;
var _resultsXmlDataSet = null;
var _advertXmlDataSet = null;
resetGlobals();

function resetGlobals()
{
	_num=0;
	_interval = null;
	_mkIndex=0;
	_curPos = 0;
	_distance = 0;
	_resultsXmlDataSet = null;
	_advertXmlDataSet = null;
}

// Window ready
$(function(){

	// Add UI elements for search
	$("#search-type").html('<li id="used-search" class="selected first">Used Cars</li><li id="new-search">New Cars</li>');
	
	// setup events
	setSearchUI();
	
	//$("#search").prepend('<ul id="detail-type"><li id="quick-search" class="selected">Quick Search</li><li id="adv-search">Advanced Search</li></ul>');
	$("#search").prepend('<p id="search-detail" class="sd-advanced">Advanced Search</p>');
	
	$("#used-search").click(function() 
	{
		_searchType = "Used";
		setSearchUI();
		
		$("#new-search").removeClass("selected");
		$(this).addClass("selected");
		return false;
	});
	
	$("#new-search").click(function() 
	{
		_searchType = "New";
		setSearchUI();
		$("#used-search").removeClass("selected");
		$(this).addClass("selected");
		return false;
	});
	
	$("#search-detail").toggle(function(){
		_detailType = "Advanced";
		$(this).removeClass("sd-advanced");
		$(this).addClass("sd-quick");
		$(this).html("Quick Search");
		setSearchUI();
		return false;
	},function(){
		_detailType = "Quick";
		$(this).removeClass("sd-quick");
		$(this).addClass("sd-advanced");
		$(this).html("Advanced Search");
		setSearchUI();
		return false;
	});
	
});

/*
* show loader
*/
function showLoader()
{
	$("#search").prepend('<div id="loader"><img src="/images/site/loading.gif" alt="loading"/></div>');
	$("#search-content").hide();
}

/*hide loader
*/
function hideLoader()
{
	$("#loader").remove();
	$("#search-content").show();
}

function loadHtml(jQueryObject, path, returnFunction)
{
	var date_now = new Date();
	var cache = '';
	
	if(_debug) debug('path is: ' + path);
	
	if(!_cacheIncludes)
	{
		// Use date and time load request to disable browser caching.
		cache = "?rnd=" +  date_now.getDate() + '' + date_now.getMonth() + '' +  date_now.getFullYear() + '' + date_now.getTime() ;
	}
	jQueryObject.load(path + cache,function()
	{
		returnFunction();
	});
}

/*
* Set UI of search area
*/
function setSearchUI()
{
	showLoader();
	
	if(_detailType == "Quick")
	{
		$("#search").animate({width: "214px"},1000,function()
     {
      loadSearchHtml();
     });
	}
	else
	{
		$("#search").animate({width: "819px"},1000,function()
     {
      loadSearchHtml();
     });
	}
}

/*
* Load search html
*/
function loadSearchHtml()
{
	loadHtml($("#search-content"),"/includes/Search/"+ _searchType + _detailType +".htm", setupForm)
}

// extend validation plugin
$.validator.addMethod(
	"checkPostcode",
	function(value, element) {
		if($("#postcode").val() == $("#postcode").attr("title"))
		{
			return false;
		}
		else
		{
			return true;
		}
	}, 
	"Your postcode"	
);

$.validator.addMethod(
	"newAdvanced",
	function(value, element) {
	
		if ($("#make").val() != "" || $("#min_pr").val() != "" || $("#max_pr").val() != "")
    {
			return true;
    }
    else
    {
			return false;
    }  
	}, 
	"A make, max or min price"
);

/*
* Setup the form
*/
function setupForm()
{
	_num=0;
	_interval = null;
	_mkIndex=0;
	
	//$("#make").html("");
	//$("#model").html("");
	
	$("#error-container").remove();
	
	// Setup selects
	// Add error container to page
	if(_searchType == "New")
	{
		_interval=setInterval("doLists(_new_model,new_make_v,new_make_d)", 100);
		$("#search").append("<div id=\"error-container\" style=\"display: none;\"><p><img alt=\"traffic light\" src=\"/images/site/search/alert.gif\" />To perform your search effectively the minimum information we need you to enter into the search is:</p><ul><li>A make, max or min price</ul><p>Remember: <br/>The more deatails you go give us the more tailored the results will be.</p><p><a href=\"#\">Go back to the search</a></p></div>");	
	}
	else
	{
		_interval=setInterval("doLists(_model,make_v,make_d)", 100);
		$("#search").append("<div id=\"error-container\" style=\"display: none;\"><p><img alt=\"traffic light\" src=\"/images/site/search/alert.gif\" />To perform your search effectively the minimum information we need you to enter into the search is:</p><ul></ul><p>Remember: <br/>The more deatails you go give us the more tailored the results will be.</p><p><a href=\"#\">Go back to the search</a></p></div>");
	}
  
  $.validator.setDefaults({
		// set submittion functions
		submitHandler: function() {
			resetGlobals()
			submitForm();
		}
  });
    
  var errorContainer = $("#error-container");
  
  errorContainer.find("a").click(function()
  {
		errorContainer.hide();
		$("#search-content").show();
		return false;
	});
	
	$("#qSearch").bind("invalid-form.validate", function(e, validator) {
		var errors = validator.numberOfInvalids();
		if (errors) 
		{
			errorContainer.show();
			$("#search-content").hide();
		}
	})
	
  if(_searchType == "New")
	{
		if(_detailType == "Advanced")
		{
			// calls to at.search.js function
			updateInline('nvs', new Array('dropdowndata', 'requiresselected'));
			populateNVSSearch();
		}
		
		$("#qSearch").validate({
			focusInvalid: false,
			errorPlacement: function(error, element) {},//override function and hide labels
			rules: {
				make: "newAdvanced",
				min_pr: "newAdvanced",
				max_pr: "newAdvanced"
			}
		});
		
	}
	else
	{
	
		$("#qSearch").validate({
			errorLabelContainer: errorContainer.find("ul"),
			wrapper: 'li',
			focusInvalid: false,
			rules: {
				make: "required",
				postcode: {
					required:true,
					checkPostcode:true
				}
			},
			messages:
			{
				make: "The make or car",
				postcode: "Your postcode"
			}
		});
	
		if(_detailType == "Quick")
		{
			$("#postcode").example(function() {
				return $(this).attr('title');
			});

		}
		else
		{
			$("#postcode").example(function() {
				return $(this).attr('title');
			});
			
			$("#variant").example(function() {
				return $(this).attr('title');
			});
			
			$("#keywords").example(function() {
				return $(this).attr('title');
			});
		}
	}	
}

/*
* Populate the make and model selects
* FSNM Update to existing in page function
* Makes function generic for the population of new and used selects
*/
function doLists(modelArray,_make_v, _make_d)
{
	if(_debug)debug(_make_v[1]);
	_num++;
	if (_num < 100)
	{
		if (typeof dynamic_get_makes == 'function' && typeof dynamic_get_range =='function' && typeof _model=='object' && typeof _make_v=='object' && typeof _make_d=='object')
		{
			dynamic_get_makes('',_make_v, _make_d);
			if (document.qSearch && document.qSearch.make && typeof document.qSearch.make.selectedIndex == 'number')
			{
					_mkIndex = document.qSearch.make.selectedIndex;
			}
			dynamic_get_range(modelArray[_mkIndex], '');
			clearInterval(_interval);
			// interface setup complete
			hideLoader();
		}
	}
	else
	{
		clearInterval(_interval);
		// interface setup complete
		hideLoader();
	}
}

/*
* FSNM Update to existing http://www.autotrader.co.uk/common/dhtml.js function
* Makes function generic for the population of new and used selects
*/
function dynamic_get_makes(req_make,_make_v, _make_d)	{
	
	var dropDown;
	selectedIndex = 0;

	if (document.qSearch && document.qSearch.make)  {
		dropDown = document.qSearch.make;
	}
	else if(document.search && document.search.make)  {
		dropDown=document.search.make;
	}
	else if (document.forms["qSearch"] && document.forms["qSearch"].make)  {
		dropDown = document.forms["qSearch"].make;
	}

	if (dropDown)  {
			dropDown.length = 0;
			
			for(index=0; index<_make_d.length; index++)	{

				dropDown[index] = new Option(_make_d[index],_make_v[index]);
				
				if (_make_d[index]=="Make" || _make_d[index]=="MAKE")  {
					dropDown[index] = new Option(_make_d[index],"");
				  }

				if (_make_d[index]=="ANY MAKE")  {
					dropDown[index] = new Option(_make_d[index],"ANY");
				  }


				if(_make_v[index].toUpperCase() == req_make){
					selectedIndex = index;

				}
			  }
			dropDown.options[selectedIndex].selected = true;
		}
		select_make(req_make);
}

/*
* FSNM Update to existing http://www.autotrader.co.uk/common/dhtml.js function
* Makes function generic for the population of new and used selects
*/
function dynamic_get_range(ranges,req_model)	{
  if(_debug)debug("ranges: "+ ranges);
	selectedIndex = 0;
	var dropDown;

	if (document.qSearch && document.qSearch.model)  {
		dropDown = document.qSearch.model;
	}
	else if(document.search && document.search.model)  {
		dropDown=document.search.model;
	}
	else if (document.forms["qSearch"] && document.forms["qSearch"].model)  {
		dropDown = document.forms["qSearch"].model;
	}

	if (dropDown)  {
    if(_debug)debug("dropDown: "+ dropDown);
		dropDown.length = 0;
		
		if(_debug)debug("ranges.length: "+ranges.length);

		for(index=0; index<ranges.length; index++)	{
      
			dropDown[index] = new Option(ranges[index],ranges[index]);
      
      if(_debug)debug("here: "+index+" : "+ ranges[index]);
      
      
			if (ranges[index]=="Model" || ranges[index]=="MODEL")  {
				dropDown[index] = new Option(ranges[index],"");
			}

		  if (ranges[index]=="ANY MODEL")  {
			  dropDown[index] = new Option(ranges[index],"ANY");
		  }

			if(ranges[index].toUpperCase() == req_model){
				selectedIndex = index;
			}
			else if (ranges[index].toUpperCase() == "ANY MODEL" && req_model == "ANY")  {
				selectedIndex = index;
			}
		}
		// Added by IP to add the ANY option to the model selection
		if(ranges.length>1){
	    if(dropDown[0].text.toUpperCase()!= "ANY"){
	      for(x=ranges.length-1; x>=0; x--){
	        dropDown[x+1]=new Option(dropDown[x].text,dropDown[x].value);
	      }
	      dropDown[0] = new Option("ANY","ANY");
	    }
	  }
	
		dropDown.options[selectedIndex].selected = true;
		
	}
}

function submitForm()
{
	var areaname;
	var serviceUrl;
	var searchParams = "";
	// Important - returns all form elements with a name. Don't give submits a name.
	var formValues = $("#qSearch").formHash(); 
	
	showLoader();
	
	if(_detailType == "Advanced")
	{
		$("#search-detail").html("&nbsp;");
		$("#search-detail").removeClass();
		$("#search-detail").addClass("sd-none");
	}

	if(_searchType == "New")
	{
		
		serviceUrl = _newSearchSubmissionUrl;
		
		//mandatory
		//searchParams += "&maxresults=..."; - not as per documentation
		searchParams += "&max_records=" + _maxNewRecords;
		if(_detailType == "Quick")
		{
			searchParams += "&prereg=Y";
		}
	}
	else
	{
			
		serviceUrl = _usedSearchSubmissionUrl;
		
		/*
		* for some reason the AT quick search doesn't have sort enabled.
		if(_detailType == "Quick")searchParams += "&sort=0";
		*/
	}
	
	
	// Add values to querystring
	for (var field in formValues) {
		
		if(_debug) debug('key is: ' + field + ', value is: ' + formValues[field]);
		
		if(field=="make")
		{
		  _searchedMake = formValues[field]		 
		}
				
		
		var addIt = true;
		// Stop non mandatory pre filled fields being added.
		for (var preFilledField in _preFilledFormFields.items) {
			if(field == preFilledField)
			{
				if(formValues[field] == _preFilledFormFields.items[preFilledField])
				{
					addIt = false;
				}
			}
		}
		if(addIt)
		{
			searchParams += "&" + field + "=" + formValues[field];
		}
		
		_bannerParams += "&" + field + "=" + formValues[field];
	}
	
		
		
	serviceUrl = serviceUrl+searchParams;
	
	if(_debug) debug(serviceUrl);
	
	// call search service in fsnm.search.generic.js
	// url, function to be called on success
	handleRequest(serviceUrl,displayResults);
	
	return false;
}

//create Cookie for Iframe Banners
//So that query string doesn't have an impact on ackami
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
} 




// rendering of results
function displayResults(xmlDataSet, serviceUrl)
{
	
	
	
	var container = $("#content");
	container.removeClass();
	
	
	
	if (serviceUrl) {
	
	var _searchedParams = serviceUrl.split("%26");}
	else{_searchedParams = "";}
	
	
	if (_searchType == "New") {
	if (serviceUrl) {	
	_bannerParams = _searchedParams[5] +'/'+ _searchedParams[6] +'/'+ _searchedParams[7] +'/'+ _searchedParams[8]; 
	_bannerParams = unescape(_bannerParams);
	_bannerParams = _bannerParams.toUpperCase();
	}
	createCookie("searchedParams" ,_bannerParams ,1)	
	}
	
	if (_searchType == "Used") {
	if (serviceUrl) {
	var _searchedParams = serviceUrl.split("%26");
	_searchedParams[2] = _searchedParams[2].replace(/postcode/, "PC");
	_searchedParams[5] = _searchedParams[5].replace(/min_pr/, "MIN_PRICE");
	_searchedParams[6] = _searchedParams[6].replace(/max_pr/, "MAX_PRICE");
	_searchedParams[2] = _searchedParams[2].substr(0,11);
	_searchedParams[2] = _searchedParams[2].replace("+", "");
	}
	
	
	_bannerParams = _searchedParams[2] +'/'+ _searchedParams[3] +'/'+ _searchedParams[4] +'/'+ _searchedParams[5] +'/'+ _searchedParams[6]; 
	_bannerParams = unescape(_bannerParams);
	_bannerParams = _bannerParams.toUpperCase();
	
	createCookie("searchedParams" ,_bannerParams ,1)
	
	} 
	
	

	
	
	if(_resultsXmlDataSet == null)
	{
		_resultsXmlDataSet = xmlDataSet;
	}
	
	if(_detailType == "Advanced")
	{
		container.addClass("advanced-results");
	}
	else
	{
		container.addClass("results");
	}
	
	container.html("");
	
	if(_debug)debug($("row",_resultsXmlDataSet).length);
	if($("row",_resultsXmlDataSet).length < 1){
			container.addClass("no-results");
			loadHtml($("#content"),"/includes/Layouts/NoResults.html", function(){
			hideLoader();
		});
	}
	else
	{

		var resultsList = document.createElement("ul");
		resultsList = $(resultsList);
		resultsList.attr({id:"item-list"});
		
		resultsList.addClass(_searchType.toLowerCase());
		
		$("row:lt(" + parseInt(_curPos + _itemsPerPage) + ")",_resultsXmlDataSet).filter(":gt(" + parseInt(_curPos -1) + ")").each(function(i) {
				
				
				var resultItem = document.createElement("li");
				var resultItemDefinition = document.createElement("dl");
				resultItem = $(resultItem);
				resultItemDefinition = $(resultItemDefinition);
				
				
				if(i%2)
				{
					resultItem.addClass("alternate");	
				}
				
				/*
				*	start definitions
				*/
				var itemId, itemTitle, itemTrade, itemDescription, itemPrice, itemDistance, itemImageSrc, itemImageAlt, itemNumPhotos, itemLink 
				if(_searchType == "New")
				{
						
					
					itemId = $(this).find("id").text();
					itemTitle = $(this).find("make").text() + " " + $(this).find("model").text() + " " + $(this).find("derivative").text();
					itemDescription = $(this).find("additional_text").text();
					itemPrice = $(this).find("price").text();
					itemImageSrc = $(this).find("dealer_logo").text();
					itemImageAlt = $(this).find("name").text();
					//itemNumPhotos =
					itemLink = "<a href=\"javascript:_hbPageView('trade+advert+popup','/topmarques/"+_searchType.toLowerCase()+"/"+_detailType.toLowerCase()+"+search/" + _itemsPerPage + "+per+page/page+" + parseInt((_curPos/_itemsPerPage)+1) + "');javascript:popupCapTechSpec(" + itemId + ", 'top_marques', '');\">" + itemTitle + "</a>";

					
				
					resultItemDefinition.append("<dt>" + itemLink + "</dt>");				
					
					resultItemDefinition.append("<dd class=\"image\"><a rel=\"external\" href=\"" + $(this).find("product_link").text() + "\"><img src=\"" + itemImageSrc + "\" alt=\"" + itemImageAlt + "\" /></a>\
					<p>" + itemImageAlt + "</p>\
					</dd>"); 
		
					resultItem.append("<dd class=\"image\"><img src=\"" + itemImageSrc + "\" alt=\"Picture of " + itemImageAlt + "\" /></dd>"); 
					
					resultItemDefinition.append("<dd class=\"item-text\">" + itemDescription + "</dd>");
					resultItemDefinition.append("<dd class=\"price\">&pound;" + itemPrice + "</dd>");
					
					var specListContainer = document.createElement("dd");
					var specList = document.createElement("ul");
					specListContainer = $(specListContainer);
					specListContainer.addClass("speclist");
					specList = $(specList);
					
					if($(this).find("prereg").text().toUpperCase() == "Y") specList.append("<li>Pre Registered</li>");
					specList.append("<li>" + $(this).find("body").text().toLowerCase() + "</li>")
					specList.append("<li>" + $(this).find("fuel").text().toLowerCase() + "</li>")
					specList.append("<li>" + $(this).find("engine_cc").text().toLowerCase() + "</li>")
					specList.append("<li>" + $(this).find("transmission").text().toLowerCase() + "</li>")
					
					specListContainer.append(specList);
					resultItemDefinition.append(specListContainer);	
				
					if($(this).find("road_tax_inc").text() == "Y" ) resultItemDefinition.append("<dd class=\"tax\">Tax included</dd>");
					
					if($(this).find("reg_fee_inc").text() == "Y" ) resultItemDefinition.append("<dd class=\"regfee\">Reg fee included</dd>");
					
					resultItemDefinition.append("<dd>Delivery Time: <strong>" + $(this).find("delivery_time").text() + "</strong></dd>");
					
					if($(this).find("delivery_charge_inc").text() == "Y" )
					{
						resultItemDefinition.append("<dd>Delivery Cost: <strong>Included</strong></dd>");
					}
					else
					{
						resultItemDefinition.append("<dd>Delivery Cost: <strong>Not included</strong></dd>");
					}
					
					resultItemDefinition.append("<dd><a rel=\"external\" href=\"" + $(this).find("product_link").text() + "\">Dealer's Website</a></dd>");
					
				}
				else
				{
					
					
					
					
					itemId = $(this).find("id").text();
					itemTitle = $(this).find("make").text()
					itemTrade = $(this).find("tradeflag").text().toUpperCase();
					itemDescription = $(this).find("ad_text").text();
					itemPrice = $(this).find("price").text();
					itemDistance = $(this).find("distance").text();
					itemImageSrc = $(this).find("picture").text();
					itemImageAlt = itemTitle;
					
					
					//itemNumPhotos =
					
					if(itemTrade == "Y")
					{
						// can add distance and postcode params
						itemLink = "<a href=\"javascript:_hbPageView('trade+advert+popup','/topmarques/"+_searchType.toLowerCase()+"/"+_detailType.toLowerCase()+"+search/" + _itemsPerPage + "+per+page/page+" + parseInt((_curPos/_itemsPerPage)+1) + "'); javascript:$.jqURL.loc('http://atsearch.autotrader.co.uk/topmarques/CARS_popup.jsp?modelexact=1&id=" + itemId + "',{w:" + _popupW + ",h:" + _popupH + ",wintype:'_blank'});\">" + itemTitle + "</a>";	
	
					}
					else
					{
						itemLink = "<a href=\"javascript:_hbPageView('private+advert+details','/topmarques/"+_searchType.toLowerCase()+"/"+_detailType.toLowerCase()+"+search/" + _itemsPerPage + "+per+page/page+" + parseInt((_curPos/_itemsPerPage)+1) + "'); javascript:getAdvert(" + itemId + "," + itemDistance + ");\">" + itemTitle + "</a>";	
					}
					
					resultItemDefinition.append("<dt>" + itemLink + "</dt>");	
					resultItemDefinition.append("<dd class=\"image\"><img src=\"" + itemImageSrc + "\" alt=\"Picture of " + itemImageAlt + "\" /></dd>"); 
					
					if(itemTrade == "Y") resultItemDefinition.append("<dd class=\"item-meta\">(Trade)</dd>");
					
				  resultItemDefinition.append("<dd class=\"item-text\">" + itemDescription + "</dd>");
				  resultItemDefinition.append("<dd class=\"price\">&pound;" + itemPrice + "</dd>");
				  resultItemDefinition.append("<dd class=\"distance\">" + itemDistance + " Miles</dd>");
				}
				
				
				
				resultItem.append(resultItemDefinition)
				resultsList.append(resultItem);
				
			
				
			});



		//paging container
		container.append("<div class=\"paging-top\"></div>");		
		container.append(resultsList);
		//paging container
		container.append("<div class=\"paging-bottom\"></div>");
		
		// results banner at bottom of the results
		container.append("<div id=\"results-banner\" class=\"advertisment\"></div>");			
		$("#results-banner").load("/includes/adverts/resultsBanner.htm");
		
		
		
		
		
		
		setPaging();
		setLinkRel();
		
		// Move page back to top.
		$('html,body').animate({scrollTop: $("#content").offset()}, 0);
		
		if(_searchType == "New") {
		container.append("<script type='text/Javascript' language='Javascript'>var areaname=\"BUYING.NEWSEARCH\";calltheadvertmpu(areaname;</script> ");
		}
		
		else {
	
		container.append("<script type='text/Javascript' language='Javascript'>var areaname=\"BUYING.FULLSEARCH\";  calltheadvertmpu(areaname); </script> ");
		}
		
		hideLoader();
	}
}

function setPaging()
{
	var info = new StringBuilder();
	var numResults = new StringBuilder();
	var resultSetLength = $("row",_resultsXmlDataSet).length;
	
	/*
	Determine what set of matched results the user is
	currently browsing. Because we started "_curPos" at 0,
	we must add 1 to get the actual current position.
	*/
	if (_curPos + _itemsPerPage > resultSetLength)
	{
		showingThrough = resultSetLength;
	}
	else
	{
		showingThrough = parseInt(_curPos + _itemsPerPage);
	}
	
	info.append("<p class=\"showing\">Showing <strong>" + parseInt(_curPos + 1) + "</strong> through <strong>" + showingThrough + "</strong> of <strong>" + resultSetLength + "</strong>");
	info.append(" cars based on your search");
	info.append("</p>");
	
	numResults.append("<p>Show Me:&nbsp;");
	
	// set paging sets
	for(var num in _pagingSets)
	{
		numResults.append("<a href='#'");
		if(_pagingSets[num] == _itemsPerPage)
		{
			numResults.append(" class=\"selected\"");
		}		
		numResults.append(" onclick='_itemsPerPage = " + _pagingSets[num] + ";displayResults();return false;'>" + _pagingSets[num] + " at a time</a>");
	
		if(num < (_pagingSets.length -1))
		{
			numResults.append("&nbsp;|&nbsp;")
		}
	}
	numResults.append("</p>");
	
	$(".paging-top").append(info.toString() + numResults.toString());
	$(".paging-bottom").append(numResults.toString() + info.toString());
	
	var prevSet = new Image();
	var nextSet = new Image();
	
	if (_itemsPerPage != resultSetLength)
	{
	
		
	
		
		// single page of results
		if (resultSetLength < _itemsPerPage)
		{
			$(prevSet).attr("src", "/images/site/search/arrow_left_dark.gif");
			$(prevSet).attr("alt", "");
			$(prevSet).addClass("no-link");
			
			$(nextSet).attr("src", "/images/site/search/arrow_right_dark.gif");
			$(nextSet).attr("alt", "Next set of results");
			$(nextSet).addClass("no-link");
		}
		else
		{
			if (_curPos == 0) // First page. Go forward only.
			{
				$(prevSet).attr("src", "/images/site/search/arrow_left_dark.gif");
				$(prevSet).attr("alt", "");
				$(prevSet).addClass("no-link");
				
				$(nextSet).attr("src", "/images/site/search/arrow_right.gif");
				$(nextSet).attr("alt", "Next set of results");
				
			}
			if (_curPos > 0 && parseInt(_curPos + _itemsPerPage) < resultSetLength) // Somewhere inbetween.
			{
				$(prevSet).attr("src", "/images/site/search/arrow_left.gif");
				$(prevSet).attr("alt", "Previous set of results");
				
				$(nextSet).attr("src", "/images/site/search/arrow_right.gif");
				$(nextSet).attr("alt", "Next set of results");
			}
			if (parseInt(_curPos + _itemsPerPage) >= resultSetLength) // Last page. Go back only.
			{
				$(prevSet).attr("src", "/images/site/search/arrow_left.gif");
				$(prevSet).attr("alt", "Previous set of results");
				
				$(nextSet).attr("src", "/images/site/search/arrow_right_dark.gif");
				$(nextSet).attr("alt", "");
				$(nextSet).addClass("no-link");
			}
		}
	}
	
	$(prevSet).addClass("previous");
	$(nextSet).addClass("next");
	
	$(".paging-top").append(prevSet);
	$(".paging-top").append(nextSet);
	
	$(prevSet).clone(true).appendTo(".paging-bottom");
	$(nextSet).clone(true).appendTo(".paging-bottom");
	
	$("img[class='next']").click(function()
	{
		_curPos += _itemsPerPage;
		displayResults();
		return false;
	});
	
	$("img[class='previous']").click(function()
	{
		_curPos -= _itemsPerPage;
		displayResults();
		return false;
	});

}

// Get used private advert
function getAdvert(id,distance)
{
	showLoader();	
	handleRequest(_usedPrivateAdvertUrl+ "&id=" + id,function(xmlDataSet)
	{
		_advertXmlDataSet = xmlDataSet;
		_distance = distance;
		// get layout html
		//$("#content").html("");
		loadHtml($("#content"),"/includes/Layouts/AdvertFramework.html", setAdvertContent);
	});
}

// Display used private advert content
function setAdvertContent()
{	
	var container = $("#content");
	var dataSource = $("row",_advertXmlDataSet);
	var leftColumn = $("#content .left-column");
	var rightColumn = $("#content .right-column");
	var age, make, tel, multiTel, addText, back
	
	// start left column
	addText = dataSource.find("adtext");
	age = addText.find("zage").text();
	make = addText.find("zmake").text();
	tel = addText.find("ztel:first").text();
	
	for(var i=1; i<addText.find("ztel").length; i++){
	  if(_debug) debug(i);
	  tel += " or " + addText.find("ztel:eq("+i+")").text()
	}
	
	
	if(_debug) debug('age is: ' + age + ', make is: ' + make + ', tel is: ' + tel);
	
	// remove inner node from add text
	// IEfail!
	//addText.find("zage").remove();
	//addText.find("zmake").remove();
	//addText.find("ztel").remove();
	
	// remove inner node text from add text
	addText.find("zage").html("");
	addText.find("zmake").html("");
	addText.find("ztel").html("");
	
	backToResults = "<p><a href=\"#\" class=\"back-to-results\">Back to search results</a></p>"
	
	leftColumn.append(backToResults);
	$(".back-to-results").parent().addClass("first-item");
	
	leftColumn.append("<h1>" + age + " " + make + "</h1>");
	leftColumn.append("<p class=\"price\">&pound;" + dataSource.find("price").text() + "</p>");
	leftColumn.append("<h2>In Brief:</h2>");
	var inBrief = document.createElement("ul");
	inBrief = $(inBrief);
	inBrief.addClass("in-brief");
	
	if(dataSource.find("mileage").text())
	{	
		var unit = (dataSource.find("mileage").text() != "M") ? "Miles" : "Kilometers";
		inBrief.append("<li>" + dataSource.find("mileage").text().toLowerCase() + " " + unit + "</li>")
	}
	
	if(dataSource.find("transmission").text())
	{	
		inBrief.append("<li>" + dataSource.find("transmission").text().toLowerCase() + "</li>")
	}
	
	if(dataSource.find("colour").text())
	{	
		inBrief.append("<li>" + dataSource.find("colour").text().toLowerCase() + "</li>")
	}
	
	if(dataSource.find("fuel").text())
	{	
		inBrief.append("<li>" + dataSource.find("fuel").text().toLowerCase() + "</li>")
	}
	
	if(dataSource.find("body").text())
	{	
		inBrief.append("<li>" + dataSource.find("body").text().toLowerCase() + "</li>")
	}
	
	if(dataSource.find("engine_cc").text())
	{	
		inBrief.append("<li>" + dataSource.find("engine_cc").text().toLowerCase() + "cc</li>")
	}
	
	leftColumn.append(inBrief);
	
	leftColumn.append("<h2>Full Description:</h2>");
	leftColumn.append("<p>" + addText.text() + "</p>");
	leftColumn.append("<p>Distance: <strong>" + _distance + " miles</strong></p>");
	

	leftColumn.append("<p>Telephone: <strong>" + tel + "</strong></p>")
	if(dataSource.find("email").text()) leftColumn.append("<p>Email: <strong>" + dataSource.find("email").text() + "</strong></p>")
	
	
	leftColumn.append(backToResults);
	
	// Set link action
	// Note - Set print link here (if required)
	$(".back-to-results").click(function()
	{
		displayResults();
		return false;
	});
	
	// start right column
	var gallery = document.createElement("dl");
	var mainImage = document.createElement("dd");
	gallery = $(gallery);
	mainImage = $(mainImage);
	mainImage.addClass("main")
	
	gallery.attr({id:"gallery"});
	gallery.append("<dt>Gallery</dt>");
	
	mainImage.append("<a href=\"http://pictures.autotrader.co.uk/imgser-uk/servlet/media?id=" + dataSource.find("images").find("image[@type='MB']").text() + "\" title=\"Main image\" id=\"enlargeImageLink\">\
	<img src=\"http://pictures.autotrader.co.uk/imgser-uk/servlet/media?id=" + dataSource.find("images").find("image[@type='MB']").text() + "\" alt=\"Main image\"/>\
	<span>Enlarge Image</span>\</a>");
	gallery.append(mainImage);
	
	dataSource.find("image[@thumbnailcount]").each(function(i) {
		var thumbContainer = document.createElement("dd");
		var thumbLink = document.createElement("a");
		var thumbImage = new Image();
		thumbContainer = $(thumbContainer);
		thumbLink = $(thumbLink);
		thumbImage = $(thumbImage);
		
		thumbImage.attr("src", "http://pictures.autotrader.co.uk/imgser-uk/servlet/media?id=" + $(this).text());
		thumbImage.attr("alt", "");
		
		if($(this).prev().attr("type") == "IB" || $(this).prev().attr("type") == "MB")
		{
			thumbLink.attr("href", "http://pictures.autotrader.co.uk/imgser-uk/servlet/media?id=" + $(this).prev().text());
		}
		else
		{
			thumbLink.attr("href", "http://pictures.autotrader.co.uk/imgser-uk/servlet/media?id=" + $(this).text());
		}
		thumbLink.append(thumbImage);
		thumbContainer.append(thumbLink);
		gallery.append(thumbContainer);		
	});
	
	gallery.append("<dd class=\"click\">Click a thumbnail to see a larger image</dd>");
	
	rightColumn.prepend(gallery);
	
	// add lightbox
	$("#gallery a").lightBox(_lightboxSettings);

	$("#gallery dd:not(.main) a img").click(function(){
		$("#gallery dd.main a img").attr("src",$(this).parent().attr("href"));
		$("#gallery dd.main a").attr("href",$(this).parent().attr("href"));
		return false;
	});
	
	hideLoader();
	
	// from fsnm.ui.js
	setLinkRel();
}