﻿var Vogue = {};
Vogue.baseFontSize = 0;
Vogue.heightOfCentreElement = 0;
Vogue.resetMaxWidthOnInit = false;
Vogue.signUpEmailAddressDefaultText = "";
Vogue.alignLeaderBoard = function()
{
    var contentElement = $get("LeaderBoardContent");
    var maxHeight = 90;
    var maxWidth = 728;
    var originalPosition = contentElement.style.position;
    contentElement.style.position = "absolute";
    var elementHeight = contentElement.clientHeight > 0 ? contentElement.clientHeight : contentElement.offsetHeight;
    var elementWidth = contentElement.clientWidth > 0 ? contentElement.clientWidth : contentElement.offsetWidth;
    if (elementWidth < maxWidth)
    {
        contentElement.style.paddingLeft = (maxWidth - elementWidth) / 2 + "px";
    }
    if (elementHeight < maxHeight)
    {
        contentElement.style.paddingTop = (maxHeight - elementHeight) / 2 + "px";
    }
    contentElement.style.position = originalPosition;
    contentElement.style.visibility = "visible";
};
Vogue.checkForEnterKeyPress = function(e)
{
    var key = e.keyCode ? e.keyCode : e.rawEvent.keyCode;
    if (key == Sys.UI.Key.enter && this.defaultButton)
    {
        this.defaultButton.click();
        e.preventDefault();
    }
};
Vogue.ensureBottomGlowIsAligned = function()
{
    if (typeof($get) == "undefined")
    {
        return;
    }
    var containerElement = $get("Centre");
    var glowElement = $get("BottomGlow");
    if (containerElement && glowElement && containerElement.clientHeight != Vogue.heightOfCentreElement)
    {
        // correct the position of the bottom glow
        Vogue.resetBottomGlowPosition();
        // save the height of the container element
        Vogue.heightOfCentreElement = containerElement.clientHeight;
    }
};
/* use in IE<7 to 'reset' the zoom on an element to 100% */
Vogue.elementZoomHack = function(element)
{
    if (element)
    {
        element.style.zoom = "normal";
        setTimeout("$get(\"" + element.id + "\").style.zoom = \"100%\";", 500);
    }
};
Vogue.fixFontSizeIE = function()
{
    // IE needs to have font-size 100% on the body element otherwise changing the text size within the browser will have an exaggerated effect.
    document.body.style.fontSize = "100%";
};
Vogue.getEmSizeInPx = function()
{
    if (Vogue.baseFontSize == 0)
    {
	    Vogue.setBaseFontSize();
    }
    return Vogue.baseFontSize;
};
Vogue.getMaxWidth = function()
{
    var maxWidth = 62.1875;
    return document.documentElement.clientWidth > maxWidth * Vogue.getEmSizeInPx() ? maxWidth + "em" : "auto";
};
Vogue.init = function()
{
    if (Sys == undefined)
    {
        window.setTimeout('Vogue.init()',240);
        return;
    }
    if (Vogue.resetMaxWidthOnInit==true)
    {
        if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7)
        {
	        Vogue.resetMaxWidth();
        }
    }
	if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version == 7)
	{
		Vogue.fixFontSizeIE();
	}
	/*if ($get("ExpandEmailSignUp"))
	{
	    $addHandler($get("ExpandEmailSignUp"), "click", Vogue.toggleEmailSignUp);
	}*/
	if ($get("SignUpEmailAddress"))
	{
	    $addHandler($get("SignUpEmailAddress"), "blur", Vogue.signUpEmailAddress_Blur);
	    $addHandler($get("SignUpEmailAddress"), "focus", Vogue.signUpEmailAddress_Focus);
	}
	if ($get("LeaderBoardPH") && $get("LeaderBoardContent"))
	{
	    var placeHolderElement = $get("LeaderBoardPH");
	    var contentElement =  $get("LeaderBoardContent");
	    placeHolderElement.appendChild(contentElement);
	    contentElement.style.visibilty = "hidden";
	    contentElement.style.display = "block";
	    if (Sys.Browser.agent == Sys.Browser.Opera)
	    {
	        setTimeout(Vogue.alignLeaderBoard, 250);
	    }
	    else
	    {
	        Vogue.alignLeaderBoard();
	    }
	}
	if ($get("SecondaryContent") && $get("SecondaryContentContent"))
	{
	    $get("SecondaryContent").appendChild($get("SecondaryContentContent"));
	    $get("SecondaryContentContent").style.display = "block";
	}
	if ($get("AdTopRightPH") && $get("TopRightContent"))
	{
	    $get("AdTopRightPH").appendChild($get("TopRightContent"));
	    $get("AdTopRightPH").style.display = "block";
	    $get("TopRightContent").style.display = "block";
	}
	Vogue.moirInit();
	Vogue.mocrInit();
	if ($get("InternationalSites"))
	{
	    $addHandler($get("InternationalSites"), "change", Vogue.internationalSites_Change);
	}
};
Vogue.internationalSites_Change = function()
{
    if (this.options[this.selectedIndex].value.length > 0)
    {
        document.location = this.options[this.selectedIndex].value;
    }
};
/* BEGIN: Mouse Over Image Replacement library */
// This functionality requires a specific HTML structure:
// - A container element that has a class of 'moir'
// - The container element must a child img element that will be used to display the images (targetImage).
// - The container element must also have a child list which can be either a ol or ul (linkList), which must come after the targetImage in the source.
// - Each li element within linkList which will have the mouseover and focus events attached to it
// - When the mouseover or focus event is triggered the first img within the li element will have it's alt and src attributes written to the corresponding
//    attributes on the targetImage element.
// sets up any MOIR (mouse over image replacement) elements within the UI

