document.write("<link rel=\"stylesheet\" type=\"text/css\" href=\"http://www.lvmcc.co.uk/listings/client/classic.css\" />");
var sitename="example";
var viewURL="http://www.lvmcc.co.uk/listings/viewupdate.php?site=example&id=";
var emailURL="http://www.lvmcc.co.uk/listings/emailsales.php";
var thumburl="http://www.lvmcc.co.uk/listings/data/example/thumbs/";
var picurl="http://www.lvmcc.co.uk/listings/data/example/pics/";
var picsize=400;
var adverton=true;
var orderbyon=true;
var searchon=true;
var advert="Powered by Crystal Pyramid Web Design";
var advertURL="http://www.cplinternet.net/";

var vehiclelist=new Array(2);
vehiclelist[0]=new vehicle(5, "1997 Morgan Plus 8", "40,000 miles", "apache", "manual gearbox", "1997 Morgan Plus 8 finished in Apache, Many Extras, 40,000 miles. Call for Details. POA", "1", "68");
vehiclelist[1]=new vehicle(4, "1989 Bentley Turbo R", "19,000 miles", "anthracite grey metallic", "automatic gearbox", "1989 Bentley Turbo R, 19,000 miles from new, FSH, Ex Sultan of Brunei vehicle, Grey Leather, Black Piano Wood, Grey Piping, Grey Lambswool Rugs.  POA |", "1", "65");

vorder=new Array(5); vorder[1]=new Array(2); vorder[2]=new Array(2); vorder[3]=new Array(2); vorder[4]=new Array(2); vorder[5]=new Array(2);
vorder[1][0]=0; vorder[1][1]=1; 
vorder[2][0]=0; vorder[2][1]=1; 
vorder[3][0]=1; vorder[3][1]=0; 
vorder[4][0]=1; vorder[4][1]=0; 
vorder[5][0]=0; vorder[5][1]=1; 


// AutoDirector JavaScript
var carlist;
var id=0;	// vehicle ID
var idIndex=0;	// vehicle ID index
var ob=0;	// order by
var ps=0;	// page size
var pn=1;	// page number
var st="";	// search term
var sent=0;	// enquiry sent
var se="";	// sales email
var thisURL=location.protocol+"//"+location.host;
if (location.port!='') thisURL+=":"+location.port;
thisURL+=location.pathname;
var psizes=new Array(0);
var noerrs;
var adjump=false;
var adlink='';
if (advert!="") {
	adlink='<div class="adsite">';
	if (advertURL!="") adlink+='<a href="'+advertURL+'" target="autodirector" class="adlink">';
	adlink+=advert;
	if (advertURL!="") adlink+='</a>';
	adlink+='</div>';
}
else adverton=false;


// page size array
if (pagesizes==undefined) var pagesizes="10,20,30,50";

// order by
var oblist=new Array("price, highest first", "price, lowest first", "year, yougest first", "year, oldest first", "make, A to Z", "make, Z to A");

// get URL arguments
parseArgs();

// ________________________________________________________
// client start
function ADstart() {

	// car list element
	if (carlist=document.getElementById("autodirector")) {

		// get page size list
		pagesizes=pagesizes.replace(/[^0-9,]/g, "");
		psizes=pagesizes.split(",");
		if (psizes.length<1) { psizes=new Array(1); psizes[0]=10; }
		if (ps<0) ps=0;
		if (ps>=psizes.length) ps=psizes.length-1;
	
		// show list or vehicle
		if (id==0) showList(); else showVehicle();
		adjump=true;
	}
	else document.write('<p>No &lt;div id="autodirector"&gt;&lt;/div&gt; tag can be found. Please check your HTML code.</p>');
}

// ________________________________________________________
// parse URL arguments
function parseArgs() {
	var args=window.location.search;
	if (args!="") {
		args=args.replace(/^\s+/, "");
		args=args.replace(/$\s+/, "");
		args=args.replace(/^\?/, "");
		var arglist=args.split("&");
		var argpair;
		for (var i=0; i<arglist.length; i++) {
			argpair=arglist[i].split("=");
			if (argpair.length==2) {
				switch(argpair[0]) {
					case "id": id=toInt(argpair[1]); break;
					case "ob": ob=toInt(argpair[1]); break;
					case "ps": ps=toInt(argpair[1]); break;
					case "pn": pn=toInt(argpair[1]); break;
					case "sent": sent=toInt(argpair[1]); break;
					case "se": se=argpair[1]; break;
					case "st": st=decodeGet(argpair[1]); break;
				}
			}
		}
	}
}

