/* * Cred Ed config * */
expCredEdChannelLo = 2002;
expCredEdChannelHi = 2100;
/* * PPC LP config * */
expAllowedSC = ':674969:674970:674883:';
expSCpkgIdList = ':F2MHZ:';
/* * End config * */

// extract URL params
if(document.URL.indexOf("?") > 0) {
	var hpparamarray = document.URL.split("?")[1].split("&");
	for(var i=0; i < hpparamarray.length; i++) {
		var hppair = hpparamarray[i].split("=");
		if(chkVal('bcd')) { expPassBCD = hppair[1] }
		if(chkVal('sc')) { expPassSC = hppair[1] } // only on PPC pages
		if(chkVal('mkwid')) { expPassMKWID = hppair[1] }
		if(chkVal('pcrid')) { expPassPCRID = hppair[1] }
		if(chkVal('kwid')) { expPassKWID = hppair[1] }
		if(chkVal('channel')) { expPassChannel = hppair[1] }
		if(chkVal('tc')) { expTestCmpn = hppair[1] }
		if(chkVal('tr')) { expTestRcpe = hppair[1] }
		if(chkVal('td')) { expTestDate = hppair[1] }
		if(chkVal('tx')) { expTestXtra = hppair[1] }
		if(chkVal('mob')) { expMobile = hppair[1] }
		if(chkVal('ps')) { expPPCsub = hppair[1] } // internal use only
	}
}

setPPCcookie = 0;