/***** DEPRECATED: in future use MOCR instead *****/

Vogue.moirInit = function()
{
    var containers = Vogue.getElementsByClass("moir", $get("PrimaryContent"));
    if (containers)
    {
        var linkList = null;
        for (var i = 0; i < containers.length; i++)
        {
            linkList = containers[i].getElementsByTagName("ol");
            if (!linkList || linkList.length == 0)
            {
                linkList = containers[i].getElementsByTagName("ul");
            }
            if (linkList && linkList.length > 0)
            {
                linkList = linkList[0];
                for (var j = 0; j < linkList.childNodes.length; j++)
                {
                    if (linkList.childNodes[j].nodeType == 1)
                    {
                        $addHandler(linkList.childNodes[j], "mouseover", Vogue.moir_MouseOver);
                        $addHandler(linkList.childNodes[j], "focus", Vogue.moir_Focus);
                    }
                }
            }
        }
    }
};
Vogue.moir_Focus = function()
{
    Vogue.moirUpdate(this);
};
Vogue.moir_MouseOver = function()
{
    Vogue.moirUpdate(this);
};
Vogue.moirUpdate = function(sourceElement)
{
    if (!sourceElement)
    {
        return;
    }
    var targetImage = sourceElement.parentNode.previousSibling;
    while (targetImage.nodeType != 1)
    {
        targetImage = targetImage.previousSibling;
    }
    if (!targetImage)
    {
        return;
    }
    var sourceImage = sourceElement.getElementsByTagName("img");
    if (!sourceImage || sourceImage.length == 0)
    {
        return;
    }
    sourceImage = sourceImage[0];
    targetImage.setAttribute("alt", sourceImage.getAttribute("alt") ? sourceImage.getAttribute("alt") : "");
    targetImage.setAttribute("src", sourceImage.getAttribute("src") ? sourceImage.getAttribute("src") : "");
};
/* END: Mouse Over Image Replacement library */
/* BEGIN: Mouse Over Content Replacement library */
// This functionality requires a specific HTML structure:
// - A container element that has a class of 'mocr'
// - The container element must a child div element that will be used to display the content (found within targetElement).
// - The container element must also have a child list which can be either a ol or ul (linkList), which must come after the targetElement in the source.
// - Each li element within linkList will have the mouseover and focus events attached to it
// - When the mouseover or focus event is triggered the element with classname 'mocrContent' within the li element will have it's content written to
//     the targetElement element

