/**
 * DoubleClick Spotlight Tags
 * Author: Scott Grogan
 * Created on: 01/03/2008
 * 
 * Logic and object data for Lexus-required DoubleClick pixel tags.
 */

/**
* DblClickPage()
* Object: Contains logic to get the name of the current page 
*/
function DblClickPage() {
	DblClickPage.prototype.pageName = null;
	
	DblClickPage.prototype.getPageName = function() {
		return this.pageName;
	}
	DblClickPage.prototype.setPageName = function() {
		var url = window.location.href;
		var path = window.location.pathname;
		var referrer = document.referrer;
		var pageName = path.substring(path.lastIndexOf("/") + 1);
		var arrPage = new Array;
		
		// Parse out any query string info
		if(pageName.indexOf("?") > -1)  {
			arrPage = pageName.split("?");
			pageName = arrPage[0];
		}
		
		// Parse out 'f_' 
		if(pageName.indexOf("f_") > -1) {
			pageName = pageName.replace("f_","");
		}
		
		// Catches redirects (data in JSON below)
		if(pageName.indexOf("Redirect") > -1) {
			if(redirectsList[pageName]) return redirectsList[pageName];
		}
		
		// Catches variations of the HomePage URL
		if(pageName == "" || pageName == "index.do") return "HomePage";
		if(noVanityURL[pageName] == true) return "HomePage";
		
		// Catches LTR pop-up widgets
		if(pageName == "purchaseInquiry_widget.do") return "PurchaseInquiry_widget";
		else if(pageName == "letUsHelp_widget.do") return "LetUsHelp_widget";
		else if(pageName == "f_EmailAFriend") return "EmailAFriend_widget";
		
		// Catches confirmation pages
		if(pageName == "leadSubmission.do" || pageName == "thankYou.do") {
			if(document.getElementById("PIheader")) return "PurchaseInquiry_thankYou";
			else if(document.getElementById("EMAFheader")) return "EmailaFriend_thankYou";
			else if(document.getElementById("LUHheader")) return "LetUsHelp_thankYou";
			else return document.referrer.substring(document.referrer.lastIndexOf("/") + 1) + "_thankYou";
		}
		
		// Dealer-entered off-site URL
		if(url.indexOf("?http:") > -1) {
			arrPage = url.split("?");
			return arrPage[1];
		}
		
		// VehicleDetails URL ends with a vehicle ID, so the usual method of parsing doesn't work
		if(url.indexOf("VehicleDetails") > -1) {
			if(url.indexOf("printPage=true") > -1) return "VehicleDetails_printPage";
			else return "VehicleDetails";
		}
		
		return pageName;
	}
	
	this.pageName = this.setPageName();
}

/**
* DblClickPixelTag()
* Object: Sets parameters used in pixel tag query string, and contains logic for special cases
*/
function DblClickPixelTag() {
	
	DblClickPixelTag.prototype.dealerCode = null;
	DblClickPixelTag.prototype.axel = null;
	DblClickPixelTag.prototype.market = null;
	DblClickPixelTag.prototype.pageName = null;
	DblClickPixelTag.prototype.ptOverwrite = null;
	DblClickPixelTag.prototype.ptType = null;
	DblClickPixelTag.prototype.ptCat = null;
	DblClickPixelTag.prototype.imageSrc = null;

	DblClickPixelTag.prototype.setAxel = function() {
		var axel = Math.random() * 10000000000000;
		return axel;
	}
	DblClickPixelTag.prototype.getAxel = function() {
		return this.axel;
	}
	
	DblClickPixelTag.prototype.setMarket = function() {
		var strDealerCode = "d" + this.dealerCode;
		var market = marketsList[strDealerCode];
		return market;
	}
	DblClickPixelTag.prototype.getMarket = function() {
		return this.market;
	}
	
	DblClickPixelTag.prototype.setPtType = function(ptType) {
		// ptOverwrite allows script to overwrite given var with a value from 'typeAndCatList'
		if(this.ptOverwrite == true && typeAndCatList[this.pageName] != null) {
			ptType = typeAndCatList[this.pageName]["type"];
		}
		return ptType;
	}
	DblClickPixelTag.prototype.getPtType = function() {
		return this.ptType;
	}
	
	DblClickPixelTag.prototype.setPtCat = function(ptCat) {
		// ptOverwrite allows script to overwrite given var with a value from 'typeAndCatList'
		if(this.ptOverwrite == true && typeAndCatList[this.pageName] != null) {
			ptCat = typeAndCatList[this.pageName]["cat"];
		}
		return ptCat;
	}
	DblClickPixelTag.prototype.getPtCat = function() {
		return this.ptCat;
	}
	
	DblClickPixelTag.prototype.setImageSrc = function() {
		var imageSrc = "http://ad.doubleclick.net/activity;src=1044889;type="+this.ptType+";cat="+this.ptCat+";u1="+this.dealerCode+";u2="+this.market+";u3="+this.pageName+";ord=1;num="+this.axel+"?";
		return imageSrc;
	}
	DblClickPixelTag.prototype.getImageSrc = function() {
		return this.imageSrc;
	}
	
	DblClickPixelTag.prototype.writeImage = function() {
		var docBody = document.getElementsByTagName("body")[0];
		var newImage = document.createElement("img");
		
		newImage.setAttribute( "src", this.imageSrc );
		newImage.setAttribute( "width", "1" );
		newImage.setAttribute( "height", "1" );
		newImage.setAttribute( "border", "0" );
		
		docBody.appendChild(newImage);
	}
	
}

