var pageTimerId; // Timer for setTimeout() calls.

function product_details_load(e)
{
    CSSAdjustmentsByProductType(APP_isImageHorizontal, APP_prodListingCode);
        
    if (hasDynamicTabs == 'false')
    {
    	var dynamicTabs = new Array();
    	Feature_SeeMore('TabContent1A');
    	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();
    	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"));
    }
    else
    {
    	Feature_SeeMore('TabContentA');
    	var expandCollapse = new ExpandingList(getExpandCollapseRoot('TabContentA'), "Collapsed", "Expanded");
    	var excerptsPaging = new DynamicPaging(document.getElementById("TabContentA"));
    }

    // 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);
    }
    ProductPageload();
    Feature_PrinterFriendly();
    Feature_ChangeFontSize();  
    showHideSeatContainer(); 
    eStandingOrderDescLink_click();
    cpecredit_click();
    //changeQtyFieldStyle(defaultSKUQTYStyle);
     changeQty(bshowSeatContainerForFirstSku,skuQuantityIdentifier);
}
function ProductPageload()
{
if( document.getElementById("TabContent7")!= null)
{
 document.getElementById("TabContent7").style.display = "none";
}
}      

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/generic_template_content/cperequirements.jsp';
	newWindow = window.open(url,"NewWindow","width=1125,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)
{
    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;
    var eStandingOrderImage = document.getElementById("StandingOrderImg");
    
    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")
     	{
            eStandingOrderFlyout.style.visibility = "visible";
            var eHighlightedItem = document.getElementById("HighlightedItem");
            eHighlightedItem.style.backgroundColor = "#E5E5E5";
            eStandingOrderImage.style.backgroundColor = "#E5E5E5";
		}
    }
    else
    {
        if(eStandingOrderFlyout.style.visibility != "hidden")
        {
            eStandingOrderFlyout.style.visibility = "hidden";                
            var eHighlightedItem = document.getElementById("HighlightedItem");
            eHighlightedItem.style.backgroundColor = "#ffffff";
            eStandingOrderImage.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";
                }
            }
        }
        // Move the Add To Cart link down.
        var eAddToCartJump = document.getElementById("AddToCartJump");
        eAddToCartJump.style.position = "relative";
        eAddToCartJump.style.top = "65px";
 
        // Float the utility controls to the right.
        var eControls = document.getElementById("ProductDetailsUtilityControl");
        eControls.style.position = "relative";
        eControls.style.left = "180px";
    }
}

function Feature_SeeMore(tabDivId)
{
    var eTabContent = document.getElementById(tabDivId);
    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 (eSeeMore != null)
    {
    	if(eMoreContent != 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);
    	}
    	else
    	{
    		eSeeMore.style.visibility = "hidden";
    	}
    }
}

//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;
}

function getExpandCollapseRoot(Tab_Content)
{
    var eTabContent = document.getElementById(Tab_Content);
    var eTabContentRoot = null;
        
    if(eTabContent != null)
    {
        eTabContentRoot = eTabContent.getElementsByTagName("ul")[0];
    }
    
    return eTabContentRoot;
}

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]);
            }
        }
    }
    
    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";
	         	}
	      	}
	 	}
    }
}

//method def for dynamically disabling or enabling qty box on product detail template..fix for traxx # 22540
function changeQtyFieldStyle(boolValue,skuQuantity) 
{
 
    if(skuQuantity == "0")
    {
	    skuQuantity = 1;
    }
	if(document.getElementById('ADD_CART_ITEM<>quantity') != null) 
	{
		//document.getElementById('ADD_CART_ITEM<>quantity').value = '1';
		document.getElementById('ADD_CART_ITEM<>quantity').value = skuQuantity;
		document.getElementById('ADD_CART_ITEM<>quantity').disabled = !boolValue; 
	}
}
function enableQty() 
{
	if(document.getElementById('ADD_CART_ITEM<>quantity') != null) 
	{
		document.getElementById('ADD_CART_ITEM<>quantity').disabled = false; 
	}
}
function changeQty(boolValue,skuQuantity) 
{
 
    bshowSeatContainerForFirstSku="false";
 
    if(skuQuantity == "0")
    {
	    skuQuantity = 1;
    }
	if(bshowSeatContainerForFirstSku=="false") 
	{   
		if(document.getElementById('ADD_CART_ITEM<>quantity') != null) 
		{
			
            $(':input:radio:eq(0)').attr('checked', 'checked'); 
			document.getElementById('ADD_CART_ITEM<>quantity').value = skuQuantity;
           	document.getElementById('ADD_CART_ITEM<>quantity').disabled = !boolValue; 
        }
           
		
	}
}
  


   		
addEventHandler(window, "load", product_details_load, false, true);