// sets up any MOCR (mouse over content replacement) elements within the UI
Vogue.mocrInit = function()
{
    var containers = Vogue.getElementsByClass("mocr", $get("PrimaryContent"));
    if (containers)
    {
        var linkList = null;
        for (var i = 0; i < containers.length; i++)
        {
            linkList = containers[i].getElementsByTagName("ol");
            if (!linkList || linkList.length == 0)
            {
                linkList = containers[i].getElementsByTagName("ul");
            }
            if (linkList && linkList.length > 0)
            {
                linkList = linkList[0];
                for (var j = 0; j < linkList.childNodes.length; j++)
                {
                    if (linkList.childNodes[j].nodeType == 1)
                    {
                        $addHandler(linkList.childNodes[j], "mouseover", Vogue.mocr_MouseOver);
                        $addHandler(linkList.childNodes[j], "focus", Vogue.mocr_Focus);
                    }
                }
            }
        }
    }
};
Vogue.mocr_Focus = function()
{
    Vogue.mocrUpdate(this);
};
Vogue.mocr_MouseOver = function()
{
    Vogue.mocrUpdate(this);
};
Vogue.mocrUpdate = function(sourceElement)
{
    if (!sourceElement)
    {
        // there is no soure element for the event
        return;
    }
    var targetElement = sourceElement.parentNode.previousSibling;
    while (targetElement.nodeType != 1)
    {
        targetElement = targetElement.previousSibling;
    }
    if (!targetElement)
    {
        // can not find target element
        return;
    }
    var contentSource = Vogue.getElementsByClass("mocrContent", sourceElement);
    if (!contentSource || contentSource.length == 0)
    {
        // can not find source of content
        return;
    }
    contentSource = contentSource[0];
    if (targetElement.innerHTML != contentSource.innerHTML)
    {
        targetElement.innerHTML = contentSource.innerHTML;
    }
};
/* END: Mouse Over Content Replacement library */
Vogue.resetBottomGlowPosition = function()
{
    var element = $get("BottomGlow");
    if (element)
    {
        Vogue.elementZoomHack(element);
    }
    element = $get("BottomLeftGlow");
    if (element)
    {
        Vogue.elementZoomHack(element);
    }
    element = $get("BottomRightGlow");
    if (element)
    {
        Vogue.elementZoomHack(element);
    }
};
Vogue.resetMaxWidth = function()
{
    var elementsToResize = Vogue.getElementsByClass("fullWidth", document.body);
    var count = 0;
    for (; count < elementsToResize.length; count++)
    {
        elementsToResize[count].style.width = Vogue.getMaxWidth();
    }
};
Vogue.scrollToErrorMessageActivate = function()
{
    if (this.validationMessageElement && this.validationMessageElement.style.display.length == 0)
    {
        // get the position of the element
        var elementBounds = Sys.UI.DomElement.getBounds(this.validationMessageElement);
        // scroll to the validation summary
        window.scrollTo(0, elementBounds.y);
    }
};
Vogue.scrollToErrorMessageInit = function(validationTriggerElementID, validationMessageElementID)
{
    var validationTriggerElement = $get(validationTriggerElementID);
    if (validationTriggerElement)
    {
        var validationMessageElement = $get(validationMessageElementID);
        if (validationMessageElement)
        {
            validationTriggerElement.validationMessageElement = validationMessageElement;
            $addHandler(validationTriggerElement, "click", Vogue.scrollToErrorMessageActivate);
        }
    }
};
Vogue.setUpEnterKeyAction = function(inputElement, button)
{
    if (inputElement && button)
    {
        $addHandler(inputElement, "keypress", Vogue.checkForEnterKeyPress);
        inputElement.defaultButton = button;
    }
};
Vogue.signUpEmailAddress_Blur = function()
{
    if ($get("SignUpEmailAddress").value.length == 0 || $get("SignUpEmailAddress").value == Vogue.signUpEmailAddressDefaultText)
    {
        $get("SignUpEmailAddress").value = Vogue.signUpEmailAddressDefaultText;
    }
};
Vogue.signUpEmailAddress_Focus = function()
{
    if (Vogue.signUpEmailAddressDefaultText.length == 0)
    {
        Vogue.signUpEmailAddressDefaultText = $get("SignUpEmailAddress").value;
    }
    if ($get("SignUpEmailAddress").value == Vogue.signUpEmailAddressDefaultText)
    {
        $get("SignUpEmailAddress").value = "";
    }
    if ($get("ExtraLinks"))
    {
        $get("ExtraLinks").style.display = "block";
    }
};
Vogue.setBaseFontSize = function()
{
	if (Vogue.baseFontSize == 0)
	{
	    if (document && document.body && document.body.currentStyle && document.body.currentStyle.fontSize)
	    {
	        switch (document.body.currentStyle.fontSize)
	        {
	            case "9pt":
	                Vogue.baseFontSize = 12;
	                break;
	            case "10pt":
	                Vogue.baseFontSize = 13;
	                break;
	            case "12pt":
	                Vogue.baseFontSize = 16;
	                break;
	            case "14pt":
	                Vogue.baseFontSize = 19;
	                break;
	            case "16pt":
	                Vogue.baseFontSize = 21;
	                break;
	        }
	    }
	    Vogue.fixFontSizeIE();
	}
};
Vogue.toggleEmailSignUp = function()
{
    if ($get("ExtraLinks"))
    {
        $get("ExtraLinks").style.display = $get("ExtraLinks").style.display == "block" ? "none" : "block";
    }
};
Vogue.openArticle = function()
{
    // open article
    if (this.getElementsByTagName("a").length > 0)
    {
        location.href = this.getElementsByTagName("a")[0];
    }
}

