  
  
  /* 
    
    subscriptions 
    arthur naylor, condenet, may 2003 
    VERSION 2.040112 
  
  */
  
  
  
  function subscriptionsClass() { 
    
    // keys and gift variables ... 
    this.path=""; 
    this.giftPath=""; 
    this.keys=new Object(); 
    this.gift=new Object(); 
    
    // pop window sizes and locations ... 
    this.exitingPopPath="/site/subscriptions/exiting.html"; 
    this.exitingPopHeight=350; 
    this.exitingPopWidth=502; 
    this.arrivalPopPath="/site/subscriptions/arrival.html"; 
    this.arrivalPopHeight=350; 
    this.arrivalPopWidth=500; 
    
    // offsets for pop windows from center ...
    this.arrivalLeftOffset=0; 
    this.arrivalTopOffset=0; 
    this.exitingLeftOffset=0; 
    this.exitingTopOffset=0; 
    
    // deployment options ...
    this.cookieDuration=0.5; // hours 
    this.exitingCookieName="ExitingCookie"; 
    this.arrivalCookieName="ArrivalCookie"; 
    
    // DO NOT CHANGE !!! 
    this.engageExitingCheck=false; 
    this.unloading=1; 
    this.turnOffStaging=false; 
    this.turnOffCookies=false; 
    
  } // end  
  
  var subscriptionPops=new subscriptionsClass(); // legacy 
  var subscriptions=new subscriptionsClass(); 
  
  
  
  
  
  
  
  
  
  
  /*
  
    assigns keys to subscription links ... 
    
    REQUIRES keys.js ... 
    
    name each link in html document ... 
    insert specific name in name AND href attributes ...
    define path  ... 
    assign keys to each link in keys.js ... 
    execute subscriptions.assign() method at bottom of page ... 
    
    
    FOR EXAMPLE ... in keys.js ... 
   
    subscriptions.path="https://secure.advance.net/cgi-bin/subs/userInfo.cgi?type=self&magazine=GLM&cds_page_id=956&cds_response_key="; 
    subscriptions.giftPath="https://secure.advance.net/cgi-bin/subs/userInfo.cgi?type=self&magazine=GLM&cds_page_id=956&cds_response_key="; 
    subscriptions.keys["alpha"]="zeta"; 
    subscriptions.keys["gamma"]="zeta";  
    subscriptions.keys["epsilon"]="zeta"; 
    subscriptions.gifts["eta"]="zeta"; 
  
  */ 
  
  
  
  
  
  
  
  
  
  function assignLinks() { 
    var domain=location.host.toString(); 
    domain=domain.substring(0,domain.indexOf(".")); 
    for( var i=0; i<document.links.length; i++ ) { 
      var name=""; 
      if( typeof document.links[i].name=="string" ) { name=document.links[i].name; } // works only in newer browsers !!!
      else { name=document.links[i].href; }// for older browsers !!! 
      if( name==null ) { continue; } 
      if( typeof name!="string" ) { continue; } 
      if( name.length<5 ) { continue; } 
      if( name.indexOf('javascript')!=-1 ) { continue; } 
      if( true ) { 
        name=name.substring( name.lastIndexOf('/')+1 ); 
        if( typeof name!="string" ) { continue; } 
        if( typeof this.keys[name]=="string" ) { 
          document.links[i].href=this.path+this.keys[name]; 
          document.links[i].target="_blank"; 
        } 
        else if( typeof this.gift[name]=="string" ) { 
          document.links[i].href=this.giftPath+this.gift[name]; 
          document.links[i].target="_blank"; 
        } 
      } 
    } 
  } // end 
  subscriptionsClass.prototype.assign=assignLinks; 
  
  
  
  
  
  
  
  
  
  /* 
    
    pops window for subscriptions offers on arrival and exiting 
    cookies viewer for specified duration on arrival 
    pops exiting window if unloading window to new domain 
    
  */ 




  // initiate exiting subscription pop ...  
  function initiateExitingSubscriptionPop() { 
    
    // prevents recurring pop 
    var cookie=subscriptions.getCookie(subscriptions.exitingCookieName); 
    if(cookie == subscriptions.exitingCookieName) { return; } 
  
    var domain=location.host.toString(); 
    
    for(var i=0; i<document.links.length; i++) { 
      
      // ignore links with javascript, domain or reltaive links 
      if(document.links[i].href) { 
        if(document.links[i].href.indexOf("/") == 0) { continue; } 
        if(document.links[i].href.indexOf(domain) != -1) { continue; } 
        if(document.links[i].href.indexOf("javascript") != -1) { continue; } 
      } 
    
      // ignore links with names 
      if(document.links[i].name && document.links[i].name != null) { continue; } 
      
      // ignore links with target 
      if(document.links[i].target && document.links[i].target != null) { continue; } 
      
      // ignore links with onclick 
      if(document.links[i].onclick && document.links[i].onclick != null) { continue; } 
      
      // add exiting pop to all other links 
      document.links[i].onclick=subscriptions.popExiting; 
      
    } // end for 
    
    subscriptions.engageExitingCheck=true; 
    
  } // end 
  subscriptions.exiting=initiateExitingSubscriptionPop; 





  // exiting subscription pop ...  
  function exitingSubscriptionPop() { 
    var domain=location.host.toString(); 
    
    // prevents functioning on development servers 
    if(subscriptions.turnOffStaging && domain.indexOf("dev") != -1) { return; } 
    
    subscriptions.setExitingCookie(); 
    var options="height="+subscriptions.exitingPopHeight;
    options+=",width="+subscriptions.exitingPopWidth; 
    if(screen.height) { 
      options+=",top="+(screen.height/2-subscriptions.exitingPopHeight/2+subscriptions.exitingTopOffset); 
      options+=",left="+(screen.width/2-subscriptions.exitingPopWidth/2+subscriptions.exitingLeftOffset); 
    } 
    var pop=window.open(subscriptions.exitingPopPath,'subscriptions',options); 
    //if(pop.document.title) { pop.document.title="exiting subscriptions pop"; } 
    pop.focus(); 
      
  } // end 
  subscriptions.popExiting=exitingSubscriptionPop; 





  // check exiting ...  
  function checkSubscriptionPop() {  
    if(window.event && window.event.type) { 
      if(!subscriptions.engageExitingCheck) { return; } 
      var event=window.event.type; 
      if(event=="click") { 
        setTimeout("subscriptions.unloading=1",10000); 
        subscriptions.unloading=0; 
      } 
      else if(event=="unload" && subscriptions.unloading==1) { 
        subscriptions.popExiting(); 
      } 
    } 
  } // end 
  subscriptions.check=checkSubscriptionPop; 
  document.onclick=subscriptions.check; // checks ms/ie clicks 
  window.onunload=subscriptions.check; // checks changes in address 
  








  // arrival subscription pop ...  
  function arrivalSubscriptionPop() { 
    
    var domain=location.host.toString(); 
    var referrer=document.referrer; 
    
    // prevents functioning on development servers 
    if(subscriptions.turnOffStaging && domain.indexOf("dev")!=-1) { return; } 
    
    // prevents triggering when loading new page on site 
    if(referrer.indexOf(domain)!=-1) { return; } 
    
    var cookie=subscriptions.getCookie(subscriptions.arrivalCookieName); 
    if(cookie == subscriptions.arrivalCookieName) { return; } 
    
    subscriptions.setArrivalCookie(); 
    setTimeout("subscriptions.action()",1000); 
    
  } // end 
  subscriptions.arrival=arrivalSubscriptionPop; 
  


  // arrival subscription pop ...  
  function arrivalSubscriptionPopAction() {     
    var options="height="+subscriptions.arrivalPopHeight;
    options+=",width="+subscriptions.arrivalPopWidth; 
    if(screen.height) { 
      options+=",top="+(screen.height/2-subscriptions.arrivalPopHeight/2+subscriptions.arrivalTopOffset); 
      options+=",left="+(screen.width/2-subscriptions.arrivalPopWidth/2+subscriptions.arrivalLeftOffset); 
    } 
    var pop=window.open(subscriptions.arrivalPopPath,'subscriptions',options); 
    //if(pop.document.title) { pop.document.title="arrival subscriptions pop"; } 
    pop.focus(); 
  } // end 
  subscriptions.action=arrivalSubscriptionPopAction; 
  
  
  
  
  
  
  
  
  
  
  
  

  // set cookie for variable duration ...
  function setArrivalSubscriptionPopCookie() { 
   if(subscriptions.turnOffCookies) { return; } 
    var date=new Date( (new Date()).getTime() + subscriptions.cookieDuration*3600000 ); 
    document.cookie=subscriptions.arrivalCookieName+"="+subscriptions.arrivalCookieName+"; expires="+date.toGMTString()+"; path=/; "; 
  } // end 
  subscriptions.setArrivalCookie=setArrivalSubscriptionPopCookie; 
  
  

  // set cookie for variable duration ...
  function setExitingSubscriptionPopCookie() { 
   if(subscriptions.turnOffCookies) { return; } 
    var date=new Date( (new Date()).getTime() + subscriptions.cookieDuration*3600000 ); 
    document.cookie=subscriptions.exitingCookieName+"="+subscriptions.exitingCookieName+"; expires="+date.toGMTString()+"; path=/; "; 
  } // end 
  subscriptions.setExitingCookie=setExitingSubscriptionPopCookie; 



  // returns cookie ... 
  function getSubscriptionPopCookie(name) { 
    var offset=0, point=0, finish=0, cookie=document.cookie; 
    var value=null; 
    while(offset < cookie.length) { 
      point=offset+name.length; 
      if(cookie.substring(offset,point)==name) { 
        finish=cookie.indexOf(";",point); 
        if(finish < 0) { finish=cookie.length; } 
        value=unescape(cookie.substring(point+1,finish)); 
      } 
      offset=cookie.indexOf(" ",offset)+1; 
      if(offset==0) { break; } 
    } 
    return value; 
  } // end 
  subscriptions.getCookie=getSubscriptionPopCookie; 



  // delete cookie ... 
  function deleteSubscriptionPopCookie(name) { 
    document.cookie=name+"=deleted; expires=Fri, 02-Jan-1970 00:00:00 GMT; path=/;"; 
  } // end 
  subscriptions.deleteCookie=deleteSubscriptionPopCookie; 



  // delete cookie ... 
  function deleteExitingSubscriptionPopCookie(name) { 
    document.cookie=subscriptions.exitingCookieName+"=deleted; expires=Fri, 02-Jan-1970 00:00:00 GMT; path=/;"; 
  } // end 
  subscriptions.deleteExitingCookie=deleteExitingSubscriptionPopCookie; 



  // delete cookie ... 
  function deleteArrivalSubscriptionPopCookie(name) { 
    document.cookie=subscriptions.arrivalCookieName+"=; expires=Fri, 02-Jan-1970 00:00:00 GMT; path=/;"; 
  } // end 
  subscriptions.deleteArrivalCookie=deleteArrivalSubscriptionPopCookie; 

  
  
  


  
  
  
  