/*****************************************************************************/
/* $Revision: $
 * $Id: $
 *
 * Author: Coremetrics/Infonam 
 * Coremetrics  v8.3, 2011/09/28
 * COPYRIGHT 1999-2008 COREMETRICS, INC. 
 * ALL RIGHTS RESERVED. U.S.PATENT PENDING
 * Disclaimer: Coremetrics is not responsible for hosting or maintenance or this file
 *
 */
/*****************************************************************************/
/*===========================GLOBAL VARIABLES ===============================*/
var G_PS_DEBUG_MODE 		= 2;
var G_PS_ARR_DOMAIN 		= ["zones.com", "maczone.com", "zonescs.com"];
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 	= 31536000; 
var G_PS_COOKIE_PROD_CATID 	= "PS_PROD_CATID";
var G_PS_COOKIE_PROFILE 	= "PS_PROFILE";
var G_PS_COOKIE_FLAG 		= "PS_FLAG";	
var G_PS_COOKIE_CATID 		= "PS_CATID";	
var G_PS_COOKIE_ID			= "PS_ID";	
/*========================= END GLOBAL VARIABLES =============================*/

/*=========================== BEGIN NAVIGATION ===============================*/
if (G_PS_URL_PATH.search(/(zones|maczone|zonescs)\.com/g) >= 0) {
	psInitialFunction();
	if (psIsCartView()) { psPostCartView(); psHijackAddRecommendPrd(); }
	else if (psIsOrderView()) { psPostOrderView(); }
	else if (psIsAccountView()) { psPostAccountView(); }
	else if (psIsSearchView()) { psPostSearchView(); } 
	else if (psIsAboutUsPages()) { psPostAboutUsPages(); }
	else if (psIsServiceView()) { psPostServiceView(); }
	else if (psIsHomePage()) { psPostHomePage(); } 
	else if (psIsProductView()) { psPostProductView(); } 
	else { psPostPageView(); }
}

function psIsHomePage() {
	return G_PS_PATHNAME.search(/^\/site\/home\//g) >= 0 ||
	document.title.search(/Zones:[\s\w]+Homepage/gi) >= 0 ||
	G_PS_URL_PATH.match(/\/site\/statics\/static\_page\.html\?name\=misc\/healthcare\_home/gi);
}

function psIsProductView() {
	return G_PS_PATHNAME.search(/^\/site\/product\/.*?\.html/g) >= 0;
}

function psIsCartView() {
	return G_PS_PATHNAME.search(/^\/site\/cart\/([\d\w\-\_\/]*)\.html/g) >= 0 ||
	document.body.innerHTML.match(/>\s*SHOPPING\s*CART\s*<\s*\/\s*td/gi);
}

function psIsOrderView() {
	return (!G_PS_PATHNAME.match(/^\/site\/(express)*checkout\/print\.html/g)) && 
	document.body.innerHTML.match(/(Thank\s*you\s*for\s*your\s*order\!|Your\s*order\s*has\s*been\s*sent\s*for\s*Approval\!|Your\s*order\s*number\:)/gi);
}
/*============================ END NAVIGATION ===============================*/


/*===================== BEGIN TAGGING BUSINESS LOGIC ========================*/
function psInitialFunction() {
	if (psIsRegistrationSuccess() && psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_FLAG, "$SendRegist"))) {
		psSendRegistration();
	}
	psDeleteKey_Value(G_PS_COOKIE_FLAG, "$SendRegist");
	psDoHijackForm("ZB_LoginForm", "Login"); psHijackSearch();
	if (!psIsSearchView()) { psDeleteKey_Value(G_PS_COOKIE_FLAG, "$Search"); }
	if (G_PS_PATHNAME.search(/(expresscheckout|checkout)\/(index|process\_submit|payment|login)\.html/gi) > -1 ||
		(document.body.innerHTML.search(/BILLING\s*INFORMATION/gi)>-1 && document.body.innerHTML.search(/Credit\s*Card\s*Number/gi)>-1)) {
		if (psCheckArrayExist(pForm = document.getElementsByTagName("form"))) {
			for (i = 0; i < pForm.length; i++) {
				if (psIsEqual(pForm[i].name, "frm_express_purchase") || psIsEqual(pForm[i].name, "frm_payment")) {
					psHijackSaveProfile(pForm[i]);
					break;
				}
			}
		}
	}
	if (document.body.innerHTML.search(/SHIPPING\/BILLING\s*DETAILS/gi) > -1) {
		if (psCheckArrayExist(pTbody = document.getElementsByTagName("tbody"))) {
			var uP = new psProfile();
			uP.readProfile();
			for (i = 0; i < pTbody.length; i++) {
				if (pTbody[i].innerHTML.search(/Bill(\&nbsp\;|\s)*to(\&nbsp\;|\s)*\:/gi) > -1 && pTbody[i].innerHTML.search(/Ship(\&nbsp\;|\s)*To(\&nbsp\;|\s)*\:/gi) < 0) {
					if (psCheckArrayExist(pTr = pTbody[i].getElementsByTagName("tr")) && pTr.length > 2) {
						uP.city = psCheckArrayExist(city = psTrim(psHtmlDecode(psCleanPageId(psCleanHtmlTag(unescape(pTr[pTr.length - 3].innerHTML)))))) ? city.substring(0, city.lastIndexOf(",")) : uP.city;
						pAddr = psCheckArrayExist(addr = psTrim(psHtmlDecode(psCleanPageId(psCleanHtmlTag(unescape(pTr[pTr.length - 2].innerHTML)))))) ? addr.substring(0, addr.lastIndexOf(",")) : null;
						pAddr = psCheckArrayExist(addr) ? addr.split(" ") : addr;
						uP.state = psCheckArrayExist(pAddr[0]) ? pAddr[0] : uP.state;
						uP.zipcode = psCheckArrayExist(pAddr[pAddr.length - 1]) ? pAddr[pAddr.length - 1] : uP.zipcode;
						uP.writeProfile();
					}
					break;
				}
			}
		}
	}
	if (G_PS_PATHNAME.match(/^\/site(\/list)*?\/compare[\.\/]/g)) {
		psHijackAddComparePrd();
	} else if (G_PS_PATHNAME.search(/expresscheckout\/index\.html/gi) > -1) {
		psDoHijackForm("ZB_LoginForm");
	}
	var uP = new psProfile();
	uP.readProfile();
	if(!psIsEqual(psGetCookie("Zones_UserName"),uP.cusId) && document.body.innerHTML.search(/\/logout\.html/gi)>-1){
		uP.cusId = psGetCookie("Zones_UserName");
		uP.email = uP.city = uP.state = uP.zipcode = null;
		uP.writeProfile();
		psCreateRegistrationTag(uP.cusId,uP.email,uP.city,uP.state,uP.zipcode);
	}
}

function psHijackSaveProfile(pElem) {
	if (pElem.onsubmit == null || pElem.onsubmit.toString().indexOf("HijackSaveProfile") < 0) {
		pElem.oldFunc = pElem.onsubmit;
		pElem.onsubmit = function HijackSaveProfile() {
			var pUsername = null, pEmail = null, pCity = null, pState = null, pZipCode = null;
			if (psCheckArrayExist(pInput = pElem.getElementsByTagName("input"))) {
				for (i = 0; i < pInput.length; i++) {
					if (psIsEqual(pInput[i].name, "username")) {
						pUsername = psCheckArrayExist(username = pInput[i].value) ? username : null;
					}
					if (psIsEqual(pInput[i].name, "txt_email_addr")) {
						pEmail = psCheckArrayExist(email = pInput[i].value) ? email : null;
					}
					if (psIsEqual(pInput[i].name, "txt_city")) {
						pCity = psCheckArrayExist(city = pInput[i].value) ? city : null;
					}
					if (psIsEqual(pInput[i].name, "txt_zip")) {
						pZipCode = psCheckArrayExist(zipcode = pInput[i].value) ? zipcode : null;
					}
				}
			}
			if (psCheckArrayExist(pSelect = pElem.getElementsByTagName("select"))) {
				for (i = 0; i < pSelect.length; i++) {
					if (psIsEqual(pSelect[i].name, "lst_state")) {
						pState = psCheckArrayExist(state = pSelect[i].value) ? state : null;
						break;
					}
				}
			}
			if (!psCheckArrayExist(pCity) && !psCheckArrayExist(pState) && !psCheckArrayExist(pZipCode)) {
				if (psCheckArrayExist(pTr = document.getElementsByTagName("tr"))) {
					for (i = 0; i < pTr.length; i++) {
						if (pTr[i].innerHTML.search(/BILLING\s*INFORMATION\s*\:/gi) > -1 && pTr[i].innerHTML.search(/SHIPPING\s*ADDRESS/gi) < 0) {
							pAddr = !psCheckArrayExist(psTrim(psHtmlDecode(psCleanHtmlTag(psCleanPageId(unescape(pTr[i + 1].innerHTML)))))) ? pTr[i + 2] : pTr[i + 1];
							if (psCheckArrayExist(pTr = pAddr.getElementsByTagName("tr")) && pTr.length > 3) {
								pEmail = psCheckArrayExist(email = psTrim(psHtmlDecode(psCleanHtmlTag(psCleanPageId(unescape(pTr[pTr.length - 1].innerHTML))))).replace(/Email\s*\:\s*/gi, "")) ? email : pEmail;
								pAddr  = psCheckArrayExist(addr = psTrim(psHtmlDecode(psCleanHtmlTag(psCleanPageId(unescape(pTr[pTr.length - 3].innerHTML)))))) ? addr.split(" ") : null;
								pCity  = psCheckArrayExist(city = psTrim(psHtmlDecode(psCleanHtmlTag(psCleanPageId(unescape(pTr[pTr.length - 4].innerHTML)))))) ? city : pCity;
								if (psCheckArrayExist(pAddr) && pAddr.length > 1) {
									pState   = psCheckArrayExist(pAddr[0]) ? pAddr[0] : pState;
									pZipCode = psCheckArrayExist(pAddr[1]) ? pAddr[1] : pZipCode;
								}
							}
							break;
						}
					}
				}
			}	
			var uP = new psProfile();
			uP.readProfile();
			pUsername = psCheckArrayExist(pUsername) ? pUsername : psTrim(psHtmlDecode(unescape(psGetCookie("Zones_UserName"))));
			uP.cusId  = psCheckArrayExist(pUsername) ? pUsername : uP.cusId;
			uP.email  = pEmail;
			pCity 	  = psTrim(pCity);
			uP.city   = pCity.search(/\,$/gi) > -1 ? psTrim(pCity.substring(0, pCity.length - 1)) : pCity;
			uP.state  = pState;
			uP.zipcode = pZipCode;
			psSetValueToCookie(G_PS_COOKIE_FLAG, "$ProfileTemp", uP.cusId + "|" + uP.email + "|" + uP.city + "|" + uP.state + "|" + uP.zipcode);
			psSetValueToCookie(G_PS_COOKIE_FLAG, "$SendRegist", "yes");
			if (this.oldFunc != null) { return this.oldFunc(); }
		};
	}
}

 function psIsSearchView() {
 	return G_PS_PATHNAME.search(/(search|refine|search\_within|compare|search\_similar)\.html/gi) > -1;
 }

function psIsServiceView() {
	if (psCheckArrayExist(pTable = psGetElementsByClassName(document, "td", "ppdefaulttext"))) {
		for (i = 0; i < pTable.length; i++) {
			if (pTable[i].innerHTML.search(/Zones\s*Professional\s*Services/gi) > -1) { return true; }
		}
	}
	return false;
}

function psHijackSearch() {
	window.setInterval(function() {
		if (psCheckArrayExist(pForm = document.getElementsByTagName("form"))) {
			for (i = 0; i < pForm.length; i++) {
				if (psIsEqual(pForm[i].name, "search")) {
					psDoHijackSearch(pForm[i], "onsubmit", "LLTyped");
					break;
				}
			}
		}
		if (psCheckElementExist(pSearchSuggestion = document.getElementById("searchsuggestion"))) {
			psDoHijackSearch(pSearchSuggestion, "onclick", "LLTyped");
		}
	}, "1000");
}

function psHijackGuideSearch_TopMenu() {
	window.setInterval(function() {
		if (psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_FLAG, "$Search")) &&
		(psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "dimvalname")) || psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "ppfealinks")))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "LLGuided");
			}
		}
		if (psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "ProductMenu")) || psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "ProductMenu3")) || psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "ProductMenu1")) || psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "ProductMenu2"))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "");
			}
		}
		if (psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "dl1"))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "");
			}
		}
		if (psCheckArrayExist(pA = psGetElementsByClassName(document, "a", "dl2"))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "");
			}
		}
		if (psCheckElementExist(pCatTable = document.getElementById("category")) && psCheckArrayExist(pA = pCatTable.getElementsByTagName("a"))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "");
			}
		}
		if (psCheckArrayExist(pCatTable = psGetElementsByClassName(document, "ul", "sf-menu sf-js-enabled sf-shadow")) && psCheckArrayExist(pA = pCatTable[0].getElementsByTagName("a"))) {
			for (i = 0; i < pA.length; i++) {
				psDoHijackSearch(pA[i], "onclick", "");
			}
		}
	}, "1000");
}

function psDoHijackSearch(pElem, pEvent, pPageId) {
	if (pElem[pEvent] == null || pElem[pEvent].toString().indexOf("DoHijackSearch") < 0) {
		pElem.oldFunc = pElem[pEvent];
		pElem[pEvent] = function DoHijackSearch() {			
			psSetValueToCookie(G_PS_COOKIE_FLAG, "$Search", pPageId);
			if (this.oldFunc != null) { return this.oldFunc(); }
		};
	}
}

