ChangePosition = function() { };

ChangePosition.test = function(q) {
    var positionArray = this.BuildPositionArray(q);
    this.SetPositions(positionArray);
}

ChangePosition.OnLoad = function() {
    var positionArray = this.BuildPositionArray(parseInt(LayoutOptions.DefaultPosition));
    this.SetPositions(positionArray);
}

ChangePosition.BuildPositionArray = function(quadrant) {
    var changeArray = new Array();

    var vW = LayoutOptions.VideoWidth;
    var vH = LayoutOptions.VideoHeight;
    var sW = LayoutOptions.SlideWidth; // padding surrounding the currentslide
    var sH = LayoutOptions.SlideHeight;
    var pW = LayoutOptions.PlayerWidth;
    var pH = LayoutOptions.PlayerHeight;
    var adBannerHeight = 0;
    var adBannerWidth = 0;
    var titleBannerHeight = 0;
    var titleBannerWidth = 0;

    if (LayoutOptions.Images["AdBanner"]) {
        adBannerHeight = parseInt(LayoutOptions.Images["AdBanner"].Height);
        adBannerWidth = parseInt(LayoutOptions.Images["AdBanner"].Width);
    }
    if (LayoutOptions.Images["TitleBanner"]) {
        titleBannerHeight = parseInt(LayoutOptions.Images["TitleBanner"].Height);
        titleBannerWidth = parseInt(LayoutOptions.Images["TitleBanner"].Width);
    }

    // see if we have a value for these... otherwise use the following values.
    var btnPollWidth = 40;
    var btnEmailWidth = 40;
    var btnLinksWidth = 40;
    var btnAskButtonWidth = 40;
    var btnHelpWidth = $('btnHelp').offsetWidth;
    var btnPlayPauseWidth = 30;
    var btnSkipBackWidth = 30;
    var btnMuteWidth = 15;
    var btnCCWidth = 30;
    var btnFullScreenWidth = 30;
    if (mPlayer.PlayerDetect.GetPlayerType() == SfKernel.MediaPlayerType.SL1) {
        btnFullScreenWidth = 0;
    }
    var liveIndicatorWidth = 20;
    var playerControlsPadding = 4;
    var statusBarHeight = 16;
    var playerControlsHeight = 42;
    var videoElementPadding = 4;
    var playerControlsButtonSpacing = 0;
    var playerSliderPadding = playerControlsPadding * 2;
    var playerSliderWidth = vW - (playerSliderPadding * 2);
    var volumeSliderWidth = 33;
    var speedControlWidth = 35;
    var languageSelectionAreaWidth = 40;
    var commandBarPadding = 4;
    var linksPanelWidth = 340;
    var playerPadding = 3;
    var playerPaddingRight = 6;
    var playerPaddingLeft = 2;
    var playerMarginBottom = 1;
    var playerMarginRight = 4;
    var playerMarginLeft = 4;
    var commandBarButtonSpacing = -3;
    var commandBarHeight = 28;
    var currentSlideAreaTopPadding = 4;
    var currentSlideAreaLeftPadding = 4;
    var currentSlideAreaBorderThickness = 1;
    var currentSlideAreaLeft = ((pW - (vW + sW + playerPadding * 2)) / 2) + vW; // obsolete?
    var presentationCardBorderThickness = 1;
    var applicationVersionAreaWidth = 83;
    var slideBrowserWidth = sW;
    var slideBrowserHeight = sH - (slideBrowserToolbarHeight - currentSlideAreaTopPadding);
    var slideBrowserWidth = 200;
    var slideBrowserHeight = 100 - (slideBrowserToolbarHeight - currentSlideAreaTopPadding);
    var slideBrowserToolbarHeight = 26;
    var thumbNailPropertiesContainerWidth = 190;
    var thumbNailPropertiesContainerHeight = 112;

    var totalMediaWidth = 0;
    var playerRemainingSpace = 0;
    var presentationCardWidth = pW - vW - 8;

    if (sW > 0) { totalMediaWidth = sW + (currentSlideAreaLeftPadding * 2) + vW + 2; }
    else { totalMediaWidth = presentationCardWidth + (currentSlideAreaLeftPadding * 2) + vW + 2; }
    playerRemainingSpace = Math.floor((pW - totalMediaWidth) / 3);

    if (playerRemainingSpace < 0) {
        playerRemainingSpace = 0
    }
    else {
        playerMarginLeft = playerRemainingSpace;
        playerMarginRight = playerRemainingSpace;
        playerPaddingLeft = playerRemainingSpace;
        currentSlideAreaLeft = (2 * playerRemainingSpace) + vW + 2;
    }

    var tabsLeft = currentSlideAreaLeft + 4;
    var tabsRight = tabsLeft;
    if ($("btnSlideShowImg")) {
        tabsRight += $("btnSlideShowImg").offsetWidth;
    }
    if ($("btnSlideListImg")) {
        tabsRight += $("btnSlideListImg").offsetWidth;
    }
    var currentSlideToolbarWidth = 50;
    var slideTickerWidth;
    if ($("SlideTicker")) {
        slideTickerWidth = $("SlideTicker").offsetWidth;
    }
    var remainingCommandBarWidth = (pW - tabsRight - applicationVersionAreaWidth - btnHelpWidth - currentSlideToolbarWidth);
    var remainingCommandBarSpacing = Math.floor((remainingCommandBarWidth - slideTickerWidth) / 2);
    if (remainingCommandBarWidth < 0) { remainingCommandBarSpacing = 0 }
    var presentationCardTop = titleBannerHeight + commandBarHeight + videoElementPadding + vH + statusBarHeight + playerControlsHeight + playerRemainingSpace;
    var presentationCardHeight = pH - (titleBannerHeight + commandBarHeight + videoElementPadding + vH + statusBarHeight + playerControlsHeight + playerRemainingSpace) - playerMarginBottom;
    var presentationCardFooterHeight = 16;
    var speedControlRemainingSpace = (vW - playerControlsPadding - btnFullScreenWidth - volumeSliderWidth - playerControlsButtonSpacing - btnMuteWidth - btnCCWidth - 4) - (playerControlsPadding + btnPlayPauseWidth + btnSkipBackWidth + (2 * playerControlsButtonSpacing));
    var speedControlLeft = ((speedControlRemainingSpace / 2) - (speedControlWidth / 2)) + (playerControlsPadding + btnPlayPauseWidth + btnSkipBackWidth + (2 * playerControlsButtonSpacing));
    var linksPanelHeight = sH == 0 ? (vH + playerControlsHeight - 18) : sH - 18;
    linksPanelHeight = linksPanelHeight > 280 ? 280 : linksPanelHeight;

    var basePositionArray = new Array(
    "backgroundImage,w," + pW,
    "backgroundImage,h," + pH,
    "PageContent,w," + pW,
    "PageContent,h," + pH,
    // banners
    "AdBanner,w," + adBannerWidth,
    "AdBanner,h," + adBannerHeight,
    "AdBanner,l," + titleBannerWidth,
    "AdBannerImage,w," + adBannerWidth,
    "AdBannerImage,h," + adBannerHeight,
    "TitleBanner,w," + titleBannerWidth,
    "TitleBanner,h," + titleBannerHeight,
    "TitleBannerImage,w," + titleBannerWidth,
    "TitleBannerImage,h," + titleBannerHeight,
    "CommandBar,t," + titleBannerHeight,
    "CommandBar,h," + commandBarHeight,
    "CommandBar,w," + pW,
    "InnerBackground,w," + pW,
    "InnerBackground,h," + (pH - titleBannerHeight - commandBarHeight),
    "InnerBackground,t," + (titleBannerHeight + commandBarHeight),

    "EmbeddedPlayer,w," + vW,
    "EmbeddedPlayer,h," + vH,
    "VideoContainer,w," + vW,
    "VideoContainer,h," + vH,
    "PlayerContainer,w," + vW,
    "PlayerControls,w," + vW,
    "StatusBar,w," + vW,
    "SamiDropDownArea,w," + vW,
    "PlayerAudioOnlyImage,w," + vW,
    "PlayerAudioOnlyImage,h," + vH,
    "PlayerNotStartedImage,w," + vW,
    "PlayerNotStartedImage,h," + vH,

    // playerControls
    "PlayerSlider,w," + playerSliderWidth,
    "PlayerSlider,l," + playerSliderPadding,
    "PlayerSlider_positionGuide,w," + playerSliderWidth,
    // if btnFullScreen exists... subtract its width the below
    "VolumeSlider,l," + (vW - volumeSliderWidth - btnFullScreenWidth - playerControlsPadding - 3),
    "VolumeSlider,w," + volumeSliderWidth,
    "VolumeSlider_positionGuide,w," + volumeSliderWidth,
    "LanguageSelectionArea,r," + ((vW + languageSelectionAreaWidth) / 2),
    // if btnFullScreen exists... subtract its width the below
    "btnMute,l," + (vW - playerControlsPadding - btnFullScreenWidth - volumeSliderWidth - playerControlsButtonSpacing - btnMuteWidth - 5),
    "btnCC,l," + (vW - playerControlsPadding - btnFullScreenWidth - volumeSliderWidth - playerControlsButtonSpacing - btnMuteWidth - btnCCWidth - 6),
    "btnFullScreen,l," + (vW - playerControlsPadding - btnFullScreenWidth),
    "btnPlayPause,l," + playerControlsPadding,
    "btnSkipback,l," + (playerControlsPadding + btnPlayPauseWidth + playerControlsButtonSpacing),
    "PlayerSpeedControl,l," + speedControlLeft,

    // windows (check that its not wider than the current slide, if it is, downsize it.)
    "AskQuestionArea,t," + (titleBannerHeight + commandBarHeight),
    "EmailInviteArea,t," + (titleBannerHeight + commandBarHeight),
    "LinksPanel,t," + (titleBannerHeight + commandBarHeight),

    // command bar
    "btnPoll,t," + (titleBannerHeight),
    "btnAskButton,t," + (titleBannerHeight),
    "btnEmail,t," + (titleBannerHeight),
    "btnLinks,t," + (titleBannerHeight),
    "LiveIndicatorArea,t," + (titleBannerHeight + 2),
    "LiveIndicatorAreaImg,t," + (titleBannerHeight + 2),
    "SlideTicker,t," + (titleBannerHeight),
    "btnHelp,t," + (titleBannerHeight + 1),
    "btnHelpImg,t," + (titleBannerHeight + 1),
    "ApplicationVersionArea,t," + (titleBannerHeight + 2),
    "SlideTabs,t," + (titleBannerHeight + 3)
    );
    changeArray = basePositionArray.concat(basePositionArray);

    if ((vH / vW) < .75) // widescreen player
    {
        if (quadrant == 1 || quadrant == 4) {
            playerPadding = 0;
        }
        else {
            playerPadding = 4;
            playerPaddingLeft = 0;
            playerMarginRight = 2;
        }
    }

    if (sW > 0 && sH > 0) // if slide area is shown
    {
        var slidePositionArray = new Array(
        "CurrentSlideArea,h," + sH,
        "CurrentSlideArea,w," + sW,
        "CurrentSlideArea,t," + (titleBannerHeight + commandBarHeight - 3),
        "CurrentSlideAreaSlideImage,h," + sH,
        "CurrentSlideAreaSlideImage,w," + sW,
        "CurrentSlideAreaSlideDescription,h," + sH,
        "CurrentSlideAreaSlideDescription,w," + sW,

        "ThumbNailsArea,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "thumbnailToolbar,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "ChapterPointsArea,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "ThumbNailsArea,h," + (sH + (2 * currentSlideAreaTopPadding)),
        "ThumbNailsArea,t," + (titleBannerHeight + commandBarHeight - 3),
        "thumbNailSlidesContainer,h," + (sH - slideBrowserToolbarHeight + (2 * currentSlideAreaTopPadding)),
        "thumbNailSlidesContainer,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "ChapterPointsArea,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "ChapterPointsArea,h," + (sH + (2 * currentSlideAreaTopPadding) - slideBrowserToolbarHeight),
        "TextSlideSorterArea,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "TextSlideSorterArea,h," + (sH + (2 * currentSlideAreaTopPadding) - slideBrowserToolbarHeight),
        "TextSlideSorterAreaInside,w," + (sW + (2 * currentSlideAreaLeftPadding)),
        "TextSlideSorterAreaInside,h," + (sH + (2 * currentSlideAreaTopPadding) - slideBrowserToolbarHeight),

        "EmailInviteArea,w," + (sW - 20),
        "emailInviteArea_emailInviteMessageFieldtxt,h," + (sH - 179),
        "emailInviteArea_emailInviteFromFieldtxt,w," + (sW - 100),
        "emailInviteArea_emailInviteToFieldtxt,w," + (sW - 100),
        "emailInviteArea_emailInviteSubjectFieldtxt,w," + (sW - 100),
        "emailInviteStartingPoint,w," + (sW - 100),
        "emailInviteArea_emailInviteMessageFieldtxt,w," + (sW - 100),
        "AskQuestionArea,w," + (sW - 20),
        "askQuestionArea_askQuestionMessageFieldtxt,h," + (sH - 150),
        "askQuestionArea_askQuestionNameFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionEmailFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionSubjectFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionMessageFieldtxt,w," + (sW - 100),
        "emailInviteStartingPoint,w," + (sW - 100),
        "LinksPanelContainer,h," + linksPanelHeight
        )
        changeArray = changeArray.concat(slidePositionArray);
    }
    if (quadrant == 1 || quadrant == 4) {
        // players with video on left
        var leftPositionArray = new Array(
        "PlayerContainer,l," + playerPaddingLeft,
        "btnPoll,l," + playerPadding,
        "btnAskButton,l," + (commandBarPadding + btnPollWidth + commandBarButtonSpacing),
        "btnEmail,l," + (commandBarPadding + btnPollWidth + btnAskButtonWidth + (2 * commandBarButtonSpacing)),
        "btnLinks,l," + (commandBarPadding + btnPollWidth + btnAskButtonWidth + btnEmailWidth + (3 * commandBarButtonSpacing)),
        "LiveIndicatorArea,l," + (commandBarPadding + vW - liveIndicatorWidth - playerPadding - 5),
        "LiveIndicatorAreaImg,l," + (commandBarPadding + vW - liveIndicatorWidth - playerPadding - 5),
        "SlideTicker,l," + (tabsRight + remainingCommandBarSpacing),
        "btnHelp,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - (2 * commandBarButtonSpacing)),
        "btnHelpImg,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - (2 * commandBarButtonSpacing)),
        "ApplicationVersionArea,l," + (pW - applicationVersionAreaWidth + 2),
        "ApplicationVersionArea,backgroundImage,spinnerL.gif",
        "SlideTabs,l," + tabsLeft,
        "CurrentSlideAreaToolbuttonContainer,l," + (sW - btnHelpWidth - applicationVersionAreaWidth - currentSlideToolbarWidth - (3 * commandBarButtonSpacing)),
        "PresentationCardArea,l," + playerPaddingLeft,
        "ThumbNailsArea,l," + currentSlideAreaLeft,
        "CurrentSlideArea,l," + currentSlideAreaLeft,
        "LinksPanel,l," + (currentSlideAreaLeft + 14),
        "AskQuestionArea,l," + (currentSlideAreaLeft + 14),
        "EmailInviteArea,l," + (currentSlideAreaLeft + 14)
        );
        changeArray = changeArray.concat(leftPositionArray);
    }

    if (quadrant == 3 || quadrant == 2) {
        // players with video on right
        var tabsLeft = ((playerMarginLeft + sW) - $("btnSlideShowImg").offsetWidth - $("btnSlideListImg").offsetWidth);
        var helpRight = (playerMarginLeft + applicationVersionAreaWidth + (3 * commandBarButtonSpacing) + 5);
        var rightPositionArray = new Array(
        "PlayerContainer,l," + (pW - playerMarginRight - vW - 1),
        "PresentationCardArea,l," + (pW - playerMarginRight - vW - 1),
        "btnPoll,l," + (pW - playerMarginRight - btnPollWidth),
        "btnAskButton,l," + (pW - playerMarginRight - btnPollWidth - btnAskButtonWidth - commandBarButtonSpacing),
        "btnEmail,l," + (pW - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnEmailWidth - (2 * commandBarButtonSpacing)),
        "btnLinks,l," + (pW - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnEmailWidth - btnLinksWidth - (3 * commandBarButtonSpacing)),
        "LiveIndicatorArea,l," + (pW - vW + 2),
        "LiveIndicatorAreaImg,l," + (pW - vW + 2),
        "ThumbNailsArea,l," + playerPaddingLeft,
        "CurrentSlideArea,l," + playerPaddingLeft,
        "ApplicationVersionArea,l," + 0,
        "ApplicationVersionArea,backgroundImage,spinnerR.gif",
        "btnHelp,l," + helpRight,
        "btnHelpImg,l," + helpRight,
        "CurrentSlideAreaToolbuttonContainer,l," + (playerMarginLeft + btnHelpWidth + applicationVersionAreaWidth + (2 * commandBarButtonSpacing)),
        "SlideTicker,l," + (playerMarginLeft + applicationVersionAreaWidth + (2 * commandBarButtonSpacing) + currentSlideToolbarWidth + (2 * Math.floor((this.getRemainingSpaceBetweenElements(helpRight, tabsLeft) - currentSlideToolbarWidth - slideTickerWidth) / 3))),
        "SlideTabs,l," + (tabsLeft + 6),
        "LinksPanel,l," + (playerPaddingLeft + 14),
        "AskQuestionArea,l," + (playerPaddingLeft + 14),
        "EmailInviteArea,l," + (playerPaddingLeft + 14)
        );
        changeArray = changeArray.concat(rightPositionArray);
    }

    if (quadrant == 1 || quadrant == 2) {
        // values for Top Viewers
        var topPositionArray = new Array(
        "PlayerContainer,t," + (titleBannerHeight + commandBarHeight + 2),
        "PresentationCardArea,t," + presentationCardTop
        );
        changeArray = changeArray.concat(topPositionArray);
    }

    if (quadrant == 3 || quadrant == 4) {
        // values for Bottom Viewers
        var bottomPositionArray = new Array(
        "PlayerContainer,t," + (pH - playerMarginBottom - (videoElementPadding + vH + statusBarHeight + playerControlsHeight)),
        "PresentationCardArea,t," + (titleBannerHeight + commandBarHeight + 4)
        );
        changeArray = changeArray.concat(bottomPositionArray);
    }

    if ($('VendorLogo')) {
        var bannerSpecificPositionArray = new Array(
        "backgroundImage,h," + pH,
        "VendorLogo,t," + (pH - LayoutOptions.Images["VendorLogo"].Height - playerMarginBottom)
        );
        if (quadrant == 1 || quadrant == 4) {
            var bannerLeftArray = new Array(
            "VendorLogo,l," + (currentSlideAreaLeft + (((sW + 6) - $('VendorLogo').offsetWidth) / 2))
            );
            changeArray = changeArray.concat(bannerLeftArray);
        }
        if (quadrant == 2 || quadrant == 3) {
            var bannerRightArray = new Array(
            "VendorLogo,l," + (playerPaddingLeft + (((sW + 6) - $('VendorLogo').offsetWidth) / 2))
            );
            changeArray = changeArray.concat(bannerRightArray);
        }
        changeArray = changeArray.concat(bannerSpecificPositionArray);
    }

    // special cases ///////////////
    if (vW == '200' && sW == '1024') {
        var tinyVideoArray = new Array(
        "btnCC,l," + 98,
        "btnPlayPause,l," + 0,
        "btnSkipback,l," + 24,
        "PlayerSpeedControl,l," + 54,
        "btnCC,l," + 89,
        "btnMute,l," + 116,
        "VolumeSlider,l," + 134,
        "btnFullScreen,l," + 170
        );
        changeArray = changeArray.concat(tinyVideoArray);
        $('PresentationCardAreaDurationLabel').style.display = 'none';
        $('PresentationCardAreaDurationText').style.display = 'none';

        if (mPlayer.PlayerDetect.GetPlayerType() == SfKernel.MediaPlayerType.SL1) {
            var tinyVideoSL1Array = new Array(
            "btnCC,l," + 108,
            "btnMute,l," + 140,
            "VolumeSlider,l," + 158
            );
            changeArray = changeArray.concat(tinyVideoSL1Array);
        }
        else {
            var tinyVideoWMArray = new Array("PlayerSpeedControl,l," + 56);
            changeArray = changeArray.concat(tinyVideoWMArray);
        }
    }

    if (vW == '400' && sW == '360') {
        var remainingWidth = sW + 15;
        $('thumbNailViewButtonSmallThumbnails').style.display = 'none';
        var compactViewerSpecialArray = new Array(
            "EmailInviteArea,w," + remainingWidth,
            "AskQuestionArea,w," + remainingWidth,
            "emailInviteDialogInternalContent,w," + (sW + 7),
            "askQuestionDialogInternalContent,w," + (sW + 7),
            "EmailInviteArea,t," + (titleBannerHeight + commandBarHeight - 5),
            "AskQuestionArea,t," + (titleBannerHeight + commandBarHeight - 5),
            "emailInviteReturnDiv,w," + remainingWidth,
            "askQuestionReturnDiv,w," + remainingWidth,
            "LinksPanel,w," + remainingWidth,
            "emailInviteReturnDiv,marginLeft," + (Math.floor(remainingWidth / 2) * -1),
            "askQuestionReturnDiv,marginLeft," + (Math.floor(remainingWidth / 2) * -1),
            "emailInviteArea_emailInviteMessageFieldtxt,h," + (sH - 86),
            "emailInviteArea_emailInviteFromFieldtxt,w," + (remainingWidth - 82),
            "emailInviteArea_emailInviteToFieldtxt,w," + (remainingWidth - 82),
            "emailInviteArea_emailInviteSubjectFieldtxt,w," + (remainingWidth - 82),
            "emailInviteStartingPoint,w," + (remainingWidth - 82),
            "emailInviteArea_emailInviteMessageFieldtxt,w," + (remainingWidth - 82),
            "askQuestionArea_askQuestionMessageFieldtxt,h," + (sH - 57),
            "askQuestionArea_askQuestionNameFieldtxt,w," + (remainingWidth - 82),
            "askQuestionArea_askQuestionEmailFieldtxt,w," + (remainingWidth - 82),
            "askQuestionArea_askQuestionSubjectFieldtxt,w," + (remainingWidth - 82),
            "askQuestionArea_askQuestionMessageFieldtxt,w," + (remainingWidth - 82),
            "emailInviteStartingPoint,w," + (remainingWidth - 82),
            "thumbNailViewButtonLargeThumbnails,l," + 18,
            "thumbNailViewButtonChapters,l," + 36,
            "ApplicationVersionArea,t," + (titleBannerHeight + 2),
            "PresentationCardArea,t," + (titleBannerHeight + commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2),
        //"btnHelp,t,"     + (titleBannerHeight + 3),
            "PresentationCardArea,w," + (sW + (currentSlideAreaLeftPadding * 2)),
            "PresentationCardArea,h," + (pH - (titleBannerHeight + commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2) - playerMarginBottom - 3),
            "PresentationCardAreaScrollDiv,h," + (pH - (titleBannerHeight + commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2) - playerMarginBottom - presentationCardFooterHeight)
        );
        changeArray = changeArray.concat(compactViewerSpecialArray);

        if (quadrant == 1 || quadrant == 4) {
            var compactViewerSpecialLeftArray = new Array(
            "PresentationCardArea,l," + currentSlideAreaLeft,
            "ApplicationVersionArea,l," + 0,
            "ApplicationVersionArea,backgroundImage,spinnerR.gif",
            "btnHelp,l," + (playerMarginLeft + applicationVersionAreaWidth + (2 * commandBarButtonSpacing) + 4),
            "btnPoll,l," + (playerMarginLeft + applicationVersionAreaWidth + btnHelpWidth + (3 * commandBarButtonSpacing) + 6),
            "btnAskButton,l," + (playerMarginLeft + applicationVersionAreaWidth + btnHelpWidth + btnPollWidth + (4 * commandBarButtonSpacing) + 6),
            "btnEmail,l," + (playerMarginLeft + applicationVersionAreaWidth + btnHelpWidth + btnPollWidth + btnAskButtonWidth + (5 * commandBarButtonSpacing) + 6),
            "btnLinks,l," + (playerMarginLeft + applicationVersionAreaWidth + btnHelpWidth + btnPollWidth + btnAskButtonWidth + btnLinksWidth + (6 * commandBarButtonSpacing) + 6),
            "SlideTabs,l," + (tabsLeft - 3),
            "SlideTicker,l," + (tabsRight + (sW - currentSlideToolbarWidth - slideTickerWidth - 80) / 2),
            "CurrentSlideAreaToolbuttonContainer,l," + (sW - currentSlideToolbarWidth + 10),
            "EmailInviteArea,l," + (currentSlideAreaLeft - 4),
            "AskQuestionArea,l," + (currentSlideAreaLeft - 4),
            "LinksPanel,l," + (currentSlideAreaLeft - 4)
            );
            changeArray = changeArray.concat(compactViewerSpecialLeftArray);
        }
        if (quadrant == 2 || quadrant == 3) {
            var compactViewerSpecialRightArray = new Array(
            "PresentationCardArea,l," + playerPaddingLeft,
            "ApplicationVersionArea,l," + (pW - applicationVersionAreaWidth - playerMarginRight + 4),
            "ApplicationVersionArea,backgroundImage,spinnerR.gif",
            "btnHelp,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - (2 * commandBarButtonSpacing)),
            "btnPoll,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - btnPollWidth - (3 * commandBarButtonSpacing)),
            "btnAskButton,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - (4 * commandBarButtonSpacing)),
            "btnEmail,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnLinksWidth - (5 * commandBarButtonSpacing)),
            "btnLinks,l," + (pW - btnHelpWidth - applicationVersionAreaWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnLinksWidth - btnEmailWidth - (6 * commandBarButtonSpacing)),
            "SlideTabs,l," + (tabsLeft + 5),
            "SlideTicker,l," + (tabsLeft - slideTickerWidth - 24),
            "CurrentSlideAreaToolbuttonContainer,l," + (playerMarginLeft),
            "EmailInviteArea,l," + (playerMarginLeft - 5),
            "AskQuestionArea,l," + (playerMarginLeft - 5),
            "LinksPanel,l," + (playerMarginLeft - 5)
            );
            changeArray = changeArray.concat(compactViewerSpecialRightArray);
        }
    }
    else if (sW == 0 || sH == 0) {
        //var presentationCardWidth = pW - vW - playerMarginLeft - playerMarginRight - playerRemainingSpace;
        var presentationCardHeight = vH + statusBarHeight + playerControlsHeight;
        var noSlidesSpecialArray = new Array(
            "ApplicationVersionArea,t," + (titleBannerHeight + 2),
            "PresentationCardArea,t," + (titleBannerHeight + 2 + commandBarHeight),
            "ThumbNailsArea,t," + (titleBannerHeight + 10 + commandBarHeight),
        //"btnHelp,t,"     + (titleBannerHeight + 3),
            "PresentationCardArea,w," + presentationCardWidth,
            "PresentationCardArea,h," + presentationCardHeight,
            "PresentationCardAreaScrollDiv,h," + (vH + statusBarHeight + playerControlsHeight + 1 - presentationCardFooterHeight),
            "LinksPanel,w," + (presentationCardWidth),
            "EmailInviteArea,w," + (presentationCardWidth),
            "emailInviteReturnDiv,w," + (presentationCardWidth),
            "emailInviteReturnDiv,marginLeft," + (Math.floor((presentationCardWidth) / 2) * -1),
            "emailInviteArea_emailInviteMessageFieldtxt,h," + (presentationCardHeight - 179),
            "emailInviteArea_emailInviteFromFieldtxt,w," + (presentationCardWidth - 80),
            "emailInviteArea_emailInviteToFieldtxt,w," + (presentationCardWidth - 80),
            "emailInviteArea_emailInviteSubjectFieldtxt,w," + (presentationCardWidth - 80),
            "emailInviteStartingPoint,w," + (presentationCardWidth - 80),
            "emailInviteArea_emailInviteMessageFieldtxt,w," + (presentationCardWidth - 80),
            "AskQuestionArea,w," + (presentationCardWidth),
            "askQuestionReturnDiv,w," + (presentationCardWidth),
            "askQuestionReturnDiv,marginLeft," + (Math.floor((presentationCardWidth) / 2) * -1),
            "askQuestionArea_askQuestionMessageFieldtxt,h," + (presentationCardHeight - 150),
            "askQuestionArea_askQuestionNameFieldtxt,w," + (presentationCardWidth - 80),
            "askQuestionArea_askQuestionEmailFieldtxt,w," + (presentationCardWidth - 80),
            "askQuestionArea_askQuestionSubjectFieldtxt,w," + (presentationCardWidth - 80),
            "askQuestionArea_askQuestionMessageFieldtxt,w," + (presentationCardWidth - 80),
            "emailInviteStartingPoint,w," + (presentationCardWidth - 80),
            "LinksPanelContainer,h," + linksPanelHeight
        );
        changeArray = changeArray.concat(noSlidesSpecialArray);

        if (quadrant == 1 || quadrant == 4) {
            var noSlidesSpecialLeftArray = new Array(
            "ThumbNailsArea,l," + playerMarginLeft,
            "PresentationCardArea,l," + (vW + 2 + playerRemainingSpace),
            "ApplicationVersionArea,l," + (pW - applicationVersionAreaWidth),
            "ApplicationVersionArea,backgroundImage,spinnerR.gif",
            "btnHelp,l," + (pW - applicationVersionAreaWidth - (3 * commandBarButtonSpacing) - btnHelpWidth - 9),
            "btnPoll,l," + (playerMarginLeft + (3 * commandBarButtonSpacing) + 12),
            "btnAskButton,l," + (playerMarginLeft + btnPollWidth + (4 * commandBarButtonSpacing) + 12),
            "btnEmail,l," + (playerMarginLeft + btnPollWidth + btnAskButtonWidth + (5 * commandBarButtonSpacing) + 12),
            "btnLinks,l," + (playerMarginLeft + btnPollWidth + btnAskButtonWidth + btnLinksWidth + (6 * commandBarButtonSpacing) + 12),
            "EmailInviteArea,l," + (vW + playerMarginLeft),
            "AskQuestionArea,l," + (vW + playerMarginLeft),
            "LinksPanel,l," + (vW + playerMarginLeft)
            );
            changeArray = changeArray.concat(noSlidesSpecialLeftArray);
        }
        if (quadrant == 2 || quadrant == 3) {
            var noSlidesSpecialRightArray = new Array(
            "ThumbNailsArea,l," + (pW - playerMarginRight - 110),
            "PresentationCardArea,l," + (playerPaddingLeft - 1),
            "ApplicationVersionArea,l," + playerMarginLeft,
            "ApplicationVersionArea,backgroundImage,spinnerL.gif",
            "btnHelp,l," + (pW - btnHelpWidth - playerMarginRight - (2 * commandBarButtonSpacing) - 4),
            "btnPoll,l," + (pW - btnHelpWidth - playerMarginRight - btnPollWidth - (3 * commandBarButtonSpacing)),
            "btnAskButton,l," + (pW - btnHelpWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - (4 * commandBarButtonSpacing)),
            "btnEmail,l," + (pW - btnHelpWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnLinksWidth - (5 * commandBarButtonSpacing)),
            "btnLinks,l," + (pW - btnHelpWidth - playerMarginRight - btnPollWidth - btnAskButtonWidth - btnLinksWidth - btnEmailWidth - (6 * commandBarButtonSpacing)),
            "EmailInviteArea,l," + (0),
            "AskQuestionArea,l," + (0),
            "LinksPanel,l," + (0)
            );
            changeArray = changeArray.concat(noSlidesSpecialRightArray);
        }
        this.HideSlides();
    }
    else {
        var presentationCardArray = new Array(
            "PresentationCardArea,w," + vW,
            "PresentationCardArea,h," + (presentationCardHeight - 3),
            "PresentationCardAreaScrollDiv,h," + (presentationCardHeight - presentationCardFooterHeight - 3)
        );
        changeArray = changeArray.concat(presentationCardArray);
    }
    return changeArray;
}

