var pageTimerId; // Timer for setTimeout() calls.
var BVisLoaded = false;

function BVcheckLoadState() {
   	if(!BVisLoaded) {
    	var page = document.getElementById('BVFrame').src;
		document.getElementById('BVFrame').src='http://reviews.cpa2biz.com/bvstaging/logging?page=' + escape(page);
    	document.getElementById('BVReviewsContainer').innerHTML = '<!-- Review retrieval timed out -->';
     }
}
function product_details_load(e)
{
    CSSAdjustmentsByProductType(APP_isImageHorizontal, APP_prodListingCode);
    Feature_SeeMore();
        
    var dynamicTabs = new Array();
    // If product type is conference ...
    if(APP_prodListingCode == "conferences")
    {
        // Whenever Tab 1, 2, or 3 is clicked hide Workshop Add To Cart container and show normal Add To Cart container.
        // Whenever Tab 4 is clicked show Workshop Add To Cart container and hide normal Add To Cart container.
        dynamicTabs[0] = new DynamicTab("Tab1", ["TabContent1A", "ProductPricingContainer"]);
        dynamicTabs[1] = new DynamicTab("Tab2", ["TabContent2A", "ProductPricingContainer"]);
        dynamicTabs[2] = new DynamicTab("Tab3", ["TabContent3A", "ProductPricingContainer"]);
        dynamicTabs[3] = new DynamicTab("Tab4", ["TabContent4A", "ProductPricingContainerWorkshops"]);
		dynamicTabs[4] = new DynamicTab("Tab5", ["TabContent5A", "ProductPricingContainer"]);
		 dynamicTabs[5] = new DynamicTab("Tab6", ["TabContent6A", "ProductPricingContainer"]);
		  dynamicTabs[6] = new DynamicTab("Tab7", ["TabContent7", "ProductPricingContainer"]);
		  dynamicTabs[7] = new DynamicTab("Tab8", ["TabContent8", "ProductPricingContainer"]);

    }
    else
    {
        dynamicTabs[0] = new DynamicTab("Tab1", ["TabContent1A"]);
        dynamicTabs[1] = new DynamicTab("Tab2", ["TabContent2A"]);
        dynamicTabs[2] = new DynamicTab("Tab3", ["TabContent3A"]);
        dynamicTabs[3] = new DynamicTab("Tab4", ["TabContent4A"]);
        dynamicTabs[4] = new DynamicTab("Tab5", ["TabContent5"]);
        dynamicTabs[5] = new DynamicTab("Tab6", ["TabContent6"]);
		dynamicTabs[6] = new DynamicTab("Tab7", ["TabContent7"]);
        dynamicTabs[7] = new DynamicTab("Tab8", ["TabContent8"]);
    }

    var dynamicTabGroup = new DynamicTabGroup("Tabs", dynamicTabs);
    dynamicTabGroup.init();

    // Only if the standing order discount exists (i.e. is > 0%).
    if(APP_stndDiscPct > 0)
    {
        var eHighlightedItem = document.getElementById("HighlightedItem");
        addEventHandler(eHighlightedItem, "mouseover", eHighlightedItem_mouseover, false, false);
        addEventHandler(eHighlightedItem, "mouseout", eHighlightedItem_mouseout, false, false);
        var eStandingOrderFlyout = document.getElementById("StandingOrderFlyout");
        addEventHandler(eStandingOrderFlyout, "mouseover", eStandingOrderFlyout_mouseover, false, false);
        addEventHandler(eStandingOrderFlyout, "mouseout", eStandingOrderFlyout_mouseout, false, false);
        // var eStandingOrderDescLink = document.getElementById("StandingOrderOptionDescLink");
        // addEventHandler(eStandingOrderDescLink, "click", eStandingOrderDescLink_click, false, false);
    }
    
    var TOC = new ExpandingList(getTocRoot_TOC('TabContent2A'), "Collapsed", "Expanded");
    var TOC_Experts = new ExpandingList(getTocRoot_TOC('TabContent3A'), "Collapsed", "Expanded");
    var excerptsPaging = new DynamicPaging(document.getElementById("TabContent3A"));

    Feature_PrinterFriendly();
    Feature_ChangeFontSize();  
    showHideSeatContainer(); 
    eStandingOrderDescLink_click();
    cpecredit_click();
}