function psPostSearchView() {
	psHijackGuideSearch_TopMenu();
	psHijackAddFromList(); psHijackAddHorizontalPrd();
	var pPageId = "LLTyped", pCatId = "Search";
	var sTerm = null, sResult = 0, pPageNo = 1;
	if (G_PS_PATHNAME.search(/search\_similar\.html/gi) > -1) {
		psSetValueToCookie(G_PS_COOKIE_FLAG, "$Search", "Similar Products");
	}
	if (G_PS_PATHNAME.search(/compare\.html/gi) > -1) {
		pPageId = "LLCompare";
	} else if (!psCheckArrayExist(G_PS_URL_REFERRER) && psCheckArrayExist(psGetElementsByClassName(document, "span", "categorybvheader"))) {
		pPageId = "BVLanding";
		var pZone = "ZBS";
		if (psCheckArrayExist(psGetCookie("ZBS_Zone"))) {
			pZone = psGetCookie("ZBS_Zone");
		} else if (psCheckArrayExist(pTD = psGetElementsByClassName(document, "td", "menuRegular")) &&
		psCheckArrayExist(pA = pTD[0].getElementsByTagName("a"))) {
			pZone = psGetValueFromUrl(pA[0].href, "zone");
		}
		pPageId = (!psCheckArrayExist(pZone) ? "ZBS" : pZone.toUpperCase()) + pPageId;			
		psSetValueToCookie(G_PS_COOKIE_FLAG, "$Search", pPageId);
	} else if (!psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_FLAG, "$Search"))) {
		pPageId = pCatId = null;
		var pHead = psGetElementsByClassName(document, "span", "categorybvheader");
		if (!psCheckArrayExist(pHead)) {
			pHead = psGetElementsByClassName(document, "span", "homepagedefaultbold");
		}
		if (psCheckArrayExist(pHead)) {
			pPageId = unescape(psTrim(psHtmlDecode(pHead[0].innerHTML.replace(/(<.*?>|<\!\-\-|\-\-\>)/g, ""))));
			if (pPageId.match(/^(Systems|(Hard|Soft)ware|Networking|Storage|Accessories|Services)$/gi)) {
				pCatId = pPageId;
			} else {
				var pSubManu = document.getElementById("dimension_name");
				if (pSubManu) {
					pSubManu = psTrim(pSubManu.innerHTML.replace(/(<.*?>|<\!\-\-|\-\-\>)/g, ""));
					if (pSubManu.match(/^(Systems|(Hard|Soft)ware|Networking|Storage|Accessories|Services)$/gi)) {
						if (psCheckArrayExist(psGetHeadingText())) {
							pPageId = pCatId = pSubManu + ">" + psGetHeadingText();
						} else if (document.title.match(/Zones\:\s*Zones\s*Results/gi)) {
							pPageId = pCatId = pSubManu;
						}
					}
				}
			}
		}
		if (!pPageId || !pCatId) {
			var pDocTitle = unescape(psHtmlDecode(psTrim(document.title.replace(/^[\w\s]*Zones*\s*\:\s*/i, ""))));
			if (pDocTitle.match(/^[^:>]+\s*:\s*[^:>]+\s*>([^:>]+\s*:\s*[^:>]+)+/g)) {
				var pStrArr = pDocTitle.split(">");
				for (var k = 1; k < pStrArr.length; k++) {
					if (pStrArr[k].indexOf(":") >= 0) {
						pStrArr[k] = psTrim(pStrArr[k].substr(pStrArr[k].indexOf(":") + 1, pStrArr[k].length));
					}
				}
				var pIndex = 1;
				if (pStrArr[1].indexOf("$") >= 0) {
					var pFirst = psTrim(pStrArr[0].split(":")[0]);
					var pSecond = psTrim(pStrArr[0].split(":")[1]);
					pPageId = pCatId = psIsEqual(pFirst, pSecond)? pFirst : (pFirst.match(/clearance/gi)? pSecond : pFirst + ">" + pSecond);
				} else {
					pPageId = pCatId = psTrim(pStrArr[0].substr(pStrArr[0].indexOf(":") + 1, pStrArr[0].length)) + ">" + pStrArr[1];
					pIndex++;
				}
				if (pStrArr.length > pIndex) {
					for (k = pIndex; k < pStrArr.length; k++) {
						pPageId += "|" + pStrArr[k];
					}
				}
			} else if (document.title.match(/^Zones\:\s*([^\-$]+)\s\-\s([^\-]+)$/gi)) {
				pPageId = RegExp.$2; pCatId = RegExp.$1;
				if (pCatId == "null") { pCatId = pPageId; }
			} else if (pDocTitle.match(/^([^:>]+)\s*:\s*([^:>]+)$/g)) {
				pPageId = RegExp.$2; pCatId = RegExp.$1;
				if (pPageId == pCatId || pCatId.match(/(clearance|T\-Mobile|Xilinx\s*Standards)/gi)) { pCatId = pPageId; }
				else if(pCatId.match(/^(Systems|(Hard|Soft)ware|Networking|Storage|Accessories|Services)$/gi)) {
					pPageId = pCatId = pCatId + ">" + pPageId;
				}
			}
		}
		if (!pCatId && pPageId) {
			if (psIsEqual(pPageId, "Microsoft IT Featured Peripherals")) {
				pPageId = pCatId = "Peripherals";
				psHijackPeripherals();
			} else if (psIsEqual(pPageId, "Microsoft Windows Phones")) {
				pPageId = pCatId = "Windows Phone Devices";
			}
		}
		if (!pCatId || !pPageId) {
			pPageId = pCatId = G_PS_PATHNAME;
		}
	} else {
		pPageId = psCheckArrayExist(pageId = psGetValueFromCookie(G_PS_COOKIE_FLAG, "$Search")) ? pageId : pPageId;		
		if (psIsEqual(pPageId, "Similar Products")) {
			if (psCheckArrayExist(pHead = psGetElementsByClassName(document, "span", "homepagedefaultbold"))) {
				pPageId = psTrim(psHtmlDecode(unescape(psCleanPageId(pHead[0].innerHTML.replace(/\<(a|\/a|img)[^\>]*\>/gi, "").replace(/\<input[^\>]+\>/gi, ">").replace(/\<\/input\>/gi, "")))));
			}
			pPageId = pPageId.substring(0, pPageId.lastIndexOf(">"));
			pCatId = "Similar Products";
		}
	}
	
	if (psIsEqual(pCatId, "search")) {
		sTerm = psGetValueFromUrl(G_PS_URL_PATH, "txt_search");
		if (!psCheckArrayExist(sTerm) && psCheckArrayExist(pTerm = psGetElementsByClassName(document, "span", "homepagedefaultbold"))) {
			pTerm = psCleanPageId(psHtmlDecode(unescape(pTerm[0].innerHTML.replace(/\<(a|img|\/)[^\>]+\>/gi, "")))).split(/\<input[^\>]+\>/gi);
			pTerm.pop();
			for (i = pTerm.length - 1; i >= 0; i--) {
				if (i == pTerm.length - 1) {
					sTerm = psTrim(pTerm[i]).search(/Search\s*\:\s*(.*)/gi) > -1 ? RegExp.$1 : "-_-" + psTrim(pTerm[i]);
				} else {
					sTerm += "-_-" + psTrim(pTerm[i]);
				}
			}
		}
		sTerm = pPageId.search(/LLTyped/gi) > -1 && !psCheckElementExist(sTerm) ? "" : sTerm;
		if (sTerm == "") {
			sTerm = sTerm + (psCheckArrayExist(sRefine = psGetValueFromUrl(G_PS_URL_PATH, "txt_refine_search")) ? "-_-" + sRefine : "");
		}
	}
	if (psCheckArrayExist(pageNo = psGetElementsByClassName(document, "td", "ppdefaultbold"))) {
		for (i = 0; i < pageNo.length; i++) {
			if (pageNo[i].innerHTML.search(/of\s*(.+)\s*Products/gi) > -1) {
				sResult = psTrim((RegExp.$1).replace(/\,/gi, ""));
			}
			if (pageNo[i].innerHTML.search(/Page\:/gi) > -1) {
				pPageNo = psTrim(psHtmlDecode(unescape(pageNo[i].innerHTML.replace(/(\<a[^\<]+\<\/a\>|Page\s*\:)/gi, ""))));
				break;
			}
		}
	}
	sTerm = psCheckArrayExist(sTerm) ? psTrim(psHtmlDecode(unescape(sTerm.replace(/\+/gi, " ")))) : sTerm;
	sResult = psCheckElementExist(sTerm) ? sResult : "0";
	var pAttb = null;
	if (pPageId.match(/\|/g)) {
		pAttb = psGetAttValue() + "-_-" + pPageId;
		pPageId = pCatId + ">REFINED";
	} else if (psIsEqual(pCatId, "Search") && G_PS_QUERYSTRING.search(/txt\_refine\_search/gi) > -1) {
		pPageId = "SEARCH RESULTS:REFINED TYPED";
		if (sTerm && sTerm.match(/.*\-\_\-.+/g)) {sTerm = sTerm.substr(0, sTerm.indexOf("-_-"));}
	} else if (sTerm && sTerm.match(/.*\-\_\-.+/g)) {
		pAttb = psGetAttValue() + "-_-" + sTerm.replace(/\-\_\-/g, "|");
		sTerm = sTerm.substr(0, sTerm.indexOf("-_-"));
		pPageId = pPageId + ":REFINED";
	}
	pPageId = pPageId.replace(/(lltyped|llguided)/i, "SEARCH RESULTS");
	pPageId += pPageNo > 1 ? " Page " + pPageNo : "";
	if (psIsEqual(pPageId, "SEARCH RESULTS:REFINED")) {
		sTerm = sResult = null;
	}
	if(psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_FLAG,"$Search")) && document.body.innerHTML.search(/We\s*were\s*unable\s*to\s*find\s*matches\s*to\s*your\s*search/gi)>-1){
		pPageId = "SEARCH UNSUCCESSFUL";
	}
	psCreatePageviewTag(pPageId, pCatId, sTerm, sResult, pAttb);
	psSetCookie(G_PS_COOKIE_CATID, pCatId);
}

function psPostServiceView() {
	var pCatId = "Services", pPageId = "Technology Assessment";
	var pName = psGetValueFromUrl(G_PS_URL_PATH, "name");
	if (psIsEqual(pName, "zps/main")) {
		pPageId = "Services Home";
	} else if (psIsEqual(pName, "zps/wireless")) {
		pPageId = "Wireless Services";
	} else if (psIsEqual(pName, "zps/unified_comm")) {
		pPageId = "Unified Communications";
	} else if (psIsEqual(pName, "zps/sw_lic_mgmt")) {
		pPageId = "Software License Management";
	} else if (psIsEqual(pName, "zps/sw_implementation")) {
		pPageId = "Software Implementation";
	} else if (psIsEqual(pName, "zps/ms_exchange")) {
		pPageId = "Microsoft Exchange Deployment Services";
	} else if (psIsEqual(pName, "zps/ms_sharepoint")) {
		pPageId = "Microsoft SharePoint Implementation";
	} else if (psIsEqual(pName, "zps/itad")) {
		pPageId = "Information Technology Asset Disposition";
	} else if (psIsEqual(pName, "zps/completecare")) {
		pPageId = "CompleteCare Managed Services";
	} else if (psCheckArrayExist(zps = psGetValueFromUrl(G_PS_URL_PATH, "name"))) {
		zps = zps.substring(zps.indexOf("/") + 1, zps.length).split("_");
		pPageId = zps.join(" ");
	}
	psCreatePageviewTag(pPageId, pCatId, null, null);
}

function psHijackPeripherals() {
	var pTable = psGetElementsByClassName(document, "td", "ppdefaulttext");
	if (!psCheckArrayExist(pTable)) { return; }
	pTable = pTable[pTable.length - 1].getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	for (var i = 0; i < pTable.length; i++) {
		if (psIsEqual(pTable[i].parentNode.className, "ppdefaulttext") && pTable[i].innerHTML.match(/\/site\/cart\/add\.html/gi)) {
			var t = i > 1 ? i - 1 : i;
			var pDimName = psGetElementsByClassName(pTable[t], "span", "dimensionname");
			while (!psCheckArrayExist(pDimName) && t > 0 && psCheckArrayExist(pTable[t])) {
				t -= 1;
				pDimName = psGetElementsByClassName(pTable[t], "span", "dimensionname");
			}
			var pCatId = psCheckArrayExist(pDimName) ? psTrim(psHtmlDecode(unescape(psGetInnerText(pDimName[0])))) : "Peripherals";
			var pTblPrd = pTable[i].getElementsByTagName("table");
			if (!psCheckArrayExist(pTblPrd)) {
				continue;
			}
			for (var j = 0; j < pTblPrd.length; j++) {
				if (pTblPrd[j].rows.length > 3) {
					var pTagA = pTblPrd[j].getElementsByTagName("a");
					if (psCheckArrayExist(pTagA)) {
						var prd = new psProduct();
						prd.id = (prd.id = psGetValueFromUrl(pTagA[0].href, "id")) ? prd.id : "unknown";
						prd.name = psTrim(psGetInnerText(pTblPrd[j].rows[1]));
						prd.price = psTrim(psHtmlDecode(unescape(pTblPrd[j].rows[2].innerHTML))).match(/>\s*\$((\d*\,*)*\d*\.*\d*)\s*</) ? RegExp.$1 : psGetInnerText(pTblPrd[j].rows[2]);
						prd.catId = pCatId;
						var pBtnAdd = pTagA[pTagA.length - 1];
						if (pBtnAdd.href && pBtnAdd.href.match(/\/site\/cart\/add/gi)) {
							pBtnAdd.id = prd.id;
							pBtnAdd.name = prd.name;
							pBtnAdd.price = prd.price;
							pBtnAdd.catId = prd.catId;
							pBtnAdd.psOldf = pBtnAdd.onclick;
							pBtnAdd.onclick = function() {
								psCreateShopAction5Tag(this.id, this.name, "1", this.price, this.catId);
								psDisplayShop5s();
								psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId);
								if (this.pdOldf) { return this.psOldf(); }
							};
						}
						if (pTagA[0].href && pTagA[0].href.match(/\/product\/index\.html/gi)) {
							pTagA[0].prdCatId = pCatId;
							pTagA[0].psOldf = pTagA[0].onclick;
							pTagA[0].onclick = function() {
								psSetCookie(G_PS_COOKIE_CATID, this.prdCatId);
								if (this.pdOldf) { return this.psOldf(); }
							};
						}
					}
				}
			}
		}
	}
}

function cmCustomLinkClickHandler(link) { 
	if ((link.href.indexOf(".doc") > -1) || (link.href.indexOf(".docx") > -1) || (link.href.indexOf(".xls") > -1) || (link.href.indexOf(".xlsx") > -1) || (link.href.indexOf(".pdf") > -1) || (link.href.indexOf(".wmv") > -1)) { 
		cmCreatePageviewTag(link.href, "FILE DOWNLOADS"); 
	} 
} 

