/************************************************************************************/
/* $Revision: $
 * $Id: $
 *
 * Author: Coremetrics/PSD 
 * Coremetrics  v1.1, 2010/08/11
 * 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 = new Array("identitydirect.com.au", "identitydirect.co.uk", "identitydirect.com", "identitydirect.co.nz", "identitydirect.ca");//value must be one array of domains or null
// current page url
var G_PS_URL_PATH = "" + document.location.href.toLowerCase();
var G_PS_PATHNAME = document.location.pathname.toLowerCase();
var G_PS_QUERYSTRING = document.location.search.toLowerCase();
var G_PS_URL_REFERRER = document.referrer.toLowerCase();
var G_PS_COOKIE_LIFETIME = 432000; // 5*24*60*60 = 5 days
// cookie name
var G_PS_COOKIE_PROD_CATID = "PS_PROD_CATID";
var G_PS_COOKIE_PROFILE = "PS_PROFILE";
var G_PS_COOKIE_FLAG = "PS_FLAG";		// used as a "session" variable to handle events between pages
var G_PS_COOKIE_SHOP9_ORDER = "G_PS_SHOP9_ORDER";
var G_PS_COOKIE_WISHLIST = "G_PS_WISHLIST";
var G_PS_COOKIE_PROD_ID_PRDKEY = "G_PS_PROD_ID_PRDKEY";
var G_PS_COOKIE_PROD_NAME = "G_PS_PROD_NAME";
/*========================= END GLOBAL VARIABLES =============================*/

/*=========================== BEGIN NAVIGATION ===============================*/
var pDomain = psGetDomain(G_PS_URL_PATH);
if(pDomain!= null && pDomain.indexOf("identitydirect")>=0){
	var pFlagAccount = psGetValueFromCookie(G_PS_COOKIE_FLAG, "account"); 
	if((pFlagAccount == "login"||pFlagAccount == "register"||pFlagAccount == "login_checkout") && psIsAccessSuccess()){
		psPostRegistrationTag();
		psUpdateCatIdForMiniCart("UNKNOWN");
	}
		
	var pQuickView = window.setInterval("psQuickViewFromSearch()", 1500); 
	psHijackViewMiniCart();
	psHijackClickViewCart();
	
	if(G_PS_PATHNAME.search(/\/catalogsearch\/result\/?/gi)>=0)
		psPostSearchView();
		
	else if(G_PS_PATHNAME.search(/\/faq\/search\/result\/?/gi)>=0)
		psPostFaqSearchView();
		
	else if(psCheckElementExist(document.getElementById("product_addtocart_form"))){
		if(psIsAccessError()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
		psPostProductView();
		psHijackAlsoLike();
	}
		
	else if(G_PS_PATHNAME.search(/\/checkout\/cart\/?/gi)>=0){
		psCreatePageviewTag("CART", "CART", null, null);
		var pFlag = false;
		var prdInfo = psGetValueFromCookie(G_PS_COOKIE_FLAG, "prd_temp");
		if(prdInfo != null){
			prdInfo = prdInfo.split("-_-");
			psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prdInfo[0], prdInfo[1], true);
			psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
			pFlag = true;
		}
		psPostCartView();
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "cart");
	}
	else if(G_PS_PATHNAME.search(/\/checkout\/onepage\/success\/?/gi)>=0)
		psPostOrderView();
	
	else if(document.title.search(/404\s+Page\s+not\s+found/gi)>=0)
		psCreatePageviewTag("Page Error", "Error");
	
	else if(G_PS_PATHNAME.search(/\/catalog\/product\/(gallery|view)\/?/)>=0)
		psCreatePageviewTag("Product Gallery", "Catalog");
	
	else if(G_PS_PATHNAME.search(/\/invitation\/index\/send\/?/g)>=0)
		psCreatePageviewTag("SEND INVITATIONS", "ACCOUNT");
	
	else if(G_PS_PATHNAME.search(/\/sendfriend\/product\/send\/?/g)>=0){
		psCreatePageviewTag("SEND PRODUCTS", "SEND PRODUCTS");
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "SEND PRODUCTS");
	}
	
	else if(G_PS_PATHNAME.search(/\/review\/customer\/view\/id\/\d*/g)>=0)
		psCreatePageviewTag("REVIEW-DETAILS", "MY-PRODUCT-REVIEWS");
	
	else if(G_PS_PATHNAME.search(/\/sales\/order\/history\/?$/g)>=0){
		psCreatePageviewTag("MY-ORDERS", "ACCOUNT");
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "reorder");
	}
	
	else if(G_PS_PATHNAME.search(/\/contacts\/?/g)>=0)
		psCreatePageviewTag("CAT:CONTACTS", "CONTACTS");
	
	else if(G_PS_PATHNAME.search(/\/customer\/account\/login\/?/gi)>=0){
		if(psIsAccessError()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		psCreatePageviewTag("LOGIN", "ACCOUNT");
		psHijackAccGeneral("login-form", psSaveLogInPrf);
	}
	else if(G_PS_PATHNAME.search(/\/customer\/account\/create\/?/gi)>=0){
		if(psIsAccessError()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		psCreatePageviewTag("CREATE", "ACCOUNT");
		psHijackAccGeneral("form-validate", psSaveRegisterPrf);
	}
	else if(G_PS_PATHNAME.search(/\/wishlist\/index\/share\/?/gi)>=0)
		psCreatePageviewTag("SHARE-WISHLIST", "ACCOUNT");
	else if(G_PS_PATHNAME.search(/\/wishlist\/?/gi)>=0){
		psCreatePageviewTag("MY-WISHLIST", "ACCOUNT");
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "WISHLIST");
		if(psCheckElementExist(psGetValueFromCookie(G_PS_COOKIE_FLAG, "prd_temp"))){
			psUpdateCatIdForMiniCart("WISHLIST");
			psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
		}
		psHijackWishList();
	}
	else if(psIsAccountPage())
		psPostAccountPage();
	
	else if(G_PS_PATHNAME.search(/\/checkout\/onepage\/(index\/?)*?$/gi)>=0){
		if(psGetCookie(G_PS_COOKIE_SHOP9_ORDER)!= null)
			psSetCookie(G_PS_COOKIE_SHOP9_ORDER, "", "delete");
		psPostCheckoutPage();
	}
	else if(G_PS_PATHNAME.search(/\/sales\/order\/print\/order\_id\//gi)>=0)
		psCreatePageviewTag("PRINT-ORDER", "ACCOUNT");
		
	else psPostPageView();
}
/*============================ END NAVIGATION ================================*/


/*===================== BEGIN TAGGING BUSSINESS LOGIC ========================*/
function psPostSearchView(){
	var pageId = "SEARCH UNSUCCESSFUL";
	var sTerm = psTrim(psHtmlDecode(unescape(psGetValueFromUrl(G_PS_URL_PATH, "q").replace(/\+/g, " "))));
	var pageNo = "";
	if(psGetValueFromUrl(G_PS_URL_PATH, "p")!= null){
		pageNo = psGetValueFromUrl(G_PS_URL_PATH, "p");
		pageNo = (pageNo != null && parseInt(pageNo)>1)? (" PAGE " + pageNo): "";
	}
	var sResult = psGetElementsByClassName(document, "p", "amount");
	if(psCheckArrayExist(sResult)){
		sResult = psTrim(unescape(sResult[0].innerHTML));
		if(sResult.search(/Showing\s+\d+\-\d+\s+of\s+(\d+)\s+total/gi)>=0)
			sResult = RegExp.$1;
		else if(sResult.search(/(\d+)\s+Item\(s\)/gi)>=0)
			sResult = RegExp.$1;	
	}
	var pRefine = psGetRefine();
	if(sResult != null && parseInt(sResult)>0)
		pageId = "SEARCH SUCCESSFUL" + pageNo;
	else 
		sResult = "0";
	psCreatePageviewTag(pageId, "SEARCH", sTerm + pRefine, sResult);
	psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "SEARCH");
}

function psPostFaqSearchView(){
	var pageId = "SEARCH UNSUCCESSFUL";
	var sTerm = psTrim(unescape(psGetValueFromUrl(G_PS_URL_PATH, "keyword").replace(/\+/g, " ")));
	var pageNo = "";
	if(psGetValueFromUrl(G_PS_URL_PATH, "p")!= null){
		pageNo = psGetValueFromUrl(G_PS_URL_PATH, "p");
		pageNo = (pageNo != null && parseInt(pageNo)>1)? (" PAGE " + pageNo): "";
	}
	var sResult = "0";
	var pSpan = document.getElementsByTagName("span");
	if(psCheckArrayExist(pSpan)){
		for(var i=0; i<pSpan.length; i++){
			if(pSpan[i].innerHTML.search(/Keywords\:/gi)>=0){ 
				if(pSpan[i].innerHTML.search(/\((\d+)\s*matches\)/gi)>=0) sResult = RegExp.$1;
			}
		}
	}
	var pRefine = psGetRefine();
	if(sResult != null && parseInt(sResult)>0)
		pageId = "SEARCH SUCCESSFUL" + pageNo;
	
	psCreatePageviewTag(pageId, "SEARCH", sTerm + pRefine, sResult);
	psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "SEARCH");
}