function cpecredit_click(e)
{         
      var anchors=document.getElementsByTagName("a");
      for (var i=0; i<anchors.length; i++)
      {
	    var anchor = anchors[i];
	    if (anchor.className =="Message")
	    { 	   
	      addEventHandler(anchor, "click", cpecredit_clicksub, false, false);
        }
      }
}

function cpecredit_clicksub(e)
{
         // var url  ='/content/media/producer_content/Store/Products/CPE/cperequirements.jsp';
         var url  = '/content/media/producer_content/generic_template_content/cperequirements.jsp';
         newWindow = window.open(url,"NewWindow","width=750,height=600,resizable=yes," + "scrollbars=yes,location=no,toolbar=no");
         newWindow.focus();
         newWindow.document.close();
         return false;
}


function eHighlightedItem_mouseover(e)
{
    ShowStandingOrderFlyout(e);
}

function eHighlightedItem_mouseout(e)
{
    HideStandingOrderFlyout(e);
}

function eStandingOrderFlyout_mouseover(e)
{
    ShowStandingOrderFlyout(e);
}

function eStandingOrderFlyout_mouseout(e)
{
    HideStandingOrderFlyout(e);
}

function eStandingOrderDescLink_click(e)
{
    // ShowStandingOrderFlyout(e);
    // pageTimerId = window.setTimeout(function(){StandingOrderFlyout(false)}, 5000);
    // var eStandingOrderDescLink = document.getElementById("StandingOrderFlyoutContainer");
      
    var anchors=document.getElementsByTagName("a");
    for (var i=0; i<anchors.length; i++)
    {
        var anchor = anchors[i];
        if(anchor.className == "StandingOrderOptionDescLink")
        { 	   
            addEventHandler(anchor, "click", eStandingOrderDescLink_clicksub, false, false);
        }
    }
}

function eStandingOrderDescLink_clicksub(e)
{
    var content = document.getElementById("StandingOrderFlyoutContainer");
    newWindow = window.open(content,"NewWindow","width=650,height=600,resizable=yes," + "scrollbars=yes,location=no,toolbar=no");
    newWindow.document.write(content.innerHTML);
    newWindow.focus();
    newWindow.document.close();
    return false;
}

function ShowStandingOrderFlyout(e)
{
    window.clearTimeout(pageTimerId);
    StandingOrderFlyout(true);
}

function HideStandingOrderFlyout(e)
{
    pageTimerId = window.setTimeout(function(){StandingOrderFlyout(false)}, 100);
    stopEventBubble(e);
}

