      /*         subscriptions     arthur naylor, condenet, may 2003     VERSION 2.031014    */        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;         // deployment options ...    this.cookieDuration=0.5; // hours     this.turnOffStaging=true;     this.exitingCookieName="ExitingCookie";     this.arrivalCookieName="ArrivalCookie";         // DO NOT CHANGE !!!     this.engageExitingCheck=false;     this.unloading=1;       } // end      subscriptionPops=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() {     var domain=location.host.toString();     domain=domain.substring(0,domain.indexOf("."));     for(var i=0; i<document.links.length; i++) {           // ignore links with names       if(document.links[i].name&&document.links[i].name!=null) { continue; }             // ignore links with onclick       if(document.links[i].onclick&&document.links[i].onclick!=null) { continue; }             // ignore links with target       if(document.links[i].target&&document.links[i].target!=null) { continue; }             // ignore links with javascript or same domain       if(document.links[i].href) {         if(document.links[i].href.indexOf("javascript")!=-1) { continue; }         if(document.links[i].href.indexOf(domain)!=-1) { continue; }       }             // add exiting pop to all other links       document.links[i].onclick=subscriptions.popExiting;     }     subscriptions.engageExitingCheck=true;   } // end   subscriptions.exiting=initiateExitingSubscriptionPop;   // exiting subscription pop ...    function exitingSubscriptionPop() {       var domain=location.host.toString();         // prevents functioning on development servers     if(this.turnOffStaging) { if(domain.indexOf(".dev")!=-1) { return; } }         if(subscriptions.getCookie(subscriptions.exitingCookieName)==null && subscriptions.getCookie(subscriptions.exitingCookieName)!="exiting") {       subscriptions.setExitingCookie();       var options="height="+subscriptions.exitingPopHeight;      options+=",width="+subscriptions.exitingPopWidth;       options+=",top="+(screen.height/2-subscriptions.exitingPopHeight/2);       options+=",left="+(screen.width/2-subscriptions.exitingPopWidth/2);       var pop=window.open(subscriptions.exitingPopPath,'exiting',options);       pop.focus();     }   } // end   subscriptions.popExiting=exitingSubscriptionPop;   // check exiting ...    function checkSubscriptionPop() {     if(window.event&&subscriptions.engageExitingCheck) { // prevents erroneous attempts       var event=window.event;       if(event.type=="click") {         setTimeout("subscriptions.unloading=1",10000);         subscriptions.unloading=0;       }       else if(event.type=="unload" && subscriptions.unloading==1) {         subscriptions.popExiting();       }     }   } // end   subscriptions.check=checkSubscriptionPop;   document.onclick=subscriptions.check;   window.onunload=subscriptions.check;     // arrival subscription pop ...    function arrivalSubscriptionPop() {       var domain=location.host.toString();         // prevents functioning on development servers     if(this.turnOffStaging) { if(domain.indexOf(".dev")!=-1) { return; } }         // prevents triggering when loading new page on site     var referrer=document.referrer;     if(referrer.indexOf(domain)!=-1) { return; }         if(subscriptions.getCookie(subscriptions.arrivalCookieName)!="arrival") {       subscriptions.setArrivalCookie();       setTimeout("subscriptions.action()",1000);     }   } // end   subscriptions.arrival=arrivalSubscriptionPop;     // arrival subscription pop ...    function arrivalSubscriptionPopAction() {       // prevents functioning on development and staging servers     if(this.turnOffStaging) {       var domain=location.host.toString();       domain=domain.substring(0,domain.indexOf("."));       if(domain.indexOf("condenast")!=-1||domain.indexOf("dev")!=-1) { return; }    }         var options="height="+subscriptions.arrivalPopHeight;    options+=",width="+subscriptions.arrivalPopWidth;     options+=",top="+(screen.height/2-subscriptions.arrivalPopHeight/2);     options+=",left="+(screen.width/2-subscriptions.arrivalPopWidth/2);     var pop=window.open(subscriptions.arrivalPopPath,'exiting',options);     pop.focus();   } // end   subscriptions.action=arrivalSubscriptionPopAction;       // set cookie for variable duration ...  function setArrivalSubscriptionPopCookie() {     var date=new Date( (new Date()).getTime() + subscriptions.cookieDuration*3600000 );     document.cookie=subscriptions.arrivalCookieName+"=arrival; expires="+date.toGMTString()+"; path=/; ";   } // end   subscriptions.setArrivalCookie=setArrivalSubscriptionPopCookie;       // set cookie for variable duration ...  function setExitingSubscriptionPopCookie() {     var date=new Date( (new Date()).getTime() + subscriptions.cookieDuration*3600000 );     document.cookie=subscriptions.exitingCookieName+"=exiting; 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;               