var openArticleAdded = false;

Vogue.addOpenArticleOnClick = function()
{
    if (openArticleAdded == false)
    {
        //search for all lists with the class hl
        //add onclick event to open the article to the list items within this list
        var parentCollection = Vogue.getElementsByClass("hl", document.forms[0], "ul");
        for(var i = 0; i < parentCollection.length; i++)
        {
            var elementCollection = parentCollection[i].getElementsByTagName("li");
            for(var j = 0; j < elementCollection.length; j++)
            {
                var thisElement = elementCollection[j];
                
                $addHandler(thisElement, "click", Vogue.openArticle);
            }
        }
        // search for all divs with the class hl
        // add the onclick event to these divs too
        var elementCollection = Vogue.getElementsByClass("hl", $get("PrimaryContent"), "div");
        for (var i = 0; i < elementCollection.length; i++)
        {
            var thisElement = elementCollection[i];
            
            $addHandler(thisElement, "click", Vogue.openArticle);
        }
        
        openArticleAdded = true;
    }
};

Vogue.ImagePaging = function(containerId, imageId, imageDescriptionId, imageArray, imageDescriptionArray)
{   
    this.addOpenArticleImageOnClick = function()
    {
        //search for all hyperlinks within the paging             
        var elementCollection = $get(containerId).getElementsByTagName("span");
        
        for(var i = 0; i < elementCollection.length; i++)
        {
            //add onclick event to update the image and description 
            $addHandler(elementCollection[i], 'click', function(){Vogue.changeArticleImage(this);});
            //add page property
            elementCollection[i].setAttribute("page", i);
        }
    }; 
    
    this.changeArticleImage = function(element)
    {
        var page = element.getAttribute("page");
        $get(imageId).src = imageArray[page].src;
        $get(imageId).alt = imageDescriptionArray[page];
        $get(imageDescriptionId).innerHTML = imageDescriptionArray[page];
        
        //remove selected css class from all hyperlinks
        var elementCollection = $get(containerId).getElementsByTagName("li");
        
        for(var i = 0; i < elementCollection.length; i++)
        {
            Sys.UI.DomElement.removeCssClass(elementCollection[i],"selected");
        }        
        
        //add selected css class to .paging ul li
        Sys.UI.DomElement.addCssClass(element.parentNode, "selected");
    };                       
    
    this.imageId = imageId;
    this.imageDescriptinId = imageDescriptionId;
    this.imageArray = imageArray;
    this.imageDescriptionArray = imageDescriptionArray;
    
    //load first image and description
    $get(imageId).src = imageArray[0].src;
    $get(imageId).alt = imageDescriptionArray[0];
    $get(imageDescriptionId).innerHTML = imageDescriptionArray[0];    
    
    $addHandler(document, 'mousedown', this.addOpenArticleImageOnClick);
    
    return this;
};

