
/*
 *
 * MODIFICATION HISTORY:
 * -------------------------------------------------------------
 * Date        Name       Comments
 * 02/01/2009  Mary S.   Changed AUM figures as per Meredith
 * 01/13/2009  Mary S.   Added NetInstight script for ISD
 * 01/04/2009  Nick P.   Changed AUM figures as per Ashely
 * 12/01/2009  Mary S.   Changed AUM figures as per Ashely
 * 11/18/2009  Mary S.   Changed AUM figures as per Ashely
 * 11/02/2009  Mary S.   Changed AUM figures as per Ashely
 * 10/05/2009  Mary S.   Added sort table script
 * 12/22/2008  Nick P.   Added 'popupAbsRet' to for Absolute Return management teams pop-up windows.
 * 06/11/2007  Mary S.	  Added tourPopUp for tour flash show
 * 05/25/2005  Paul A.    Added 'glossaryDefinition(filename)' for the closed end funds project.
                          We need to inventory where we popup glossary terms to determine how to 
                          best remove this file from shareholder scripts.
 * 05/20/2005  Paul A.    Added 'openProductDetailsFundsNopopup(theForm)' for the closed end funds project.
                          If this works we will need to remove this function from the shareholder scripts file.
 * 05/03/2005  Marty L.   Changed figures as per Nina
 * 05/02/2005  Marty L.   Changed figures as per Nina
 * 04/11/2005  Paul A.    Added new function called 'parseNameValueString' received from Aspi Engineer.
                          It parses a string containing name-value pairs into a hashmap.
 * 02/07/2005  Mike A.    Added footnote functions called 
                         'FundPerformanceDisclaimer'
                         'CollegeAdvantageDisclaimer'
                         'TaxSmartEquityDisclaimer'
                         'ShareholderDisclaimer'
 * 03/02/2005  Marty L.   Updated 'myAUM' as per Nina
 * 02/01/2005  Marty L.   Updated 'myAUM' as per Nina
 * 10/26/2004  Marty L.   Updated 'myAUM' as per Paula
 * 10/01/2004  Marty L.   Updated 'myAUM' information for data as of 9/30.
 * 05/06/2004  Paul A.    Added function called 'myAUM'- Assets Under Management function created by Marty Lund
 * 05/05/2004  Paul A.    Added function called 'printVersion'- it was in specific site js files but should be shared
 * 04/21/2004  Paul A.    Added new function called 'myPopUp'- an all-purpose popup that you can pass a height, width and url
 * 05/17/2004  Mike A.    Added new function called 'openPayroll'- a customized popup for total compensation (intranet) that you can pass a height, width and url 
 * 10/12/2005  Mike A.    Added NetTracker scripts 
 * 01/09/2007  Mike A.    Added new function called 'openSubaccount' -- Open window for Hartford Subaccount Pricing and Performance 
 */

// 06/20/2011  Adam F.    Added this so we can script across our various sub-domains
try {document.domain = "putnam.com";} catch(e) {}

var browserVersion = parseInt(navigator.appVersion);
var isIE = navigator.appName.indexOf("Microsoft") != -1;
var agent = navigator.userAgent.toLowerCase();
var isMac = agent.indexOf("mac") != -1;

// *********************************************************************************
// Display share class definition on daily pricing and distributions page.  This is a Glossary term.
// *********************************************************************************

  function openMessage(link,x,y) {
  var newURL = '/shared/html/glossary/' + link;	
  var vWidth = x;
  var vHeight = y;
  var windowprops = vWidth + "," + vHeight + "," + "resizable=no,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no";
    OpenWindow = window.open(newURL, "window", windowprops);
    newURL.focus();
  }
  
// *********************************************************************************
// Open pricing page for a specific shareclass.  This is for CollegeAdvantage.
// *********************************************************************************

function openPricingShareclassCA(theForm) {
          link = '/assembler/shared/html/prodinfo/collegesaving/' +  
                 theForm.shareclass.options[theForm.shareclass.selectedIndex].value;
          document.location.href = link;
        }


// *********************************************************************************
// Open pricing page with either quarterly or monthly performance. This is for CollegeAdvantage.
// *********************************************************************************

function openPricingPerformanceCA(theForm) {
          link = '/assembler/shared/html/prodinfo/collegesaving/' +
                 theForm.timespan.options[theForm.timespan.selectedIndex].value;
          document.location.href = link;
        }
        


// *********************************************************************************
// Open pricing page for a specific shareclass. This is for Mutual Funds.
// *********************************************************************************

function openPricingShareclass(theForm) {
          link = '/assembler/shared/html/prodinfo/mutualfunds/' +  
                 theForm.shareclass.options[theForm.shareclass.selectedIndex].value;
          document.location.href = link;
        }


// *********************************************************************************
// Open pricing page with either quarterly or monthly performance. This is for Mutual Funds.
// *********************************************************************************

function openPricingPerformance(theForm) {
          link = '/assembler/shared/html/prodinfo/mutualfunds/' +
                 theForm.timespan.options[theForm.timespan.selectedIndex].value;
          document.location.href = link;
        }
        
function fundcode(theForm) {
          link = '/assembler/shared/html/prodinfo/mutualfunds/' +
                 theForm.code.options[theForm.code.selectedIndex].value;
          document.location.href = link;
        }
        
function selectcode(theForm) {
          link = '#' +
                 theForm.fund.options[theForm.fund.selectedIndex].value;
          document.location.href = link;
        }
        
//Marcomm Assets Under Management function- created by Marty Lund


var AUM = new Array();

// Total Assets under management in billions of U.S. dollars 
AUM[0] = "$114";

// Shareholders under management in millions of individuals 
AUM[1] = "5";

// Institutional clients 
AUM[2] = "111";

// Mutual funds 
AUM[3] = "80";

// Years of experience 
AUM[4] = "70";

// Years of global investing 
AUM[5] = "31";

// Employees worldwide 
AUM[6] = "2,600";

// Investment professionals 
AUM[7] = "134";

// Total mutual funds in billions of U.S dollars 
AUM[8] = "$58";

// Total institutional assets in billions of U.S. dollars 
AUM[9] = "$56";

// Most current MONTHLY update in U.S. format 
AUM[10] = "September 2011"; //N.P.: Update AUM[14] too

// all other data as of date 
AUM[11] = "12/31/10.";

// 401k plans 
AUM[12] = "297";

// Taft-Hartely plans 
AUM[13] = "70";

// Most current MONTHLY update in Non-U.S. format #2 (German) 
AUM[14] = "31.10.2010"; //N.P. example: 31.12.2005

// Most current QUARTERLY update in Non-U.S. format #2 (German) 
AUM[15] = "30.9.2005";

// Institutional Clients + 401(k) Accounts 
AUM[16] = "2500";

// Last Post Date in U.S. Format 
AUM[17] = "September 30, 2011"; //N.P.: Update AUM[18] too 

// As of Date 
AUM[18] = "10/31/10.";