function psDoHijackForm(pFormName, pPageId) {
	if (psCheckArrayExist(pForm = document.getElementsByTagName("form"))) {
		for (i = 0; i < pForm.length; i++) {
			if (psIsEqual(pForm[i].name, pFormName)) {
				psHijackRegistration(pForm[i], pPageId);
				break;
			}
		}
	}
}

function psIsAccountView() {
	return (document.body.innerHTML.search(/Returning\s*Customers/gi)>-1 && 
			document.body.innerHTML.search(/Login\s*Now/gi)>-1 && 
			document.body.innerHTML.search(/New\s*Customers/gi)>-1) ||
	G_PS_PATHNAME.search(/\/(login(\/body)?|reminder)\/(index|email|login)\.html/gi) > -1 ||
	G_PS_PATHNAME.search(/\/(registration(\/body)?)\/(create|index)\.html/gi) > -1 ||
	document.body.innerHTML.search(/\/images\/corp\/hdr\_myaccount\.gif/gi) > -1 ||
	(document.body.innerHTML.search(/My\s*Account\s*Home/gi) > -1 &&
	document.body.innerHTML.search(/My\s*Lists/gi) > -1 &&
	document.body.innerHTML.search(/Update\s*Account/gi) > -1) ||
	G_PS_URL_PATH.search(/\/site\/home\/index\.html\?zone\=licensing$/gi) > -1 ||
	G_PS_URL_PATH.search(/\/site\/purchase\/index\.html/gi) > -1 ||
	G_PS_PATHNAME.search(/^\/site\/sales\_reporting\/show\_reports\.html/gi) > -1;
}

function psPostAccountView() {
	var pPageId = "";
	if (document.body.innerHTML.search(/Returning\s*Customers/gi) > -1 &&
	document.body.innerHTML.search(/Login\s*Now/gi) > -1 &&
	document.body.innerHTML.search(/New\s*Customers/gi) > -1) {
		pPageId = "My Account Login";
	} else if (G_PS_PATHNAME.search(/\/(login(\/body)?|reminder)\/(index|email|login)\.html/gi) > -1) {
		pPageId = psIsEqual(RegExp.$1, "login") ? "My Account Login" : "Forgot Your Password";
		pPageId += psIsEqual(RegExp.$3, "email") ? " - Success" : "";
	} else if (G_PS_PATHNAME.search(/\/(registration(\/body)?)\/(create|index)\.html/gi) > -1) {
		pPageId = "Registration";
		psDoHijackForm("ZB_RegistrationForm");
	} else if (G_PS_PATHNAME.search(/\/account\/index\.html/gi) > -1) {
		pPageId = "My Account Home";
	} else {
		if (G_PS_PATHNAME.search(/^\/site\/orderreport\/open\_(orders|quotes)\.html/gi) > -1) {
			pPageId = "Open " + RegExp.$1;
		} else if (G_PS_PATHNAME.search(/^\/site\/sales\_reporting\/show\_reports\.html/gi) > -1) {
			pPageId = "Trend Reports";
		} else if (G_PS_URL_PATH.search(/\/site\/home\/index\.html\?zone\=licensing$/gi) > -1) {
			pPageId = "Account Purchasing License";
		} else if (G_PS_PATHNAME.search(/^\/site\/standard\_page\/index\.html/gi) > -1) {
			pPageId = "Account Standards";
			psHijackAddStandardPage();
		} else if (G_PS_PATHNAME.search(/^\/site\/purchase\/index\.html/gi) > -1) {
			pPageId = "Account Purchase Management";
		} else if (G_PS_PATHNAME.search(/^\/site\/zlt\/zlt\_non\_liability\_agreement\.html/gi) > -1) {
			pPageId = "View Non-Liability Agreement";
		} else if (G_PS_PATHNAME.search(/^\/site\/zlt\/(show\_report\_menu|enter_data|)\.html/gi) > -1) {
			pPageId = psIsEqual(RegExp.$1, "enter_data") ? "Agreement/License Data Entry" : "Report Generation";
		} else if (psCheckArrayExist(pHead = psGetElementsByClassName(document, "td", "headingtext"))) {
			pPageId = psTrim(psHtmlDecode(unescape(psCleanHtmlTag(pHead[0].innerHTML))));
		} else {
			if (psCheckArrayExist(pNavMenu = psGetElementsByClassName(document, "a", "navmenu")) ||
			psCheckArrayExist(pNavMenu = psGetElementsByClassName(document, "a", "rightnav"))) {
				for (i = pNavMenu.length - 1; i >= 0; i--) {
					if (pNavMenu[i].href.search(new RegExp(G_PS_PATHNAME, "gi")) > -1) {
						pPageId = psTrim(psHtmlDecode(unescape(psCleanHtmlTag(pNavMenu[i].innerHTML))));
						break;
					}
				}
			}
		}
		if (pPageId.search(/(License\s*Tracker|Contracts|My\s*Lists|Epp\s*Report)/gi) > -1) {
			pPageId = "Account " + pPageId;
		}
		if (psIsEqual(pPageId, "View an Address") || psIsEqual(pPageId, "Name/E-Mail Address")) {
			if (psCheckArrayExist(pForm = document.getElementsByTagName("form"))) {
				for (i = 0; i < pForm.length; i++) {
					if ((pForm[i].innerHTML.search(/Billing\s*Address/gi) > -1 && pForm[i].innerHTML.search(/New\s*Shipping\s*Address/gi) > -1) ||
					(pForm[i].innerHTML.search(/Name\/E\-Mail\s*Address/gi) > -1 && pForm[i].innerHTML.search(/To\s*update\s*your\s*name\s*and\/or\s*e\-mail\s*address/gi) > -1)) {
						psHijackRegistration(pForm[i], pPageId);
						break;
					}
				}
			}
		}
	}
	if (G_PS_PATHNAME.match(/^\/site\/mylists*\//gi)) {
		pPageId = "My Lists";
		psHijackAddMyListPage(); psHijackViewMyListPage();
	}	
	if (!pPageId) {
		pPageId = "Account " + psGetHeadingText();
	}
	psCreatePageviewTag(pPageId, "MyAccount", null, null);
}

function psHijackRegistration(pElem, pPageId) {
	if (pElem.onsubmit == null || pElem.onsubmit.toString().indexOf("HijackRegistration") < 0) {
		pElem.oldFunc = pElem.onsubmit;
		pElem.onsubmit = function HijackRegistration() {
			psRegistration(pElem, pPageId);
			if (this.oldFunc != null) { return this.oldFunc(); }
		};
	}
}

function psRegistration(pElem, pPageId) {
	if (psCheckArrayExist(pInput = pElem.getElementsByTagName("input"))) {
		var uP = new psProfile(); uP.readProfile();
		pUsername = pEmail = pCity = pState = pZipcode = null;
		var pSubmit = 0;
		for (i = 0; i < pInput.length; i++) {
			if (psIsEqual(pInput[i].name, "username")) {
				pUsername = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}
			if (psIsEqual(pInput[i].name, "email")) {
				pEmail 	  = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}
			if (psIsEqual(pInput[i].name, "zipcode")) {
				pZipcode  = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}
			if (psIsEqual(pInput[i].name, "city_0")) {
				pCity 	  = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}				
			if (psIsEqual(pInput[i].name, "state_0")) {
				pState 	  = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}				
			if (!psCheckArrayExist(pZipcode) && psIsEqual(pInput[i].name, "zip_0")) {
				pZipcode  = psTrim(psHtmlDecode(unescape(pInput[i].value)));
			}	
			if (psIsEqual(pInput[i].name, "submit")) {
				pSubmit++;
			}				
		}
		if (!psCheckArrayExist(pState) && psCheckArrayExist(pSelect = pElem.getElementsByTagName("select"))) {
			for (j = 0; j < pSelect.length; j++) {
				if (psIsEqual(pSelect[j].name, "state_0")) {
					pState = psTrim(psHtmlDecode(unescape(pSelect[j].value)));
				}
			}
		}
		pUsername = psIsEqual(pPageId, "View an Address") || psIsEqual(pPageId,"Name/E-Mail Address") ? uP.cusId : pUsername;
		pEmail = psIsEqual(pPageId, "View an Address") ? uP.email : pEmail;
		if (psIsEqual(pPageId, "View an Address") && pSubmit == 1) {
			if (psCheckArrayExist(pTable = pElem.getElementsByTagName("table")) && pTable.length > 1) {
				pAddr = pTable[0].rows;
				pCity = psTrim(psHtmlDecode(psCleanHtmlTag(unescape(pAddr[pAddr.length - 1].innerHTML))));
				pAddr = pTable[1].rows;
				if (pAddr.length > 1) {
					pAddr = pAddr[1].cells;
					if (pAddr.length > 1) {
						pState   = psTrim(psHtmlDecode(unescape(pAddr[0].innerHTML)));
						pZipcode = psTrim(psHtmlDecode(unescape(pAddr[1].innerHTML)));
					}
				}
			}
		}
		pCity 	 = psCheckArrayExist(pCity) ? pCity : uP.city;
		pState   = psCheckArrayExist(pState) ? pState : uP.state;
		pZipcode = psCheckArrayExist(pZipcode) ? pZipcode : uP.zipcode;		
		if (psIsEqual(pPageId, "Login")) {
			pEmail = pCity = pState = pZipcode = null;
		}			
        psSetValueToCookie(G_PS_COOKIE_FLAG, "$ProfileTemp", pUsername + "|" + pEmail + "|" + pCity + "|" + pState + "|" + pZipcode);
        psSetValueToCookie(G_PS_COOKIE_FLAG, "$SendRegist", "yes");
	}
}

function psIsRegistrationSuccess() {
	if (document.body.innerHTML.search(/Your\s*order\s*has\s*been\s*successfully\s*submitted/gi) > -1) {
		psSetValueToCookie(G_PS_COOKIE_FLAG, "$DontSendRegist", "yes");
	}
	if (document.body.innerHTML.search(/(Address\(es\)\s*updated\s*successfully|Name\s*and\/or\s*Email\s*updated\s*successfully|Contents\s*of\s*your\s*shopping\s*cart\s*have\s*changed|Ship\/Tax\s*Amount\s*may\s*have\s*changed|Items\s*restored\s*from\s*previously\s*saved\s*cart)/gi) > -1) { return true; }
	if ((psCheckArrayExist(pDefaultRed = psGetElementsByClassName(document, "span", "defaultred")) ||
	psCheckArrayExist(pDefaultRed = psGetElementsByClassName(document, "td", "defaultred")) ||
	psCheckArrayExist(pDefaultRed = psGetElementsByClassName(document, "td", "defaultboldred"))) &&
	psCheckArrayExist(psTrim(psHtmlDecode(unescape(pDefaultRed[0].innerHTML))))) {
		psDeleteKey_Value(G_PS_COOKIE_FLAG, "$ProfileTemp");
		return false;
	}
	if (document.body.innerHTML.search(/logout\.html/gi) > -1) { return true; }
	return true;
}

function psSendRegistration() {
    var uP = new psProfile();
    var pProTemp = psGetValueFromCookie(G_PS_COOKIE_FLAG, "$ProfileTemp").split("|");
    uP.cusId 	 = psCheckArrayExist(pProTemp[0]) && !psIsEqual(pProTemp[0],"UNKNOWN") ? pProTemp[0] : psGetCookie("Zones_UserName");
    uP.email 	 = psCheckArrayExist(pProTemp[1]) ? pProTemp[1] : null;
    uP.city 	 = psCheckArrayExist(pProTemp[2]) ? pProTemp[2] : null;
    uP.state 	 = psCheckArrayExist(pProTemp[3]) ? pProTemp[3] : null;
    uP.zipcode   = psCheckArrayExist(pProTemp[4]) ? pProTemp[4] : null;
    uP.writeProfile();
	if (!psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_FLAG, "$DontSendRegist"))) {
		psCreateRegistrationTag(uP.cusId, uP.email, uP.city, uP.state, uP.zipcode);
	}
	psDeleteKey_Value(G_PS_COOKIE_FLAG, "$DontSendRegist");	
    psDeleteKey_Value(G_PS_COOKIE_FLAG, "$ProfileTemp");
}