/* See http://ejohn.org/blog/getelementsbyclassname-speed-comparison/ */
Vogue.getElementsByClass = function getElementsByClass(searchClass,node,tag) {
    var classElements = new Array();
    if ( node == null )
            node = document;
    if ( tag == null )
            tag = '*';
            
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;    
    var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
    
    for (i = 0, j = 0; i < elsLen; i++) {
        if ( pattern.test(els[i].className) ) {
                classElements[j] = els[i];
                j++;
        }
    }
    return classElements;
}

/* opactity rollover effect */
Vogue.opacityEffectInit = function() {
    //add mouseover and mouseout events to links
    var parentCollection = Vogue.getElementsByClass("oe",document.forms[0],"ul");
    for(var i = 0; i < parentCollection.length; i++)
    {
        var elementCollection = parentCollection[i].getElementsByTagName("li");

        for (var j = 0; j < elementCollection.length; j++)
        {   
            var thisElement = elementCollection[j];
            
            if (thisElement.getAttribute("class") != "selectedLink")
            {
                $addHandler(thisElement, 'mouseover', Vogue.AddOpacityEffect);
                $addHandler(thisElement, 'mouseout',  Vogue.RemoveOpacityEffect);
            }
        }
    }
    
    // search for all divs with the class oe
    // add mouseover and mouseout events to links
    var elementCollection = Vogue.getElementsByClass("oe",document.forms[0],"div");
    
    for (var i = 0; i < elementCollection.length; i++)
    {
        var thisElement = elementCollection[i];
        
        if (thisElement.getAttribute("class") != "selectedLink")
        {
            $addHandler(thisElement, 'mouseover', Vogue.AddOpacityEffect);
            $addHandler(thisElement, 'mouseout',  Vogue.RemoveOpacityEffect);
        }      
    }
    
    //add opacity effect to currently selected items
    Vogue.LoadSelected();
};

//set opactity div elements
Vogue.opacityEffectElement = document.createElement('div');
Vogue.opacityEffectElement.setAttribute("id", "OpacityPH");
Vogue.opacityEffectElement.className = "opacityEffect";

Vogue.opacityEffectStickyElement = document.createElement('div');
Vogue.opacityEffectStickyElement.setAttribute("id", "OpacityPHSticky");
Vogue.opacityEffectStickyElement.className = "opacityEffect";

Vogue.LoadSelected = function()
{
    var elementCollection = Vogue.getElementsByClass("selectedLink",document.forms[0],"li");
    for(var i = 0; i < elementCollection.length; i++)
    {
        elementCollection[i].insertBefore(Vogue.opacityEffectStickyElement, elementCollection[i].firstChild);
    }
};
Vogue.AddOpacityEffect = function()
{
    if (this && Vogue.opacityEffectElement)
    {
        this.insertBefore(Vogue.opacityEffectElement, this.firstChild);
    }
};
Vogue.RemoveOpacityEffect = function()
{
    if (Vogue.opacityEffectElement && Vogue.opacityEffectElement.parentNode)
    {
        Vogue.opacityEffectElement.parentNode.removeChild(Vogue.opacityEffectElement);
    }
};
/* load iframe from image link */
Vogue.LoadIFrame = function(iFramePH, iFrameLink, iFrameSource, timeout)
{
    this.iFramePH = iFramePH;
    this.iFrameLink = iFrameLink;
    this.iFrameSource = iFrameSource;
    this.timeout = timeout;
    this.loaded = false;
    
    this.Load = function()
    {
        if (this.loaded == true)
        {
            return;
        }
        this.loaded = true;
        this.placeholderElement = $get(iFramePH);
        this.callToActionElement = $get(iFrameLink);
        this.iFrame = document.createElement('iframe'); 
        this.iFrame.setAttribute("frameborder", "0");
        this.iFrame.setAttribute("scrolling", "no"); 
        this.iFrame.setAttribute("marginheight", "0"); 
        this.iFrame.setAttribute("marginwidth", "0");
        this.iFrame.src = iFrameSource; 
        this.placeholderElement.appendChild(this.iFrame);
    };
    
    this.PushNotifyFrameLoaded = function(newDomNode)
    {
        this.placeholderElement.appendChild(newDomNode);
        this.placeholderElement.style.visibility = "visible";
        this.placeholderElement.style.display = "block";
        this.callToActionElement.style.display = "none";
    };
    
    this.NotifyFrameLoaded = function()
    {
        setTimeout(
            function()
            {
                $get(iFramePH).style.visibility = "visible";
                $get(iFramePH).style.display = "block";
                $get(iFrameLink).style.display = "none";
            }, this.timeout);
    };
    
    return this;
};