/**
* DblClickTrafficInit()
* Constructor: Contains logic to determine which tags should be created on this page
*/
function DblClickTrafficInit() {
	
	var currentPage = new DblClickPage();
	var output = new Array;
	var appendCurrent = null;
	
	// getDealerCode() returns a WSM site variable and must be set wherever this file is included
	var dealerCode = 00000;
	if(getDealerCode()) dealerCode = getDealerCode();
		
	var deliveredTraffic = null;
	var siteActions = null;
	var siteLeads = null;
	
	deliveredTraffic = new DblClickPixelTag();
		deliveredTraffic.dealerCode = dealerCode;
			deliveredTraffic.dealerCode 	= dealerCode;
			deliveredTraffic.pageName 		= currentPage.getPageName();
			deliveredTraffic.axel 			= deliveredTraffic.setAxel();
			deliveredTraffic.market 		= deliveredTraffic.setMarket();
			deliveredTraffic.ptOverwrite 	= true;
			deliveredTraffic.ptType 		= deliveredTraffic.setPtType("deale945");
			deliveredTraffic.ptCat 			= deliveredTraffic.setPtCat("deale242");
			deliveredTraffic.imageSrc 		= deliveredTraffic.setImageSrc();
		
	output.push(deliveredTraffic);
	
	if(typeAndCatList[currentPage.getPageName()] && typeAndCatList[currentPage.getPageName()]["action"] == true) { 
		siteActions = new DblClickPixelTag();
			siteActions.dealerCode 		= dealerCode;
			siteActions.pageName 		= currentPage.getPageName();
			siteActions.axel 			= siteActions.setAxel();
			siteActions.market 			= siteActions.setMarket();
			siteActions.ptType 			= siteActions.setPtType("deale945");
			siteActions.ptCat 			= siteActions.setPtCat("deale256");
			siteActions.imageSrc 		= siteActions.setImageSrc();
			
		output.push(siteActions);
	}
	
	if(typeAndCatList[currentPage.getPageName()] && typeAndCatList[currentPage.getPageName()]["lead"] == true) { 
		siteLeads = new DblClickPixelTag();
			siteLeads.dealerCode 		= dealerCode;
			siteLeads.pageName 			= currentPage.getPageName();
			siteLeads.axel 				= siteLeads.setAxel();
			siteLeads.market 			= siteLeads.setMarket();
			siteLeads.ptType 			= siteLeads.setPtType("ldale905");
			siteLeads.ptCat 			= siteLeads.setPtCat("leadr391");
			siteLeads.imageSrc 			= siteLeads.setImageSrc();
			
		output.push(siteLeads);
	}
	
	while(appendCurrent = output.pop()) appendCurrent.writeImage();
}

if(window.addEventListener) window.addEventListener('load',DblClickTrafficInit,false);
else window.attachEvent('onload',DblClickTrafficInit);

var redirectsList = {
	"Redirect1" : "LexusComparison", 
	"Redirect2" : "BuildYourLexus",
	"Redirect3" : "LexusCollection", 
	"Redirect4" : "ApplyForCredit",
	"Redirect5" : "EstimatePayment", 
	"Redirect6" : "OwnersSite"
} 

var noVanityURL = {
	"barker-news" 		: true, 
	"brookfield" 		: true, 
	"charles-barker" 	: true, 
	"hoffman"			: true, 
	"ira-manchester" 	: true, 
	"johnson-durham" 	: true, 
	"johnson-raleigh" 	: true, 
	"northshore" 		: true, 
	"st-albans" 		: true, 
	"superior" 			: true, 
	"superior-north" 	: true, 
	"tucson" 			: true   
}