function psPostPunchOutOrder() {
	var pOrderID = "PUNCHOUT-" + psGetCookie("ZBS_Zone") + "-" + (new Date().getMonth()) + "-" + (new Date().getDate()) + "-" + (( new Date().getYear()-100));
	var pOrderSubTotal = 0;
	var uP = new psProfile(); uP.readProfile();
	if (document.body.innerHTML.search(/\/login\/index\.html/gi) > -1) {
		uP.cusId = "UNKNOWN";
	}
	if ((!psCheckArrayExist(uP.cusId) || psIsEqual(uP.cusId, "UNKNOWN")) && document.body.innerHTML.search(/logout\.html/gi) > -1) {
		uP.cusId = psGetCookie("Zones_UserName");
	}
	if (!psCheckArrayExist(uP.cusId) || psIsEqual(uP.cusId, "UNKNOWN")) {
		uP.email = uP.city = uP.state = uP.zipcode = null;
	}
	uP.writeProfile();
	var pHeaderTbl = document.getElementsByTagName("table");
	if (psCheckArrayExist(pHeaderTbl)) {
		var pZoneAtt = psGetAttValue() + "-_-PUNCHOUT";
		for (var k = pHeaderTbl.length - 1; k >= 0; k--) {
			var pInnerHTML = psTrim(unescape(psHtmlDecode(pHeaderTbl[k].innerHTML)));
			if (pInnerHTML.search(/Subtotal/gi) > -1 && pInnerHTML.search(/\$([\d\.\,]+)/gi) > -1) {
				pOrderSubTotal = psCleanPrice(RegExp.$1);
				pOrderID += "-" + pOrderSubTotal;
			}
			if (pInnerHTML.match(/Unit\sPrice/gi) &&
			(pHeaderTbl[k].className == "tableheader" || !pInnerHTML.match(/Subtotal|btn\_UpdateQuantity/gi))) {
				var rows = pHeaderTbl[k].rows;
				if (rows.length < 2) { return; }
				var prd = new psProduct();
				for (var r = 1; r < rows.length; r++) {
					if (prd.getItem5(rows[r])) {
						psCreateShopAction9Tag(prd.id, prd.name, prd.quantity, prd.price, uP.cusId, pOrderID, pOrderSubTotal, prd.catId, pZoneAtt);
						psHijackViewFromCart(rows[r], prd.catId);
					}
				}
				psDisplayShop9s();
				psCreateOrderTag(pOrderID, pOrderSubTotal, 0, uP.cusId, uP.city, uP.state, uP.zipcode, pZoneAtt);
				psCreateRegistrationTag(uP.cusId, uP.email, uP.city, uP.state, uP.zipcode);
				break;
			}
		}
	}
}
function psHijackAddStandardPage() {
	var pStandardForm = psGetElementByName(document, "form", "std_sort_form");
	if (!pStandardForm) { return; }
	pStandardForm = pStandardForm.parentNode.parentNode;
	if (!psIsEqual(pStandardForm.tagName, "TABLE")) { return; }
	var pRows = pStandardForm.rows;
	if (!psCheckArrayExist(pRows)) { return; }
	for (var i = 0; i < pRows.length; i++) {
		if (pRows[i].innerHTML.match(/\/downnav\_blue\_arrow\_\w+\.gif/gi)) {
			var pCatId = "STANDARD_PAGE";
			var pTable = pRows[i + 1] ? pRows[i + 1].getElementsByTagName("table") : null;
			if (psCheckArrayExist(pTable)) {
				var pSubRows = psGetElementsByClassName(pTable[0], "tr", "linelistalt2");
				if (psCheckArrayExist(pSubRows)) {
					for (var j = 0; j < pSubRows.length; j++) {
						var pTagAs = pSubRows[j].getElementsByTagName("a");
						if (psCheckArrayExist(pTagAs)) {
							for (var k = 0; k < pTagAs.length -1; k++) {
								if (pTagAs[k].href.match(/\/site\/product/gi)) { 
									pTagAs[k].prdCatId = pCatId;
									pTagAs[k].psOldf   = pTagAs[k].onlick;
									pTagAs[k].onclick  = function() {
										psSetCookie(G_PS_COOKIE_CATID, this.prdCatId);
										if (this.psOldf) { return this.psOldf(); }
									};
								}
							}
							var pName = psGetElementsByClassName(pSubRows[j], "a", "mediumboldlink");
							var prdId = psCheckArrayExist(pName) ? psGetValueFromUrl(pName[0].href, "id") : "unknown";
							var prdName = psCheckArrayExist(pName) ? pName[0].innerHTML: psGetInnerText(pName[0]);
							var prdPrice = psHtmlDecode(unescape(pSubRows[j].innerHTML)).match(/>\s*\$((\d*\,*)*\d*\.*\d*)\s*</) ? RegExp.$1 : "0";
							prdName = psTrim(psHtmlDecode(unescape(prdName)));
							pTagA   = pTagAs[pTagAs.length - 1];
							pTagA.id   = prdId;
							pTagA.name = prdName;
							pTagA.price = prdPrice;
							pTagA.catId = pCatId;
							pTagA.psOldf = pTagA.onclick;
							pTagA.onclick = function() {
								psCreateShopAction5Tag(this.id, this.name, "1", this.price, this.catId);
								psDisplayShop5s();
								psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId);
								if (this.psOldf) { return this.psOldf(); }
							};
						}
					}
				}
			}
		}
	}
}
 
function psHijackAddHorizontalPrd() {
	if (document.body.innerHTML.match(/(Sort\sby\:|Compare\sup\sto\s5\sProducts)/gi)) { return; }
	var pTable = document.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	var pFlag = false;
	for (var k = pTable.length - 1; k >= 0; k--) {
		if (psIsEqual(pTable[k].parentNode.tagName, "TD") && (psIsEqual(pTable[k].parentNode.className, "ppdefaulttext") || psCheckArrayExist(pTable[k].getElementsByTagName("table"))) && pTable[k].innerHTML.match(/\/addtocart\_.*\.gif/gi)) {
			pTable = pTable[k];	pFlag = true; break;
		}
	}
	if (!psCheckArrayExist(pTable) || !pFlag) { return; }
	pTable = pTable.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	for (k = 0; k < pTable.length; k++) {
		if (psCheckArrayExist(pTable[k].rows)) {
			var pImg = pTable[k].rows[pTable[k].rows.length -1].getElementsByTagName("img");
			if (psCheckArrayExist(pImg)) {
				var pTagA = pImg[0].parentNode;
				pTagA.index   = k;
				pTagA.pos     = pTable[k].rows.length - 1;
				pTagA.psOldf  = pTagA.onclick;
				pTagA.onclick = function() {
					var pFirstA = pTable[this.index].getElementsByTagName("a");
					this.id    = psCheckArrayExist(pFirstA) ? psGetValueFromUrl(pFirstA[0].href, "id") : "unknown";
					this.name  = psTrim(pTable[this.index].rows[this.pos - 2].innerHTML.match(/<div[^>]+>([^<]+)</) ? RegExp.$1 : psGetInnerText(pTable[this.index].rows[this.pos - 2]));
					this.price = pTable[this.index].rows[this.pos - 1].innerHTML.match(/\$((\d*\,*)*\d*\.*\d*)/g) ? RegExp.$1 : "0";
					this.catId = psGetCookie(G_PS_COOKIE_CATID);
					psCreateShopAction5Tag(this.id, this.name, "1", this.price, this.catId);
					psDisplayShop5s();
					psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId);
					if (this.psOldf) { return this.psOldf(); }
				};
			}
		}
	}
}