/* BEGIN: Event registration */
$addHandler(document, 'mousedown', Vogue.addOpenArticleOnClick);
$addHandler(window, 'load', Vogue.init); 
$addHandler(window, 'load', Vogue.opacityEffectInit);

if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7)
{
	$addHandler(window, 'resize', Vogue.resetMaxWidth);
}

/* END: Event registration */

/* BEGIN: opacity element fading */
function SetOpacity(elem, opacityAsInt)
{
    var opacityAsDecimal = opacityAsInt;

    if (opacityAsInt > 100)
        opacityAsInt = opacityAsDecimal = 100; 
    else if (opacityAsInt < 0)
        opacityAsInt = opacityAsDecimal = 0; 

    //check browser
    if (Sys.Browser.agent == Sys.Browser.InternetExplorer)
    {        
        if (opacityAsInt < 1)
            opacityAsInt = 1; // IE7 bug, text smoothing cuts out if 0
            
        elem.style.filter  = "alpha(opacity=" + opacityAsInt + ")";
    }
    else
    {       
        opacityAsDecimal /= 100;
        
        if (elem.style.MozOpacity != null) elem.style.MozOpacity = (opacityAsDecimal);
        if (elem.style.KhtmlOpacity != null) elem.style.KhtmlOpacity = (opacityAsDecimal);    
        if (elem.style.opacity != null) elem.style.opacity = (opacityAsDecimal);
    }
}

/* 
elemId - Element ID
fromOpacity - Starting opacity value
toOpacity - End opacity value
time - fade time in milliseconds
fps - frames per second, between 20-30 is usually enough

Example: FadeOpacity("SlidesPH", 1, 99, 500, 30);
*/
function FadeOpacity(elemId, fromOpacity, toOpacity, time, fps)
{
    var steps = Math.ceil(fps * (time / 1000));
    var delta = (toOpacity - fromOpacity) / steps;
    
    FadeOpacityStep(elemId, 0, steps, fromOpacity, 
                    delta, (time / steps));
}

function FadeOpacityStep(elemId, stepNum, steps, fromOpacity, 
                         delta, timePerStep)
{
    SetOpacity(document.getElementById(elemId), 
               Math.round(parseInt(fromOpacity) + (delta * stepNum)));

    if (stepNum < steps)
        setTimeout("FadeOpacityStep('" + elemId + "', " + (stepNum+1) 
                 + ", " + steps + ", " + fromOpacity + ", "
                 + delta + ", " + timePerStep + ");", 
                   timePerStep);
}
/* END: opacity element fading */