// As of Date  #2
AUM[19] = "5/31/11.";

// As of Date (institutional clients)
AUM[20] = "6/30/11";

function myAUM(num) {
  document.write('<nobr>' + AUM[num] + '</nobr>');
  }




  function loadLeft(destleft) {
    parent.left.location.href = destleft;
  }
  
  function loadContent(destcontent) {
    parent.content.location.href = destcontent;
  }
  
  function loadTop(desttop) {
    parent.topnav.location.href = desttop;
  }
  
  function loadBottom(destleft,destcontent) {
    loadLeft(destleft);
    loadContent(destcontent);
  }
    
  function loadAll(destleft,destcontent,desttop) {
    loadLeft(destleft);
    loadContent(destcontent);
    loadTop(desttop);
  }

// *********************************************************************************
// Added this function for the closed end funds project.  If this works we will need to remove this function from the shareholder scripts file.
// *********************************************************************************

function openProductDetailsFundsNopopup(theForm) {

  if(theForm.fund.selectedIndex > 0){
  link = '/assembler/shared/html/prodinfo/mutualfunds/' + theForm.fund.options[theForm.fund.selectedIndex].value + '.htm'; 
  document.location.href = link;
  }
}   
 
//**********************************************************************
//FRAMESET SCRIPT: Mike A -- Demo functions 03/22/2005
//**********************************************************************
  function ReadEverything(link1,link2,link3) {
    ReadTopNav(link1);
    ReadContentNav(link2);
    ReadContent(link3);
  }
  
  function ReadAll(link1,link3) {
    ReadTopNav(link1);
    ReadContent(link3);
  }
  
  function ReadTopNav(link1) {
    parent.tnav.location.href = link1;
  }
  
  function ReadContentNav(link2) {
    parent.nav.location.href = link2;
  }
  
  function ReadContent(link3) {
    parent.content.location.href = link3;
  }
  
  function ReadTop(link) {
    parent.window.location.href = link;
  }
  
//**********************************************************************
//Marcomm all-purpose popup

function myPopUp(link,x,y) {
var newURL = link;
var vWidth = x;
var vHeight = y;
var windowProps = vWidth + "," + vHeight + "," + "resizable=yes,scrollbars=yes,toolbar=yes,location=no,directories=no,status=no,menubar=no,copyhistory=no";
  OpenWindow = window.open(newURL, "window", windowProps);
  OpenWindow.focus();
}


function tourPopUp(link,x,y) {
var newURL = link;
var vWidth = x;
var vHeight = y;
var windowProps = vWidth + "," + vHeight + "," + "resizable=no,scrollbars=no,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no";
  OpenWindow = window.open(newURL, "window", windowProps);
  OpenWindow.focus();
}

function popupAbsRet(argURL, argTarget,argWidth,argHeight){
	/*12/22/2008  Nick P.   In the future, determine if a general purpose pop-up is an appropriate solution.
	##                      This may require the script check submitted window properties against a default set (if any, defined within the function).
	##                      Do a cost/benefit analysis. Consider the time it would take to develop, code execution speed increase/decrease, and function flexibility.
	*/
	/*12/22/2008  Nick P.   Consider moving all pop-up functions to the same location within '/shared/scripts/scripts.js'
	*/
	//var strFullSrc = window.location.protocol + "//" + window.location.host + argURL;
	var strFullSrc = argURL;
	var popup = window.open(strFullSrc,argTarget,'width='+argWidth+',height='+argHeight+',scrollbars=1,resizable=1,location=0,status=0');
	if(window.focus){popup.focus()}; 
	return false;
}

// Print Version Function updated to handle Anchor Tags

  function printVersion()
  {
    printPage = document.location.href;
    printPageArray = printPage.split("#");
    printPage = printPageArray[0];
    
    if (printPage.indexOf("?") < 0)
      printPage = printPage+"?print=yes"
    else
      printPage = printPage+"&print=yes"
    window.open(printPage,'PrintVersion','width=530,height=400,scrollbars=yes,status=no,toolbar=no,menubar=no,resizable=yes');
  }
  
  
//0pen windows

  function showMoreInfo() {
    var newURL = "../a/moreinfo.htm";
    var windowprops = "menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,status=no,resizable=no,width=320,height=160";
    window.open(newURL, "moreinfo", windowprops);
  }

  function showRemotePrivacy() {
    top.name = "main";
    var newURL = "http://www.putnam.com/policy/fset_privacy.htm";
    var windowprops = "menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,status=no,resizable=no,width=520,height=450";
    OpenWindow = window.open(newURL, "remote", windowprops);
  }

  function showRemoteSecurity() {
    top.name = "main";
    var newURL = "http://www.putnam.com/policy/fset_security.htm";
    var windowprops = "menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,status=no,resizable=no,width=520,height=450";
    OpenWindow = window.open(newURL, "remote", windowprops);
  }

  function showRemoteTerms() {
    top.name = "main";
    var newURL = "http://www.putnam.com/policy/fset_terms.htm";
    var windowprops = "menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes,status=no,resizable=no,width=520,height=450";
    OpenWindow = window.open(newURL, "remote", windowprops);
  }

// *********************************************************************************
// Added this function on 5/24/05 for the closed end funds project.
// *********************************************************************************  
  
function glossaryDefinition(filename) {
  var url = ('/assembler/individual_investor/html/glossary/' + filename);
  var desktop = window.open(url, "_blank","width=500,height=360", scrollbars="1");

}

//Open the glossary

  function openGloss() {
  window.open('https://www.putnam.com/dc/infocenter/glossary.htm', 'Glossary', 'width=580,height=520,resizable=no,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no');
  }

//Get a prospectus

  function getProspectus(theForm) {
    if(theForm.prospectus.selectedIndex > 0){
      link = 'http://www.putnam.com/pdf/' + theForm.prospectus.options[theForm.prospectus.selectedIndex].value + '.pdf';
      window.open(link,'Prospectus','width=700,height=540,resizable=yes,scrollbars=yes,toolbar=no,location=no,status=no')
    }
  }

//Adode Reader download

  function openAdobe() {
  window.open('http://www.putnam.com/downloads/download.htm','Download',
'width=350,height=400,resizable=no,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no');
  }

//Jump

  function jump(targ,selObj,restore){ //v3.0
    eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
    if (restore) selObj.selectedIndex=0;
  }

//Print

  function printPage() {
    if (window.print) {
      setTimeout('window.print();',200);
    }
    else if (isMac) {
      alert("Press \"Cmd+p\" on your keyboard to print article.");
    }
    else {
      alert("Press \"Ctrl+p\" on your keyboard to print article.")
    }
  }

//Client Reporting popup

function startPopUp(desktopURL) {
  var desktop =
  window.open(desktopURL, "_blank","width=400,height=250");
  }