function psHijackAddComparePrd() {
	var pTable = document.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	var pTablePrd = null;
	for (var i = 0; i < pTable.length; i++) {
		if (pTable[i].innerHTML.match(/Product\sName/gi) && (!pTable[i].innerHTML.match(/\/printdetail\.html/gi))) {
			pTablePrd = pTable[i]; break;
		}
	}
	if (!pTablePrd || !psCheckArrayExist(pTablePrd.rows) ||
	!psCheckArrayExist(pTablePrd.rows[0].cells)) { return; }
	var pRows = pTablePrd.rows, pNamePos = false, pIdPos = false, pPricePos = false;
	for (var j = 0; j < pRows.length; j++) {
		if (pRows[j].innerHTML.match(/Item\#/gi)) { pIdPos = j; } 
		else if (pRows[j].innerHTML.match(/\>Product\sName\<\//gi)) { pNamePos = j; } 
		else if (pRows[j].innerHTML.match(/\>Price\<\//gi)) { pPricePos = j; }
	}
	if (!psCheckArrayExist(pNamePos) || !pIdPos || !pPricePos) { return; }
	for (var k = 1; k < pRows[pIdPos].cells.length; k++) {
		var pTagA = pRows[pIdPos + 1].cells[k].getElementsByTagName("a");
		if (psCheckArrayExist(pTagA)) {
			pTagA[0].index   = k;
			pTagA[0].psOldf  = pTagA[0].onclick;
			pTagA[0].onclick = function() {
				var pFirstA = pRows[pPricePos - 1].cells[this.index].getElementsByTagName("a");
				this.prdId  = psCheckArrayExist(pFirstA) ? psGetValueFromUrl(pFirstA[0].href, "id") : "unknown";
				this.prdName = pRows[pNamePos].cells[this.index];
				this.prdName = psHtmlDecode(unescape(this.prdName.innerHTML)).match(/\"tableheadertxt\"\>([^\/]+)\</gi) ? psTrim(RegExp.$1) : psTrim(psHtmlDecode(unescape(psGetInnerText(this.prdName))));
				this.prdPrice = pRows[pPricePos].cells[this.index];
				this.prdPrice = psHtmlDecode(unescape(this.prdPrice.innerHTML)).match(/\>\$((\d*\,*)*\d*\.*\d*)\s*\<\s*br/gi) ? RegExp.$1 : psGetInnerText(this.prdPrice);
				psCreateShopAction5Tag(this.prdId, this.prdName, "1", this.prdPrice, "search");
				psDisplayShop5s();
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.prdId, "search");
				if (this.psOldf) { return this.psOldf(); }
			};
		}
	}
}

function psHijackAddMicrosoftPrd() {
	var pTablePrd = psGetElementsByClassName(document, "td", "ppdefaulttext");
	if (!psCheckArrayExist(pTablePrd)) { return; }
	for (var i = 0; i < pTablePrd.length; i++) {
		var pTagAs = pTablePrd[i].getElementsByTagName("a");
		if (psCheckArrayExist(pTagAs) &&
		(pTagAs[0].href && pTagAs[0].href.match(/\/site\/product\//gi)) &&
		(pTagAs[pTagAs.length - 1].href && pTagAs[pTagAs.length - 1].href.match(/\/site\/cart\//gi))) {
			var prdId = (prdId = psGetValueFromUrl(pTagAs[0].href, "id")) ? prdId : "unknown";
			var pImg = pTagAs[0].getElementsByTagName("img");
			var prdName = psCheckArrayExist(pImg) ? pImg[0].alt : pTagAs[0].innerHTML;
			var pBtnAdd = pTagAs[pTagAs.length - 1];
			var prdPrice = pTablePrd[i].innerHTML.match(/>\s*\$((\d*\,*)*\d*\.*\d*)\s*</gi) ? RegExp.$1 : "0";
			pBtnAdd.id = prdId;	pBtnAdd.price = prdPrice;
			pBtnAdd.name = psTrim(psHtmlDecode(unescape(prdName)));
			pBtnAdd.psOldf = pBtnAdd.onclick;
			pBtnAdd.onclick = function() {
				this.catId = psGetCookie(G_PS_COOKIE_CATID);
				psCreateShopAction5Tag(this.id, this.name, "1", this.price, this.catId);
				psDisplayShop5s();
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId);
				if (this.psOldf) { return this.psOldf(); }
			};
		}
	}
}

function psPostHomePage() {
	var pZoneId = psGetValueFromUrl(G_PS_QUERYSTRING, "zone");
	if (!pZoneId) {
		var pTagAs = document.getElementsByTagName("a");
		if (psCheckArrayExist(pTagAs)) {
			pZoneId = psGetValueFromUrl(unescape(pTagAs[0].href), "zone");
		}
	}
	if (!pZoneId) { pZoneId = psGetCookie("ZBS_Zone"); }
	if (pZoneId  && pZoneId.match(/^microsoft|pge$/gi)) { psHijackAddMicrosoftPrd(); } 
	var pZoneCatId = psIsCoreHomePage(pZoneId) ? "CoreHomePage" : "CustomHomePageCus";
	pZoneId = psNormHomePageId(pZoneId);
	if (G_PS_URL_PATH.match(/\/site\/statics\/static\_page\.html\?name\=misc\/healthcare\_home/gi)) {
		pZoneId = "healthcare"; pZoneCatId = "CoreHomePage";
	}
	psCreatePageviewTag(pZoneId + ": HomePage", pZoneCatId, null, null);
	psSetCookie(G_PS_COOKIE_CATID, pZoneCatId);
}

function psIsCoreHomePage(pPageId) {
	return pPageId && pPageId.search(/^(home|mac|zbs|corp|edu|clearance|licensing(.*)?)$/) >= 0;
}

function psNormHomePageId(pPageId) {
	switch (pPageId) {
		case "edu":				 pPageId = "Public"; 	  		break;
		case "licensing_public": pPageId = "Lic_public";  		break;
		case "procurementwns":   pPageId = "ProcurementNoSoft"; break;
		case "oracleepp": 		 pPageId = "oracleleepp"; 		break;
		case "zbs":	
			if (document.title.search(/Zones\:\sCreative\sPro\sHomepage/gi) >= 0) {
				pPageId = "Creative_Pro";
			}
	}
	return pPageId;
}

function psPostProductView() {
	var prd = new psProduct();
	if (prd.getProduct()) {
		var tmpPageCat = prd.catId;
		if (prd.catId=='corehomepage' || prd.catId=='customhomepage' || prd.catId=='home') {tmpPageCat = 'PRODUCT HOME';}
		psCreatePageviewTag("PRODUCT:" + prd.name + " (" + prd.id + ")", tmpPageCat, null, null);
		psCreateProductviewTag(prd.id, prd.name, prd.catId);
		psHijackGeneralForm("productVitalsForm", function(pForm) {
			var pQuant = psGetElementByName(pForm.parentNode, "input", "quantity");
				pQuant = !pQuant || isNaN(pQuant.value) ? "1" : pQuant.value;
			var pInnerForm = psHtmlDecode(unescape(pForm.parentNode.innerHTML)).replace(/\s+/g, " ");
			var pPrice = pInnerForm.search(/Price\:.*?\$((\d*\,*)*\d*\.*\d*)/gi) >= 0 ? RegExp.$1 : "0";
				pPrice = pInnerForm.search(/After\s*.*?\$((\d*,*)*\d*\.*\d*)/gi) >= 0 ? RegExp.$1 : pPrice;
			psCreateShopAction5Tag(prd.id, prd.name, pQuant, pPrice, prd.catId);
			psDisplayShop5s();
			psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prd.id, prd.catId);
		});
		psHijackViewRelatedPrd(prd.id, prd.name);
	}
	psHijackAddAccessoriesPrd();
	psHijackViewAccessoriesPrd();
}

function psHijackAddAccessoriesPrd() {
	var pImg = document.getElementsByName("btn_AddToCart");
	if (!psCheckArrayExist(pImg)) { return; }
	pImg = pImg[pImg.length - 1];
	pImg.psOldf  = pImg.onclick;
	pImg.onclick = function() {
		psAddAccessoriesPrd();
		if (this.psOldf) { return this.psOldf(); }
	};
}

function psAddAccessoriesPrd() {
	var pAddonsForm = psGetElementByName(document, "form", "productAddonsForm");
	if (!pAddonsForm) { return; }
	var pTable = pAddonsForm.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	var pFlagShop5 = false;
	for (var i = 0; i < pTable.length; i++) {
		if (pTable[i].parentNode.tagName == "FORM" && psCheckArrayExist(pTable[i].rows) && pTable[i].rows.length > 2) {
			var pTrTag = !(pTable[i].rows[0].innerHTML.match(/Select\s*All/gi)) ? pTable[i].rows[0] : pTable[i].rows[1];
			var pCatId = psTrim(unescape(psHtmlDecode(psGetInnerText(pTrTag))).replace(/\s+/g, " ").replace(/\>/g, ""));
			pCatId = pCatId.substr(2, pCatId.length);
			for (var k = 2; k < pTable[i].rows.length; k ++) {
				var pInts = pTable[i].rows[k].getElementsByTagName("input");
				if (psCheckArrayExist(pInts) && pInts[pInts.length - 1].checked) {
					var pInfo = psGetElementsByClassName(pTable[i].rows[k], "td", "linelistalt1");
					if (!psCheckArrayExist(pInfo)) {
						pInfo = psGetElementsByClassName(pTable[i].rows[k], "td", "linelistalt2");
					}
					if (psCheckArrayExist(pInfo)) {
						var pTagAs = pInfo[1].getElementsByTagName("a");
						var prdId = psCheckArrayExist(pTagAs) ? psGetValueFromUrl(pTagAs[0].href, "id") : psGetInnerText(pInfo[0]);
						var prdName =  psCheckArrayExist(pTagAs) ? pTagAs[0].innerHTML : psGetInnerText(pInfo[1]);
						var prdQuant = psTrim(unescape(psHtmlDecode(pInts[pInts.length -2].value)));
							prdQuant = isNaN(prdQuant) ? "1" : prdQuant;
						var prdPrice = pTable[i].rows[k].innerHTML.match(/\$((\d*\,*)*\d*\.*\d*)/g) ? RegExp.$1 : "0";
						psCreateShopAction5Tag(prdId, prdName, prdQuant, prdPrice, pCatId);
						psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prdId, pCatId);
						if (!pFlagShop5) { pFlagShop5 = true; }
					}
				}
			}
		}
	}
	if (pFlagShop5) { psDisplayShop5s(); }
}

function psHijackViewAccessoriesPrd() {
	var pAddonsForm = psGetElementByName(document, "form", "productAddonsForm");
	if (!pAddonsForm) { return; }
	var pTable = pAddonsForm.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	for (var i = 0; i < pTable.length; i++) {
		if (pTable[i].parentNode.tagName == "FORM" && psCheckArrayExist(pTable[i].rows)) {
			var pTrTag = (pTable[i].rows[0].innerHTML.match(/select/gi)) ? pTable[i].rows[1] : pTable[i].rows[0];
			var pCatId = psTrim(unescape(psHtmlDecode(psGetInnerText(pTrTag))).replace(/\s+/g, " ").replace(/\>/g, ""));
				pCatId = pCatId.substr(2, pCatId.length);
			var pTagA  = pTable[i].getElementsByTagName("a");
			if (psCheckArrayExist(pTagA)) {
				for (var k = 0; k < pTagA.length; k++) {
					if (pTagA[k].href && pTagA[k].href.match(/\/site\/product\//gi)) {
						pTagA[k].catId = pCatId;
						pTagA[k].psOldf = pTagA[k].onclick;
						pTagA[k].onclick = function() {
							psSetCookie(G_PS_COOKIE_CATID, this.catId);
							if (this.psOldf) { return this.psOldf(); }
						};
					}
				}
			}
		}
	}
}

function psHijackViewRelatedPrd(prdId, pPrdName) {
	var pWarrantyForm = document.getElementsByName("productWarrantyAddonsForm");
	if (!psCheckArrayExist(pWarrantyForm)) { return; }
	pWarrantyForm = pWarrantyForm[0].parentNode;
	var pTagAs = pWarrantyForm.getElementsByTagName("a");
	if (psCheckArrayExist(pTagAs)) {
		for (var k = 0; k < pTagAs.length; k++) {
			if (pTagAs[k].href && pTagAs[k].href.match(/\/site\/product\//gi)) {
				pTagAs[k].psOldf = pTagAs[k].onclick;
				pTagAs[k].onclick = function() {
					psSetCookie(G_PS_COOKIE_CATID, "related items");
					if (this.psOldf) { return this.psOldf(); }
				};
			}
		}
	}
	var pFlagManyBtn = true;
	var pTrs = pWarrantyForm.rows;
	if (psCheckArrayExist(pTrs)) {
		for (var i = 0; i < pTrs.length; i++) {
			pTagAs = pTrs[i].getElementsByTagName("a");
			if (psCheckArrayExist(pTagAs)) {
				var prdID = psGetValueFromUrl(pTagAs[0].href, "id");
				var pPrdInfo = pTrs[i].cells[2] ? pTrs[i].cells[2] : pTrs[i].cells[1];
				var prdName = psCheckArrayExist(prdName = pPrdInfo.getElementsByTagName("span")) ? prdName[0].innerHTML : psGetInnerText(pPrdInfo);
					prdName = psTrim(psHtmlDecode(unescape(prdName)));
				var prdPrice = pTrs[i].innerHTML.match(/\>\s*\$((\d*\,*)*\d*\.*\d*)/g) ? RegExp.$1 : "0";
				var pBtn = pTagAs[pTagAs.length -1];
				if (pBtn.href && !pBtn.href.match(/\/site\/product\//gi)) {
					pBtn.id = prdID; pBtn.name = prdName; pBtn.price = prdPrice;
					pBtn.psOldf = pBtn.onclick;
					pBtn.onclick = function() {
						pFlagManyBtn = false;
						psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, "related items");
						psCreateShopAction5Tag(this.id, this.name, "1", this.price, "related items");
						psDisplayShop5s();
						if (this.psOldf) { return this.psOldf(); }
					};
				}
			}
		}
	}
	var pAddBtn = psGetElementByName(pWarrantyForm, "input", "addToCart");
	if (pAddBtn) {
		pAddBtn.psOldf = pAddBtn.onclick;
		pAddBtn.onclick = function() {
			if (pFlagManyBtn) {
				var pPrdInfo = this.parentNode;
				this.price = pPrdInfo.innerHTML.match(/\>\s*\$((\d*\,*)*\d*\.*\d*)/g) ? RegExp.$1 : "0";
				psCreateShopAction5Tag(prdId, pPrdName, "1", this.price, "related items");
				psDisplayShop5s();
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prdId, "related items");
			}
			if (this.psOldf) { return this.psOldf(); }
		};
	}
}

function psPostCartView() {
	psCreatePageviewTag("CART", "CART", null, null);
	var pHeaderTbl = document.getElementsByTagName("table");
	if (psCheckArrayExist(pHeaderTbl)) {
		for (var k = 0; k < pHeaderTbl.length; k++) {
			var pInnerHTML = psTrim(unescape(psHtmlDecode(pHeaderTbl[k].innerHTML)));
			if (pInnerHTML.match(/Unit\sPrice/gi) &&
			(pHeaderTbl[k].className == "tableheader" || !pInnerHTML.match(/Subtotal|btn\_UpdateQuantity/gi))) {
				var rows = pHeaderTbl[k].rows;
				if (rows.length < 2) { return; }
				var prd = new psProduct();
				for (var r = 1; r < rows.length; r++) {
					if (prd.getItem5(rows[r])) {
						psCreateShopAction5Tag(prd.id, prd.name, prd.quantity, prd.price, prd.catId);
						psHijackViewFromCart(rows[r], prd.catId);
					}
				}
				psDisplayShop5s();
				break;
			}
		}
	}
	psDeleteKey_Value(G_PS_COOKIE_FLAG, "catid");
	if(psCheckArrayExist(pInput = document.getElementsByTagName("input"))){
		for(i=0;i<pInput.length;i++){
//			if(pInput[i].src.search(/\/images\/procurement\/btn\_checkout\.gif/gi)>-1){
			if(pInput[i].src.search(/\/btn\_checkout\.gif/gi)>-1){
				pInput[i].oldFunc = pInput[i].onclick;
				pInput[i].onclick = function(){
					if(psCheckArrayExist(pPunchout = psGetElementValueById("cm_punchout")) && psIsEqual(pPunchout,"Y"))
						psPostPunchOutOrder();
					if(this.oldFunc!=null)
						return this.oldFunc();
				}
			}
		}
	}
}

function psHijackViewFromCart(rows, catId) {
	var pTagAs = rows.getElementsByTagName("a");
	if (!psCheckArrayExist(pTagAs)) { return; }
	for (var k = 0; k < pTagAs.length; k++) {
		if (pTagAs[k].href && pTagAs[k].href.match(/\/site\/product\//gi)) {
			pTagAs[k].psOldf = pTagAs[k].onclick;
			pTagAs[k].onclick = function(){
				psSetCookie(G_PS_COOKIE_CATID, catId);
				if (this.psOldf) { return this.psOldf(); }
			};
		}
	}
}

function psHijackAddRecommendPrd() {
	var pRecommendTbl = psGetElementsByClassName(document, "table", "tableheader");
	if (!psCheckArrayExist(pRecommendTbl)) { return; }
	pRecommendTbl = pRecommendTbl[pRecommendTbl.length -1];
	if (!pRecommendTbl.rows || pRecommendTbl.rows.length < 2) { return; }
	for (var k = 1; k < pRecommendTbl.rows.length; k++) {
		var pImg = pRecommendTbl.rows[k].getElementsByTagName("img");
		if (psCheckArrayExist(pImg)) {
			pImg[0].psOldf  = pImg[0].onclick;
			pImg[0].onclick = function() {
				psSetValueToCookie(G_PS_COOKIE_FLAG, "catid", "recommended");
				if (this.psOldf) { return this.psOldf(); }
			};
		}
	}
}	

function psPostOrderView() {
	psCreatePageviewTag("ORDER CONFIRMATION", "CHECKOUT", null, null);
	var pFlagShop9 = false;
	var ord = new psOrder(); ord.getOrder();
	var uP = new psProfile(); uP.readProfile();
	var prd = new psProduct();
	var pHeaderTbl = psGetElementsByClassName(document, "table", "tableheader");
	if (psCheckArrayExist(pHeaderTbl)) {
		for (var i = 0; i < pHeaderTbl.length; i++) {
			var rows = pHeaderTbl[i].rows;
			if (rows.length < 2) { continue; }
			for (var r = 1; r < rows.length; r++) {
				if (prd.getItem9(rows[r])) {
					psCreateShopAction9Tag(prd.id, prd.name, prd.quantity, prd.price, uP.cusId, ord.id, ord.subtotal, prd.catId);
					if (!pFlagShop9) { pFlagShop9 = true; }
				}
			}
		}
	} else if (psCheckArrayExist(pHeaderTbl = document.getElementsByTagName("table"))) {
		for (var k = 0; k < pHeaderTbl.length; k++) {
			var pInnerHTML = psTrim(psHtmlDecode(unescape(pHeaderTbl[k].innerHTML).replace(/\s+/g, " ")));
			if (pInnerHTML.match(/Item\s\#.*Description/gi) && !pInnerHTML.match(/Subtotal/gi)) {
				var pRows = pHeaderTbl[k].rows;
				if (pRows.length < 2) { continue; }
				for (var m = 1; m < pRows.length; m++) {
					if (prd.getItem9(pRows[m])) {
						psCreateShopAction9Tag(prd.id, prd.name, prd.quantity, prd.price, uP.cusId, ord.id, ord.subtotal, prd.catId);
						if (!pFlagShop9) { pFlagShop9 = true; }
					}
				}
			}
		}
	}
	if (pFlagShop9) { 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_ID, "", "delete");
	psSetCookie(G_PS_COOKIE_FLAG, "", "delete");
}

function psIsAboutUsPages() {
	return G_PS_QUERYSTRING.match(/(form\_)*name\=(aboutus|cs\_)/gi);
}

function psPostAboutUsPages() {
	var pPageId = null, pCatId = null;
	var pPageName = psGetValueFromUrl(G_PS_QUERYSTRING, "name");
	if (!pPageName) {
		pPageName = psGetValueFromUrl(G_PS_QUERYSTRING, "form_name");
	}
	if (pPageName) {
		switch (pPageName) {
			case "aboutus_leadership":
				pPageId = "About Leadersip"; 		pCatId = "About-_-CorpInfo"; 				break;
			case "aboutus_mbe_certification":
				pPageId = "MBE Certification"; 		pCatId = "About-_-CorpInfo"; 				break;
			case "aboutus_corporate_vision":
				pPageId = "Corp Vision"; 			pCatId = "About-_-CorpInfo"; 				break;
			case "cs_orderstatus_invoicerebates_form":
				pPageId = "Invoice Rebates"; 		pCatId = "Order Status"; 					break;
			case "cs_orderstatus_servagrwarr_form":
				pPageId = "Serv Agreement"; 		pCatId = "Order Status"; 					break;
			
			case "aboutus_press_releases":
				pPageId = "AboutUs Press"; 			pCatId = "About-_-CorpInfo-_-Press"; 		break;
			case "aboutus_annual_reports":
				pPageId = "Annual Reports"; 		pCatId = "About-_-CorpInfo-_-Press"; 		break;
			case "aboutus_sec_filings":
				pPageId = "Sec Filings"; 			pCatId = "About-_-CorpInfo-_-Press"; 		break;
			case "aboutus_awards_accolades":
				pPageId = "Awards Accol"; 			pCatId = "About-_-CorpInfo-_-Press"; 		break;
				
			case "cs_customer_quick_links":
				pPageId = "Support Quick Links"; 	pCatId = "About-_-CustCare-_-support";		break;
				
			case "cs_orderstatus_trackingnum_form":
				pPageId = "Track Number"; 			pCatId = "About-_-CustCare-_-support-_-Order";	break;	
			case "cs_orderstatus_trackinval_form":
				pPageId = "Track Invalid"; 			pCatId = "About-_-CustCare-_-support-_-Order";	break;
			case "cs_orderstatus_salestax_form":
				pPageId = "Sales Tax"; 				pCatId = "About-_-CustCare-_-support-_-Order";	break;
			case "cs_orderstatus_cancelorder_form":
				pPageId = "Cancel Order"; 			pCatId = "About-_-CustCare-_-support-_-Order";	break;
			case "cs_customer_receivecatem_form":
				pPageId = "Catalog Request"; 		pCatId = "About-_-CustCare-_-support-_-Order";	break;
			case "cs_returninfo_returnstatus_form":
				pPageId = "Return Status"; 			pCatId = "About-_-CustCare-_-support-_-Order";	break;
			case "cs_returninfo_information":
           		pPageId = G_PS_URL_PATH.match(/\#Wrong/gi) ? "Incorrect Item Return" : (G_PS_URL_PATH.match(/\#Remorse/gi) ? "Remorse Exchange" : (G_PS_URL_PATH.match(/\#Defective/gi) ? "Defective Exchange" : (G_PS_URL_PATH.match(/\#Mis\-Advertised/gi) ? "Not as ad Return" : "Return Policy")));
				pCatId = "About-_-CustCare-_-support-_-Order";										break;
			
			case "cs_shippinginfo_information":
            	pPageId = G_PS_URL_PATH.match(/\#Damage/gi) ? "Shipping Damage" : "Unexpected Ship Carrier";
            	pCatId = "About-_-CustCare-_-support-_-Ship_Info"; 										break;
			case "cs_shippinginfo_missingshipment_form":
				pPageId = "Missing Shipment"; 		pCatId = "About-_-CustCare-_-support-_-Ship_Info";	break;
			case "cs_shippinginfo_arrivedneverlate_form":
				pPageId = "Overnight Ship late no arrival"; pCatId = "About-_-CustCare-_-support-_-Ship_Info";	break;
			case "cs_shippinginfo_wrongshipaddress_form":
				pPageId = "Incorrect Ship Address"; pCatId = "About-_-CustCare-_-support-_-Ship_Info";	break;
			case "cs_shippinginfo_lostshipment_form":
				pPageId = "Lost Shipment"; 			pCatId = "About-_-CustCare-_-support-_-Ship_Info";	break;
			
			case "cs_manufacturer_list":
				pPageId = "Manufacture Contacts"; 	pCatId = "About-_-CustCare-_-support-_-Prod_Info_Support";	break;
			case "cs_productinfo_cantfind_form":
				pPageId = "Finding Product"; 		pCatId = "About-_-CustCare-_-support-_-Prod_Info_Support";	break;
			case "cs_productinfo_information":
            	pPageId = G_PS_URL_PATH.match(/\#Availability/gi) ? "Product Availability" : (G_PS_URL_PATH.match(/\#Technical/gi) ? "Technical Support" : (G_PS_URL_PATH.match(/\#Installation/gi) ? "Install Support" : (G_PS_URL_PATH.match(/\#Product/gi) ? "Not as ad support" : "Available and ship Support"))); 	
				pCatId = "About-_-CustCare-_-support-_-Prod_Info_Support";									break;
				
			case "cs_customer_catemremove_form":
				pPageId = "Catalog Email Removal"; 	pCatId = "About-_-CustCare-_-support-_-CustService";	break;	
			case "cs_customer_catemremove_form":
				pPageId = "Catalog Email Removal"; 	pCatId = "About-_-CustCare-_-support-_-CustService";	break;
			case "cs_customer_proddelivery":
				pPageId = "Delivery and Return"; 	pCatId = "About-_-CustCare-_-support-_-CustService";	break;
			case "cs_customer_contactus_form":
				pPageId = "General Questions"; 		pCatId = "About-_-CustCare-_-support-_-CustService";	break;
			case "cs_customer_techhelp_form":
				pPageId = "Technical Help"; 		pCatId = "About-_-CustCare-_-support-_-CustService";	break;
				
			case "cs_howtoshop":
				pPageId = "How To Shop"; 			pCatId = "About-_-CustCare-_-How to Shop";	break;
			case "cs_availability":
				pPageId = "Customer Care Availability and delivery"; 		
				pCatId = "About-_-CustCare-_-ProdAvaildelivery";								break;
			case "cs_faqs":
				pPageId = "Customer care FAQ"; 		pCatId = "About-_-CustCare-_-How to Shop";	break;
			case "cs_policies":
				pPageId = "General Terms"; 			pCatId = "About-_-CustCare-_-How to Shop";	break;
			case "cs_shippingterms":
				pPageId = "Shipping Terms"; 		pCatId = "About-_-CustCare-_-How to Shop";	break;
			case "cs_legaldisclaimer":
				pPageId = "Legal Disclaimer"; 		pCatId = "About-_-CustCare-_-How to Shop";	break;
			case "cs_rma":
				pPageId = "Product Returns"; 		pCatId = "About-_-CustCare-_-How to Shop";	break;
				
			case "aboutus_community_involvement":
				pPageId = "Comm Involve"; 			pCatId = "About-_-CorpResp"; 				break;
			case "aboutus_code_conduct_ethics":
				pPageId = "Conduct Ethics"; 		pCatId = "About-_-CorpResp"; 				break;
			case "aboutus_privacy":
				pPageId = "Privacy"; 				pCatId = "About-_-CorpResp"; 				break;
				
			case "aboutus_corporateplus_membership":
				pPageId = "CorpMembership";			pCatId = "About-_-CorpInfo-_-MBE_News";		break;
			case "aboutus_mbe_supplier":
				pPageId = "Awards Recog";			pCatId = "About-_-CorpInfo-_-MBE_News"; 	break;
			default: pPageId = pPageName;
		}
	}
	
	if (!pPageId || !pCatId) {
		var pDocumentTitle = unescape(psTrim(document.title));
		if (pDocumentTitle.match(/^About\s*Zones$/gi)) {
			pPageId = "About us home";				pCatId = "About";
		} else if (G_PS_PATHNAME.match(/^\/site\/career\/.*\.html/gi)) {
			pPageId = "Careers"; 			pCatId = "About-_-careers";
		} else if (pDocumentTitle.match(/\>\s*Contact\s*Us$/gi)) {
			pPageId = "Contact Us"; 		pCatId = "About-_-Contact_Us";
		} else if (pDocumentTitle.match(/\>\s*Corporate\s*Information/gi)) {
			pPageId = "CorpInfo Home";		pCatId = "About-_-CorpInfo";
			if (pDocumentTitle.match(/\>[^\>]+\>([^\>$]+)$/gi)) {
				pPageId = psTrim(RegExp.$1);
			}
		} else if (pDocumentTitle.match(/\>\s*Customer\s*Care/gi)) {
			pPageId = "CustCare Home";		pCatId = "About-_-CustCare";
			if (pDocumentTitle.match(/\>[^\>]+\>([^\>$]+)$/gi)) {
				pPageId = psTrim(RegExp.$1);
			}
		} else if (pDocumentTitle.match(/\>\s*Corporate\s*Social\s*Responsibility\s*and\s*Governance/gi)) {
			pPageId = "CorpResp Home"; 		pCatId = "About-_-CorpResp";
			if (pDocumentTitle.match(/\>[^\>]+\>([^\>$]+)$/gi)) {
				pPageId = psTrim(RegExp.$1);
			}
		}
	}
	pCatId = !pCatId ? "About" : pCatId;
	psCreatePageviewTag(pPageId, pCatId, null, null);
}

function psPostPageView() { 
	psHijackAddFromList(); psHijackAddHorizontalPrd();
	var pPageId = null, pCatId = null;
	var pDocInnerHTML = unescape(psTrim(psHtmlDecode(document.body.innerHTML))); 
	if (document.title.match(/Not Found/i))  {
		pPageId = "PAGE NOT FOUND:" + G_PS_PATHNAME;   pCatId = "ERROR PAGES";
	} else if (G_PS_PATHNAME.match(/^\/site\/expresscheckout\/thankyou\.html/gi)) {
		pPageId = "Thank You";   pCatId = "Checkout";
	} else if (G_PS_PATHNAME.match(/^\/site\/expresscheckout\//gi)) {
		pPageId = psGetHeadingText();   pCatId = "Checkout";
	} else if (G_PS_PATHNAME.match(/^\/site\/(returns|rebate|catalog\_request)\/index\.html/gi)) {
		pPageId = psGetHeadingText(); 	pCatId  = "About-_-CustCare-_-How to Shop";
	} else if (G_PS_PATHNAME.match(/\/regp?$/gi)) {
		pPageId = "Email Signup";		pCatId  = "Resources";
	} else if(G_PS_PATHNAME.match(/^\/site\/mylists\/.*\.html/g)) {
		pPageId = "My Lists";			pCatId  = "MyAccount";
		psSetCookie(G_PS_COOKIE_CATID, "MyLists");
		psHijackAddMyListPage(); psHijackViewMyListPage();
	} else if (G_PS_PATHNAME.match(/^\/site\/partner\/partner\_home\.html/gi)) {
		pPageId = document.title.replace(/^\w*Zones*\s*\:\s*/gi, ""); pCatId = "Partner Home";
	} else if (G_PS_PATHNAME.match(/^\/site\/career\/(index|career\_home)\.html/gi)) {
		pPageId = "Career Home";		pCatId  = "Career";
	} else if (G_PS_URL_PATH.match(/\/site\/browse\/browse\_view\.html\?page\_id\=800\&zone\=xilinx/gi)) {
		pPageId = "Xilinx Standards";	pCatId  = "Product Catalog";
	} else {
		var pPageName = psGetValueFromUrl(G_PS_QUERYSTRING, "name");
		if (!pPageName) {
			pPageName = psGetValueFromUrl(G_PS_QUERYSTRING, "form_name");
		}
		if (pPageName == "misc/business_continuity_home") {
			pPageId = "Business Continuity Solutions";	pCatId  = "Solutions";
		} else if (pPageName == "misc/digital_signage_home") {
			pPageId = "Digital Signage Solutions"; 		pCatId  = "Solutions";
		} else if (pPageName == "misc/storage_solutions_home") {
			pPageId = "Network Storage Solutions";		pCatId  = "Solutions";
		} else if (pPageName == "misc/networking_solutions_zbs") {
			pPageId = "Networking Solutions";			pCatId  = "Solutions";
		} else if (pPageName == "misc/security_solutions") {
			pPageId = "Security Solutions";				pCatId  = "Solutions";
		} else if (pPageName == "partner/ms_windows7_home") {
			pPageId = "Windows 7 Resource Cente";		pCatId  = "Resources";
		} else if (pPageName == "misc/healthcare_home") {
			pPageId = "Healthcare Solutions";			pCatId  = "Resources";
		} else if (pPageName == "misc/technology_briefs") {
			pPageId = "Technology Briefs";				pCatId  = "Resources";
		} else if (pPageName == "misc_zones_webinars" || pPageName == "misc/misc_zones_webinars") {
			pPageId = "Webinars";						pCatId  = "Resources";
		} else if (pPageName == "misc/security_solutions") {
			pPageId = "Security";						pCatId  = "Resources";
		} else if (pPageName == "misc/misc_license_tracker") {
			pPageId = "License Tracker";				pCatId  = "Resources";
		} else if (pPageName == "partner/ms_productshowcase_office") {
			pPageId = "Microsoft Product Showcase";		pCatId  = "Resources";
		} else if (pPageName == "partner/ms_productshowcase_smb") {
			pPageId = "Microsoft Incentives";			pCatId  = "Resources";
		} else if (pPageName == "partner/ms_partnerzones") {
			pPageId = "Zones Licensing Team";			pCatId  = "Resources";
		} else if (pPageName == "why_home") {
			pPageId = "Why Zones";						pCatId  = "Career";
		} else if (pPageName && pPageName.match(/(why\|apply\|campus|benefits)\_home/gi)) {
			pPageId = psGetHeadingText();					pCatId  = "Career";
		} else if (pPageName && pPageName.indexOf("/") >= 0) {
			pCatId  = pPageName.substr(0, pPageName.indexOf("/"));
			pPageId = pPageName.substr(pPageName.indexOf("/") + 1, pPageName.length);
		} else if (pPageName) {
			pPageId = pCatId = pPageName;
		}
	}
	if (pDocInnerHTML.match(/CREDIT\s*CARD\s*INFORMATION/gi)) {
		pPageId = "CREDIT CARD INFORMATION"; pCatId = "Checkout";
	} else if (pDocInnerHTML.match(/Submit\s*a\s*Quote/gi)) {
		pPageId = "Submit a Quote"; pCatId = "Quote";
	} else if (pDocInnerHTML.match(/SHIPPING\/BILLING\sDETAILS/gi)) {
		pPageId = "SHIPPING BILLING DETAILS"; pCatId = "Checkout";
		psHijackViewFromSBD();
	} else if (pDocInnerHTML.match(/\>\s*(APPLY\s*FOR\s*A\s*LEASE|SHIPPING\s*INFORMATION)\s*\</gi)) {
		pPageId = RegExp.$1; pCatId = "Checkout";
	} else if (pDocInnerHTML.match(/NEW\s*SHIPPING\s*ADDRESS/gi)) {
		pPageId = "NEW SHIPPING ADDRESS"; pCatId = "MyAccount";
	}
	if (!pPageId || !pCatId) {
		if (document.title.match(/^Zones\:\s*([^\-$]+|Hewlett\-Packard)\s\-\s([^\-]+)$/gi)) {
			pPageId = RegExp.$2; pCatId = RegExp.$1;
			if (pCatId == "null") { pCatId = pPageId; }
		}
	}
	if (!pPageId || !pCatId) {
		pPageId = psGetHeadingText(); 
		if (pPageId) { pCatId = psGetDefaultCatId(); }
	}
	if (!pPageId || !pCatId) {
		if (G_PS_PATHNAME.match(/([^\/]+)\/([^\/\.]+)(\.html|[?&])/gi)) { pCatId = RegExp.$1; }
		pPageId = (pPageId = psGetValueFromUrl(G_PS_QUERYSTRING, "name")) ? pPageId : ((pPageId = psGetHeadingText()) ? pPageId : (G_PS_PATHNAME.match(/\/([^\/\.]+)(\.html|[?&])/gi) ? RegExp.$1 : document.title.replace(/[\w\s]*Zones*\:\s*/gi, "")));
	} 
	if (G_PS_PATHNAME.match(/^\/site\/(CHECKOUT|LEASE)\//gi)) { pCatId = RegExp.$1; }
	
	var pPageNo = psGetPageNo();
	if (parseInt(pPageNo) > 1) { pPageId += " Page " + pPageNo; }
	if (pPageId == "index") {
		if (psCheckArrayExist(psGetElementByName(document, "form", "ZB_LoginForm"))) {
			pPageId = "My Account Login"; pCatId = "MyAccount";
		} else if (G_PS_PATHNAME.search(/^\/site\/standard\_page\/index\.html/gi) > -1) {
			pPageId = "Account Standards"; pCatId = "MyAccount";
			psHijackAddStandardPage();
		} else {
			pPageId = (pPageId = psGetHeadingText()) ? pPageId : document.title;
		}
	}
	if (G_PS_PATHNAME.match(/^\/site\/login\/null$/gi)) {
		pPageId = "My Account Login"; pCatId = "MyAccount";
	}
	if (pPageId && pCatId) {
		psCreatePageviewTag(pPageId, pCatId, null, null);
		psSetCookie(G_PS_COOKIE_CATID, pCatId);
	} else {
		psCreatePageviewTag(G_PS_PATHNAME, G_PS_PATHNAME, null, null);
	}
}

function psHijackViewFromSBD () {
	var pTable = document.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	for (var i = pTable.length - 1; i >= 0; i--) {
		var pTblHTML = unescape(psTrim(psHtmlDecode(pTable[i].innerHTML)));
		if (pTblHTML.match(/Item\s\#/gi) && !pTblHTML.match(/SUBTOTAL/gi)) {
			var pTagAs = pTable[i].getElementsByTagName("a");
			if (psCheckArrayExist(pTagAs)) {
				for (var k = 0; k < pTagAs.length; k++) {
					if (psGetValueFromUrl(pTagAs[k].href, "id")) {
						pTagAs[k].psOldf  = pTagAs[k].onclick;
						pTagAs[k].onclick = function() {
							psSetCookie(G_PS_COOKIE_CATID, psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, psGetValueFromUrl(this.href, "id")));
							if (this.psOldf) { return this.psOldf(); }
						};
					}
				}
			}
			break;
		}
	}
}

function psHijackAddMyListPage() {
	var pFlagSubmit = false;
	var pBtnProcess = psGetElementByName(document, "input", "btn_Process");
	if (!pBtnProcess) { return; }
	pBtnProcess.psOldf = pBtnProcess.onclick;
	pBtnProcess.onclick = function() {
		pFlagSubmit = true; psAddMyListPage();
		if (this.pdOldf) { return this.psOldf(); }
	};
	
	psHijackGeneralForm("zb_vieworupdatelistform", function() {
		if (!pFlagSubmit) { psAddMyListPage(); }
	});
}

function psAddMyListPage(){
	var pTable = document.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	var pFlagShop5 = false;
	for (var k = pTable.length - 1; k >= 0; k--) {
		var pInnerHTML = psTrim(psHtmlDecode(unescape(pTable[k].innerHTML))).replace(/\s+/g, " ");
		if (pInnerHTML.match(/Contents\sof\s*list/gi) && !pInnerHTML.match(/Delete\s+List/gi)) {
			var pRows = pTable[k].rows;
			if (pRows && pRows.length > 2) {
				for (var m = 1; m < pRows.length; m++) {
					if (pRows[m].cells.length > 4) {
						var pCheckBOx = psCheckArrayExist(pCheckBOx = pRows[m].cells[5].getElementsByTagName("input")) ? pCheckBOx[0].checked : false;
						if (pCheckBOx) {
							var prd = new psProduct();
							var pTagA = pRows[m].cells[0].getElementsByTagName("a");
							prd.id    = !psCheckArrayExist(pTagA) ? "unknown" : ((prd.id = psGetValueFromUrl(pTagA[0].href, "id")) ? prd.id : "unknown");
							prd.name  = !psCheckArrayExist(pTagA) ? "unknown" : psTrim(unescape(pTagA[0].innerHTML));
							prd.price = psTrim(psHtmlDecode(unescape(psGetInnerText(pRows[m].cells[3]))));
							prd.quantity = psCheckArrayExist(prd.quantity = pRows[m].cells[4].getElementsByTagName("input")) ? prd.quantity[0].value : "1";
							psCreateShopAction5Tag(prd.id, prd.name, prd.quantity, prd.price, "mylists");
							psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prd.id, "mylists");
							if (!pFlagShop5) { pFlagShop5 = true; }
						}
					}
				}
			}
			break;
		}
	}
	if (pFlagShop5) { psDisplayShop5s(); }
}

function psHijackViewMyListPage() {
	var pTable = document.getElementsByTagName("table");
	if (!psCheckArrayExist(pTable)) { return; }
	for (var i = pTable.length - 1; i >= 0; i--) {
		var pInnerHTML = psTrim(psHtmlDecode(unescape(pTable[i].innerHTML))).replace(/\s+/g, " ");
		if (pInnerHTML.match(/Contents\sof\s*list/gi) && !pInnerHTML.match(/Delete\s+List/gi)) {
			var pRows = pTable[i].rows;
			if (pRows && pRows.length > 2) {
				for (var j = 1; j < pRows.length; j++) {
					var pTagAs = pRows[j].getElementsByTagName("a");
					if (psCheckArrayExist(pTagAs)) {
						for (var k = 0; k < pTagAs.length -1; k++) {
							if (pTagAs[k].href && pTagAs[k].href.match(/\/site\/product/gi)) { 
								pTagAs[k].psOldf   = pTagAs[k].onlick;
								pTagAs[k].onclick  = function() {
									psSetCookie(G_PS_COOKIE_CATID, "mylists");
									if (this.psOldf) { return this.psOldf(); }
								};
							}
						}
					}
				}
			}
			break;
		}
	}
}

function psGetHeadingText(){
	var pSpanHead = psGetElementsByClassName(document, "span", "headingtext");
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "td", "categorybvheader");
	}
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "span", "categorybvheader");
	}
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "span", "titletext");
	}
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "td", "titletext");
	}
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "span", "browseviewtitle");
	}
	if (!psCheckArrayExist(pSpanHead)) {
		pSpanHead = psGetElementsByClassName(document, "td", "browseviewtitle");
	}
	return psCheckArrayExist(pSpanHead) ? psTrim(unescape(psHtmlDecode(pSpanHead[0].innerHTML.replace(/<+.+>/g, "")))) : "";
}

function psGetDefaultCatId() {
	var pStr = "";
	var pMediumText = psGetElementsByClassName(document, "td", "ppmediumtext");
	if (psCheckArrayExist(pMediumText)) {
		pMediumText = psGetElementsByClassName(pMediumText[0], "td", "ppmediumtext");
	}
	if (!psCheckArrayExist(pMediumText)) {
		pMediumText = psGetElementsByClassName(document, "td", "ppdefaulttext");
	}
	if (psCheckArrayExist(pMediumText)) {
		var pTagA = pMediumText[0].getElementsByTagName("a");
		if (psCheckArrayExist(pTagA)) {
			for (var i = 0; i < pTagA.length; i++) {
				pStr += (!pStr ? "" : "-_-") + (pTagA[i].innerHTML.replace(/\<+.+\>/g, ""));
			}
		}
	}
	return pStr;
}

function psHijackGeneralForm(pFormName, psFunc) {
	var pForm = psGetElementByName(document, "form", pFormName);
	if (!psCheckArrayExist(pForm)) { return; }
	pForm.psOldf = pForm.onsubmit;
	pForm.onsubmit = function() {
		psFunc(this);
		if (this.psOldf) { return this.psOldf(); }
	};
}

function psHijackAddFromList() {
	var pListLine = psGetElementsByClassName(document, "tr", "linelistalt2");
	if (psCheckArrayExist(pListLine)) {
		for (var i = 0; i < pListLine.length; i++) {
			var pImgs = pListLine[i].getElementsByTagName("img");
			if (psCheckArrayExist(pImgs)) {
				for (var j = pImgs.length - 1; j >= 0; j--) {
					if (pImgs[j].src.match(/\/images\/[^\/]+\/(btn\_addtocart2|addtocart\_\w+)\.gif/gi)) {
						pImgs[j].index = i;
						pImgs[j].psOldf = pImgs[j].onclick;
						pImgs[j].onclick = function() {
							var prdCatId = psGetCookie(G_PS_COOKIE_CATID);
							var pTagA = pListLine[this.index].getElementsByTagName("a");
							if (pTagA && pTagA.length > 1) {
								this.id = psGetValueFromUrl(pTagA[1].href, "id");
								this.name = psTrim(unescape(psGetInnerText(pTagA[1])));
							}
							this.price = unescape(pListLine[this.index].innerHTML).match(/Price\:[^\$]+?\$((\d*,*)*\d*\.*\d*)/gi) ? RegExp.$1 : "0";
							if (this.id && this.name) {
								psCreateShopAction5Tag(this.id, this.name, "1", this.price, prdCatId);
								psDisplayShop5s();
								psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, prdCatId);
							}
							if (this.psOldf) { return this.psOldf(); }
						};
						break;
					}
				}
			}
		}
	} else if (psCheckArrayExist(pListLine = psGetElementsByClassName(document, "tr", "ppdefaulttext"))) {
		for (var k = 0; k < pListLine.length; k++) {
			var pInput = pListLine[k].getElementsByTagName("input");
			if (psCheckArrayExist(pInput)) {
				for (var m = pInput.length - 1; m >= 0; m--) {
					if (pInput[m].src.match(/\/images\/[^\/]+\/addtocart\_\w+\.gif/gi)) {
						pInput[m].index = k;
						pInput[m].psOldf = pInput[m].onclick;
						pInput[m].onclick = function() {
							var prdCatId = psGetCookie(G_PS_COOKIE_CATID);
							var pTagAs = pListLine[this.index].getElementsByTagName("a");
							if (psCheckArrayExist(pTagAs)) {
								this.id = psGetValueFromUrl(pTagAs[0].href, "id");
								this.name = psTrim(unescape(psGetInnerText(pTagAs[0])));
							}
							this.price = unescape(pListLine[this.index].innerHTML).match(/>\$((\d*,*)*\d*\.*\d*)?</gi) ? RegExp.$1 : "0";
							if (this.id && this.name) {
								psCreateShopAction5Tag(this.id, this.name, "1", this.price, prdCatId);
								psDisplayShop5s();
								psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, prdCatId);
							}
							if (this.psOldf) { return this.psOldf(); }
						};
						break;
					}
				}
			}
		}
	}
}

function psGetPageNo() {
	var pLastTdBold = psGetElementsByClassName(document, "td", "ppdefaultbold");
	if (psCheckArrayExist(pLastTdBold)) {
		pLastTdBold = psTrim(unescape(pLastTdBold[pLastTdBold.length - 1].innerHTML));
		if (pLastTdBold.match(/(\<\/a\>|Page\:)\s*(\d+)\s*(\<a|$)/gi)) { return RegExp.$2; }
	}
	return "1";
}
/*====================== END TAGGING BUSINESS LOGIC =========================*/


/*======================= GENERAL UTILITY FUNCTION ==========================*/
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();
			this.id	   = (this.id = psGetValueFromUrl(G_PS_QUERYSTRING, "id")) ? this.id : "unknown";
			this.name  = psGetElementValueById("product_name_id", false);
			if (!this.name) { this.name = psTrim(unescape(document.title).replace(/Zones*\s*\:\s*(\-)*\s*?/gi, "")); }
			this.catId = (!(this.catId = psGetCookie(G_PS_COOKIE_CATID))) ? "bookmark" : (this.catId == "unknown" ? "cart" : this.catId);
			return true;
		} catch (ex) { return false; }
	};
	
	this.getItem5 = function(itemRow) {
		try {
			if (!psCheckArrayExist(itemRow.cells) || itemRow.cells.length < 4) { return false; }
			this.reset();
			var pFirstA = itemRow.cells[2].getElementsByTagName("a");
			
			this.name = psCheckArrayExist(pFirstA) ? psTrim(unescape(psHtmlDecode(pFirstA[0].innerHTML))) : psTrim(unescape(psHtmlDecode(psGetInnerText(itemRow.cells[2]))));
			var pOId  = psGetElementByName(itemRow.cells[0], "input", "oid").value;
			this.id = psCheckArrayExist(psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, pOId)) ? pOId : (psCheckArrayExist(pFirstA)? psGetValueFromUrl(pFirstA[0].href, "id") : "unknown");
			if (this.id && pOId) {
				psSetValueToCookie(G_PS_COOKIE_ID, pOId, this.id);
			}
			this.price 	  = psGetInnerText(itemRow.cells[3]);
			this.quantity = itemRow.cells[4].getElementsByTagName("input")[0].value;
			this.catId 	  = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id);
			if (!this.catId) {
				this.catId = (this.name.match(/\d+yr*|Warranty/gi)) ? "Recommended Warranties" : psGetValueFromCookie(G_PS_COOKIE_FLAG, "catId");
				if ((typeof(this.catId) == "undefined") || this.catId == "null" || this.catId == "") { this.catId = null; }
				if (this.catId) {
					psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId);
				}
			}
			return true;
		} catch (ex) { return false; } 
	};
	
	this.getItem9 = function(itemRow) {
		try {
			if (!psCheckArrayExist(itemRow.cells) || itemRow.cells.length < 4) { return false; }
			this.reset(); 
			var pOId 	  = (pOId = psGetElementByName(itemRow, "input", "field_no_")) ? pOId.value : null; 
			this.id 	  = (this.id = psGetValueFromCookie(G_PS_COOKIE_ID, pOId)) ? this.id : psTrim(unescape(psGetInnerText(itemRow.cells[0])));
			this.name 	  = psTrim(psGetInnerText(itemRow.cells[1]));
			this.price    = psGetInnerText(itemRow.cells[3]);
			this.quantity = psGetInnerText(itemRow.cells[4]);
			this.catId 	  = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id);
			if ((typeof(this.catId) == "undefined") || this.catId == "null" || this.catId == "") { this.catId = null; }
			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.readProfile = function() {
		try {
			this.cusId = psGetCookie(G_PS_COOKIE_PROFILE);
			if (this.cusId != null) {
				var buf = this.cusId.split("|");
				for (var i = 0; i < buf.length; i++) {
					var tempVal = buf[i];
					buf[i] = (tempVal == "null" ? null : tempVal);
				}
				this.cusId 		= buf[0];
				this.email 		= buf[1];
				this.city 		= buf[2];
				this.state 		= buf[3];
				this.zipcode 	= buf[4];
				this.newsletter = buf[5];
				this.subscribe 	= buf[6];
			}
			if (!this.cusId) { this.cusId = "UNKNOWN"; }
			return true;
		} catch (ex) { return false; }
	};
	
	this.writeProfile = function() {
		try {
			if (this.cusId == null) { return; }
			var data = this.cusId + "|" + this.email + "|" + this.city + "|" + this.state + "|" + this.zipcode + "|" + this.newsletter + "|" + this.subscribe;
			psSetCookie(G_PS_COOKIE_PROFILE, data);
			return true;
		} catch (ex) { return false; }
	};
}