/* BEGIN: Client-side paging library */
function Pager(javascriptVariableName, fade, fadeElementId, playButtonId)
{
    this.currentPageIndex = 0;
    this.menu = new PagerMenu(this);
    this.playFrameInterval = 5000;
    this.publicName = javascriptVariableName;
    this.fade = fade == null ? false : fade;
    this.fadeElementId = fadeElementId;
    this.playButtonId = playButtonId;
    this.isPlaying = false;
};
Pager.prototype.addMenuItem = function(menuItem)
{
    menuItem.menu = this.menu;
    this.menu.items.push(menuItem);
}
Pager.prototype.hideAllContentItems = function()
{
    for (var i = 0; i < this.menu.items.length; i++)
    {
        for (var j = 0; j < this.menu.items[i].targetContent.length; j++)
        {
            this.menu.items[i].targetContent[j].element.style.display = "none";
        }
    }
};
Pager.prototype.initPlayButton = function(elementID)
{
    if (elementID && $get(elementID))
    {
        $addHandler($get(elementID), "click", this.togglePlaying);
        $get(elementID).pager = this;
    }
};
Pager.prototype.loadItems = function(elementIDs)
{
    if (elementIDs != null)
    {
        for (var i = 0; i < elementIDs.length; i += 2)
        {
            var menuItem = new PagerMenuItem($get(elementIDs[i]));
            for (var j = 0; j < elementIDs[i + 1].length; j++)
            {
                menuItem.addTargetContentItem(new PagerContentItem($get(elementIDs[i + 1][j])));
            }
            this.addMenuItem(menuItem);
        }
    }
};
Pager.prototype.playToNextPage = function()
{
    if (this.isPlaying == true)
    {
        this.showNextPage();
        if (this.fade == true)
        {
            FadeOpacity(this.fadeElementId, 1, 99, 500, 30);
        }
        this.setNextPageTimeout();
    }
};
Pager.prototype.setNextPageTimeout = function()
{
    if (this.publicName && this.publicName.length > 0)
    {
        setTimeout(this.publicName + ".playToNextPage();", this.playFrameInterval);
    }
    else
    {
        alert("ERROR: You must have set the pager's public name to use the play functionality");
    }
};
Pager.prototype.showNextPage = function()
{
    // update the current page index
    this.currentPageIndex = this.currentPageIndex + 1 >= this.menu.items.length ? 0 : this.currentPageIndex + 1;
    // reset the UI
    this.hideAllContentItems();
    this.menu.unselectAllMenuItems();
    // display new page   
    Sys.UI.DomElement.addCssClass(this.menu.items[this.currentPageIndex].element, "selected");
    this.menu.items[this.currentPageIndex].displayTargetContent();
};
Pager.prototype.togglePlaying = function()
{
    // this is the play button, this.pager is the current pager.
    var thePager = null;
    if (this.pager)
    {
        thePager = this.pager;
    }
    else
    {
        thePager = this;
    }
    thePager.isPlaying = !thePager.isPlaying;
    if (thePager.isPlaying == true && thePager.publicName && thePager.publicName.length > 0)
    {
        thePager.updateCurrentPageIndex();
        thePager.setNextPageTimeout();
    }
    if (thePager.isPlaying == true && $get(thePager.playButtonId).innerHTML == "Play")
    {
        $get(thePager.playButtonId).innerHTML = "Stop";
    }
    else if (thePager.isPlaying == false && $get(thePager.playButtonId).innerHTML == "Stop")
    {
        $get(thePager.playButtonId).innerHTML = "Play";
    }
};
Pager.prototype.updateCurrentPageIndex = function()
{
    var i = 0;
    for (; i < this.menu.items.length; i++)
    {
        if (this.menu.items[i].element.className == "selected")
        {
            this.currentPageIndex = i;
            return;
        }
    }
};
function PagerContentItem(contentItemElement)
{
    this.element = contentItemElement;
};
function PagerMenu(parentPager)
{
    this.items = new Array();
    this.pager = parentPager;
};
PagerMenu.prototype.unselectAllMenuItems = function()
{
    for (var i = 0; i < this.items.length; i++)
    {
        Sys.UI.DomElement.removeCssClass(this.items[i].element, "selected");
    }
};
function PagerMenuItem(menuItemElement)
{
    this.element = menuItemElement;
    this.element.self = this;
    this.targetContent = new Array();
    Sys.UI.DomEvent.addHandler(this.element, "click", this.menuItem_Click);
};
PagerMenuItem.prototype.addTargetContentItem = function(contentItem)
{
    this.targetContent.push(contentItem);
};
PagerMenuItem.prototype.menuItem_Click = function()
{
    this.self.menu.pager.hideAllContentItems();
    this.self.menu.unselectAllMenuItems();
    Sys.UI.DomElement.addCssClass(this, "selected");
    this.self.displayTargetContent();
    
    //check if slideshow is playing
    if (this.self.menu.pager.isPlaying == true)
        this.self.menu.pager.updateCurrentPageIndex();
        
    //check if pager should fade
    if (this.self.menu.pager.fade == true)
        FadeOpacity(this.self.menu.pager.fadeElementId, 1, 99, 500, 30);
};
PagerMenuItem.prototype.displayTargetContent = function()
{
    for (var i = 0; i < this.targetContent.length; i++)
    {
        this.targetContent[i].element.style.display = "block";
    }
};
/* END: Client side paging library */