//HideShow

  function findObj(n, d) { //v4.0
  var p,i,x; 
    if(!d) d=document;
      if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
        }
      if(!(x=d[n])&&d.all) x=d.all[n];
      for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=findObj(n,d.layers[i].document);
      if(!x && document.getElementById) x=document.getElementById(n);
      return x;
    }
  
  function showHideLayers() { //v3.0
  var i,p,v,obj,args=showHideLayers.arguments;
    for (i=0; i<(args.length-2); i+=3)
    if ((obj=findObj(args[i]))!=null) {
      v=args[i+2];
      if (obj.style) {
        obj=obj.style; v=(v=='show')?'visible':(v='hide')?'hidden':v; 
        }
      obj.visibility=v; 
      }
    }
  
  function clearall() {
    document.shown.visibility="hide";
    document.hidden.visibility="hide";
    }
  
  function myhidden() {
    clearall();
    document.hidden.visibility="show";
    }
  
  function mydisplay() {
    clearall();
    document.shown.visibility="show";
    }
  
//jumpsubmit

  function jumpsubmit(link) {
    self.window.location.href=link;
    }


//Footnote functions
var now = new Date();

function W(s) {
  self.document.write(s);
}

function FundPerformanceDisclaimer() {
  W('<p class="footnote">');
  W('Past performance does not indicate future results. ');
  W('More recent returns may be worth more or less than those shown. ');
  W('Returns for class A and class M shares reflect the current maximum initial sales charges of 5.25% and 3.50% for equity funds, 3.25% and 2.00% for Putnam U.S. ');
  W('Intermediate Government Income Fund, respectively, and 4.50% for income funds. ');
  W('POP performance reflects a reduction in maximum sales charge that took effect January 28, 2004. ');
  W('Class B share returns for the 1-, 5-, and 10-year (where available) and life-of-fund periods reflect the applicable contingent deferred sales charge (CDSC), which is 5% in the first year, declines to 1% in the sixth year, and is eliminated thereafter. ');
  W('Returns shown for class B and class M shares for periods prior to their inception are derived from the historical performance of class A shares, adjusted to reflect both the initial sales charge or CDSC, if any, currently applicable to each class and, in the case of class B and class M shares, the higher operating expenses applicable to such shares. ');
  W('For class C shares, returns for periods prior to their inception are derived from the historical performance of class A shares, adjusted to reflect both the CDSC currently applicable to class C shares, which is 1% for the first year and is eliminated thereafter, and the higher operating expenses applicable to class C shares. ');
  W('All returns assume reinvestment of distributions at NAV. ');
  W('Investment return and principal value will fluctuate so that an investor\'s shares when redeemed may be worth more or less than their original cost. ');
  W('For a portion of the period, some funds may have limited expenses, without which returns would have been lower. ');
  W('Please see a prospectus for details. ');
  W('Closed-end fund performance is calculated using prices on the dividend ex-date and does not account for taxes on reinvested distributions. ');
  W('</p>');
}

function CollegeAdvantageDisclaimer() {
  W('<p class="footnote">');
  W('Mutual fund pricing as detailed above applies to corresponding investment options in Putnam CollegeAdvantage with the exception of Putnam CollegeAdvantage Stable Value option, which has a maximum sales charge of 4.25% for class A shares. ');
  W('Special fee provisions apply to accounts invested in Putnam CollegeAdvantage Asset Allocation Options opened prior to May 16, 2003. ');
  W('Those accounts are generally subject to lower charges and expenses as long as the amounts remain in the investment option in which they were invested on May 15, 2003. ');
  W('Returns do not reflect an annualized 0.20% fee charged by the Ohio Tuition Trust Authority. ');
  W('</p>');
}

function TaxSmartEquityDisclaimer() {
  W('<p class="footnote">');
  W('All returns are before taxes except as designated for Putnam Tax Smart Equity Fund. ');
  W('After-tax returns reflect the highest individual federal income tax rate and exclude state and local taxes. ');
  W('Actual after-tax returns depend on the investor\'s tax situation and may differ from those shown. ');
  W('After-tax returns are not relevant to those investing through 401(k) plans, IRAs, or other tax-deferred arrangements. ');
  W('</p>');
}

function ShareholderDisclaimer() {
  W('<p class="disclaimer">');
  W('For more information about the Putnam family of funds, including investment policies, charges, and expenses, ask your financial advisor for a free prospectus or call Putnam Investments at <span class="tollfree">1-888-4-PUTNAM (1-888-478-8626)</span>. ');
  W('Please read the prospectus carefully before you invest or send money. ');
  W('If you are having difficulties using this web site, please call Putnam Investments at <span class="tollfree">1-888-4- PUTNAM (1-888-478-8626)</span>. ');
  W('</p>');
  W('<p>');
  W('<img src="/shared/images/logo_footnte_prm.gif" alt="" width="216" height="62" hspace="0" vspace="0" border="0">');
  W('</p>');
}

function LoginDisclaimer() {
  W('<p class="disclaimer">');
  W('To access this site, you will need either ');
  W('<a href="http://www.netscape.com/" class="disclaimer" target="_blank">Netscape 7.0</a> ');
  W('(or higher) or ');
  W('<a href="http://www.microsoft.com/" target="_blank" class="disclaimer">Microsoft Internet Explorer 5.0</a> ');
  W('(or higher). ');
  W('Click the underlined browser name to download the browser software. ');
  W('Browsers must be enabled for both JavaScript and Java. ');
  W('To enable your browser for JavaScript or Java, please consult your browser documentation. ');
  W('If you are having difficulty using this Web site or you would like more information about Putnam products, please call your Putnam representative.');
  W('<br><br>');
  W('<a href="https://www.putnam.com/policies/" class="disclaimer" target="_blank">Click here</a> ');
  W('to view our privacy policy.');
  W('<br><br>');
  W('<br>');
  W('<img src="/shared/images/logo_footnte_prm.gif" alt="Copyright" width="216" height="62" hspace="0" vspace="0" border="0">');
  W('</p>');
}

function printMe() {
  printPage();
  return false;
}

function goBack() {
  this.href = history.back();
  return false;
}

function closeMe() {
  window.close();
  return false;
} 

// PRM Central Function

function prmPop(link,popw,poph) {
var newURL = link;
if (popw > 0 )
  var windowprops = "width="+popw+",height="+poph+",directories=0,location=0,copyhistory=0,menubar=1,resizable=1,scrollbars=1,status=1,toolbar=1";
else  
  var windowprops = "width=755,height=537,directories=0,location=0,copyhistory=0,menubar=1,resizable=1,scrollbars=1,status=1,toolbar=1";
    
  OpenWindow = window.open(newURL, "window", windowprops);
}

//Prodinfo function

function productDetailsPopup(filename) 
{
  var url = ('https://content.putnam.com/prodinfo/funds/' + filename);
  var desktop = window.open(url, "_blank","width=770,height=520", scrollbars="1");
}

function printhelpWin(isBroker)
{
  if (isBroker)
    window.open('https://content.putnam.com/financial_advisor/html/help/print_help_landscape.htm','_blank','width=500,height=400,scrollbars=1');
  else
    window.open('https://content.putnam.com/individual_investor/html/help/print_help_landscape.htm','_blank','width=500,height=400,scrollbars=1');
}

