function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}


var amznAnalyticsLib = {




/* Global Functions */
getGlobalPageName : function(){
    return amznAnalytics.getElement("pageName");
},

 getGlobalChannel: function(){
    return amznAnalytics.getElement("channel");
},


 getGlobalCategory: function(){
    return amznAnalytics.getElement("category");
},

 getGlobalSubcategory: function(){
    return amznAnalytics.getElement("subcategory");
},

 getGlobalPageType: function(){
    return amznAnalytics.getElement("pageType");
},

 getGlobalLastInternalReferences: function(){
   if(null != amznAnalytics.getElement("internalReferences")){
        return amznAnalytics.getElement("internalReferences")["last"];
   } else {
       return gup("ref");
   }     
},

 getGlobalFirstInternalReferences: function(){

   if(null != amznAnalytics.getElement("internalReferences")){
        return amznAnalytics.getElement("internalReferences")["first"];
   } else {
       return gup("ref");
   }     
},

 getGlobalCustomerID: function(){
    return amznAnalytics.getElement("customerID");
},

 getGlobalSearchTerms: function(){
    return amznAnalytics.getElement("searchTerms");
},


 getGlobalSearchResults: function() {
    return amznAnalytics.getElement("searchResults");
},


 getGlobalBrowseNodeName: function(){
    return amznAnalytics.getElement("browseNodeName"); 
},


 getGlobalCartAddMethod: function(){
    return amznAnalytics.getElement("cartAddMethod");
},

/* Browse Functions */

 getBrowseProp6: function(){
 
    var args= new Array();
    args["amznVar"] = "browseTree";
    args["separator"] = " > ";
    args["indices"] = "";
    args["format"] = "";
    
    var pushVar = new loopListAssignment(args);
    
    return "Products > " + pushVar.printObject();
},

getBrowsePageName : function(){
    var args= new Array();
    args["amznVar"] = "browseTree";
    args["separator"] = ":";
    args["indices"] = "";
    args["format"] = "";
    
    var pushVar = new loopListAssignment(args);
    return pushVar.printObject();
},



 getBrowseProductFindingMethod: function(){
    if( null != amznAnalytics.getElement("pageType")){
        return "Browse";
    }
},

 getBrowseSearchTerms: function(){
    return "non search - browse";
},


/* Gateway Functions */
 getGatewayPageName: function(){
    if( null != amznAnalytics.getElement("language")){
        return "HomePage";
    }
},

 getGatewayProductFindingMethod: function(){
    if( null != amznAnalytics.getElement("language")){
        return "Browse";
    }
},


/* Search Functions */

 getSearchProductFindingMethod: function(){
    if( null != amznAnalytics.getElement("pageType")){
        return "Search";
    }
},


  getSearchPageName: function(){
    return amznAnalytics.getElement("pageType") + ":" + amznAnalytics.getElement("pageNumber");
  },
  
  getSearchEvent: function(){
      return "event6";
  },

  getNullSearchEvent: function(){
      if(amznAnalytics.getElement("searchResults") == null)
          return "event7";
  },



/* Global Detail Pages Functions */
     getDetailPageName: function(){
        return "Product:" + amznAnalytics.getElement("productTitle");
    },

     getDetailChannel: function(){
        if( null != amznAnalytics.getElement("productTitle")){
            return "Product Details Page";
        }
    },
    
    
     getDetailEventProdView: function(){
        if(null != amznAnalytics.getElement("productView")){
            return "prodView";
        }
    },
    
    getDetailEvent: function(){
        if(null != amznAnalytics.getElement("productView")){
            return "event4";
        }
    },
    
    getDetailCartAddMethod: function(){
        if(null != amznAnalytics.getElement("productView")){
            return "Detail Page";
        }
    },    

/* Collections Functions */

   getCollectionProp3: function(){
        if( null != amznAnalytics.getElement("productTitle")){
            return "Product Collection";
        }
    },

   getCollectionProductsVar: function(){
      var asin = "";
      if( null != amznAnalytics.getElement("productView") && null != amznAnalytics.getElement("productView")["pASIN"]){
           asin = ";" + amznAnalytics.getElement("productView")["pASIN"];
      }   
      return asin + ";;;;evar10=Collection Page"
  },
  

/* Detail Functions */

   getDetailProductsVar: function(){
      var asin = "";
      if( null != amznAnalytics.getElement("productView") && null != amznAnalytics.getElement("productView")["pASIN"]){
           asin = ";" + amznAnalytics.getElement("productView")["pASIN"];
      }   
      return asin + ";;;;evar10=Detail Page"
  },

/* Image Functions */

/* MiniDetail Functions */
   getMiniDetailProp3: function(){
        if( null != amznAnalytics.getElement("productTitle")){
            return "Product Quick View";
        }
    },

   getMiniDetailProductsVar: function(){
      var asin = "";
      if( null != amznAnalytics.getElement("productView") && null != amznAnalytics.getElement("productView")["pASIN"]){
           asin = ";" + amznAnalytics.getElement("productView")["pASIN"];
      }   
      return asin + ";;;;evar10=Mini Detail Page"
  },

/* Cart Functions */

    getCartEventItemsRemove: function(){
       if( null != amznAnalytics.getList("cartRemoves")){
           return "scRemove";
       }
   },

   getCartPageName: function(){
           return "Checkout: Shopping Cart";
   },

   getCartChannel: function(){
           return "Checkout";
   },
   
   getCartPageType: function(){
           return "Checkout";
   },
   
   getCartCategory: function(){
           return "Shopping Cart";
   },
   
   getCartProductsVar: function(){
      var returnValue = "";
       var args= new Array();
       args["amznVar"] = "cartRemoves";
       args["format"] = ";%s";
       args["indices"] = new Array("cASIN");
       args["separator"] = ",";
       
       var pushVar1 = new loopListAssignment(args);
       returnValue += pushVar1.printObject();
       
       args["amznVar"] = "saveForLater";
       args["format"] = ";%s";
       args["indices"] = new Array("pASIN");
       args["separator"] = ",";
       
       var pushVar2 = new loopListAssignment(args);
       
       if(returnValue != "" && pushVar2.printObject() != ""){
           returnValue += ","+pushVar2.printObject();
       } else if ( pushVar2.printObject() != ""){
           returnValue += pushVar2.printObject();
       }
       
       
      return returnValue;
  },   
   



/* CartPreview Functions */
   getCartPreviewPageName: function(){
           return "Checkout: Shopping Cart HUC";
   },

   getCartPreviewChannel: function(){
           return "Checkout";
   },
   
   getCartPreviewCategory: function(){
           return "Shopping Cart HUC";
   },


/* Checkout Functions */

     getCheckoutPageName: function(){
        return amznAnalytics.getElement("channel") + ":" + amznAnalytics.getElement("pageName");
    },
    
     getCheckoutCategory: function(){
        return amznAnalytics.getElement("channel") + ":" + amznAnalytics.getElement("category");
    },

/* ThankYouPage Functions */

    getThankYouPageName: function(){
         if( null != amznAnalytics.getElement("purchaseID")){
            return "Checkout:Order Confirmation";
        }
   },
   
    getThankYouChannel: function(){
         if( null != amznAnalytics.getElement("purchaseID")){
            return "Checkout: Confirmation";
        }
   },
   
   
    getThankYouCategory: function(){
         if( null != amznAnalytics.getElement("purchaseID")){
            return "Checkout: Shopping Cart";
        }
   },
   
    getThankYouSubcategory: function(){
         if( null != amznAnalytics.getElement("purchaseID")){
            return "Order Confirmation";
        }
   },     
   
    getThankYouPageType: function(){
         if( null != amznAnalytics.getElement("purchaseID")){
            return "Checkout: Confirmation";
        }
   },  
   
   
    getThankYouPurchaseId: function(){
       return amznAnalytics.getElement("purchaseID");
   },
   
    getThankYouState: function(){
       return amznAnalytics.getElement("billingRegion");
   },
   
   
    getThankYouZip: function(){
       return amznAnalytics.getElement("billingPostalCode");
   },
   
    getThankYouPaymentMethod: function(){
       return amznAnalytics.getElement("paymentMethod");
   },
   
   
    getThankYouFullfilmentMethod: function(){
       return amznAnalytics.getElement("fullfilmentMethod");
   },
   
    getThankYouPromotions: function(){
       
       var args= new Array();
       args["amznVar"] = "promotions";
       args["format"] = "%s";
       args["indices"] = new Array("code");
       args["separator"] = ",";
       
       var pushVar = new loopListAssignment(args);
       return pushVar.printObject();
   },
      
    getThankYouProductsVar: function(){
       var args= new Array();
       args["amznVar"] = "purchases";
       args["format"] = ";%s;%s;%s;;eVar18=%s";
       args["indices"] = new Array("pASIN","quantity","revenue","SKU");
       args["separator"] = ",";
       
       var pushVar = new loopSetAssignment(args);
       
       var returnValue = pushVar.printObject();
       
        if( null != amznAnalytics.getElement("taxRevenue")){
            returnValue = returnValue + ";Tax;;;event2=" + amznAnalytics.getElement("taxRevenue");
        }
        
        if( null != amznAnalytics.getElement("shippingRevenue")){
            returnValue = returnValue + ";Shipping;;;event3=" + amznAnalytics.getElement("shippingRevenue");
        }
        
        return returnValue;
   },  
      
    getThankYouEventPromotion: function(){
        if( null != amznAnalytics.getList("promotions")){
            return "event1";
        }
   },   
   
    getThankYouEventTaxRevenue: function(){
        if( null != amznAnalytics.getElement("taxRevenue")){
            return "event2";
        }       
   },
   
    getThankYouEventShippingRevenue: function(){
        if( null != amznAnalytics.getElement("shippingRevenue")){
            return "event3";
        }       
   },   
   
    getThankYouEventPurchase: function(){
        if( null != amznAnalytics.getElement("purchaseID")){
            return "purchase";
        }       
   },  

/* SignIn Functions */

    getSignInStarterCheckout: function(){
        if( null != amznAnalytics.getElement("startOPLSignIn")){
            return "scCheckout";
        }        
   },

   getSignInPageName: function(){
       return "Checkout: Sign in";
   },
   
   getSignInCategory: function(){
       return "Checkout Sign In";
   },
   


/* YourAccount Functions */


/* 404 Page */

    get404PageType: function(){
       return "errorPage";
   }
};


