/************************************************************************************/ /* $Revision: 141741 $ * $Id: cmtaggingservices.js.txt 141741 2010-03-18 11:41:39Z cmichael $ * * Author: Coremetrics/PSD * Coremetrics v1.1, 2010/03/18 * COPYRIGHT 1999-2008 COREMETRICS, INC. * ALL RIGHTS RESERVED. U.S.PATENT PENDING * Disclaimer: Coremetrics is not responsible for hosting or maintenance or this file * */ /************************************************************************************/ //Production data warehouse flag cmSetProduction(); /*===========================GLOBAL VARIABLES ===============================*/ // options for debug mode when sending tag: // 1: only alert // 2: only send tag // 3: alert & send tag var G_PS_DEBUG_MODE = 2; var G_PS_ARR_DOMAIN = new Array("platinumdiamonds.co.uk");//value must be one array of domains or null // current page url var G_PS_URL_PATH = "" + document.location.href.toLowerCase(); var G_PS_PATHNAME = document.location.pathname.toLowerCase(); var G_PS_QUERYSTRING = document.location.search.toLowerCase(); var G_PS_URL_REFERRER = document.referrer.toLowerCase(); var G_PS_COOKIE_LIFETIME = 432000; // 5*24*60*60 = 5 days // cookie name var G_PS_COOKIE_CATID = "PS_CATID"; var G_PS_COOKIE_PROD_CATID = "PS_PROD_CATID"; var G_PS_COOKIE_PROFILE = "PS_PROFILE"; var G_PS_COOKIE_FLAG = "PS_FLAG"; // used as a "session" variable to handle events between pages // current category ID while browsing/searching/refining, etc var G_PS_CUR_CATID = null; var G_PS_COOKIE_SEARCH_TERM = "PS_SEARCH_TERM"; var G_PS_COOKIE_SHOP9 = "PS_SHOP9"; var G_PS_COOKIE_ORDER = "PS_ORDER"; var G_PS_COOKIE_BILLING = "PS_BILLING"; /*========================= END GLOBAL VARIABLES =============================*/ /*=========================== BEGIN NAVIGATION ===============================*/ if(G_PS_URL_PATH.search(/platinumdiamonds\.co\.uk/i) >= 0){ var INTERVAL_ID_Arr = new Array(); psClearInterval(INTERVAL_ID_Arr); if (psIsSearchView()) { psPostSearchView(); INTERVAL_ID_Arr.push(window.setInterval("psHijackAddFromQuickLook()", 3000)); } else if (psIsProductView()) { psPostProductView(); psHijackQuickLookFromRelated(); psHijackViewedRelatedItems(); INTERVAL_ID_Arr.push(window.setInterval("psHijackAddFromQuickLook()", 3000)); } else if (psIsCartView()) { psPostCartView(); psHijackGoogleCheckout(); } else if (psIsOrderView()) { psPostOrderView(); } else if(G_PS_PATHNAME.search(/\/wishlist/gi) >= 0){ psHijackAddFromWishList(); psCreatePageviewTag("Wishlist", "Footer Links", null, null); psSetCookie(G_PS_COOKIE_CATID, "Wishlist"); } else if(G_PS_PATHNAME.search(/\/products\/compare/gi) >= 0){ psCreatePageviewTag("Compare Products", "Compare", null, null); } else { psPostPageview(); } // Post registration tags as user login/create/update profile successfully psPostRegistrationTags(); psHijackCompare(); psHijackQuickLook(); psHijackPreviouslyViewedItems(); psHijackViewFromMiniBasket(); if(G_PS_PATHNAME == "/members/" || G_PS_PATHNAME == "/members/addresses" || G_PS_PATHNAME == "/members/summary"){ psHijackRegistration(); } if(psIsSearchView() == false){ psSetCookie(G_PS_COOKIE_SEARCH_TERM, "", "delete"); } } function psHijackAccountSetting(){ var pForm = document.getElementById("content"); if(psCheckElementExist(pForm)){ pFrom = pForm.getElementsByTagName("form")[0]; if(psCheckElementExist(pFrom)){ pFrom.Oldf = pFrom.onsubmit; pFrom.onsubmit = function(){ psSetCookie(G_PS_COOKIE_FLAG, "ACCOUNTSETTINGS"); if (this.Oldf != null){ return this.Oldf(); } } } } } function psEditSettingSuccessful() { return (psGetInnerText(document.body.innerHTML).toUpperCase().indexOf("YOUR DETAILS WERE SUCCESSFULLY UPDATED")>=0); } function psPostRegistrationTags() { var flag = psGetCookie(G_PS_COOKIE_FLAG); flag = (flag != null ? flag.toUpperCase() : ""); if ((flag == "LOGIN" && G_PS_PATHNAME == "/members/summary") || (flag == "CREATEUSER" && G_PS_PATHNAME == "/members/" && psSignUpSuccessful()) || (flag == "UPDATEPROFILE" && G_PS_PATHNAME == "/members/addresses" && psUpdateSuccessful()) || (flag == "ACCOUNTSETTINGS" && G_PS_PATHNAME == "/members/settings" && psEditSettingSuccessful())) { var uP = new psProfile(); if (uP.readProfile()) // get user profile from cookie { psCreateRegistrationTag(uP.cusId, uP.email, uP.city, uP.state, uP.zipcode, uP.newsletter, uP.subscribe); psSetCookie(G_PS_COOKIE_FLAG, "", "delete"); } } } function psHijackRegistration() { // Hijack the login button var nodes = document.getElementsByName("login"); if (nodes.length > 0) { if (psGetCookie(G_PS_COOKIE_FLAG) == "LOGIN") psSetCookie(G_PS_COOKIE_FLAG, ""); // Clear flag nodes[0].OldFunc = nodes[0].onclick; nodes[0].onclick = function() { var uP = new psProfile(); if (uP.writeLoginProfile()) psSetCookie(G_PS_COOKIE_FLAG, "LOGIN"); // Flag cookie if (this.OldFunc != null) return this.OldFunc(); } } // Hijack the sign-up button nodes = document.getElementsByName("signup"); if (nodes.length > 0) { if (psGetCookie(G_PS_COOKIE_FLAG) == "CREATEUSER") psSetCookie(G_PS_COOKIE_FLAG, ""); // Clear flag nodes[0].OldFunc = nodes[0].onclick; nodes[0].onclick = function() { var uP = new psProfile(); if (uP.writeNewUserProfile()) psSetCookie(G_PS_COOKIE_FLAG, "CREATEUSER"); // Flag cookie if (this.OldFunc != null) return this.OldFunc(); } } // Hijack the address book if (G_PS_PATHNAME == "/members/addresses" && G_PS_URL_PATH.search(/edit\=188/gi) >= 0) { var submitNode = document.getElementsByName("submit"); if (submitNode) { if (submitNode[0].value.toUpperCase() == "UPDATE CONTACT DETAILS") { submitNode[0].OldFunc = submitNode[0].onclick; submitNode[0].onclick = function() { // Capture new user profile to persist to cookie var uP = new psProfile(); if (uP.writeUserAddress()) psSetCookie(G_PS_COOKIE_FLAG, "UPDATEPROFILE"); // Flag cookie // // Invoke original function if (this.OldFunc != null) return this.OldFunc(); } } } } // Hijack the logout button to clear profile cookie if (G_PS_PATHNAME == "/members/summary") { var nodes = document.getElementsByTagName("a"); if (nodes) { for (var i = 0; i < nodes.length; i++) { if (psGetInnerText(nodes[i]).toUpperCase() == "SIGN OUT") { nodes[i].OldFunc = nodes[i].onclick; nodes[i].onclick = function() { psSetCookie(G_PS_COOKIE_PROFILE, "", "delete"); // // Invoke original function if (this.OldFunc != null) return this.OldFunc(); } break; } } } } } function psIsNoProductsPage(){ var pContent = document.getElementById("content"); if(psCheckElementExist(pContent)){ var pH2s = pContent.getElementsByTagName("h2"); if(psCheckArrayExist(pH2s)){ for(var i=0; i< pH2s.length; i++){ if(pH2s[i].innerHTML.search(/There\s+are\s+no\s+products\s+in\s+this\s+area/gi) >= 0){ return true; break; } } } } } function psIsSearchView() { var sTerm = null; if(G_PS_URL_PATH.search(/\?search\=/gi) >= 0){ sTerm = psHtmlDecode(unescape(psGetValueFromUrl(G_PS_URL_PATH ,"search").replace(/\+/gi, " "))); if(psIsNearlySearch()){ sTerm = "Soundex: " + sTerm; } psSetCookie(G_PS_COOKIE_SEARCH_TERM, sTerm); return true; } var pContent = document.getElementById("content"); if(psCheckElementExist(pContent)){ var pStrongs = pContent.getElementsByTagName("strong"); if(psCheckArrayExist(pStrongs)){ for(var i=0; i< pStrongs.length; i++){ if(pStrongs[i].innerHTML.search(/Product\s+Results\s+for/gi) >= 0){ return true; break; } } } var pDivs = psGetElementsByClassName(pContent, "div", "infobox notfound"); if(psCheckArrayExist(pDivs)){ for(var i=0; i< pDivs.length; i++){ if(pDivs[i].innerHTML.search(/We\s+did\s+not\s+find\s+any\s+results\s+for/gi) >= 0){ var tmp = pDivs[i].getElementsByTagName("p")[0]; if(psCheckElementExist(tmp)){ sTerm = tmp.innerHTML.split(/We\s+did\s+not\s+find\s+any\s+results\s+for/gi)[1]; sTerm = "Soundex: " + psTrim(psHtmlDecode(unescape(sTerm))); psSetCookie(G_PS_COOKIE_SEARCH_TERM, sTerm); } return true; break; } } } } if(psIsNoProductsPage() == true && psGetCookie(G_PS_COOKIE_CATID) == "search"){ return true; } return false; } function psIsProductView() { var pProDes = document.getElementById("productdescription"); if(psCheckElementExist(pProDes)){ return true; } return false; } function psIsCartView() { if(G_PS_URL_PATH.search(/\/basket/gi) >= 0){ return true; } return false; } function psIsOrderView() { if(G_PS_PATHNAME.search(/\/checkout\/order\-complete/gi) >= 0){ return true; } return false; } /*============================ END NAVIGATION ================================*/ /*===================== BEGIN TAGGING BUSSINESS LOGIC ========================*/ function psIsNearlySearch(){ var pContent = document.getElementById("content"); if(psCheckElementExist(pContent)){ var pNotfoundBox = psGetElementsByClassName(pContent, "div", "infobox notfound"); if(psCheckArrayExist(pNotfoundBox)){ var TagPs = pNotfoundBox[0].getElementsByTagName("p"); if(psCheckArrayExist(TagPs)){ for(var p=0; p= 0){ return true; } } } } } return false; } function psPostSearchView() { G_PS_CUR_CATID = "SEARCH"; var sResult = "0"; var n = 1; var pageId = null; var sTerm = null; var pContent = document.getElementById("content"); if(psCheckElementExist(pContent)){ var pFilters = psGetElementsByClassName(pContent, "div", "filter_div"); if(psCheckArrayExist(pFilters)){ var pPageInfos = psGetElementsByClassName(pFilters[0], "div", "paging-info"); if(psCheckArrayExist(pPageInfos)){ var pSpans = psGetElementsByClassName(pPageInfos[0], "span", "showing"); if(psCheckArrayExist(pSpans)){ sResult = pSpans[0].innerHTML; sResult = psTrim(psHtmlDecode(unescape(sResult))); sResult = sResult.split(/of/gi); sResult = psTrim(sResult[sResult.length -1]); } } } var pStrongs = pContent.getElementsByTagName("strong"); if(psCheckArrayExist(pStrongs)){ for(var i=0; i< pStrongs.length; i++){ if(pStrongs[i].innerHTML.search(/Product\s+Results\s+for/gi) >= 0){ sTerm = pStrongs[i].innerHTML.split(/for/i)[1]; sTerm = psTrim(psHtmlDecode(unescape(sTerm))); break; } } } } if(sTerm == null || sTerm == ""){ sTerm = psGetCookie(G_PS_COOKIE_SEARCH_TERM); } if(G_PS_PATHNAME.search(/page/gi) >= 0){ var psPaths = G_PS_PATHNAME.split(/page/gi); n = psPaths[psPaths.length -1].replace(/\.html/gi, ""); n = psTrim(n); } if(psIsNoProductsPage()){ if(n == 1){ pageId = "SEARCH UNSUCCESSFUL"; } else{ pageId = "SEARCH SUCCESSFUL PAGE [" + n + "](no results on page)"; } } else{ pageId = "SEARCH SUCCESSFUL PAGE [" + n + "]"; } if(psIsNearlySearch()){ pageId = "SEARCH SUCCESSFUL(Soundex)"; } psSetCookie(G_PS_COOKIE_CATID, G_PS_CUR_CATID); psCreatePageviewTag(pageId, G_PS_CUR_CATID, sTerm, sResult); } function psPostPageview(){ var pId = null; var pcatId = null; var psBread= document.getElementById("breadcrumb"); if(psCheckElementExist(psBread)){ var psContent = document.getElementById("content"); if(psCheckElementExist(psContent)){ var psH1tags = psContent.getElementsByTagName("h1"); if(psCheckArrayExist(psH1tags)){ var psAtags = psH1tags[0].getElementsByTagName("a"); if(psCheckArrayExist(psAtags) == false){ var pTexts = psH1tags[0].innerHTML.split(/\:/gi); pId = pcatId = pTexts[1]; } else{ var pTexts = psH1tags[0].innerHTML.split(/\<\/\a\>/gi); pId = pTexts[pTexts.length -1]; pcatId = psAtags[psAtags.length -1].innerHTML; } } } INTERVAL_ID_Arr.push(window.setInterval("psHijackAddFromQuickLook()", 3000)); } else{ if(G_PS_PATHNAME.search(/\/contact\-us\/*/gi) >= 0 || G_PS_PATHNAME.search(/\/satisfaction\-guarantee\/*/gi) >= 0 || G_PS_PATHNAME.search(/\/sitemap\/*/gi) >= 0 || G_PS_PATHNAME.search(/\/about\-us\/*/gi) >= 0 || G_PS_PATHNAME.search(/\/accessibility\/*/gi) >= 0){ pId = G_PS_PATHNAME.split(/\//gi)[1].replace(/\-/gi, " "); pcatId = "Footer Links"; } else if(G_PS_URL_PATH.search(/\/customer\-information\#returns/gi) >= 0){ pId = "Returns"; pcatId = "Footer Links"; } else if(G_PS_URL_PATH.search(/\/customer\-information\#delivery/gi) >= 0){ pId = "Delivery"; pcatId = "Footer Links"; } else if(G_PS_URL_PATH.search(/\/customer\-information\#privacy/gi) >= 0){ pId = "Privacy Policy"; pcatId = "Footer Links"; } else if(G_PS_URL_PATH.search(/\/why\-platinum\-diamonds\/*/gi) >= 0){ pId = "Why Us"; pcatId = "Footer Links"; } else if(G_PS_URL_PATH.search(/\/members\/\?page\=\/members\/orders/gi) >= 0){ pId = "Order Status"; pcatId = "Footer Links"; } else if(G_PS_PATHNAME.search(/\/help\/*/gi) >= 0){ pId = "FAQ"; pcatId = "Footer Links"; } else if(G_PS_PATHNAME.search(/\/security\/*/gi) >= 0){ pId = "Security Guarantee"; pcatId = "Footer Links"; } else if(G_PS_PATHNAME.search(/\/members\/*/gi) >= 0){ pId = G_PS_PATHNAME.replace(/^\//gi, ""); pId = pId.replace(/\/$/gi, ""); pId = pId.replace(/\//gi, " "); pcatId = "Account Pages"; if(G_PS_PATHNAME == "/members/settings"){ psHijackAccountSetting(); if(psEditSettingSuccessful()){ var uP = new psProfile(); uP.readProfile(); var pEmail = document.getElementById("email_address"); if(psCheckElementExist(pEmail)){ uP.cusId = uP.email = psTrim(psHtmlDecode(unescape(pEmail.value))); } uP.writeProfile(); } } } else if(G_PS_PATHNAME.search(/engagement\-guide\/*/gi) >= 0){ pId = "Engagement Guide"; pcatId = "Guide"; } else if(G_PS_PATHNAME.search(/wedding\-guide\/*/gi) >= 0){ pId = "Wedding Guide"; pcatId = "Guide"; } else if(G_PS_PATHNAME.search(/\/feedback\/*/gi) >= 0){ pId = pcatId = "Feedback"; } else if(G_PS_PATHNAME.search(/\/platinum-guide\/*/gi) >= 0){ pId = "Platinum Guide"; pcatId = "Guide"; } else if(G_PS_PATHNAME.search(/\/checkout\/*/gi) >= 0){ pId = "My Checkout"; pcatId = "Checkout"; psHijackGetBillingAddress(); } else if(psTrim(G_PS_PATHNAME) == "/"){ pId = "Home"; pcatId = "Top Menu"; psHijackViewFromHome(); } else if(psIsNoProductsPage()){ if(psGetCookie(G_PS_COOKIE_CATID) != "search" && G_PS_PATHNAME.search(/\//gi) >= 0){ var Splits = G_PS_PATHNAME.split(/\//gi); if(Splits.length > 2){ pId = Splits[Splits.length -2]; pcatId = Splits[Splits.length -3]; } if(pcatId == null || pcatId == ""){ pcatId = pId; } } } else{ var pCtent = document.getElementById("content"); if(psCheckElementExist(pCtent)){ var H1Tag = pCtent.getElementsByTagName("h1")[0]; if(psCheckElementExist(H1Tag)){ pcatId = pId = psTrim(psHtmlDecode(unescape(H1Tag.innerHTML))); } } } } pId = psCleanPageId(psTrim(psHtmlDecode(pId))); pcatId = psCleanCatId(psTrim(psHtmlDecode(pcatId))); psSetCookie(G_PS_COOKIE_CATID, pcatId); psCreatePageviewTag(pId, pcatId, null, null); } function psSignUpSuccessful() { return (psGetInnerText(document.innerHTML).toUpperCase().indexOf("YOU HAVE SUCCESSFULLY REGISTERED AND MAY NOW LOGIN")>=0); } function psUpdateSuccessful() { return (document.body.innerHTML.toUpperCase().indexOf("YOUR DETAILS HAVE BEEN UPDATED")>=0); } function psHijackCompare(){ var prodId = null; var pComparebtn = psGetElementsByClassName(document, "div", "compareselected_button"); if(psCheckArrayExist(pComparebtn)){ for(var t=0; t= 0){ var Atags = psGetElementsByClassName(pTagLis[i], "a", "compare selected"); if(psCheckArrayExist(Atags)){ if(Atags[0].getAttribute("style") != null && Atags[0].getAttribute("style").search(/inline/gi) >= 0){ var psHrefs = pTagLis[i].getElementsByTagName("a"); if(psCheckArrayExist(psHrefs)){ if(psHrefs[0].href != null && psHrefs[0].href != ""){ if(psHrefs[0].href.search(/\//gi) >= 0){ var prodIds = psHrefs[0].href.split(/\//gi); prodId = prodIds[prodIds.length -1].replace(/\.html/gi, ""); prodId = psTrim(psHtmlDecode(unescape(prodId))); psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prodId, psGetCookie(G_PS_COOKIE_CATID)); } } } } } } } } } if(this.Oldf != null){ return this.Oldf(); } } } } } function psHijackQuickLook(){ var prodId = null; var prodname = null; var psContent = document.getElementById("previouslyviewed"); if(psCheckElementExist(psContent) == false){ psContent = document.getElementById("content"); } if(psCheckElementExist(psContent)){ var pTagLis = psContent.getElementsByTagName("li"); if(psCheckArrayExist(pTagLis)){ for(var i=0; i< pTagLis.length; i++){ var psHrefs = pTagLis[i].getElementsByTagName("a"); if(psCheckArrayExist(psHrefs)){ if(psHrefs[0].href != null && psHrefs[0].href != ""){ if(psHrefs[0].href.search(/\//gi) >= 0){ var prodIds = psHrefs[0].href.split(/\//gi); prodId = prodIds[prodIds.length -1].replace(/\.html/gi, ""); prodId = psTrim(psHtmlDecode(unescape(prodId))); } } } var psDes = psGetElementsByClassName(pTagLis[i], "span", "description"); if(psCheckArrayExist(psDes) == false){ psDes = psGetElementsByClassName(pTagLis[i], "div", "description"); } if(psCheckArrayExist(psDes)){ var psDesTagas = psDes[0].getElementsByTagName("a"); if(psCheckArrayExist(psDesTagas)){ prodname = psTrim(psHtmlDecode(unescape(psDesTagas[0].innerHTML))); } } var pQuickBtn = psGetElementsByClassName(pTagLis[i], "div", "quicklookbutton"); if(psCheckArrayExist(pQuickBtn)){ pQuickBtn[0].id = prodId; pQuickBtn[0].name = prodname; if(pQuickBtn[0].onclick == null){ pQuickBtn[0].Oldf = pQuickBtn[0].onclick; pQuickBtn[0].onclick = function HijackQuickLook(){ var prd = new psProduct(); prd.id = this.id; prd.name = this.name; if(psCheckArrayExist(psDes)){ psSetCookie(G_PS_COOKIE_CATID, "Previously Viewed Items"); } prd.CatId = psGetCookie(G_PS_COOKIE_CATID); psCreateProductviewTag(prd.id, prd.name, prd.CatId); psCreatePageviewTag("QUICK LOOK: " + prd.name + "(" + prd.id + ")", prd.CatId, null, null); if(this.Oldf != null){ return this.Oldf(); } } } } } } } } function psHijackViewFromHome(){ var CurrentCat = null; var psScroll = document.getElementById("scroller"); if(psCheckElementExist(psScroll)){ var pProds = psScroll.getElementsByTagName("li"); if(psCheckArrayExist(pProds)){ for(var i=0; i< pProds.length; i++){ pProds[i].Olf = pProds[i].onclick; pProds[i].onclick = function HijackViewFromHome(){ var Tabs = document.getElementById("tabs"); if(psCheckElementExist(Tabs)){ var psTops = Tabs.getElementsByTagName("li"); if(psCheckArrayExist(psTops)){ for(var i=0; i< psTops.length; i++){ if(psTops[i].getAttribute("class")!= null && psTops[i].getAttribute("class").search(/selected/gi) >= 0){ var Atags = psTops[i].getElementsByTagName("a"); if(psCheckArrayExist(Atags)){ CurrentCat = psTrim(psHtmlDecode(unescape(Atags[0].innerHTML))); } } } } } psSetCookie(G_PS_COOKIE_CATID, CurrentCat); if(this.Olf != null){ return this.Oldf(); } } } } } } function psHijackAddFromWishList(){ var pId =null; var pError = 0; var pDivs = document.getElementById("wishlist_div"); if(psCheckElementExist(pDivs)){ var pTables = psGetElementsByClassName(pDivs, "table", "wishlist"); if(psCheckArrayExist(pTables)){ var pTbodys = pTables[0].getElementsByTagName("tbody"); if(psCheckArrayExist(pTbodys)){ var pTrs = pTbodys[0].getElementsByTagName("tr"); if(psCheckArrayExist(pTrs)){ for(var i=0; i< pTrs.length; i++){ var pItems = psGetElementsByClassName(pTrs[i], "td", "item"); if(psCheckArrayExist(pItems)){ var Atags = pItems[0].getElementsByTagName("a"); if(psCheckArrayExist(Atags)){ if(Atags[0].href != null && Atags[0].href != "" && Atags[0].href.search(/\//gi) >= 0){ var psId = Atags[0].href.split(/\//gi); pId = psId[psId.length -1].replace(/\.html/gi, ""); pId = psTrim(psHtmlDecode(unescape(pId))); } } } var pCenters = psGetElementsByClassName(pTrs[i], "td", "center"); if(psCheckArrayExist(pCenters)){ var pBtns = psGetElementsByClassName(pCenters[1], "input", "rollover"); if(psCheckArrayExist(pBtns)){ pBtns[0].index = i; pBtns[0].Oldf = pBtns[0].onclick; pBtns[0].onclick = function HijackAddFromWishList(){ var pAttr = psGetElementsByClassName(pTrs[this.index], "td", "attr"); if(psCheckArrayExist(pAttr)){ var pSelects = pAttr[0].getElementsByTagName("select"); if(psCheckArrayExist(pSelects)){ pError = pSelects[0].selectedIndex; } } if(pError != 0){ psSetValueToCookie(G_PS_COOKIE_PROD_CATID, pId, "wishlist"); } if(this.Oldf != null){ return this.Oldf(); } } } } } } } } } } function psHijackGetBillingAddress(){ var city = null; var zipcode = null; var pForm = document.getElementById("checkout_form"); if(psCheckElementExist(pForm)){ pForm.Oldf = pForm.onsubmit; pForm.onsubmit = function HijackGetBillingAddress(){ var pCity = document.getElementById("invoice_town"); if(psCheckElementExist(pCity)){ city = psTrim(psHtmlDecode(unescape(pCity.value))); } var pZip = document.getElementById("invoice_postcode"); if(psCheckElementExist(pZip)){ zipcode = psTrim(psHtmlDecode(unescape(pZip.value))); } var add = city + "=^=" + zipcode; psSetCookie(G_PS_COOKIE_BILLING, add); if(this.Oldf != null){ return this.Oldf(); } } } } function psHijackQuickLookFromRelated(){ var prodId = null; var prodname = null; var psContent = document.getElementById("relateditems"); if(psCheckElementExist(psContent)){ var pTagLis = psContent.getElementsByTagName("li"); if(psCheckArrayExist(pTagLis)){ for(var i=0; i< pTagLis.length; i++){ var psHrefs = pTagLis[i].getElementsByTagName("a"); if(psCheckArrayExist(psHrefs)){ if(psHrefs[0].href != null && psHrefs[0].href != ""){ if(psHrefs[0].href.search(/\//gi) >= 0){ var prodIds = psHrefs[0].href.split(/\//gi); prodId = prodIds[prodIds.length -1].replace(/\.html/gi, ""); prodId = psTrim(psHtmlDecode(unescape(prodId))); } } } var psDes = psGetElementsByClassName(pTagLis[i], "span", "description"); if(psCheckArrayExist(psDes)){ var psDesTagas = psDes[0].getElementsByTagName("a"); if(psCheckArrayExist(psDesTagas)){ prodname = psTrim(psHtmlDecode(unescape(psDesTagas[0].innerHTML))); } } var pQuickBtn = psGetElementsByClassName(pTagLis[i], "div", "quicklookbutton"); if(psCheckArrayExist(pQuickBtn)){ pQuickBtn[0].id = prodId; pQuickBtn[0].name = prodname; pQuickBtn[0].Oldf = pQuickBtn[0].onclick; pQuickBtn[0].onclick = function HijackQuickLook(){ var prd = new psProduct(); prd.id = this.id; prd.name = this.name; psCreateProductviewTag(prd.id, prd.name, "related products"); psSetCookie(G_PS_COOKIE_CATID, "related products"); psCreatePageviewTag("QUICK LOOK: " + prd.name + "(" + prd.id + ")", "related products", null, null); if(this.Oldf != null){ return this.Oldf(); } } } } } } } function psHijackPreviouslyViewedItems(){ var psDivs = document.getElementById("previouslyviewed"); if(psCheckElementExist(psDivs)){ var psLiTags = psDivs.getElementsByTagName("li"); if(psCheckArrayExist(psLiTags)){ for(var i=0; i< psLiTags.length; i++){ if(psLiTags[i].onclick == null){ psLiTags[i].Oldf = psLiTags[i].onclick; psLiTags[i].onclick = function HijackPreviouslyViewedItems(){ psSetCookie(G_PS_COOKIE_CATID, "Previously Viewed Items"); if(this.Oldf != null){ return this.Oldf(); } } } } } } } function psHijackViewFromMiniBasket(){ var pBasket = document.getElementById("mini_basket"); if(psCheckElementExist(pBasket)){ var Atags = pBasket.getElementsByTagName("a"); if(psCheckArrayExist(Atags)){ for(var i=0; i< Atags.length; i++){ if(Atags[i].onclick == null || Atags[i].onclick.toString().indexOf("HijackViewFromMiniBasket") < 0){ Atags[i].Oldf = Atags[i].onclick; Atags[i].onclick = function HijackViewFromMiniBasket(){ if(this.href != null && this.href != "" && this.href.search(/\//gi) >= 0){ var psId = this.href.split(/\//gi); var pId = psId[psId.length -1].replace(/\.html/gi, ""); pId = psTrim(psHtmlDecode(unescape(pId))); var pCatId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, pId); if(pCatId == null || pCatId == ""){ pCatId = "Unknown"; } psSetCookie(G_PS_COOKIE_CATID, pCatId); } if(this.Oldf != null){ return this.Oldf(); } } } } } } } function psHijackAddFromProductView(prodId, prodCatId){ var psDes = document.getElementById("productdescription"); if(psCheckElementExist(psDes)){ var Divs = psGetElementsByClassName(psDes, "div", "addtobasket"); if(psCheckArrayExist(Divs)){ var Ins = psGetElementsByClassName(Divs[0], "input", "rollover"); if(psCheckArrayExist(Ins)){ Ins[0].Oldf = Ins[0].onclick; Ins[0].onclick = function HijackAddFromProductView(){ var pAttr = document.getElementById("attribute_1"); if(psCheckElementExist(pAttr)){ var pSelects = pAttr.getElementsByTagName("select"); if(psCheckArrayExist(pSelects)){ var pError = pSelects[0].selectedIndex; if(pError != 0){ psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prodId, prodCatId); } } } if(this.Oldf != null){ return this.Oldf(); } } } } } } function psHijackViewedRelatedItems(){ var psDivs = document.getElementById("relateditems"); if(psCheckElementExist(psDivs)){ var psLiTags = psDivs.getElementsByTagName("li"); if(psCheckArrayExist(psLiTags)){ for(var i=0; i< psLiTags.length; i++){ if(psLiTags[i].onclick == null){ psLiTags[i].Oldf = psLiTags[i].onclick; psLiTags[i].onclick = function HijackPreviouslyViewedItems(){ psSetCookie(G_PS_COOKIE_CATID, "related products"); if(this.Oldf != null){ return this.Oldf(); } } } } } } } function psHijackAddFromQuickLook(){ var pFormQuickAdd = document.getElementById("quicklook_addtobasket"); if(psCheckElementExist(pFormQuickAdd)){ pFormQuickAdd.Olf = pFormQuickAdd.onsubmit; pFormQuickAdd.onsubmit = function HijackAddFromQuickLook(){ var prd = new psProduct(); var Atags = this.getElementsByTagName("a"); if(psCheckElementExist(Atags)){ if(Atags[0].href != null && Atags[0].href != "" && Atags[0].href.search(/\//gi) >= 0){ var psId = Atags[0].href.split(/\//gi); prd.id = psId[psId.length -1].replace(/\.html/gi, ""); prd.id = psTrim(psHtmlDecode(unescape(prd.id))); } } var pInfo = document.getElementById("quicklookinfo"); if(psCheckElementExist(pInfo)){ var pH2s = pInfo.getElementsByTagName("h2"); if(psCheckArrayExist(pH2s)){ prd.name = pH2s[0].innerHTML; prd.name = psTrim(psHtmlDecode(unescape(prd.name))); } var Tagdls = pInfo.getElementsByTagName("dl"); if(psCheckArrayExist(Tagdls)){ for(var p=0; p= 0){ var pdds = psGetElementsByClassName(Tagdls[p], "dd", "ourprice"); if(psCheckArrayExist(pdds)){ prd.price = pdds[0].innerHTML; prd.price = psCleanPrice(prd.price); } } } } } var pIns = document.getElementById("ql_product_quantity"); if(psCheckElementExist(pIns)){ prd.quantity = pIns.value; prd.quantity = psCleanPrice(prd.quantity); } prd.catId = psGetCookie(G_PS_COOKIE_CATID); if(prd.quantity > 0){ psCreateShopAction5Tag(prd.id, prd.name, prd.quantity, prd.price, prd.catId); psDisplayShop5s(); psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prd.id, prd.catId); } if(this.Oldf != null){ return this.Oldf(); } } } } function psHijackGoogleCheckout(){ var pList = document.getElementById("basket_list"); if(psCheckElementExist(pList)){ var pForm = pList.getElementsByTagName("form"); if(psCheckArrayExist(pForm)){ pForm[0].Oldf = pForm[0].onclick; pForm[0].onclick = function HijackGoogleCheckout(){ psCreatePageviewTag("Google Checkout", "Checkout", null, null); if(this.Oldf != null){ return this.Oldf(); } } } } } function psClearInterval(pIds) { for (var i=0; i 0) { psCreateShopAction5Tag(prd.id, prd.name, prd.quantity, prd.price, prd.catId); productList = prd.id + "-_" + prd.name + "-_" + prd.quantity + "-_" + prd.price + "#~" + productList; } } // persist product info to cookie for use in order page since it doens't contain info about items psSetCookie(G_PS_COOKIE_SHOP9, productList); // Make sure to have actual postings psDisplayShop5s(); } function psPostOrderView() { // Update the catId and pageId according to your specification G_PS_CUR_CATID = "CHECKOUT"; psCreatePageviewTag("ORDER COMPLETE", G_PS_CUR_CATID, null, null); var ord = new psOrder(); if (ord.getOrder()) { var uP = new psProfile(); if (uP.getBillingEmail()) // Get billing email from HTML source { uP.readProfile(); if(uP.cusId == null || uP.cusId == ""){ uP.cusId = uP.email; } var add = psGetCookie(G_PS_COOKIE_BILLING); add = add.split("=^="); uP.city = psTrim(psHtmlDecode(unescape(add[0]))); uP.zipcode = psTrim(psHtmlDecode(unescape(add[1]))); uP.writeProfile(); var products = psGetCookie(G_PS_COOKIE_SHOP9); products = products.split("#~"); var prd = new psProduct(); for (var r = 0; r < products.length - 1; r++) // item for each row { if (prd.getItem9(products[r]) && prd.quantity > 0) { psCreateShopAction9Tag(prd.id, prd.name, prd.quantity, prd.price, uP.cusId, ord.id, ord.subtotal, prd.catId); } } // Make sure to have actual postings psDisplayShop9s(); psCreateOrderTag(ord.id, ord.subtotal, ord.shipping, uP.cusId, uP.city, uP.state, uP.zipcode); psCreateRegistrationTag(uP.cusId, uP.email, uP.city, uP.state, uP.zipcode, null, null); psSetCookie(G_PS_COOKIE_PROD_CATID, "", "delete"); psSetCookie(G_PS_COOKIE_FLAG, "", "delete"); psSetCookie(G_PS_COOKIE_BILLING, "", "delete"); psSetCookie(G_PS_COOKIE_PROFILE, "", "delete"); } } } /*====================== END TAGGING BUSSINESS LOGIC =========================*/ /*======================= GENERAL UTILITY FUNCTION ===========================*/ function psGetProductId(idURL) { if (idURL == null) idURL = G_PS_PATHNAME; var buffer = idURL.substring(idURL.lastIndexOf("/") + 1); return buffer.substring(0, buffer.indexOf(".")); } function psProduct() { this.id = null; this.name = null; this.catId = null; this.price = null; this.quantity = null; this.reset = function() { this.id = null; this.name = null; this.catId = null; this.price = null; this.quantity = null; } this.getProduct = function() { try { this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT! var pUrl = G_PS_PATHNAME.replace(/\.html/gi, ""); var pUrls = pUrl.split(/\//gi); this.id = pUrls[pUrls.length -1]; var pprodes = document.getElementById("productdescription"); if(psCheckElementExist(pprodes)){ var pH2s = pprodes.getElementsByTagName("h2"); if(psCheckArrayExist(pH2s)){ this.name = psTrim(psHtmlDecode(unescape(pH2s[0].innerHTML))); } } if(G_PS_URL_REFERRER.search(/\/basket/gi) >= 0 || G_PS_URL_REFERRER.search(/\/compare/gi) >= 0){ this.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id); } if(this.catId == null || this.catId == ""){ this.catId = psGetCookie(G_PS_COOKIE_CATID); } if(this.catId == null || this.catId == ""){ this.catId = "Unknown"; } //psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId); return true; } catch (ex) { return false; } } this.getItem5 = function(itemRow) { try { this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT! // id & name var cellNode = itemRow.cells[1].getElementsByTagName("a")[1]; if(cellNode) { this.id = psGetProductId(cellNode.href); this.name = psGetInnerText(cellNode); } // quantity cellNode = itemRow.cells[2].getElementsByTagName("input")[0]; if (cellNode) { this.quantity = cellNode.value; } // price cellNode = itemRow.cells[3] if (cellNode) { this.price = psCleanPrice(psGetInnerText(cellNode)); } this.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id); if(this.catId == null || this.catId == "") { this.catId = "Unknown"; } return true; } catch (ex) {return false; } } this.getItem9 = function(productInfo) { try { this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT! productInfo = productInfo.split("-_"); if (productInfo.length == 4) { this.id = productInfo[0]; this.name = productInfo[1]; this.quantity = productInfo[2]; this.price = productInfo[3]; } this.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id); return true; } catch (ex) { return false; } } } function psProfile() { this.cusId = null; this.email = null; this.city = null; this.state = null; this.zipcode = null; this.newsletter = null; this.subscribe = null; this.reset = function() { this.cusId = null; this.email = null; this.city = null; this.state = null; this.zipcode = null; this.newsletter = null; this.subscribe = null; } /* * Get user profile from cookie */ this.readProfile = function() { try { this.cusId = psGetCookie(G_PS_COOKIE_PROFILE); if (this.cusId != null) { var buf = this.cusId.split('|'); for (var i=0; i/gi; // question mark means non-greedy if (pTagOjb != null) { var sT = (typeof(pTagOjb) == "object") ? pTagOjb.innerHTML : pTagOjb; // remove all script tags and its content while (sT.search(pattern) > -1) { sT = sT.replace(pattern, ""); } return sT.replace(/\<+.+?\>+/g, ""); } return null; } function psCleanCatId(pCatId) { return (pCatId != null) ? pCatId.replace(/[\'\":,\™\®]/g, "") : null; } function psCleanPageId(pPageId) { return (pPageId != null) ? pPageId.replace(/[\n\t\v\r’\'\"\™\®]/gi, "") : null; } function psCleanProductName(pProductName) { return (pProductName != null) ? pProductName.replace(/[\n\t\v\r’\'\"\™\®]/gi, "") : null; } function psTrim(pStr) { if (pStr == null || typeof(pStr) != "string") return pStr; return (pStr != null) ? pStr.replace(/ |\u00A0/gi, ' ').replace(/^\s+|\s+$/g, '') : null; } function psGetValueFromUrl(pUrl, pKey) { pUrl = (pUrl != null) ? "?" + psTrim(pUrl.toLowerCase()) : null; pKey = (pKey != null) ? psTrim(pKey.toLowerCase()) : null; if (pUrl == null || pKey == null || pUrl.indexOf(pKey) == -1) return null; var start = pUrl.indexOf('&' + pKey + '='); start = (start == -1) ? pUrl.indexOf('?' + pKey + '=') : start; if (start >= 0) { start = start + pKey.length; var end = pUrl.indexOf("&", start); if(end == -1) end = pUrl.length; var middle = pUrl.indexOf("=", start); return pUrl.substring(middle + 1, end); } return null; } function psdGetElementsByClassName(classname, node) { if (!node) { node = document.getElementsByTagName('body')[0]; } var re = new RegExp('\\b' + classname + '\\b'); var els = node.getElementsByTagName('*'); for (var i = 0, j = els.length; i < j; i++) { if (re.test(els[i].className) ) { return els[i]; } } return null; } function psGetTableByClassName(pClassName) { var lstTable = document.getElementsByTagName("table"); if(psCheckArrayExist(lstTable)) { for (var j=0; j -1) tagValue = pTagObj.value; else if (pTagObj.tagName.search(/^SELECT$/i) > -1) { if (pValueFlag == true) tagValue = pTagObj.options[pTagObj.selectedIndex].value; else tagValue = psHtmlDecode(pTagObj.options[pTagObj.selectedIndex].innerHTML);// return label instead of value } else tagValue = psHtmlDecode(pTagObj.innerHTML); } return tagValue; } function psCheckEmail(pEmail) { if (pEmail) { var i = pEmail.search(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/); return (i > -1); } return false; } function psHtmlDecode(pValue) { if (pValue) { pValue = pValue.replace(/ /gi, " "); pValue = pValue.replace(/"/gi, '"'); pValue = pValue.replace(/&/gi, "&"); pValue = pValue.replace(/</gi, "<"); pValue = pValue.replace(/>/gi, ">"); } return pValue; } function psGetMainDomain(pUrl){ var se = /^https*\:\/\/([^\/\:]+)/gi; var domain = (pUrl.search(se) > -1) ? RegExp.$1 : null; if(domain != null) { if(domain.indexOf("www")==0) { domain = domain.substring(4,domain.length); } if(G_PS_ARR_DOMAIN != null) { for(var i =0; i -1) { domain = G_PS_ARR_DOMAIN[i]; break; } } } domain = "." + domain; } return domain; } function psGetDomain(pUrl){ var se = /^https*\:\/\/([^\/\:]+)/gi; return (pUrl.search(se) > -1) ? RegExp.$1 : null; } function psCleanPrice(pPrice) { var pattern = /[^0-9\.]/gi; return (pPrice != null ? pPrice.toString().replace(pattern, "") : null); } function psGetCookie(pCookieName) { var cookies = document.cookie; if (!pCookieName || !cookies) return null; cookies = "; " + cookies.toLowerCase(); var key = "; " + pCookieName.toLowerCase() + "="; var start = cookies.lastIndexOf(key); if (start >= 0) { start = start + key.length; var end = cookies.indexOf(";", start); if (end == -1) end = cookies.length; return unescape(cookies.substring(start, end)); } return null; } function psCookieBase(pCookieName, pCookieValue, pLifeTime) { var pDomain = psGetMainDomain(G_PS_URL_PATH); CC(pCookieName, pDomain);//delete cookie by calling coremetrics's cookie function if(pLifeTime == "delete") { return true; } // set cookie by calling coremetrics's cookie function var expire = (pLifeTime) ? (new Date((new Date()).getTime() + (1000 * pLifeTime))).toGMTString() : null; return CB(pCookieName, escape(pCookieValue), expire, pDomain); } function encodeHtml(strValue) { if (strValue!=null) { strValue = escape(strValue); strValue = strValue.replace(/\//g,"%2F"); strValue = strValue.replace(/\?/g,"%3F"); strValue = strValue.replace(/=/g,"%3D"); strValue = strValue.replace(/&/g,"%26"); strValue = strValue.replace(/@/g,"%40"); } return strValue; } function psSetCookie(pCookieName, pCookieValue, pLifeTime) { if (!pCookieName) { return false; } pCookieValue = (pCookieValue==null)? "null":pCookieValue; if(pLifeTime != "delete") { pCookieName = psTrim(pCookieName); var oldCookieValue = psGetCookie(pCookieName); oldCookieValue = (oldCookieValue==null)? "null":oldCookieValue; var totalSize; if(document.cookie.indexOf(pCookieName)>-1) { totalSize = document.cookie.length + encodeHtml(pCookieValue).length - encodeHtml(oldCookieValue).length; } else { totalSize = document.cookie.length + encodeHtml(pCookieValue).length + encodeHtml(pCookieName).length; } if(totalSize > 3500) { return false; } } psCookieBase(pCookieName,pCookieValue,pLifeTime); } function psSetValueToCookie(pCookieName, pKey, pValue) { if (!pCookieName || !pKey) { return false; } pCookieName = psTrim(pCookieName); pKey = (pKey != null) ? "#" + psTrim(pKey).toLowerCase() + "~" : pKey; var catCookie = psGetCookie(pCookieName); catCookie = (catCookie == null) ? "" : catCookie; pValue = (pValue == null) ? "null" : pValue; var oldCatCookie = catCookie; var start = catCookie.indexOf(pKey); var totalsize; if (start >= 0) // Store before -> remove the old value { var oldValue = psGetValueFromCookie(pCookieName,pKey.replace(/[\~\#]/gi,"")); oldValue = (oldValue == null) ? "null" : oldValue; var end = catCookie.indexOf("#", start + pKey.length); if (end == -1) end = catCookie.length; catCookie = catCookie.replace(catCookie.substring(start, end), ""); totalsize = document.cookie.length + encodeHtml(pKey).length + encodeHtml(pValue).length - encodeHtml(oldValue).length; } else { totalsize = document.cookie.length + encodeHtml(pKey).length + encodeHtml(pValue).length; if(document.cookie.indexOf(pCookieName)<0) { totalsize += encodeHtml(pCookieName).length; } } catCookie = pKey + pValue + catCookie; var cookieArray = null; //Check existed ? while (totalsize > 3500) { var l1 = encodeHtml(catCookie).length;//length before pop cookieArray = catCookie.split("#"); cookieArray.pop(); catCookie = cookieArray.join("#"); var l2 = encodeHtml(catCookie).length;//length after pop totalsize -= (l1-l2); } if(catCookie == null || catCookie == "") { catCookie = oldCatCookie; } // Save to cookie psCookieBase(pCookieName, catCookie, G_PS_COOKIE_LIFETIME); } function psGetValueFromCookie(pCookieName, pKey) { // "normalize" input parameters pCookieName = psTrim(pCookieName); pKey = (pKey != null) ? "#" + psTrim(pKey).toLowerCase() + "~" : pKey; // extract catId associated with the specified key (pKey) var catCookie = psGetCookie(pCookieName); if (catCookie != null) { var start = catCookie.indexOf(pKey); if (start >=0 ) { start = start + pKey.length; var end = catCookie.indexOf("#", start); if (end == -1) end = catCookie.length; return catCookie.substring(start, end); } return null; } return null; } function psGenerateRandomValue() { var dtDate = new Date(); var cusRandom = (dtDate.getTime()%10000000) + (Math.floor(Math.random()*10000)); return cusRandom; } function psShorttenPageID(pLink) { var temp1 = pLink; if (temp1 != null) { temp1 = (temp1.length > 255) ? temp1.substr(0, 255) : temp1; } return temp1; } function psGetElementByName(tagName,elementName){ // return the first element var tags = document.getElementsByTagName(tagName); if(psCheckArrayExist(tags)){ for(var i=0; i