// ________________________________________________________
// decode an HTTP GET argument
function decodeGet(arg) {
	arg=arg.replace(/%[0-9A-F][0-9A-F]/ig, "");
	arg=arg.replace(/\++/g, "+");
	return arg.toLowerCase();
}

// ________________________________________________________
// show vehicle list
function showList() {
	var doSearch=false;
	var searchBox=false;
	if (searchon && vehiclelist.length>6) searchBox=true;
	sent=0;
	var allcars=vehiclelist.length;
	var numcars;
	if (searchon && st!="") { doSearch=true; ob=-1; numcars=search.length; }
	else numcars=allcars;

	var numpages=Math.floor(numcars/psizes[ps])+1
	if (pn<1) pn=1;
	if (pn>numpages) pn=numpages;
	var carStart=(pn-1)*psizes[ps];
	var carEnd=(pn*psizes[ps])-1;
	if (carEnd>=numcars) carEnd=numcars-1;
	var thisCar;

	// nav box
	var navbox="";

	// ordering
	if (orderbyon) { 
		navbox+='<tr><td class="adnav" style="text-align:right;">order&nbsp;by</td><td class="adnav" style="text-align:left;"><select name="obf" onchange="changeOrder(this);">';
		if (doSearch) navbox+='<option value="0" selected="selected">search results</option>';
		for (i=0; i<oblist.length; i++) {
			navbox+='<option value="'+i+'"'
			if (i==ob) navbox+=' selected="selected"';
			navbox+='>'+oblist[i]+'</option>';
		}
		navbox+='</select></td>';
	}
	else {
		if (searchBox) navbox+='<tr><td colspan="2" class="adnav">&nbsp;</td>';
	}

	// search box
	if (searchBox) {
		navbox+='<td class="adnav" style="text-align:right;">&nbsp;&nbsp;search</td><td class="adnav" style="text-align:left;"><input type="text" name="st" value="'+st+'" size="12" maxlength="30" /><input type="submit" value="go" class="adbutton" /></td></tr>';
	}
	else {
		if (orderbyon) navbox+='<td colspan="3" class="adnav">&nbsp;</td></tr>'
	}

	// show n per page
	if (numcars>psizes[0]) {
		navbox+='<tr><td class="adnav" style="text-align:right;">show</td><td class="adnav" style="text-align:left;"><select name="ps" onchange="changePageSize(this);">';
		for (i=0; i<psizes.length; i++) {
			navbox+='<option value="'+i+'"'
			if (i==ps) navbox+=' selected="selected"';
			navbox+='>'+psizes[i]+'</option>';
		}
		navbox+='</select>&nbsp;per&nbsp;page</td>';
	}
	else {
		if (numpages>1) navbox+='<tr><td colspan="2" class="adnav">&nbsp;</td>';
	}

	// navigation (back/next)
	if (numpages>1) {
		navbox+='<td colspan="2" class="adnav" style="text-align:right;">&nbsp;&nbsp;';
		if (pn>1) navbox+='<a href="javascript:changePage('+(pn-1)+');" class="adlink">&lt;&nbsp;back</a>&nbsp;';
		navbox+='<select name="pnf" onchange="changePage(this[this.selectedIndex].value);">';
		for (i=1; i<=numpages; i++) {
			navbox+='<option value="'+i+'"';
			if (i==pn) navbox+=' selected="selected" style="color:#999999;"';
			navbox+='>page '+i+'</option>';
		}
		navbox+='</select>';
		if (pn<numpages) navbox+='&nbsp;<a href="javascript:changePage('+(pn+1)+');" class="adlink">next&nbsp;&gt;</a>';
		navbox+='</td></tr>';
	}
	else {
		if (numcars>psizes[0]) navbox+='<td colspan="3" class="adnav">&nbsp;</td></tr>';
	}

	// surrounding form and table
	if (navbox!="") navbox='<form action="'+thisURL+'" method="get"><table class="adnavbox">'+navbox+'</table></form>';
	if (carStart>carEnd) navbox="";

	// clear car list
	clearContent(carlist);
	carlist.appendChild(newDOM('<a name="adtop" />'));

	// introduction
	if (navbox!="") {
		var intro='<p class="adtext">'+allcars+' vehicle';
		if (allcars==1) intro+=" is"; else intro+="s are";
		intro+=" available. ";
		if (doSearch) {
			intro+="Your search returned "+numcars+" vehicle";
			if (numcars!=1) intro+="s";
			intro+=". ";
		}
		intro+="Viewing vehicle";
		if (carStart==carEnd) intro+=" "+(carStart+1);
		else intro+="s "+(carStart+1)+" to "+(carEnd+1);
		intro+="...</p>";

		carlist.appendChild(newDOM(intro));
		carlist.appendChild(newDOM(navbox));
	}

	// do all cars on page
	if (carStart>carEnd) {
		if (!doSearch || vehiclelist.length==0) carlist.appendChild(newDOM("<p>No vehicles are currently available.</p>"));
		else {
			carlist.appendChild(newDOM('<p class="adtext">Your search did not return any vehicles.</p><p><a href="javascript:changeOrder();" class="adlink">View all vehicles...</a></p>'));
		}
	}
	else {
		for (var i=carStart; i<=carEnd; i++) {
			if (doSearch) thisCar=vehiclelist[search[i]];
			else {
				if (ob==0) thisCar=vehiclelist[i]; else thisCar=vehiclelist[vorder[ob][i]];
			}
			carlist.appendChild(thisCar.blurb);
		}
	}

	if (navbox!="") carlist.appendChild(newDOM(navbox));
	if (adverton) carlist.appendChild(newDOM(adlink));

	// jump to top of list
	if (adjump) location.href="#adtop";
}