var typeAndCatList = {
	"PurchaseInquiry_widget"			: { "type":"cpold442", "cat":"preow876", "action":true, "lead":false },
	"VehicleLocatorForm"				: { "type":"cpole953", "cat":"findi701", "action":true, "lead":false },
	"LetUsHelp_widget"					: { "type":"cpole953", "cat":"findi701", "action":true, "lead":false },
	"ContactUsForm"						: { "type":"ldayl605", "cat":"about915", "action":true, "lead":false },
	"PartsOrderForm"					: { "type":"ldayl605", "cat":"parts485", "action":true, "lead":false },
	"ServiceApptForm"					: { "type":"ldayl605", "cat":"servi747", "action":true, "lead":false },
	"QuickQuoteForm"					: { "type":"ldale905", "cat":"newmo398", "action":true, "lead":false },
	"CorporateQuickQuoteForm"			: { "type":"lexus764", "cat":"build369", "action":true, "lead":false },
	"EmailAFriend_widget"				: { "type":"lexus225", "cat":"lcpoe383", "action":true, "lead":false },
	"PurchaseInquiry_thankYou"			: { "type":"cpold442", "cat":"preow876", "action":false, "lead":true },
	"VehicleLocatorForm_thankYou"		: { "type":"cpole953", "cat":"findi701", "action":false, "lead":true },
	"LetUsHelp_thankYou"				: { "type":"cpole953", "cat":"findi701", "action":false, "lead":true },
	"ContactUsForm_thankYou"			: { "type":"ldayl605", "cat":"about915", "action":false, "lead":true },
	"PartsOrderForm_thankYou"			: { "type":"ldayl605", "cat":"parts485", "action":false, "lead":true },
	"ServiceApptForm_thankYou"			: { "type":"ldayl605", "cat":"servi747", "action":false, "lead":true },
	"QuickQuoteForm_thankYou"			: { "type":"ldale905", "cat":"newmo398", "action":false, "lead":true },
	"CorporateQuickQuoteForm_thankYou"	: { "type":"lexus764", "cat":"build369", "action":false, "lead":true },
	"EmailaFriend_thankYou"				: { "type":"lexus225", "cat":"lcpoe383", "action":false, "lead":false },
	"VehicleDetails_printPage"			: { "type":"cpole953", "cat":"lcpov117", "action":true, "lead":true }
}

