var setup=[];
setup.cssfile="http://www.mattcardy.co.uk/showroom/client/xp.css";
setup.pagesizes=[5,10,25,50,0];
setup.site="rhdporsche";
setup.locale="GBP";
setup.searchURL="http://www.mattcardy.co.uk/showroom/carlistsearch.php?site=rhdporsche&search=";
setup.viewURL="http://www.mattcardy.co.uk/showroom/viewupdate.php?site=rhdporsche&amp;id=";
setup.emailURL="http://www.mattcardy.co.uk/showroom/emailsales.php?site=rhdporsche&id=";
setup.thumburl="http://www.mattcardy.co.uk/showroom/data/rhdporsche/thumbs/";
setup.picurl="http://www.mattcardy.co.uk/showroom/data/rhdporsche/pics/";
setup.picsize=600;
setup.licprod=true;
setup.showform=true;
setup.adverton=true;
setup.orderbyon=true;
setup.advert="powered by Corrupted Design";
setup.advertURL="http://www.corrupteddesign.com/";

var vehiclelist;
function DefineVehicles() {
	vehiclelist=[];
	vehiclelist[0]=new Vehicle(1, true, 2008, "Porsche 997 GT2 Coupe", 0, "Basalt Black Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER INTRIOR|* 003 CLUBSPORT UPHOLSTERY|* AUTO|* AC CLIMATE CONTROL|* PCM SAT/NAV & PHONE MODULES|* CLUBSPORT PACKAGE  INC SPORTS BUCKET SEATS|* SPORT CHRONO PACK PLUS|* CRUISE CONTROL|* SOUND PACK PLUS|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* RED TAIL LIGHTS|* GUARDS RED SEAT BELTS|* WHEELS PAINTED IN EXTERIOR COLOUR|* 19” ALLOYS|* FLOOR MATS ", 133761, []);
	vehiclelist[1]=new Vehicle(6, true, 2008, "Porsche 997 Turbo Cabriolet", 0, "Carrera White", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* BLACK HOOD|* AUTO A/C CLIMATE CONTROL|* HEATED SEATS|* ADAPTIVE SPORTS SEATS|* CRUISE CONTROL|* PORSCHE COMMUNICATION MANAGEMENT NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* BOSE SOUND|* BI-XENON HEADLIGHTS|* MULTI CD|* THREE SPOKE MULTI FUNCTION STEERING WHEEL|* PARK ASSIST|* FLOOR MATS|* 19” TURBO ALLOYS ", 105677, []);
	vehiclelist[2]=new Vehicle(4, true, 2008, "Porsche 997 Turbo Coupe", 0, "Basalt Black Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE|* SUNROOF|* ADAPTIVE SPORTS SEATS|* HEATED SEATS|* CREST EMBOSSED HEADRESTS|* PCM NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE|* LUS THREE SPOKE MULTI-FUNCTION STEERING WHEEL IN SMOOTH LEATHER|* CRUISE CONTROL|* BOSE SOUND|* MULTI CD|* ALUM LOOK SWITCH PANEL|* SUN VISORS & INTERIOR LIGHT COVERS IN LEATHER|* RED TAIL LIGHTS|* SIDE SKIRTS IN EXTERIOR COLOUR|* S/STEEL DOOR ENTRY GUARDS|* REAR WIPER|* FLOOR MATS|* PARK ASSIST|* 19” TURBO ALLOYS", 94017, []);
	vehiclelist[3]=new Vehicle(5, true, 2008, "Porsche 997 Turbo Coupe", 0, "Atlas Grey Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE|* SUNROOF|* HEATED SEATS|* CREST EMBOSSED HEADRESTS|* PCM NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* THREE SPOKE MULTI-FUNCTION STEERING WHEEL IN SMOOTH LEATHER|* SEAT BELTS IN SILVER GREY|* HOMELINK|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* ALUM HANDBRAKE & GEAR LEVERS|* CRUISE CONTROL|* BOSE SOUND|* MULTI CD|* ALUM LOOK SWITCH PANEL|* SUN VISORS & INTERIOR LIGHT COVERS IN LEATHER|* RED TAIL LIGHTS|* SIDE SKIRTS IN EXTERIOR COLOUR|* S/STEEL DOOR ENTRY GUARDS|* REAR WIPER|* FLOOR MATS|* PARK ASSIST|* 19” TURBO ALLOYS ", 93958, []);
	vehiclelist[4]=new Vehicle(13, true, 2008, "Porsche 997 Turbo Coupe", 0, "Meteor Grey Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL|* SUNROOF|* HEATED SEATS|* ADAPTIVE SPORTS SEATS|* CRUISE CONTROL|* PORSCHE COMMUNICATION MANAGEMENT EXTENDED NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* MULTI CD|* CREST EMBOSSED HEADRESTS|* 3/S/M/F/S/WHEEL|* HOMELINK,  FIRE EXTINGUISHER|* REAR WIPER,  EXTENDED DASHBOARD TRIM PACK IN ALUM LOOK|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SIDE SKIRTS IN EXTERIOR COLOUR|* LEATHER CENTRE CONSOLE|* SUN VISORS IN LEATHER|* DOOR ENTRY GUARDS IN S/STEEL|* CHROME PLATED S/STEEL TAILPIPES|* PARK ASSIST|* FLOOR MATS|* 19” TURBO ALLOYS ", 93762, []);
	vehiclelist[5]=new Vehicle(12, true, 2008, "Porsche 997 Turbo Coupe", 0, "Basalt Black Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL|* SUNROOF|* HEATED SEATS|* ADAPTIVE SPORTS SEATS|* CREST EMBOSSED HEADRESTS|* CRUISE CONTROL|* PORSCHE COMMUNICATION MANAGEMENT NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* MULTI CD,  THREE SPOKE MULTI FUNCTION STEERING WHEEL|* SILVER GREY SEAT BELTS|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SIDE SKIRTS IN EXTERIOR COLOUR|* FIRE EXTINGUISHER|* HOMELINK|* DASHBOARD TRIM PACKAGE IN ALUM LOOK|* ALUM HANDBRAKE & GEAR LEVERS|* SPORT SHIFTER|* SUNVISORS IN LEATHER,  DOOR ENTRY GUARDS IN S/STEEL|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 19” TURBO ALLOYS ", 92060, []);
	vehiclelist[6]=new Vehicle(15, true, 2008, "Porsche 997 C4S Targa", 0, "Basalt Black Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL|* PCM EXTENDED NAVIGATION & PHONE MODULES|* ADAPTIVE SPORTS SEATS|* HEATED SEATS|* SPORT CHRONO PACK|* 3/S/M/F/S/W|* CREST EMBOSSED HEADRESTS|* BOSE SOUND|* MULTI-CD|* CRUISE CONTROL|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SPORTS EXHAUST|* DOOR ENTRY GUARDS IN S/STEEL|* SILVER GREY SEAT BELTS|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 5MM WHEEL SPACERS|* 19” TURBO ALLOYS", 77166, []);
	vehiclelist[7]=new Vehicle(19, false, 2009, "Porsche Cayenne Turbo 4.8L V8", 100, "basalt black", "tiptronic", "Havanna/Sand Beige Leather Interior|Electronically Controlled Rear Axle Differential Lock,|Rocker Panel Protection W/ Integrated Skid Plates, Reinforced Engine Skid Plate, Additional Fuel Tank And Rear Axle Protection, 2nd Tow Lug|Stainless Steel Nose And Tail End Trim|Running Board With Integrated Under-Ride Protection|Panoramic Roof System|Porsche Entry &amp; Drive|Privacy Glass (Dark Tinted Glass On Rear And Rear Side Windows)|Exterior-Package Black Monochrome (Including Side Window Frames Cover Of The B- And C-Pillar Lid Moulding, Door Handles Without Inlay, Door Sill Trim Moulding Black)|Front And Rear Floor Mats (Velvet)|Interior Colors With Color-Matched Nubuk Edge And Porsche Emblem|Sport Seats In Front With Expanded Memory Function Smooth Leather|Telephone Module For PCM W/O Active Receiver|We export all across the Globe, therefore the UK VAT, Import Duty, SVA and Registration are not included in this price. If you're interested in buying in volume or just buying one unit, please call 0207 993 8447 from the UK or +44 207 993 8447 or email us using the form below.", 77000, []);
	vehiclelist[8]=new Vehicle(16, true, 2008, "Porsche 997 C4S Coupe", 0, "GT Silver Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* SPECIAL ORDER COCOA LEATHER|* AUTO A/C CLIMATE CONTROL|* SUNROOF|* PCM EXTENDED NAVIGATION& PHONE MODULES|* SPORTS SEATS|* HEATED SEATS|* SPORT CHRONO PACK|* 3/S/M/F/S/W|* CREST EMBOSSED HEADRESTS|* BOSE SOUND|* MULTI-CD|* EXTENDED DASHBOARD TRIM PACKAGE IN ALUM LOOK|* INTERIOR LIGHT SURROUND IN LEATHER|* EXTENDED DOOR TRIM PACKAGE IN CARBON|* CRUISE CONTROL|* CARBON CENTRE CONSOLE|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SPORTS EXHAUST|* OUTER DOOR SILL QUADS IN CARBON|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 5MM WHEEL SPACERS|* 19” SPORT DESIGN ALLOYS with COLOUR CRESTS ", 76315, []);
	vehiclelist[9]=new Vehicle(2, true, 2008, "Porsche 997 C4S Cabriolet", 0, "Basalt Black Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* BLACK HOOD|*  AUTO CLIMATE CONTROL|*  WIND DEFLECTOR|*  ELECTRICALLY ADJUSTABLE SEATS|*  HEATED SEATS|*  PCM EXTENDED NAVIGATION MODULE & PHONE|*  SPORT CHRONO PACKAGE|*  3/S/M/F/S/W|*  BOSE SOUND|*  MULTI-CD|*  LEATHER EDGED FLOOR MATS|*  PARK ASSIST|*  19” TURBO ALLOYS  ", 76166, []);
	vehiclelist[10]=new Vehicle(3, true, 2008, "Porsche 997 C4S Cabriolet", 0, "Meteor Grey Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* BLACK HOOD|*  AUTO CLIMATE CONTROL|*  WIND DEFLECTOR|*  ELECTRICALLY ADJUSTABLE SEATS|*  HEATED SEATS|*  PCM EXTENDED NAVIGATION MODULE & PHONE|*  SPORT CHRONO PACKAGE|*  3/S/M/F/S/W|*  BOSE SOUND|*  MULTI-CD|*  LEATHER EDGED FLOOR MATS|*  PARK ASSIST|*  19” TURBO ALLOYS  ", 76166, []);
	vehiclelist[11]=new Vehicle(18, true, 2008, "Porsche 997 C4S Coupe", 0, "Meteor Grey Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL,  SUNROOF|* PCM EXTENDED NAVIGATION & PHONE MODULES|* SPORTS SEATS|* HEATED SEATS|* CREST EMBOSSED HEADRESTS|* THREE SPOKE MULTI-FUNCTION STEERING WHEEL IN SMOOTH LEATHER|* CRUISE CONTROL|* SPORT CHRONO PACKAGE PLUS|* BOSE SOUND|* MULTI CD|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SPORTS EXHAUST|* 5MM WHEEL SPACERS|* INTERIOR LIGHT COVER IN LEATHER|* EXTENDED CARBON PACK INC. SWITCH PANEL|* REAR CENTRE CONSOLE|* DOOR FINISHERS|* DOOR ENTRY GUARDS|* FLOOR MATS|* PARK ASSIST|* REAR WIPER|* 19” SPORT DESIGN ALLOYS PAINTED IN EXTERIOR COLOUR ", 75634, []);
	vehiclelist[12]=new Vehicle(11, true, 2008, "Porsche 997 C4S Coupe", 0, "Basalt Black Metallic", "tiptronic", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL|* SUNROOF|* PCM EXTENDED NAVIGATION & PHONE MODULES|* ADAPTIVE SPORTS SEATS|* HEATED SEATS|* SPORT CHRONO PACK|* 3/S/M/F/S/W|* CREST EMBOSSED HEADRESTS|* BOSE SOUND|* MULTI-CD|* CRUISE CONTROL|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* INTERIOR LIGHT SURROUND IN LEATHER|* CHROME PLATED S/STEEL TAILPIPES|* DOOR ENTRY GUARDS IN S/STEEL|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 5MM WHEEL SPACERS|* 19” SPORT DESIGN ALLOYS with COLOUR CRESTS", 74187, []);
	vehiclelist[13]=new Vehicle(14, true, 2008, "Porsche 997 C4S Coupe", 0, "Basalt Black Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTRO,L SUNROOF|* PCM EXTENDED NAVIGATION & PHONE MODULES|* ADAPTIVE SPORTS SEATS|* HEATED SEATS|* SPORT CHRONO PACK|* 3/S/M/F/S/W|* CREST EMBOSSED HEADRESTS|* BOSE SOUND|* MULTI-CD|* EXTENDED TRIM PACKAGE IN ALUM LOOK|* ALUM HANDBRAKE & GEAR LEVERS|* CRUISE CONTROL|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SPORTS EXHAUST|* SPORT SHIFTER|* DOOR ENTRY GUARDS IN S/STEEL|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 5MM WHEEL SPACERS|* 19” SPORT DESIGN ALLOYS with COLOUR CRESTS", 74017, []);
	vehiclelist[14]=new Vehicle(17, true, 2008, "Porsche 997 C4S Coupe", 0, "Meteor Grey Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL,  SUNROOF|* PCM EXTENDED NAVIGATION & PHONE MODULES|* ADAPTIVE SPORTS SEATS|* HEATED SEATS|* CREST EMBOSSED HEADRESTS|* SILVER GREY SEAT BELTS|* THREE SPOKE MULTI-FUNCTION STEERING WHEEL IN ALUM LOOK|* CRUISE CONTROL|* SPORT CHRONO PACKAGE PLUS|* BOSE SOUND|* MULTI CD|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* SPORTS EXHAUST|* 5MM WHEEL SPACERS|* ALUM LOOK SWITCH PANEL|* S/STEEL DOOR ENTRY GUARDS|* FLOOR MATS|* PARK ASSIST|* REAR WIPER|* 19” CARRERA CLASSIC ALLOYS", 73677, []);
	vehiclelist[15]=new Vehicle(10, true, 2008, "Porsche 997 C2S Coupe", 0, "Basalt Black Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* BLACK LEATHER|* AUTO A/C CLIMATE CONTROL|* PCM EXTENDED NAVIGATIO & PHONE MODULES|* ELECTRICALLY ADJUSTABLE SEATS|* HEATED SEATS|* SPORT CHRONO PACK|* 3/S/M/F/S/W|* CREST EMBOSSED HEADRESTS|* BOSE SOUND|* MULTI-CD|* AUTO DIMMING MIRRORS|* RAIN SENSOR|* CHROME/S/STEEL TAILPIPES|* DOOR ENTRY GUARDS IN S/STEEL|* REAR WIPER|* PARK ASSIST|* FLOOR MATS|* 19” CARRERA CLASSIC ALLOYS with COLOUR CRESTS ", 66528, []);
	vehiclelist[16]=new Vehicle(21, false, 2009, "Porsche Cayenne GTS", 100, "meteor grey metallic", "tiptronic", "C9N 21” Sport Plus Wheel|9VL Bose Sound System|7X8 Rear View Camera|3Y4 Sunblind for Rear Windows|4E7 Powerlift Gate|9W1 Telephone module without active receiver|4F2 Porsche Entry &amp; Drive System|PF2 Porsche Communication Management (PCM) incl. Navigation Module|We export all across the Globe, therefore the UK VAT, Import Duty, SVA and Registration are not included in this price. If you're interested in buying in volume or just buying one unit, please call 0207 993 8447 from the UK or +44 207 993 8447 or email us using the form below.", 65000, []);
	vehiclelist[17]=new Vehicle(22, false, 2009, "Porsche Cayenne S 4.8L V8", 0, "meteor grey metallic", "tiptronic", "9VL Bose Sound System|7X8 Rear View Camera|3Y4 Sunblind for Rear Windows|4E7 Powerlift Gate|9W1 Telephone module without active receiver|4F2 Porsche Entry &amp; Drive System|PF2 Porsche Communication Management (PCM) incl. Navigation Module|We export all across the Globe, therefore the UK VAT, Import Duty, SVA and Registration are not included in this price. If you're interested in buying in volume or just buying one unit, please call 0207 993 8447 from the UK or +44 207 993 8447 or email us using the form below.", 55000, []);
	vehiclelist[18]=new Vehicle(7, true, 2008, "Porsche Boxster RS 60 Spyder", 0, "GT Silver Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* NATURAL LEATHER IN CARRERA RED|* RED HOOD|* AUTO A/C CLIMATE CONTROL|* WIND DEFLECTOR|* STORAGE BOX|* ADAPTIVE SPORTS SEATS|* PCM EXTENDED NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* CRUISE CONTROL|* SPORT SHIFTER|* S/STEEL DOOR ENTRY GUARDS|* PARK ASSIST|* FLOOR MATS|* 19” SPORT DESIGN ALLOYS with COLOUR CRESTS", 45421, []);
	vehiclelist[19]=new Vehicle(8, true, 2008, "Porsche Boxster RS 60 Spyder", 0, "GT Silver Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* NATURAL LEATHER IN CARRERA RED|* RED HOOD|* AUTO A/C CLIMATE CONTROL|* HEATED SEATS|* WIND DEFLECTOR|* PCM EXTENDED NAVIGATION & PHONE MODULES|* SPORT CHRONO PACKAGE PLUS|* MULTI CD|* FLOOR MATS|* 19” SPORT DESIGN ALLOYS", 44400, []);
	vehiclelist[20]=new Vehicle(9, true, 2008, "Porsche Boxster RS 60 Spyder", 0, "GT Silver Metallic", "manual", "- Description|RHD with COC, Price is net of VAT and ready for UK buyer or Export is welcome|- Features|* NATURAL LEATHER IN BLACK|* BLACK HOOD|* AUTO A/C CLIMATE CONTROL|* WIND DEFLECTOR|* PCM EXTENDED NAVIGATION & PHONE MODULES|* SPORTS SEATS WITH PAINTED SEAT BACKS IN EXTERIOR COLOUR|* SPORT CHRONO PACKAGE PLUS|* SPORT SHIFTER|* CRUISE CONTROL|* STORAGE BOX|* S/STEEL DOOR ENTRY GUARDS|* PARK ASSIST|* FLOOR MATS|* 19” SPORT DESIGN ALLOYS with COLOUR CRESTS", 44400, []);
	vehiclelist[21]=new Vehicle(20, false, 2009, "Porsche Cayenne 3.6L V6", 0, "basalt black metallic", "tiptronic", "3FE Moonroof|3Y4 Sunblind on rear side windows|4E7 Power Liftgate|7X2 Front and Rear Park Assist|PC2 Bi-Xenon lighting system|1N3 Servotronic (Variable Power Assist Steering)|9AD Automatic Air Conditioning System|PG1 Driver Memory Package|7D7 Six disc CD changer|0TD Floor Mats|8T1 Cruise Control|3J7 Porsche Crest embossed on head restraints|1NP Wheel hub covers with colored crest|We export all across the Globe, therefore the UK VAT, Import Duty, SVA and Registration are not included in this price. If you're interested in buying in volume or just buying one unit, please call 0207 993 8447 from the UK or +44 207 993 8447 or email us using the form below.", 42000, []);
}
setup.searchon=true;



// Client JavaScript, (C)AutoDirector
var run=[];setup.comlimit=1000;setup.timeout=10000;setup.thisURL=location.protocol+"//"+location.host+(location.port!='' ? ":"+location.port:"")+location.pathname;setup.activesearch=false;setup.JSsearch=null;setup.activesend=false;setup.JSsend=null;setup.senderror='';setup.salesemail='';setup.divs=['licence','search','jumptop','list','jumpend','backtop','vehicle','enqresult','enquiry','backend','sponsor'];
if(setup.orderbyon||setup.searchon){setup.Tsearch='<form id="adsearch" action="'+setup.thisURL+'" method="get"><fieldset><legend>search</legend>'
setup.Tsearch+='<div class="order"><label for="adorderby" title="change the vehicle order">order by:</label><select id="adorderby" name="adorderby"></select></div>';
if(setup.searchon) setup.Tsearch+='<div class="search"><label for="adsearchterm" title="search for a vehicle">search:</label><input id="adsearchterm" name="adsearchterm" type="text" size="20" maxlength="50" /><input type="submit" value="go" class="button" /></div>';
setup.Tsearch+='</fieldset></form>';}
else setup.Tsearch='';
setup.Tlist='<a id="ad_id[id]" href="#" title="click for more details...">[pic]<dl><dt class="model">model:</dt><dd class="model">[newcar] [year] [model]</dd><dt class="colour">'+(setup.locale=='USD' ? 'color':'colour')+':</dt><dd class="colour">[colour]</dd><dt class="gearbox">'+(setup.locale=='USD' ? 'transmission':'gearbox')+':</dt><dd class="gearbox">[gearbox]</dd><dt class="mileage">mileage:</dt><dd class="mileage">[mileage]</dd></dl><div class="price">[price]</div></a>';
setup.Tlistnone='<p>No vehicles are available at this time. Please return later.</p>';
setup.Tdetail='[pics]<dl><dt class="model">model:</dt><dd class="model">[newcar] [year] [model]</dd><dt class="colour">'+(setup.locale=='USD' ? 'color':'colour')+':</dt><dd class="colour">[colour]</dd><dt class="gearbox">'+(setup.locale=='USD' ? 'transmission':'gearbox')+':</dt><dd class="gearbox">[gearbox]</dd><dt class="mileage">mileage:</dt><dd class="mileage">[mileage]</dd><dt class="details">details:</dt><dd class="details">[info]</dd></dl><div class="price">[price]</div><img src="'+setup.viewURL+'[id]" class="count" />';
setup.Tdetailnone='The vehicle you requested is not available. Please return to the showroom.';
setup.Tenquiry='<form id="adenquiry" action="'+setup.thisURL+'" method="get"><fieldset><legend>contact us about this vehicle</legend><div><label for="adname" title="enter your name">name:</label><input id="adname" name="adname" type="text" size="20" maxlength="50" /></div><div><label for="ademail" title="enter your email address">email:</label><input id="ademail" name="ademail" type="text" size="20" maxlength="100" /></div><div><label for="adtel" title="enter your telephone number">telephone:</label><input id="adtel" name="adtel" type="text" size="20" maxlength="20" /></div><div><label for="adcomments" title="enter any questions or comments">questions:</label><textarea id="adcomments" name="adcomments" rows="4" cols="20"></textarea></div><div><input type="submit" value="send enquiry" class="button" /></div></fieldset></form>';
setup.Tback='<a href="#">&lt; back to the showroom</a>';
setup.Tsponsor="";
if(setup.adverton!=""){setup.Tsponsor+=setup.advert;
if(setup.advertURL !="") setup.Tsponsor='<a href="'+setup.advertURL+'">'+setup.Tsponsor+'</a>';}
setup.Tunlic='This showroom is powered by an unlicenced trial copy of AutoDirector. You may evaluate the AutoDirector system for 30 days. To remove this message, please visit <a href="http://www.autodirector.co.uk/">http://www.autodirector.co.uk/</a> and purchase a licence key.';
var sortTypes=[];var st=0;
sortTypes[st++]={name: "price, highest first", sort: function(a, b){return SortCars(a.price, b.price, -1);}}
sortTypes[st++]={name: "price, lowest first", sort: function(a, b){return SortCars(a.price, b.price, 1);}}
sortTypes[st++]={name: "make/model, A to Z", sort: function(a, b){return SortCars(a.model, b.model, 1);}}
sortTypes[st++]={name: "make/model, Z to A", sort: function(a, b){return SortCars(a.model, b.model, -1);}}
sortTypes[st++]={name: "year, youngest first", sort: function(a, b){return SortCars(a.year, b.year, -1);}}
sortTypes[st++]={name: "year, oldest first", sort: function(a, b){return SortCars(a.year, b.year, 1);}}
sortTypes[st++]={name: "mileage, lowest first", sort: function(a, b){return SortCars(a.mileage, b.mileage, 1);}}
sortTypes[st++]={name: "mileage, highest first", sort: function(a, b){return SortCars(a.mileage, b.mileage, -1);}}
sortTypes[st++]={name: "search result", sort: function(a, b){return SortCars(a.searchrank, b.searchrank, -1);}}
sortTypes[st++]={name: "search (reversed)", sort: function(a, b){return SortCars(a.searchrank, b.searchrank, 1);}}
function SortCars(a, b, asc){if(a<b) return -1*asc;if(a>b) return 1*asc;return 0;}
function ADstart(){if(setup.cssfile!="") DOM.LoadCSS(setup.cssfile);
setup.adnode=DOM.Id("autodirector");DefineVehicles();DefineDefaults();DefineNodes();var list=run.list;
if(!setup.orderbyon&&!setup.searchon) ShowVehicleList();
else{var adorderby=DOM.Id("adorderby");
var adsearchterm=DOM.Id("adsearchterm");
if(adsearchterm&&run.searchresult==null){list=true;adsearchterm.value=run.search;run.search="";EventSearchSubmit();}
else if(adorderby){var page=run.thispage;adorderby.value=run.orderby;EventChangeOrder();
if(run.thispage!=page){run.thispage=page;ShowVehicleList();}}}
if(!list&&run.ID>0){var id=run.ID;run.ID=0;ShowVehicle(id);}
else run.ID=0;}
function DefineDefaults(){var adcs=[];adcs.LoadAll("adcs");
var adqs=HTTParguments();var Define=function(name, def){var ret=def;if(adcs.Exists(name)) ret=adcs[name];if(adqs.Exists(name)) ret=adqs[name];
return ret;}
run.ID=Define("id", 0).toInt();run.list=(Define("list", true)==true);
if(run.ID>0&&run.list==true&&adqs.Exists('id')&&!adqs.Exists('list')) run.list=false;
run.orderby=Define("orderby", 0).toInt();run.pagesize=Define("pagesize", setup.pagesizes[0]).toInt();run.thispage=Define("thispage", 1).toInt();run.name=Define("name", "");run.email=Define("email", "");run.tel=Define("tel", "");run.comments=Define("comments", "");run.scrollpos=Define("scrollpos", 0).toInt();
var sext=(adqs.Exists("search") ? adqs.search:"");var sint=(adcs.Exists("search") ? adcs.search:"");if(sext!=""&&setup.searchon){run.orderby=(setup.orderbyon ? sortTypes.length-2:0);run.list=true;}
if(sext!=""&&sext!=sint){run.search=sext;run.searchresult=null;}
else{run.search=sint;run.searchresult=Define("searchresult", "");
if(run.searchresult!="") run.searchresult=run.searchresult.split(',');
else for(var v=0;v<vehiclelist.length;v++) run.searchresult[v]=vehiclelist[v].id;
UpdateSearchResult();}}
function SaveDefaults(){run.StoreAll("adcs");}
function DefineNodes(){DOM.RemoveChildren(setup.adnode);
var node;for(var i=0;i<setup.divs.length;i++){node=document.createElement("div");
node.id="autodirector_"+setup.divs[i];setup["node"+setup.divs[i]]=setup.adnode.appendChild(node);setup["node"+setup.divs[i]].style.display="none";}
if(!setup[String.fromCharCode(108,105,99,112,114,111,100)]){var unl=setup[String.fromCharCode(84,117,110,108,105,99)];
var unn=setup['node'+'li'+'ce'+'nce'];
if(unl.substr(31,5)=='un'+'li'+'c') DOM.NodeAdd(unn, unl);
else DOM.NodeAdd(unn, String.fromCharCode(85,78,76,73,67,69,78,67,69,68));
var us=unn.style;
us.position="static";us.display="block";us.visibility="visible";
us.width="auto";us.height="auto";
us.fontSize="1.2em";us.fontWeight="bold";us.textAlign="center";
us.padding="0.5em";us.marginBottom="0.5em";
us.color='#c00';us.backgroundColor='#ffc';us.border='3px solid #c00';}
if(setup.orderbyon||setup.searchon){DOM.NodeAdd(setup.nodesearch, setup.Tsearch);
var adorderby=DOM.Id("adorderby");
if(adorderby){var opt;for(var s=(setup.orderbyon ? 0:sortTypes.length-2);s<sortTypes.length - (setup.searchon ? 0:2);s++){opt=document.createElement("option");
opt.setAttribute("value", s);
opt.appendChild(document.createTextNode(sortTypes[s].name));
adorderby.appendChild(opt);}
adorderby.value=run.orderby;
new Event(adorderby, "change", EventChangeOrder);}
var adsearch=DOM.Id("adsearch");
if(adsearch) new Event(adsearch, "submit", EventSearchSubmit);}
if(setup.showform){DOM.NodeAdd(setup.nodeenquiry, setup.Tenquiry);
DOM.Id("adname").value=run.name;DOM.Id("ademail").value=run.email;DOM.Id("adtel").value=run.tel;DOM.Id("adcomments").value=run.comments;
new Event(DOM.Id("adenquiry"), "submit", EventSendEnquiry);new Event(DOM.Id("adcomments"), "keypress", EventLimitComments);}
DOM.NodeAdd(setup.nodebacktop, setup.Tback);DOM.NodeAdd(setup.nodebackend, setup.Tback);
if(setup.Tsponsor!=""){DOM.NodeAdd(setup.nodesponsor, setup.Tsponsor);setup.nodesponsor.style.display="block";}
new Event(setup.nodelist, "click", EventVehicleClick);new Event(setup.nodejumptop, "click", EventPageClick);new Event(setup.nodejumpend, "click", EventPageClick);new Event(setup.nodevehicle, "click", EventVehicleImageClick);new Event(DOM.Tags("a", setup.nodebacktop)[0], "click", EventBackClick);
new Event(DOM.Tags("a", setup.nodebackend)[0], "click", EventBackClick);}
function ShowVehicleList(render){run.list=true;render=(render !== false);var show="list";
if(vehiclelist.length>0){if(setup.orderbyon||setup.searchon) show+=",search";show+=",jumptop,jumpend";
var pages=Math.floor((vehiclelist.length-1) / run.pagesize)+1;
if(run.thispage>pages) run.thispage=pages;
if(render){var vs=(run.thispage-1) * run.pagesize;
var ve=vs+run.pagesize-1;
if(ve>vehiclelist.length-1) ve=vehiclelist.length-1;
var list="";
for(var v=vs;v<=ve;v++) list+=vehiclelist[v].Replace(setup.Tlist);
DOM.NodeAdd(setup.nodelist, list, true);
var pagelist='<p>'+vehiclelist.length+' vehicle'+(vehiclelist.length>1 ? 's':'')+': show ';
for(var s=0;s<setup.pagesizes.length;s++){pagelist+='<a href="#*'+setup.pagesizes[s]+'"'+(run.pagesize==setup.pagesizes[s] ? ' class="active"':'')+'>'+setup.pagesizes[s]+'</a>';
if(s+2<=setup.pagesizes.length) pagelist+=(s+2==setup.pagesizes.length ? ' or ':', ');}
pagelist+=" per page</p>";
if(pages>1){pagelist+="<ol>";
if(run.thispage>1) pagelist+='<li><a href="#-1" class="back" title="previous page">&lt;back</a></li>';
for(var p=1;p<=pages;p++){pagelist+='<li><a href="#'+p+'" title="page '+p+'"'
if(p==run.thispage) pagelist+=' class="active"';
pagelist+='>'+p+'</a></li>';}
if(run.thispage<pages) pagelist+='<li><a href="#+1" class="next" title="next page">next &gt;</a></li>';
pagelist+="</ol>";}
DOM.NodeAdd(setup.nodejumptop, pagelist, true);
DOM.NodeAdd(setup.nodejumpend, pagelist, true);}}
else{if(render) DOM.NodeAdd(setup.nodelist, setup.Tlistnone, true);}
ShowNodes(show);
SaveDefaults();}
function ShowVehicle(id){run.list=false;
var show='vehicle,backtop,backend';
var sform=setup.showform;
if(id!=run.ID){run.ID=id;
var vIndex=VehicleIndex(id);
if(vIndex>=0) DOM.NodeAdd(setup.nodevehicle, vehiclelist[vIndex].Replace(setup.Tdetail), true);
else{run.ID=0;
DOM.NodeAdd(setup.nodevehicle, setup.Tdetailnone, true);
sform=false;}}
if(sform) show+=',enquiry';
ShowNodes(show);Graphic.PositionViewport("autodirector", 0, 30);SaveDefaults();}
function ShowNodes(list){for(var n=1;n<setup.divs.length-1;n++) setup["node"+setup.divs[n]].style.display=(list.indexOf(setup.divs[n])>=0 ? "block":"none");}
function VehicleIndex(id){var i=0;
while (id!=vehiclelist[i].id&&i<vehiclelist.length-1) i++;
return (vehiclelist[i].id==id ? i:-1);}
function UpdateSearchResult(){vehiclelist.sort(sortTypes[0].sort);
var nv=vehiclelist.length;var vi;
for(var v=0;v<nv;v++){vi=0;
while (vehiclelist[v].id!=run.searchresult[vi]&&vi<run.searchresult.length) vi++;
vehiclelist[v].searchrank=(vehiclelist[v].id==run.searchresult[vi] ? nv-vi:-v);}}
function Vehicle(id, newcar, year, model, mileage, colour, gearbox, info, price, pics){this.id=id;
this.newcar=(newcar ? "NEW":"");
this.year=year.toInt();
this.model=model;
this.mileage=mileage.toInt();
this.colour=(colour!="" ? colour:"&nbsp;");
this.gearbox=(gearbox!="" ? gearbox:"&nbsp;");
this.info="|"+info+"|";
this.info=reRepeat(this.info, /\|\-+\|/g, "|<hr />|");
this.info=reRepeat(this.info, /\|-([^\|]+)\|/g, "|<h2>$1</h2>|");
this.info=reRepeat(this.info, /\_([^\|]+)\_/g, "{{strong}}$1{{/strong}}");
this.info=reRepeat(this.info, /!\(([^\||\(]+)\)/g, '{{img src="$1" /}}');
this.info=reRepeat(this.info, /\[([^\||\[]+)\]\(\(([^\||\(]+)\)\)/g, '{{a href="$2"}}$1{{/a}}');
this.info=reRepeat(this.info, /\(\(([^\||\(]+)\)\)/g, '{{a href="$1"}}$1{{/a}}');
this.info=reRepeat(this.info, /\|\*([^\|]+)\|/g, "|<li>$1</li>|");
this.info=reRepeat(this.info, /\|\+([^\|]+)\|/g, "|<liN>$1</liN>|");
this.info=reRepeat(this.info, /\|([^\<][^\|]+)\|/g, "|<p>$1</p>|");
this.info=reRepeat(this.info, /<\/li>\|<li>/g, "</li><li>");
this.info=reRepeat(this.info, /<\/liN>\|<liN>/g, "</liN><liN>");
this.info=reRepeat(this.info, /\|(<li>[^\|]+<\/li>)\|/g, "|<ul>$1</ul>|");
this.info=reRepeat(this.info, /\|(<liN>[^\|]+<\/liN>)\|/g, "|<ol>$1</ol>|");
this.info=reRepeat(this.info, /liN>/g, "li>");
this.info=reRepeat(this.info, /\{\{/g, "<");
this.info=reRepeat(this.info, /\}\}/g, ">");
this.info=reRepeat(this.info, /\|/g, "");
this.price=(price!=null ? price.toInt():null);
this.pics=pics;
this.searchrank=0;}
function reRepeat(str, regex, rep){var ostr;
do {ostr=str;str=str.replace(regex, rep);} while (str!=ostr);
return str;}
Vehicle.prototype.Replace=function(template){template=template.replace(/\[id\]/gi, this.id);
template=template.replace(/\[newcar\]/gi, this.newcar);
template=template.replace(/\[year\]/gi, this.year);
template=template.replace(/\[model\]/gi, this.model);
template=template.replace(/\[mileage\]/gi, this.mileage.format(0)+" miles");
template=template.replace(/\[colour\]/gi, this.colour);
template=template.replace(/\[gearbox\]/gi, this.gearbox);
template=template.replace(/\[info\]/gi, this.info);
var price;
switch(this.price){case null: price="sold";break;
case 1: price="please call";break;
default: price=this.price.format(0,true);}
template=template.replace(/\[price\]/gi, price);
if(this.pics.length>0){template=template.replace(/\[pic\]/gi, '<img src="'+setup.thumburl+this.pics[0]+'.jpg" title="'+this.model+'" />');
var pics="<ol>";
for(var p=0;p<this.pics.length;p++) pics+='<li><img src="'+setup.thumburl+this.pics[p]+'.jpg" alt="'+this.model+' picture" title="'+this.model+' picture '+(p+1)+' - click to enlarge..." /></li>';
pics+="</ol>";
template=template.replace(/\[pics\]/gi, pics);}
else{template=template.replace(/\[pic\]/gi, '');
template=template.replace(/\[pics\]/gi, '');}
return template;}
function EventVehicleClick(evt){evt.Raised.StopDefaultAction();
run.scrollpos=Graphic.ViewportScrollY();
var node=DOM.ParentFind(evt.Raised.Element, "a");
var id=(node ? String(node.id).substr(5).toInt():0);
if(id>0) ShowVehicle(id);}
function EventChangeOrder(evt){if(evt) evt.Raised.StopDefaultAction();
var adorderby=DOM.Id("adorderby");
if(adorderby){Graphic.ClassApply(adorderby.parentNode, "active");
run.orderby=adorderby.value;
vehiclelist.sort(sortTypes[run.orderby].sort);
var adsearchterm=DOM.Id("adsearchterm");
if(adsearchterm){if(run.orderby>=sortTypes.length-2) adsearchterm.value=run.search;
else adsearchterm.value="";}
run.thispage=1;
ShowVehicleList();
Graphic.ClassRemove(adorderby.parentNode, "active");
Graphic.PositionViewport("autodirector", 0, 30);}}
function EventSearchSubmit(evt){if(evt) evt.Raised.StopDefaultAction();
var adsearchterm=DOM.Id("adsearchterm");
if(!setup.activesearch&&adsearchterm){var sterm=adsearchterm.value.Clean();
if(sterm.length>0){if(sterm==run.search){DOM.Id("adorderby").value=sortTypes.length-2;
EventChangeOrder();}
else{setup.activesearch=true;
run.search=sterm;
adsearchterm.value=run.search;
Graphic.ClassApply(adsearchterm.parentNode, "active");
if(setup.JSsearch) DOM.HeadRemove(setup.JSsearch);
setup.JSsearch=DOM.LoadJS(setup.searchURL+escape(run.search)+"&callback=EventSearchResult()");
setTimeout(EventSearchTimeout, setup.timeout);}}}}
function EventSearchResult(){SearchReset();
UpdateSearchResult();
DOM.Id("adorderby").value=sortTypes.length-2;
EventChangeOrder();}
function EventSearchTimeout(){if(setup.activesearch){SearchReset();
DOM.HeadRemove(setup.JSsearch);
setup.JSsearch=null;
run.search="";
alert("Sorry, but your search is taking too long.\nPlease try again later.");}}
function SearchReset(){Graphic.ClassRemove(DOM.Id("adsearchterm").parentNode, "active");
setup.activesearch=false;}
function EventPageClick(evt){evt.Raised.StopDefaultAction();
var node=DOM.ParentFind(evt.Raised.Element, "a");
if(node){var href=node.getAttribute("href");
var h=href.lastIndexOf("#");
if(h>=0){var num=href.substr(h+1);
var sign=num.charAt(0);
var ps=(sign=="*");
var inc=(sign=="-"||sign=="+");
num=num.toInt();
if(ps){if(num!=run.pagesize){run.pagesize=num;
ShowVehicleList();}}
else{var newpage=(inc ? run.thispage+num:num);
if(run.thispage!=newpage){run.thispage=newpage;
ShowVehicleList();
Graphic.PositionViewport("autodirector", 0, 30);}}}}}
function EventVehicleImageClick(evt){var eNode=evt.Raised.Element;
if(eNode.nodeName.toLowerCase()!="a"&&eNode.parentNode.nodeName.toLowerCase()!="a"){evt.Raised.StopDefaultAction();
if(eNode.nodeName.toLowerCase()=="img"&&eNode.title) PopupImage(String(eNode.src).replace(new RegExp(setup.thumburl), setup.picurl));}}
function EventBackClick(evt){evt.Raised.StopDefaultAction();
if(!setup.activesend) ShowVehicleList(false);
window.scrollTo(0, run.scrollpos);}
function EventSendEnquiry(evt){evt.Raised.StopDefaultAction();
if(!setup.activesend){var msg="";
var hl=false;var nComments=DOM.Id("adcomments");run.comments=nComments.value.Trim().replace(/\r/g, "").replace(/\n/g, "\n");var oc;
do{oc=run.comments;
run.comments=run.comments.replace(/\n\n/g, "\n");} while (run.comments!=oc);
run.comments=run.comments.substr(0, setup.comlimit);
nComments.value=run.comments;
var nTel=DOM.Id("adtel");
run.tel=nTel.value.Trim();nTel.value=run.tel;
var nEmail=DOM.Id("ademail");
run.email=nEmail.value;
if(run.email!=""){run.email=verify_email(run.email);
if(run.email==""){msg="\t - a valid email address\n"+msg;hl=nEmail;}
else nEmail.value=run.email;}
if(run.email==""&&run.tel==""&&msg==""){msg=" - an email address or telephone number";hl=nEmail;}
var nName=DOM.Id("adname");
run.name=nName.value.Clean();nName.value=run.name;
if(run.name.length<4){msg=" - your name\n"+msg;hl=nName}
if(hl){alert("Please enter:\n"+msg);
try {hl.select();} catch(e){}
try {hl.focus();} catch(e){}}
else{setup.activesend=true;
setup.nodeenquiry.style.display="none";
Graphic.ClassApply(setup.nodeenqresult, "active");
DOM.SetText(setup.nodeenqresult, "sending your enquiry...");
setup.nodeenqresult.style.display="block";
var send=setup.emailURL+run.ID;
send+="&callback=EventSendResult()";
send+="&url="+escape(setup.thisURL);
send+="&name="+escape(run.name);
send+=(run.email!="" ? "&email="+escape(run.email):"");
send+=(run.tel!="" ? "&tel="+escape(run.tel):"");
send+=(run.comments!="" ? "&comments="+escape(run.comments):"");
if(setup.JSsend) DOM.HeadRemove(setup.JSsend);
setup.JSsend=DOM.LoadJS(send);
setTimeout(EventSendTimeout, setup.timeout);
SaveDefaults();}}}
function EventSendResult(){SendReset();
var msg='';
switch (setup.senderror){case '': msg+="Your enquiry was sent successfully. We will contact you shortly.";break;
case 'noemail':msg+="Sorry, but your enquiry could not be sent at this time. Please try again later";if(setup.salesemail!='') msg+=" or contact us at "+setup.salesemail+" directly";msg+=".";setup.nodeenquiry.style.display="block";break;
default:msg+="Sorry, but there was a technical problem with your enquiry.";
if(setup.salesemail!='') msg+=" Please contact us at "+setup.salesemail+" directly.";break;}
DOM.SetText(setup.nodeenqresult, msg);}
function EventSendTimeout(){if(setup.activesend){SendReset();
DOM.HeadRemove(setup.JSsend);setup.JSsend=null;
DOM.SetText(setup.nodeenqresult, "Sorry, but your enquiry is taking too long. Please try again later.");
setup.nodeenquiry.style.display="block";}}
function SendReset(){Graphic.ClassRemove(setup.nodeenqresult, "active");
setup.activesend=false;}
function EventLimitComments(evt){var key=evt.Raised.Key;
if(evt.Raised.Element.value.length>setup.comlimit) evt.Raised.Element.value=evt.Raised.Element.value.substr(0, setup.comlimit);
if(evt.Raised.ControlKey==''&&key.length+evt.Raised.Element.value.length>setup.comlimit) evt.Raised.StopDefaultAction();}
function PopupImage(img){var scnWidth=(screen.availWidth ? screen.availWidth:640);
var scnHeight=(screen.availHeight ? screen.availHeight:480);
var size=setup.picsize+20;
var win=window.open(img, "", "width="+size+",height="+size+",left="+Math.floor((scnWidth-size)/2)+",top="+Math.floor((scnHeight-size)/2)+",location=0,directories=0,menubar=0,toolbar=0,status=0,scrollbars=0,resizable=1");
var cImage=new Image;cImage.src=img;
if(cImage.complete) PopupImageResize(win, cImage);
else new Event(cImage, "load", function(evt){evt.Detach();PopupImageResize(win, cImage);});}
function PopupImageResize(win, cImage){var imgWidth=cImage.width+30;
var imgHeight=cImage.height+70;
var scnWidth=(screen.availWidth ? screen.availWidth:640);
var scnHeight=(screen.availHeight ? screen.availHeight:480);
if(scnWidth>imgWidth&&scnHeight>imgHeight){try {win.resizeTo(imgWidth, imgHeight);} catch(e){}
try {win.moveTo(Math.floor((scnWidth-imgWidth)/2), Math.floor((scnHeight-imgHeight)/2));} catch(e){}}
win.focus();}
Object.prototype.toInt=function(){var str=String(this);
str=str.replace(/[^0-9-.]/g, "");
var ret=parseInt(str, 10);
if(isNaN(ret)) ret=0;
return ret;}
Number.prototype.format=function(dp, currency){var num=this;
var ThousandsSep=(setup.locale=="EURO" ? " ":",");var DecimalPoint=(setup.locale=="EURO" ? ",":".");var NegativePre="-";var NegativePost="";var CurrencyPre="\u00a3";var CurrencyPost="";if(setup.locale=="USD") CurrencyPre="$";if(setup.locale=="EURO"){CurrencyPre="";CurrencyPost="\u20ac";}
var neg, bdp, adp, obdp;if(isNaN(num)) num=0;
dp=Math.abs(dp.toInt());neg=(num<0);
num=String(Math.round(Math.abs(num) * Math.pow(10, dp))).Pad(dp, '0');
bdp=num.substr(0, num.length - dp);adp=num.substr(num.length - dp);
if(bdp=="") bdp="0";
else{do {obdp=bdp;
bdp=bdp.replace(/(\d+)(\d{3})/g, "$1" + ThousandsSep + "$2");} while (bdp!=obdp);}
num=bdp + (dp>0 ? DecimalPoint + adp:"");
if(currency === true) num=CurrencyPre + num + CurrencyPost;
if(neg) num=NegativePre + num + NegativePost;
return num;}
String.prototype.Trim=function(){return this.replace(/^\s*|\s*$/g, "");}
String.prototype.Clean=function(){return this.replace(/[^\w|\s|@|&|.|,|!|%|(|)|+|-]/g, "").replace(/_/g, " ").replace(/\s+/g, " ").Trim();}
String.prototype.Pad=function(length, padChar){var str=String(this);
length=length.toInt();
if(typeof padChar=='undefined') padChar=" ";
else{padChar=String(padChar);
if(padChar.length<1) padChar=" ";}
while (str.length<length) str=padChar + str;
return str;}
function HTTParguments(){var args=new Array();
var arglist=location.search.Trim();
if(arglist.charAt(0)=='?') arglist=arglist.substr(1);
var argsep=arglist.split('&');
var thisValue;
for(var i=0;i<argsep.length;i++){thisValue=argsep[i].split("=");
if(thisValue.length==2) args[unescape(thisValue[0].toLowerCase())]=unescape(thisValue[1]);}
return args;}
Array.prototype.Exists=function(key){var type=typeof(this[key]);
return (type!='undefined'&&type!='function');}
Array.prototype.StoreAll=function(name, minutes){var values="";
for(var key in this) if(typeof(this[key])!='function') values+=(values=="" ? "":"[:]") + key.toLowerCase() + "[=]" + String(this[key]);
CookieSet(name, values, minutes);}
Array.prototype.LoadAll=function(name){var allValues=CookieGet(name);
var values=allValues.split("[:]");
var thisValue;
for(var i=0;i<values.length;i++){thisValue=values[i].split("[=]");
if(thisValue.length==2){if(thisValue[1]=="true"||thisValue[1]=="false") this[thisValue[0].toLowerCase()]=(thisValue[1]=="true");
else this[thisValue[0].toLowerCase()]=thisValue[1];}}}
function CookieSet(name, value, minutes){value=String(value).replace(/\r/g, "").replace(/\n/g, "[#]");
if(minutes){var date=new Date();
date.setTime(date.getTime()+(minutes*60000));
var expires=";expires="+date.toGMTString();}
else expires="";
document.cookie=name+"="+String(value)+expires+";path="+location.pathname.substr(0, location.pathname.indexOf("/",1)+1);}
function CookieGet(name){var ret="";
name+="=";
var allCookies=document.cookie.split(';');
var thisCookie;
for(var i=0;i<allCookies.length&&ret=="";i++){thisCookie=allCookies[i].Trim();
if(thisCookie.indexOf(name)==0) ret=thisCookie.substring(name.length).replace(/\[#\]/g, "\n");}
return ret;}
function CookiesEnabled(){CookieSet("testcookie", "testvalue", 0.05);
return (CookieGet("testcookie")=="testvalue");}
function verify_email(email){email=email.Trim().toLowerCase();
if(email!="") if(email.replace(/^.+@[a-z0-9]+([_\.\-]{0,1}[a-z0-9]+)*([\.]{1}[a-z0-9]+)+$/, "")!="") email="";
return email;}
var DOM=new function(){this.ElementNode=1;
this.AttributeNode=2;
this.TextNode=3;
this.CommentNode=8;
this.Enabled=(document.getElementById&&document.getElementsByTagName);
this.Id=function(id, rootElement){var element=null;
if(this.Enabled){if(typeof rootElement=='string') rootElement=this.Id(rootElement);
if(!rootElement) rootElement=document;
element=rootElement.getElementById(String(id));}
return element;}
this.Tags=function(tag, rootElement){var elements=new Array(0);
if(this.Enabled){if(typeof rootElement=='string') rootElement=this.Id(rootElement);
if(!rootElement) rootElement=document;
elements=rootElement.getElementsByTagName(String(tag));}
return elements;}
this.NodeAdd=function(element, content, clear){if(typeof element=='string') element=this.Id(element);
if(clear === true) this.RemoveChildren(element);
return (element.innerHTML=content);}
this.ParentFind=function(element, nodename){if(typeof element=='string') element=this.Id(element);
nodename=nodename.toLowerCase();
while (element.nodeName.toLowerCase()!=nodename&&element.parentNode) element=element.parentNode;
if(element.nodeName.toLowerCase()!=nodename) element=false;
return element;}
this.ChildElements=function(element){var ce=new Array();
if(typeof element=='string') element=this.Id(element);
if(element){for(var i=0;i<element.childNodes.length;i++){if(element.childNodes[i].nodeType==this.ElementNode&&element.childNodes[i].nodeName!="!") ce.push(element.childNodes[i]);}}
return ce;}
this.FindNodeType=function(element, ntype){var found=null;
if(typeof element=='string') element=this.Id(element);
if(element){var thisNode;
for(var i =0;i<element.childNodes.length&&found==null;i++){thisNode=element.childNodes[i];
if(thisNode.nodeType==ntype) found=thisNode;
else found=this.FindNodeType(thisNode, ntype);}}
return found;}
this.SetText=function(element, text){if(typeof element=='string') element=this.Id(element);
if(element){var tNode=this.FindNodeType(element, this.TextNode);
if(tNode) tNode.nodeValue=text;
else element.appendChild(document.createTextNode(text));}}
this.RemoveChildren=function(element){if(typeof element=='string') element=this.Id(element);
if(element) while (element.lastChild) element.removeChild(element.lastChild);}
this.AbsoluteX=function(element){var pos=0;
if(typeof element=='string') element=this.Id(element);
if(element&&typeof element.offsetLeft!='undefined'){pos=element.offsetLeft;
while ((element=element.offsetParent)) pos+=element.offsetLeft;}
return pos;}
this.AbsoluteY=function(element){var pos=0;
if(typeof element=='string') element=this.Id(element);
if(element&&typeof element.offsetTop!='undefined'){pos=element.offsetTop;
while ((element=element.offsetParent)) pos+=element.offsetTop;}
return pos;}
this.HeadAppend=function(element){var head=this.Tags("head");
return (head.length==1 ? head[0].appendChild(element):null);}
this.HeadRemove=function(element){var head=this.Tags("head");
return (head.length==1 ? head[0].removeChild(element):null);}
this.LoadJS=function(file){var jsfrag=document.createElement("script");
jsfrag.setAttribute("type", "text/javascript");jsfrag.setAttribute("src", file);
return this.HeadAppend(jsfrag);}
this.LoadCSS=function(file){var cssfrag=document.createElement("link");
cssfrag.setAttribute("type", "text/css");cssfrag.setAttribute("rel", "stylesheet");cssfrag.setAttribute("media", "screen");cssfrag.setAttribute("href", file);
return this.HeadAppend(cssfrag);}}
var Graphic=new function(){if(typeof window.innerWidth!='undefined'){this.ViewportWidth=function(){return window.innerWidth;}
this.ViewportHeight=function(){return window.innerHeight;}}
else{this.ViewportWidth=function(){if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientWidth!='undefined'&&document.documentElement.clientWidth!=0) return document.documentElement.clientWidth;
else return DOM.Tags("body")[0].clientWidth;}
this.ViewportHeight=function(){if(typeof document.documentElement!='undefined'&&typeof document.documentElement.clientHeight!='undefined'&&document.documentElement.clientHeight!=0)return document.documentElement.clientHeight;
else return DOM.Tags("body")[0].clientHeight;}}
if(typeof window.pageXOffset!='undefined'){this.ViewportScrollX=function(){return window.pageXOffset;}
this.ViewportScrollY=function(){return window.pageYOffset;}}
else{this.ViewportScrollX=function(){if(typeof document.documentElement.scrollLeft!='undefined'&&document.documentElement.scrollLeft>0) return document.documentElement.scrollLeft;
else if(typeof document.body.scrollLeft!='undefined') return document.body.scrollLeft;
else return 0;}
this.ViewportScrollY=function(){if(typeof document.documentElement.scrollTop!='undefined'&&document.documentElement.scrollTop>0) return document.documentElement.scrollTop;
else if(typeof document.body.scrollTop!='undefined') return document.body.scrollTop;
else return 0;}}
this.ClassApply=function(element, cname){if(typeof element=='string') element=DOM.Id(element);
if(element&&cname.length>0){var cc=" "+element.className+" ";
if(cc.indexOf(" "+cname+" ")<0) cc+=cname;
element.className=cc.Trim();}}
this.ClassRemove=function(element, cname){if(typeof element=='string') element=DOM.Id(element);
if(element&&cname.length>0){var cc=" "+element.className+" ";
cc=cc.replace(new RegExp(" "+cname+" ", "gi"), "");
element.className=cc.Trim();}}
this.PositionViewport=function(element, vtop, vbottom, absolute){if(absolute !== true){var vh=this.ViewportHeight();
vtop=Math.floor((vtop/100) * vh);
vbottom=Math.ceil((vbottom/100) * vh);}
var ey=DOM.AbsoluteY(element);
var vy=this.ViewportScrollY();
if(ey<vy+vtop) this.ScrollViewport(ey-vtop);
else if(ey>vy+vbottom) this.ScrollViewport(ey-vbottom);}
this.AnimationFrames=10;
this.AnimationPause=300;
this.ScrollViewport=function(moveTo, frame, pause){if(isNaN(frame)){var cTime=new Date();frame=this.AnimationFrames;}
var moveFrom=this.ViewportScrollY();
window.scrollTo(0, moveFrom+Math.floor((moveTo - moveFrom) / frame));
if(frame>1&&moveFrom!=this.ViewportScrollY()){if(isNaN(pause)){pause=((new Date() - cTime) + 8) * 2;
frame=Math.floor(this.AnimationPause / pause);}
else frame--;
setTimeout(function(){Graphic.ScrollViewport(moveTo, frame, pause);}, pause);}}}
function Event(element, type, handler){this.Raised=null;
if(typeof element.AttachedEvents=='undefined'||element.AttachedEvents==null){element.AttachedEvents=new EventStore();
var existingEvent=element["on"+type];
if(existingEvent) new Event(element, type, existingEvent);
EventStore.ElementList[EventStore.ElementList.length]=element;
if(EventStore.ElementList.length==1) new Event(window, "unload", EventStore.CleanUp);}
var hIndex=element.AttachedEvents.Add(element, type, this);
this.Handler=function(evtinfo){this.Raised=evtinfo;
return handler(this);}
this.Detach=function(){element.AttachedEvents.Detach(type, hIndex);}}
function EventStore(){this.Type=[];}
EventStore.prototype.Add=function(element, type, EventObj){if(typeof this.Type[type]=='undefined'){this.Type[type]=[];
element["on"+type]=EventStore.Handler;}
var hIndex=this.Type[type].length;
this.Type[type][hIndex]=EventObj;
return hIndex;}
EventStore.prototype.Detach=function(type, hIndex){if(typeof this.Type[type][hIndex]=='object') delete this.Type[type][hIndex];}
EventStore.prototype.RunEvents=function(evtinfo){var ret=true;
if(typeof this.Type[evtinfo.Type]!='undefined'){var EventObj;
for(var h=0;h<this.Type[evtinfo.Type].length;h++){EventObj=this.Type[evtinfo.Type][h];
if(typeof EventObj=='object') ret &= (EventObj.Handler(evtinfo) !== false);}}
return ret;}
EventStore.Handler=function(evt){return (this.AttachedEvents ? this.AttachedEvents.RunEvents(new EventInformation(evt)):null);}
EventStore.ElementList=[];
EventStore.CleanUp=function(){for(var e=0;e<EventStore.ElementList.length;e++) EventStore.ElementList[e].AttachedEvents=null;
EventStore.ElementList=null;}
function EventInformation(event){if(event){this.Event=event;
this.StopPropagation=function(){this.Event.stopPropagation();}
this.StopDefaultAction=function(){this.Event.preventDefault();}}
else{this.Event=window.event;
this.StopPropagation=function(){this.Event.cancelBubble=true;};this.StopDefaultAction=function(){this.Event.returnValue=false;}}
this.Type="";this.Element=null;this.Key="";this.ControlKey="";this.Shift=false;this.Ctrl=false;this.Alt=false;this.MouseX=0;this.MouseY=0;
if(this.Event){this.Type=String(this.Event.type).toLowerCase();
this.Element=(this.Event.target ? this.Event.target:this.Event.srcElement);
var charCode=this.Event.charCode;
var keyCode=(this.Event.keyCode ? this.Event.keyCode:charCode);
if(charCode!=0&&keyCode>=32) this.Key=String.fromCharCode(keyCode);
if(this.Key==""){this.ControlKey=Event.CK[keyCode];
if(!this.ControlKey) this.ControlKey="";}
this.Ctrl=this.Event.ctrlKey;this.Alt=this.Event.altKey;this.Shift=this.Event.shiftKey;var mre=/mouse|click/i;
if(mre.test(this.Type)){this.MouseX=(this.Event.pageX ? this.Event.pageX:this.Event.clientX + Math.max(document.documentElement.scrollLeft, document.body.scrollLeft));
this.MouseY=(this.Event.pageY ? this.Event.pageY:this.Event.clientY + Math.max(document.documentElement.scrollTop, document.body.scrollTop));}}}
Event.CK=[];Event.CK[8]="backspace";Event.CK[9]="tab";Event.CK[13]="enter";Event.CK[27]="esc";Event.CK[33]="pageup";Event.CK[34]="pagedown";Event.CK[35]="end";Event.CK[36]="home";Event.CK[37]="left";Event.CK[38]="up";Event.CK[39]="right";Event.CK[40]="down";Event.CK[45]="insert";Event.CK[46]="delete";Event.CK[112]="f1";Event.CK[113]="f2";Event.CK[114]="f3";Event.CK[115]="f4";Event.CK[116]="f5";Event.CK[117]="f6";Event.CK[118]="f7";Event.CK[119]="f8";Event.CK[120]="f9";Event.CK[121]="f10";Event.CK[122]="f11";Event.CK[123]="f12";Event.CK[144]="numlock";Event.CK[145]="scrolllock";
setup.OK=true;
if(!DOM.Enabled){setup.OK=false;document.write("<p>Please use a more modern browser to view the showroom.</p>");}
else{if(!DOM.Id("autodirector")){setup.OK=false;document.write('<p><strong>AutoDirector error</strong>: the page is missing the &lt;div id="autodirector"&gt;tag.</p>');}
if(DOM.Tags("head").length!=1){setup.OK=false;document.write('<p><strong>AutoDirector error</strong>: the page does not have one &lt;head&gt;tag.</p>');}}
if(setup.OK) new Event(window, "load", ADstart);