// ________________________________________________________
// change ordering
function changeOrder(field) {
	if (field) ob=field[field.selectedIndex].value;
	else ob=0;
	st="";
	pn=1;
	showList();
}

// ________________________________________________________
// change page size
function changePageSize(field) {
	if (field) ps=field[field.selectedIndex].value;
	showList();
}

// ________________________________________________________
// change page
function changePage(page) {
	pn=page;
	showList();
}

// ________________________________________________________
// show full vehicle details
function showVehicle() {
	clearContent(carlist);
	carlist.appendChild(newDOM('<a name="adtop" />'));
	thisID=findVehicleID(id);

	// form/response
	var form;
	var showTop=true;
	switch(sent) {
		case 1:
			form='<p class="adtext">Thank you for your enquiry. We will contact you soon.</p>';
			break;
		case 2:
			form='<p class="adtext">An error has occurred: this site has not been assigned a name? Please try again later.</p>';
			break;
		case 3:
			form='<p class="adtext">An error has occurred: this site is not currently available? Please try again later.</p>';
			break;
		case 4:
			form='<p class="adtext">An error has occurred: no vehicle name could be identified? However, your enquiry has been sent.';
			if (se!="") form+=' You may wish to email us at <a href="mailto:'+se+'" class="adlink">'+se+'</a> for further information.';
			form+="</p>";
			break;
		case 5:
			form='<p class="adtext">The vehicle you are enquiring about could not be found - it may have been sold? However, your enquiry has been sent.';
			if (se!="") form+=' You may wish to email us at <a href="mailto:'+se+'" class="adlink">'+se+'</a> for further information.';
			form+="</p>";
			break;
		case 6:
			form='<p class="adtext">Unfortunately, we were unable to send your enquiry owing to a technical problem.';
			if (se!="") form+=' Please email us at <a href="mailto:'+se+'" class="adlink">'+se+'</a> with your details.';
			form+="</p>";
			break;
		default:
			form='<form action="'+emailURL+'" method="post" name="adenquiry" onsubmit="return checkEnquiry(this);"><input type="hidden" name="site" value="'+sitename+'" /><input type="hidden" name="id" value="'+id+'" /><input type="hidden" name="url" value="'+thisURL+'" /><input type="hidden" name="opts" value="ob='+ob+'&ps='+ps+'&pn='+pn+'&st='+st+'" />';
			form+='<table class="adform"><tr><td colspan="2" class="adtext" style="text-align:center;">Please complete this form for more<br />information or to arrange a viewing<br /><br /></td></tr><tr><td class="adformq">your name:</td><td class="adforma"><input type="text" name="name" value="" size="20" maxlength="50" class="adformi" /></td></tr><tr><td class="adformq">your email:</td><td class="adforma"><input type="text" name="email" value="" size="20" maxlength="100" class="adformi" /></td></tr><tr><td class="adformq">your telephone:</td><td class="adforma"><input type="text" name="telephone" value="" size="20" maxlength="50" class="adformi" /></td></tr><tr><td colspan="2" class="adformq">your comments:</td></tr><tr><td colspan="2" class="adforma"><textarea name="comments" rows="5" cols="41" class="adformt"></textarea></td></tr><tr><td colspan="2" class="adforma" style="text-align:right;"><input type="submit" value="send enquiry" class="adbutton" /></td></tr></table>';
			form+='</form>';
			showTop=false;
			break;
	}

	// back
	carlist.appendChild(newDOM('<div id="adback"><a href="javascript:id=0;showList()" class="adlink">&lt;&nbsp;back</a></div>'));

	if (thisID>=0 && thisID<vehiclelist.length) {
		// form or results
		if (showTop) carlist.appendChild(newDOM(form));
		// details
		carlist.appendChild(vehiclelist[thisID].details);
		// view update
		if (sent==0) carlist.appendChild(newDOM('<img src="'+viewURL+id+'" width="1" height="1" />'));
		// form or results
		if (!showTop) carlist.appendChild(newDOM(form));
	}
	else {
		// invalid vehicle
		carlist.appendChild(newDOM('<p class="adtext">The vehicle you requested is unavailable. Please click the back link to view all vehicles.</p>'));
	}

	// back
	carlist.appendChild(newDOM('<div id="adback"><a href="javascript:id=0;showList()" class="adlink">&lt;&nbsp;back</a></div>'));

	// advert
	if (adverton) carlist.appendChild(newDOM(adlink));

	// jump to top
	if (adjump) location.href="#adtop";
}