var marketsList = {
	"d61001":"Atlanta", "d61002":"Atlanta", "d61005":"Atlanta", "d61030":"Atlanta", "d61031":"Atlanta", "d61902":"Baltimore", "d61904":"Baltimore", "d61930":"Baltimore", "d62005":"Boston", "d62002":"Boston", "d62004":"Boston", "d62006":"Boston", "d62802":"Boston", "d61201":"Chicago", "d61202":"Chicago", "d61203":"Chicago", "d61204":"Chicago", "d61205":"Chicago", "d61206":"Chicago", "d61207":"Chicago", "d61230":"Chicago", "d61306":"Chicago", "d61604":"Cincinnati", "d63402":"Cincinnati", "d63404":"Cleveland", "d63408":"Cleveland", "d63432":"Cleveland", "d63401":"Columbus", "d63431":"Columbus", "d64204":"Dallas/Ft. Worth", "d64207":"Dallas/Ft. Worth", "d64211":"Dallas/Ft. Worth", "d64232":"Dallas/Ft. Worth", "d60501":"Denver", "d60503":"Denver", "d60531":"Denver", "d62101":"Detroit", "d62104":"Detroit", "d62130":"Detroit", "d60908":"Ft. Myers/Naples", "d60909":"Ft. Myers/Naples", "d63202":"Greensboro", "d63230":"Greensboro", "d60601":"Hartford/New Haven", "d60602":"Hartford/New Haven", "d64201":"Houston", "d64203":"Houston", "d64230":"Houston", "d64231":"Houston", "d60907":"Jacksonville", "d60959":"Jacksonville", "d62405":"Kansas City", "d62430":"Kansas City", "d60402":"Los Angeles", "d60405":"Los Angeles", "d60406":"Los Angeles", "d60407":"Los Angeles", "d60408":"Los Angeles", "d60411":"Los Angeles", "d60414":"Los Angeles", "d60418":"Los Angeles", "d60419":"Los Angeles", "d60430":"Los Angeles", "d60438":"Los Angeles", "d60441":"Los Angeles", "d60445":"Los Angeles", "d60447":"Los Angeles", "d60451":"Los Angeles", "d60453":"Los Angeles", "d60454":"Los Angeles", "d60904":"Miami/Ft. Lauderdale", "d60905":"Miami/Ft. Lauderdale", "d60915":"Miami/Ft. Lauderdale", "d60931":"Miami/Ft. Lauderdale", "d60932":"Miami/Ft. Lauderdale", "d64801":"Milwaukee", "d64830":"Milwaukee", "d62201":"Minneapolis", "d62230":"Minneapolis", "d64101":"Nashville", "d64130":"Nashville", "d60603":"New York", "d60605":"New York", "d62903":"New York", "d62904":"New York", "d62907":"New York", "d62908":"New York", "d62910":"New York", "d62911":"New York", "d62930":"New York", "d63134":"New York", "d62931":"New York", "d63101":"New York", "d63102":"New York", "d63103":"New York", "d63105":"New York", "d63109":"New York", "d63110":"New York", "d63130":"New York", "d63131":"New York", "d63132":"New York", "d64505":"Norfolk", "d64530":"Norfolk", "d60906":"Orlando/Melbourne", "d60917":"Orlando/Melbourne", "d60702":"Philadelphia", "d62901":"Philadelphia", "d62906":"Philadelphia", "d62909":"Philadelphia", "d63701":"Philadelphia", "d63702":"Philadelphia", "d63704":"Philadelphia", "d63731":"Philadelphia", "d60201":"Phoenix", "d60202":"Phoenix", "d60204":"Phoenix", "d60231":"Phoenix", "d60232":"Phoenix", "d63703":"Pittsburgh", "d63730":"Pittsburgh", "d63203":"Raleigh", "d63231":"Raleigh", "d60421":"Sacramento", "d60442":"Sacramento", "d60450":"Sacramento", "d64301":"Salt Lake City", "d64330":"Salt Lake City", "d60404":"San Diego", "d60412":"San Diego", "d60413":"San Diego", "d60410":"San Francisco", "d60448":"San Francisco", "d60417":"San Francisco", "d60428":"San Francisco", "d60429":"San Francisco", "d60431":"San Francisco", "d60446":"San Francisco", "d60444":"San Francisco", "d60449":"San Francisco", "d64602":"Seattle", "d64630":"Seattle", "d64606":"Seattle ", "d62402":"St. Louis", "d62403":"St. Louis", "d60901":"Tampa/Sarasota", "d60910":"Tampa/Sarasota", "d60930":"Tampa/Sarasota", "d60203":"Tucson ", "d60230":"Tucson ", "d61903":"Washington,  DC", "d61905":"Washington,  DC", "d64502":"Washington,  DC", "d64504":"Washington,  DC", "d60916":"West Palm Beach", "d60918":"West Palm Beach", "d63108":"Albany", "d63002":"Albuquerque", "d63710":"Altoona", "d65002":"Anchorage", "d61006":"Augusta", "d64202":"Austin", "d60443":"Bakersfield", "d61704":"Baton Rouge", "d60105":"Birmingham", "d61101":"Boise", "d63107":"Buffalo", "d63902":"Charleston,  SC", "d64701":"Charleston,  WV", "d63201":"Charlotte", "d64105":"Chattanooga", "d60530":"Colorado Springs", "d63904":"Columbia", "d61403":"Davenport", "d63407":"Dayton", "d61401":"Des Moines", "d64208":"El Paso", "d63602":"Eugene", "d61305":"Evansville", "d61302":"Fort Wayne", "d60452":"Fresno", "d62102":"Grand Rapids", "d64804":"Green Bay", "d63901":"Greenville", "d63705":"Harrisburg", "d60106":"Huntsville", "d61301":"Indianapolis", "d62301":"Jackson", "d64104":"Kingsport/Tri Cities", "d64106":"Knoxville", "d62103":"Lansing", "d62703":"Las Vegas", "d61602":"Lexington", "d62630":"Lincoln", "d60301":"Little Rock", "d61603":"Louisville", "d64209":"Lubbock", "d61003":"Macon", "d64802":"Madison", "d64107":"Memphis", "d60104":"Mobile", "d60424":"Monterey", "d60102":"Montgomery", "d61702":"New Orleans", "d63501":"Oklahoma City", "d62601":"Omaha", "d60434":"Palm Springs", "d61208":"Peoria", "d63601":"Portland,  OR", "d61802":"Portland,  ME", "d63802":"Providence", "d62702":"Reno", "d64503":"Richmond", "d63104":"Rochester", "d61209":"Rockford", "d64210":"San Antonio", "d61004":"Savannah", "d61703":"Shreveport", "d61304":"South Bend", "d64605":"Spokane", "d62003":"Springfield,  MA", "d62404":"Springfield,  MO", "d63106":"Syracuse", "d63406":"Toledo", "d63503":"Tulsa", "d61502":"Wichita", "d63709":"Wilkes-Barre"
};