if(varSet(window.mboxFactoryDefault)) {
	var sessId = mboxFactoryDefault.getSessionId().getId();
	var expMarin, expSC;

	// cookie setup and processing
	var expCkAp;
	var expCookie = document.cookie.split("; ");
	if(varSet(window.expPPCsrc)) {
		setPPCcookie = expPPCsrc; // set cookie to PPC src at end of script if expPPCsrc variable is set (i.e. only on PPC page)
		expPPCsrc = 'p' + expPPCsrc;
		if(varSet(window.expPassSC)) { if(expAllowedSC.match(new RegExp(':' + expPassSC + ':', ''))) { expSC = 1 } }
	}
	if(varSet(window.expPPCsub)) { expPPCsrc = expPPCsub } // for pages directly subsequent to PPC LP
	if(varSet(window.expTestXtraCk)) {
		if(expTestXtraCk.length == 0) {
			document.cookie = 'expXtra=X; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/;'; // expire it
		} else {
			if(varSet(window.expTestXtra)) {
				document.cookie = 'expXtra=' + expTestXtra + '; path=/;'
				expTestXtra = expTestXtraCk;
			}
		}
	}
	for(i=0; i < expCookie.length; i++) {
		expCrumb = expCookie[i].split("=");
		if(expCrumb[0] == 'expCkAp') { expCkAp = expCrumb[1] }
		if(!varSet(window.expPPCsrc)) {
			if(expCrumb[0] == 'expPPCsrc') { expPPCsrc = 'c' + expCrumb[1] }
		}

		if(!varSet(window.expTestXtraCk)) {	if(varSet(window.expTestXtra)) { if(expCrumb[0] == 'expXtra') { expTestXtra = expCrumb[1] } } }

	}
	
	if(varSet(window.expPassMKWID) && varSet(window.expPassPCRID) && varSet(window.expPassKWID)) { expMarin = 1 }
	for(var i=0; i < document.links.length; i++) {
		var linko = document.links[i].href;
		var seppo = '';

		if(linko.indexOf('creditexpert.com') > -1 || linko.indexOf('experiandirect.com') > -1 || linko.indexOf('iplace.com') > -1 || linko.indexOf('protectmyid.com') > -1) {

			if(expSC == 1) {
				if(linko.match(/pkgid=([\w|-]*)/i)) {
					var expPkgID = linko.match(/pkgid=([\w|-]*)/i)[1];
					if(expSCpkgIdList.match(new RegExp(':' + expPkgID + ':', 'i'))) { linko = linko.replace(/sc=([\w|-]*)/,'sc=' + expPassSC) }
				}
			}
		
			if(expMarin == 1) {
				linko += '&mkwid=' + expPassMKWID;
				linko += '&pcrid=' + expPassPCRID;
				linko += '&kwid=' + expPassKWID;
				seppo = '-';
			}

			var expBCD = '';
			var bcdUrlPattern = /bcd=([\w|-]*)/i

			if(linko.match(bcdUrlPattern)) {
				expBCD = linko.match(/bcd=([\w|-]*)/i)[1];
				var bcdPattern = /^([\w|-]{17})-(\w{4})-(\w{2})-(\w{2})-(\w{8})-(\w{2})-(\w{4})$/i;
				
				if(expBCD.match(bcdPattern)) { // new style
					
					var expFrnt = bcdM(1);
					var expCmpn = bcdM(2);
					var expRcpe = bcdM(3);
					var expDate = bcdM(4); // month 01-12
					var expMarn = bcdM(5);
					var expPaid = bcdM(6);
					var expXtra = bcdM(7);

					if(varSet(window.expTestCmpn)) { if(expTestCmpn.match(/^\w{4}$/)) { expCmpn = expTestCmpn } }
					if(varSet(window.expTestRcpe)) { if(expTestRcpe.match(/^\w{2}$/)) { expRcpe = expTestRcpe } }
					if(varSet(window.expTestDate)) { if(expTestDate.match(/^\d{2}$/)) { expDate = expTestDate } }
					if(varSet(window.expPassBCD)) { if(expPassBCD.match(/^\w{8}$/)) { expMarn = expPassBCD } } // set Marin component if BCD is passed in URL
					if(varSet(window.expPPCsrc)) { if(expPPCsrc.match(/^\w{2}$/)) { expPaid = expPPCsrc } }

					if(varSet(window.expTestXtra)) {
						if(expTestXtra.match(/^\w{4}$/)) { expXtra = expTestXtra }
					} else {
						if(varSet(window.expAppendToBCD)) { expXtra = expAppendToBCD.substr(0,4) } // Legacy support for expAppendToBCD
					}

					expBCD = expFrnt + '-' + expCmpn + '-' + expRcpe + '-' + expDate + '-' + expMarn + '-' + expPaid + '-' + expXtra;
					
				} else { // old style
					
					if(varSet(window.expPassBCD)) { expAppendToBCD = expPassBCD }
					if(varSet(window.expAppendToBCD)) { expBCD = expBCD.replace(/([\w|-]*)/,'$1' + seppo + expAppendToBCD) }
					if(varSet(window.expReplaceBCD)) { expBCD = expBCD.replace(/([\w|-]*)/,expReplaceBCD) }

					if(expCkAp) { expBCD = expBCD.replace(/([\w|-]*)/,'$1-' + expCkAp) }

				}
			}

			linko = linko.replace(/bcd=([\w|-]*)/,'bcd=' + expBCD);

			// disable mobile funnel (allowMobile=1) unless expMobile is set to 'on'
			if(varSet(window.expMobile)) { if(expMobile.match(/^on$/i)) { null } else { linko += expQamp() + 'allowMobile=1' } } else { linko += expQamp() + 'allowMobile=1' }

			if(linko.indexOf('mboxSession') < 0) { linko += expQamp() + 'mboxSession=' + sessId }
			
		}

		// encode link and funnel through SiteRedirect 
		if(linko.indexOf('experiandirect.com') > -1 || linko.indexOf('protectmyid.com') > -1) {
			encodedLinko = encodeURIComponent(linko.replace(/^.*\//,''));
			linko = linko.replace(/\/(Order1|Login).aspx.*/,'/SiteRedirect.aspx?redirectURL=' + encodedLinko);
		}

		// for passing through PPC source
		if(setPPCcookie != 0 && varSet(window.expPPCsrc)) {
			if(linko.match(/experian.com/) && !linko.match(/\/consumer\/cac\//)) { linko += expQamp() + 'ps=' + expPPCsrc }
		}
		
		// for Credit Educator
		if(varSet(window.expPassChannel)) {
			if(linko.indexOf('experian.com/consumer/cac/') > -1 && linko.indexOf('CONSEDU') > -1 && expPassChannel >= expCredEdChannelLo && expPassChannel <= expCredEdChannelHi) {
				linko = linko.replace(/channel=\d+/,'channel=' + expPassChannel);
			}
		}
		
		document.links[i].href = linko;

	}
}

// set PPC cookie if we're on a PPC page
if(setPPCcookie != 0) { document.cookie = 'expPPCsrc=' + setPPCcookie + '; path=/;' }

// functions
// look up BCD segments via regex pattern
function bcdM(num) {
	return expBCD.match(bcdPattern)[num];
}

// check if a variable is defined
function varSet(inVar) {
	if(typeof(inVar) !== 'undefined') { return true } else { return false }
}

// pull from URL param value
function chkVal(inVal) {
	if(hppair[0].toLowerCase() == inVal) { return true } else { return false }
}

// use question mark or ampersand
function expQamp() {
	if(linko.indexOf('?') > 0) { return '&' } else { return '?' }
}