ChangePosition.HideSlides = function() {
    $('SlideTicker').style.display = 'none';
    $('CurrentSlideArea').style.display = 'none';
    $('SlideTabs').style.display = 'none';
    $('ThumbNailsArea').style.display = 'none';
}

ChangePosition.SetPositions = function(changeArray) {
    for (var changeNum = 0; changeNum < changeArray.length; changeNum++) {
        var thisChange = changeArray[changeNum].split(",");
        if (document.getElementById(thisChange[0]) != null) {
            switch (thisChange[1]) {
                case "h":
                    this.setHeight(thisChange[0], thisChange[2]);
                    break;
                case "w":
                    this.setWidth(thisChange[0], thisChange[2]);
                    break;
                case "l":
                    this.setPos(thisChange[0], 'left', thisChange[2]);
                    break;
                case "r":
                    this.setPos(thisChange[0], 'right', thisChange[2]);
                    break;
                case "t":
                    this.setPos(thisChange[0], 'top', thisChange[2]);
                    break;
                case "marginTop":
                    this.setMargin(thisChange[0], 'top', thisChange[2]);
                    break;
                case "marginRight":
                    this.setMargin(thisChange[0], 'right', thisChange[2]);
                    break;
                case "marginBottom":
                    this.setMargin(thisChange[0], 'bottom', thisChange[2]);
                    break;
                case "marginLeft":
                    this.setMargin(thisChange[0], 'left', thisChange[2]);
                    break;
                case "paddingTop":
                    this.setPadding(thisChange[0], 'top', thisChange[2]);
                    break;
                case "paddingRight":
                    this.setPadding(thisChange[0], 'right', thisChange[2]);
                    break;
                case "paddingBottom":
                    this.setPadding(thisChange[0], 'bottom', thisChange[2]);
                    break;
                case "paddingLeft":
                    this.setPadding(thisChange[0], 'left', thisChange[2]);
                    break;
                case "backgroundImage":
                    this.backgroundImageSwap(thisChange[0], thisChange[2]);
                    break;
                case "img":
                    this.imgSwap(thisChange[0], thisChange[2]);
                    break;
                case "vis":
                    this.setVisible(thisChange[0], thisChange[2]);
                    break;
                case "cssW":
                    this.setCSS(thisChange[0], 'width', thisChange[2]);
                    break;
                case "cssL":
                    this.setCSS(thisChange[0], 'left', thisChange[2]);
                    break;
            }
        }
    }
}

