var ci_CMEntityString = ""; // global entity string
var ci_CurrPage= 1;
// --------------------------------------------------------
function clientEntity(url)
{
    this.URL = url;
}

function clientEvent(trID,action,template)
{
  this.trID = trID;
  this.Action = action;
  this.Template = template;
  
}

// --------------------------------------------------------
function LoadClientEvents()
{
    if(ci_clientEntities != null)
    {
        var imagePxlHTML = "";
        
        for(var i=0;i < ci_clientEntities.length; i++)
        {
           if( ci_clientEntities[i].URL.length > 0 )
           {  
              imagePxlHTML += '<img src="' + ci_clientEntities[i].URL 
                                    + (ci_clientEntities[i].URL.indexOf("?") > -1 ? "&" : "?")
                                    + "seed=" + (new Date()).getTime()
                                    + '" width="1" height="1" />';
           }
        }
        document.getElementById("ClientImgDiv").innerHTML = imagePxlHTML;    
        HandleAction("ClientPageLoad");
    }
}

// -----------------------------------------------
function HandleAction(caller,Data)
{
    
    if(typeof(ci_clientEvents) != "undefined" && ci_clientEvents  != null)
    {
        var location = window.location.toString();	      
        ci_CMEntityString = "";
   
        for(var i=0;i < ci_clientEvents.length; i++)
            {           
                if(caller == ci_clientEvents[i].Action )
                 {                                                               
                    BuildCMEString(ci_clientEvents[i].trID, ci_clientEvents[i].Template, Data);                                        
                 }                 
            } 
    
        XferCME();
    }
}

//--------------------------------------------------------
function GetPagesViewed()
{
  var PagesViewed = "";
          for (var i=0;i < ci_pagesViewed.length; i++)
           {             
             PagesViewed = PagesViewed +  ci_pagesViewed[i];                                    
           }   
   return PagesViewed                   
}
//---------------------------------------------------------
function BuildCMEString(TrID, Template, Data)
{
 
    ci_CMEntityString = ci_CMEntityString +  "<ClientEntity>"
                     + "<ClientID>" + TrID + "</ClientID>"
                     + ReplaceAttributes(Template,Data)
                     + "</ClientEntity>";                                            
    
           
}

//----------------------------------------------------------
function ReplaceAttributes(Template, Data)
{

  var AccessID = document.getElementById(ci_controlPrefix+"AccessID").value; 
  var DeviceID = document.getElementById(ci_controlPrefix+"DeviceID").value;
  var AttribStr = "";  
  var tmpStr = Template;
  
    tmpStr = tmpStr.replace("[accessID]", AccessID);  
    if(Template.indexOf("[pagesviewed]") > -1)
        tmpStr = tmpStr.replace("[pagesviewed]", GetPagesViewed());  
    
    tmpStr = tmpStr.replace("[pid]", GetQueryStringValue('pid'));
    tmpStr = tmpStr.replace("[sessionid]", GetCookieVal(GetCookie("SessionInfo"),"TrackingID"));
    
    if(tmpStr.indexOf("[deviceID]") > -1)
     tmpStr = tmpStr.replace("[deviceID]", DeviceID);  
    
     if(typeof(Data) != "undefined" && Data.length > 0) 
     {
        tmpStr = ReplaceDataAttributes(tmpStr, Data);
     }
     
     AttribStr = "<AttribValues>"
                 + Convert.encode(tmpStr)
                 + "</AttribValues>"
                 + GetChildAttribs(Template);
                  
   return AttribStr;
  
}
//---------------------------------------------------------
function ReplaceDataAttributes(Template, Data)
{
    var tmpStr = Template;
    var arrAttr = Data.split("|");
    for(var i=0;i<arrAttr.length;i++)
    {
        if(arrAttr[i].indexOf("=") > -1)
            tmpStr = tmpStr.replace(arrAttr[i].substr(0,arrAttr[i].indexOf("=")), ((arrAttr[i].indexOf("=")+1) < arrAttr[i].length? arrAttr[i].substr(arrAttr[i].indexOf("=")+1) : ""));
    }
    return tmpStr;
}


//---------------------------------------------------------

function GetChildAttribs(Template)
{
   var ChildAttribStr = "";
   if(Template.indexOf("[printslotdata]") > -1)
   {
     ChildAttribStr =  "<ChildAttribValues>"
                      + Convert.encode(GetSlotData())
                      + "</ChildAttribValues>";
   }
   return ChildAttribStr;
}

//---------------------------------------------------------
function GetSlotData()
{
    var prtSlotData = "";
    
     if(ci_PodsPerPage != null)
           {
              var startIndex = (ci_PodsPerPage * ci_CurrPage)- ci_PodsPerPage ;
              var endIndex = startIndex + ci_PodsPerPage;
              
              if (ci_sortedPods.length <= endIndex)
              {
                endIndex = ci_sortedPods.length;
              } 
               
              for( var i=startIndex; i< endIndex; i++ )
                  {                          
                    var pageSlotIndex = i%ci_PodsPerPage;
                    var slotIndex = i;
                    prtSlotData += ci_sortedPods[i].id + "|" + ci_CurrPage + "|" + pageSlotIndex + "|" + slotIndex + ",";                            
                  }
           }   
      return prtSlotData         
}

//-------------------------------------------------
function TrackPagesViewed(pageNum)
{
   ci_CurrPage = pageNum; 
   ci_pagesViewed[pageNum-1] = "1";   
   HandleAction("ClientPageView");
}
//-------------------------------------------------
function XferCME()
{
  if (ci_CMEntityString != "")
  {
   var soapBody  = '<StoreEvents xmlns="http:/www.coupons.com/CouponWeb/">';
       soapBody += '<ClientEntities>';
       soapBody += ci_CMEntityString ;
       soapBody += '</ClientEntities></StoreEvents>' ; 
       
       sendSoapPostRequest('MS2Bridge.asmx',    
       ci_CLIPHost,'http:/www.coupons.com/CouponWeb/StoreEvents', soapBody, processReqChange);  
   }    
        
}