function psGetRefine(){
	var pRefine = "";
	var pDivRefine = psGetElementsByClassName(document, "div", "currently");
	if(psCheckArrayExist(pDivRefine)){
		var pTagA = psGetElementsByClassName(pDivRefine[0], "a", "btn-remove");
		if(psCheckArrayExist(pTagA)){
			for(var i=0; i<pTagA.length; i++)
				pRefine += "|" + psTrim(unescape(psGetInnerText(pTagA[i].parentNode).replace(/Remove\s+This\s+Item/g, "")));
		}
	}
	return pRefine;
}

function psPostProductView(){
	var prd = new psProduct();
	prd.getProduct(); 
	psCreateProductviewTag(prd.id, prd.name, prd.catId);
	psHijackAddFromPrdView(prd.id, prd.name, prd.catId);
	psHijackAddToWishlist(prd.id, prd.name);
}

function psPostCartView(){
	var cartTbl = document.getElementById("shopping-cart-table");
	if(!psCheckElementExist(cartTbl)) return;
	cartTbl = cartTbl.getElementsByTagName("tbody")[0];
	if(!psCheckElementExist(cartTbl)) return;
	var rows = cartTbl.rows; 
	var prd = new psProduct();
	for(var r=0; r<rows.length; r++)
	{
		if(rows[r].className.search(/even/i)>=0) continue;
		if(prd.getItem5(rows[r]))
			psCreateShopAction5Tag(prd.id, prd.name, prd.quantity, prd.price, prd.catId);
	}
	psDisplayShop5s();
}

function psPostOrderView(){
	psCreatePageviewTag("ORDER RECEIPT", "CHECKOUT", null, null);
	
	var ord = new psOrder(); ord.getOrder();
	var uP = new psProfile(); uP.readProfile(); 
	var pShop9Info = psGetValueFromCookie(G_PS_COOKIE_SHOP9_ORDER, "shop9");
	if(pShop9Info == null || pShop9Info == "")
		return;
	var prd = new psProduct(); var rows = pShop9Info.split("-$-");
	if(!psCheckArrayExist(rows)) return;
	for(var r=0; 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);
	}
	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_SHOP9_ORDER, "", "delete");
	psSetCookie(G_PS_COOKIE_PROD_CATID, "", "delete");
	psSetCookie(G_PS_COOKIE_PROD_NAME, "", "delete");
	psSetCookie(G_PS_COOKIE_FLAG, "", "delete");
}

function psPostPageView(){
	var pID = pcatID = ""; var pPathName = G_PS_PATHNAME.replace(/\/+/g, "/");
	if(pPathName == "/"){
		pID = pcatID = "HOME"; var pRefine = psGetRefine();
		pID = (pRefine != "" && pRefine!= null)? (pID + pRefine): pID;
		var pageNo = psGetValueFromUrl(G_PS_URL_PATH, "p");
		pID = pID + ((pageNo!= null && parseInt(pageNo)>1)? (" PAGE " + pageNo): "");
		psHijackBestSeller_MyAdventureBooks();
	}
	else if(pPathName.search(/\/catalog\/seo\_sitemap\/(category|product)\/?/g)>=0){
		pID = pcatID = "SITEMAP";
		var pageNo = psGetValueFromUrl(G_PS_URL_PATH, "p");
		pID = pID + ((pageNo!= null && parseInt(pageNo)>1)? (" PAGE " + pageNo): "");
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "SITEMAP");
	}
	else if(psIsTopMenu()){
		pcatID = psGetFolderFromUrl();
		pID = "CAT: " + pcatID;
		var pRefine = psGetRefine();
		pID = (pRefine != "" && pRefine!= null)? (pID + pRefine): pID;
		var pageNo = psGetValueFromUrl(G_PS_URL_PATH, "p");
		pID = pID + ((pageNo!= null && parseInt(pageNo)>1)? (" PAGE " + pageNo): "");
	}else pID = pcatID = psGetFolderFromUrl();
		
	if(pID == null || pID == "" || pcatID == null || pcatID == "")
		psCreatePageviewTag(G_PS_PATHNAME, "ADD URL", null, null); 
	else{
		psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", pcatID);
		psCreatePageviewTag(pID, pcatID, null, null); 
	}
}

function psIsTopMenu(){
	var pNav = document.getElementById("nav");
	if(psCheckElementExist(pNav)){
		var pTagLi = pNav.getElementsByTagName("li");
		if(psCheckArrayExist(pTagLi)){
			for(var i=0; i<pTagLi.length; i++){
				if(pTagLi[i].className.indexOf("active")>=0) return true;
			}
		}
		if(G_PS_PATHNAME.search(/^\/(new\-products\/?$|bestsellers*$|cat\/)/gi)>=0)
			return true;
	}
	return false;
}

function psHijackViewMiniCart(){
	var pCartHeader = document.getElementById("cartHeader");
	if(!psCheckElementExist(pCartHeader)) return;
	pCartHeader.Oldf = pCartHeader.onclick;
	pCartHeader.onclick = function(){
		var pCartContent = document.getElementById("topCartContent");
		if(psCheckElementExist(pCartContent) && pCartContent.style.display == "none")
			psPostShop5FromMiniCart();
		if(psCheckElementExist(this.Oldf)) return this.Oldf();
	}
}

function psHijackAlsoLike(){
	var pRightBottom = document.getElementById("pro_rightBottom");
	if(!psCheckElementExist(pRightBottom)) return;
	var pTagAs = pRightBottom.getElementsByTagName("a");
	if(!psCheckArrayExist(pTagAs)) return;
	for(var i=0; i<pTagAs.length; i++){
		pTagAs[i].Oldf = pTagAs[i].onclick;
		pTagAs[i].onclick = function(){
			psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "you might also like");
			if(psCheckElementExist(this.Oldf)) return this.Oldf();
		}
	}
}

function psHijackWishList(){
	var pWishListTbl = document.getElementById("wishlist-table");
	if(!psCheckElementExist(pWishListTbl)){ 
		psSetCookie(G_PS_COOKIE_WISHLIST, "", "delete"); return;
	}
	pWishListTbl = pWishListTbl.getElementsByTagName("tbody");
	if(!psCheckArrayExist(pWishListTbl)) return;
	var pRows = pWishListTbl[0].rows;
	if(!psCheckArrayExist(pRows)) return;
	var pARR_NAME_ID = [];
	for(var i=0; i<pRows.length; i++){
		var prdName = pRows[i].getElementsByTagName("h2");
		if(psCheckArrayExist(prdName)) prdName = psGetInnerText(prdName[0]);
		var prdId = psGetValueFromCookie(G_PS_COOKIE_WISHLIST, prdName);
		if(!prdId) prdId = psGenerateRandomValue();
		pARR_NAME_ID.push(prdName); pARR_NAME_ID.push(prdId); 
		var pBtnAdd = psGetElementsByClassName(pRows[i], "button", "button btn-cart");
		if(psCheckArrayExist(pBtnAdd)){
			pBtnAdd = pBtnAdd[0];
			pBtnAdd.prdId = prdId;
			pBtnAdd.Oldf = pBtnAdd.onclick;
			pBtnAdd.onclick = function(){
				psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "Flag_Wishlist");
				psSetValueToCookie(G_PS_COOKIE_FLAG, "prd_temp", this.prdId + "-_-WISHLIST");
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
		}
	}
	psSetCookie(G_PS_COOKIE_WISHLIST, "", "delete");
	if(psCheckArrayExist(pARR_NAME_ID) && pARR_NAME_ID.length >1){
		for(var t=0; t<pARR_NAME_ID.length; t+=2)
			psSetValueToCookie(G_PS_COOKIE_WISHLIST, pARR_NAME_ID[t] , pARR_NAME_ID[t+1]);
		pARR_NAME_ID = [];
	}
	//Hijack Add All To Cart.
	var pImgs = document.getElementsByTagName("img");
	if(psCheckArrayExist(pImgs)){
		for(var k=pImgs.length -1; k>=0; k--){
			if(psIsEqual(pImgs[k].alt, "Add All to Cart")){
				var AddAllBtn = pImgs[k].parentNode.parentNode.parentNode;
				AddAllBtn.Oldf = AddAllBtn.onclick;
				AddAllBtn.onclick = function(){
					psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "Flag_Wishlist");
					for(var i=0; i<pRows.length; i++){
						var prdName = pRows[i].getElementsByTagName("h2");
						if(psCheckArrayExist(prdName)) 
							prdName = psGetInnerText(prdName[0]);
						var prdId = psGetValueFromCookie(G_PS_COOKIE_WISHLIST, prdName);
						if(!prdId) prdId = psGenerateRandomValue();
						var pBtnAdd = psGetElementsByClassName(pRows[i], "button", "button btn-cart");
						if(psCheckArrayExist(pBtnAdd))
							psSetValueToCookie(G_PS_COOKIE_FLAG, "prd_temp", prdId + "-_-WISHLIST");
					}
					if(psCheckElementExist(this.Oldf)) return this.Oldf();
				}
				break;
			}
		}
	}
}