ChangePosition.setMargin = function(e, dir, val) {
    var E = $(e);
    switch (dir) {
        case "top":
            E.style.marginTop = this.withPX(val);
            break;
        case "right":
            E.style.marginRight = this.withPX(val);
            break;
        case "bottom":
            E.style.marginBottom = this.withPX(val);
            break;
        case "left":
            E.style.marginLeft = this.withPX(val);
            break;
    }
}


ChangePosition.setPadding = function(e, dir, val) {
    var E = $(e);
    switch (dir) {
        case "top":
            E.style.paddingTop = this.withPX(val);
            break;
        case "right":
            E.style.paddingRight = this.withPX(val);
            break;
        case "bottom":
            E.style.paddingBottom = this.withPX(val);
            break;
        case "left":
            E.style.paddingLeft = this.withPX(val);
            break;
    }
}

ChangePosition.getRemainingSpaceBetweenElements = function(leftStop, rightStop) {
    var spacing = (rightStop - leftStop);
    return spacing;
}

ChangePosition.withPX = function(val) { return val + "px"; }
ChangePosition.setFloat = function(e, f) {
    $(e).style.cssFloat = f;
    $(e).style.styleFloat = f; /* for old IE */
}

ChangePosition.setZ = function(e, zIndex) { $(e).style.zIndex = zIndex; }
ChangePosition.setHeight = function(e, height) { $(e).style.height = this.withPX(height); }
ChangePosition.setWidth = function(e, width) { $(e).style.width = this.withPX(width); }
ChangePosition.setPos = function(e, direction, val) {
    var E = $(e);
    switch (direction) {
        case "top":
            E.style.top = this.withPX(val);
            break;
        case "right":
            E.style.right = this.withPX(val);
            break;
        case "bottom":
            E.style.bottom = this.withPX(val);
            break;
        case "left":
            E.style.left = this.withPX(val);
            break;
    }
}

