    var content;
    var col1;
    var col2;
    var col3;
    var tagOpenDivlistitem = "<DIV class=listItem>";
    var tagCloseDiv = "</DIV>";
    var listOpenTagH3 = "<H3>";
    var listCloseTagH3 = "</H3>";
    var tagOpenTagH2 = "<H2>";
    var tagCloseTagH2 = "</H2>";
    var tagCloseTagP = "</P>";
    var tagOpenTagP = "<P>";
    var isNavigator;
    var tokenizedString = '';
    var articleTitleDiv;
    var threeColDivHeight = 0;
    var divArticleLoc;
    var divFooterSectionName;
    var divLoadingAni;
    var divMultiColAd;
    var divFullAd;
    var divSkip;
    var divContinue;
    var divArticleContent;
    var divArticleFooter;
    var divShareAction;
    var divArticleSource;
    var section;
    var article;
    var containerClientId;
    var callbackMethod;
    var L1delim;
    var L2delim;
    var L3delim;
    var screenWidth;
    var screenHeight;
    var minWidthSet = false;
    var lastScreenWidth;
    var pixelOffsetFF = 250;   //250
    var pixelOffsetIE = 450;   //550
    var fontSizeIncDecCounter = 0;
    var intervalId;
    var curCountdown;
    var nextFunctionPtr;
    var nextFunctionPrtParam;
    var addthis_pub = 'msftsbc';
    var sessionAdHash = new Hash();
    var awRunning = false;
    var adMouseAlert = false;
    var imgO;
    var errorUrl;
    var fromJS = true;
    var mshref;
    var mshrefQuery;
    
    function initGetColumnsRef()
    {
          col1 = document.getElementById("col1");
          col2 = document.getElementById("col2");
          col3 = document.getElementById("col3");
          divArticleLoc = document.getElementById("ArticleLoc");
          divFooterSectionName = document.getElementById("FooterSectionName");
          divLoadingAni = document.getElementById('loadingAni');
          divMultiColAd = document.getElementById("multiColAd");
          divFullAd = document.getElementById("fullAd");
          divArticleContent = document.getElementById("ArticleContent");
          divArticleFooter = document.getElementById("ArticleFooter");
          divShareAction = document.getElementById("divShareActions");
          divSkip = document.getElementById("divSkip");
          divContinue = document.getElementById("divContinue");
          divArticleSource = document.getElementById("divArticleSource");
    }
    
    function calcWindowSize() 
    {
        if( typeof( window.innerWidth ) == 'number' ) 
        {
          //Non-IE
          screenWidth = window.innerWidth;
          screenHeight = window.innerHeight; 
        } 
          else 
          {
              if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) 
              {
                 //IE 6+ in 'standards compliant mode'
                 screenWidth = document.documentElement.clientWidth;
                 screenHeight = document.documentElement.clientHeight;
              } 
              else 
              {
                 if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) 
                 {
                    //IE 4 compatible
                    screenWidth = document.body.clientWidth;
                    screenHeight = document.body.clientHeight;
                 }
              }
        }
        
       screenWidth = Math.min(Math.max(screenWidth,1000),1280);
       screenHeight = Math.min(Math.max(screenHeight,600),1024); 
       return     screenHeight;  

    }

    //adjust three columns on resizing and makes sure correct amount of content is packed into each column
    function adjustSize(newArticle, showPage)
    {
		awRunning = true;
		initGetColumnsRef();
        if(divFullAd.style.display != "block")
		{
        var colHeight = calcWindowSize();
        
        if (location.toString().indexOf('startup-toolkit') > -1) colHeight = 700;//fixed height for startup implementation
        
	    var divHeight = fromJS ? colHeight - 200 : colHeight - 350; //offset is used for header and footer banners
        var divWidth = col1.offsetWidth;
        if(divWidth < 250)
        {
			divWidth = 250;
        }
        
        if(!isNavigator)
        {
			var cArea = document.getElementById("overall_container");
			var caWidth;
			if(!minWidthSet)
			{
				caWidth = cArea.offsetWidth;
			}
	        else
	        {
				caWidth = cArea.style.width;
	        }
	        
				if(caWidth < 780)
			{
					cArea.style.width = "780px";
				lastScreenWidth = screenWidth;
				minWidthSet = true;
			}
			else
			{
				if(minWidthSet && screenWidth > lastScreenWidth)
				{
					cArea.style.width = "";
					minWidthSet = false;
				}
			}
        }
        
			if(article && (article.prevHeight != divHeight || article.prevWidth != screenWidth) )
        {
			article.prevHeight = divHeight;
				article.prevWidth = screenWidth;
			
				doArticleWork(divHeight, divWidth, newArticle);
			
			//Enforces 2 page minimum
			/*
			if(article.PageCount == 1)
			{
				var loop = 1;
				while(article.PageCount == 1 && loop < 3)
				{
					loop++; //never do this more than twice because of performance cost.
					divHeight = divHeight * .6;
					divWidth = Math.max(divWidth * .6,250);
						doArticleWork(divHeight, divWidth, newArticle);
				}
			}
			*/

			if(article.Id != '')
			{
					if(newArticle)
						changePage('', showPage);
					else
						changePage('new', showPage);
			}  
		}
			hideWaiting();
		}
		awRunning = false;
	}
    
    function doArticleWork(h, w, newArticle)
    {
		if(isNavigator)
			h = h + 'px';
		if(col1.offsetHeight != h)
			col1.style.height = h;
		if(col2.offsetHeight != h)
			col2.style.height = h;
		if(col3.offsetHeight != h)
			col3.style.height = h;
        
		threeColDivHeight = h;

		var estimationOfWordsPerColumn;
		var wordsPerColumn;
        
        //Higher number means fewer words per column.
		if(isNavigator)
			estimationOfWordsPerColumn = pixelOffsetFF; //an offset for pixel conversion for FF
		else        
			estimationOfWordsPerColumn = pixelOffsetIE; //an offset for pixel conversion
            
		//number of characters to fit in one column
		if(isNavigator)
		{
			h = h.replace('px', '');
			wordsPerColumn = (w * (h-40)) / (estimationOfWordsPerColumn);
		}
		else
			wordsPerColumn = (w * (h-40)) / (estimationOfWordsPerColumn);
		wordsPerColumn = Math.round(wordsPerColumn);
		
		var columnIndex = 0;
		article.ColumnAr = [];
		article.ColumnAr = null;
		article.ColumnAr = new Array;
		article.AdListSelect = null;
		article.AdListSelect = new Array;
		article.ColumnHeightAr = [];
		article.ColumnAr[0] = '';
		article.articleHash = new Hash();
		
		article.AdListFirst = article.AdFirstBackup.split(L2delim);
		article.AdListAny = article.AdAnyBackup.split(L2delim);
		article.AdListLast = article.AdLastBackup.split(L2delim);
		article.AdListInterstitial = article.AdInterstitialBackup.split(L2delim); 
		
		var adIndex = 0;
		var currentPage = 1;
        
		adMgr.setLastPageAd(h, w, newArticle);
		
		var ad = adMgr.setAd(currentPage, h, w, newArticle);  
        
		var divArticleCol;
		var wordCountForColumn = 0; //word count for current column
        var authBioHandled = false;
        
        wordsPerColumn = adjustWordCountForAd(0, w, h, estimationOfWordsPerColumn, ad);
        
		var columnsRemaining = (tokenizedString.length) / wordsPerColumn; 
		
		for(var index = 0; index < tokenizedString.length; index++)
		{
			if((wordsPerColumn <= wordCountForColumn) || ((index + 1) == tokenizedString.length)) //one column has been filled, move to fill next column
			{
				if(article.Id != "")
					index = checkWordsInLastSentence(columnIndex, index, tokenizedString, ad, h);				
		    
                    var posLastPara = article.ColumnAr[columnIndex].toLowerCase().lastIndexOf('<p>');
                    if(posLastPara > 0)
                    {
                        var lastPara = article.ColumnAr[columnIndex].substring(posLastPara);
	                    var wordsInLastPara = lastPara.split(' ');
					if(wordsInLastPara.length < 5)
	                    {
						var st = article.ColumnAr[columnIndex].substring(0, posLastPara);
						if(st.replace(/(<[^>]+>)/,"").replace(" ","").length > 0) //don't move if it will leave an empty column.
						{
							article.ColumnAr[columnIndex] = st;
						if(article.ColumnAr[columnIndex + 1] == null)
	                        article.ColumnAr[columnIndex + 1] = wordsInLastPara.join(' '); 
						else
							article.ColumnAr[columnIndex + 1] = wordsInLastPara.join(' ') + " " + article.ColumnAr[columnIndex+1]; 
					}
				}
				}
	               
				columnIndex++;                
                                
				if(article.ColumnAr[columnIndex] == null)
				{
					    article.ColumnAr[columnIndex] = ' ';
				}
                
				wordCountForColumn = article.ColumnAr[columnIndex].split(" ").length;
                
				if((columnIndex > 0) && (columnIndex % 3 == 0)) //new page is starting.
				{                         
					currentPage++;    
					ad = adMgr.setAd(currentPage, h, w, newArticle);   
				}                        
					
				wordsPerColumn = adjustWordCountForAd(columnIndex, w, h, estimationOfWordsPerColumn, ad);
			}
                                    
			wordCountForColumn += adjustForTag(tokenizedString[index], columnIndex) + 1; 
			
			if(index<tokenizedString.length)
			article.ColumnAr[columnIndex] +=  ' ' + tokenizedString[index];
		} //end loop
        
		if(article.ColumnAr[columnIndex].replace(' ','').length == 0)
		{
			columnIndex--;
		}

		var lpstart = -1;
		if((columnIndex+1) % 3 == 0)
			lpstart = columnIndex-2;
		else
			if((columnIndex+2) % 3 == 0)
				lpstart = columnIndex-1;
			else
				if((columnIndex+3) % 3 == 0)
					lpstart = columnIndex;
		
		if(lpstart > -1)
		{
			while(lpstart <= article.ColumnAr.length-1)
			{
				setLastPageAd(lpstart, Math.ceil((lpstart+1) / 3));
				checkWordsInLastSentence(lpstart, tokenizedString.length, tokenizedString, article.lastPageAd, h);
				lpstart++;
			}
		}
        
		text = article.ColumnAr[article.ColumnAr.length - 1].replace(" ", ""); //Delete possible trailing space.
        
		columnIndex = 0;

		for(var c=0;c<=article.ColumnAr.length-1;c++)
		{
			var htmlFix = cleanHTML(article.ColumnAr[c]);
			//add closing tags
			if(htmlFix[0].length > 0)
			{
				article.ColumnAr[c] += htmlFix[0];
			}
			
		    //add opening tags
			if(htmlFix[1].length > 0 && c+1 <= article.ColumnAr.length-1)
			{
				article.ColumnAr[c+1] = htmlFix[1] + article.ColumnAr[c+1];
			}
		}
			
		for(var c=0;c<=article.ColumnAr.length-1;c++)
		{
			if(article.ColumnAr[c].replace(' ','').replace(/(<[^>]+>)/,'').replace(/(\r\n)*/,'').length == 0)
			{
				article.ColumnAr.splice(c,1);
				c--;
			}
		}
			
		article.PageCount = Math.ceil(article.ColumnAr.length / 3);
		if(isNavigator)
		{
			while(article.AdListSelect.length <= article.PageCount+1)
			{	
				article.AdListSelect[article.AdListSelect.length] = article.lastPageAd;
			}
		}
    }
    
    function checkWordsInLastSentence(columnIndex, index, tokenizedString, ad, h)
	{
		var __div;
		var adOffset;
		if((columnIndex+3)%3==0)
		{
			__div = document.getElementById("col1");
			adOffset = ad.col1;
		}
		if((columnIndex+2)%3==0)
		{
			__div = document.getElementById("col2");
			adOffset = ad.col2;
		}
		if((columnIndex+1)%3==0)
		{
			__div = document.getElementById("col3");
			adOffset = ad.col3;
		}

		if(__div.style.display == 'none')
		{
			__div.style.display = '';
		}

		var wipString = '';
		var words = '';
		var wHtml = article.ColumnAr[columnIndex].split(/(<[^>]+>)/);

		if(isNavigator && article.ColumnHeightAr)
			__div.style.height = article.ColumnHeightAr[columnIndex] + 'px';
		else
			if(article.ColumnHeightAr && article.ColumnHeightAr[columnIndex] >= 0)
				__div.style.height = article.ColumnHeightAr[columnIndex];
			else
				__div.style.height = Math.max(20,h - adOffset);
		
		var ulOffset = 0;
		var pOffset = 0;
		var olOffset = 0;
		var spanID = 0;
		var openBold = false;
		for(var i = 0; i < wHtml.length; i++)
		{
			if(wHtml[i] != null && wHtml[i] != 'undefined')
			{
				if(wHtml[i].indexOf("<") != -1)
				{
					wipString += wHtml[i];
					if(wHtml[i].toLowerCase().indexOf("<b>") > -1)
					{
						openBold = true;
					}
					if(wHtml[i].toLowerCase().indexOf("</b>") > -1)
					{
						openBold = false;
					}
				}
				else
				{   
					words = wHtml[i].split(' ');
					for(var j = 0; j < words.length; j++)
					{
						if(words[j] != null && words[j] != 'undefined')
						{							
							var s = "<span ID=spn" + (spanID++) + (openBold ? " style='font-weight:bold;'>" : ">");
						wipString += s + words[j] + " </span>";
					}
				}
			}
		}
		}
		
		__div.innerHTML = wipString;

		var divY = getY(__div);
		var columnBottom = Math.min((divY + article.ColumnHeightAr[columnIndex]), (divY+h));
		var stop = false;
		var lSpan = document.getElementById("spn"+(spanID-1));
		var xOffset = getX(lSpan);
		
		if(getY(lSpan) + lSpan.offsetHeight < columnBottom)
		{
			while(!stop && index < tokenizedString.length)
			{
				var next = tokenizedString[index];	
				
				if(next.indexOf("<") != -1)
				{
					if(next.toLowerCase().indexOf("<b>") > -1)
					{
						openBold = true;
					}
					if(next.toLowerCase().indexOf("</b>") > -1)
					{
						openBold = false;
					}
					article.ColumnAr[columnIndex] += next;
					wipString += next;
					__div.innerHTML = wipString;
					index++;				
				}
				else
				{   
					var s = "<span ID=spn" + spanID + (openBold ? " style='font-weight:bold;'>" : ">") + next + " </span>";
					wipString += s.replace(/<span>\s*(\r\n)*<\/span>/ig, '');
					__div.innerHTML = wipString;
					var lastSpan = document.getElementById("spn" + spanID++);
					var ytmp = getY(lastSpan) + lastSpan.offsetHeight;
					var added;
					if(isNavigator)
						added = 50;
					else
						added = 30;
					if(ytmp > columnBottom || ytmp+added > columnBottom)
					{
						stop = true;
						wipString = wipString.substring(0, wipString.length-s.length);
						__div.innerHTML = wipString;
					}
					else
					{
						article.ColumnAr[columnIndex] += " " + next;
						index++;
						xOffset = getX(lastSpan);
					}
				}	
			}
			
			stop = false;
			spanID++;
			while(!stop && index < tokenizedString.length)
			{
				var next = tokenizedString[index];	
				
				if(next.indexOf("<") != -1)
				{
					if(next.toLowerCase().indexOf("<b>") > -1)
					{
						openBold = true;
					}
					if(next.toLowerCase().indexOf("</b>") > -1)
					{
						openBold = false;
					}
					wipString += next;
					__div.innerHTML = wipString;
					article.ColumnAr[columnIndex] += next;
					index++;				
				}
				else
				{   
					var s;
					if(openBold)
					{
						s = "<span style='font-weight:bold;' ID=spn" + spanID + ">" + next + " </span>";
					}
					else
					{
						s = "<span ID=spn" + spanID + ">" + next + " </span>";
					}		

					wipString += s.replace(/<span>\s*(\r\n)*<\/span>/ig, '');
					__div.innerHTML = wipString; 
					
					var lastSpan = document.getElementById("spn" + spanID++);
					var tmp = getX(lastSpan);

					if(tmp < xOffset)
					{
						wipString = wipString.substring(0, wipString.length-s.length);
						__div.innerHTML = wipString;
						stop = true;
					}
					else
					{
						xOffset = tmp;
						article.ColumnAr[columnIndex] += " " + next;
						index++;
					}
				}	
			}
		}
		else
		{
			var added;
			if(isNavigator)
				added = 50;
			else
				added = 30;
				
			var w;
			for(w=(spanID-1);w>=0;w--)
			{
				var tspan = document.getElementById("spn"+w);
				if(getY(tspan) + tspan.offsetHeight < (columnBottom-added))
				{
					break;
				}
			}
			
			if(w<0)
			{
				//we couldn't back off far enough away from the top of the ad to have
				//the required space.  Push everything into the next column and put
				//a non-breaking space here so the column isn't caught as empty by
				//other clean-up code.
				article.ColumnAr[columnIndex+1] = article.ColumnAr[columnIndex];
				article.ColumnAr[columnIndex] = "&nbsp;&nbsp;";
				__div.innerHTML = "";
				return index;
			}
	
			var tempstr = "";

			for(var test=w;test<(spanID-1);test++)
			{
				var tspan = document.getElementById("spn"+test);
				tempstr += tspan.innerHTML.replace(/(<[^>]+>)/,"").replace(' ','').toLowerCase();
			}

			//move to next column
			var tempspan = document.getElementById("spn"+w);
			while(tempspan.innerHTML.length == 0 && w >= 1)
			{
				w--;
				tempspan = document.getElementById("spn"+w);
			}

			var hld = index-1;
			var tst = tokenizedString[hld].replace(/(\r\n)*/,"").replace(/(<[^>]+>)/,"").replace(" ","").toLowerCase();
			while(tst.lastIndexOf(tempstr)==-1 && hld >= 0)
			{
				tst = tokenizedString[hld].replace(/(\r\n)*/,"").replace(/(<[^>]+>)/,"").replace(" ","").toLowerCase() + tst;
				hld--;
			}
	
			var holder = hld;
			
			if(article.ColumnAr[columnIndex+1] == null || article.ColumnAr[columnIndex+1]=='undefined')
			{
				article.ColumnAr[columnIndex+1] = '';
			}
			
			var pushText = '';
			for(var u=holder;u<index;u++)
			{
				pushText += " " + tokenizedString[u];
			}

			if(pushText.length > 0)
			{			
				article.ColumnAr[columnIndex+1] = pushText;// + article.ColumnAr[columnIndex+1];
			}
			
			var endPt = pushText.length;
			var remPt = -1;
			while(remPt == -1 && endPt >= 0)
			{
				endPt--;
				remPt = article.ColumnAr[columnIndex].lastIndexOf(pushText.substring(0,endPt));
			}
		
			if(remPt > -1)
			{
				article.ColumnAr[columnIndex] = article.ColumnAr[columnIndex].substring(0,remPt);
			}
			else
			{
				if(article.ColumnAr[columnIndex+1].length == 0)
				{
					article.ColumnAr.pop();
				}
				else
				{
					//if we can't find the start of the text we've moved in the original column, just move the
					//entire column over.
					
					//First check to make sure we are not looping forever moving the same column.
					if(columnIndex-3 > 0 && article.ColumnAr[columnIndex-3] == "&nbsp;" &&
						article.ColumnAr[columnIndex-2] == "&nbsp;" &&
						article.ColumnAr[columnIndex-1] == "&nbsp;")
					{
						window.location = errorUrl;
					}
					else
					{
					article.ColumnAr[columnIndex+1] = article.ColumnAr[columnIndex];
					article.ColumnAr[columnIndex] = "&nbsp;";
					}
				}
			}			
		}
		
		__div.innerHTML = "";
	
		return index;
	}
    
    function getY(obj)
    {
		var y=0;
		if(obj && obj != null && obj != 'undefined')
		{
			y += obj.offsetTop;
			if(obj.offsetParent && obj.offsetParent != null && obj.offsetParent != 'undefined')
			{
				y += getY(obj.offsetParent);
			}
		}
		return y;
    }
    
    function getX(obj)
    {
		var x = 0;
		if(obj && obj != null && obj != 'undefined')
		{	
			x += obj.offsetLeft;
			if(obj.offsetParent && obj.offsetParent != null && obj.offsetParent != 'undefined')
			{
				x += getX(obj.offsetParent);
			}
		}
		return x;
    }
    
    //Returns an array of strings
	//Element 0 is a string containing the closing tags needed at the end of inStr.
	//Element 1 is a string containing opening tags to restart what was orphaned (for use in the next column).
	function cleanHTML(inStr)
	{
		var retVal = new Array();
		var liCount = 0;

		if(inStr.length>0)
		{
			var addTo='';
			var orphans='';
			var match = inStr.match(/<[^>]+>/g);
			if(match)
			{
				var elements = new Array();
				for(var i=0;i<match.length;i++)
				{
					if( match[i].toUpperCase() != '<BR>' &&
						match[i].toUpperCase() != '<HR>' &&				
						match[i].substring(0,4).toUpperCase() != ('<IMG'))
					{
						if(match[i].indexOf('/') == -1)
						{
							elements.push(match[i]);
						}
						else
						{
							if(elements.length != 0 )
							{
								var closingTag =  match[i].replace('</','').replace('>','');
								var openTag = elements[elements.length-1].replace('<','').replace('>','');
								if(openTag.indexOf(' ') > -1)
								{
									openTag = openTag.substring(0,openTag.indexOf(' '));
								}
								if( openTag == closingTag )
								{
									elements.pop();
								}
							}
						}
					}
				}
				
				for(var i=elements.length-1;i>=0;i--)
				{
					var o;
					if(elements[i].indexOf(' ') > -1)
					{
						o = elements[i].substring(0, elements[i].indexOf(' '));
						o += '>';
					}
					else
					{
						o = elements[i];
					}
					orphans += o.replace('<','</');
				}
				
				for(var i=0;i<elements.length;i++)
				{
					addTo += elements[i];
				}
			}
			
			retVal.push(orphans);
			retVal.push(addTo);
		}
		else
		{
			retVal.push('');
			retVal.push('');
		}
		return retVal;
	}    
    
    function adjustWordCountForAd(__columnIndex, __w, __h, __estimationOfWordsPerColumn, __ad)
    {
        var _colHeightAdjustedForAd;
        
	    if((__columnIndex+1)%3 ==0) //column 3
		{
				_colHeightAdjustedForAd = __ad.col3;
		}
		else if((__columnIndex+2)%3 ==0) //column 2
		{
				_colHeightAdjustedForAd = __ad.col2;
		}
		else if((__columnIndex+3)%3 ==0) //column 1
		{
				_colHeightAdjustedForAd= __ad.col1;
		}
		
		return (__w * (__h-40-_colHeightAdjustedForAd)) / (__estimationOfWordsPerColumn);
	}
    
    function setLastPageAd(__columnIndex, __currentPage)
    {
        if((__columnIndex+1)%3 ==0) //column 3
            {
                article.AdListSelect[__currentPage] = article.lastPageAd.ad;
                article.ColumnHeightAr[__columnIndex] = article.lastPageAd.colHeight3;
                article.ColumnHeightAr[__columnIndex-1] = article.lastPageAd.colHeight2;
                article.ColumnHeightAr[__columnIndex-2] = article.lastPageAd.colHeight1;
        }
        else if((__columnIndex+2)%3 ==0) //column 2
            {
                article.AdListSelect[__currentPage] = article.lastPageAd.ad;
                article.ColumnHeightAr[__columnIndex+1] = article.lastPageAd.colHeight3;
                article.ColumnHeightAr[__columnIndex] = article.lastPageAd.colHeight2;
                article.ColumnHeightAr[__columnIndex-1] = article.lastPageAd.colHeight1;
        }
        else if((__columnIndex+3)%3 ==0) //column 1
            {
                article.AdListSelect[__currentPage] = article.lastPageAd.ad;
                article.ColumnHeightAr[__columnIndex+2] = article.lastPageAd.colHeight3;
                article.ColumnHeightAr[__columnIndex+1] = article.lastPageAd.colHeight2;
                article.ColumnHeightAr[__columnIndex] = article.lastPageAd.colHeight1;
        }
    }
    
    function getArticleIndex(__key)
    {
        for(var i = 0; i < section.ArticleIdList.length; i++)
        {
            if(section.ArticleIdList[i] == __key)
                return i;
        }
    }
        
    function CancelNavigateAndReturnPageContent(__direction)
    {
        changePage(__direction, true);
    }
    
    var isFirstInteraction = true;
    function CancelNavigateAndReturnArticleContent(__direction)
    {
        article.CurrentPage = 1;
        
        var nextTitle = (__direction == "next") ? getAdjacentTitle(0) : getAdjacentTitle(-2);
		if (nextTitle != undefined)
		{
		    article.Title = nextTitle;
		    
		    if (isFirstInteraction)
		        pageEventsTracking.setClickEvents('ArticleReaderIRR');
            else
                pageEventsTracking.setClickEvents('ArticleReaderBrowse');		
                
            isFirstInteraction = false;            
		}
		
        changeArticle(__direction);
    }
    
    //reduces word column in specific column to compensate for space taken up by the following tags
    function adjustForTag(__string, __columnIndex)
    {
        var _penalties = 0;
        var posListItem = 0;
        
        if(__string != null)
        {
            
         if(isNavigator)
         {
             if(__string.match(/class=\"*listItem\"*/))
                    return 4;
             if(__string.match(/class=ulListItem/))
                _penalties = 4;
             if(__string.match(/class=(?!listItem)[^ ]*/))
                _penalties = -4;
             else if(__string.indexOf("<li>") > 0)
                    return -4;
             else if(__string.indexOf("<p>") > 0)
                    return 18;
             else if(__string.match(/<a/))
                    return -6;
             if(__string.match(/<\/p><\/div>/)) //column may be missing beginning listItem DIV
             {
                if(!article.ColumnAr[__columnIndex].match(/class=listItem/))
                    _penalties = 6;
             }
             else
                return 1;
         }
         else //IE
         {
             if(__string.match(/class=listItem/))
                _penalties = 6;
             if(__string.match(/class=ulListItem/))
                _penalties = 4;
             if(__string.match(/class=(?!listItem)[^ ]*/))
                _penalties = -4;
             if(__string.indexOf("<LI>") > 0)
                _penalties +=  12;
             if(__string.indexOf("<P>") > 0)
                _penalties +=  15;
             if(__string.match(/<A/))
                _penalties +=  -6;
             if(__string.match(/<\/P><\/DIV>/)) //column may be missing beginning listItem DIV
             {
                if(!article.ColumnAr[__columnIndex].match(/class=listItem/))
                    _penalties = 6;
             }
         }
        }
  
       return _penalties;
    }
         
    //used to retain LIST formatting across columns
    function addOpeningTag(__s, __colIndex, __tagOpen, __tagClose)
    {
        var tagArray = new Array();
        var foundClosingTag = true;
        var listItemMatch = null;
        var smallerString =  '';
        __tagOpen = __tagOpen.toLowerCase();
        __tagClose = __tagClose.toLowerCase();
        var s = __s.toLowerCase();
        tagArray[0] = __s;
        tagArray[1] = ''
        
        if(s.substring(0, 25).match(/class=\"*listitem\"*/) || s.substring(0, 25).match(/class=\"*ullistitem\"*/))
        {
            if(!s.substring(0, 25).match(/<div/i))
        {
            tagArray[0] = "<div " + __s;
            s = tagArray[0].toLowerCase();
        }
        }
          
        var boldPos = s.indexOf("</b>");
        if(boldPos > -1)
        {
            if(s.substring(0, boldPos).indexOf("<b>") == -1)
            {
                var newString = s.substring(0, boldPos - 4);
                var pos = newString.lastIndexOf(">");
                var firstHalf = tagArray[0].substring(0, pos+1);
                var secondHalf = tagArray[0].substring(pos + 1);
                tagArray[0] = firstHalf + "<b>" + secondHalf;
                s = tagArray[0].toLowerCase();
            }
        }
        
        foundClosingTag = true;
        var smallerString = s;
        var ulListItemMatch = s.match(/class=\"*ullistitem\"*/);  
        while(ulListItemMatch)
        {
            if(ulListItemMatch && smallerString.indexOf("</div>", ulListItemMatch.lastIndex) == -1)
            {
                foundClosingTag = false;
                break;
            }
            var index = smallerString.indexOf("</div>", ulListItemMatch.lastIndex);
            smallerString = smallerString.substring(index + 3)
            ulListItemMatch = smallerString.match(/class=\"*ullistitem\"*/);
        }    
        
        if(foundClosingTag == false)
        {
            tagArray[0] += "</li></ul></div>";
            if(!article.ColumnAr[__colIndex+1].substring(0,25).match(/class=\"*ullistitem\"*/))
                tagArray[1] = "<div class=\"ullistitem\"><ul><li>";
            s = __s.toLowerCase();
        }
        
        foundClosingTag = true;
        var listItemMatch = s.match(/class=\"*listitem\"*/);
        var smallerString = s;
        while(listItemMatch)
        {
            if(listItemMatch && smallerString.indexOf("</div>", listItemMatch.lastIndex) == -1)
            {
                foundClosingTag = false;
                break;
            }
            var index = smallerString.indexOf("</div>", listItemMatch.lastIndex);
            smallerString = smallerString.substring(index + 3)
            listItemMatch = smallerString.match(/class=\"*listitem\"*/);
        }  
            
        if(foundClosingTag == false)
        {
            tagArray[0] += "</p></div>";

            if(!article.ColumnAr[__colIndex+1].substring(0,25).match(/class=\"*listItem\"*/))
                tagArray[1] = "<div class=\"listItem\"><p>";
        }
      
        if(tagArray[0] == null)
             tagArray[0] = '';
        if(tagArray[1] == null)
            tagArray[1] = '';
            
        return tagArray;
    }
    
    //remove any malformed or empty tags
    function cleaner(__s)
    {
        if(isNavigator)
        {
            __s = __s.replace(new RegExp('<h2></h2>', 'g'), '');
            __s = __s.replace(new RegExp('<p></p>', 'g'), '');
            __s = __s.replace(new RegExp('<p>[\n\r]*<p>', 'i'), '<p>');
            if(__s.toLowerCase().substring(0, 5).indexOf("</p>"))
                __s = __s.replace("</p>", '');
            
            var regx = /<li>[\r\n]*[ ]*<li>/;
            __s = __s.replace(regx, '<li>');
            regx = /<ul>[\r\n]*[ ]*<li>[\r\n]*[ ]*<ul>[\r\n]*[ ]*<li>/;
            __s = __s.replace(regx, '<ul><li>');
            
            var regx = new RegExp('<li>[\n\r]*[ ]*</li>', 'ig');
			__s = __s.replace(regx, '');
			
        }
        else
        {
            __s = __s.replace(new RegExp('<H2></H2>', 'g'), '');
            __s = __s.replace(new RegExp('<P></P>', 'g'), '');
            __s = __s.replace(new RegExp('<P>[\n\r]*<P>', 'i'), '<P>');
            if(__s.toLowerCase().substring(0, 5).indexOf("</P>"))
                __s = __s.replace("</P>", '');
            
            var regx = /<LI>[\r\n]*[ ]*<LI>/;
            __s = __s.replace(regx, '<LI>');
            
			var regx = new RegExp('<LI>[\n\r]*[ ]*</LI>', 'ig');
			__s = __s.replace(regx, '');
        }
        
                
        return __s;
    }
    
    function removeBlankListItems()
    {
        var Lists = document.getElementsByTagName("LI");
        var ListParent;
        
        for (var i=0;i<Lists.length;i++)
        {
            if (Lists[i].childNodes.length == 0)
            {
                ListParent = Lists[i].parentNode;
                ListParent.removeChild(Lists[i]);
            }
        }
    
    }
    
    //moves forward or backward among articles for current section
    function changeArticle(__direction)
    {
        if((__direction == 'next') && (section.ArrayIndex < section.NumberOfArticles)){
            section.ArrayIndex ++;
        }
        else if(__direction == 'prev'){
            section.ArrayIndex --;
        }
        
        setArticleNavDisplay();
                
        divArticleLoc.innerHTML = 'Article ' + section.ArrayIndex + ' of ' + section.NumberOfArticles;  
        
        asGetArticle(section.ArticleIdList[section.ArrayIndex - 1]);
    }
        
    function setArticleNavDisplay()
    {
		if(section.ArrayIndex == 1)
        {
			document.getElementById("ArticlePrev").className = "hidden";
			document.getElementById("ArticlePrevDisabled").className = "";
        }
        else if (section.ArrayIndex > section.NumberOfArticles)
            section.ArrayIndex = section.NumberOfArticles;
        else
        {
			document.getElementById("ArticlePrev").className = "";
			document.getElementById("ArticlePrevDisabled").className = "hidden";
        } 
            
        if(section.ArrayIndex == section.NumberOfArticles)
        {
			document.getElementById("ArticleNext").className = "hidden";
			document.getElementById("ArticleNextDisabled").className = "";
        }
        else
        {
			document.getElementById("ArticleNext").className = "";
			document.getElementById("ArticleNextDisabled").className = "hidden";
        }
    }
    
    //moves pages within article forward or backward
    function changePage(__direction, showPage)
    {    
        if((__direction == 'next') && ( article.CurrentPage < article.PageCount)){
			article.CurrentPage ++;
        }
        else if(__direction == 'prev'){
            article.CurrentPage --;
        }
                
        if( article.CurrentPage == 1)
        {   
			document.getElementById("PrevText").className = "show";
			document.getElementById("PrevLink").className = "hidden";
        }
        else if ( article.CurrentPage > article.PageCount)
            article.CurrentPage = article.PageCount;
        else
        {
			document.getElementById("PrevText").className = "hidden";
			document.getElementById("PrevLink").className = "show";
        }
            
        if(article.CurrentPage == article.PageCount)
        {
			document.getElementById("NextText").className = "show";
			document.getElementById("NextLink").className = "hidden";
        }
        else
        {
			document.getElementById("NextText").className = "hidden";
			document.getElementById("NextLink").className = "show";
        }
           
        adjustArticleTitle();  
        document.getElementById("PageNumber").innerHTML = 'page ' + article.CurrentPage + ' of ' + article.PageCount;
        
        if(showPage)
        {
        if(__direction != 'new')
        {
			showCurrentPage(false);
		}
		else
		{
			showCurrentPage(true);
		}
    }
		else
		{
			setPageLinkEvents();
		}
    }
    
    //Output content for three columns from tokened string
    function showCurrentPage(isInterstitial)
    {
        var tagArray = new Array();
        tagArray[0] = '';
        tagArray[1] = '';
        var index = (article.CurrentPage * 3) - 3;
        var end = article.CurrentPage* 3 - 1;
        var colIndex = 1;
        var text = '';
        
        while(index <= end) //grab three columns at a time from proper location in string
        {
            text = article.ColumnAr[index];
            var col = document.getElementById('col' + colIndex);
                
            if(text == null || text == "undefined")
                text = '';
                            
            col.innerHTML = cleaner(text);
                
            var offsetIndex = index;
            if(index > article.ColumnHeightAr.length)
                offsetIndex = article.ColumnHeightAr.length - 1;
            if(isNavigator)
                col.style.height = Math.abs(article.ColumnHeightAr[offsetIndex]) + 'px';
            else
                col.style.height = Math.abs(article.ColumnHeightAr[offsetIndex]);
            
            if(article.CurrentPage == article.PageCount &&
				index == end && col.innerHTML.length == 0)
			{
				col.style.display = 'none';
			}
			else
			{
				col.style.display = '';
			}
			
            index++;
            colIndex++;
        }
        
        if(divMultiColAd)
        {
			
                var continuePage = '<br/>&nbsp';
                if(article.CurrentPage != article.PageCount)
                continuePage = "<A style=\"clear:both;text-align:right;\" class=pageNext href=\"#\">Continue</a><br/>";
                    
			if(article.AdListSelect && article.AdListSelect[article.CurrentPage] && article.AdListSelect[article.CurrentPage].length > 0)
			{
				var ary = article.AdListSelect[article.CurrentPage].split(L3delim);
				divMultiColAd.innerHTML = continuePage + article.AdListSelect[article.CurrentPage].split(L3delim)[4];
				if(!isInterstitial)
				{
					sessionAdHash.Increment(article.AdListSelect[article.CurrentPage].split(L3delim)[7]);
				}
				if(ary.length >= 12 && ary[11] != '')
				{
					eval(ary[11]);
				}
			}
			else
			{
				divMultiColAd.innerHTML = continuePage;
			}
         }
         removeBlankListItems();
		setPageLinkEvents();
    }

    function setPageLinkEvents()
    {
    	setArticleLinkEvents();
		setAuthorBioEvents();
		setSectionLinkEvents();
		setTabLinkEvents();
		setArticleDirectionEvents();
		setPageDirectionEvents();
		setPrintAction();
		setSocialNetworking();
		setFontLinkEvents();
		setSkipLink();
		setEmailAction();
    }

	function setSocialNetworking()
	{
		//Share
		var shareLink = ClassUtility.GetMembers("shareAction", "a");
		for(var i=0;i<shareLink.length;i++)
		{
			EventUtility.RemoveEventHandler(shareLink[i], "onclick", getShareEvent);
			EventUtility.AddEventHandler(shareLink[i], "onclick", getShareEvent);
		}
		//Del.icio.us
		var delLink = ClassUtility.GetMembers("delAction", "a");
		for(var i=0;i<delLink.length;i++)
		{
			EventUtility.RemoveEventHandler(delLink[i], "onclick", getDelEvent);
			EventUtility.AddEventHandler(delLink[i], "onclick", getDelEvent);
		}		
		//Digg
		var diggLink = ClassUtility.GetMembers("diggAction", "a");
		for(var i=0;i<diggLink.length;i++)
		{
			EventUtility.RemoveEventHandler(diggLink[i], "onclick", getDiggEvent);
			EventUtility.AddEventHandler(diggLink[i], "onclick", getDiggEvent);
		}		
		//Newsvine
		var nvLink = ClassUtility.GetMembers("newsvineAction", "a");
		for(var i=0;i<nvLink.length;i++)
		{
			EventUtility.RemoveEventHandler(nvLink[i], "onclick", getNewsVineEvent);
			EventUtility.AddEventHandler(nvLink[i], "onclick", getNewsVineEvent);
		}
		//AddThis
		var addThisLink = ClassUtility.GetMembers("addthisAction", "a");
		for(var i=0;i<addThisLink.length;i++)
		{
			EventUtility.RemoveEventHandler(addThisLink[i], "onclick", getAddThisEvent);
			EventUtility.AddEventHandler(addThisLink[i], "onclick", getAddThisEvent);
		}
		//Facebook
		var facebookLink = ClassUtility.GetMembers("facebookAction", "a");
		for(var i=0;i<facebookLink.length;i++)
		{
			EventUtility.RemoveEventHandler(facebookLink[i], "onclick", getFacebookEvent);
			EventUtility.AddEventHandler(facebookLink[i], "onclick", getFacebookEvent);
		}
		//Live It
		var liveLink = ClassUtility.GetMembers("liveAction", "a");
		for(var i=0;i<liveLink.length;i++)
		{
			EventUtility.RemoveEventHandler(liveLink[i], "onclick", getLiveEvent);
			EventUtility.AddEventHandler(liveLink[i], "onclick", getLiveEvent);
		}
    }

	function setPrintAction()
	{
		var printLink = ClassUtility.GetMembers("printAction", "a");
		for(var i=0;i<printLink.length;i++)
		{
			EventUtility.RemoveEventHandler(printLink[i], "onclick", getPrintEvent);
			EventUtility.AddEventHandler(printLink[i], "onclick", getPrintEvent);
		}
	}

	function setEmailAction()
	{
		var emailLinks = ClassUtility.GetMembers("emailAction", "a");
		for(var i=0;i<emailLinks.length;i++)
		{
			EventUtility.RemoveEventHandler(emailLinks[i], "onclick", getEmailEvent);
			EventUtility.AddEventHandler(emailLinks[i], "onclick", getEmailEvent);
		}
	}

    function setPageDirectionEvents()
    {
		var prevLink = ClassUtility.GetMembers("pagePrev", "a");
		for(var i=0;i<prevLink.length;i++)
		{
			EventUtility.RemoveEventHandler(prevLink[i], "onclick", getPrevPageEvent);
			EventUtility.AddEventHandler(prevLink[i], "onclick", getPrevPageEvent);
		}

		var nextLink = ClassUtility.GetMembers("pageNext", "a");
		for(var i=0;i<nextLink.length;i++)
		{
			EventUtility.RemoveEventHandler(nextLink[i], "onclick", getNextPageEvent);
			EventUtility.AddEventHandler(nextLink[i], "onclick", getNextPageEvent);
		}
    }
    
    function setArticleDirectionEvents()
    {
		var prevLink = ClassUtility.GetMembers("articlePrev", "a");
		for(var i=0;i<prevLink.length;i++)
		{
			EventUtility.RemoveEventHandler(prevLink[i], "onclick", getPrevArticleEvent);
			EventUtility.AddEventHandler(prevLink[i], "onclick", getPrevArticleEvent);
		}

		var nextLink = ClassUtility.GetMembers("articleNext", "a");
		for(var i=0;i<nextLink.length;i++)
		{
			EventUtility.RemoveEventHandler(nextLink[i], "onclick", getNextArticleEvent);
			EventUtility.AddEventHandler(nextLink[i], "onclick", getNextArticleEvent);
		}
    }
    
    function setTabLinkEvents()
    {
		var sectionLinks = ClassUtility.GetMembers("navInactive", "a");
		var lnk;
		
		for(var i=0;i<sectionLinks.length;i++)
		{
			lnk = sectionLinks[i];
			EventUtility.RemoveEventHandler(lnk, "onclick", getTabEvent);
			EventUtility.AddEventHandler(lnk, "onclick", getTabEvent);
		}
		
		var activeTab = ClassUtility.GetMembers("navActive", "a");
		for(var i=0;i<activeTab.length;i++)
		{
			lnk = activeTab[i];
			EventUtility.RemoveEventHandler(lnk, "onclick", getTabEvent);
			EventUtility.AddEventHandler(lnk, "onclick", getTabEvent);
		}
    }
    
    function setSectionLinkEvents()
    {
		var sectionLinks = ClassUtility.GetMembers("sectionHref", "a");
		var lnk;
		
		for(var i=0;i<sectionLinks.length;i++)
		{
			lnk = sectionLinks[i];
			EventUtility.RemoveEventHandler(lnk, "onclick", getSectionEvent);
			EventUtility.AddEventHandler(lnk, "onclick", getSectionEvent);
		}
    }
    
    function setArticleLinkEvents()
    {
		var articleLinks = ClassUtility.GetMembers("articleHref", "a");
		var lnk;
		
		for(var i=0;i<articleLinks.length;i++)
		{
			lnk = articleLinks[i];
			EventUtility.RemoveEventHandler(lnk, "onclick", getArticleEvent);
			EventUtility.AddEventHandler(lnk, "onclick", getArticleEvent);
		}
    }
    
    function setAuthorBioEvents()
    {
		var bioLinks = ClassUtility.GetMembers("authorInfo", "div");
		var bio;
		
		for(var i=0;i<bioLinks.length;i++)
		{		
			bio = bioLinks[i];
			EventUtility.AddEventHandler(bio, "onmouseover", getAuthorBioEvent);
		}
    }
     
    function setFontLinkEvents()
    {
		var fontLinks = ClassUtility.GetMembers("fontLink","a");
		var link;
		
		for(var i=0;i<fontLinks.length;i++)
		{
			link = fontLinks[i];
			EventUtility.RemoveEventHandler(link, "onclick", getFontLinkEvent);
			EventUtility.AddEventHandler(link, "onclick", getFontLinkEvent);
		}
    }
    
    function setSkipLink()
	{
		var skipLinks = ClassUtility.GetMembers("skipLink", "a");
		for(var i=0;i<skipLinks.length;i++)
		{
			EventUtility.RemoveEventHandler(skipLinks[i], "onclick", getSkipLinkEvent);
			EventUtility.AddEventHandler(skipLinks[i], "onclick", getSkipLinkEvent);
		}
	}
    
	function setPreviewLinkEvents()
    {
		var articleLinks = ClassUtility.GetMembers("articleHref preview", "a");
		var lnk;
		
		for(var i=0;i<articleLinks.length;i++)
		{
			lnk = articleLinks[i];
			EventUtility.RemoveEventHandler(lnk, "onmouseover", getPreviewEvent);
			EventUtility.AddEventHandler(lnk, "onmouseover", getPreviewEvent);
		}
    }
    
    function removePreviewLinkEvents()
    {
		var articleLinks = ClassUtility.GetMembers("articleHref preview", "a");
		var lnk;
		
		for(var i=0;i<articleLinks.length;i++)
		{
			lnk = articleLinks[i];
			EventUtility.RemoveEventHandler(lnk, "onmouseover", getPreviewEvent);
		}
    }
    
    
    
    function getSkipLinkEvent(evt)
    {
		adMouseAlert = false;
		cancelCountdown(true);
		return preventDefaultAction(evt);
    }
    
    function getFontLinkEvent(evt)
    {
		initGetColumnsRef();
   		if(divFullAd.style.display != "block")
		{
			var e_out;
			var ie_var = "srcElement";
			var moz_var = "target";
			var fontSize = "";

			if(evt[moz_var])
			{
				fontSize = evt[moz_var]["name"];
			}
			else
			{
				if(evt[ie_var])
				{
					fontSize = evt[ie_var]["name"];
				}
			}
			
			fontSizeChange(fontSize);
		}
		return preventDefaultAction(evt);
    }
     
    function getPrintEvent(evt)
    {
		var h = fromJS ? (mshrefQuery + "&Print=1") : ("/smallbusiness/resources/ArticleReader/website/default.aspx?Print=1&ArticleId=" + article.Id);
		window.open(h);
		return preventDefaultAction(evt);
    }
    
    function getDiggEvent(evt)
    {
		var h = fromJS ? mshref : location.href;
		
		window.open('http://digg.com/submit?phase=2&url=' + h + '&title=' + article.Title + '&bodytext=' + article.Summary + '&topic=microsoft', 'Digg', 'toolbar=no, width=700, height=400');
		return preventDefaultAction(evt);
    }
    
    function getDelEvent(evt)
    {
		var h = fromJS ? mshref : location.href;
    
		window.open('http://del.icio.us/post?v=4&noui&jump=close&url=' + encodeURIComponent(h) + '&title=' + encodeURIComponent(article.Title), 'delicious','toolbar=no,width=700,height=400'); 
		return preventDefaultAction(evt);
    }
    
    function getNewsVineEvent(evt)
    {
    	var h = fromJS ? mshref : location.href;
		window.open('http://www.newsvine.com/_wine/save?popoff=1&u=' + h,'newsvine','toolbar=no,width=590,height=600,resizable=yes,scrollbars=yes')
		return preventDefaultAction(evt);
    }
    
    function getFacebookEvent(evt)
    {
    	var h = fromJS ? mshref : location.href;
		window.open('http://www.facebook.com/sharer.php?u=' + encodeURIComponent(h) + '&t=' + encodeURIComponent(article.Title),'sharer','toolbar=0,status=0,width=626,height=436')
		return preventDefaultAction(evt);
    }
    
    function getAddThisEvent(evt)
    {
    	var h = fromJS ? mshref : location.href;
		addthis_url   = h; 
		addthis_title = article.Title; 
		addthis_click(this);
						
		return preventDefaultAction(evt);
    }
    
    function getLiveEvent(evt)
    {
    	var h = fromJS ? mshref : location.href;
		window.open('https://favorites.live.com/quickadd.aspx?url=' + encodeURIComponent(h) + '&title=' + encodeURIComponent(article.Title), 'Live','toolbar=no,width=700,height=400'); 
		return preventDefaultAction(evt);
    }
    
    function getShareEvent(evt)
    {
		initGetColumnsRef();
		if(divShareAction.style.display == "none")
		{
			divShareAction.style.display = "";
		}
		else
		{
			divShareAction.style.display = "none";
		}
		
		return preventDefaultAction(evt);
    }
    
    function getEmailEvent(evt)
    {
		var h = fromJS ? mshrefQuery : location;
		var cleanTitle = escape(article.Title);
		var cleanSummary = escape(article.Summary);
		parent.location = "mailto: ?subject=" + cleanTitle + "&body=" + cleanSummary + " " + h;
		
		
		return preventDefaultAction(evt);
    }
     
    function getPrevPageEvent(evt)
    {
		initGetColumnsRef();
    	if(divFullAd.style.display != "block")
		{
		CancelNavigateAndReturnPageContent("prev");
			}
		else
		{
			if(divContinue.style.display == "block" || curCountdown < 5)
			{
				getSkipLinkEvent(evt);
			}
		}
		return preventDefaultAction(evt);
    }
    
    function getAdjacentTitle(indexOffset)
    {
        var adjacentIndex = section.ArrayIndex + indexOffset;
        var adjacentTitle = section.ArticleTitleList[adjacentIndex];
        return adjacentTitle;
    }
    
    function getNextPageEvent(evt)
    {
		adMgr.resetIframeAd();
	    initGetColumnsRef();
    	if(divFullAd.style.display != "block")
			{
				CancelNavigateAndReturnPageContent("next");
			}
		else
		{
			if(divContinue.style.display == "block" || curCountdown < 5)
			{
				getSkipLinkEvent(evt);
			}
		}
		return preventDefaultAction(evt);
    }

    function getPrevArticleEvent(evt)
    {
		adMgr.resetIframeAd();
		initGetColumnsRef();
    	if(divFullAd.style.display != "block")
		{
		CancelNavigateAndReturnArticleContent("prev");
			}
		else
		{
			if(divContinue.style.display == "block" || curCountdown < 5)
			{
				getSkipLinkEvent(evt);
			}
		}
		return preventDefaultAction(evt);
    }
    
    function getNextArticleEvent(evt)
    {
		adMgr.resetIframeAd();
		initGetColumnsRef();
    	if(divFullAd.style.display != "block")
		{
		CancelNavigateAndReturnArticleContent("next");
			}
		else
		{
			if(divContinue.style.display == "block" || curCountdown < 5)
			{
				getSkipLinkEvent(evt);
			}
		}
		return preventDefaultAction(evt);
    }
       
    function getTabEvent(evt)
    {
		adMgr.resetIframeAd();
		initGetColumnsRef();
    	if(divFullAd.style.display != "block" || divContinue.style.display == "block" || curCountdown < 5)
		{
			if(divFullAd.style.display == "block")
			{
				if(intervalId)
				{
					window.clearInterval(intervalId);
				}
				hideFullAd();
			}
			
    	var e_out;
		var ie_var = "srcElement";
		var moz_var = "target";
		var sectionid = "";

		if(article.Id != "")
		{
			article = new Article();
		}

		if(evt[moz_var])
		{
			sectionid = evt[moz_var]["name"];
			
			getSection(sectionid,"");
		}
		else
		{
			if(evt[ie_var])
			{
				sectionid = evt[ie_var]["name"];
				
				getSection(sectionid,"");
			}
		}
		
		activateTab(sectionid);		
      }
		
		
		setTracking(section);
		
		return preventDefaultAction(evt);
    }        
       
    function activateTab(sectionid)
    {
    	if(sectionid != "")
		{
			var activeTabs = ClassUtility.GetMembers("navActive", "a");
			var tab;
			for(var i=0;i<activeTabs.length;i++)
			{
				tab = activeTabs[i];
				tab.className = "navInactive";
			}
			
			var inactiveTabs = ClassUtility.GetMembers("navInactive", "a");
			for(var i=0;i<inactiveTabs.length;i++)
			{
				tab = inactiveTabs[i];
				if(tab.name == sectionid)
				{
					tab.className = "navActive";
				}
			}
		}
    }
       
    function getSectionEvent(evt)
    {
    	removePreviewLinkEvents();
    	adMgr.resetIframeAd();
    	initGetColumnsRef();
		if(divFullAd.style.display != "block")
		{
    	var e_out;
		var ie_var = "srcElement";
		var moz_var = "target";

		if(article.Id != "")
		{
			article = new Article();
		}

		if(evt[moz_var])
		{
			var sectionid = evt[moz_var]["name"];
			var splitSecId = sectionid.split("|");
			
			getSection(splitSecId[0], splitSecId[1]);
		}
		else
		{
			if(evt[ie_var])
			{
				var sectionid = evt[ie_var]["name"];
				var splitSecId = sectionid.split("|");
				
				getSection(splitSecId[0], splitSecId[1]);
			}
		}
		}
		setTracking(section);
		
		return preventDefaultAction(evt);
    } 
    
    function getAuthorBioEvent(evt)
    {
		initGetColumnsRef();
    	if(divFullAd.style.display != "block")
		{
		info.doShowBio(document.getElementById('ArticleContent'),document.getElementById('divAuthorBio'),evt);	
		}
		return preventDefaultAction(evt);
    }
    
    function getHideAuthorBioEvent(evt)
    {
		info.hideTip(document.getElementById('ArticleContent'));
		return preventDefaultAction(evt);
    }
    
    function getArticleEvent(evt)
    {
		removePreviewLinkEvents();
		initGetColumnsRef();
		if(divFullAd.style.display != "block")
		{
    	var e_out;
		var ie_var = "srcElement";
		var moz_var = "target";

		if(evt[moz_var])
		{
			getArticle(evt[moz_var]["name"]);
		}
		else
		{
			if(evt[ie_var])
			{
				getArticle(evt[ie_var]["name"]);
			}
		}
		}
		return preventDefaultAction(evt);
    }     
    
    function getPreviewEvent(evt)
    {
		initGetColumnsRef();
		if(divFullAd.style.display != "block")
		{
    		var e_out;
			var ie_var = "srcElement";
			var moz_var = "target";

			if(evt[moz_var])
			{
				previewArticle(evt[moz_var]["name"]);
			}
			else
			{
				if(evt[ie_var])
				{
					previewArticle(evt[ie_var]["name"]);
				}
			}
		}
		return preventDefaultAction(evt);
    }  
    
    function preventDefaultAction(evt) 
    { 
		if (evt) 
		{ 
			if (typeof evt.preventDefault!= 'undefined') 
			{ 
				if (evt.stopPropagation) 
				{
					evt.stopPropagation();
				}
				evt.preventDefault(); // W3C 
			} 
			else 
			{ 
				evt.cancelBubble = true;
				evt.returnValue = false; // IE 
			} 
		} 
		// safey for handling DOM Level 0 
		return false; 
	} 
    
   //parse title out of tokened string
    function setArticleTitle()
    {        
        var metaTagOpen = "<META";
        var metaTagClose = "name=keywords>";
        
        if(isNavigator){
            tagOpenTagH2 = tagOpenTagH2.toLowerCase();
            tagCloseTagH2 = tagCloseTagH2.toLowerCase();
            metaTagOpen = metaTagOpen.toLowerCase();
            metaTagClose = metaTagClose.toLowerCase();
            listCloseTagH3 = listCloseTagH3.toLowerCase();
        }
        
        var pos1 = content.indexOf(tagOpenTagH2);
        var pos2 = content.indexOf(tagCloseTagH2);
        
        var TitleText = content.substring(pos1+4,pos2);
        
        
        var subTitleOffset = (isNavigator) ? 33: 23;
        //check for Subtitle
        var iSubtitleEndTag = content.indexOf(listCloseTagH3);
        if (iSubtitleEndTag > -1)
        {
            //account for class="hasSubTitle" on h2 tag
            TitleText = content.substring(pos1+subTitleOffset,pos2);
            pos2 = iSubtitleEndTag;
        }
        
        var temp = content.substring(pos1, pos2+5);
        content = content.replace(temp, '');
        articleTitleDiv.innerHTML = temp;
        article.Title = TitleText;
        
        setTracking(article);
       
        
        
        document.title = article.Title;
        adjustArticleTitle();
        
        //remove malformed META tags
        pos2 = content.indexOf(metaTagClose);
        if(pos2 > 0){
            metaTags = content.substring(0, pos2 + 14);
            content = content.replace(metaTags, '');
        }
        
    }
    
    //title is larger on first page of article and normal otherwise
    function adjustArticleTitle()
    {
        //first page title is larger
        if(article.CurrentPage == 1)
            document.getElementById("ArticleTitle").style.fontSize = '2.2em'; 
        else
            document.getElementById("ArticleTitle").style.fontSize = '1.2em';
    }
    
    function getArticle(__articleId)
    {
		article.CurrentPage = 1;
		asGetArticle(__articleId);
    }
    
    //async call to get article content from server
    function asGetArticle(__articleId)
    {	
		article = new Article();
		article.Id = __articleId;
        showWaiting();
        var arg = "ARTICLE" + L1delim + __articleId;
		eval(callbackMethod);       
    }
    
    function previewArticle(__articleId)
    {
		var arg = "PREVIEW" + L1delim + __articleId;
		eval(callbackMethod);
    }
    
    function bookmarkUrl(__articleId)
    {
		if(!fromJS)
		{
		var href;
		if(location.href.indexOf("#") > -1)
		{
			href = location.href.substring(0, location.href.indexOf("#"));
		}
		else
		{
			href = location.href;
		}
		
		location.href = href + '#' + __articleId;
		}
    }
    
    function bookmarkSection(section, subsection)
    {
		if(!fromJS)
		{
		    var href;
		    if(location.href.indexOf("#") > -1)
		    {
			    href = location.href.substring(0, location.href.indexOf("#"));
		    }
		    else
		    {
			    href = location.href;
		    }
    		
		    location.href = href + '#' + section + "," + subsection;
        }
    }
    
    function getSection(__section, __subsection)
    {
		info.hideTip(document.getElementById('ArticleContent'));
		asGetSection(__section, __subsection);
	}
    
    //asych call to get article section from server
    function asGetSection(__section, __subsection)
    {
        showWaiting();
        var arg = "SECTION" + L1delim + __section + L1delim + __subsection;
        eval(callbackMethod);
    }
    
    
    function CallbackResult(arg)
    {
		var html = arg.split(L1delim);
		var type = html[0];
		
		if( type == "ARTICLE" )
		{
			var tmp = document.getElementById("ArticleContent_tip");
			if(tmp)
			{
				tmp.parentNode.removeChild( tmp );
			}
			
			article.SectionName = html[1];
			article.SubSectionName = html[2];
			section.ArticleIds = html[3];
			section.ArticleIdList = section.ArticleIds.split(L2delim);
			section.ArrayIndex = parseInt(html[4]);
			section.NumberOfArticles = parseInt(html[5]);
			article.Html = html[6];		
			
			article.AdListFirst = html[7].split(L2delim);
			article.AdListAny = html[8].split(L2delim);
			article.AdListLast = html[9].split(L2delim);
			article.AdListInterstitial = html[10].split(L2delim);
			
			article.AdFirstBackup = html[7];
			article.AdAnyBackup = html[8];
			article.AdLastBackup = html[9];
			article.AdInterstitialBackup = html[10];  
			
	        section.ArticleTitleList = html[11].split(L2delim);
	        article.Summary = html[12];
	        article.Source = html[13];
	        
			toggleArticleColumns('block');
			document.getElementById(containerClientId).innerHTML = article.Html;
	        
	        if(isNavigator)
				divFooterSectionName.textContent = article.SubSectionName;
			else
			divFooterSectionName.innerText = article.SubSectionName;
			
			if(article.AdListInterstitial && article.AdListInterstitial.length > 0 && article.AdListInterstitial[0] != '')
			{
				setupPage(false);
			}
			else
			{
				setupPage(true);
			}
			activateTab(article.SectionName);     

			setArticleNavDisplay();
			divArticleLoc.innerHTML = "Article " + section.ArrayIndex +" of " + section.NumberOfArticles;   
			divArticleSource.innerHTML = (article.Source == "Microsoft Small Business Center") ? article.Source :"<i>from</i> " + article.Source;
			bookmarkUrl(article.Id);
			if(!fromJS)
			{
				var v = document.getElementById('hdnArticleValue');
				if(v != null)
				{
					v.value = article.Id;
				}
			}

			if(article.AdListInterstitial && article.AdListInterstitial.length > 0 && article.AdListInterstitial[0] != '')
			{
				nextFunctionPtr = showCurrentPage;
				nextFunctionPtrParam = true;
				showFullAd();
				setSkipLink();
			}		
		}

		if( type == "SECTION" )
		{		
            section.SectionName = html[1];
            section.SubSectionName = html[2];
            section.NumberOfArticles = html[3];
            section.Html = html[4];
            var shtml = section.Html.split(L2delim);
            document.getElementById("ArticleSectionHeader").innerHTML = shtml[0];
            document.getElementById("ArticleSectionColumnTopics").innerHTML = shtml[1];
            document.getElementById("ArticleSectionColumnArticles").innerHTML = shtml[2];
            document.getElementById("ArticleSectionColumnPreview").innerHTML = shtml[3];
            document.getElementById("ArticleSectionTopViewed").innerHTML = shtml[4];
            document.getElementById("tabNavigation").innerHTML = shtml[5];
            document.getElementById("ArticleSectionAd").innerHTML = shtml[6];
                        
            section.ArticleIds = html[5];
            section.ArticleIdList = section.ArticleIds.split(L2delim);

             section.ArticleTitleList = html[6].split(L2delim);
            section.SectionId = html[7];
            section.SubSectionId = html[8];  

            //once SectionName is determined, send info to tracking
            setTracking(section);  
                         
            toggleArticleColumns('none');
       
			if(isNavigator)
				divFooterSectionName.textContent = article.SectionName;
			else
				divFooterSectionName.innerText = article.SectionName;
				
			divArticleLoc.innerHTML = "Article 1 of " + section.NumberOfArticles;   
	                	                
			setArticleLinkEvents();
			setPreviewLinkEvents();
			setSectionLinkEvents();
			setTabLinkEvents();
			bookmarkSection(section.SectionId, section.SubSectionId);
activateTab(section.SectionId);			
adMgr.resetIframeAd();	  

            if(html.length >= 10 && html[9] != '')
			{
				eval(html[9]);
			}
			
		}
		
		//page done with initial load, show controls
		document.getElementById("ArticleFooter").style.visibility = "visible";
		document.getElementById("ArticleActionsWrapper").style.visibility = "visible";
		document.getElementById("tabNavigation").style.visibility = "visible";

		
		
		if(type == "PREVIEW")
		{			
			document.getElementById("ArticleSectionColumnPreview").innerHTML = html[1];
			setArticleLinkEvents();
		}
		
		hideWaiting();
        return false;
    }    
            
    //hides article columns when article sections are displayed and vice versa
    function toggleArticleColumns(__display)
    {
        if(__display == 'block')
            display = 'none';
        else
            display = 'block';
           
        col1.style['display'] = __display;
        col2.style['display'] = __display;
        col3.style['display'] = __display;
        document.getElementById("ArticleTitle").style['display'] = __display;
        document.getElementById("ArticleFooter").style['display'] = __display;
        document.getElementById("ArticleActionsWrapper").style['display'] = __display; 
        document.getElementById("ArticleSection").style['display'] = display; 
        document.getElementById("multiColAd").style['display'] = __display;
    }
    
    function showWaiting()
    {
		calcWindowSize();
		divLoadingAni.style.display = "block";
	}
    
    function hideWaiting()
    {
		divLoadingAni.style.display = "none";
	}
    
    function showFullAd()
    {
		calcWindowSize();
		divFullAd.style.display = "block";
		
		document.getElementById("ArticlePrev").className = "hidden";
		document.getElementById("ArticlePrevDisabled").className = "";
    	document.getElementById("ArticleNext").className = "hidden";
		document.getElementById("ArticleNextDisabled").className = "";

		document.getElementById("PrevText").className = "show";
		document.getElementById("PrevLink").className = "hidden";
		document.getElementById("NextText").className = "show";
		document.getElementById("NextLink").className = "hidden";
 
		document.getElementById("txtCountdown").innerHTML = curCountdown;
		
		col1.innerHTML = "";
		col2.innerHTML = "";
		col3.innerHTML = "";
		divMultiColAd.innerHTML = "";
		
		imgO = document.getElementById("adWrapper");
		var ary;
				
		if(article.AdListInterstitial.length == 1)
		{
			var ad = adMgr._checkAds(article.AdListInterstitial, 0, true);
			if(ad)
			{
				ary = ad.split(L3delim);
			}
		}
		else
		{
			var ad;
			while(!ad && article.AdListInterstitial.length > 0)
		{
			var randomnumber = Math.floor(Math.random()*article.AdListInterstitial.length);
				var ad = adMgr._checkAds(article.AdListInterstitial, randomnumber, true);
				if(ad)
				{
					ary = ad.split(L3delim);
				}
			}
		}
		if(!ary)
		{	
			cancelCountdown(false);
		}			
		else
		{
			var maxHeight = ary[10];
			var adSrc = ary[4];
			if(maxHeight != -1)
			{
				//Determine the height.
				var curMax = screenHeight-350;
				maxHeight = Math.max(Math.min(curMax, maxHeight), parseInt(ary[2]));
				
				//Now get the new width maintaining the aspect ratio.
				var ratio = parseInt(ary[2])/parseInt(ary[3]);
				var newWidth = Math.ceil(maxHeight/ratio);
				var maxWidth = document.getElementById('contentArea').clientWidth;
				maxWidth = maxWidth - 30;
				if(newWidth > maxWidth)
				{
					newWidth = maxWidth;
					maxHeight = Math.ceil(ratio*newWidth);
				}
				adSrc = adSrc.replace(new RegExp("height=\'[0-9]*px\'","gi"), "height='" + maxHeight + "px'");				
				adSrc = adSrc.replace(new RegExp("width=\'[0-9]*px\'","gi"),"width='" + newWidth + "px'");
				
				col1.style.height = isNavigator ? maxHeight + 'px' : maxHeight;
			}

			imgO.innerHTML = adSrc;
			if(ary.length >= 12 && ary[11] != '')
			{
				eval(ary[11]);
			}
			sessionAdHash.Increment(ary[7]);
						
			if(ary.length >= 6 && ary[6] != '')
			{
				curCountdown = ary[6];
			}
			else
			{
				curCountdown = 15;
			}
						
			document.getElementById("txtCountdown").innerHTML = curCountdown;
			imgO.onmouseover = alertCountdown;			
		intervalId = window.setInterval("countdown()",1000);
    }
    }
    
    function hideFullAd()
    {
		divSkip.style.display = "";
		divContinue.style.display = "none";
		divFullAd.style.display = "none";
    }
    
    function countdown()
    {
		curCountdown--;
		document.getElementById("txtCountdown").innerHTML = curCountdown;
		
		if(curCountdown <= 0)
		{
			cancelCountdown(true);
		}
    }
    
    function cancelCountdown(hasInterval)
    {
		if(hasInterval)
    {
		window.clearInterval(intervalId);
		}
		if(!adMouseAlert)
		{
			adMouseAlert = false;
		hideFullAd();
			setArticleNavDisplay();
			changePage('',false);
		nextFunctionPtr(nextFunctionPtrParam);
    }
		else
		{
			adMouseAlert = false;
			divSkip.style.display = "none";
			divContinue.style.display = "block";
		}
    }
    
    function alertCountdown()
    {
		if(curCountdown <= 5)
		{
			adMouseAlert = true;
			cancelCountdown(true);
			imgO.onmouseover = '';
		}
    }
    
    //grab references to DIVs, split content at each word, assign content to columns 
    function init(L1, L2, L3, startupLocation, containerId, callbackScript, errorPage, jsInst)
    {	
		fromJS = (jsInst == 'true');
		
		L1delim = L1;
		L2delim = L2;
		L3delim = L3;    
		containerClientId = containerId;
		callbackMethod = callbackScript;
		errorUrl = errorPage;
        isNavigator = /Firefox/.test(navigator.userAgent);
        initGetColumnsRef();
        
        col1.style.fontSize = "10pt";
        col2.style.fontSize = "10pt";
        col3.style.fontSize = "10pt";
        activateFontLink("10pt");
        
        section = new Section();
        article = new Article();
        
        var anchorUrl = '';
        
        if(!fromJS)
        {
			anchorUrl = parseAnchorUrl(location.href);
        if(anchorUrl != '')
			{
            startupLocation = anchorUrl;
			}
	    }
	    else
	    {
			mshref = "http://www.microsoft.com/smallbusiness/resources/ArticleReader/website/default.aspx";
	    }
        
        if(startupLocation != null && startupLocation != "")
        {
			var loc = startupLocation.split(L1delim);
			if(loc[0] == "ARTICLE")
			{
				article = new Article();
				article.Id = loc[1];
				mshrefQuery = mshref + "?ArticleId=" + article.Id;
				asGetArticle(article.Id);
			}
			if(loc[0] == "SECTION")
			{
				section.SectionName = loc[1];
				section.SubSectionName = loc[2];
				mshrefQuery = mshref + "?SectionId=" + section.SectionName;
				if(section.SubSectionName != '')
				{
					mshrefQuery += "&SubSectionId=" + section.SubSectionName;
				}
				
				asGetSection(section.SectionName, section.SubSectionName);
			}
            
			activateTab(section.SectionName);
			section.ArrayIndex = 1; //allows initial click of "next" to move onto article 2
			document.getElementById("ArticlePrev").className = "hidden";
			document.getElementById("ArticlePrevDisabled").className = "";
			document.getElementById(containerClientId).style.display = 'none'; //holds current article or section.  Make sure it is not shown
			document.getElementById("overall_container").style.display = "block";
			
		}
		
		
		window.onresize = scheduleResize;      
    }
    
    var isInitialPageLoad = true;
    //external javascript tracking functionality access through pageEventsTracking object
    function setTracking(obj)
    {
        
        var PageNameBase = pageEventsTracking.baseName + ":Resources";
            PageNameBase = PageNameBase.replace(/&/g,'- ');
            
            
        var SectionName = obj.SectionName;
            SectionName = SectionName.replace(/&/g,'- ');  
            
        var SubSectionName = obj.SubSectionName;
            SubSectionName = SubSectionName.replace(/&/g,'- ');    
            
        if (obj.constructor == Article)
        {
            PageNameBase += (obj.Source == "Microsoft Small Business Center") ? ":" : ("[" + obj.Source + "]:");
            //var PageCountText = (obj.PageCount > 1) ? " (pg " + obj.CurrentPage + " of " + obj.PageCount + ")":" (pg " + obj.CurrentPage + ")";
            
            //capitalize title for reporting consistency
            var PageTitle = obj.Title = obj.Title.replace(/\w+/g, function(str){return str.charAt(0).toUpperCase() + str.slice(1).toLowerCase();});
            PageTitle = PageTitle.replace(/&/g,'- ');
            PageTitle = PageTitle.replace(/\?/g,'');
            PageTitle = PageTitle.replace(/'/g,'');
            
            var PageName = PageNameBase + SectionName + ":" + SubSectionName + ":" + PageTitle;
            
            pageEventsTracking.setAsyncPageViewData(PageName);
           
            
            //don't set interaction tracking event when user first lands on page
            //do set on all pages subsequent to first or if user clicks next or prev article
            //must set slight delay or interferes with ArticleReader init callback    
            //window.setTimeout("pageEventsTracking.setEvent('18','18','ArticleReader v1');",10);
       
        } 
        else if (obj.constructor == Section)
        {
            pageEventsTracking.setAsyncPageViewData(PageNameBase + ":" + SectionName + ":" + SubSectionName);
        }
        
        isInitialPageLoad = false;
    }
    
 function scheduleResize()
    {
		if(!awRunning)
		{
			initGetColumnsRef();
    		if(divFullAd.style.display != "block")
			{
		showWaiting();
			}

			window.setTimeout("adjustSize(false, true);",0);
		}
    }
    
    //used to valid url against injecting
    function checkInput(__href)
    {
        var forbiddenChars = new RegExp("[<>\'\"]", "g"); // Global search/replace 
        __href = __href.replace(forbiddenChars, ""); 
    
        return __href;
    }
    
    function parseAnchorUrl(__href)
    {   
        var _startupLocation = '';
        if(__href.indexOf("#") != -1)
        {
            var posPound = __href.indexOf('#');
            var _bookmark = location.href.substring(posPound+1);
            var posComma = _bookmark.indexOf(',');
            _bookmark = checkInput(_bookmark);
            
            if(posPound != -1)
            {
                if(posComma != -1)
                {
                    var _subsection = _bookmark.substring(posComma+1);
                    var _section = _bookmark.substring(0,posComma);
                    _startupLocation = 'SECTION'  + L1delim + _section + L1delim + _subsection;
                }
                else
                    _startupLocation = 'ARTICLE' + L1delim + _bookmark; 
            }
        }
        return _startupLocation;
    }
    
    function setupPage(showPage)
    {
        content = document.getElementById(containerClientId).innerHTML;
	
        articleTitleDiv = document.getElementById("ArticleTitle");
        setArticleTitle();
        var tmp = content.split(/(<[^>]+>)/);
        tokenizedString = new Array();
        var i = 0;

        for(var x=0;x<tmp.length;x++)
        {
			if(tmp[x].indexOf("<") == 0)
			{
				tokenizedString[i++] = tmp[x];
			}
			else
			{
				var spaceSplit = tmp[x].split(" ");
				for(var q=0;q<spaceSplit.length;q++)
				{
					tokenizedString[i++] = spaceSplit[q];
				}
			}
        }

        adjustSize(true, showPage);
    }
    
    function Section(){
		this.SectionId = 'Management';
		this.SubSectionId = 'CustomerRelations';
        this.SectionName = 'Management';
        this.SubSectionName = 'Customer Relations';
        this.NumberOfArticles = 0;
        this.ArrayIndex = 0;
        this.Html = '';
        this.ArticleIdList = new Array;
        this.ArticleTitleList = new Array;
        this.Ads = '';
    }
    
    function Article(){
        this.SectionName = 'Management';
        this.SubSectionName = 'Customer Relations';
        this.Html = '';
        this.Meta = '';
        this.Id = '';
        this.Title = '';
        this.Summary = '';
        this.Source = '';
        this.PageCount = 1;
        this.CurrentPage = 1;
        this.AdListFirst = new Array;
        this.AdListAny = new Array;
        this.AdListLast = new Array;
        this.AdListSelect = new Array;
        this.AdListInterstitial = new Array;
        this.ColumnHeightAr = new Array;
        this.ColumnAr = new Array; //hold each column of text
        this.lastPageAd = new oAd();
        this.prevHeight = 0;
        this.prevWidth = 0;
        this.articleHash = new Hash();
        this.AdFirstBackup = '';
        this.AdAnyBackup = '';
        this.AdLastBackup = '';
        this.AdInterstitialBackup = '';       
    }
    
    function doPrint()
    {	
		//"schedule" this so that the page completes loading before the print dialog opens.
		window.setTimeout("schedulePrint()",0);
    }
    
    function schedulePrint()
    {
		initGetColumnsRef();
		hideWaiting();
		window.print();
		//window.close();
    }

    function fontSizeChange(__diff)
    {               
        switch(__diff)
        {
            case "8pt":  //550 600 650    200 250 300
                pixelOffsetIE = 400;
                pixelOffsetFF = 200;
                break;
            case "10pt":
                pixelOffsetIE = 460;
                pixelOffsetFF = 250;
                break;
            case "12pt":
                pixelOffsetIE = 500;
                pixelOffsetFF = 300;
                break;        
        }
        
        activateFontLink(__diff);
        processFontChange(__diff);
    }
    
    function processFontChange(__currentFontSize)
    {
        col1.style.fontSize = __currentFontSize;
        col2.style.fontSize = __currentFontSize;
        col3.style.fontSize = __currentFontSize;
        showWaiting();
        article.prevHeight = 0;
        article.prevWidth = 0;
        article.articleHash = new Hash();
        article.AdListFirst = article.AdFirstBackup.split(L2delim);
		article.AdListAny = article.AdAnyBackup.split(L2delim);
		article.AdListLast = article.AdLastBackup.split(L2delim);
		article.AdListInterstitial = article.AdInterstitialBackup.split(L2delim);

        window.setTimeout("adjustSize(false, true);",0);
    }
    
    function activateFontLink(_size)
    {
		document.getElementById("lnk11").className = _size=="8pt" ? "fontLink hidden" : "fontLink";
        document.getElementById("txt11").className = _size=="8pt" ? "fontLink" : "fontLink hidden";
		document.getElementById("lnk12").className = _size=="10pt" ? "fontLink hidden" : "fontLink";
        document.getElementById("txt12").className = _size=="10pt" ? "fontLink" : "fontLink hidden";
        document.getElementById("lnk14").className = _size=="12pt" ? "fontLink hidden" : "fontLink";
        document.getElementById("txt14").className = _size=="12pt" ? "fontLink" : "fontLink hidden";   
    }
        
var nativeSplit = nativeSplit || String.prototype.split;

String.prototype.split = function(s, limit) {
	// If s (separator) is not a regex, just use the native split method
	if (s instanceof RegExp) {
		var flags = (s.global?"g":"") + (s.ignoreCase?"i":"") + (s.multiline?"m":"");
		if (!s.global) {
			s = new RegExp(s.source, "g" + flags);
		}
	} else {
		return nativeSplit.apply(this, arguments);
	}
	
	/* Behavior for limit: If it's...
	- Undefined: No limit
	- Zero: Return an empty array
	- A positive number: Use limit after dropping any decimal value (if it's then zero, return an empty array)
	- A negative number: No limit, same as if limit is undefined
	- A type/value which can be converted to a number: Convert, then use the above rules
	- A type/value which can't be converted to a number: Return an empty array */
	if (limit === undefined || +limit < 0) {
		limit = false;
	} else {
		limit = Math.floor(+limit);
		if (!limit) return [];
	}
	
	var s2 = new RegExp("^" + s.source + "document.getElementById", flags),
		match,
		output = [],
		lastLastIndex = 0,
		i = 0;
	
	while ((limit ? i++ <= limit : true) && (match = s.exec(this))) {
		var zeroLengthMatch = !match[0].length;
		
		// Fix IE's infinite-loop-resistant but incorrect lastIndex
		if (zeroLengthMatch && s.lastIndex > match.index) s.lastIndex = match.index;
		
		if (s.lastIndex > lastLastIndex) {
			// Fix IE and Opera to always return undefined for non-participating capturing groups
			if (match.length > 1) {
				match[0].replace(s2, function() {
					for (var j = 1; j < arguments.length - 2; j++){
						if (arguments[j] === undefined) match[j] = undefined;
					}
				});
			}
			
			output = output.concat(this.substring(lastLastIndex, match.index), (match.index === this.length ? [] : match.slice(1)));
			lastLastIndex = s.lastIndex;
		}
		
		if (zeroLengthMatch) s.lastIndex++;
	}
	
	return (lastLastIndex === this.length)
		? (s.test("") ? output : output.concat(""))
		: (limit ? output : output.concat(this.substring(lastLastIndex)));
};

function Hash () {
	this._keys = new Array;
	this._values = new Array;
	this.Increment = Increment;
	this.Decrement = Decrement;
	this.Get = Get;
	this.Put = Put;
	this.toDelimString = toDelimString;

	function Get(key)
	{
		return this._values[key] == null ? 0 : this._values[key];
	}

	function Put(key, value)
	{
		if(value == null)
		{
			return null;
		}
		if(this._values[key] == null)
		{
			this._keys[this._keys.length] = key;
		}
		this._values[key] = value;
	}
	
	function toDelimString(delim)
	{
		var retVal = '';
		for(var k in this._keys)
		{
			retVal += k + delim + this._values[key] + delim;
		}
		retVal = retVal.toString().substring(0, retVal.length-delim.length);
		
		return retVal;
	}

	function Increment(key)
	{
		if(this._values[key] == null)
		{
			this.Put(key,1);
		}
		else
		{
			var c = parseInt(this._values[key].toString());
			this._values[key] = ++c;
		}
	}
	
	function Decrement(key)
	{
		if(this._values[key] != null)
		{
			var c = parseInt(this._values[key].toString());
			this._values[key] = --c;
		}
	}
}