function psHijackClickViewCart(){
	var pTopLink = psGetElementsByClassName(document, "div", "topmenuLink");
	if(!psCheckArrayExist(pTopLink)) return;
	var pTagA = pTopLink[0].getElementsByTagName("a");
	if(!psCheckArrayExist(pTagA)) return;
	for(var i=0; i<pTagA.length; i++){
		if(pTagA[i].href!= null && pTagA[i].href.search(/\/checkout\/cart\/?/gi)>=0){
			pTagA[i].Oldf = pTagA[i].onclick;
			pTagA[i].onclick = function(){
				psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
		}
	}
}
function psPostShop5FromMiniCart(){
	var pCart = document.getElementById("cart-sidebar");
	if(!psCheckElementExist(pCart)) return;
	var pRows = pCart.getElementsByTagName("li");
	if(!psCheckArrayExist(pRows)) return;
	if(psGetCookie(G_PS_COOKIE_SHOP9_ORDER)!= null)
		psSetCookie(G_PS_COOKIE_SHOP9_ORDER, "", "delete");
	var prd = new psProduct();
	for(var r=0; r<pRows.length; r++){
		prd.reset();
		
		var pKey = psGetPrdIdFromTagA(pRows[r]);
		if(psCheckElementExist(pKey))
			prd.id = psGetValueFromCookie(G_PS_COOKIE_PROD_ID_PRDKEY, pKey);
		if(prd.id == null) prd.id = psGetPrdIdFromImg(pRows[r]);
		
		prd.name = pRows[r].getElementsByTagName("h4")[0];
		if(psCheckElementExist(prd.name))
			prd.name = psTrim(psHtmlDecode(unescape(psCleanProductName(psGetInnerText(prd.name)))));
		
		if(prd.id == null) prd.id = prd.name;
		
		prd.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, prd.id);
		if(prd.catId == null){
			prd.catId = "UNKNOWN";
			psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prd.id, prd.catId, true);
		}
		//Hijack view products.
		var pImgTags = pRows[r].getElementsByTagName("img")[0];
		if(psCheckElementExist(pImgTags)){
			pImgTags.Oldf = pImgTags.onclick;
			pImgTags.onclick = function(){
				psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "cart");
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
		}
	}
}

function psUpdateCatIdForMiniCart(pCatId){
	var pCart = document.getElementById("cart-sidebar");
	if(!psCheckElementExist(pCart)) return;
	var pRows = pCart.getElementsByTagName("li");
	if(!psCheckArrayExist(pRows)) return;
	var prd = new psProduct();
	for(var r=0; r<pRows.length; r++){
		prd.reset();
		prd.id = psGetPrdIdFromImg(pRows[r]);
		prd.name = pRows[r].getElementsByTagName("h4")[0];
		if(psCheckElementExist(prd.name))
			prd.name = psTrim(psHtmlDecode(unescape(psCleanProductName(psGetInnerText(prd.name)))));
		if(prd.id == null){
			var pKey = psGetPrdIdFromTagA(pRows[r]);
			if(psCheckElementExist(pKey))
				prd.id = psGetValueFromCookie(G_PS_COOKIE_PROD_ID_PRDKEY, pKey);
		}
		if(prd.id == null && prd.name != null) prd.id = prd.name;
		prd.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, prd.id);
		if(prd.catId == null || prd.catId == "null"){
			if(psCheckElementExist(pCatId))
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, prd.id, pCatId, true);
		}
	}
}

function psIsAccountPage(){
	if(psCheckArrayExist(psGetElementsByClassName(document, "div", "MyActLeftnav"))
	||(G_PS_PATHNAME.search(/\/customer\/(account|address)\/?/gi)>=0))
		return true;
	return false;
}