function StandingOrderFlyout(bShow)
{
    var eStandingOrderFlyout = document.getElementById("StandingOrderFlyout");
    var eStandingOrderFlyoutCap = document.getElementById("StandingOrderFlyoutCap");

    var iCurrentLeft = 0;
    var iCurrentWidth = 0;
    var iCurrentWidthCap = 0;
    
    if(window.getComputedStyle)
    {
        var oCSS2Properties = window.getComputedStyle(eStandingOrderFlyout, null);
        var oCSS2PropertiesForCap = window.getComputedStyle(eStandingOrderFlyoutCap, null);
        iCurrentLeft = parseInt(oCSS2Properties.left);
        iCurrentWidth = parseInt(oCSS2Properties.width);
        iCurrentWidthCap = parseInt(oCSS2PropertiesForCap.width);
    }
    else if(eStandingOrderFlyout.currentStyle)
    {
        iCurrentLeft = parseInt(eStandingOrderFlyout.currentStyle.left);
        iCurrentWidth = parseInt(eStandingOrderFlyout.currentStyle.width);
        iCurrentWidthCap = parseInt(eStandingOrderFlyoutCap.currentStyle.width);
    }

    if(bShow)
    {
        if(eStandingOrderFlyout.style.visibility != "visible")
        {
            var iNewLeft = iCurrentLeft - iCurrentWidth + 25;
            var sNewLeft = iNewLeft + "px";
            eStandingOrderFlyout.style.left = sNewLeft;
            
            var iNewWidthCap = iCurrentWidthCap + 25;
            var sNewWidthCap = iNewWidthCap + "px";
            eStandingOrderFlyoutCap.style.width = sNewWidthCap;
            
            eStandingOrderFlyout.style.visibility = "visible";
            var eHighlightedItem = document.getElementById("HighlightedItem");
            eHighlightedItem.style.backgroundColor="#E5E5E5";
        }
    }
    else
    {
        if(eStandingOrderFlyout.style.visibility != "hidden")
        {
            eStandingOrderFlyout.style.visibility = "hidden";                
            
            var iNewLeft = iCurrentLeft + iCurrentWidth - 25;
            var sNewLeft = iNewLeft + "px";
            eStandingOrderFlyout.style.left = sNewLeft;
            
            var iNewWidthCap = iCurrentWidthCap - 25;
            var sNewWidthCap = iNewWidthCap + "px";
            eStandingOrderFlyoutCap.style.width = sNewWidthCap;
            var eHighlightedItem = document.getElementById("HighlightedItem");
            eHighlightedItem.style.backgroundColor="#ffffff";
        }
    }
}

function CSSAdjustmentsByProductType(isImageHorizontal, productType)
{
    // If the product is an Online Subscription (e.g. CPExpress) ...
    if(isImageHorizontal)
    {   
        // Change the Product Overview section to a one-column layout.
        var eContainer = document.getElementById("ProductOverviewContainer");
        for(var i = 0; i < eContainer.childNodes.length; i++)
        {
            if(eContainer.childNodes[i].nodeType == 1)
            {
                if(eContainer.childNodes[i].className.toString().search(/Column\d/) > -1)
                {
                    eContainer.childNodes[i].style.width = "100%";
                    eContainer.childNodes[i].style.cssFloat = "none";
                }
            }
        }
        //eContainer.style.position = "relative";
        //eContainer.style.top = "25px";
        
        // Move the Add To Cart link down.
        var eAddToCartJump = document.getElementById("AddToCartJump");
        eAddToCartJump.style.position = "relative";
        eAddToCartJump.style.top = "65px";
        // eAddToCartJump.style.left = "180px";
         
         
        
 
        // Float the utility controls to the right.
        var eControls = document.getElementById("ProductDetailsUtilityControl");
        eControls.style.position = "relative";
        // eControls.style.top = "2px";
        eControls.style.left = "180px";
    }
}

function Feature_SeeMore()
{
    var eTabContent = document.getElementById("TabContent1A");
    var eMoreContent = null;
    if(eTabContent != null)
    {
        var eTabContentDivs = eTabContent.getElementsByTagName("div");
        for(var i = 0; i < eTabContentDivs.length; i++)
        {
            if(eTabContentDivs[i].className.toString().search(/\bMore\b/) > -1)
            {
                eMoreContent = eTabContentDivs[i];
                eMoreContent.style.display = "none";
            }
        }
    }
       
    var eSeeMore = document.getElementById("SeeMore");
    
    if(eMoreContent != null && eSeeMore != null)
    {
        eSeeMore.style.visibility = "visible";
        
        Feature_SeeMore_Click = function(e)
        {
            eMoreContent.style.display = "block";
            eSeeMore.style.visibility = "hidden";
        }
        
        addEventHandler(eSeeMore, "click", Feature_SeeMore_Click, false, true);
    }
}