//E Mail Address check for confirm suppression -- Removed 2/9/2004 by DLW

/* custom function for total compensation - Putnam intranet */
function openPayroll(link,x,y) {
  var newURL =  'http://intranet/' + link;
  var vWidth = x;
  var vHeight = y;
  var windowprops = vWidth + "," + vHeight + "," + "resizable=yes,scrollbars=yes,toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,copyhistory=yes";
    OpenWindow = window.open(newURL, "window", windowprops);
    newURL.focus();
  }
  
//  ***** The following group of functions control business dates *****

function today() {
var vMonth = new Array ("January","February","March","April","May","June","July","August","September","October","November","December")
  document.write(vMonth[now.getMonth()] + "&nbsp;" + now.getDate() + ",&nbsp;" + now.getFullYear());
}

function LeapYear(theYear) {
  if ((theYear % 4) == 0) {
    return 29
    }
  else {
    return 28
    }
  }

function GetMonthDays(month) {
  var year = 0
  while (month < 0) {
    month = month + 12
    year = year + 1
    }
  var currently = new Date
  var currentyear = currently.getYear()
  var checkingyear = (currentyear - year)
  if (month == 0) {
    var days = 31
    }
  if (month == 1) {
    var days = LeapYear(checkingyear)
    }
  if (month == 2) {
    var days = 31
    }
  if (month == 3) {
    var days = 30
    }
  if (month == 4) {
    var days = 31
    }
  if (month == 5) {
    var days = 30
    }
  if (month == 6) {
    var days = 31
    }
  if (month == 7) {
    var days = 31
    }
  if (month == 8) {
    var days = 30
    }
  if (month == 9) {
    var days = 31
    }
  if (month == 10) {
    var days = 30
    }
  if (month == 11) {
    var days = 31
    }
  return days
  }
  
function GetMonthYears(month) {
    var year = 0
  while (month < 0) {
    month = month + 12
    year = year + 1
    }
  return days, year
  }
  
function WriteDate(Offset) { //last business day
  var now = new Date
  var AbsDay = now.getDay()
  var AbsDate = now.getDate()
  var AbsMonth = now.getMonth()
  var AbsYear = now.getFullYear()
  var DayCounter = Offset
  var MonthCounter = 0
  var YearCounter = 0
  var CurDay = 100
  CurDay = CurDay + AbsDay - DayCounter - 100
  while (CurDay < 0) {
    CurDay = (CurDay + 7)
    }
  if (CurDay == 0) {
    CurDay = 5
    DayCounter = DayCounter + 2
    }
  if (CurDay == 6) {
    CurDay = 5
    DayCounter = DayCounter +1
    }
  var CurDate = 100
  CurDate = CurDate + AbsDate - DayCounter - 100
  while (CurDate < 1) {
    MonthCounter = MonthCounter + 1
    CurDate = CurDate + GetMonthDays(AbsMonth - MonthCounter)
    }
  var CurMonth = AbsMonth-MonthCounter
  while (CurMonth < 0) {
    YearCounter = YearCounter + 1
    CurMonth = CurMonth + 12
    }
  var CurYear = AbsYear-YearCounter
  if (CurMonth < 9) {
    document.write("0")
    }
  document.write(CurMonth +1)
  document.write("/")
  if (CurDate < 10) {
    document.write("0")
    }
  document.write(CurDate)
  document.write("/")
  document.write(CurYear)
  }

function AnyDate(Offset) { //last business month
  var AbsDay = now.getDay()
  var AbsDate = now.getDate()
  var AbsMonth = now.getMonth()
  var AbsYear = now.getFullYear()
  
  var DayCounter = Offset
  var MonthCounter = 0
  var YearCounter = 0
  
  var CurDay = 100
  CurDay = CurDay + AbsDay - DayCounter - 100
  while (CurDay < 0) {
    CurDay = (CurDay + 7) }
  var CurDate = 100
  CurDate = CurDate + AbsDate - DayCounter - 100
  while (CurDate < 1) {
    MonthCounter = MonthCounter + 1
    CurDate = CurDate + GetMonthDays(AbsMonth - MonthCounter)
    }
  var CurMonth = AbsMonth-MonthCounter
  while (CurMonth < 0) {
    YearCounter = YearCounter + 1
    CurMonth = CurMonth + 12
    }
  var CurYear = AbsYear-YearCounter
  if (CurMonth < 9) {
    document.write("0")
    }
  document.write(CurMonth + 1)
  document.write("/")
  if (CurDate < 10) {
    document.write("0")
    }
  document.write(CurDate)
  document.write("/")
  document.write(CurYear)
  }

function WriteMonth() {
  var Alpha = new Date
  var Beta = Alpha.getDate()
  AnyDate(Beta)
  }
  
function WriteQuarter() {
  var Omega = new Date
  var MCounter = Omega.getMonth()
  var DCounter = 100
  DCounter = DCounter + Omega.getDate() - 100
  while ((MCounter % 3) > 0) {
    MCounter = MCounter - 1
    DCounter = DCounter + GetMonthDays(MCounter) }
  AnyDate(DCounter)
}

function WriteQtr(num) {
  var Omega = new Date;
  var myMonth = Omega.getMonth();
  var currentQuarter = (myMonth + 1) / 3;
  var oldQuarter = currentQuarter - num;
  var myLoop = oldQuarter;
  var myYears = 0;
  while (oldQuarter < 0) {
    myYears = myYears +1;
    oldQuarter= myLoop + 4;
  }
  if (oldQuarter <= 1) {
    document.write('12/31/' + (Omega.getFullYear() - myYears - 1));
  } else {
    if  (oldQuarter <= 2) {
      document.write('03/31/' + (Omega.getFullYear() - myYears));
    } else {
      if (oldQuarter <= 3) {
        document.write('06/30/' + (Omega.getFullYear() - myYears));
      } else {
        document.write('09/30/' + (Omega.getFullYear() - myYears));
      }
    }
  }
}