function psPostAccountPage(){
	var pID = null;
	var pcatID = "ACCOUNT";
	var pLeftNav = psGetElementsByClassName(document, "div", "MyActLeftnav");
	if(psCheckArrayExist(pLeftNav)){
		var pTagLi = psGetElementsByClassName(pLeftNav[0], "li", "current");
		if(!psCheckArrayExist(pTagLi))
			pTagLi = psGetElementsByClassName(pLeftNav[0], "li", "current last"); 
		if(psCheckArrayExist(pTagLi)){
			pID = psTrim(psHtmlDecode(psGetInnerText(pTagLi[0])));
			if(pID != null) pID = unescape(pID).toUpperCase().replace(/\s+/g, "-");
		}
	}
	if(pID == null) pID = psGetFolderFromUrl();
	//Post Registration Tags.	
	var pFlagAcc = psGetValueFromCookie(G_PS_COOKIE_FLAG, "account");
	if((pFlagAcc == "change_account" || pFlagAcc == "add_billing") 
	&& (document.body.innerHTML.search(/(Account\s+information|The\s+address)\s+was\s+successfully\s+saved/gi)>=0)){
		var uP = new psProfile();
		uP.updateProfile();
		psPostRegistrationTag();
	}
	if(G_PS_PATHNAME.search(/\/customer\/account\/?(index\/?)*$/gi)>=0){
		pID = "ACCOUNT-DASHBOARD";
		psHijackAccGeneral("form-validate", psSaveAddBilling);
	}
	else if(G_PS_PATHNAME.search(/\/customer\/account\/(edit(\/changepass\/)*)/gi)>=0){
		pID = ((RegExp.$1).search(/changepass/gi)>=0)? "CHANGE-PASSWORD": "EDIT-ACCOUNT";
		psHijackAccGeneral("form-validate", psSaveChangeAccInfo);	
	}
	else if(G_PS_PATHNAME.search(/\/customer\/address\/(new|edit)\/?/gi)>=0){
		pID = ((RegExp.$1).search(/Edit/gi)>=0)? "EDIT-ADDRESS": "NEW-ADDRESS";
		psHijackAccGeneral("form-validate", psSaveAddBilling);	
	}
	else if(G_PS_PATHNAME.search(/\/review\/customer\/?$/gi)>=0)
		pID = pcatID = "MY-PRODUCT-REVIEWS";	
	
	else if(G_PS_PATHNAME.search(/\/sales\/order\/view\/order\_id\//gi)>=0){
		pID = "MY-ORDER-REVIEWS"; pcatID = "Reorder"; psHijackReOrder();
	}
	psCreatePageviewTag(pID, "ACCOUNT");
	psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", pcatID);
}


function psHijackReOrder(){
	var pButtons = psGetElementsByClassName(document, "div", "page-title title-buttons");
	if(!psCheckArrayExist(pButtons)) return;
	var pTagAs = pButtons[0].getElementsByTagName("a");
	if(!psCheckArrayExist(pTagAs)) return;
	for(var k=0; k<pTagAs.length; k++){
		if(pTagAs[k].innerHTML.search(/Reorder/gi)>=0){
			pTagAs[k].Oldf = pTagAs[k].onclick;
			pTagAs[k].onclick = function(){
				psSaveReOrder();
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
			break;
		}
	}
}

function psSaveReOrder(){
	var pTbl = document.getElementById("my-orders-table");
	if(!psCheckElementExist(pTbl))
		return;
	var pRowprd = pTbl.getElementsByTagName("tbody");
	if(!psCheckArrayExist(pRowprd))
		return;
	for(var i=0; i<pRowprd.length; i++){
		var pTd = pRowprd[i].getElementsByTagName("td");
		if(!psCheckArrayExist(pTd) || pTd.length <2)
			continue;
		var PrdId = psTrim(psHtmlDecode(unescape(pTd[1].innerHTML)));
		psSetValueToCookie(G_PS_COOKIE_PROD_CATID, PrdId, "reorder", true);
	}
}

function psQuickViewFromSearch(){
	var pInput = document.getElementById("myInput");
	if(psCheckElementExist(pInput)){
		if(pInput.onkeydown == null || pInput.onkeydown.toString().indexOf("EnterFromSearch")<0){
			pInput.Oldf = pInput.onkeydown;
			pInput.onkeydown = function EnterFromSearch(e){
				try{
					var pKey = window.event ? event.keyCode : e.keyCode;
					if(pKey == 13){
						psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "Flag_search");
						window.clearInterval(pQuickView);
					}
				}catch(ex){}
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
		}
	}
	var pAcContent = psGetElementsByClassName(document, "div", "yui-ac-content")[0];
	if(psCheckElementExist(pAcContent)){
		var pImgs = pAcContent.getElementsByTagName("li");
		if(psCheckArrayExist(pImgs)){
			for(var i=0; i<pImgs.length; i++){
				if((pImgs[i].onclick == null)
				|| (pImgs[i].onclick.toString().indexOf("QuickViewFromSearch")<0)){
					pImgs[i].Oldf = pImgs[i].onclick;
					pImgs[i].onclick = function QuickViewFromSearch(){
						psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "Flag_search");
						window.clearInterval(pQuickView);
						if(psCheckElementExist(this.Oldf)) return this.Oldf();
					}
				}
			}	
		}
	}
}

function psPostCheckoutPage(){
	var pFlagPage = true; 
	var pOnePage = window.setInterval(function(){
		var pTable = document.getElementById("checkoutSteps");
		if(!psCheckElementExist(pTable)) return;
		var pElement = psGetElementsByClassName(pTable, "li", "section allow active");
		if(!psCheckArrayExist(pElement)) return;
		pElement = pElement[0];
		if(pFlagPage){
			var pPageId = ""; var pH3Tag = pElement.getElementsByTagName("h3")[0];
			if(psCheckElementExist(pH3Tag)){
				pPageId = pH3Tag = psTrim(unescape(psHtmlDecode(pH3Tag.innerHTML)));
				switch(pH3Tag){
					case "Checkout Method": 		psSaveLogInCheckOut(); break;
					case "Billing Information": 	pPageId = "Billing Info"; 
													psBillingStep(); break;
					case "Shipping Information": 	pPageId = "Shipping Info"; break;
					case "Payment Information": 	pPageId = "Payment Info"; 
													psSaveBillingReview(); break;
					case "Order Review": 			psHijackPlaceOrder();break;	
				}
			}
			psCreatePageviewTag(pPageId, "CHECKOUT"); pFlagPage = false;
		}
		var pCheck = window.setInterval(function(){
			if(pElement.className.indexOf("section allow active")<0){
				pFlagPage = true; window.clearInterval(pCheck);
			}
		}, 100);
	}, 1000);
	psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", "checkout");
}

function psSaveLogInCheckOut(){
	try{
		if(psIsAccessError()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		var pFormCheckOut = document.getElementById("login-form");
		if(!psCheckElementExist(pFormCheckOut)) return;
		pFormCheckOut.Oldf = pFormCheckOut.submit;
		pFormCheckOut.submit = function SaveLogInCheckOut(){
			var pEmail = psTrim(psHtmlDecode(unescape(psGetElementValueById("login-email"))));
			var pUser = new psProfile();
			pUser.cusId = pUser.email = pEmail; pUser.writeProfile();
			psSetValueToCookie(G_PS_COOKIE_FLAG, "account", "login_checkout");
			if(psCheckElementExist(this.Oldf)) return this.Oldf();
		}
	}catch(ex){}
}

function psBillingStep(){
	if(psIsAccessSuccess()){
		if(psGetValueFromCookie(G_PS_COOKIE_FLAG, "account") == "login_checkout"){
			psPostRegistrationTag(); psUpdateCatIdForMiniCart("UNKNOWN");
		}
	}else{
		var pBtn = document.getElementById("billing-buttons-container");
		if(!psCheckElementExist(pBtn)) return;
		pBtn = pBtn.getElementsByTagName("img")[0];
		if(!psCheckElementExist(pBtn)) return;
		if(pBtn.onclick == null || pBtn.onclick.toString().indexOf("SaveRegisterCheckout")<0){
			pBtn.Oldf = pBtn.onclick;
			pBtn.onclick = function SaveRegisterCheckout(){	
				var uP = new psProfile();
				uP.cusId = uP.email = psTrim(psHtmlDecode(unescape(psGetElementValueById("billing:email"))));
				uP.writeProfile();
				if(psCheckElementExist(this.Oldf)) return this.Oldf();
			}
		}
	}
}

function psHijackPlaceOrder(){
	var pReviewBtn = document.getElementById("review-buttons-container");
	if(!psCheckElementExist(pReviewBtn)) return;
	pReviewBtn = pReviewBtn.getElementsByTagName("img");
	if(!psCheckArrayExist(pReviewBtn)) return;
	for(var i=0; i<pReviewBtn.length; i++){
		if(pReviewBtn[i].src!= null && pReviewBtn[i].src.search(/\/images\/buttons\/btn\-place\-order(\.gif)*/gi)>=0){
			if(pReviewBtn[i].onclick == null || pReviewBtn[i].onclick.toString().indexOf("HijackPlaceOrder")<0){
				pReviewBtn[i].Oldf = pReviewBtn[i].onclick;
				pReviewBtn[i].onclick = function HijackPlaceOrder(){
					psSaveShop5ToCookie();
					if(psCheckElementExist(this.Oldf)) return this.Oldf();
				}
			}
			break;
		}
	}
}

function psSaveShop5ToCookie(){
	var pCart = document.getElementById("cart-sidebar");
	if(!psCheckElementExist(pCart)) return;
	var pRows = pCart.getElementsByTagName("li");
	if(!psCheckArrayExist(pRows)) return;
	var pCookie_Shop9 = ""; var prd = new psProduct();
	var pARR_PRDID = []; var pARR_PRDNAME = []; var pARR_PRDCATID = [];
	for(var r=0; r<pRows.length; r++){
		prd.reset();
		var pKey = psGetPrdIdFromTagA(pRows[r]);
		if(psCheckElementExist(pKey)) prd.id = psGetValueFromCookie(G_PS_COOKIE_PROD_ID_PRDKEY, pKey);
		if(prd.id == null) prd.id = psGetPrdIdFromImg(pRows[r]);
		prd.name = pRows[r].getElementsByTagName("h4")[0];
		if(psCheckElementExist(prd.name))
			prd.name = psTrim(psHtmlDecode(unescape(psCleanProductName(psGetInnerText(prd.name)))));
		if(prd.id == null) prd.id = prd.name;
		prd.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, prd.id);
		if(prd.catId == null) prd.catId = "UNKNOWN";
		pARR_PRDID.push(prd.id); pARR_PRDNAME.push(prd.name); pARR_PRDCATID.push(prd.catId);
	}
	var pReviewTable = document.getElementById("checkout-review-table");
	if(!psCheckElementExist(pReviewTable)) return;
	var pTbody = pReviewTable.getElementsByTagName("tbody");
	if(psCheckArrayExist(pTbody)){
		var prdRows = pTbody[0].getElementsByTagName("tr");
		if(psCheckArrayExist(prdRows)){
			var prdShop9 = new psProduct();
			for(var n=0; n<prdRows.length; n++){
				prdShop9.reset();
				var pName = psGetElementsByClassName(prdRows[n], "div", "product-name");
				if(psCheckArrayExist(pName))
					prdShop9.name = psTrim(psHtmlDecode(unescape(psCleanProductName(pName[0].innerHTML))));
				prdShop9.id = psGetValueFromCookie(G_PS_COOKIE_PROD_NAME, this.name);
				if(prdShop9.id == null)
					prdShop9.id = psGetValueFromCookie(G_PS_COOKIE_WISHLIST, prdShop9.name);
				if(prdShop9.id == null){
					if(psCheckArrayExist(pARR_PRDNAME)){
						for(var m=0; m<pARR_PRDNAME.length; m++){
							if(psIsEqual(prdShop9.name, pARR_PRDNAME[m])){
								prdShop9.id = pARR_PRDID[m];
								prdShop9.catId = pARR_PRDCATID[m]; break;
							}
						}
					}
				}
				if(prdShop9.id == null && prdShop9.name != null) prdShop9.id = prdShop9.name;
				if(prdShop9.catId == null)
					prdShop9.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, prdShop9.id);
				if(prdShop9.catId == null) prdShop9.catId = "UNKNOWN";
				var pPrice = psGetElementsByClassName(prdRows[n], "span", "price");
				if(psCheckArrayExist(pPrice))
					prdShop9.price = psTrim(unescape(psCleanPrice(psHtmlDecode(pPrice[0].innerHTML))));
				var pQuant = psGetElementsByClassName(prdRows[n], "td", "a-center");
				if(psCheckArrayExist(pQuant))
					prdShop9.quantity = psTrim(unescape(psCleanPrice(psHtmlDecode(pQuant[0].innerHTML))));
				psCreateShopAction5Tag(prdShop9.id, prdShop9.name, prdShop9.quantity, prdShop9.price, prdShop9.catId);
				pCookie_Shop9 += "-$-" + prdShop9.id + "-_-" + prdShop9.name + "-_-" + prdShop9.quantity + "-_-" + prdShop9.price + "-_-" + prdShop9.catId;
			}
		}
	}
	psDisplayShop5s();
	pARR_PRDID = []; pARR_PRDNAME = []; pARR_PRDCATID = [];
	if(pCookie_Shop9!= "") psSetValueToCookie(G_PS_COOKIE_SHOP9_ORDER, "shop9", pCookie_Shop9);
	
	var pTfoot = pReviewTable.getElementsByTagName("tfoot");
	if(psCheckArrayExist(pTfoot)){
		var pSub = pShip = "0"; var pTrTags = pTfoot[0].getElementsByTagName("tr");
		if(psCheckArrayExist(pTrTags)){
			for(var i=0; i<pTrTags.length; i++){
				if(pTrTags[i].innerHTML.search(/Grand\s+Total\s+Excl\.\s+Tax/gi)>=0){
					var pSubPrice = psGetElementsByClassName(pTrTags[i], "span", "price");
					if(psCheckArrayExist(pSubPrice))
						pSub = psTrim(unescape(psHtmlDecode(psCleanPrice(pSubPrice[0].innerHTML))));
				}
				if(pTrTags[i].innerHTML.search(/Shipping(\s+Excl\.\s+Tax)*/gi)>=0){
					var pShipPrice = psGetElementsByClassName(pTrTags[i], "span", "price");
					if(psCheckArrayExist(pShipPrice))
						pShip = psTrim(unescape(psHtmlDecode(psCleanPrice(pShipPrice[0].innerHTML))));
				}
			}
		}
		pSub = parseFloat(pSub.replace(/\,/g, "")).toFixed(2);
		pShip = parseFloat(pShip.replace(/\,/g, "")).toFixed(2);
		pSub = (pSub - pShip).toFixed(2);
		if(pSub!= "0" || pShip != "0")
			psSetValueToCookie(G_PS_COOKIE_SHOP9_ORDER, "order", pSub + "-_-" + pShip);
	}
}