//Common function which takes ID as a parameter;to get collapsable lists under different tabs in the product detail page
function getTocRoot_TOC(Tab_Content)
{
    var eTabContent = document.getElementById(Tab_Content);
    var eTocContent = null;
    var eTocContentRoot = null;
    
    if(eTabContent != null)
    {
        var eTabContentDivs = eTabContent.getElementsByTagName("div");
        for(var i = 0; i < eTabContentDivs.length; i++)
        {
            if(eTabContentDivs[i].className.toString().search(/\bTOC\b/) > -1)
            {
                eTocContent = eTabContentDivs[i];
            }
        }
    }
       
    if(eTocContent != null)
    {
        eTocContentRoot = eTocContent.getElementsByTagName("ul")[0];
    }
    
    return eTocContentRoot;
}
//end function

function ExpandingList(rootElement, collapsedClassName, expandedClassName)
{
    if(!rootElement || rootElement == null)
    {
        return;
    }

    collapsedClassName = (!collapsedClassName || collapsedClassName == null || collapsedClassName == "") ? "Collapsed" : collapsedClassName;
    expandedClassName = (!expandedClassName || expandedClassName == null || expandedClassName == "") ? "Collapsed" : expandedClassName;

    this.click = function(e)
    {
        stopEventBubble(e);
        var oNode;
        if(window.addEventListener)
        {
            oNode = e.target;
        }
        else if(window.attachEvent)
        {
            oNode = e.srcElement;
        }
        else
        {
            oNode = null;
        }
        
        if(oNode != null)
        {
            for(var i = 0; i < oNode.childNodes.length; i++)
            {
                ToggleListExpansion(oNode.childNodes[i]);
//                if(oNode.childNodes[i].nodeType == 1)
//                {
//                    if(oNode.childNodes[i].tagName.toLowerCase("ul"))
//                    {
//                        if(oNode.className.search(/\bCollapsed\b/) > -1)
//                        {
//                            oNode.className = oNode.className.toString().replace(/\bCollapsed\b/, "Expanded");
//                        }
//                        else
//                        {
//                            oNode.className = oNode.className.toString().replace(/\bExpanded\b/, "Collapsed");
//                        }
//                        oNode.childNodes[i].style.display = (oNode.childNodes[i].style.display == "block") ? "none" : "block";
//                    }
//                }
            }
        }
    }
    
    function ToggleListExpansion(oNode)
    {
        if(oNode.nodeType == 1)
        {
            if(oNode.tagName.toLowerCase("ul"))
            {
                if(oNode.parentNode.className.search(/\bCollapsed\b/) > -1)
                {
                    oNode.parentNode.className = oNode.parentNode.className.toString().replace(/\bCollapsed\b/, "Expanded");
                }
                else
                {
                    oNode.parentNode.className = oNode.parentNode.className.toString().replace(/\bExpanded\b/, "Collapsed");
                }
                oNode.style.display = (oNode.style.display == "block") ? "none" : "block";
            }
        }
    }
    
    var LiElements = rootElement.getElementsByTagName("li");
    for(var i = 0; i < LiElements.length; i++)
    {
        if(LiElements[i].getElementsByTagName("ul").length > 0)
        {
            if(i == 0)
            {
                LiElements[i].className += " Expanded";
                
            }
            else
            {
                LiElements[i].className += " Collapsed";
              
            }
            addEventHandler(LiElements[i], "click", this.click, false, true);
        }
    }
    
    var UlElements = rootElement.getElementsByTagName("ul");    
    for(var i = 0; i < UlElements.length; i++)
    {
        if(i == 0)
        {
            UlElements[i].style.display = "block";
        }
        else
        {
            UlElements[i].style.display = "none";
        }
    }
}