function psOrder() {
	this.id 	  = null;
	this.subtotal = 0;
	this.shipping = 0;
	
	this.getOrder = function() {
		try {
			var pDoc    = psTrim(unescape(psHtmlDecode(psGetInnerText(document.body))));			
			this.id 	= pDoc.match(/Your\s(order|quote)\snumber\:\s*([\d\w\S]+)/gi) ? RegExp.$2 : "unknown";
			var pArrSub = pDoc.match(/Subtotal\s*\$\s*((\d*\,*)*\d*\.*\d*)/gi);
			if (psCheckArrayExist(pArrSub)) {
				for ( var i = 0; i < pArrSub.length; i++) {
					this.subtotal += parseFloat(psCleanPrice(pArrSub[i]));
				}
			}
			this.subtotal = this.subtotal.toFixed(2);
			var pArrShip = pDoc.match(/Shipping\s*\$\s*((\d*\,*)*\d*\.*\d*)/gi);
			if (psCheckArrayExist(pArrShip)) {
				for ( var k = 0; k < pArrShip.length; k++) {
					this.shipping += parseFloat(psCleanPrice(pArrShip[k]));
				}
			}
			this.shipping = this.shipping.toFixed(2);
			return true;
		} catch (ex) { return false; }
	};
}

function psIsEqual() {
    for (var i = 0; i < arguments.length; i++) {
        if (arguments[i] == null || typeof(arguments[i]) != "string" ||
        arguments[0].toUpperCase() != arguments[i].toUpperCase()) { return false; }
    }
    return true;
}