// ***********************************************************************************
//
// Name: parseNameValueString
//
// Purpose: Parses a string containing name-value pairs into a hashmap.
//
// Parameters:
// 1) inString     - The string to be parsed
// 2) pairDelimitor - The character used to delimit between consecutive name
//             value pairs
// 3) keyDelimitor  - The character used to delimit between the name and value
//
// Usage:
// -----
//  var parsedData = parseNameValueString('name=value&name2=value2', '&', '=');
//  for (i in parsedData) {
//    alert (logMsgPrefix + "parsedData[" + i + "] = [" + parsedData[i] + "]");
//  }
//  if (parsedData["name3"]) {
//    alert (logMsgPrefix + "parsedData[\"name3\"] exists");
//  } else {
//    alert (logMsgPrefix + "parsedData[\"name3\"] does not exist");
//  }
//
// 
// Important Considerations:
// Be careful when choosing delimiters. YOU MUST USE A <pairDelimitor> THAT DOES NOT 
// OCCUR ANY WHERE ELSE IN THE NAME VALUE PAIRS.
// Example: If name-value pairs may contain the "&" character, then you can use an alternate delimiter:
// parseNameValueString('url=http://stuff.com?name=value&name2=value2@winattr=a=b&c=d@tab=blah', '@', '=');
//
// ***********************************************************************************
function parseNameValueString(inString, pairDelimitor, keyDelimitor)
{
  var logMsgPrefix = "common.js::parseNameValueString()::";
  var gScriptsDebug = false;
  
  if (gScriptsDebug) {alert (logMsgPrefix + "inString     = [" + inString + "]");}
  if (gScriptsDebug) {alert (logMsgPrefix + "pairDelimitor  = [" + pairDelimitor + "]");}
  if (gScriptsDebug) {alert (logMsgPrefix + "keyDelimitor   = [" + keyDelimitor + "]");}

    // The Object ("Array") where our data will be stored. 
    outData = new Object(); 

  // Perhaps we got some bad data?
  if (inString.length < 1) { 
    if (gScriptsDebug) {alert (logMsgPrefix + "inString is empty. Returning false");}
      return false; 
    }   

  // Local vars used to store and keep track of name/value pairs 
  // as we parse them back into a usable form. 
  keypairs = new Object(); 
  numKP = 1; 

  // Split the inString string at each <pairDelimitor>, storing the left-hand side 
  // of the split in a new keypairs[] holder, and chopping the inString 
  // so that it gets the value of the right-hand string. 
  while (inString.indexOf(pairDelimitor) > -1) { 
    keypairs[numKP] = inString.substring(0,inString.indexOf(pairDelimitor)); 
    inString = inString.substring((inString.indexOf(pairDelimitor)) + 1); 
    numKP++; 
  } 

  // Store what's left in the inString string as the final keypairs[] data. 
  keypairs[numKP] = inString; 

  // Debugging
  if (gScriptsDebug) {
    for (i in keypairs) { 
      alert (logMsgPrefix + "keypairs[" + i + "] = [" + keypairs[i] + "]");  
    }
  }
  
  for (i in keypairs) { 
    // Perhaps we got a malformed name-value pair. The name-value pair must contain 
    // the delimitor
    if (keypairs[i].indexOf(keyDelimitor) <= -1) { 
      if (gScriptsDebug) {alert (logMsgPrefix + "Malformed name-value pair [" + keypairs[i] + "]");}
      continue; 
    } 
    
    // Left of <keyDelimitor> is name. The name cannot be a empty string.
    keyName = keypairs[i].substring(0,keypairs[i].indexOf(keyDelimitor)); 
    if (keyName.length < 1) { 
      if (gScriptsDebug) {alert (logMsgPrefix + "Malformed name value pair (name is null) [" + keypairs[i] + "]");}
      continue; 
    }

    // Right of <keyDelimitor> is value. 
    keyValue = keypairs[i].substring((keypairs[i].indexOf(keyDelimitor)) + 1); 
    outData[keyName] = keyValue; 
  }
  
  // Debugging
  if (gScriptsDebug) {
    for (i in outData) { 
      alert (logMsgPrefix + "outData[" + i + "] = [" + outData[i] + "]");  
    }
  }
  
  return outData; 
} 

// Go button for Offshore Products: Daily unit value
// Added on 04.25.2005 by MA
function goThere() {
  var list = document.forms[0].urllist
  window.open(list.options[list.selectedIndex].value);
}

// Suppresses image and label halo 
// Added on 12.06.2006 by MA
function blurAnchors() {
  if(document.getElementsByTagName) {
    var a = document.getElementsByTagName("a");
    for(var i = 0; i < a.length; i++) {
      a[i].onfocus = function(){this.blur()};
    }
  }
  if(document.getElementsByTagName) {
    var label = document.getElementsByTagName("label");
    for(var h = 0; h < label.length; h++) {
      label[h].onfocus = function(){this.blur()};
    }
  }
}

// Open window for Hartford Subaccount Pricing and Performance 
// Added on 01.09.2007 by MA
function openSubaccount(link) {
  var windowProps = "width=620,height=405,resizable=yes,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,copyhistory=no,screenX=0,screenY=0,left=0,top=0";
  myWindow = window.open("","windowRef",windowProps);
  myWindow.location.href = "/shared/html/redirect/" + link
  if (!myWindow.opener) myWindow.opener = self;
}


//collasping lists & misc scripts
//Nicholas Petruzzelli
	//Change Class
	function changeClass(argObject,argNewClass){
		argObject.className = argNewClass;		//set the class of the submitted object to the submitted class.
	}

	//Change class to Hide/Show element
	function toggle_CList(argObj){
		var objLI = argObj.parentNode;	//get parent 'li' object to the contained object.
		if(objLI.className=='closed'){	//IF the 'li' object has a closed class,
			changeClass(objLI,'opened');	//then make it opened;
		} else {									//ELSE,
			changeClass(objLI,'closed');	//make it closed.
		};
	}
	
	//Change class to Hide/Show ALL elements
	function toggle_CListAll(argObj){
		var objLI_all = argObj.parentNode.parentNode.getElementsByTagName('li');	//get all 'li' objects in the parent 'ul' object
		var strLI_firstclass = objLI_all[0].className;										//get the className of the first  'li' (we are assuming this 'li' is the one containing hide/show control).
		var strNewClass = (strLI_firstclass == 'closed')?'opened':'closed';			//determine what class to set based on the current class for the first 'li' object.
		var i;																							//local variable to increment a loop.
		
		for(i=0; i<objLI_all.length; i++){			//for each 'li' object
			objLI_all[i].className = strNewClass;	//set the className to be opened/closed as determined by strNewClass.
		};
	}

	//flickr handling
	try {
	  document.execCommand("BackgroundImageCache", false, true); //cache management, SRC: http://www.mister-pixel.com/#Content__state=
	} catch(err) {}

	//end flickr handling
//END collasping lists & misc scripts

/*CROSS-BROWSER getElementById()*/
function returnElementById(argID){
	if(document.getElementById){
		var returnObj = document.getElementById(argID);
	}else if (document.all){
		var returnObj = document.all[argID];
	}else if (document.layers){
		var returnObj = document.layers[argID];
	};
	return returnObj; 
}
/*end CROSS-BROWSER getElementById()*/

//Flash / HTML communication
var intervalid = 0;//Pinpoint

function getFlashMovie(movieName){
	var movieObj = returnElementById(movieName);
	return movieObj;
}

//CUSTOM
function playVideo(playerName,contentPathURL){
	getFlashMovie(playerName).playVideoToFlash(contentPathURL);
}
function seekVideo(playerName,contentPathURL,time){
	getFlashMovie(playerName).seekVideoToFlash(contentPathURL, time);
}

