NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Whitepages Pro Web - Cybersource
// @namespace http://pro.whitepages.com/
// @version 0.2
// @description Implement Deep Links to Whitepages Pro Web Identity Check within Cybersource Decision Manager.
// @author Trevor Anderson <tanderson@whitepages.com>
// @grant none
// ==/UserScript==
var currURL = document.url || window.location.href || this.href;
//make sure we are on a Decision Manager screen, on the initial load that contains the contact data (there is a subsequent load identified by the hash at the end of the URL that we don't want).
if((currURL.indexOf('DecisionManagerCaseManagementSearchExecute.do') >= 0 || currURL.indexOf('CaseManagementDetailsLoad') >= 0) && (currURL.indexOf('DecisionManagerCaseManagementSearchExecute.do#') == -1) && (currURL.indexOf('CaseManagementDetailsLoad.do#') == -1))
{
var wpIP, wpEmail, wpBillName, wpBillStreet, wpBillStreet2, wpBillCity, wpBillState, wpBillZip, wpBillPhone, wpShipName, wpShipStreet, wpShipStreet2, wpShipCity, wpShipState, wpShipZip, wpShipPhone;
var wpErrors = [];
//find the order info table and iterate over its rows to find the transaction contact data
var orderInfoTable = document.getElementById('orderInfoDataTbl');
//if we failed to find this table, then there has been a site change
if(!orderInfoTable)
wpErrors.push('Failed to find the order info table due to website change. The Whitepages script will need to be updated.');
else
{
var orderInfoRows = orderInfoTable.rows;
for(var i = 0; i < orderInfoRows.length; i++)
{
var cols = orderInfoRows[i].cells;
//if this row contains no data, skip it
if(cols.length < 2)
continue;
//the first column should contain text describing the field on this row
switch(cols[0].innerHTML)
{
case 'IP Address:':
//the second column contains links to search the IP in addition to the IP itself, so use RegEx to find the IP.
var pattern = /\d+\.\d+\.\d+\.\d+/;
wpIP = pattern.exec(cols[1].innerHTML);
break;
case 'Email Address:':
//the second column contains an anchor tag whose text is the email.
wpEmail = cols[1].childNodes[0].text;
break;
}
}
//now identify the billing and shipping data.
if(document.getElementById("billingName"))
wpBillName = document.getElementById("billingName").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("billingAddress1"))
wpBillStreet = document.getElementById("billingAddress1").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("billingAddress2"))
wpBillStreet2 = document.getElementById("billingAddress2").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("billingCity"))
wpBillCity = document.getElementById("billingCity").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("billingState"))
wpBillState = document.getElementById("billingState").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("billingZip"))
wpBillZip = document.getElementById("billingZip").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("phoneLink"))
wpBillPhone = document.getElementById("phoneLink").text.trim().replace(" "," ").replace(/\s+/g," ");
else{
var pattern = /\d+/;
var nodes = document.getElementById("billingHead").childNodes;
var lastNode = nodes[nodes.length-1];
wpBillPhone = pattern.exec(lastNode.nodeValue);
}
if(document.getElementById("shippingName"))
wpShipName = document.getElementById("shippingName").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shippingAddress1"))
wpShipStreet = document.getElementById("shippingAddress1").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shippingAddress2"))
wpShipStreet2 = document.getElementById("shippingAddress2").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shippingCity"))
wpShipCity = document.getElementById("shippingCity").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shippingState"))
wpShipState = document.getElementById("shippingState").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shippingZip"))
wpShipZip = document.getElementById("shippingZip").innerHTML.trim().replace(" "," ").replace(/\s+/g," ");
if(document.getElementById("shipPhoneLink"))
wpShipPhone = document.getElementById("shipPhoneLink").text.trim().replace(" "," ").replace(/\s+/g," ");
else{
var pattern = /\d{10}\d*/;
var nodes = document.getElementById("shippingHead");
var lastNode = nodes.childNodes[nodes.childNodes.length-1];
wpShipPhone = pattern.exec(lastNode.nodeValue);
}
}
//now we have all the input data, so we can build the Pro Web Identity Check URLs
billAPIURL = 'https://pro.lookup.whitepages.com/identity_checks?'
billAPIURL += 'name='+encodeURIComponent(wpBillName)+'&';
if(wpBillPhone !== null)
billAPIURL += 'phone='+encodeURIComponent(wpBillPhone)+'&';
billAPIURL += 'address_street_line_1='+encodeURIComponent(wpBillStreet)+'&';
if(document.getElementById("billingAddress2"))
billAPIURL += 'address_street_line_2='+encodeURIComponent(wpBillStreet2)+'&';
billAPIURL += 'address_city='+encodeURIComponent(wpBillCity)+'&';
billAPIURL += 'address_state_code='+encodeURIComponent(wpBillState)+'&';
billAPIURL += 'address_postal_code='+encodeURIComponent(wpBillZip)+'&';
billAPIURL += 'email_address='+encodeURIComponent(wpEmail)+'&';
billAPIURL += 'ip_address='+encodeURIComponent(wpIP);
shipAPIURL = 'https://pro.lookup.whitepages.com/identity_checks?'
shipAPIURL += 'name='+encodeURIComponent(wpShipName)+'&';
if(wpShipPhone !== null)
shipAPIURL += 'phone='+encodeURIComponent(wpShipPhone)+'&';
if(wpShipStreet !== null){
shipAPIURL += 'address_street_line_1='+encodeURIComponent(wpShipStreet)+'&';
if(document.getElementById("shippingAddress2"))
shipAPIURL += 'address_street_line_2='+encodeURIComponent(wpShipStreet2)+'&';
shipAPIURL += 'address_city='+encodeURIComponent(wpShipCity)+'&';
shipAPIURL += 'address_state_code='+encodeURIComponent(wpShipState)+'&';
shipAPIURL += 'address_postal_code='+encodeURIComponent(wpShipZip)+'&';
}
shipAPIURL += 'email_address='+encodeURIComponent(wpEmail)+'&';
shipAPIURL += 'ip_address='+encodeURIComponent(wpIP);
//edit the phone links to go to Pro Web instead of whitepages.com
if(document.getElementById("phoneLink"))
document.getElementById("phoneLink").href = 'https://pro.lookup.whitepages.com/phones?number='+encodeURIComponent(wpBillPhone);
if(document.getElementById("shipPhoneLink"))
document.getElementById("shipPhoneLink").href = 'https://pro.lookup.whitepages.com/phones?number='+encodeURIComponent(wpShipPhone);
//now insert links for these into billing and shipping sections
var a = document.createElement("a");
var linkText = document.createTextNode("Verify with Whitepages");
a.href = billAPIURL;
a.target = "_blank";
a.appendChild(linkText);
a.style.font = "bold 14px calibri";
a.style.color = "#F37320";
document.getElementById('billingHead').appendChild(a);
var a = document.createElement("a");
var linkText = document.createTextNode("Verify with Whitepages");
a.href = shipAPIURL;
a.target = "_blank";
a.appendChild(linkText);
a.style.font = "bold 14px calibri";
a.style.color = "#F37320";
document.getElementById('shippingHead').appendChild(a);
}