function psGetInnerText(pTagOjb) {
	var pattern = /<script[\s\S]*?<\/script>/gi;
	if (pTagOjb != null) {
		var sT = (typeof(pTagOjb) == "object") ? pTagOjb.innerHTML : pTagOjb;
		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, "").replace(/\s+/g, " ") : null;
}

function psTrim(pStr) {
	return (pStr == null || typeof(pStr) != "string") ? pStr : pStr.replace(/&nbsp;|\u00A0/gi, ' ').replace(/^\s+|\s+$/g, '');
}

function psGetValueFromUrl(pUrl, pKey) {
	var pRegExp = new RegExp("[?&]" + pKey + "=([^?&]+)", "gi");
	return pUrl == null ? null : (pUrl.match(pRegExp) ? RegExp.$1 : null);
}

function psGetElementValueById(pTagId, pValueFlag) {
    var tag = document.getElementById(pTagId);
    return psGetElementValue(tag, pValueFlag);
}

function psGetElementValue(pTagObj, pValueFlag) {
	var tagValue = null;
	if (pTagObj != null) {
		if (pTagObj.tagName.search(/^INPUT$/i) > -1) {
			tagValue = pTagObj.value;
		} else if (pTagObj.tagName.search(/^SELECT$/i) > -1) {
			if (pValueFlag) {
				tagValue = pTagObj.options[pTagObj.selectedIndex].value;
			} else {
				tagValue = psHtmlDecode(pTagObj.options[pTagObj.selectedIndex].innerHTML);
			}
		} else { tagValue = psHtmlDecode(pTagObj.innerHTML); }
	}
	return tagValue;
}