//Pinpoint
function playVideo(numValue){
	getFlashMovie("PutnamMediaPlayer").flashMediaEvent(numValue);
}
//END Flash / HTML communication

  /** added sort table script 10/05/09  MS
*
*  Sortable HTML table
*  http://www.webtoolkit.info/
*
**/
 
function SortableTable (tableEl) {
 
	this.tbody = tableEl.getElementsByTagName('tbody');
	this.thead = tableEl.getElementsByTagName('thead');
	this.tfoot = tableEl.getElementsByTagName('tfoot');
 
	this.getInnerText = function (el) {
		if (typeof(el.textContent) != 'undefined') return el.textContent;
		if (typeof(el.innerText) != 'undefined') return el.innerText;
		if (typeof(el.innerHTML) == 'string') return el.innerHTML.replace(/<[^<>]+>/g,'');
	}
 
	this.getParent = function (el, pTagName) {
		if (el == null) return null;
		else if (el.nodeType == 1 && el.tagName.toLowerCase() == pTagName.toLowerCase())
			return el;
		else
			return this.getParent(el.parentNode, pTagName);
	}
 
	this.sort = function (cell) {
 
	    var column = cell.cellIndex;
	    var itm = this.getInnerText(this.tbody[0].rows[1].cells[column]);
		var sortfn = this.sortCaseInsensitive;
 
		if (itm.match(/\d\d[-]+\d\d[-]+\d\d\d\d/)) sortfn = this.sortDate; // date format mm-dd-yyyy
		if (itm.replace(/^\s+|\s+$/g,"").match(/^[\d\.]+$/)) sortfn = this.sortNumeric;
 
		this.sortColumnIndex = column;
 
	    var newRows = new Array();
	    for (j = 0; j < this.tbody[0].rows.length; j++) {
			newRows[j] = this.tbody[0].rows[j];
		}
 
		newRows.sort(sortfn);
 
		if (cell.getAttribute("sortdir") == 'down') {
			newRows.reverse();
			cell.setAttribute('sortdir','up');
		} else {
			cell.setAttribute('sortdir','down');
		}
 
		for (i=0;i<newRows.length;i++) {
			this.tbody[0].appendChild(newRows[i]);
		}
 
	}
 
	this.sortCaseInsensitive = function(a,b) {
		aa = thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]).toLowerCase();
		bb = thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]).toLowerCase();
		if (aa==bb) return 0;
		if (aa<bb) return -1;
		return 1;
	}
 
	this.sortDate = function(a,b) {
		aa = thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]);
		bb = thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]);
		date1 = aa.substr(6,4)+aa.substr(3,2)+aa.substr(0,2);
		date2 = bb.substr(6,4)+bb.substr(3,2)+bb.substr(0,2);
		if (date1==date2) return 0;
		if (date1<date2) return -1;
		return 1;
	}
 
	this.sortNumeric = function(a,b) {
		aa = parseFloat(thisObject.getInnerText(a.cells[thisObject.sortColumnIndex]));
		if (isNaN(aa)) aa = 0;
		bb = parseFloat(thisObject.getInnerText(b.cells[thisObject.sortColumnIndex]));
		if (isNaN(bb)) bb = 0;
		return aa-bb;
	}
 
	// define variables
	var thisObject = this;
	var sortSection = this.thead;
 
	// constructor actions
	if (!(this.tbody && this.tbody[0].rows && this.tbody[0].rows.length > 0)) return;
 
	if (sortSection && sortSection[0].rows && sortSection[0].rows.length > 0) {
		var sortRow = sortSection[0].rows[0];
	} else {
		return;
	}
 
	for (var i=0; i<sortRow.cells.length; i++) {
		sortRow.cells[i].sTable = this;
		sortRow.cells[i].onclick = function () {
			this.sTable.sort(this);
			return false;
		}
	}
 
}
////////  Added for pull downs to work everywhere  11/04/09 MS /////////

function openNewPage(URL) {
	document.location.href = URL;
}

////////  Added per ISD for NetInsight 1/13/09 MS /////////

/* Unica Page Tagging Script v7.4.0
 * Copyright 2004-2006 Unica Corporation.  All rights reserved.
 * Visit http://www.unica.com for more information.
 */

var NTPT_IMGSRC = '/shared/images/ntpagetag.jpg';

var NTPT_FLDS = new Object();
NTPT_FLDS.lc = true; // Document location
NTPT_FLDS.rf = true; // Document referrer
NTPT_FLDS.rs = true; // User's screen resolution
NTPT_FLDS.cd = true; // User's color depth
NTPT_FLDS.ln = true; // Browser language
NTPT_FLDS.tz = true; // User's timezone
NTPT_FLDS.jv = true; // Browser's Java support

var NTPT_MAXTAGWAIT = 1.0; // Max delay (secs) on link-tags and submit-tags

// Optional variables:
var NTPT_HTTPSIMGSRC = '/shared/images/ntpagetag.jpg';
var NTPT_GLBLEXTRA = "profileName=putnam";
var NTPT_GLBLREFTOP = false;

/*** END OF USER-CONFIGURABLE VARIABLES ***/