function psSaveBillingReview(){
	var pRightCo = document.getElementById("col-right-opcheckout");
	if(!psCheckElementExist(pRightCo)) return;
	var pAddress = pRightCo.getElementsByTagName("address");
	if(psCheckElementExist(pAddress)){
		pAddress = pAddress[0].innerHTML.split(/\<\s*br\s*\/*\s*\>/gi);
		if(psCheckArrayExist(pAddress)&& pAddress.length>5){
			var uP = new psProfile(); 
			uP.readProfile();
			for(var i= pAddress.length -1; i>=0; i--){
				pAddress[i] = psTrim(unescape(pAddress[i]));
				if(pAddress[i]!= null &&  pAddress[i].search(/T\:/gi)>=0){
					var prfInfo = psTrim(unescape(pAddress[i-3])) + " " + psTrim(unescape(pAddress[i-2]));
					prfInfo = prfInfo.split(/\,/g);
					if(psCheckArrayExist(prfInfo) && prfInfo.length >2){
						uP.city = psTrim(prfInfo[0]); 
						uP.state = psTrim(prfInfo[1]); 
						uP.zipcode = psTrim(prfInfo[2]); 
					}
					break;
				}
			}
			uP.writeProfile();
		}
	}
}

function psHijackAccGeneral(pFormId, psFunc){
	var pFormLogIn = document.getElementById(pFormId);
	if(!psCheckElementExist(pFormLogIn)) return;
	pFormLogIn.Oldf = pFormLogIn.onsubmit;
	pFormLogIn.onsubmit = function(){ 
		psFunc();
		if(psCheckElementExist(this.Oldf)) return this.Oldf();
	}
}

function psSaveLogInPrf(){
	var pEmail = psGetElementValueById("email");
	if(!psCheckElementExist(pEmail))
		pEmail = psGetElementValueById("login-email");
	if(psCheckElementExist(pEmail) && psCheckEmail(pEmail)){
		var prfLogIn = new psProfile();
		prfLogIn.cusId = prfLogIn.email = pEmail;
		prfLogIn.writeProfile();
		psSetValueToCookie(G_PS_COOKIE_FLAG, "account", "login");
		window.setTimeout(function(){
			if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		}, 1000);
	}
}

function psSaveRegisterPrf(){
	var pEmail = psGetElementValueById("email_address");
	if(psCheckElementExist(pEmail) && psCheckEmail(pEmail)){
		var prfRegister = new psProfile();
		prfRegister.cusId = prfRegister.email = pEmail;
		prfRegister.writeProfile();
		psSetValueToCookie(G_PS_COOKIE_FLAG, "account", "register");
		window.setTimeout(function(){
			if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		}, 1000);
	}
}

function psSaveChangeAccInfo(){
	var pEmail = psGetElementValueById("email");
	if(psCheckElementExist(pEmail) && psCheckEmail(pEmail)){
		var uP = new psProfile();
		uP.readProfile();
		uP.temp = pEmail + "-_-" + pEmail + "-_-" + uP.city + "-_-" + uP.state + "-_-" + uP.zipcode;
		uP.writeProfile();
		psSetValueToCookie(G_PS_COOKIE_FLAG, "account", "change_account");
		window.setTimeout(function(){
			if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
		}, 1000);
	}
}

function psSaveAddBilling(){
	if(!psIsSetBillingAddress()) return;
	var uP = new psProfile(); uP.readProfile();
	var pCity = psTrim(unescape(psHtmlDecode(psGetElementValueById("city"))));
	var pState = document.getElementById("region");
	if(psCheckElementExist(pState))
		pState = psTrim(unescape(psHtmlDecode(psGetElementValueById("region", false))));
	else pState = psTrim(unescape(psHtmlDecode(psGetElementValueById("region_id", false))));
	var pZip = psTrim(unescape(psHtmlDecode(psGetElementValueById("zip"))));
	uP.temp = uP.cusId + "-_-" + uP.email + "-_-" + pCity + "-_-" + pState + "-_-" + pZip;
	uP.writeProfile(); psSetValueToCookie(G_PS_COOKIE_FLAG, "account", "add_billing");
	window.setTimeout(function(){
		if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
	}, 1000);
}

function psGetFolderFromUrl(){
	var pPath = G_PS_PATHNAME.replace(/\/$/, "") + "/";
	if(pPath.search(/\/([^\/\.]+)\/$/gi)>=0) return (RegExp.$1).replace(/\-\s*\d$/g, "");
	return null;
}

function psGetValueFromBreadCrumb(pTagName){
	var pBCrumbs = psGetElementsByClassName(document, "div", "breadcrumbLinks");
	if(psCheckArrayExist(pBCrumbs)){
		var pTags = pBCrumbs[0].getElementsByTagName(pTagName);
		if(psCheckArrayExist(pTags))
			return psTrim(unescape(psHtmlDecode(pTags[pTags.length -1].innerHTML)));
	}
	return null;
}

function psGetCatIdPrdReview(){
	var pBCrumbs = psGetElementsByClassName(document, "div", "breadcrumbLinks");
	if(!psCheckArrayExist(pBCrumbs)) return null;
	var pTags = pBCrumbs[0].getElementsByTagName("a");
	if(psCheckArrayExist(pTags)) 
		return psTrim(unescape(psHtmlDecode(pTags[pTags.length -2].innerHTML)));
	return null;
}

function psHijackAddFromPrdView(prdId, prdName, prdCatId){
	var pForm = document.getElementById("product_addtocart_form");
	if(!psCheckElementExist(pForm)) return;	
	var prdKey = psGetPrdKeyFromPrdView();
	pForm.Oldf = pForm.onsubmit;
	pForm.onsubmit = function(){
		psSetValueToCookie(G_PS_COOKIE_FLAG, "prd_temp", prdId + "-_-" + prdCatId);
		if(psCheckElementExist(prdKey))
			psSetValueToCookie(G_PS_COOKIE_PROD_ID_PRDKEY, prdKey, prdId, true);
		window.setTimeout(function(){
			if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
		}, 1000);
		if(psCheckElementExist(this.Oldf)) return this.Oldf();
	}
	var pClickBtn = psGetElementsByClassName(pForm, "button", "button btn-cart")[0];
	if(psCheckElementExist(pClickBtn)){
		pClickBtn.Oldf = pClickBtn.onclick;
		pClickBtn.onclick = function(){
			psSetValueToCookie(G_PS_COOKIE_FLAG, "prd_temp", prdId + "-_-" + prdCatId);
			if(psCheckElementExist(prdKey))
				psSetValueToCookie(G_PS_COOKIE_PROD_ID_PRDKEY, prdKey, prdId, true);
			window.setTimeout(function(){
				if(psIsErrorOnPage()) psDeleteKey_Value(G_PS_COOKIE_FLAG, "prd_temp");
			}, 1000);
			if(psCheckElementExist(this.Oldf)) return this.Oldf();
		}
	}
}

function psGetPrdIdFromTagA(pRows){
	var pTagAs = pRows.getElementsByTagName("a");
	if(psCheckArrayExist(pTagAs)){
		pTagAs = pTagAs[0].href;
		if(psCheckElementExist(pTagAs)){
			if(pTagAs.search(/\/([^\/\.]+)\.html/gi)>=0){
				pTagAs = RegExp.$1;
				if(pTagAs.search(/\-(\d+)$/gi)>=0){ pTagAs = RegExp.$1;}
			}
			else if(pTagAs.search(/\/id\/(\d+)\/?/gi)>=0){ pTagAs = RegExp.$1;}
		}
	}
	return pTagAs;
}

function psHijackAddToWishlist(prdId, prdName){
	var pTagA = document.getElementsByTagName("a");
	if(psCheckArrayExist(pTagA)){
		for(var i=0; i<pTagA.length; i++){
			if(pTagA[i].href!= null && pTagA[i].href.search(/\/wishlist\/index\/add\/product\/(\d+)\/?/gi)>=0){
				var prdKey = RegExp.$1;
				pTagA[i].Oldf = pTagA[i].onclick;
				pTagA[i].onclick = function(){
					if(psCheckElementExist(prdKey))
						psSetValueToCookie(G_PS_COOKIE_PROD_ID_PRDKEY, prdKey, prdId, true);
					psSetValueToCookie(G_PS_COOKIE_PROD_NAME, prdName, prdId, true);
					if(psCheckElementExist(this.Oldf)){ return this.Oldf();}
				}
				break;
			}
		}
	}
}

function psGetPrdKeyFromPrdView(){
	var pTagA = document.getElementsByTagName("a");
	if(!psCheckArrayExist(pTagA)) return null;
	for(var i=0; i<pTagA.length; i++){
		if(pTagA[i].href!= null && pTagA[i].href.search(/\/wishlist\/index\/add\/product\/(\d+)\/?/gi)>=0)
			return RegExp.$1;
	}
	return null;
}

function psHijackBestSeller_MyAdventureBooks(){
	var pBestSellerTbl = psGetElementsByClassName(document, "div", "bestSellerContainer")[0];
	if(psCheckElementExist(pBestSellerTbl)){
		var pTagAs = pBestSellerTbl.getElementsByTagName("a");
		if(psCheckArrayExist(pTagAs)){
			for(var i=0; i<pTagAs.length; i++){
				pTagAs[i].Oldf = pTagAs[i].onclick;
				pTagAs[i].onclick = function(){
					var pParentNode = this.parentNode.parentNode.parentNode;
					if(psCheckElementExist(pParentNode)){
						pParentNode = pParentNode.getElementsByTagName("h2")[0];
						if(psCheckElementExist(pParentNode)){
							pParentNode = psTrim(unescape(psGetInnerText(pParentNode)));
							psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", pParentNode);
						}
					}
					if(psCheckElementExist(this.Oldf)) return this.Oldf();
				}
			}
		}	
	}
}

function psIsErrorOnPage(){
	return psCheckArrayExist(psGetElementsByClassName(document, "div", "input-box validation-error"));
}

function psIsAccessError(){
	return psCheckArrayExist(psGetElementsByClassName(document, "li", "error-msg"));
}

function psIsAccessSuccess(){
	var pTopLinks = psGetElementsByClassName(document, "div", "topmenuLink");
	if(psCheckArrayExist(pTopLinks)){
		var pTagAs = pTopLinks[0].getElementsByTagName("a");
		if(psCheckArrayExist(pTagAs)){
			for(var i=0; i<pTagAs.length; i++){
				if(pTagAs[i].innerHTML.search(/Log\s+Out/gi)>=0) return true;
			}
		}
	}
	return false;
}

function psIsSetBillingAddress(){
	var pBillCheck = document.getElementById("primary_billing");
	if(psCheckElementExist(pBillCheck) && !pBillCheck.checked) return false;
	return true;
}

function psGetPrdIdFromImg(pTable){
	var pImg = pTable.getElementsByTagName("img")[0];
	if(psCheckElementExist(pImg)){
		pImg = psTrim(unescape(psHtmlDecode(pImg.src)));
		if(pImg.search(/\/([^\/\.]+)\.jpg/gi)>=0){
			pImg = RegExp.$1;
			if(pImg.search(/^(t\_)*([^\_\-]+)(\_|\-)/gi)>=0) return RegExp.$2;
		}
	}
	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;
	if(pCookie.indexOf(pKey)<0) return;
	pCookie = pCookie.replace(pKey, "");
	if(pCookie.indexOf("#")<0) return psSetCookie(pCookieName, "", "delete");
	return psSetCookie(pCookieName, pCookie);
}

function psPostRegistrationTag(){
	var uP = new psProfile(); uP.readProfile();
	psCreateRegistrationTag(uP.cusId, uP.email, uP.city, uP.state, uP.zipcode);
	if(psGetValueFromCookie(G_PS_COOKIE_FLAG, "account")!= null)
		psDeleteKey_Value(G_PS_COOKIE_FLAG, "account");
}
/*====================== END TAGGING BUSSINESS LOGIC =========================*/


/*======================= GENERAL UTILITY FUNCTION ===========================*/
function psProduct()
{
    this.id = null;
    this.name = null;
    this.catId = null;
    this.price = "0";
    this.quantity = "1";

	this.reset = function()
	{
		this.id = null;
		this.name = null;
		this.catId = null;
		this.price = "0";
		this.quantity = "1";
	}
	
	this.getProduct = function()
	{
		try
		{
			this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT!
			
			this.id = psGetElementsByClassName(document, "p", "product-ids");
			if(psCheckArrayExist(this.id)){
				this.id = psTrim(unescape(psHtmlDecode(this.id[0].innerHTML)));
				if(this.id.search(/(Product\s+Code\:\s*)/gi)>=0)
					this.id = this.id.replace(RegExp.$1, "");
			}
			
			this.name = document.getElementsByTagName("h1");
			if(psCheckArrayExist(this.name))
				this.name = psTrim(psHtmlDecode(unescape(psCleanProductName(psGetInnerText(this.name[0])))));
			
			if(psGetValueFromCookie(G_PS_COOKIE_FLAG, "current_catid") == "flag_search"){
				this.catId = "Search";
				psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", this.catId);
			}
			else if(G_PS_URL_REFERRER == null || G_PS_URL_REFERRER.indexOf("identitydirect")<0){
				this.catId = "BookMark";
				psSetValueToCookie(G_PS_COOKIE_FLAG, "current_catid", this.catId);
			}
			else{
				var pCurrentCatId = psGetValueFromCookie(G_PS_COOKIE_FLAG, "current_catid");
				if((pCurrentCatId!= null) 
				&& (pCurrentCatId.search(/(Search|BookMark|Wishlist|BestSeller|you\s+might\s+also\s+like|My\s+Adventure\s+Books|MY\-PRODUCT\-REVIEWS|SEND\s+PRODUCTS|New\s+Products|For\s+Your\s+Home|SITEMAP)/gi)>=0))
					this.catId = pCurrentCatId;
				else if(pCurrentCatId.search(/cart/gi)>=0)
					this.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id);
				else if(psIsEqual(psGetValueFromBreadCrumb("strong"), "Product Reviews"))
					this.catId = psGetCatIdPrdReview();
				else this.catId = psGetValueFromBreadCrumb("a");
			}
			
			return true;
		}
		catch (ex) { return false; }
	}
	
	this.getItem5 = function(itemRow)
	{
		try
		{
			this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT!
			var pKey = psGetPrdIdFromTagA(itemRow);
			if(psCheckElementExist(pKey))
				this.id = psGetValueFromCookie(G_PS_COOKIE_PROD_ID_PRDKEY, pKey);
			if(this.id == null) this.id = psGetPrdIdFromImg(itemRow);
			this.name = psGetElementsByClassName(itemRow, "h3", "product-name")[0];
			if(psCheckElementExist(this.name)){
				this.name = psTrim(unescape(psHtmlDecode(psCleanProductName(psGetInnerText(this.name)))));
				if(this.name.search(/(\_\d+)/gi)>=0) 
					this.name = this.name.replace(RegExp.$1, "");
			}
			if(this.id == null) this.id = this.name;
			
			this.price = psGetElementsByClassName(itemRow, "span", "price")[0];
			if(psCheckElementExist(this.price)) this.price = this.price.innerHTML;
			
			this.quantity = psGetElementsByClassName(itemRow, "a", "remove-item")[0];
			if(psCheckElementExist(this.quantity)){
				this.quantity = this.quantity.parentNode.innerHTML;
				if(this.quantity.search(/(\d+)\s*\</gi)>=0) this.quantity = RegExp.$1;
			}
			
			this.catId = psGetValueFromCookie(G_PS_COOKIE_PROD_CATID, this.id);
			if(pFlag && this.catId == null){
				this.catId = psGetValueFromCookie(G_PS_COOKIE_FLAG, "current_catid");
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId, true);
			}
			if(this.catId == null 
			&& psGetValueFromCookie(G_PS_COOKIE_FLAG, "current_catid") == "reorder"){
				this.catId = "reorder";
				psSetValueToCookie(G_PS_COOKIE_PROD_CATID, this.id, this.catId, true);
			}
			
			if(this.catId == null) this.catId = "UNKNOWN";
			psSetValueToCookie(G_PS_COOKIE_PROD_NAME, this.name, this.id);
			return true;
		}
		catch (ex) { return false; }
	}
	
	this.getItem9 = function(itemRow)
	{
		try{
			this.reset(); // DO NOT REMOVE THIS IMPORTANT STATEMENT!
			if(itemRow == null || itemRow == "") return false;
			itemRow = itemRow.split("-_-");
			if(psCheckArrayExist(itemRow)){
				this.id = itemRow[0]; this.name = itemRow[1]; this.quantity = itemRow[2];
				this.price = itemRow[3]; this.catId = itemRow[4];
				psDeleteKey_Value(G_PS_COOKIE_PROD_CATID, this.id);
				psDeleteKey_Value(G_PS_COOKIE_WISHLIST, this.name);
				psDeleteKey_Value(G_PS_COOKIE_PROD_NAME, this.name);
			}
			 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.temp = 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];
				this.temp = buf[7];
			}
			if (!this.cusId)
				this.cusId = psGenerateRandomValue();
			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 + "|" + this.temp;
			
			psSetCookie(G_PS_COOKIE_PROFILE, data, G_PS_COOKIE_LIFETIME);
			return true;
		}
		catch(ex){return false;}
	}
	
	this.updateProfile = function()
	{
		try
		{
			this.readProfile();
			if(this.temp != null && this.temp != "null" && this.temp != ""){
				var pAccInfo = this.temp.split("-_-");
				if(psCheckArrayExist(pAccInfo)){
					for (var i=0; i<pAccInfo.length; i++)
						pAccInfo[i] = (pAccInfo[i]== "null" ? null : pAccInfo[i]); 
					
					this.cusId = pAccInfo[0];
					this.email = pAccInfo[1];
					this.city = pAccInfo[2];
					this.state = pAccInfo[3];
					this.zipcode = pAccInfo[4];
					this.newsletter = pAccInfo[5];
					this.subscribe = pAccInfo[6];
					this.temp = null;
					this.writeProfile();
				}
			}
			return true;
		}
		catch (ex){return false;}
	}
}