function psCheckEmail(pEmail) {
	return pEmail && pEmail.search(/^([a-zA-Z0-9_\.\-])+@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/) >= 0;
}

function psHtmlDecode(pValue) {
	return (pValue) ? pValue.replace(/&gt;/gi, ">").replace(/&lt;/gi, "<").replace(/&amp;/gi, "&").replace(/&quot;/gi, '"').replace(/&nbsp;/gi, " ") : 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 < G_PS_ARR_DOMAIN.length; i++) {
				se = new RegExp("[\.]" + G_PS_ARR_DOMAIN[i] + "$", "gi");
				if (("." + domain).search(se) > -1) {
					domain = G_PS_ARR_DOMAIN[i];
					break;
				}
			}
		}
		domain = "." + domain;
	}
	return domain;
}

function psGetDomain(pUrl) {
    return (pUrl.search(/^https*:\/\/([^\/:]+)/gi) > -1) ? RegExp.$1 : null;
}

function psCleanPrice(pPrice) {
	return (pPrice != null ? pPrice.toString().replace(/[^0-9\.]/gi, '') : null);
}

function psGetCookie(pCookieName) {
	var cookies = document.cookie;
	if (!pCookieName || !cookies) { return null; }
	pCookieName = pCookieName.replace(/[\=\;]/g, '');
	cookies = "; " + cookies.toLowerCase();
	var key = "; " + pCookieName.toLowerCase() + "=";
	var start = cookies.lastIndexOf(key);
	if (start >= 0) {
		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);
	if (pLifeTime == "delete") { return true; }
	var expire = (pLifeTime) ? (new Date((new Date()).getTime() + (1000 * pLifeTime))).toGMTString() : null;
	return CB(pCookieName, escape(pCookieValue), expire, pDomain);
}

function encodeHtml(strValue) {
	return (strValue != null) ? escape(strValue).replace(/@/g, "%40").replace(/&/g, "%26").replace(/\=/g, "%3D").replace(/\?/g, "%3F").replace(/\//g, "%2F") : strValue;
}

function psSetCookie(pCookieName, pCookieValue, pLifeTime) {
	if (!pCookieName) { return; }
	pCookieValue = (pCookieValue == null) ? 'null' : pCookieValue.replace(/[\=\;]/g, '');
	pCookieName = pCookieName.replace(/[\=\;]/g, '');
	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 > 3800) { return false; }
	}
	psCookieBase(pCookieName, pCookieValue, pLifeTime);
}

function psSetValueToCookie(pCookieName, pKey, pValue) {
	if (!pCookieName || !pKey) { return; }
	pCookieName = psTrim(pCookieName.replace(/[\#\~]/g, ''));
	pValue = pValue ? pValue.replace(/[\#\~]/g, '') : pValue;
	pKey = (pKey != null) ? "#" + psTrim(pKey.replace(/[\#\~]/g, '')).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 ?
	var count = 0;
	while (totalsize > 3800 && count < 1000) {
		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);
		count++;
	}
	if (catCookie == null || catCookie == "") {
		catCookie = oldCatCookie;
	}
	psCookieBase(pCookieName, catCookie, G_PS_COOKIE_LIFETIME);
}

function psGetValueFromCookie(pCookieName, pKey) {
	pCookieName = psTrim(pCookieName.replace(/[\#\~]/g, ""));
	pKey = (pKey != null) ? "#" + psTrim(pKey.replace(/[\#\~]/g, "")).toLowerCase() + "~" : pKey;
	var catCookie = psGetCookie(pCookieName);
	if (catCookie != null) {
		var start = catCookie.indexOf(pKey);
		if (start >= 0) {
			start += pKey.length;
			var end = catCookie.indexOf("#", start);
			if (end == -1) { end = catCookie.length; }
			return catCookie.substring(start, end);
		}
	}
	return null;
}

function psShortenPageID(pLink) {
	return (pLink != null && pLink.length > 255) ? pLink.substr(0, 255) : pLink;
}

function psGetElementsByClassName(psDocument, psElementTagName, psClassName) {
	if (!psCheckElementExist(psDocument) || !psCheckElementExist(psElementTagName)) { return null; }
	var arrResult = [];
	var arrInputs = psDocument.getElementsByTagName(psElementTagName);
	if (!psCheckArrayExist(arrInputs)) { return null; }
	for (var i = 0; i < arrInputs.length; i++) {
		if (psIsEqual(arrInputs[i].className, psClassName)) {
			arrResult.push(arrInputs[i]);
		}
	}
	return arrResult;
}

function psCheckArrayExist(pArrElement) {
	return !(typeof(pArrElement) == "undefined" || pArrElement == null || pArrElement.length <= 0);
}

function psCheckElementExist(pElement) {
	return !(typeof(pElement) == "undefined" || pElement == null);
}

function psGetElementByName(pDocument, pTagName, pEleName) { 
	if (!psCheckElementExist(pDocument)) { return null; }
	var pTags = pDocument.getElementsByTagName(pTagName);
	if (psCheckArrayExist(pTags)) {
		for (var i = 0; i < pTags.length; i++) {
			if (pTags[i].name != null && psIsEqual(pTags[i].name, pEleName)) {
				return pTags[i];
			}
		}
	}
	return null;
}

function psDeleteKey_Value(pCookieName, pKey) {
	var pCookie = psGetCookie(pCookieName);
	if (pCookie == null) { return; }
	var pValue = psGetValueFromCookie(pCookieName, pKey);
	if (pValue == null) { return; }
	pKey = ('#' + pKey + '~' + pValue).toLowerCase();
	if (pCookie.indexOf(pKey) < 0) { return; }
	pCookie = pCookie.replace(pKey, '');
	return (pCookie.indexOf('#') < 0) ? psSetCookie(pCookieName, '', 'delete') : psSetCookie(pCookieName, pCookie);
}

function psCleanHtmlTag(pValue) {
	return (pValue != null) ? pValue.replace(/\<+.+?\>+/g, "") : null;
}

function psGetAttValue() {
	var pCmZone = (pCmZone = psGetElementValueById("cm_zone", false)) ? pCmZone : ((pCmZone = psGetCookie("ZBS_Zone")) ? pCmZone : "");
	var pCmUser = (pCmUser = psGetElementValueById("cm_userid", false)) ? pCmUser : ((pCmUser = psGetCookie("Zones_UserName")) ? pCmUser : "");
	return (pCmZone || pCmUser) ? pCmZone + "-_-" + pCmUser : null;
}
/*****************************************************************************/
/*                   WRAPPER FOR COREMETRICS' TAG FUNCTIONS                  */
/*****************************************************************************/
function psCreatePageviewTag(pId, pCatId, pSrchTerm, pSrchResult, pAttb) {
	pId = psShortenPageID(psCleanPageId(pId)); pCatId = psCleanCatId(pCatId);
	var pZoneAtt = pAttb ? pAttb : psGetAttValue();
	if (pSrchResult != null) { pSrchResult += ''; }
	if (pSrchTerm == null) { pSrchResult = null; }
	if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreatePageviewTag(" + pId + ", " + pCatId + ", " + pSrchTerm + ", " + pSrchResult + ", " + pZoneAtt + ")");
	}
	if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreatePageviewTag(pId, pCatId, pSrchTerm, pSrchResult, pZoneAtt);
	}
}

function psCreateProductviewTag(pId, pName, pCatId, pAttb) {
	pName = psCleanProductName(pName); pCatId = psCleanCatId(pCatId);
	var pZoneAtt = pAttb ? pAttb : psGetAttValue();

    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreateProductviewTag(" + pId + ", " + pName + ", " + pCatId + ", " + pZoneAtt + ")");
	}
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreateProductviewTag(pId, pName, pCatId, pZoneAtt);
	}
}

function psCreateShopAction5Tag(pId, pName, pQuantity, pPrice, pCatId, pAttb) {
	pName = psCleanProductName(pName); pCatId = psCleanCatId(pCatId);
	pQuantity = psCleanPrice(pQuantity); pPrice = psCleanPrice(pPrice);
	var pZoneAtt = pAttb ? pAttb : psGetAttValue();
	if (psIsEqual(pCatId, "unknown")) { pCatId = null; psDeleteKey_Value(G_PS_COOKIE_PROD_CATID, pId); }
	if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreateShopAction5Tag(" + pId + ", " + pName + ", " + pQuantity + ", " + pPrice + ", " + pCatId  + ", " + pZoneAtt + ")");
	}
	if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreateShopAction5Tag(pId, pName, pQuantity, pPrice, pCatId, pZoneAtt);
	}
}

function psCreateShopAction9Tag(pId, pName, pQuantity, pPrice, pCusID, pOrderID, pOrderTotal, pCatId, pAttb) {
	pName = psCleanProductName(pName); pCatId = psCleanCatId(pCatId);
	pQuantity = psCleanPrice(pQuantity); pPrice = psCleanPrice(pPrice);
	pOrderTotal = psCleanPrice(pOrderTotal);
	var pZoneAtt = pAttb ? pAttb : psGetAttValue();
	if (psIsEqual(pCatId, "unknown")) { pCatId = null; }   
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreateShopAction9Tag(" + pId + ", " + pName + ", " + pQuantity + ", " + pPrice + ", " + pCusID + ", " + pOrderID + ", " + pOrderTotal + ", " + pCatId + ", " + pZoneAtt + ")");
	}
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreateShopAction9Tag(pId, pName, pQuantity, pPrice, pCusID, pOrderID, pOrderTotal, pCatId, pZoneAtt);
	}
}

function psCreateOrderTag(pId, pOrderTotal, pOrderShipping, pCusID, pCusCity, pCusState, pCusZip, pAttb) {
	pOrderTotal = psCleanPrice(pOrderTotal); pOrderShipping = psCleanPrice(pOrderShipping);
	var pZoneAtt = pAttb ? pAttb : psGetAttValue();
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreateOrderTag(" + pId + ", " + pOrderTotal + ", " + pOrderShipping + ", " + pCusID + ", " + pCusCity + ", " + pCusState + ", " + pCusZip + ", " + pZoneAtt + ")");
	}
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreateOrderTag(pId, pOrderTotal, pOrderShipping, pCusID, pCusCity, pCusState, pCusZip, pZoneAtt);
	}
}

function psCreateRegistrationTag(pCusID, pCustEmail, pCusCity, pCusState, pCusZip, pAttb) {
	var pZoneAtt = "-_--_--_--_--_--_--_--_--_--_-" + (pAttb ? pAttb : psGetAttValue());
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmCreateRegistrationTag(" + pCusID + ", " + pCustEmail + ", " + pCusCity + ", " + pCusState + ", " + pCusZip + ",null, " + pZoneAtt + ")");
	}
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmCreateRegistrationTag(pCusID, pCustEmail, pCusCity, pCusState, pCusZip, null, pZoneAtt);
	}
}

function psDisplayShop5s() {
	if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmDisplayShop5s()");
	}
	if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmDisplayShop5s();
	}
}

function psDisplayShop9s() {
	if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3) {
		alert("cmDisplayShop9s()");
	}
	if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3) {
		cmDisplayShop9s();
	}
}
/*===========================END GENERAL UTILITY FUNCTION ===================*/
