/*
*  CoremetricsABTracking
*  author: matt lavinia
*  copyright &copy; Anthropologie
*
*  Used for our AB testing scenarios where we want to launch campaigns based on any 
*  number of segments. 
*
*/

var CoremetricsABTracking =  new Class.create();
CoremetricsABTracking.prototype = {
   initialize: function(campaignID, campaignSegment, sessionEvent, page){
	  this.cookieName = "ANTHRO_AB_"+campaignID;
	  this.campaignId = campaignID;
	  this.campaignSegment = campaignSegment;
	  this.sessionEvent = sessionEvent;
	  this.currentPage = page;
	  
	  // session check
	  if(sessionEvent !== "" || sessionEvent !== null){
		  if (!this.getCMCookie()){
			  this.createCMCookie();
			  this.throwConversionTag( this.sessionEvent,1); 
	      }else{
			  var cookieValue = this.getCMCookie();
			  if (cookieValue !== this.campaignSegment){
				  this.deleteCMCookie();
				  this.createCMCookie();
			  }
		  }
	   }
	   
	   switch(this.currentPage){
		case("cart"):
		   this.throwConversionTag("CART_TO_THANK_YOU",1);
		   this.throwElementTag("CART");
		   break;
		case("checkout"):
		   this.throwConversionTag("API_CHECKOUT_TO_THANK_YOU",1);
		   this.throwElementTag("API_CHECKOUT");
		   break;
		case("thank_you"):
		   this.completeSessionCampaign();
		   this.throwConversionTag("API_CHECKOUT_TO_THANK_YOU",2);
		   this.throwConversionTag("CART_TO_THANK_YOU",2);
		   this.throwElementTag("THANK_YOU");
		   break;
		case("homepage"):
		   this.throwElementTag("HOMEPAGE");
		   break;
		case("shipping_info"):
		   this.throwElementTag("SHIPPING_INFO");
	       break;
	   }
	   
   },
   
   completeSessionCampaign: function(){
	   this.throwConversionTag("'"+this.sessionEvent+"'",2); 
   },
   
   createCMCookie: function(){
	 var cookie_string = this.cookieName + "=" + escape ( this.campaignSegment );
     document.cookie = cookie_string;
   },
   
   getCMCookie: function(){
	  //alert ("Grabbing session cookie");
	  var results = document.cookie.match ( '(^|;) ?' + this.cookieName + '=([^;]*)(;|$)' );
	  if (results)
	    return ( unescape ( results[2] ) );
	  else
		return null;
   },
   
   deleteCMCookie: function(){
	  var cookie_date = new Date ( );  // current date & time
  	  cookie_date.setTime ( cookie_date.getTime() - 1 );
      document.cookie = this.cookieName += "=; expires=" + cookie_date.toGMTString();
   },
   
   throwElementTag: function(elementId, elementCategory){
	  if (!elementCategory){
		 elementCategory = this.campaignId+"_"+this.campaignSegment;
	  }
	  if (elementId){
	    cmCreatePageElementTag("'"+elementId+"'", "'"+elementCategory+"'");
	  }
   },
   
   throwConversionTag: function(eventId, status, value, eventCategory){
	  try{ 
	    
		if (eventCategory == "" || eventCategory == null){
		  eventCategory = this.campaignId+"_"+this.campaignSegment;
		}
		
	    if (this.campaignId && this.campaignSegment){	  
	      cmCreateConversionEventTag("'"+eventId+"'", status,  "'"+eventCategory+"'");
		}
	  }catch(e){
		  alert(e);
	  }
   }
}