ChangePosition.imgSwap = function(e, ImageVariant) {
    /* parses img url, returns old url but with new filename */
    var imageElement = $(e);
    var imgUrl = imageElement.src;
    imgUrl = imgUrl.split("/");
    var oldFileName = imgUrl.pop();
    imgUrl = imgUrl.join("/");
    imgUrl = imgUrl + "/" + ImageVariant;
    imageElement.src = imgUrl;
}

ChangePosition.setCSS = function(theClass, element, value) {
    var cssRules;
    if (document.all) {
        cssRules = 'rules';
    }
    else if (document.getElementById) {
        cssRules = 'cssRules';
    }
    for (var s = 0; s < document.styleSheets.length; s++) {
        for (var r = 0; r < document.styleSheets[s][cssRules].length; r++) {
            if (document.styleSheets[s][cssRules][r].selectorText == theClass) {
                document.styleSheets[s][cssRules][r].style[element] = value;
            }
        }
    }
}

ChangePosition.backgroundImageSwap = function(e, ImageVariant) {
    $(e).style.backgroundImage = 'url(' + LayoutOptions.ThemeImageBase + '/' + ImageVariant + ')';
}

ChangePosition.setClass = function(e, newClass) {
    $(e).className = newClass;
}

ChangePosition.setVisible = function(e, visibility) {
    var E = $(e);
    if (E != null) {
        if (visibility == "true" || visibility == true) { E.style.display = "block"; }
        else { E.style.display = "none"; }
    }
}