// ________________________________________________________
// check enquiry form
function checkEnquiry(form) {
	noerrs=true;
	if (form.name.value=="") error(form.name, "Please enter your name.");
	var email=form.email.value;
	var vemail=verify_email(email);
	if (email!="" && vemail=="") error(form.email, "Please enter a valid email address.");
	if (email=="" && form.telephone.value.length<6) error(form.email, "Please enter your email address\nor telephone number.");
	if (noerrs) form.email.value=vemail;
	return noerrs;
}

// ________________________________________________________
// show error message
function error(field, errmessage) {
	if (noerrs) { alert(errmessage); field.select(); field.focus(); noerrs=false; }
}

// ________________________________________________________
// find the index of a vehicle
function findVehicleID(thisID) {
	var ret=-1;
	var i=0;
	while (vehiclelist[i].id!=thisID && (i+1)<vehiclelist.length) i++;
	if (vehiclelist[i].id==thisID) ret=i;
	return ret;
}

// ________________________________________________________
// add a new vehicle object
function vehicle(thisID, car, mileage, colour, gearbox, info, price, pics) {
	this.id=thisID;
	this.car=car;
	this.mileage=mileage;
	this.colour=colour;
	this.gearbox=gearbox;
	this.info=info;

if (price =="0") price="sold";
if (price =="1") price="please call";
this.price=price;



	this.pics=pics;
	this.blurb=showBlurb(this);
	this.details=showDetails(this);
}

// generate vehicle blurb
function showBlurb(vehObj) {
	var html='<div id="vehicle'+vehObj.id+'" class="adblurb"><a href="javascript:id='+vehObj.id+';showVehicle();" class="adlink">';
	if (vehObj.pics!="") {
		var pics=vehObj.pics.split(",");
		html+='<img src="'+thumburl+pics[0]+'.jpg" title="'+vehObj.car+'" class="adblurbpic" />';
	}
	html+=vehObj.car+'</a><br />'+vehObj.colour+'<br />'+vehObj.gearbox+'<br />'+vehObj.mileage+'<div class="adblurbprice">';
    if (vehObj.price>"2") html+=''+vehObj.price+'</div></div>';

   if (vehObj.price <"2") html+='ONLY &pound;'+vehObj.price+'</div></div>';
	return newDOM(html);


}