function DynamicPaging(containingElement)
{
    var CSS_CLASS_PAGINGCONTROL = "PagingControl";
    var CSS_CLASS_IMG_PREVIOUS = "PageControlLeft";
    var CSS_CLASS_IMG_NEXT = "PageControlRight";
    var CSS_CLASS_CURRENTPAGEINDICATOR = "Current"; 
    var CSS_CLASS_PAGEINDICATOR = "Page";
    
    containingElement = (containingElement == null) ? document : containingElement;
    
    this.pagingControls = new Array();
    this.pages = new Array();
    this.currentPage = 1;
    this.click = function(e)
    {
    
    }
    
    // Get the elements for the paging controls and the pages themselves.
    if(containingElement != null)
    {
        var divs = containingElement.getElementsByTagName("div");
        for(var i = 0; i < divs.length; i++)
        {
            if(divs[i].className.toString().search(new RegExp("\\b" + CSS_CLASS_PAGINGCONTROL + "\\b")) > -1)
            {
                this.pagingControls[this.pagingControls.length] = divs[i];
            }
            if(divs[i].className.toString().search(new RegExp("\\b" + CSS_CLASS_PAGEINDICATOR + "\\b")) > -1)
            {
                this.pages[this.pages.length] = divs[i];
            }
        }
    }
    
    if(this.pages.length > 0)
    {
        for(var i = 0; i < this.pagingControls.length; i++)
        {   
            // Show the paging controls if there are pages.
            this.pagingControls[i].style.display = "block";

            // Get the <span> elements that make up the paging control.
            var spans = this.pagingControls[i].getElementsByTagName("span");
            for(var j = 0; j < spans.length; j++)
            {   
                spans[j].normalize();
                for(var k = 0; k < spans[j].childNodes.length; k++)
                {
                    if(j == 0)
                    {
                        // Hide the left border for the first page number in the control.
                        spans[j].style.borderLeftStyle = "none";
                    }
                    if(spans[j].childNodes[k].nodeName == "#text")
                    {
                        spans[j].childNodes[k].nodeValue = (j + 1).toString();
                        if(spans[j].childNodes[k].nodeValue == this.currentPage.toString())
                        {
                            // If the page number is the current one then apply the correct style.
                            spans[j].className = "Current"; // TODO: Use RegExp; this should be a toggle.
                        }
                        if(spans[j].childNodes[k].nodeValue.valueOf() > this.pages.length)
                        {
                            // Hide spans that aren't needed.
                            spans[j].style.display = "none";
                        }
                    }
                }
            }
            
            // Hide the previous/next images if they aren't needed.
            var imgs = this.pagingControls[i].getElementsByTagName("img");
            for(var j = 0; j < imgs.length; j++)
            {   
                if(imgs[j].className.toString().search(new RegExp("\\b" + CSS_CLASS_IMG_PREVIOUS + "\\b")) > -1)
                {
                    imgs[j].style.visibility = "hidden";
                }
                if(imgs[j].className.toString().search(new RegExp("\\b" + CSS_CLASS_IMG_NEXT + "\\b")) > -1)
                {
                    imgs[j].style.visibility = (this.pages.length > 5) ? "visible" : "hidden";
                }
            }
        }
    }
}




function showHideSeatContainer() 
{
   
    var seatcontainer = this.document.getElementById("seatcontainer");
	if(seatcontainer != null)
	{
	    var form=document.getElementById("form_add_to_cart");
	    if (form !=null)
	    {
	      var inputElements=form.getElementsByTagName("input");
	      for (i=0; i<inputElements.length; i++)
	      {
	         // TODO: Need to change this to check for class=freeware
	         if(inputElements[i].type=="radio" && inputElements[i].value=="1689949371893527"  && inputElements[i].checked==true)
	         {
	          seatcontainer.style.visibility = "hidden";
	         }
	         if(inputElements[i].type=="radio" && inputElements[i].value=="1689949371893527"  && inputElements[i].checked==false)
	         {
	          seatcontainer.style.visibility = "visible";
	         }
	         
	     
	      }
	    
	    }
	    
//	    if(document.form_add_to_cart.checked == true)
//	    {
//	        seatcontainer.style.visibility = "hidden";
//	    }
//        else
//        {
//            seatcontainer.style.visibility = "visible";
//        }
    }
}

addEventHandler(window, "load", product_details_load, false, true);