function psOrder()
{
	this.id = null;
	this.subtotal = "0";
	this.shipping = "0";
	
	this.getOrder = function()
	{
		try
		{
			var pContainer = psGetElementsByClassName(document, "div", "content-container");
			if(psCheckArrayExist(pContainer)){
				pContainer = pContainer[0].getElementsByTagName("a");
				if(psCheckArrayExist(pContainer)){
					for(var i=0; i<pContainer.length; i++){
						if(pContainer[i].href!= null && pContainer[i].href.search(/\/order\/view\/order\_id\/?/g)>=0){
							this.id = psTrim(pContainer[i].innerHTML); break;
						}
					}
				}
			}
			if(this.id == null && document.body.innerHTML.search(/Your\s+order\s+\#\s+is\:\s+([^\.]+)\./gi)>=0)
				this.id = RegExp.$1;
			var pOrderInfo = psGetValueFromCookie(G_PS_COOKIE_SHOP9_ORDER, "order");
			if(pOrderInfo != null && pOrderInfo != ""){
				pOrderInfo = pOrderInfo.split("-_-");
				if(psCheckArrayExist(pOrderInfo) && pOrderInfo.length>1){
					this.subtotal = pOrderInfo[0];
					this.shipping = pOrderInfo[1];
				}
			}
			if(!this.id) this.id = psGenerateRandomValue();
			return true;
		}
		catch (ex) {return false;}
	}
}

function psIsEqual()
{
	for (var i=0; i<arguments.length; i++)
	{
		if(arguments[i] == null || typeof(arguments[i])!= "string")
			return false;
		else if(arguments[0].toUpperCase() != arguments[i].toUpperCase())
			return false;
	}
	return true;
}

function psGetInnerText(pTagOjb){
	var pattern = /<script[\s\S]*?<\/script>/gi; // question mark means non-greedy
	if (pTagOjb != null)
	{
		var sT = (typeof(pTagOjb) == "object") ? pTagOjb.innerHTML : pTagOjb;
		// remove all script tags and its content
		while (sT.search(pattern) > -1)
			sT = sT.replace(pattern, "");
		
		return sT.replace(/\<+.+?\>+/g, "");
	}
	return null;
}

function psCleanCatId(pCatId)
{
    return (pCatId != null) ? pCatId.replace(/[\'\":,\™\®]/g, "") : null;
}

function psCleanPageId(pPageId)
{
	return (pPageId != null) ? pPageId.replace(/[\n\t\v\r’\'\"\™\®]/gi, "") : null; 
}

function psCleanProductName(pProductName)
{
	return (pProductName != null) ? pProductName.replace(/[\n\t\v\r’\'\!\"\™\®]/gi, "") : null; 
}

function psTrim(pStr)
{
	if (pStr == null || typeof(pStr) != "string")
		return pStr;
	return (pStr != null) ? pStr.replace(/&nbsp;|\u00A0/gi, ' ').replace(/^\s+|\s+$/g, '') : null;
}

function psGetValueFromUrl(pUrl, pKey)
{
	pUrl = (pUrl != null) ? "?" + psTrim(pUrl.toLowerCase()) : null;
	pKey = (pKey != null) ? psTrim(pKey.toLowerCase()) : null;

	if (pUrl == null || pKey == null || pUrl.indexOf(pKey) == -1) 
		return null;
	
	var start = pUrl.indexOf('&' + pKey + '=');
	start = (start == -1) ? pUrl.indexOf('?' + pKey + '=') : start;
	if (start >= 0)
	{
		start = start + pKey.length;
		var end = pUrl.indexOf("&", start);
		if(end == -1) 
			end = pUrl.length;
		var middle = pUrl.indexOf("=", start);
		return pUrl.substring(middle + 1, end);
	}
	return null;
}

function 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 == true)
                tagValue = pTagObj.options[pTagObj.selectedIndex].value;
            else
                tagValue = psHtmlDecode(pTagObj.options[pTagObj.selectedIndex].innerHTML);// return label instead of value
        }
        else
            tagValue = psHtmlDecode(pTagObj.innerHTML);
    }

    return tagValue;
}

function psCheckEmail(pEmail) 
{
    if (pEmail)
    {
        var i = pEmail.search(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
        return (i > -1);
    }

    return false;
}

function psHtmlDecode(pValue)
{
    if (pValue)
    {
        pValue = pValue.replace(/&nbsp;/gi, " ");
        pValue = pValue.replace(/&quot;/gi, '"');
        pValue = pValue.replace(/&amp;/gi, "&");
        pValue = pValue.replace(/&lt;/gi, "<");
        pValue = pValue.replace(/&gt;/gi, ">");
    }

    return pValue;
}

function psGetMainDomain(pUrl){
	var se = /^https*\:\/\/([^\/\:]+)/gi;
	var domain = (pUrl.search(se) > -1) ? RegExp.$1 : null;
	if(domain != null)
	{
		if(domain.indexOf("www")==0)
			domain = domain.substring(4,domain.length);
		
		if(G_PS_ARR_DOMAIN != null)
		{
			for(var i =0; i<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){
    var se = /^https*\:\/\/([^\/\:]+)/gi;
    return (pUrl.search(se) > -1) ? RegExp.$1 : null;
}

function psCleanPrice(pPrice)
{
	var pattern = /[^0-9\.]/gi;
    return (pPrice != null ? pPrice.toString().replace(pattern, "") : null);
}

function psGetCookie(pCookieName)
{
	var cookies = document.cookie;
	if (!pCookieName || !cookies)
		return null;

	cookies = "; " + cookies.toLowerCase();
	var key = "; " + pCookieName.toLowerCase() + "=";
	var start = cookies.lastIndexOf(key);
	if (start >= 0)
	{
		start = start + key.length;
		var end = cookies.indexOf(";", start);
		if (end == -1)
			end = cookies.length;

		return unescape(cookies.substring(start, end));
	}

    return null;
}

function psCookieBase(pCookieName, pCookieValue, pLifeTime)
{
	var pDomain = psGetMainDomain(G_PS_URL_PATH);
	CC(pCookieName, pDomain);//delete cookie by calling coremetrics's cookie function
	if(pLifeTime == "delete") 
		return true;
	
	var expire = (pLifeTime) ? (new Date((new Date()).getTime() + (1000 * pLifeTime))).toGMTString() : null;
	
	return CB(pCookieName, escape(pCookieValue), expire, pDomain);
}

function encodeHtml(strValue)
{
	if (strValue!=null)
	{
		strValue = escape(strValue);
		strValue = strValue.replace(/\//g,"%2F");
		strValue = strValue.replace(/\?/g,"%3F");
		strValue = strValue.replace(/=/g,"%3D");
		strValue = strValue.replace(/&/g,"%26");
		strValue = strValue.replace(/@/g,"%40");
	}
	return strValue;
}

function psSetCookie(pCookieName, pCookieValue, pLifeTime)
{
	if (!pCookieName)
		return false;
	
	pCookieValue = (pCookieValue==null)? "null":pCookieValue;
	
	if(pLifeTime != "delete")
	{
		pCookieName = psTrim(pCookieName);
		var oldCookieValue = psGetCookie(pCookieName);
		oldCookieValue = (oldCookieValue==null)? "null":oldCookieValue;
		var totalSize;
		if(document.cookie.indexOf(pCookieName)>-1)
			totalSize =  document.cookie.length + encodeHtml(pCookieValue).length - encodeHtml(oldCookieValue).length;
		else
			totalSize =  document.cookie.length  + encodeHtml(pCookieValue).length + encodeHtml(pCookieName).length;
		
		if(totalSize > 3500)
			return false;
	}
	psCookieBase(pCookieName,pCookieValue,pLifeTime);
}
//pFlag: true - cookies have life time, other values - cookie session. 
function psSetValueToCookie(pCookieName, pKey, pValue, pFlag)
{
	if (!pCookieName || !pKey)
		return false;
	
	pCookieName = psTrim(pCookieName);
	pKey = (pKey != null) ? "#" + psTrim(pKey).toLowerCase() + "~" : pKey;
	var catCookie = psGetCookie(pCookieName);
	catCookie = (catCookie == null) ? "" : catCookie;
	pValue = (pValue == null) ? "null" : pValue;
	var oldCatCookie = catCookie;
	
	var start = catCookie.indexOf(pKey);
	
	var totalsize;
	if(start >= 0) // Store before -> remove the old value
	{
		var oldValue = psGetValueFromCookie(pCookieName,pKey.replace(/[\~\#]/gi,""));
		oldValue = (oldValue == null) ? "null" : oldValue;
		var end = catCookie.indexOf("#", start + pKey.length);
		if (end == -1)
			end = catCookie.length;
		catCookie = catCookie.replace(catCookie.substring(start, end), "");
		totalsize =  document.cookie.length  + encodeHtml(pKey).length + encodeHtml(pValue).length - encodeHtml(oldValue).length;
	}
	else
	{
		totalsize =  document.cookie.length  + encodeHtml(pKey).length + encodeHtml(pValue).length;  
		if(document.cookie.indexOf(pCookieName)<0)
			totalsize += encodeHtml(pCookieName).length;
	}
	catCookie = pKey + pValue + catCookie;
	var cookieArray = null;   
	//Check existed ?
	var count = 0; 
	while (totalsize > 3500 && 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;
		
	// Save to cookie      
	if(pFlag)
		psCookieBase(pCookieName, catCookie, G_PS_COOKIE_LIFETIME);
	else
		psCookieBase(pCookieName, catCookie);
}

function psGetValueFromCookie(pCookieName, pKey)
{
	pCookieName = psTrim(pCookieName);
	pKey = (pKey != null) ? "#" + psTrim(pKey).toLowerCase() + "~" : pKey;
	var catCookie = psGetCookie(pCookieName);
    if (catCookie != null)
    {
        var start = catCookie.indexOf(pKey);
		if (start >=0 )
		{
			start = start + pKey.length;
			var end = catCookie.indexOf("#", start);
			if (end == -1)
				end = catCookie.length;
			return catCookie.substring(start, end);
		}
		return null;
    }
    return null;
}

function psGenerateRandomValue()
{
	var dtDate = new Date();
	var cusRandom = (dtDate.getTime()%10000000) + (Math.floor(Math.random()*10000));
	return cusRandom;
}

function psShorttenPageID(pLink)
{
	var temp1 = pLink;
	if (temp1 != null)
		temp1 = (temp1.length > 255) ? temp1.substr(0, 255) : temp1;

	return temp1;
}

function psGetElementsByClassName(psDocument, psElementTagName, psClassName)
{
    if(!psCheckElementExist(psDocument) || !psElementTagName)
		return null;
		
	var arrResult = new Array();
    var index = 0;
    var arrInputs = psDocument.getElementsByTagName(psElementTagName);
    if(arrInputs == null)
        return null;
    
    for(var i=0; i<arrInputs.length; i++)
    {
        if(arrInputs[i].className.toLowerCase() == psClassName.toLowerCase())
            arrResult[index ++ ] = arrInputs[i];
    }
    return arrResult;
}

function psCheckArrayExist(pArrElement)
{
    if(typeof(pArrElement) == "undefined" || pArrElement == null || pArrElement.length <=0)
        return false;
	return true;
}

function psCheckElementExist(pElement)
{
    if(typeof(pElement) == "undefined" || pElement == null)
        return false;
	return true;
}

function psGetPrefixDomain(){
	var pDomain = psGetDomain(G_PS_URL_PATH);
	if(pDomain!= null && pDomain.search(/[^\.]+\.([^\.$]+)$/gi)>=0){
		pDomain = RegExp.$1;
		if(pDomain != null){
			if(pDomain == "com") pDomain = "US";
			return pDomain.toUpperCase();
		}
	}
	return null;
}
/********************************************************/
/* WRAPPER FOR COREMETRICS' TAG FUNCTIONS               */
/********************************************************/
function psCreatePageviewTag(pId, pCatId, pSrchTerm, pSrchResult) 
{
	pId = psCleanPageId(pId);
	if(psGetPrefixDomain()!= null)
		pId = psGetPrefixDomain() + ": " + psShorttenPageID(pId);
	pCatId = psCleanCatId(pCatId);
    if (pSrchResult != null)
        pSrchResult += "";
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreatePageviewTag(" + pId + ", " + pCatId + ", " + pSrchTerm + ", " + pSrchResult + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreatePageviewTag(pId, pCatId, pSrchTerm, pSrchResult);
}

function psCreateProductviewTag(pId, pName, pCatId) 
{
	pName = psCleanProductName(pName);
	pCatId = psCleanCatId(pCatId);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateProductviewTag(" + pId + ", " + pName + ", " + pCatId + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateProductviewTag(pId, pName, pCatId);
}

function psCreateShopAction5Tag(pId, pName, pQuantity, pPrice, pCatId) 
{
	pName = psCleanProductName(pName);
	pCatId = psCleanCatId(pCatId);
	pQuantity = psCleanPrice(pQuantity);
	pPrice = psCleanPrice(pPrice);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateShopAction5Tag(" + pId + ", " + pName + ", " + pQuantity + ", " + pPrice + ", " + pCatId + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateShopAction5Tag(pId, pName, pQuantity, pPrice, pCatId);    
}

function psCreateShopAction9Tag(pId, pName, pQuantity, pPrice, pCusID, pOrderID, pOrderTotal, pCatId) 
{
	pName = psCleanProductName(pName);
	pCatId = psCleanCatId(pCatId);
	pQuantity = psCleanPrice(pQuantity);
	pPrice = psCleanPrice(pPrice);
	pOrderTotal = psCleanPrice(pOrderTotal);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateShopAction9Tag(" + pId + ", " + pName + ", " + pQuantity + ", " + pPrice + ", " + pCusID + ", " + pOrderID + ", " + pOrderTotal + ", " + pCatId + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateShopAction9Tag(pId, pName, pQuantity, pPrice, pCusID, pOrderID, pOrderTotal, pCatId);
}

function psCreateOrderTag(pId, pOrderTotal, pOrderShipping, pCusID, pCusCity, pCusState, pCusZip) 
{
	pOrderTotal = psCleanPrice(pOrderTotal);
	pOrderShipping = psCleanPrice(pOrderShipping);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateOrderTag(" + pId + ", " + pOrderTotal + ", " + pOrderShipping + ", " + pCusID + ", " + pCusCity + ", " + pCusState + ", " + pCusZip + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateOrderTag(pId, pOrderTotal, pOrderShipping, pCusID, pCusCity, pCusState, pCusZip);
}

function psCreateConversionEventTag(pId, pActionType, pCatID, pPoints) 
{
	pCatID = psCleanCatId(pCatID);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateConversionEventTag(" + pId + ", " + pActionType + ", " + pCatID + ", " + pPoints + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateConversionEventTag(pId, pActionType, pCatID, pPoints);
}

function psCreateRegistrationTag(pCusID, pCustEmail, pCusCity, pCusState, pCusZip, pNewsletter, pSubscribe) 
{
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateRegistrationTag(" + pCusID + ", " + pCustEmail + ", " + pCusCity + ", " + pCusState + ", " + pCusZip + ", " + pNewsletter + ", " + pSubscribe + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateRegistrationTag(pCusID, pCustEmail, pCusCity, pCusState, pCusZip, pNewsletter, pSubscribe);
}

function psCreateErrorTag(pPageID, pCatId) 
{
	pPageID = psCleanPageId(pPageID);
	pCatId = psCleanCatId(pCatId);
    if (G_PS_DEBUG_MODE == 1 || G_PS_DEBUG_MODE == 3)
        alert("cmCreateErrorTag(" + pPageID + ", " + pCatId + ")");
    if (G_PS_DEBUG_MODE == 2 || G_PS_DEBUG_MODE == 3)
        cmCreateErrorTag(pPageID, pCatId);
}

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 ==================*/