function FramePopup(){}
FramePopup.Open = function(url,width,height,showScroll)
{
    var tooltip = $find(FramePopup.TooltipId);
    tooltip._element.CondeNetUrl = url;
    if (showScroll==undefined)
        showScroll=false;
    tooltip._element.ShowScroll = showScroll;
    tooltip.set_width(width);
    tooltip.set_height(height);
    tooltip.show();
    $addHandler(document,"click",FramePopup.Close);
};

FramePopup.Close = function()
{
    var tooltip = $find(FramePopup.TooltipId);
    tooltip.hide();
    $removeHandler(document,"click",FramePopup.Close);
};

function TT_OnBeforeTooltipShow(sender, args)
{
    var createIframe = document.createElement("iframe");
    createIframe.setAttribute("src", sender._element.CondeNetUrl);
    createIframe.style.width = "100%";
    createIframe.style.height = "100%";
    createIframe.setAttribute("scrolling", (sender._element.ShowScroll)?"yes":"no");
    createIframe.frameBorder = "0";
    createIframe.setAttribute("marginheight", "0");
    createIframe.setAttribute("marginwidth", "0");
    var tooltip = sender;
    
    tooltip.set_contentElement(createIframe);
}
/* START temporary write flash imported from Vader*/
var blnHasFlash = false;
function CN_HasFlash(FlashVersion)
{
	var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
	var isWin = (navigator.appVersion.indexOf("Windows") != -1) ? true : false;
	
	// Write vbscript detection on ie win. IE on Win 
	if(isIE && isWin)
	{
		document.write('<SCR' + 'IPT LANGUAGE=VBScript\> \n');
		document.write('on error resume next \n');
		document.write('blnHasFlash = (IsObject(CreateObject("ShockwaveFlash.ShockwaveFlash.' + FlashVersion + '"))) \n');  
		document.write('</SCR' + 'IPT\> \n');
	}
	// ElseIf netscape or mac(not version 4.5)
	else if (navigator.plugins) 
	{		
		if (navigator.plugins["Shockwave Flash"])// ...then check flash 3+. 
		{			var strFlashDescription = navigator.plugins["Shockwave Flash"].description;
			var intFlashVersion = parseInt(strFlashDescription.charAt(strFlashDescription.indexOf(".") - 1));
			blnHasFlash = intFlashVersion >= FlashVersion;  
		}
	}

	if (blnHasFlash != true)
		blnHasFlash = false;
		
	return blnHasFlash;
}

function CN_WriteFlash(FlashVersion, FlashSource, FlashWidth, FlashHeight, FlashBgColor, FlashImage, WMode, FlashImageMap)
{
	var Result = CN_HasFlash(FlashVersion);
	
	if (Result)
	{
		document.write('<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=' + FlashVersion + ',0,0,0" width="' + FlashWidth + '" height="' + FlashHeight + '" id="flashtest">');
		document.write('<param name="movie" value="' + FlashSource + '"> ');
		document.write('<param name="quality" value="high"> ');
		document.write('<param name="menu" value="false">');
		document.write('<param name="wmode" value="' + WMode + '" />');
		document.write('<embed swliveconnect="true" name="flashtest" src="' + FlashSource + '" quality="high" menu="false" ');
		document.write('swLiveConnect="false" width="' + FlashWidth + '" height="' + FlashHeight + '"');
		document.write('type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" wmode="' + WMode + '">');
		document.write('</object>');
	}
	else if (FlashImage != '' && FlashImageMap == '')
	{
		document.write('<a href="http://www.macromedia.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" target="_blank">')
		document.write('<img src="' + FlashImage + '" border="0" alt="Click here to get flash player">')
		document.write('</a>')
	}
	else if (FlashImage != '' && FlashImageMap != '')
	{
	    document.write('<img src="' + FlashImage + '" border="0" usemap="#' + FlashImageMap + '" />');
	}
	
	return Result;
}
/*END: temporary write falsh imported from Vader*/

/* BEGIN: pre-load scripts */

if (Sys != undefined)
{
    if (Sys.Browser.agent == Sys.Browser.InternetExplorer && Sys.Browser.version < 7)
    {
	    Vogue.resetMaxWidth();
	    setInterval(Vogue.ensureBottomGlowIsAligned, 1000);
    }
}
else
{
    Vogue.resetMaxWidthOnInit = true;
}
    
/* END: pre-load scripts */