// generate vehicle details
function showDetails(vehObj) {
	var html='<div id="addetails">';
	if (vehObj.pics!="") {
		html+='<div id="adpics">';
		var pics=vehObj.pics.split(",");
		var ptitle;
		for (var i=0; i<pics.length; i++) {
			ptitle=vehObj.car+" picture "+(i+1);
			html+='<a href="javascript:openpic(\''+ptitle+'\',\''+picurl+pics[i]+'.jpg\')"><img src="'+thumburl+pics[i]+'.jpg" title="'+ptitle+'" class="adpic" /></a>';
		}
		html+='</div>';
	}
	html+='<div id="adname">'+vehObj.car+'</div>';
	if (vehObj.colour!="") html+='<div id="adcolour">'+vehObj.colour+'</div>';
	if (vehObj.gearbox!="") html+='<div id="adgearbox">'+vehObj.gearbox+'</div>';
	if (vehObj.mileage!="") html+='<div id="admileage">'+vehObj.mileage+'</div>';
	if (vehObj.info!="") html+='<div id="adinfo">'+vehObj.info.replace(/\|/g,"<br />")+'</div>';

    if (vehObj.price>"2") html+='<div id="adprice">'+vehObj.price+'</div></div>';

   if (vehObj.price <"2") 	html+='<div id="adprice">ONLY &pound;'+vehObj.price+'</div></div>';
	return newDOM(html);
}

// ________________________________________________________
// open a full-size picture
function openpic(ptitle, purl) {
	var posX=0; var posY=0;
	var sWidth=0; var sHeight=0;
	if (screen.availWidth) { sWidth=screen.availWidth; }
	if (screen.availHeight) { sHeight=screen.availHeight; }
	if (sWidth>=picsize && sHeight>=picsize) {
		posX=(sWidth-picsize)/2;
		posY=(sHeight-picsize)/2;
	}
	var win=window.open("", "vehicle", "width="+picsize+",height="+picsize+",toolbar=0,location=0,directories=0,status=0,menuBar=0,scrollBars=0,resizable=0,screenX="+posX+",screenY="+posY+",left="+posX+",top="+posY);
	var doc=win.document;
	doc.clear();
	doc.open();
	doc.write('<html><head><title>'+ptitle+'</title></head><body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0"><table width="100%" height="100%" border="0" cellpadding="0" cellspacing="0"><tr><td align="center" valign="middle"><img src="'+purl+'" alt="'+ptitle+'" /></td></tr></table></body></html>');
	doc.close();
	win.focus();
}

// ________________________________________________________
// clear node content
function clearContent(node) {
	while (node.hasChildNodes()) node.removeChild(node.lastChild);
}

// ________________________________________________________
// DOM creation functions
function newDOM(html) {
	var ret=document.createElement("div");
	if (!(ret.innerHTML=html)) ret.appendChild(document.createTextNode("Browser error. Please use another browser."));
	return ret;
}

// ________________________________________________________
// converts a string to a decimal integer
function toInt(str) {
	var ret=0;
	var state=1;
	// clean string
	str = String(str);
	str = str.replace(/[^0-9-.]/g, "");
	// is this a negative value?
	if (str.charAt(0) == "-") {
		state = -1;
		str = str.replace(/-/g, "");
	}
	// if numeric
	if (!isNaN(str)) {
		// remove leading zeros
		str = str.replace(/^0+/g, "");
		// find integer and convert to correct state
		ret = Math.round(parseFloat(str) * state);
		if (isNaN(ret)) { ret=0; }
	}
	return ret;
}

// ________________________________________________________
// verify email address
function verify_email(email) {
	var noerr=true;
	var valid="abcdefghijklmnopqrstuvwxyz0123456789";
	var validpunc="@.-_";
	var p=0;
	var atcount=0;
	var dat=0;
	var tc, lc;
	email=String(email);
	email=email.toLowerCase();
	do {
		tc=email.charAt(p);
		if (valid.indexOf(tc)<0 && validpunc.indexOf(tc)<0) { noerr=false; }
		if (validpunc.indexOf(tc)>=0) {
			if (p==0 || (p+1)==email.length || validpunc.indexOf(lc)>=0) { noerr=false; }
			if (tc=="@") { atcount++; }
			if (tc=="." && atcount==1) { dat++; }
		}
		lc = tc;
		p++;
	}
	while (p<email.length && noerr==true);

	if (atcount!=1 || dat==0) noerr=false;
	if (!noerr) email = "";
	return email;
}

if (searchon && st!="") { document.write('<scr'+'ipt language="JavaScript"  type="text/javascript" src="http://www.lvmcc.co.uk/listings/carlistsearch.php?site=example&st='+st+'"><\/scr'+'ipt>'); }
else { var search=new Array(0); ADstart(); }
