﻿function oAd () {
	this.ad = "";
	this.col1 = 0;
	this.col2 = 0;
	this.col3 = 0;
	this.colHeight1 = 0;
	this.colHeight2 = 0;
	this.colHeight3 = 0;
	this.adId = "";
	this.maxArticleOccur = "";
	this.maxSectionOccur = "";
	this.maxHeight = -1;
}

adMgr = new adMgr();



function adMgr () {
  this.setAd = setAd;
  this.setLastPageAd = setLastPageAd;
  this.addIframeAd = addIframeAd;
  this.resetIframeAd = resetIframeAd;
  this.adFrameMouseOver = adFrameMouseOver;
  this.setAdFrameResizeHandler = setAdFrameResizeHandler;
  this.onPlayerContainerResize = onPlayerContainerResize;
  this.minimizeAdFrame = minimizeAdFrame;
  this.maximizeAdFrame = maximizeAdFrame;
  
  this._checkAds = _checkAds;
  this._setEmptyAd = _setEmptyAd;
  
  var AdFrameResizeHandlerTimer = null;
  var AddHandlerTryCount = 0;
  function setAdFrameResizeHandler()
  {
    if (AddHandlerTryCount < 3)
    {
    //restore ArticleReader resize
    window.onresize = scheduleResize;
    
    var FrameRef = window.frames["articleAdFrame"];
    if (FrameRef != undefined)
    {
        
            var playerContainer = FrameRef.document.getElementById('OuterOrange0ae2d32af23840e8a94c917ccf0c2a5ca11464d3a9ba4adaa58d5e3e4b60c635');
        if (playerContainer != undefined)
        {
            EventUtility.RemoveEventHandler(playerContainer,"onresize",adMgr.onPlayerContainerResize);
            EventUtility.AddEventHandler(playerContainer,"onresize",adMgr.onPlayerContainerResize);
            window.clearInterval(AdFrameResizeHandlerTimer);
            
        } else {
             AdFrameResizeHandlerTimer = window.setInterval(adMgr.setAdFrameResizeHandler,1000);
         }
     } else {
        AdFrameResizeHandlerTimer = window.setInterval(adMgr.setAdFrameResizeHandler,1000);
     }
     AddHandlerTryCount++;
  }
  }
  
  function minimizeAdFrame()
  {
    var adFrame = document.getElementById("articleAdFrame");
    adFrame.style.zIndex = "-1";
    //if (adFrame.src != "")
        //window.setTimeout("pageEventsTracking.setAsyncClickEvents('PlayerMinimize');",1000);
  }
  
  function maximizeAdFrame()
  {
    var adFrame = document.getElementById("articleAdFrame");
    adFrame.style.zIndex = "5";
    pageEventsTracking.setAsyncClickEvents('SummitPlayerEA');
  }
  
  function adFrameMouseOver()
  {
    adMgr.setAdFrameResizeHandler();
  }
  
    function onPlayerContainerResize()
    {
      var FrameRef = window.frames["articleAdFrame"];
      var playerContainer = FrameRef.document.getElementById('OuterOrange0ae2d32af23840e8a94c917ccf0c2a5ca11464d3a9ba4adaa58d5e3e4b60c635');
      //alert(playerContainer.style.width);
      if (playerContainer.style.width != "250px")
      {
        //Expanded
        playerContainerState = "Expanded";
        maximizeAdFrame();
      } else {
        //Minimized
        playerContainerState = "Minimized";
        minimizeAdFrame();
      }
      
      //window.status = playerContainerState;
    }
  
  function addIframeAd(url)
  {
    var adLink = ClassUtility.GetMembers("adLink", "a");
    
    if (adLink.length > 0)
    {
        //Disable ArticleReader resize, as footprint of iframe may trigger unnecessary resizes
        window.onresize = "";
        
        //may be more than one adLink on page, so pick one with child node
        var AdLocation;
        if (adLink.length > 1)
        {
            for (var i=0;i<adLink.length;i++)
            {
                if (adLink[i].childNodes.length > 0)
                {
                    AdLocation = adLink[i];
                }
                
            }
        } else {
            AdLocation = adLink[0];
        }
        
        var adFrame = document.getElementById("articleAdFrame");
        
        if (adFrame != undefined)
        {
            //alert('adFrame found');
            //if (adFrame.src != url)
                adFrame.src = url;
                
            adFrame.style.display = "block";
            adFrame.style.zIndex = "5";
            AdLocation.removeChild(AdLocation.childNodes[0]);
            AdLocation.appendChild(adFrame);
            
        }
    }
    
  }
  
  function resetIframeAd()
  {
    var adFrame = document.getElementById("articleAdFrame");
    if (adFrame != undefined)
    {
        adFrame.style.display = "none";
        adFrame.src = "";
        minimizeAdFrame();
        var container = document.getElementById('overall_container');
        container.appendChild(adFrame);
    }
  }
  
  function setAd(pageNum, colHeight, colWidth, newArticle)
  {
    var adCountFirst = article.AdListFirst.length;
    var adCountAny = article.AdListAny.length;
    
    var ad;
    var adHeight;
    var adWidth;   
    var retVal = new oAd();
    
	if(pageNum == 1)
	{
		if(adCountFirst > 0)
		{
			if(adCountFirst == 1)
			{
				ad = _checkAds(article.AdListFirst, 0, newArticle);
			}
			else
			{
				while(!ad && article.AdListFirst.length > 0)
				{
					var randomnumber = Math.floor(Math.random()*article.AdListFirst.length);
					ad = _checkAds(article.AdListFirst, randomnumber, newArticle);
				}
			}
		}
	}
	else
	{
		if(adCountAny > 0)
		{
			if(adCountAny == 1)
			{
				ad = _checkAds(article.AdListAny,0, newArticle);
			}
			else
			{
				while(!ad && article.AdListAny.length > 0)
				{
					var randomnumber = Math.floor(Math.random()*article.AdListAny.length);
					ad = _checkAds(article.AdListAny, randomnumber, newArticle);
				}
			}
		}
	}
	if(ad)
	{		
		var adValues = ad.split(L3delim);
		var adHeight = adValues[2];
		var adWidth = adValues[3];	
		
		article.AdListSelect[pageNum] = ad;
		
		retVal.col3 = adHeight;
		retVal.col2 = adWidth > colWidth ? adHeight : 0;
		retVal.col1 = adWidth > (2*colWidth) ? adHeight : 0;

        //var LastColumnAdHeightAdjust = (adHeight < 150) ? 80: 20;

		var x = ((pageNum-1)*3);
		article.ColumnHeightAr[x++] = colHeight - retVal.col1;
		article.ColumnHeightAr[x++] = colHeight - retVal.col2;
		article.ColumnHeightAr[x] = retVal.col3 > 0 ? colHeight - retVal.col3 - 20 : colHeight;
		
		    
		
		retVal.adId = adValues[7];
		retVal.maxArticleOccur = adValues[8];
		retVal.maxSectionOccur = adValues[9];
		retVal.maxHeight = adValues[10];
	}
	else
	{	
		article.AdListSelect[pageNum] = '';
		retVal.col3 = 0;
		retVal.col2 = 0;
		retVal.col1 = 0;
	
	    var noAdAdjustHeight = 17;//minus necessary to maintain same height w/o ad
		var x = ((pageNum-1)*3);
		article.ColumnHeightAr[x++] = parseInt(colHeight);
		article.ColumnHeightAr[x++] = parseInt(colHeight);
		article.ColumnHeightAr[x] = parseInt(colHeight-noAdAdjustHeight);
		
		
	}
	
	return retVal;
  }
  
  function _checkAds(ar, index, newArticle)
  {
	var ad;
	var ary = ar[index].split(L3delim);
	var id = ary[7];
	var articleMaxOccur = ary[8];
	var sessionMaxOccur = ary[9];

	if((articleMaxOccur == -1 || article.articleHash.Get(id) < articleMaxOccur) &&
	   (sessionMaxOccur == -1 || sessionAdHash.Get(id) < sessionMaxOccur))
	{
		ad = ar[index];
		article.articleHash.Increment(id);
	}
	else
	{
		ar.splice(index,1);		
	}
	
	return ad;
  }
  
  function setLastPageAd(colHeight, colWidth, newArticle)
  {
	article.lastPageAd = new oAd();
	var adCountLast = article.AdListLast.length;
	
	if(adCountLast > 0)
	{
		var ad;
		if(adCountLast == 1)
		{
			ad = _checkAds(article.AdListLast,0, newArticle);
		}
		else
		{
			while(!ad && article.AdListLast.length > 0)
			{
				var randomnumber = Math.floor(Math.random()*article.AdListLast.length);
				ad = _checkAds(article.AdListLast, randomnumber, newArticle);
			}
		}
		
		if(ad)
		{
			var adValues = ad.split(L3delim);
			var adHeight = adValues[2];
			var adWidth = adValues[3];		

			article.lastPageAd.ad = ad;	
			article.lastPageAd.col3 = adHeight;
			article.lastPageAd.col2 = adWidth > colWidth ? adHeight : 0;
			article.lastPageAd.col1 = adWidth > (2*colWidth) ? adHeight : 0;
			
			article.lastPageAd.colHeight1 = colHeight - article.lastPageAd.col1;
			article.lastPageAd.colHeight2 = colHeight - article.lastPageAd.col2;
			article.lastPageAd.colHeight3 = colHeight - article.lastPageAd.col3;
			
			article.lastPageAd.adId = adValues[7];
			article.lastPageAd.maxArticleOccur = adValues[8];
			article.lastPageAd.maxSectionOccur = adValues[9];
			article.lastPageAd.maxHeight = adValues[10];
        }
        else
		{	
			_setEmptyAd(colHeight);
		}
	}
        else
	{
		_setEmptyAd(colHeight);
	}
  }
  
  function _setEmptyAd(colHeight)
  {
		article.lastPageAd.ad = '';	
		article.lastPageAd.col3 = 0;
		article.lastPageAd.col2 = 0;
		article.lastPageAd.col1 = 0;
		
		article.lastPageAd.colHeight1 = parseInt(colHeight);
		article.lastPageAd.colHeight2 = parseInt(colHeight);
		article.lastPageAd.colHeight3 = parseInt(colHeight);
		
		
  }
}