$.chug.json={url:"/proxy.php",vehicleSmallImagesBaseURL:"http://vehicle-images2.chug.net/",vehicleLargeImagesBaseURL:"http://vehicle-images2.chug.net/",appid:"3366343532316464393138353238393962336164333834663631323361373738",stockPhotoBaseURL:"http://media.carbook.com/autoBuilderData/stockPhotos/",carDetailsResponse:[],relativeSearchResponse:null,carStatsResponse:null,getChugsForUserResponse:null,carsChuggedByUserResponse:null,getSourceCarID:function(){return(($.url.param("fsbo")=="true")?$.url.param("fsboid"):($.url.param("vin")!="")?$.url.param("vin"):$.url.param("carid"))},getCarDetails:function(b,a,c){if($.chug.json.isFSBORequest()){$.chug.json.getFSBOCarDetails(b,a,c)}else{if($.url.param("vin")!=""){$.chug.json.getVINCarDetails(a,c)}else{if($.url.param("carid")!=""){$.chug.json.getIDCarDetails(b,a,c)}}}},getCarDetailsBySellerType:function(b,a,c,d){if(c!="dealer"){$.chug.json.getFSBOCarDetails(b,a,d)}else{$.chug.json.getIDCarDetails(b,a,d)}},setFaceBookOwnerForFSBO:function(b,a,c){$.ajax({data:{apiname:"fsboassignfbowner",format:"json",appid:$.chug.json.appid,sourceid:b,fbid:a,now:(new Date()).getTime()},success:function(d){$.chug.json.carDetailsResponse=d;if(c){c(d)}},error:function(d,e){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},isFSBORequest:function(){if($.url.param("fsbo")=="true"){return true}else{return false}},getVINCarDetails:function(a,c){var b=a+"-dealer";$.ajax({data:{apiname:"cardetails",format:"json",appid:$.chug.json.appid,vin:a,now:(new Date()).getTime()},success:function(d){$.chug.json.carDetailsResponse=d;c(d)},error:function(d,e){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},getIDCarDetails:function(b,a,d){var c="dealer";$.ajax({data:{apiname:"dealercardetails",format:"json",appid:$.chug.json.appid,user:b,carid:a,now:(new Date()).getTime()},success:function(e){$.chug.json.carDetailsResponse=e;d(e)},error:function(e,f){$.chug.json.defaultAjaxErrorBehavior(e,f)}})},getFSBOCarDetails:function(a,b,d){var c=b+"-craigslist";if($.chug.cache.isResponseCached(c,"fsboCarDetails")){d($.chug.cache.getCachedData(c,"fsboCarDetails"))}else{$.ajax({data:{apiname:"fsbocardetails",format:"json",appid:$.chug.json.appid,user:a,id:b,now:(new Date()).getTime()},success:function(e){$.chug.json.carDetailsResponse=e;$.chug.cache.setCachedData(b,"fsboCarDetails",e);d(e)},error:function(e,f){$.chug.json.defaultAjaxErrorBehavior(e,f)}})}},getUserAccount:function(a,c,b){if(a){$.ajax({async:false,data:{apiname:"getuseraccount",format:"json",appid:$.chug.json.appid,user:a,now:(new Date()).getTime()},success:function(d){c(d)},error:function(e,f,d){if(b){b(e,f,d)}else{$.chug.json.defaultAjaxErrorBehavior(e,f)}}})}},createUserAccount:function(b,a){$.ajax({async:false,data:{apiname:"createuseraccount",format:"json",appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(c){b(c)},error:function(d,e,c){if(a){a(d,e,c)}else{$.chug.json.defaultAjaxErrorBehavior(d,e)}}})},getGarageCount:function(a,c,b){$.ajax({data:{apiname:"carcountsingarage",format:"json",appid:$.chug.json.appid,user:a,now:(new Date()).getTime()},success:function(d){if(typeof(d.garageCarCounts)=="number"){c(d.garageCarCounts)}else{c(0)}},error:function(e,f,d){if(b){b(e,f,d)}else{$.chug.json.defaultAjaxErrorBehavior(e,f)}}})},getGarage:function(a,c,b){$.ajax({async:false,data:{apiname:"getgarage",format:"json",user:a,appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(d){c(d)},error:function(e,f,d){if(b){b(e,f,d)}else{$.chug.json.defaultAjaxErrorBehavior(e,f)}}})},getCarViewCountsForUser:function(a,b){$.ajax({data:{apiname:"carviewcountsforuser",format:"json",appid:$.chug.json.appid,user:a,now:(new Date()).getTime()},success:function(c){if(typeof(c.carViewCounts)=="number"){b(c.carViewCounts)}else{b(0)}},error:function(d,e,c){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},getCarViewsForUser:function(a,b){$.ajax({async:false,data:{apiname:"carviewsforuser",format:"json",appid:$.chug.json.appid,user:a,now:(new Date()).getTime()},success:function(c){b(c)},error:function(d,e,c){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},getCarsChuggedCountForUser:function(a,b){$.ajax({data:{apiname:"carschuggedcountforuser",format:"json",user:a,appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(c){if(typeof(c.carChuggedCount)=="number"){b(c.carChuggedCount)}else{b(0)}},error:function(d,e,c){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},getCarsChuggedForUser:function(a,b){$.ajax({data:{apiname:"getchuggedcars",format:"json",user:a,appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(c){$.chug.cache.setCachedData(a,"carChugs",c);b(c)},error:function(d,e,c){if(failureCallback){failureCallback(d,e,c)}else{$.chug.json.defaultAjaxErrorBehavior(d,e)}}})},getTrendingDealsForUser:function(a,b,c){$.ajax({async:false,data:{apiname:"trendingdeals",format:"json",appid:$.chug.json.appid,user:a,dma:b,now:(new Date()).getTime()},success:function(d){c(d)},error:function(e,f,d){$.chug.json.defaultAjaxErrorBehavior(e,f)}})},saveUserEmail:function(a,b,d,c,f,e){if(a){$.ajax({async:false,data:{apiname:"saveuseremail",format:"json",appid:$.chug.json.appid,user:a,email:b,firstName:d,lastName:c,now:(new Date()).getTime()},success:function(g){if(f){f(g)}},error:function(h,i,g){if(e){e(h,i,g)}else{$.chug.json.defaultAjaxErrorBehavior(h,i)}}})}},saveUserFirstLastName:function(a,c,b,d){$.ajax({data:{apiname:"saveuserfirstlastname",format:"json",appid:$.chug.json.appid,user:a,firstName:c,lastName:b,now:(new Date()).getTime()},success:function(e){if(d){d(e)}},error:function(f,g,e){$.chug.json.defaultAjaxErrorBehavior(f,g)}})},saveUserFBId:function(a,b,c){if(a){$.ajax({data:{apiname:"saveuserfbid",format:"json",appid:$.chug.json.appid,user:a,fbid:b,now:(new Date()).getTime()},success:function(d){if(c){c(d)}},error:function(e,f,d){$.chug.json.defaultAjaxErrorBehavior(e,f)}})}},getUserAccountByFBId:function(a,b){$.ajax({async:false,data:{apiname:"getuseraccountbyfbid",format:"json",appid:$.chug.json.appid,fbid:a,now:(new Date()).getTime()},success:function(c){if(b){b(c)}},error:function(d,e,c){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},getEmailForUserVin:function(b,a,d,c){$.ajax({async:false,data:{apiname:"getemailforuservin",format:"json",appid:$.chug.json.appid,user:b,vin:a,now:(new Date()).getTime()},success:function(e){if(d){d(e)}},error:function(f,g,e){if(c){c(f,g,e)}else{$.chug.json.defaultAjaxErrorBehavior(f,g)}}})},saveCarToGarage:function(b,a,d,c){$.ajax({async:false,data:{apiname:"addcartogarage",format:"json",appid:$.chug.json.appid,user:b,id:a,sellertype:d,now:(new Date()).getTime()},success:function(e){if(c){c(e)}},error:function(f,g,e){if(failureCallback){failureCallback(f,g,e)}else{$.chug.json.defaultAjaxErrorBehavior(f,g)}}})},deleteSavedCar:function(b,a,d,c){$.ajax({async:false,data:{apiname:"removecarfromgarage",format:"json",appid:"3366343532316464393138353238393962336164333834663631323361373738",user:b,id:a,sellertype:d,now:(new Date()).getTime()},success:function(e){c("success")},error:function(e,f){c("fail")}})},isCarInGarage:function(b,a,e,d,c){$.ajax({data:{apiname:"iscaringarage",format:"json",appid:$.chug.json.appid,user:b,id:a,sellertype:e,now:(new Date()).getTime()},success:function(f){if(d){d(f)}},error:function(g,h,f){if(c){c(g,h,f)}else{$.chug.json.defaultAjaxErrorBehavior(g,h)}}})},getCarStats:function(a,b,c){$.ajax({data:{apiname:"carstats",format:"json",appid:$.chug.json.appid,carid:a,sellertype:b,now:(new Date()).getTime()},success:function(e){if(c){var d=e.carStats;$.chug.json.setCarStatsResponse(d);c(d)}},error:function(e,f,d){if(failureCallback){failureCallback(e,f,d)}else{$.chug.json.defaultAjaxErrorBehavior(e,f)}}})},defaultAjaxErrorBehavior:function(b,c){try{}catch(a){}},setRelativeSearchResponse:function(a){$.chug.json.relativeSearchResponse=a},setCarDetailsResponse:function(a){$.chug.json.carDetailsResponse.carInfo=a},setListingsResponse:function(a){$.chug.json.listingsResponse=a},setEmailResponse:function(a){$.chug.json.emailResponse=a},setCarStatsResponse:function(a){$.chug.json.carStatsResponse=a},isZipcodeValid:function(a,b){$.ajax({data:{apiname:"getlocationbyzip",format:"json",appid:$.chug.json.appid,zip:a,now:(new Date()).getTime()},success:function(c){b(c.data!=null)},error:function(c,d){$.chug.json.defaultAjaxErrorBehavior(c,d)}})},getTrendingDeals:function(a,b,c,d){$.ajax({cache:false,data:{apiname:"trendingdeals",format:"json",appid:$.chug.json.appid,user:a,dma:b,carcount:c,now:(new Date()).getTime()},success:function(e){d(e)},error:function(e,f){$.chug.json.defaultAjaxErrorBehavior(e,f)}})},getChugsForUser:function(a,c,b){if($.chug.json.getChugsForUserResponse&&(!b)){c($.chug.json.getChugsForUserResponse);return}$.ajax({data:{apiname:"getchugsforuser",user:a,sortDescending:"true",format:"json",appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(d){var e=new $.chug.json.Chugs(d);$.chug.json.getChugsForUserResponse=e;c(e)},error:function(d,e){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},carsChuggedByUser:function(a,c,b){if($.chug.json.carsChuggedByUserResponse&&(!b)){c($.chug.json.carsChuggedByUserResponse);return}$.ajax({data:{apiname:"carschuggedbyuser",user:a,format:"json",appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(d){$.chug.json.carsChuggedByUserResponse=d;c(d)},error:function(d,e){$.chug.json.defaultAjaxErrorBehavior(d,e)}})},deleteChugThread:function(a,b){$.ajax({data:{apiname:"setchugdeletedstatus",threadToken:a,format:"json",appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(c){if(b){b(c)}},error:function(c,d){$.chug.json.defaultAjaxErrorBehavior(c,d)}})},stopDealerComm:function(a,b){$.ajax({data:{apiname:"stopdealercomm",threadToken:a,format:"json",appid:$.chug.json.appid,now:(new Date()).getTime()},success:function(c){if(b){b(c)}},error:function(c,d){$.chug.json.defaultAjaxErrorBehavior(c,d)}})},incrementCarAction:function(c,a,d,f,b,e){$.ajax({data:{appid:$.chug.json.appid,apiname:"incrementcaraction",user:c,carId:a,sellerType:d,dealerId:f,actionCode:b},success:function(g){if(e){e(g)}},error:function(g,h){$.chug.json.defaultAjaxErrorBehavior(g,h)}})},carDetails:{getCarID:function(){var a=$.chug.json.carDetailsResponse.carInfo;if($.chug.util.isDisplayable(a.id)){return a.id}else{return null}},isFSBO:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.source&&((a.source.toLowerCase()=="craigslist")||(a.source.toLowerCase()=="private"))){return true}else{return false}},getListingType:function(){if(this.isFSBO()){return"private"}else{return"dealer"}},getYear:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.year){return a.carInfo.year}else{return null}},getMake:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.make){return a.carInfo.make}else{return null}},getModel:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.model){return a.carInfo.model}else{return null}},getStandardEquipment:function(){var a=[];if($.chug.json.carDetailsResponse.carInfo){var d=$.chug.json.carDetailsResponse.carInfo.standardEquipment;var c;for(var b in d){if(($.chug.util.isDisplayable(d[b].description))&&($.chug.util.isDisplayable(d[b].headerName))){c={header:d[b].headerName,description:d[b].description};a.push(c)}}}return a},getCategorizedEquipment:function(f){var b=[];var g=[];for(var e in f){if(!$.chug.util.isValueInArray(b,f[e].header)){b.push(f[e].header)}}for(var d in b){var c={category:b[d],items:[]};for(var a in f){if(b[d]==f[a].header){c.items.push(f[a].description)}}g.push(c)}return g},getRecalls:function(){var j=[];var e=[];var c=$.chug.json.carDetailsResponse.carInfo;if(c){var d=c.consumerInfo;var a=[];var g=[];var h=[];for(var f in d){if(d[f].type=="Recall"&&d[f].name=="Mfg's Report Date"){a.push(d[f].value)}else{if(d[f].type=="Recall"&&d[f].name=="Summary"){if(d[f].mapping&&$.chug.util.isDisplayable(d[f].mapping.title)){if($.inArray(d[f].mapping.title,e)<0){h.push(d[f].value);g.push(d[f].mapping.title);e.push(d[f].mapping.title)}else{a.pop()}}else{a.pop()}}}}for(var f in a){var b={date:a[f],summary:h[f],title:g[f]};j.push(b)}}return j},getNumberOfRecalls:function(){var a=$.chug.json.carDetails.getRecalls();return a.length},getVIN:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.vin){return a.carInfo.vin}else{return null}},getFSBOID:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.id){return a.carInfo.id}else{return null}},getDesign:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.design){return a.carInfo.design}else{return null}},getAskingPrice:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.price){return a.carInfo.price}else{return null}},getExteriorColor:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.exteriorColor){return a.carInfo.exteriorColor}else{return null}},getInteriorColor:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.interiorColor){return a.carInfo.interiorColor}else{return null}},getTransmission:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.transmission){return a.carInfo.transmission}else{return null}},getOptionsOrPackages:function(f){var e=$.chug.json.carDetailsResponse.carInfo;var g=[];if(e&&e.optionalEquipment){var h=$.chug.json.carDetailsResponse.carInfo.optionalEquipment;if(h.length<=$.chug.constants.maxOptions){var d={msrp:null,name:null,description:null,chromeOptionCode:null};for(var a=0;a<h.length;a++){if(0<parseInt(h[a].msrpLow)){var c=$.chug.util.strip("-inc: ",h[a].nvdOptionData.ExternalDescription);d={msrp:h[a].msrpLow.substring(0,h[a].msrpLow.indexOf(".")>0?h[a].msrpLow.indexOf("."):h[a].msrpLow.length),name:h[a].nvdOptionData.PON,description:c,chromeOptionCode:h[a].chromeOptCode};var b=$.chug.json.carDetails.getFAVChromeOptionCodes();if(!$.chug.util.isValueInArray(b,d.chromeOptionCode)){if(f=="both"){g.push(d)}else{if(f=="individual"&&!$.chug.util.isDisplayable(d.description)){g.push(d)}else{if(f=="packages"&&$.chug.util.isDisplayable(d.description)){g.push(d)}}}}}}}}return g},getAllOptionsAndPackages:function(h){var c=$.chug.json.carDetailsResponse.carInfo;var b=[];var d=[];if(c&&c.optionalEquipment){var e=c.optionalEquipment;if(e.length<=$.chug.constants.maxOptions){var g={msrp:null,name:null,description:null,chromeOptionCode:null};for(var f=0;f<e.length;f++){var j=$.chug.util.strip("-inc: ",e[f].nvdOptionData.ExternalDescription);var a=parseInt(e[f].msrpLow);g={msrp:a>0?e[f].msrpLow.substring(0,e[f].msrpLow.indexOf(".")>0?e[f].msrpLow.indexOf("."):e[f].msrpLow.length):"0",name:e[f].nvdOptionData.PON,description:j,chromeOptionCode:e[f].chromeOptCode};if($.inArray(g.name,d)<0){if(h=="both"){b.push(g);d.push(g.name)}else{if(h=="individual"&&!$.chug.util.isDisplayable(g.description)){b.push(g);d.push(g.name)}else{if(h=="packages"&&$.chug.util.isDisplayable(g.description)){b.push(g);d.push(g.name)}}}}}}}return b},getOptionValueWhenNew:function(c){var a=this.getAllOptionsAndPackages("both");for(var b=0;b<a.length;b++){if(a[b].chromeOptionCode==c){return a[b].msrp}}return null},getTopOptionsOrPackages:function(b,a){var c=[];c=this.getAllOptionsAndPackages(b);if(c.length>a){c=c.slice(0,a-1)}return c},getPhotoURLs:function(){var e=$.chug.json.carDetailsResponse.carInfo;var d=[];if(e&&e.images){for(var c in e.images){var b=e.images[c];if((b.friendlyName!=null)&&(b.size>15000)&&(b.downloadStatus==3)){var a={url:$.chug.json.vehicleSmallImagesBaseURL+b.friendlyName,largePhotoUrl:$.chug.json.vehicleLargeImagesBaseURL+b.friendlyName};d.push(a)}}}return d},getNumberOfPhotos:function(){return this.getPhotoURLs().length},getMainPhotoURL:function(){var d=$.chug.json.carDetailsResponse.carInfo;if(d){if(d.images){for(var c in d.images){var b=d.images[c];if((b.friendlyName!=null)&&(b.size>15000)&&(b.downloadStatus==3)){return($.chug.json.vehicleSmallImagesBaseURL+b.friendlyName)}}}if(d.vehicleInfo&&d.vehicleInfo.length>0){var a=d.vehicleInfo[0].stockPhotoUrl;if(a!=undefined&&a!=null&&a.length>0){if(a.indexOf(",")>0){a=a.substring(0,a.indexOf(","))}return a}}if(d.stockPhoto){if(d.stockPhoto!="no_img.png"){return($.chug.json.stockPhotoBaseURL+d.stockPhoto)}else{return"/images/no_img.png"}}return"/images/no_img.png"}else{return null}},isMainPhotoStock:function(){var c=$.chug.json.carDetailsResponse.carInfo;if(c){if(c.images){for(var b in c.images){var a=c.images[b];if((a.friendlyName!=null)&&(a.size>15000)&&(a.downloadStatus==3)){return false}}}return true}else{return null}},getEvoxImage:function(){var a=$.chug.json.carDetailsResponse.carInfo;var b="/images/no_img.png";if(a){if((a.evoxImage!=undefined)&&(a.evoxImage!=null)){b=a.evoxImage}}return b},getDealerID:function(){if($.chug.json.carDetailsResponse&&$.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.dealer){return $.chug.json.carDetailsResponse.carInfo.dealer.id}return null},getDealerName:function(){var a=$.chug.json.carDetailsResponse;if(this.isFSBO()){return"Private"}else{if(a.carInfo&&a.carInfo.dealer){if($.chug.util.isDisplayable($.chug.json.carDetailsResponse.carInfo.dealer.address.name)){return $.chug.json.carDetailsResponse.carInfo.dealer.address.name}else{return $.chug.json.carDetailsResponse.carInfo.dealer.name}}return null}},getDealerFullAddress:function(){var a="";if(!this.isFSBO()){a=this.getDealerAddress1()+"<br>"+this.getDealerCity()+", "+this.getDealerState()+" "+this.getDealerZip()}return a},getDealerAddress1:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.line1}else{return null}},getDealerAddress2:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.line2}else{return null}},getDealerCity:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.city}else{return null}},getDealerState:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.state}else{return null}},getDealerZip:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.zip}else{return null}},getDealerLatLon:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer&&a.dealer.address){return a.dealer.address.latitude+","+a.dealer.address.longitude}else{if(a&&a.latitude&&a.longitude){return a.latitude+","+a.longitude}else{return null}}},getDealerWebsite:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.dealer){return a.dealer.website}else{return null}},getDealerOriginalListing:function(){if($.chug.json.carDetailsResponse.carInfo){return $.chug.json.carDetailsResponse.carInfo.url}else{return null}},getRegion:function(){if($.chug.json.carDetailsResponse.carInfo){return $.chug.json.carDetailsResponse.carInfo.location}else{return null}},getBlackBookClean:function(){if($.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0]){return $.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].retailClean}else{return null}},getBlackBookMSRP:function(){if($.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0]){return $.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].msrp}else{return null}},getBlackBookExcellent:function(){if($.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0]){return $.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].retailExtraClean}else{return null}},getBlackBookAverage:function(){if($.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0]){return $.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].retailAverage}else{return null}},getBlackBookRough:function(){if($.chug.json.carDetailsResponse.carInfo&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData&&$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0]){return $.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].retailAverage}else{return null}},getBlackBookMileageRange:function(){if($.chug.json.carDetailsResponse.carInfo){if($.chug.util.hasBlackBookMileageRanges($.chug.json.carDetailsResponse.carInfo)){var g=$.chug.json.carDetailsResponse.carInfo.blackBookUsedData[0].mileageRanges;var f=$.chug.json.carDetails.getMiles();var h=false;if(f==null||f==0){var j=new Date();var e=j.getFullYear();var b=Math.max(0,e-$.chug.json.carDetails.getYear());f=12000*b;h=true}for(var c in g){var a=g[c];if(a.start<=f&&a.end>=f){return("for a car with "+$.chug.util.modifyThousandsToUseK(a.start)+"-"+$.chug.util.modifyThousandsToUseK(a.end+" miles"))}}}return $.chug.constants.unknown}else{return $.chug.constants.unavailable}},isCurrentYear:function(){return $.chug.util.isCurrentYear($.chug.json.carDetailsResponse.carInfo.year)},getMiles:function(){var a=$.chug.json.carDetailsResponse;if(a.carInfo&&a.carInfo.miles){return a.carInfo.miles}else{return 0}},getPrice:function(){return $.chug.json.carDetails.getAskingPrice()},getCityMPG:function(){var b=$.chug.json.carDetailsResponse.carInfo;if(b){var a=$.chug.json.carDetailsResponse.carInfo.additionalData;if(a&&a.mpgCity>0){return a.mpgCity}else{return 0}}return 0},getHighwayMPG:function(){var b=$.chug.json.carDetailsResponse.carInfo;if(b){var a=$.chug.json.carDetailsResponse.carInfo.additionalData;if(a&&a.mpgHighway>0){return a.mpgHighway}else{return 0}}return 0},getSafetyRating:function(g){var f=$.chug.json.carDetailsResponse.carInfo;if(f){var d=f.consumerInfo;var c="";if(g=="frontal"){c="Frontal Driver"}else{if(g=="side"){c="Side Driver"}else{if(g=="rollover"){c="NHTSA Rollover Rating"}}}for(var e in d){if(d[e].name==c){var h=0;if(d[e].value&&d[e].value.match(/\*/g)!=null){h=d[e].value.match(/\*/g).length}var b=" ";for(var a=0;a<h;a++){b+='<img alt="star" src="../../images/star.png" />'}return b}}}return null},getChugStatus:function(){return"Unverified"},getMarketValue:function(){if($.chug.json.carDetailsResponse.carInfo){var a=this.getChugValueBase()+this.getFeaturesTotal();if(a>0){return a}}return null},getMarketDifferential:function(){var a=null;if(this.isNew()){a=this.getInvoicePlusFeatures()}else{a=this.getMarketValue()}if(a==null||this.getAskingPrice()==null){return 0}else{return this.getAskingPrice()-a}},getAbsoluteMarketDifferential:function(){var a=this.getMarketDifferential();if(a<0){return(a*-1)}else{return a}},getMarketDifferentialStatus:function(){var a=$.chug.constants;var b=a.marketDifferential;if(this.isUnderMarket()){return b.belowMarket}else{if(this.isOverMarket()){return b.aboveMarket}else{if(this.isAtMarket()){return b.atMarket}else{return b.notReported}}}},getMarketDifferentialText:function(){var a=$.chug.constants;if(this.isUnderMarket()){return a.belowMarket}else{if(this.isOverMarket()){return a.aboveMarket}else{if(this.isAtMarket()){return a.atMarket}else{return a.notReported.toLowerCase()}}}},isUnderMarket:function(){if(this.getMarketDifferential()==null){return null}else{if(this.getMarketDifferential()<0){return true}else{return false}}},isOverMarket:function(){if(this.getMarketDifferential()==null){return null}else{if(this.getMarketDifferential()>0){return true}else{return false}}},isAtMarket:function(){if(this.getMarketDifferential()==null){return null}else{if(this.getMarketDifferential()===0){return true}else{return false}}},isMarketDifferentialNotReported:function(){if(this.getMarketDifferential()==0||this.getAskingPrice()==null){return true}else{return false}},getNumberOfDaysListed:function(){var a=new Date();var c=this.getFirstCrawledDate();var b=a-c;var d=$.chug.util.convertMicrosecondsToDays(b);return d},getFirstCrawledDate:function(){var a=$.chug.json.carDetailsResponse.carInfo;if($.chug.util.isDisplayable(a.firstCrawled)){return new Date(a.firstCrawled)}else{if($.chug.util.isDisplayable(a.crawlDate)){return new Date(a.crawlDate)}else{return null}}},getLastCrawledDate:function(){var a=$.chug.json.carDetailsResponse.carInfo;if($.chug.util.isDisplayable(a.lastCrawled)){return new Date(a.lastCrawled)}else{return null}},getChugValueBase:function(){if($.chug.json.carDetailsResponse.carInfo){if(this.isNew()){var b=this.getInvoicePrice("low");return parseInt(b)}else{var a=$.chug.json.carDetailsResponse.carInfo.additionalData;if(a&&a.chugValueBase&&a.chugValueBase>0){return a.chugValueBase}else{return null}}}else{return null}},getFeaturesAffectingValue:function(p){var c=[];var e=[];var d=$.chug.json.carDetailsResponse.carInfo;var b;var o;if(d){if(this.isNew()){p=(p==null)?"msrp":p;b=d.optionalEquipment;if(b){if(b.length<=$.chug.constants.maxOptions){for(var h in b){var r={};if(p=="msrp"){if(b[h]&&b[h].nvdOptionData){o=parseInt(b[h].msrpLow);if($.inArray(b[h].nvdOptionData.PON,e)<0){r={amount:o>0?o:0,add:"",name:b[h].nvdOptionData.PON,chromeOptionCode:b[h].chromeOptCode};c.push(r);e.push(b[h].nvdOptionData.PON)}}}else{if(p=="invoice"){var g=this.getChromeStyle(b[h].chromeOptCode);if(g&&$.chug.util.isDisplayable(g.invoice)){o=parseInt(g.invoice);if($.inArray(b[h].nvdOptionData.PON,e)<0){r={amount:o>0?o:0,add:"",name:b[h].nvdOptionData.PON,chromeOptionCode:b[h].chromeOptCode};c.push(r);e.push(b[h].nvdOptionData.PON)}}}}}}}}else{b=d.optionalEquipment;var a=d.bookLinkMappings;for(var n in a){if(a[n].isValid&&a[n].isValid===true){if(a[n].chromeOptionCode){if(b){if(b.length<=$.chug.constants.maxOptions){for(var f in b){if(b[f].chromeOptCode==a[n].chromeOptionCode){if($.chug.util.hasBlackBookOptions($.chug.json.carDetailsResponse.carInfo)){var q=d.blackBookUsedData[0].options;for(var l in q){if(q[l].adCode==a[n].blackBookAdCode){o=parseInt(q[l].amount);if(o>0){if($.inArray(q[l].description,e)<0){r={amount:o,add:$.chug.json.carDetails.formatFeatureAdd(q[l].add),name:q[l].description,chromeOptionCode:b[f].chromeOptCode};c.push(r);e.push(q[l].description)}}}}}}}}}}}}}return c}else{return c}},getAllPossibleOptions:function(){var b=$.chug.json.carDetailsResponse.carInfo;var g=b.chromeStyles;var h=[];var c=[];if(!$.chug.util.isDisplayable(g)){return null}else{for(var f in g){var l=g[f].options;for(var e in l){var k=l[e].PON;var a=$.chug.util.formatDollars(l[e].msrp);k=$.chug.util.makeInitCaps(k.trim());var d={name:k,msrp:a};if($.inArray(k,c)<0&&$.chug.util.isDisplayable(l[e].ExternalDescription)){h.push(d);c.push(k)}}}}return h},getAllPossibleFAVs:function(){var h=$.chug.json.carDetailsResponse.carInfo;var b=h.blackBookUsedData;var g=[];var a=[];if(!$.chug.util.isDisplayable(b)){return null}else{for(var f in b){var d=b[f].options;for(var c in d){if(d[c].description!=null&&d[c].description!=""){if($.inArray(d[c].description,a)<0){var e={name:d[c].description,add:$.chug.json.carDetails.formatFeatureAdd(d[c].add),amount:d[c].amount};g.push(e);a.push(d[c].description)}}}}}return g},getFAVChromeOptionCodes:function(){var b=[];var c=this.getFeaturesAffectingValue();for(var a in c){if(c[a].chromeOptionCode&&c[a].chromeOptionCode!=null){b.push(c[a].chromeOptionCode)}}return b},getNumberOfFeaturesAffectingValue:function(){return this.getFeaturesAffectingValue().length},hasFeaturesAffectingValue:function(a){return(this.getNumberOfFeaturesAffectingValue()>0)},getFeaturesTotal:function(e){e=(e==null)?"msrp":e;var c=$.chug.json.carDetailsResponse.carInfo;if(c){var a=0;var d=this.getFeaturesAffectingValue(e);if(d&&d.length>0){for(var b in d){if(d[b].add==""){a+=parseInt(d[b].amount)}else{a-=parseInt(d[b].amount)}}}return a}else{return 0}},getChromeStyle:function(d){var a=$.chug.util;if((a.isDisplayable($.chug.json.carDetailsResponse.carInfo.chromeStyles))&&(a.isDisplayable($.chug.json.carDetailsResponse.carInfo.chromeStyles[0].options))){var b=$.chug.json.carDetailsResponse.carInfo.chromeStyles[0].options;for(var c in b){if(d==b[c].optionCode){return b[c]}}}return null},formatFeatureAdd:function(a){if(a==true){return""}else{if(a==false){return"-"}else{return""}}},getAccidents:function(){var b=$.chug.json.carDetailsResponse.carInfo;var a=$.chug.constants;if(b&&b.carfaxWindowSticker){var c=b.carfaxWindowSticker;if(c&&$.chug.util.isDisplayable(c.accidentIndicators)){if(c.accidentIndicators.match("No Accidents")!=null){return a.none}else{return a.yes}}return a.notReported}else{return a.notReported}},isNew:function(){var a=false;var c=new Date();var b=c.getFullYear();if(($.chug.util.isCurrentYear($.chug.json.carDetails.getYear()))&&($.chug.json.carDetails.getMiles()<=100)){a=true}return a},getWarrantyInfo:function(){var m=$.chug.json.carDetailsResponse;var a=[];a.originalWarranty=[];a.remainingWarranty=[];a.originalWarranty.push({time:null,miles:null});a.remainingWarranty.push({time:null,miles:null});if(m.carInfo){var c=$.chug.json.carDetailsResponse.carInfo.consumerInfo;var l={type:"RemainingWarranty",time:null,miles:null};var b={type:"NewWarranty",time:null,miles:null};var h=new Date();var k=h.getFullYear();for(var e in c){if(c[e].type=="Warranty"){if(c[e].name=="Basic Years"){b.time=parseInt(c[e].value)}else{if(c[e].name=="Basic Miles/km"){b.miles=parseInt(c[e].value.replace(",",""))}}}}var j=$.chug.json.carDetailsResponse.carInfo.year;if(b.time!=""){l.time=b.time-(k-j);l.time=(l.time<0)?0:l.time}if(b.miles!=""){var g=$.chug.json.carDetails.isNew();var f=$.chug.json.carDetailsResponse.carInfo.miles;if((f==0||!$.chug.util.isDisplayable(f))&&!g){l.miles=null}else{l.miles=b.miles-f;l.miles=(l.miles<0)?0:l.miles}}a.originalWarranty=b;a.remainingWarranty=l}return a},getReadableWarranty:function(a){var b=a.remainingWarranty;if(b&&b.time>0&&b.miles>0){return(b.time+" years or "+$.chug.util.addCommas(b.miles)+" miles")}else{if(b&&(b.time<=0||!$.chug.util.isDisplayable(b.time)||b.miles<=0||!$.chug.util.isDisplayable(b.miles))){return $.chug.constants.expired}else{return $.chug.constants.notReported}}},getReadablePriceAndMiles:function(){return"string"},isCarfaxOneOwner:function(){if(this.getNumberOfOwners()===1){return true}else{return false}},hasFreeCarfaxReport:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.carfaxWindowSticker&&a.carfaxWindowSticker.carfaxVehicle==true){return true}else{return false}},getNumberOfOwners:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a){if($.chug.json.carDetails.isNew()){return 0}else{if(a&&a.carfaxWindowSticker&&$.chug.util.isDisplayable(a.carfaxWindowSticker.ownership)){if(a.carfaxWindowSticker.ownership.match("CARFAX 1-Owner")!=null){return 1}else{return"more than 1"}}else{return $.chug.constants.notReported}}}else{return $.chug.constants.notReported}},getMissingDetails:function(){var a=[];var b=$.chug.messages;if(this.getPrice()==null){a.push({detail:b.missingDetails.price})}if(this.isNew()){a.push({detail:b.missingDetails.optionsAndRebates});a.push({detail:b.missingDetails.stillAvailable});a.push({detail:b.missingDetails.factoryRebates});a.push({detail:b.missingDetails.leaseSpecials});a.push({detail:b.missingDetails.financeSpecials})}else{a.push({detail:b.missingDetails.carCondition});if(this.getMiles()==null){a.push({detail:b.missingDetails.mileage})}if(this.getAccidents()==$.chug.constants.notReported){a.push({detail:b.missingDetails.accidents})}if(this.getNumberOfOwners()==$.chug.constants.notReported){a.push({detail:b.missingDetails.owners})}a.push({detail:b.missingDetails.blackBookCondition});a.push({detail:b.missingDetails.scheduledMaintenance});a.push({detail:b.missingDetails.remainingTireTread});a.push({detail:b.missingDetails.remainingBreakPads});a.push({detail:b.missingDetails.exteriorCondition});a.push({detail:b.missingDetails.interiorCondition});a.push({detail:b.missingDetails.recallsRepaired});a.push({detail:b.missingDetails.options});a.push({detail:b.missingDetails.remainingWarranty});a.push({detail:b.missingDetails.certifiedPreOwned})}return a},getMissingReports:function(){var c=[];var b=$.chug.messages;var a=$.chug.json.carDetails;if(a.isNew()){c.push({report:b.missingReports.invoiceValue});c.push({report:b.missingReports.options})}else{if(!a.hasFreeCarfaxReport()){c.push({report:b.missingReports.carFax})}c.push({report:b.missingReports.bookValue});c.push({report:b.missingReports.options})}return c},getFirstMissingDetail:function(){var a=this.getMissingDetails();var b=a.slice(0,1);return b[0].detail},getFirstMissingDetailDescription:function(){var a=$.chug.messages;if(this.getAskingPrice()==null){return a.firstMissingDetailDescription.price}else{if(this.isNew()){return a.firstMissingDetailDescription.optionsAndRebates}else{if(!this.isNew()){return a.firstMissingDetailDescription.carConditionAndOptions}else{return null}}}},getFactoryMaintenanceSchedule:function(){},getSellerRatedCondition:function(){},getNumberOfImages:function(){var a=$.chug.json.carDetailsResponse.carInfo.additionalData;return a?a.numImages:0},hasValidCarfaxReport:function(){var a=new Date();var c=false;var b=$.chug.json.carDetailsResponse.carInfo;if(b&&$.chug.util.isDisplayable(b.carfaxWindowSticker)){var d=new Date($.chug.json.carDetailsResponse.carInfo.carfaxWindowSticker.expireDate);if(a<=d){c=true}}return c},getCarfaxGoodNews:function(){var c=[];var b=new Date();var a;var d=$.chug.json.carDetailsResponse.carInfo;if(d&&$.chug.util.isDisplayable(d.carfaxWindowSticker)&&($.chug.json.carDetailsResponse.carInfo.carfaxWindowSticker.carfaxVehicle)){var e=new Date($.chug.json.carDetailsResponse.carInfo.carfaxWindowSticker.expireDate);if(b<=e){if($.chug.util.isDisplayable(d.carfaxWindowSticker.ownership)){a={text:d.carfaxWindowSticker.ownership};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.bbg)){a={text:d.carfaxWindowSticker.bbg};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.totalLoss)){a={text:d.carfaxWindowSticker.totalLoss};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.frameDamage)){a={text:d.carfaxWindowSticker.frameDamage};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.airbagDeployment)){a={text:d.carfaxWindowSticker.airbagDeployment};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.odometerRollback)){a={text:d.carfaxWindowSticker.odometerRollback};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.accidentIndicators)){a={text:d.carfaxWindowSticker.accidentIndicators};c.push(a)}if($.chug.util.isDisplayable(d.carfaxWindowSticker.manufacturerRecall)){a={text:d.carfaxWindowSticker.manufacturerRecall};c.push(a)}}}return c},getInvoicePrice:function(a){var c=$.chug.json.carDetailsResponse.carInfo;var b=null;if(c.vehicleInfo&&c.vehicleInfo.length>0){switch(a){case"high":b=c.vehicleInfo[0].invoiceHigh;break;case"low":b=c.vehicleInfo[0].invoiceLow;break}}if(b==null||b==0||b==undefined){return null}else{return parseInt(b)}},getInvoicePlusFeatures:function(){if(this.getInvoicePrice("low")==null){return null}else{return(this.getFeaturesTotal("invoice")+this.getInvoicePrice("low")+this.getDelivery())}},getMSRP:function(a){var c=$.chug.json.carDetailsResponse.carInfo;var b=null;if(c.vehicleInfo&&c.vehicleInfo.length>0){switch(a){case"high":b=c.vehicleInfo[0].msrpHigh;break;case"low":b=c.vehicleInfo[0].msrpLow;break}}return parseInt(b+this.getDelivery())},getDelivery:function(){var b=$.chug.json.carDetailsResponse.carInfo;var a=null;if(b.vehicleInfo&&b.vehicleInfo.length>0){a=parseInt(b.vehicleInfo[0].destinationChargeLow)}return a},getBasePlusFeatures:function(){return(parseInt(this.getMSRP("low")+this.getFeaturesTotal()+this.getDelivery()))},getNewPlusFeatures:function(){return(this.getMSRP("low")+this.getNewFeaturesTotal())},getNewFeaturesTotal:function(){var a=this.getAllOptionsAndPackages("both");var c=0;for(var b=0;b<a.length;b++){c+=parseInt(a[b].msrp)}return c},getOfferPrice:function(){if($.chug.json.carDetails.isNew()){if(this.getInvoicePrice("low")!=null){return(this.getInvoicePrice("low")*1.05)}else{return null}}else{var a=(this.getAskingPrice()<this.getMarketValue())?this.getAskingPrice():this.getMarketValue();return(a*0.95)}},getShortURL:function(){var b="tuvwxyz";var a=window.location.protocol+"//"+window.location.host+"/"+b;return a},getCondition:function(){if($.chug.json.carDetails.isNew()){return"new"}else{return"retail clean"}},getNewUsedLabel:function(){if($.chug.json.carDetails.isNew()){return"NEW"}else{return"USED"}},isSold:function(){var a=$.chug.json.carDetailsResponse.carInfo;var b=false;if(a.publishStatus&&a.publishStatus>=3){b=true}else{if((a.sold!=undefined)&&(a.sold==true)){b=true}}return b},getOriginalListingURL:function(){var a=$.chug.json.carDetailsResponse.carInfo;if($.chug.json.carDetails.isFSBO()&&a.url){return a.url}else{return null}},getSource:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a&&a.source){return a.source}else{return null}},getDetailsURL:function(b,c){var a=$.chug.json.carDetails.isFSBO()?"/details.php?":"/results.php?";if(c){a+="title="+encodeURIComponent(c)+"&"}if(b){a+="s="+encodeURIComponent(b)+"&"}if($.chug.json.carDetails.isFSBO()){a+="fsboid=";return a+encodeURIComponent($.chug.json.carDetails.getFSBOID())+"&fsbo=true&fsbosrc=cl"}else{a+="carId=";return a+encodeURIComponent($.chug.json.carDetails.getCarID())+"&sellertype=dealer"}},getNumberOfChugs:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a.carStats&&a.carStats.chugs&&a.carStats.chugs>=0){return a.carStats.chugs}else{return 0}},getNumberOfViews:function(){var a=$.chug.json.carDetailsResponse.carInfo;if(a.carStats&&a.carStats.views&&a.carStats.views>=0){return a.carStats.views}else{return 0}},getCarSaleTitle:function(){if($.chug.json.carDetails.isFSBO()){return $.chug.json.carDetailsResponse.carInfo.title}else{return 0}},getCarSourceId:function(){if($.chug.json.carDetails.isFSBO()){return $.chug.json.carDetailsResponse.carInfo.sourceId}else{return 0}},getFBOwnerId:function(){if(($.chug.json.carDetails.isFSBO())&&($.chug.json.carDetailsResponse.carInfo.fbOwner!=null)){return $.chug.json.carDetailsResponse.carInfo.fbOwner}else{return""}}},email:{firstMessage:function(){var a=$.chug.json.emailResponse;if(a&&a.emailResponses&&a.emailResponses.length>0){return a.emailResponses[0]}return null},lastMessage:function(){var a=$.chug.json.emailResponse;if(a&&a.emailResponses&&a.emailResponses.length>0){return a.emailResponses[a.emailResponses.length-1]}return null},isSent:function(){return $.chug.json.email.firstMessage()?true:false},dateSent:function(){var a=$.chug.json.email.firstMessage();if(a&&a.emailDate){return new Date(a.emailDate*1000)}return null},hasReply:function(){var a=$.chug.json.email.firstMessage();return(a&&a.receivedReply)},replyDate:function(){var a=$.chug.json.emailResponse;if(a&&a.emailResponses&&a.emailResponses.length>1){var b=a.emailResponses[1];if(b&&b.emailDate){return new Date(b.emailDate*1000)}}return null},userCanReply:function(){var c=$.chug.json.email.lastMessage();if(c&&c.emailBody){try{var a=$.parseJSON(c.emailBody);if(a.toName&&a.toName.indexOf("Chug User ")==0){return true}}catch(b){}}return false},userReplyLink:function(){var a="/mail.php?action=reply&thread="+encodeURIComponent($.chug.json.email.threadToken());var b=$.chug.json.email.lastMessage();if($.chug.json.email.userCanReply()&&b){a+="&msg="+encodeURIComponent(b.guid)}return a},threadToken:function(){if($.chug.json.emailResponse){return $.chug.json.emailResponse.threadToken}return null}},carStats:{getNumberOfChugs:function(){var a=$.chug.json.carStatsResponse;if(a&&a.chugs&&a.chugs>=0){return a.chugs}else{return 0}},getNumberOfViews:function(){var a=$.chug.json.carStatsResponse;if(a&&a.views&&a.views>=0){return a.views}else{return 0}}},Chugs:(function(){function a(d){this._threads=[];this._vehicles={};if(!d.data){return}for(var c=0;c<d.data.length;c++){var e=d.data[c];if(!this._vehicles[e.carId]){var b=new $.chug.json.ChugThread(e);this._threads.push(b);this._vehicles[e.carId]=b}this._vehicles[e.carId].addMessage(e)}}a.prototype={size:function(){return this._threads.length},hasThreads:function(){return(this.size()>0)},threads:function(){return this._threads},forCarId:function(c,b){if(b&&b!="dealer"){return null}return this._vehicles[c]}};return a})(),ChugThread:(function(){function a(b){this.messages=[];this.transactionList=[];this.transactions={};this.carId=b.carId;this.vin=b.vin;this.threadToken=b.threadToken;this.sellertype="dealer";this.latestDealerGuid=false;this.stopCommunication=b.stopDlrComm?true:false}a.prototype={addMessage:function(g){g.__emailBody={};try{g.__emailBody=$.parseJSON(g.emailBody)}catch(h){}if(g.emailCommunications){this._addEmailCommunications(g)}this.messages.push(g);if(!g.fromUser){this.latestDealerGuid=g.guid}else{g.rcvdReply=(this.latestDealerGuid?true:false)}if(g.fromUser&&g.__emailBody.type=="simple_reply"){g.type="ask_question"}var j={request_better_price:"Better price",ask_question:"Questions"};var f={value_report:"Value",carfax_report:"CarFax",options_report:"Options",price:"Price"};if(g.type&&(g.type=="request_report")&&g.__emailBody.items){for(var b=0;b<g.__emailBody.items.length;b++){var d=g.__emailBody.items[b];if(f[d]){if(!this.transactions[d]){var c=new $.chug.json.ChugTransaction(d,f[d]);this.transactions[d]=c;this.transactionList.push(c)}this.transactions[d].addMessage(g)}}}else{if(g.type&&j[g.type]){if(!this.transactions[g.type]){var c=new $.chug.json.ChugTransaction(g.type,j[g.type]);this.transactions[g.type]=c;this.transactionList.push(c)}this.transactions[g.type].addMessage(g)}}},_addEmailCommunications:function(d){var b=d.emailCommunications.length;for(var c=0;c<b;c++){var e=d.emailCommunications[c];e.type=d.type;e.emailMessage=e.emailBody;e.emailBody="{}";e.emailDate=e.emailDate?e.emailDate.sec:0;e.fromUser=e.emailFromUser;e.guid=e.userChugId;e.threadToken=d.threadToken;this.addMessage(e)}},hasTransactions:function(){return(this.transactionList.length>0)},title:function(){return this.threadToken},userReplyLink:function(){return"/mail.php?action=reply&thread="+encodeURIComponent(this.threadToken)+(this.latestDealerGuid?("&msg="+encodeURIComponent(this.latestDealerGuid)):"")}};return a})(),ChugTransaction:(function(){function a(b,c){this.type=b;this.title=c;this.messages=[]}a.prototype={addMessage:function(b){this.messages.push(b)},hasReply:function(){for(var b=0;b<this.messages.length;b++){if(this.messages[b].fromUser){return this.messages[b].rcvdReply}}return false},name:function(){return this.type}};return a})(),CarSet:(function(){function a(b){this._data=b?b:[]}a.prototype={loadVehicle:function(c){for(var b=0;b<this._data.length;b++){if(this._data[b].id==c){$.chug.json.setCarDetailsResponse(this._data[b]);return true}}return false}};return a})()};