function OOOO000(OO0O00,O0O0O,O000OOO,OO0O00O){var O00O0="";O00O0=OO0O00+"\x3d"+escape(O0O0O)+"\x3b";if(OO0O00O)O00O0+="\x20\x64\x6f\x6d\x61\x69\x6e\x3d"+OO0O00O+"\x3b";if(O000OOO>(0x1d65+435-0x1f18)){var OOO00O=new Date();OOO00O.setTime(OOO00O.getTime()+(O000OOO*(0x9a6+2102-0xdf4)));O00O0+="\x20\x65\x78\x70\x69\x72\x65\x73\x3d"+OOO00O.toGMTString()+"\x3b";}O00O0+="\x20\x70\x61\x74\x68\x3d\x2f";document.cookie=O00O0;};function OOOO00(OO0O00){var O0O0O0O=OO0O00+"\x3d";if(document.cookie.length>(0x162f+0-0x162f)){var OO0000;OO0000=document.cookie.indexOf(O0O0O0O);if(OO0000!=-(0x106+5772-0x1791)){var OOO000;OO0000+=O0O0O0O.length;OOO000=document.cookie.indexOf("\x3b",OO0000);if(OOO000==-(0x129c+4910-0x25c9))OOO000=document.cookie.length;return unescape(document.cookie.substring(OO0000,OOO000));}else{return null;};}};function O00000O(O0OO0){var OO000O="";for(OO00O in O0OO0){if((typeof(O0OO0[OO00O])=="\x73\x74\x72\x69\x6e\x67")&&(O0OO0[OO00O]!="")){if(OO000O!="")OO000O+="\x3b";OO000O+=OO00O+"\x3d"+O0OO0[OO00O];};}return OO000O;};var O00OOO=["\x41","\x42","\x43","\x44","\x45","\x46","\x47","\x48","\x49","\x4a","\x4b","\x4c","\x4d","\x4e","\x4f","\x50","\x51","\x52","\x53","\x54","\x55","\x56","\x57","\x58","\x59","\x5a","\x61","\x62","\x63","\x64","\x65","\x66","\x67","\x68","\x69","\x6a","\x6b","\x6c","\x6d","\x6e","\x6f","\x70","\x71","\x72","\x73","\x74","\x75","\x76","\x77","\x78","\x79","\x7a","\x30","\x31","\x32","\x33","\x34","\x35","\x36","\x37","\x38","\x39"];function OOOOOO0(O00000){if(O00000<(0x41+9084-0x237f)){return O00OOO[O00000];}else{return(OOOOOO0(Math.floor(O00000/(0x1163+644-0x13a9)))+O00OOO[O00000%(0x1c5c+1570-0x2240)]);}};function O0O000O(){var OO0OO0O="";var OOOOO00=new Date();for(OOO0O0O=(0x13b0+769-0x16b1);OOO0O0O<(0x26f+3070-0xe62);OOO0O0O++){OO0OO0O+=O00OOO[Math.round(Math.random()*(0xb62+1003-0xf10))];}return(OO0OO0O+"\x2d"+OOOOOO0(OOOOO00.getTime()));};function OO0OO(O0O0000,OOO0O00){return(eval("\x74\x79\x70\x65\x6f\x66\x20"+O0O0000+"\x20\x21\x3d\x20\x22\x75\x6e\x64\x65\x66\x69\x6e\x65\x64\x22")?eval(O0O0000):OOO0O00);};function OO0O000(O00OOO0,O0O000){return(O00OOO0+(((O00OOO0=='')||((O0O000=='')||(O0O000.substring((0x1dc9+2039-0x25c0),(0x1442+4474-0x25bb))=="\x26")))?'':"\x26")+O0O000);};function O000O00(){var O0O00O=new Date();return(O0O00O.getTime()+"\x2e"+Math.floor(Math.random()*(0xed9+1573-0x1116)));};function O00OO(OO0O00,OO0OO00){OOO00[OO0O00]=OO0OO00.toString();};function O0OO0O0(OO0O00){OOO00[OO0O00]='';};function OOO0000(O000O){var O0OO0O='',OO00O,O0O0O;OO00OO(OO0OO("\x4e\x54\x50\x54\x5f\x47\x4c\x42\x4c\x45\x58\x54\x52\x41",''));if(!LnkLck)OO00OO(OO0OO("\x4e\x54\x50\x54\x5f\x50\x47\x45\x58\x54\x52\x41",''));OO00OO(O000O);for(OO00O in OOO00){O0O0O=OOO00[OO00O];if(typeof(O0O0O)=="\x73\x74\x72\x69\x6e\x67"){if(O0O0O&&(O0O0O!=''))O0OO0O=OO0O000(O0OO0O,(OO00O+"\x3d"+(self.encodeURIComponent?encodeURIComponent(O0O0O):escape(O0O0O))));};}return O0OO0O;};function O000000(){var OO00O;OOOOO0.OOO00=new Array();for(OO00O in OOO00)OOOOO0.OOO00[OO00O]=OOO00[OO00O];};function OOO00OO(){var OO00O;OOO00=new Array();for(OO00O in OOOOO0.OOO00)OOO00[OO00O]=OOOOO0.OOO00[OO00O];};function OO0O0OO(O00O00,O0OOOO0,O000OO){if(OOOO0[O00O00]!=null){var O000O0=new Function(O0OOOO0);OOOO0[O00O00].onload=O000O0;OOOO0[O00O00].onerror=O000O0;OOOO0[O00O00].onabort=O000O0;}setTimeout(O0OOOO0,(O000OO*(0x5f3+3206-0xe91)));};function O0O00O0(O0OOOO,OO0O0O){if(O0OOOO=='')return;O0000=((O0000+(0x1312+1405-0x188e))%OOOO0.length);if(OOOO0[O0000]==null)OOOO0[O0000]=new Image((0x1005+4276-0x20b8),(0x1208+715-0x14d2));OOOO0[O0000].src=O0OOOO+"\x3f"+OO0O0O;};function OOOOO0O(O000O){var O0OOOO;var OO0O0O;if((O00O00O!='')&&(document.location.protocol=="\x68\x74\x74\x70\x73\x3a"))O0OOOO=O00O00O;else O0OOOO=O0000OO;OO0O0O=OOO0000(O000O);O0O00O0(O0OOOO,OO0O0O);OOO00OO();};function OO00OO(O000O){var OO00O0;var O00O0O;if(!O000O)return;O000O=O000O.toString();if(O000O=='')return;OO00O0=O000O.split("\x26");for(O00O0O=(0xdc+1230-0x5aa);O00O0O<OO00O0.length;O00O0O++){var OOO0O0=OO00O0[O00O0O].split("\x3d");if(OOO0O0.length==(0x83d+4370-0x194d))O00OO(OOO0O0[(0x1240+5137-0x2651)],(self.decodeURIComponent?decodeURIComponent(OOO0O0[(0xa7d+3816-0x1964)]):unescape(OOO0O0[(0xd8f+2979-0x1931)])));}};function O0O0OO(O000O){O00OO("\x65\x74\x73",O000O00());OOOOO0O(O000O);return true;};function O00OO0O(OOOOO,O000O,O000OO){var O0OOO;if(!OOOOO||!OOOOO.href)return true;if(LnkLck)return false;LnkLck=OOOOO;if(OO000.lc)O00OO("\x6c\x63",OOOOO.href);if(OO000.rf){if(!O0OO000||!top||!top.document)O00OO("\x72\x66",document.location);}O0O0OO(O000O);if(O000OO)O0OOO=O000OO;else O0OOO=NTPT_MAXTAGWAIT;if(O0OOO>(0x659+6874-0x2133)){var OOOOOO;if(OOOOO.click){OOOOO.tmpclck=OOOOO.onclick;OOOOO.onclick=null;OOOOOO="\x69\x66\x20\x28\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x29\x20\x7b\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x63\x6c\x69\x63\x6b\x28\x29\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x6f\x6e\x63\x6c\x69\x63\x6b\x20\x3d\x20\x4c\x6e\x6b\x4c\x63\x6b\x2e\x74\x6d\x70\x63\x6c\x63\x6b\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d";}else OOOOOO="\x69\x66\x20\x28\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x29\x20\x7b\x20\x77\x69\x6e\x64\x6f\x77\x2e\x6c\x6f\x63\x61\x74\x69\x6f\x6e\x2e\x68\x72\x65\x66\x20\x3d\x20\x22"+OOOOO.href+"\x22\x3b\x20\x4c\x6e\x6b\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d";OO0O0OO(O0000,OOOOOO,O0OOO);return false;}LnkLck=null;return true;};function O000OO0(OO0OOO,O000O,O000OO){var O0OOO;if(!OO0OOO||!OO0OOO.submit)return true;if(FrmLck)return false;FrmLck=OO0OOO;O0O0OO(O000O);if(O000OO)O0OOO=O000OO;else O0OOO=NTPT_MAXTAGWAIT;if(O0OOO>(0x1497+4406-0x25cd)){OO0OOO.tmpsbmt=OO0OOO.onsubmit;OO0OOO.onsubmit=null;OO0O0OO(O0000,"\x69\x66\x20\x28\x20\x46\x72\x6d\x4c\x63\x6b\x20\x29\x20\x7b\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x73\x75\x62\x6d\x69\x74\x28\x29\x3b\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x6f\x6e\x73\x75\x62\x6d\x69\x74\x20\x3d\x20\x46\x72\x6d\x4c\x63\x6b\x2e\x74\x6d\x70\x73\x62\x6d\x74\x3b\x20\x46\x72\x6d\x4c\x63\x6b\x20\x3d\x20\x6e\x75\x6c\x6c\x3b\x20\x7d",O0OOO);return false;}FrmLck=null;return true;};var O0000OO=NTPT_IMGSRC;var OO000=NTPT_FLDS;var O00OO0=OO0OO("\x4e\x54\x50\x54\x5f\x47\x4c\x42\x4c\x43\x4f\x4f\x4b\x49\x45\x53",null);var OOOO0O=OO0OO("\x4e\x54\x50\x54\x5f\x50\x47\x43\x4f\x4f\x4b\x49\x45\x53",null);var OOO00O0=OO0OO("\x4e\x54\x50\x54\x5f\x53\x45\x54\x5f\x49\x44\x43\x4f\x4f\x4b\x49\x45",false);var OO0OO0=OO0OO("\x4e\x54\x50\x54\x5f\x49\x44\x43\x4f\x4f\x4b\x49\x45\x5f\x4e\x41\x4d\x45","\x53\x61\x6e\x65\x49\x44");var OO00O00=OO0OO("\x4e\x54\x50\x54\x5f\x49\x44\x43\x4f\x4f\x4b\x49\x45\x5f\x44\x4f\x4d\x41\x49\x4e",null);var OO0OOOO=OO0OO("\x4e\x54\x50\x54\x5f\x49\x44\x43\x4f\x4f\x4b\x49\x45\x5f\x45\x58\x50\x49\x52\x45",155520000);var O00O00O=OO0OO("\x4e\x54\x50\x54\x5f\x48\x54\x54\x50\x53\x49\x4d\x47\x53\x52\x43",'');var O0OO000=OO0OO("\x4e\x54\x50\x54\x5f\x50\x47\x52\x45\x46\x54\x4f\x50",OO0OO("\x4e\x54\x50\x54\x5f\x47\x4c\x42\x4c\x52\x45\x46\x54\x4f\x50",false));var OO00000=OO0OO("\x4e\x54\x50\x54\x5f\x4e\x4f\x49\x4e\x49\x54\x49\x41\x4c\x54\x41\x47",false);var ntptAddPair=O00OO;var ntptDropPair=O0OO0O0;var ntptEventTag=O0O0OO;var ntptLinkTag=O00OO0O;var ntptSubmitTag=O000OO0;var OOO00=new Array();var OOOOO0=new Object();var OOOO0=Array((0x317+3540-0x10e1));var O0000;for(O0000=(0x1584+3590-0x238a);O0000<OOOO0.length;O0000++)OOOO0[O0000]=null;var LnkLck=null;var FrmLck=null;O00OO("\x6a\x73","\x31");O00OO("\x74\x73",O000O00());if(OO000.lc)O00OO("\x6c\x63",document.location);if(OO000.rf){var OOO0OO;if(O0OO000&&top&&top.document)OOO0OO=top.document.referrer;else OOO0OO=document.referrer;O00OO("\x72\x66",OOO0OO);}if(self.screen){if(OO000.rs)O00OO("\x72\x73",self.screen.width+"\x78"+self.screen.height);if(OO000.cd)O00OO("\x63\x64",self.screen.colorDepth);}if(OO000.ln){var OOO0O;if(navigator.language)OOO0O=navigator.language;else if(navigator.userLanguage)OOO0O=navigator.userLanguage;else OOO0O='';if(OOO0O.length>(0x462+2203-0xcfb))OOO0O=OOO0O.substring((0xe45+3555-0x1c28),(0x186+8395-0x224f));OOO0O=OOO0O.toLowerCase();O00OO("\x6c\x6e",OOO0O);}if(OO000.tz){var OO0O0;var O0O00O=new Date();var O0O00=O0O00O.getTimezoneOffset();var O0OO00;OO0O0="\x47\x4d\x54";if(O0O00!=(0x1214+4348-0x2310)){if(O0O00>(0x773+6772-0x21e7))OO0O0+="\x20\x2d";else OO0O0+="\x20\x2b";O0O00=Math.abs(O0O00);O0OO00=Math.floor(O0O00/(0x878+3391-0x157b));O0O00-=O0OO00*(0xc3b+4046-0x1bcd);if(O0OO00<(0x13e6+969-0x17a5))OO0O0+="\x30";OO0O0+=O0OO00+"\x3a";if(O0O00<(0xba1+208-0xc67))OO0O0+="\x30";OO0O0+=O0O00;}O00OO("\x74\x7a",OO0O0);}if(OO000.jv){var O0000O;if(navigator.javaEnabled())O0000O="\x31";else O0000O="\x30";O00OO("\x6a\x76",O0000O);}var O0OO0=new Array();var O00O0OO=false;if(OO000.ck){var O0O0O0;var O00O0,O0OOO0;if(O00OO0){for(O0O0O0=(0x87a+7306-0x2504);O0O0O0<O00OO0.length;O0O0O0++){O0OO0[O00OO0[O0O0O0]]="";};}if(OOOO0O){for(O0O0O0=(0x1b2a+931-0x1ecd);O0O0O0<OOOO0O.length;O0O0O0++){O0OO0[OOOO0O[O0O0O0]]="";};}for(OO00O in O0OO0){O00O0=OOOO00(OO00O);if(O00O0){O0OO0[OO00O]=O00O0;};}if(OOO00O0){O00O0=OOOO00(OO0OO0);if(O00O0){O0OO0[OO0OO0]=O00O0;O00O0OO=true;};}O0OOO0=O00000O(O0OO0);if(O0OOO0!="")O00OO("\x63\x6b",O0OOO0);}O000000();if(!OO00000)OOOOO0O('');if(OOO00O0&&!O00O0OO){var O00O0=OOOO00(OO0OO0);if(!O00O0){O00O0=O0O000O();OOOO000(OO0OO0,O00O0,OO0OOOO,OO00O00);if(OO000.ck&&OOOO00(OO0OO0)){O0OO0[OO0OO0]=O00O0;var O0OOO0=O00000O(O0OO0);if(O0OOO0!=""){O00OO("\x63\x6b",O0OOO0);O000000();};};};}

document.write(unescape("%3Cscript src='" + (("https:" == document.location.protocol) ? "https://" : "http://") + "nexus.ensighten.com/putnam/Bootstrap.js' type='text/javascript'%3E%3C/script%3E"));
