From: <Saved by Windows Internet Explorer 7>
Subject: ESS - Spring 2011 - 1
Date: Wed, 23 Mar 2011 08:15:36 -0400
MIME-Version: 1.0
Content-Type: multipart/related;
	type="text/html";
	boundary="----=_NextPart_000_0000_01CBE932.7CEFD480"
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5994

This is a multi-part message in MIME format.

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: text/html;
	charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/?peid=8e65ba54f9474ac8b42ab4db786874f41d

=EF=BB=BF<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" =
"http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML=20
xmlns=3D"http://www.w3.org/1999/xhtml"><HEAD><TITLE>ESS - Spring 2011 - =
1</TITLE><!-- saved from url=3D(0014)about:internet -->
<META http-equiv=3Dimagetoolbar content=3Dno>
<META http-equiv=3Dcontent-type content=3D"text-html; =
charset=3Dutf-8"><LINK=20
id=3DmainStylesheet=20
href=3D"http://mediasite.passhe.edu/mediasite/Viewer/Players/StandardPlay=
er/Main.css"=20
type=3Dtext/css rel=3Dstylesheet><LINK=20
href=3D"App_Themes/Mediasite/Images/favicon.png" type=3Dimage/png =
rel=3Dicon><LINK=20
href=3D"App_Themes/Mediasite/Images/favicon.png" type=3Dimage/ico=20
rel=3D"shortcut icon">
<SCRIPT type=3Dtext/javascript>
        function onBodyLoad() {
            if (typeof mPlayer !=3D "undefined") {
                mPlayer.OnBodyLoad();
            }
            else {
                document.getElementById('loadingMessage').innerHTML =3D =
'The Mediasite Player was unable to load due to a Javascript error.';
            }
        }
    </SCRIPT>

<META content=3D"MSHTML 6.00.6000.17095" name=3DGENERATOR></HEAD>
<BODY onload=3DonBodyLoad();>
<DIV class=3DplayerMask id=3DPlayerMask>
<DIV class=3DloadingImage id=3DloadingImage></DIV>
<DIV id=3DloadingMessage>
<SCRIPT type=3Dtext/javascript>
		            var viewportheight =3D =
document.documentElement.clientHeight;
		            document.getElementById('PlayerMask').style.height =3D =
viewportheight;    		       =20
	    	        document.write('Loading Mediasite...');		       =20
		        </SCRIPT>
<NOSCRIPT>
<P><B>ESS - Spring 2011 - 1</B><BR><BR><BR>(Javascript is required to =
view=20
Mediasite content) </P></NOSCRIPT></DIV></DIV>
<DIV class=3DplayerContent id=3DPageContent>
<FORM id=3DMediasitePlayerForm name=3DMediasitePlayerForm=20
action=3DPlayers/StandardPlayer/StandardPlayer.aspx?peid=3D8e65ba54f9474a=
c8b42ab4db786874f41d=20
method=3Dpost>
<DIV><INPUT id=3D__EVENTTARGET type=3Dhidden name=3D__EVENTTARGET> =
<INPUT=20
id=3D__EVENTARGUMENT type=3Dhidden name=3D__EVENTARGUMENT> <INPUT =
id=3D__VIEWSTATE=20
type=3Dhidden =
value=3D/wEPDwUJMTI2NzQ4NzU2ZGSepxBCz8sRocJL0VZ20FMkIywv/w=3D=3D=20
name=3D__VIEWSTATE> </DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
var theForm =3D document.forms['MediasitePlayerForm'];
if (!theForm) {
    theForm =3D document.MediasitePlayerForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() !=3D false)) {
        theForm.__EVENTTARGET.value =3D eventTarget;
        theForm.__EVENTARGUMENT.value =3D eventArgument;
        theForm.submit();
    }
}
//]]>
</SCRIPT>

<SCRIPT=20
src=3D"http://mediasite.passhe.edu/mediasite/Viewer/WebResource.axd?d=3DB=
ZpzJFi3O7efX6u8u1lnDwzjW7Wff9MRM28EL4opL6_208o-G7WWw0AYb1PorWZuqKq1MHgGQZ=
lAn8Wh89kuBS54fj41&amp;t=3D634210220612724343"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://mediasite.passhe.edu/mediasite/Viewer/ScriptResource.axd?d=3D=
Edle-2xc8xtHkqtCLzwM6CCCRijUJUWksLzSomABlck7XSWi74CkPf9jhLltMMCyUDXyT2KUW=
RAmQ1z8DSutFFcjJTwSnRlwkYJ40mgbX7w5wq0OK-8UdalPbklqWEnI9WUmV-d97UilMI-QE1=
9MoRkOruBkI7Hh67ffO3r9fIE5X5Ml0&amp;t=3Dffffffffda1e9529"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT=20
src=3D"http://mediasite.passhe.edu/mediasite/Viewer/ScriptResource.axd?d=3D=
7U_PRMYzfwdEnOaNwfi6Gi5-jCTzWneNhYe7m6sY0Da1-wpCWJhDP8uCYv7nYg3qb4ghD1CnF=
opiD9P2CTDFJ4fHgH7ASPPPD0m8riFGJw7jE2TAyCgTvoyWvdrrH6Y4Nlg3RmqRQqJ7Jk-x1z=
01XwsLbReaQYZW-CdLeYji7m0SXBCM0&amp;t=3Dffffffffda1e9529"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT =
src=3D"http://mediasite.passhe.edu/mediasite/Viewer/PlayerService.asmx/js=
"=20
type=3Dtext/javascript></SCRIPT>

<DIV><INPUT id=3D__EVENTVALIDATION type=3Dhidden=20
value=3D/wEWCwKF4snpCAKGn+KUBAKprrATAtHKs/UFAp/qvu0NAqSshYYHAu2f94sFAvymx=
LcKApuQqt0JApa1hd4FAuOEj9oE+19Hj+1cPxPiysYF6ucpZIGOSko=3D=20
name=3D__EVENTVALIDATION> </DIV>
<SCRIPT type=3Dtext/javascript>
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ScriptManager1', =
document.getElementById('MediasitePlayerForm'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls([], [], =
[], 90);
//]]>
</SCRIPT>

<DIV id=3DPlayerContainer>
<DIV class=3DvideoContainer id=3DVideoContainer>
<DIV id=3DPlayerAudioOnly style=3D"WIDTH: 320px; HEIGHT: 240px"></DIV>
<DIV id=3DPlayerNotStarted style=3D"WIDTH: 320px; HEIGHT: 240px"></DIV>
<DIV id=3DPlayerVideo></DIV></DIV>
<DIV class=3DstatusBar id=3DStatusBar>
<DIV class=3DstatusBarLeft><SPAN =
id=3DPlayerStatusArea></SPAN></DIV><SPAN=20
class=3DlanguageSelectionArea id=3DLanguageSelectionArea=20
style=3D"DISPLAY: none"></SPAN>
<DIV class=3DstatusBarRight><SPAN =
id=3DPlayerPositionArea></SPAN></DIV></DIV>
<DIV class=3DplayerControlContainer id=3DPlayerControls>
<DIV class=3DplayerSlider id=3DPlayerSlider>
<DIV id=3DPlayerSlider_positionGuide></DIV>
<DIV id=3DPlayerSlider_thumb></DIV></DIV>
<DIV class=3DplayPause id=3DbtnPlayPause><A id=3DbtnPlayPauseLink><IMG=20
id=3DbtnPlayPauseImg alt=3D""> </A></DIV>
<DIV class=3DskipBack id=3DbtnSkipback><A id=3DbtnSkipbackLink><IMG =
id=3DbtnSkipbackImg=20
alt=3D""> </A></DIV>
<DIV id=3DPlayerSpeedControl>
<DIV class=3DPlayerSpeedControlLeftNormal =
id=3DPlayerSpeedControlLeft></DIV>
<DIV class=3DPlayerSpeedControlMiddleNormal =
id=3DPlayerSpeedControlMiddle>1x</DIV>
<DIV class=3DPlayerSpeedControlRightNormal =
id=3DPlayerSpeedControlRight></DIV></DIV>
<DIV class=3DvolMute id=3DbtnMute><A id=3DbtnMuteLink><IMG =
id=3DbtnMuteImg alt=3D"">=20
</A></DIV>
<DIV class=3DvolSlider id=3DVolumeSlider>
<DIV id=3DVolumeSlider_positionGuide></DIV>
<DIV id=3DVolumeSlider_thumb></DIV></DIV><SPAN class=3DcaptioningToggle =
id=3DbtnCC><A=20
id=3DbtnCCLink><IMG id=3DbtnCCImg alt=3D""> </A></SPAN><SPAN =
class=3DchapterToggle=20
id=3DbtnChapters style=3D"DISPLAY: none"><A id=3DbtnChaptersLink><IMG=20
id=3DbtnChaptersImg alt=3D""> </A></SPAN><SPAN class=3DplayFullScreen=20
id=3DbtnFullScreen><A id=3DbtnFullScreenLink><IMG id=3DbtnFullScreenImg =
alt=3D"">=20
</A></SPAN></DIV></DIV>
<DIV id=3DAdBanner></DIV>
<DIV id=3DTitleBanner></DIV>
<DIV id=3DCommandBar></DIV>
<DIV id=3DInnerBackground></DIV><SPAN class=3DCommandBarButton =
id=3DbtnPoll><A=20
id=3DbtnPollLink><IMG id=3DbtnPollImg alt=3D""> </A></SPAN><SPAN=20
class=3DCommandBarButton id=3DbtnAskButton><A id=3DbtnAskButtonLink><IMG =

id=3DbtnAskButtonImg alt=3D""> </A></SPAN><SPAN class=3DCommandBarButton =

id=3DbtnEmail><A id=3DbtnEmailLink><IMG id=3DbtnEmailImg alt=3D""> =
</A></SPAN><SPAN=20
class=3DCommandBarButton id=3DbtnLinks><A id=3DbtnLinksLink><IMG =
id=3DbtnLinksImg=20
alt=3D""> </A></SPAN><SPAN id=3DLiveIndicatorArea><IMG =
id=3DLiveIndicatorAreaImg=20
style=3D"DISPLAY: none"> </SPAN>
<DIV id=3DSlideTabs><SPAN id=3DbtnSlideShow><A =
id=3DbtnSlideShowLink><IMG=20
id=3DbtnSlideShowImg> </A></SPAN><SPAN id=3DbtnSlideList><A =
id=3DbtnSlideListLink><IMG=20
id=3DbtnSlideListImg> </A></SPAN></DIV>
<DIV id=3DSlideTicker><SPAN id=3DbtnPreviousSlide><A =
id=3DbtnPreviousSlideLink><IMG=20
id=3DbtnPreviousSlideImg> </A></SPAN><SPAN =
id=3DSlideNumberArea></SPAN><SPAN=20
id=3DbtnNextSlide><A id=3DbtnNextSlideLink><IMG id=3DbtnNextSlideImg>=20
</A></SPAN></DIV><SPAN class=3DCommandBarButton id=3DbtnHelp><A =
id=3DbtnHelpLink><IMG=20
id=3DbtnHelpImg> </A></SPAN><SPAN id=3DcommandSeparator></SPAN>
<DIV id=3DPresentationCardArea>
<DIV class=3DcaptioningContainer id=3DCaptioningContainer>
<DIV id=3DCaptioningDisplay></DIV></DIV>
<DIV id=3DPresentationCardAreaScrollDiv>
<DIV class=3DcardInnerPadding id=3DPresentationCardAreaInnerPadding>
<DIV class=3DcardTitleLink><SPAN =
id=3DPresentationCardAreaTitle></SPAN></DIV>
<DIV class=3DcardItem id=3DPresentationCardAreaPresenters><SPAN =
class=3DcardData=20
id=3DPresentationCardAreaPresentersText></SPAN></DIV>
<DIV class=3DcardItem id=3DPresentationCardAreaDescription><SPAN =
class=3DcardData=20
id=3DPresentationCardAreaDescriptionText></SPAN></DIV></DIV></DIV>
<DIV class=3DcardItem id=3DPresentationCardAreaFooter><SPAN =
class=3DcardData=20
id=3DPresentationCardAreaAirDateText></SPAN><SPAN class=3DcardData=20
id=3DPresentationCardAreaAirTimeText></SPAN><SPAN class=3DcardData=20
id=3DPresentationCardAreaDurationLabel></SPAN><SPAN class=3DcardData=20
id=3DPresentationCardAreaDurationText></SPAN><SPAN class=3DcardMore=20
id=3DPresentationCardAreaMore></SPAN></DIV></DIV>
<DIV id=3DLinksPanel style=3D"DISPLAY: none">
<DIV class=3DdialogTitle id=3DlinksPanelTitle>
<DIV class=3DdialogIcon id=3DlinksIcon></DIV>
<DIV class=3DdialogTitleText id=3DLinksPanelLinksTitleText></DIV>
<DIV class=3DdialogCloseButtonNormal =
id=3DLinksPanelCloseButton></DIV></DIV>
<DIV class=3DlinksPanelContainer id=3DLinksPanelContainer></DIV></DIV>
<DIV id=3DThumbNailsArea>
<DIV id=3DthumbNailsDiv>
<DIV class=3DthumbNailTop id=3DthumbnailToolbar>
<DIV class=3DthumbNailPagerContainer id=3DpagerContainer></DIV>
<DIV class=3DthumbNailViewButtonsContainer =
id=3DThumbNailViewButtonsContainer><SPAN=20
class=3DthumbNailViewButton><IMG id=3DthumbNailViewButtonSlideList> =
</SPAN><SPAN=20
class=3DthumbNailViewButton><IMG =
id=3DthumbNailViewButtonSmallThumbnails>=20
</SPAN><SPAN class=3DthumbNailViewButton><IMG=20
id=3DthumbNailViewButtonLargeThumbnails> </SPAN><SPAN=20
class=3DthumbNailViewButton><IMG id=3DthumbNailViewButtonChapters>=20
</SPAN></DIV></DIV>
<DIV class=3DthumbNailXContainer id=3DthumbNailSlidesContainer></DIV>
<DIV class=3DthumbNailXContainer id=3DTextSlideSorterArea =
style=3D"DISPLAY: none">
<DIV class=3DtextSlideListContainer =
id=3DTextSlideSorterAreaInside></DIV></DIV>
<DIV class=3DchapterContainer id=3DChapterPointsArea=20
style=3D"DISPLAY: none"></DIV></DIV></DIV>
<DIV id=3DCurrentSlideArea><A id=3DCurrentSlideAreaImageLink =
target=3D_offsite><IMG=20
id=3DCurrentSlideAreaSlideImage title=3D"Slide Image" alt=3D"Slide =
Image"></A> <SPAN=20
id=3DCurrentSlideAreaSlideDescription title=3D"Slide Image"=20
style=3D"VISIBILITY: hidden"></SPAN>
<DIV id=3DCurrentSlideAreaToolbuttonContainer>
<DIV class=3DCurrentSlideAreaViewportToolbuttonNormal=20
id=3DCurrentSlideAreaViewportToolbutton></DIV>
<DIV class=3DCurrentSlideAreaFullSizeToolbuttonNormal=20
id=3DCurrentSlideAreaFullSizeToolbutton></DIV></DIV></DIV>
<DIV id=3DApplicationVersionArea></DIV>
<DIV class=3DemailInviteArea id=3DEmailInviteArea style=3D"DISPLAY: =
none">
<DIV class=3DemailInviteContent id=3DemailInviteArea_emailInvite>
<DIV id=3DemailInviteHeader>
<DIV class=3DdialogTitle id=3DemailInviteTitle>
<DIV class=3DdialogIcon id=3DemailInviteIcon></DIV>
<DIV class=3DdialogTitleText id=3DemailInviteHeadingText>Share =
Presentation</DIV>
<DIV class=3DdialogCloseButtonNormal id=3DemailInviteCloseButton=20
onmouseover=3D"$('emailInviteCloseButton').className=3D'dialogCloseButton=
Over';"=20
onclick=3DSfEmail.CloseMessage();=20
onmouseout=3D"$('emailInviteCloseButton').className=3D'dialogCloseButtonN=
ormal';"></DIV></DIV></DIV>
<DIV class=3DdialogInternalContent =
id=3DemailInviteDialogInternalContent>
<DIV class=3DemailInviteReturnDialog id=3DemailInviteReturnDiv=20
style=3D"DISPLAY: none">
<DIV class=3DdialogTitle id=3DemailInvitereturnDivHeader>
<DIV class=3DdialogIcon id=3DemailInviteReturnDivIcon></DIV>
<DIV class=3DdialogTitleText id=3DemailInviteReturnDivHeadingText>Share =
Presentation=20
Message</DIV>
<DIV class=3DdialogCloseButtonNormal =
id=3DemailInviteReturnDivCloseButton=20
onmouseover=3D"$('emailInviteReturnDivCloseButton').className=3D'dialogCl=
oseButtonOver';"=20
onclick=3DSfEmail.CloseMessage();=20
onmouseout=3D"$('emailInviteReturnDivCloseButton').className=3D'dialogClo=
seButtonNormal';"></DIV>
<DIV id=3DemailInviteReturnDivCloseButtonFlag style=3D"DISPLAY: =
none"></DIV></DIV>
<DIV class=3DdialogMessageText id=3DemailInviteReturnDivMessage></DIV>
<DIV class=3DdialogButtonContainer id=3DemailInviteMessageButton>
<DIV class=3DdialogButton id=3DemailInviteMessageOK=20
onclick=3DSfEmail.CloseMessage();>OK</DIV></DIV></DIV>
<DIV class=3DemailInviteModalMask id=3DemailInviteModalMask=20
style=3D"DISPLAY: none"></DIV>
<DIV style=3D"OVERFLOW: hidden">
<DIV class=3DemailInviteItem id=3DemailFrom><SPAN =
class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInviteFromlbl>From:</SPAN> <INPUT=20
class=3DemailInviteItemField =
id=3DemailInviteArea_emailInviteFromFieldtxt=20
name=3DemailInviteArea$emailInviteFromFieldtxt =
vcard_name=3D"vCard.Email"> </DIV>
<DIV class=3DemailInviteItem id=3DemailTo><SPAN =
class=3DemailInviteMiniText=20
id=3DemailInviteArea_emailInviteToSeperator>Separate addresses with a=20
semi-colon.</SPAN> <SPAN class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInviteTolbl>To:</SPAN> <INPUT =
class=3DemailInviteItemField=20
id=3DemailInviteArea_emailInviteToFieldtxt=20
name=3DemailInviteArea$emailInviteToFieldtxt vcard_name=3D"vCard.Email"> =
</DIV>
<DIV class=3DemailInviteItem id=3DemailSubject><SPAN =
class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInviteSubjectlbl>Subject:</SPAN> <INPUT=20
class=3DemailInviteItemField =
id=3DemailInviteArea_emailInviteSubjectFieldtxt=20
name=3DemailInviteArea$emailInviteSubjectFieldtxt> </DIV>
<DIV class=3DemailInviteItem id=3DemailStartingPoint><SPAN=20
class=3DemailInviteItemHeader =
id=3DemailInviteArea_emailInviteStartlbl>Start=20
Time:</SPAN>=20
<DIV class=3DemailInviteStartingPoint><INPUT id=3DemailInviteStartcb=20
onclick=3DSfEmail.EnableStartTime() type=3Dcheckbox> <INPUT=20
class=3DemailInviteContentStartItemTextArea=20
id=3DemailInviteArea_emailInviteStartTimetxt =
onkeyup=3DSfEmail.UpdateMessage();=20
style=3D"WIDTH: 56px" maxLength=3D8 onchange=3DSfEmail.UpdateMessage();=20
name=3DemailInviteArea$emailInviteStartTimetxt> <SPAN =
class=3DemailInviteMiniText=20
id=3DemailInviteArea_startTimeFormatText>HH:MM:SS</SPAN> </DIV></DIV>
<DIV class=3DemailInviteItem id=3DemailMessage><SPAN =
class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInviteMessagelbl>Message:</SPAN> <TEXTAREA =
class=3DemailInviteItemField =
id=3DemailInviteArea_emailInviteMessageFieldtxt =
name=3DemailInviteArea$emailInviteMessageFieldtxt></TEXTAREA>=20
</DIV>
<DIV class=3DemailInviteItem id=3DemailPrefClient><A =
class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInvitePref =
href=3D"javascript:SfEmail.ClientExport();">Use=20
Email</A> </DIV>
<DIV class=3DemailInviteItem id=3DserverMessage><SPAN =
class=3DemailInviteItemHeader=20
id=3DemailInviteArea_emailInviteServerMessagelbl></SPAN></DIV></DIV></DIV=
>
<DIV class=3DdialogButtonContainer id=3DemailInviteButtons>
<DIV class=3DdialogButton id=3D'emailInviteSend"' =
onclick=3DSfEmail.SendEmail();>Send=20
</DIV></DIV></DIV></DIV>
<DIV class=3DaskQuestionArea id=3DAskQuestionArea style=3D"DISPLAY: =
none">
<DIV class=3DemailInviteContent id=3DaskQuestionArea_askQuestionPanel>
<DIV id=3DaskQuestionHeader>
<DIV class=3DdialogTitle id=3DaskQuestionTitle>
<DIV class=3DdialogIcon id=3DaskQuestionTitleIcon></DIV>
<DIV class=3DdialogTitleText id=3DaskQuestionHeadingText>Ask a =
Question</DIV>
<DIV class=3DdialogCloseButtonNormal id=3DaskQuestionCloseButton=20
onmouseover=3D"$('askQuestionCloseButton').className=3D'dialogCloseButton=
Over';"=20
onclick=3DSfForum.CloseAskQuestionMessage();=20
onmouseout=3D"$('askQuestionCloseButton').className=3D'dialogCloseButtonN=
ormal';"></DIV></DIV></DIV>
<DIV class=3DdialogInternalContent =
id=3DaskQuestionDialogInternalContent>
<DIV class=3DemailInviteReturnDialog id=3DaskQuestionReturnDiv=20
style=3D"DISPLAY: none">
<DIV class=3DdialogTitle id=3DaskQuestionreturnDivHeader>
<DIV class=3DdialogIcon id=3DaskQuestionReturnDivTitleIcon></DIV>
<DIV class=3DdialogTitleText id=3DaskQuestionReturnDivHeadingText>Ask a=20
Question</DIV>
<DIV class=3DdialogCloseButtonNormal =
id=3DaskQuestionReturnDivCloseButton=20
onmouseover=3D"$('askQuestionReturnDivCloseButton').className=3D'dialogCl=
oseButtonOver';"=20
onclick=3DSfForum.CloseAskQuestionMessage();=20
onmouseout=3D"$('askQuestionReturnDivCloseButton').className=3D'dialogClo=
seButtonNormal';"></DIV>
<DIV id=3DaskQuestionReturnDivCloseButtonFlag style=3D"DISPLAY: =
none"></DIV></DIV>
<DIV class=3DdialogMessageText id=3DaskQuestionReturnDivMessage></DIV>
<DIV class=3DdialogButtonContainer id=3DaskQuestionMessageButton>
<DIV class=3DdialogButton id=3DaskQuestionMessageOK=20
onclick=3DSfForum.CloseAskQuestionMessage();>OK</DIV></DIV></DIV>
<DIV class=3DemailInviteModalMask id=3DaskQuestionModalMask=20
style=3D"DISPLAY: none"></DIV>
<DIV style=3D"OVERFLOW: hidden">
<DIV class=3DemailInviteItem id=3DaskQuestionName><SPAN=20
class=3DaskQuestionRequiredItemHeader=20
id=3DaskQuestionArea_askQuestionNamelbl>Name:</SPAN> <INPUT=20
class=3DemailInviteItemField =
id=3DaskQuestionArea_askQuestionNameFieldtxt=20
maxLength=3D255 name=3DaskQuestionArea$askQuestionNameFieldtxt=20
vcard_name=3D"vCard.Email"> </DIV>
<DIV class=3DemailInviteItem id=3DaskQuestionEmail><SPAN =
class=3DemailInviteItemHeader=20
id=3DaskQuestionArea_askQuestionEmaillbl>Email:</SPAN> <INPUT=20
class=3DemailInviteItemField =
id=3DaskQuestionArea_askQuestionEmailFieldtxt=20
name=3DaskQuestionArea$askQuestionEmailFieldtxt =
vcard_name=3D"vCard.Email"> </DIV>
<DIV class=3DemailInviteItem id=3DaskQuestionSubject><SPAN=20
class=3DaskQuestionRequiredItemHeader=20
id=3DaskQuestionArea_askQuestionSubjectlbl>Subject:</SPAN> <INPUT=20
class=3DemailInviteItemField =
id=3DaskQuestionArea_askQuestionSubjectFieldtxt=20
maxLength=3D512 name=3DaskQuestionArea$askQuestionSubjectFieldtxt> =
</DIV>
<DIV class=3DemailInviteItem id=3DaskQuestionMessage><SPAN=20
class=3DaskQuestionRequiredItemHeader=20
id=3DaskQuestionArea_askQuestionMessagelbl>Question:</SPAN> <TEXTAREA =
class=3DemailInviteItemField =
id=3DaskQuestionArea_askQuestionMessageFieldtxt =
name=3DaskQuestionArea$askQuestionMessageFieldtxt></TEXTAREA>=20
</DIV>
<DIV class=3DemailInviteItem id=3DaskQuestionServerMessage><SPAN=20
class=3DemailInviteItemHeader=20
id=3DaskQuestionArea_askQuestionServerMessagelbl></SPAN></DIV>
<DIV class=3DemailInviteItem id=3DaskQuestionTime><SPAN =
class=3DemailInviteItemHeader=20
id=3DaskQuestionArea_askQuestionTimelbl>Time:</SPAN>=20
<DIV class=3DemailInviteStartingPoint><INPUT id=3DaskQuestionTimecb=20
onclick=3DSfForum.EnableQuestionTime() type=3Dcheckbox> <INPUT=20
class=3DemailInviteContentStartItemTextArea =
id=3DaskQuestionArea_askQuestionTimetxt=20
style=3D"WIDTH: 56px" maxLength=3D8 =
name=3DaskQuestionArea$askQuestionTimetxt> <SPAN=20
class=3DemailInviteMiniText=20
id=3DaskQuestionArea_askQuestionTimeFormatText>HH:MM:SS</SPAN>=20
</DIV></DIV></DIV></DIV>
<DIV class=3DdialogButtonContainer id=3DaskQuestionButtons>
<DIV class=3DdialogButton id=3DaskQuestionSend =
onclick=3DSfForum.SendQuestion();>Send=20
</DIV></DIV></DIV></DIV>
<SCRIPT=20
src=3D"http://mediasite.passhe.edu/mediasite/FileServer/Presentation/8e65=
ba54f9474ac8b42ab4db786874f41d/manifest.js?playbackTicket=3D07fef8371e3d4=
631ae4b84f495ec5777"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT>
// Copyright (c) 2007-2010 Sonic Foundry, Inc. and Sonic Foundry=20
// Media Systems, Inc. Neither this code nor any portion=20
// thereof may be reproduced, altered, or otherwise changed,=20
// distributed or copied, without the express written=20
// permission of Sonic Foundry.
// All rights reserved.

LayoutOptions =3D function(){}

LayoutOptions.Image =3D function(imageFilename,imageUrl,height,width)
{
	this.ImageFilename=3DimageFilename;
	this.ImageUrl=3DimageUrl;
	this.Height =3D height;
	this.Width =3D width;
}


LayoutOptions.OnLoad=3Dfunction()
{
    LayoutOptions.LoadLayoutImages();
}
LayoutOptions.LoadLayoutImages=3Dfunction(){
   LayoutOptions.Images =3D new Array(6);
   LayoutOptions.Images["AdBanner"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/AdBanner.jpg","http://www.sonicfou=
ndry.com","68","590");
   LayoutOptions.Images["TitleBanner"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/TitleBanner.jpg","http://www.sonic=
foundry.com","68","660");
   LayoutOptions.Images["SlideNotStarted"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/SlideNotStarted.jpg","","768","102=
4");
   LayoutOptions.Images["SlideEnded"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/SlideEnded.jpg","","768","1024");
   LayoutOptions.Images["SlideDefault"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/SlideDefault.jpg","","768","1024")=
;
   LayoutOptions.Images["PlayerNotStarted"] =3D new =
LayoutOptions.Image("http://mediasite.passhe.edu/mediasite/FileServer/Pla=
yer/17772b5aecb345dcb81ae443fee81ad40a/PlayerNotStarted.jpg","","150","20=
0");
};

LayoutOptions.VideoHeight=3D150;
LayoutOptions.VideoWidth=3D200;
LayoutOptions.SlideHeight=3D768;
LayoutOptions.SlideWidth=3D1024;
LayoutOptions.PlayerHeight=3D873;
LayoutOptions.PlayerWidth=3D1250;
LayoutOptions.DefaultPosition=3D1;
LayoutOptions.FullSizeViewer=3D"Players/SlidePlayer/SlidePlayer.aspx";
LayoutOptions.PreviewViewer=3D"PreviewSlide.aspx";
LayoutOptions.ThemeImageBase=3D"http://mediasite.passhe.edu/mediasite/Vie=
wer/App_Themes/Mediasite/Images";
LayoutOptions.HideDateTime=3Dfalse;
LayoutOptions.DoNotShowEndSlide=3Dfalse;
LayoutOptions.ThemeId=3D"Mediasite";
</SCRIPT>

<SCRIPT=20
src=3D"http://mediasite.passhe.edu/mediasite/Viewer/JavascriptServer.aspx=
?mode=3DDefault"=20
type=3Dtext/javascript></SCRIPT>

<SCRIPT type=3Dtext/javascript>
//<![CDATA[
Sys.Application.initialize();
//]]>
</SCRIPT>
</FORM></DIV></BODY></HTML>

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: text/css;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/Players/StandardPlayer/Main.css

BODY {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: =
0px; PADDING-TOP: 0px; FONT-FAMILY: Arial, Verdana, Helvetica, Geneva, =
sans-serif; BACKGROUND-COLOR: #ffffff
}
.playerMask {
	Z-INDEX: 1000; WIDTH: 100%; POSITION: absolute; HEIGHT: 100%; =
BACKGROUND-COLOR: white; TEXT-ALIGN: center
}
.playerContent {
	Z-INDEX: 1; MARGIN: 0px 0px 0px 3px; POSITION: absolute
}
.loadingImage {
	MARGIN: auto; WIDTH: 140px; PADDING-TOP: 100px; BACKGROUND-REPEAT: =
no-repeat; POSITION: relative; HEIGHT: 60px; TEXT-ALIGN: left
}
.spinDiv {
	BORDER-RIGHT: #ccc 1px solid; BORDER-TOP: #ccc 1px solid; FLOAT: left; =
MARGIN: 1px; BORDER-LEFT: #ccc 1px solid; WIDTH: 10px; BORDER-BOTTOM: =
#ccc 1px solid; POSITION: relative; HEIGHT: 10px; TEXT-ALIGN: center
}
BODY A {
	COLOR: #333; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: =
none; outline: none
}
BODY A:hover {
	COLOR: #000; TEXT-DECORATION: underline
}
#PresentationCardArea {
	BORDER-RIGHT: #777 1px solid; BORDER-TOP: #777 1px solid; BORDER-LEFT: =
#777 1px solid; BORDER-BOTTOM: #777 1px solid
}
#CurrentSlideArea {
	BORDER-RIGHT: #777 1px solid; BORDER-TOP: #777 1px solid; BORDER-LEFT: =
#777 1px solid; BORDER-BOTTOM: #777 1px solid
}
#PlayerContainer {
	BORDER-RIGHT: #777 1px solid; BORDER-TOP: #777 1px solid; BORDER-LEFT: =
#777 1px solid; BORDER-BOTTOM: #777 1px solid
}
#ThumbNailsArea {
	BORDER-RIGHT: #777 1px solid; BORDER-TOP: #777 1px solid; BORDER-LEFT: =
#777 1px solid; BORDER-BOTTOM: #777 1px solid
}
.playerContent {
	BORDER-RIGHT: #888 1px solid; BORDER-LEFT: #888 1px solid; =
BORDER-BOTTOM: #888 1px solid
}
#SlideTicker {
	COLOR: #ddd
}
#PlayerContainer {
	WIDTH: 240px
}
.statusBar {
	WIDTH: 240px
}
#PlayerContainer {
	Z-INDEX: 3; LEFT: 4px; POSITION: absolute; TOP: 99px; BACKGROUND-COLOR: =
transparent
}
#PlayerAudioOnly {
	POSITION: absolute; TOP: 0px
}
#PlayerNotStarted {
	POSITION: absolute; TOP: 0px
}
#PlayerAudioOnly {
	DISPLAY: none
}
#TitleBanner {
	POSITION: absolute; TOP: 0px; HEIGHT: 68px
}
#AdBanner {
	POSITION: absolute; TOP: 0px; HEIGHT: 68px
}
#TitleBanner {
	LEFT: 0px; WIDTH: 560px
}
#AdBanner {
	LEFT: 560px; WIDTH: 228px
}
#VendorLogo {
	WIDTH: 468px; POSITION: absolute; HEIGHT: 60px
}
#btnSlideShow {
	DISPLAY: block
}
#btnSlideList {
	DISPLAY: block
}
.CommandBarButton A:active IMG {
	DISPLAY: block
}
.CommandBarButton A:focus IMG {
	DISPLAY: block
}
.CommandBarButton A:hover IMG {
	DISPLAY: block
}
#btnSlideShow A:active IMG {
	DISPLAY: block
}
#btnSlideShow A:focus IMG {
	DISPLAY: block
}
#btnSlideShow A:hover IMG {
	DISPLAY: block
}
#btnSlideList A:active IMG {
	DISPLAY: block
}
#btnSlideList A:focus IMG {
	DISPLAY: block
}
#btnSlideList A:hover IMG {
	DISPLAY: block
}
#btnLinksImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnEmailImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnAskButtonImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnPollImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnSlideShowImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnSlideListImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnNextSlideImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnPreviousSlideImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnSlideShow {
	DISPLAY: block; POSITION: absolute
}
#btnSlideList {
	DISPLAY: block; POSITION: absolute
}
#btnSlideShow A:active IMG {
	DISPLAY: block; POSITION: absolute
}
#btnSlideList A:active IMG {
	DISPLAY: block; POSITION: absolute
}
#btnSlideShow A:focus IMG {
	DISPLAY: block; POSITION: absolute
}
#btnSlideList A:focus IMG {
	DISPLAY: block; POSITION: absolute
}
#btnSlideShow A:hover IMG {
	DISPLAY: block; POSITION: absolute
}
#btnSlideList A:hover IMG {
	DISPLAY: block; POSITION: absolute
}
#btnPreviousSlide {
	DISPLAY: block; POSITION: absolute
}
#btnNextSlide {
	DISPLAY: block; POSITION: absolute
}
#btnPreviousSlide A:active IMG {
	DISPLAY: block; POSITION: absolute
}
#btnNextSlide A:active IMG {
	DISPLAY: block; POSITION: absolute
}
#btnPreviousSlide A:focus IMG {
	DISPLAY: block; POSITION: absolute
}
#btnNextSlide A:focus IMG {
	DISPLAY: block; POSITION: absolute
}
#btnPreviousSlide A:hover IMG {
	DISPLAY: block; POSITION: absolute
}
#btnNextSlide A:hover IMG {
	DISPLAY: block; POSITION: absolute
}
#InnerBackground {
	BACKGROUND-REPEAT: repeat-x; POSITION: absolute; BACKGROUND-COLOR: #fff
}
#CommandBar {
	BACKGROUND-REPEAT: repeat-x; POSITION: absolute
}
.CommandBarButton {
	WIDTH: 40px; HEIGHT: 28px
}
#btnPoll {
	POSITION: absolute; TOP: 70px
}
#btnAskButton {
	POSITION: absolute; TOP: 70px
}
#btnEmail {
	POSITION: absolute; TOP: 70px
}
#btnLinks {
	POSITION: absolute; TOP: 70px
}
#LiveIndicatorArea {
	POSITION: absolute; TOP: 70px
}
#SlideTabs {
	POSITION: absolute; TOP: 70px
}
#btnPoll {
	LEFT: 5px
}
#btnAskButton {
	LEFT: 52px
}
#btnEmail {
	Z-INDEX: 2; LEFT: 98px
}
#btnLinks {
	LEFT: 150px
}
#LiveIndicatorArea {
	LEFT: 205px; WIDTH: 20px; HEIGHT: 23px
}
#LiveIndicatorAreaImg {
	LEFT: 205px; WIDTH: 20px; HEIGHT: 23px
}
#SlideTabs {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#SlideTicker {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#btnHelp {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#commandSeparator {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#ApplicationVersionArea {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; POSITION: absolute; BORDER-BOTTOM-STYLE: none
}
#SlideTabs {
	Z-INDEX: 5; MARGIN: 0px
}
#btnSlideShow {
	TOP: -2px
}
#btnSlideList {
	TOP: -2px
}
#btnSlideShow {
	WIDTH: 37px
}
#btnSlideShowImg {
	WIDTH: 37px
}
#btnSlideShow {
	LEFT: 0px
}
#btnSlideList {
	WIDTH: 39px
}
#btnSlideListImg {
	WIDTH: 39px
}
#btnSlideList {
	LEFT: 37px
}
#SlideTicker {
	LEFT: 386px; MARGIN: 0px; WIDTH: 140px; BACKGROUND-REPEAT: repeat-x; =
TOP: 69px; HEIGHT: 24px
}
#btnPreviousSlide {
	DISPLAY: inline-block; Z-INDEX: 2; POSITION: absolute; HEIGHT: 23px
}
#SlideNumberArea {
	DISPLAY: inline-block; Z-INDEX: 2; POSITION: absolute; HEIGHT: 23px
}
#btnNextSlide {
	DISPLAY: inline-block; Z-INDEX: 2; POSITION: absolute; HEIGHT: 23px
}
#btnPreviousSlide {
	WIDTH: 24px; TOP: 0px
}
#btnNextSlide {
	WIDTH: 24px; TOP: 0px
}
#btnPreviousSlideImg {
	WIDTH: 24px; TOP: 0px
}
#btnNextSlideImg {
	WIDTH: 24px; TOP: 0px
}
#btnNextSlide {
	RIGHT: 0px
}
#SlideNumberArea {
	FONT-SIZE: 10px; LEFT: 24px; VERTICAL-ALIGN: top; WIDTH: 93px; TOP: =
7px; TEXT-ALIGN: center
}
#btnHelp {
	DISPLAY: block; LEFT: 673px; WIDTH: 26px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; TOP: 70px; =
BORDER-BOTTOM-STYLE: none
}
#btnHelpImg {
	DISPLAY: block; LEFT: 673px; WIDTH: 26px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; TOP: 70px; =
BORDER-BOTTOM-STYLE: none
}
#commandSeparator {
	LEFT: 703px; WIDTH: 2px; TOP: 70px
}
#ApplicationVersionArea {
	LEFT: 707px; WIDTH: 81px; TOP: 68px; HEIGHT: 23px
}
.askQuestionArea {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
Z-INDEX: 5; LEFT: 245px; MARGIN: 5px 0px; BORDER-LEFT: #666666 1px =
solid; COLOR: #333; BORDER-BOTTOM: #666666 1px solid; POSITION: =
absolute; BACKGROUND-COLOR: #fff
}
#askQuestionArea_askQuestionMessageFieldtxt {
	PADDING-TOP: 5px; HEIGHT: 200px
}
#askQuestionName {
	HEIGHT: 21px
}
#askQuestionEmail {
	HEIGHT: 21px
}
#askQuestionSubject {
	HEIGHT: 21px
}
#askQuestionArea_askQuestionTimeFormatText {
	LEFT: 87px; TOP: 10px
}
.askQuestionButtons {
	RIGHT: 10px; FLOAT: right; BOTTOM: -10px; POSITION: relative
}
.askQuestionRequiredItemHeader {
	FONT-WEIGHT: bold; FONT-SIZE: 12px; MARGIN: 5px 0px 0px 5px; POSITION: =
absolute
}
.emailInviteArea {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
Z-INDEX: 5; LEFT: 245px; MARGIN: 5px 0px; BORDER-LEFT: #666666 1px =
solid; COLOR: #333; BORDER-BOTTOM: #666666 1px solid; POSITION: =
absolute; BACKGROUND-COLOR: #fff
}
.emailInviteMiniText {
	FONT-SIZE: 9px; COLOR: #999; LINE-HEIGHT: 9px; POSITION: absolute
}
#emailInviteArea_emailInviteToSeperator {
	LEFT: 70px; TOP: 68px
}
#emailInviteArea_startTimeFormatText {
	LEFT: 87px; TOP: 10px
}
#emailSubject {
	MARGIN-TOP: 11px
}
#emailStartingPoint {
=09
}
#emailInviteArea_emailInviteMessageFieldtxt {
	PADDING-TOP: 2px; HEIGHT: 276px
}
.emailInviteReturnDialog {
	BORDER-RIGHT: #666666 1px solid; BORDER-TOP: #666666 1px solid; =
FONT-SIZE: 12px; Z-INDEX: 4; LEFT: 50%; MARGIN-LEFT: -200px; =
BORDER-LEFT: #666666 1px solid; WIDTH: 400px; BORDER-BOTTOM: #666666 1px =
solid; POSITION: absolute; TOP: 30px; HEIGHT: auto; BACKGROUND-COLOR: =
#fff
}
.emailInviteModalMask {
	Z-INDEX: 3; FILTER: alpha(opacity=3D60); LEFT: 0px; WIDTH: 100%; =
POSITION: absolute; TOP: 0px; HEIGHT: 100%; BACKGROUND-COLOR: #fff; =
-moz-opacity: .60; opacity: .60
}
.emailInviteItemHeader {
	FONT-SIZE: 12px
}
.emailInviteItem {
=09
}
#emailFrom {
	HEIGHT: 21px
}
#emailTo {
	HEIGHT: 21px
}
#emailSubject {
	HEIGHT: 21px
}
#emailPrefClient {
	HEIGHT: 21px
}
.emailInviteBufferItem {
	HEIGHT: 15px
}
.emailInviteItemHeader {
	MARGIN: 5px 0px 0px 5px; POSITION: absolute
}
.emailInviteItemField {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px
}
.emailInviteItemField {
	FONT-FAMILY: Arial, Helvetica, Sans-Serif
}
.emailInviteStartingPoint {
	FONT-FAMILY: Arial, Helvetica, Sans-Serif
}
.emailInviteContentStartItemTextArea {
	FONT-FAMILY: Arial, Helvetica, Sans-Serif
}
.emailInviteItemField {
	BORDER-RIGHT: #a5acb2 1px solid; BORDER-TOP: #a5acb2 1px solid; =
BORDER-LEFT: #a5acb2 1px solid; BORDER-BOTTOM: #a5acb2 1px solid; =
HEIGHT: 14px
}
.emailInviteContentStartItemTextArea {
	BORDER-RIGHT: #a5acb2 1px solid; BORDER-TOP: #a5acb2 1px solid; =
BORDER-LEFT: #a5acb2 1px solid; BORDER-BOTTOM: #a5acb2 1px solid; =
HEIGHT: 14px
}
.emailInviteItemField TEXTAREA {
	resize: none
}
.emailInviteContentStartItemTextArea {
	PADDING-RIGHT: 3px; TEXT-ALIGN: right
}
#emailInviteStartcb {
	POSITION: relative; TOP: 1px
}
.emailInviteStartingPoint {
	HEIGHT: 22px
}
.emailInviteItemField {
	FONT-SIZE: 11px; LEFT: 65px; POSITION: relative
}
.emailInviteStartingPoint {
	FONT-SIZE: 11px; LEFT: 65px; POSITION: relative
}
.emailInviteStartingPointContent {
	BACKGROUND-POSITION: 0px 2px; LEFT: 90px; WIDTH: 300px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; TOP: 3px; HEIGHT: 78px
}
.emailStartingPointContentRow {
	FONT-SIZE: 11px; POSITION: relative
}
.emailStartingPointContentCellL {
	FONT-SIZE: 11px; POSITION: relative
}
.emailStartingPointContentCellR {
	FONT-SIZE: 11px; POSITION: relative
}
.emailStartingPointContentRow {
	LEFT: 2px; HEIGHT: 23px
}
.emailStartingPointContentCellL {
	TOP: 2px
}
.emailStartingPointContentStartItemTextArea {
	WIDTH: 56px; TEXT-ALIGN: right
}
.emailInviteStartingPointControl {
	Z-INDEX: 2; WIDTH: 90px; CURSOR: pointer; POSITION: absolute; HEIGHT: =
40px
}
#LinksPanel {
	POSITION: absolute
}
.linksHeading SPAN {
	POSITION: absolute
}
#LinksPanel {
	WIDTH: 340px
}
.LinksPanelContainer {
	WIDTH: 340px
}
.linksPanelContainer {
	OVERFLOW: auto
}
#LinksPanel {
	BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; Z-INDEX: 5; =
MARGIN: 5px 0px; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px =
solid; TOP: 126px; BACKGROUND-COLOR: #fafafa
}
.linksHeading {
	FONT-WEIGHT: bold; FONT-SIZE: 14px; COLOR: #efefef; BORDER-BOTTOM: =
#a2a2a2 1px solid; HEIGHT: 23px
}
.linksHeading SPAN {
	PADDING-LEFT: 24px; TOP: 4px
}
.LinksPanelContainer {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 3; PADDING-BOTTOM: 0px; =
OVERFLOW: auto; PADDING-TOP: 0px; HEIGHT: 290px
}
.linksItem {
	PADDING-LEFT: 5px; FONT-SIZE: 11px; COLOR: #333; TEXT-ALIGN: left
}
.linksItemAlt {
	PADDING-LEFT: 5px; FONT-SIZE: 11px; COLOR: #333; TEXT-ALIGN: left
}
.linksItemAlt {
	BACKGROUND-COLOR: #fff
}
#LinksPanelContainer {
	BACKGROUND-COLOR: #fff
}
.linksItem {
	BACKGROUND-COLOR: #f3f3f3
}
#CurrentSlideArea {
	POSITION: absolute
}
#CurrentSlideAreaSlideImage {
	POSITION: absolute
}
#CurrentSlideAreaSlideDescription {
	POSITION: absolute
}
#CurrentSlideAreaToolbuttonContainer {
	POSITION: absolute
}
#CurrentSlideArea {
	WIDTH: 523px; HEIGHT: 381px
}
#CurrentSlideAreaSlideImage {
	WIDTH: 523px; HEIGHT: 381px
}
#CurrentSlideAreaSlideDescription {
	WIDTH: 523px; HEIGHT: 381px
}
#CurrentSlideArea {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px
}
#CurrentSlideAreaSlideDescription {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px
}
#CurrentSlideArea {
	BACKGROUND-POSITION: 50% bottom; Z-INDEX: 1; LEFT: 333px; =
BACKGROUND-REPEAT: repeat-x; TOP: 93px; BACKGROUND-COLOR: #e2e2e2
}
#CurrentSlideAreaSlideDescription {
	FONT-SIZE: 14px; LEFT: 0px; OVERFLOW: auto; TOP: 0px
}
#CurrentSlideAreaSlideImage {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
#CurrentSlideAreaToolbuttonContainer {
	Z-INDEX: 11; WIDTH: 50px; TOP: -28px
}
.CurrentSlideAreaFullSizeToolbuttonNormal {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaFullSizeToolbuttonOver {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaFullSizeToolbuttonChecked {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaFullSizeToolbuttonDisabled {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaViewportToolbuttonNormal {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaViewportToolbuttonOver {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaViewportToolbuttonChecked {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
.CurrentSlideAreaViewportToolbuttonDisabled {
	DISPLAY: inline; FLOAT: left; WIDTH: 24px; BACKGROUND-REPEAT: =
no-repeat; TOP: 1px; HEIGHT: 28px
}
#PresentationCardArea {
	BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
#PresentationCardAreaFooter {
	BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
#PresentationCardArea {
	Z-INDEX: 2; LEFT: 4px; TOP: 430px
}
#PresentationCardArea {
	BACKGROUND-POSITION: center bottom; BACKGROUND-REPEAT: repeat-x; =
BACKGROUND-COLOR: #f5f5f5
}
.captioningContainer {
	BACKGROUND-POSITION: center bottom; BACKGROUND-REPEAT: repeat-x; =
BACKGROUND-COLOR: #f5f5f5
}
#PresentationCardAreaScrollDiv {
	OVERFLOW-Y: hidden; OVERFLOW-X: hidden
}
.captioningContainer {
	FONT-SIZE: 14px; Z-INDEX: 5; OVERFLOW: auto; WIDTH: 100%; COLOR: #111; =
POSITION: absolute; TEXT-ALIGN: center
}
#CaptioningDisplay {
	MARGIN: 5px
}
.cardInnerPadding {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; =
PADDING-TOP: 0px
}
.cardTitleLink {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: =
3px; COLOR: #555; PADDING-TOP: 3px; BORDER-BOTTOM: #cdcdcd 1px solid; =
TEXT-DECORATION: none
}
.cardTitleLink {
	FONT-WEIGHT: bold
}
.cardLabel {
	FONT-WEIGHT: bold
}
.cardLabel {
	FONT-SIZE: 11px
}
.cardData {
	FONT-SIZE: 11px
}
.cardLabel {
	COLOR: #444; MARGIN-RIGHT: 5px
}
.cardData {
	FONT-WEIGHT: normal; COLOR: #555; TEXT-DECORATION: none
}
.cardItem {
	LINE-HEIGHT: 15px
}
.cardMore {
	RIGHT: 0px; CURSOR: pointer; BOTTOM: 0px; MARGIN-RIGHT: 4px; POSITION: =
absolute
}
#PresentationCardAreaAirDateText {
	MARGIN-LEFT: 4px
}
#PresentationCardAreaAirDateText {
	FONT-SIZE: 9px; COLOR: #777
}
#PresentationCardAreaAirTimeText {
	FONT-SIZE: 9px; COLOR: #777
}
#PresentationCardAreaDurationText {
	FONT-SIZE: 9px; COLOR: #777
}
#PresentationCardAreaDurationLabel {
	FONT-SIZE: 9px; COLOR: #777
}
.cardMore {
	FONT-SIZE: 9px; COLOR: #777
}
#PresentationCardAreaAirTimeText {
	PADDING-LEFT: 5px
}
#PresentationCardAreaDurationLabel {
	PADDING-LEFT: 5px
}
#PresentationCardAreaDurationText {
	PADDING-LEFT: 1px
}
#PresentationCardAreaDescriptionText {
	LINE-HEIGHT: 13px
}
#PresentationCardAreaPresenters {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px; BORDER-BOTTOM: #e8e8e8 1px solid
}
#PresentationCardAreaDescription {
	PADDING-RIGHT: 3px; PADDING-LEFT: 4px; PADDING-BOTTOM: 3px; =
PADDING-TOP: 3px
}
#PresentationCardAreaFooter {
	FONT-SIZE: 8px; LEFT: 0px; WIDTH: 100%; BOTTOM: 0px; BACKGROUND-COLOR: =
#ededed
}
.cardPresenterInfoImage {
	PADDING-RIGHT: 3px; PADDING-BOTTOM: 2px; VERTICAL-ALIGN: middle; WIDTH: =
10px; HEIGHT: 11px
}
.speakerInfoPopup {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #aaa 1px =
solid; MARGIN-TOP: 16px; PADDING-LEFT: 2px; Z-INDEX: 100; =
PADDING-BOTTOM: 2px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 2px; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #fff
}
.speakerInfoPopupDown {
	BORDER-RIGHT: #aaa 1px solid; PADDING-RIGHT: 2px; BORDER-TOP: #aaa 1px =
solid; MARGIN-TOP: 16px; PADDING-LEFT: 2px; Z-INDEX: 100; =
PADDING-BOTTOM: 2px; BORDER-LEFT: #aaa 1px solid; PADDING-TOP: 2px; =
BORDER-BOTTOM: #aaa 1px solid; BACKGROUND-COLOR: #fff
}
.speakerInfoPopupDown {
	MARGIN-TOP: 0px
}
.speakerInfoPopupArrow {
	BACKGROUND-POSITION: 4px 11px; WIDTH: 100%; BACKGROUND-REPEAT: =
no-repeat; POSITION: absolute; HEIGHT: 18px
}
.speakerInfoPopupArrowDown {
	BACKGROUND-POSITION: 4px 11px; WIDTH: 100%; BACKGROUND-REPEAT: =
no-repeat; POSITION: absolute; HEIGHT: 18px
}
.speakerInfoPopupArrowDown {
	BACKGROUND-POSITION: 4px 2px; BOTTOM: 0px; HEIGHT: 21px
}
.speakerInfoPopupContainer {
	MARGIN-TOP: 0px; Z-INDEX: 6; LEFT: 5px; HEIGHT: 96px
}
.speakerInfoPopupContainerDown {
	MARGIN-TOP: 0px; Z-INDEX: 6; LEFT: 5px; HEIGHT: 96px
}
.speakerInfoPopupContainerDown {
	MARGIN-TOP: -82px; HEIGHT: 104px
}
.speakerInfoPopupImageContainer {
	PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; =
PADDING-TOP: 0px
}
.speakerInfoPopupImage {
	WIDTH: auto; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; HEIGHT: 80px; BORDER-BOTTOM-STYLE: none
}
.textSlideListItem {
	WIDTH: 97%
}
.textSlideListItemOver {
	WIDTH: 97%
}
.textSlideListItemCurrent {
	WIDTH: 97%
}
.chapterItem {
	OVERFLOW: hidden; WIDTH: 94%
}
.chapterItemOver {
	OVERFLOW: hidden; WIDTH: 94%
}
.chapterItemCurrent {
	OVERFLOW: hidden; WIDTH: 94%
}
.chapterNumber {
	FONT-SIZE: 11px; POSITION: absolute; TEXT-ALIGN: center
}
.chapterTime {
	FONT-SIZE: 11px; POSITION: absolute; TEXT-ALIGN: center
}
.chapterNumber {
	FONT-WEIGHT: bold; LEFT: 6px; WIDTH: 80px; COLOR: #eee; =
BACKGROUND-COLOR: #999
}
.chapterTime {
	FONT-WEIGHT: bold; LEFT: 86px; WIDTH: 50px
}
.textSlideListContainer {
	OVERFLOW: auto; POSITION: absolute
}
.textSlideListItem {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.textSlideListItemCurrent {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.textSlideListItemOver {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.chapterItem {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.chapterItemCurrent {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.chapterItemOver {
	PADDING-RIGHT: 5px; PADDING-LEFT: 5px; PADDING-BOTTOM: 5px; MARGIN: 3px =
0px 2px 4px; PADDING-TOP: 5px; POSITION: relative; HEIGHT: 15px
}
.textSlideListItemCurrent {
	BORDER-RIGHT: #555 1px solid; BORDER-TOP: #555 1px solid; MARGIN: 3px =
1px 1px 4px; BORDER-LEFT: #555 1px solid; COLOR: #222; BORDER-BOTTOM: =
#555 1px solid; BACKGROUND-COLOR: #fff
}
.chapterItemCurrent {
	BORDER-RIGHT: #555 1px solid; BORDER-TOP: #555 1px solid; MARGIN: 3px =
1px 1px 4px; BORDER-LEFT: #555 1px solid; COLOR: #222; BORDER-BOTTOM: =
#555 1px solid; BACKGROUND-COLOR: #fff
}
.textSlideListNumber {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; LEFT: 6px; VERTICAL-ALIGN: =
baseline; WIDTH: 30px; CURSOR: pointer; COLOR: #eee; HEIGHT: 14px; =
BACKGROUND-COLOR: #999; TEXT-ALIGN: center
}
.textSlideListTime {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; LEFT: 85px; WIDTH: 43px; CURSOR: =
pointer; TEXT-ALIGN: center
}
.textSlideListZoomImage {
	LEFT: 49px; BOTTOM: 2px; BACKGROUND-REPEAT: no-repeat; POSITION: =
absolute
}
.textSlideListZoomImageOver {
	LEFT: 49px; BOTTOM: 2px; BACKGROUND-REPEAT: no-repeat; POSITION: =
absolute
}
.textSlideListZoomImageOver {
	CURSOR: pointer
}
.textSlideListTitleOver {
	CURSOR: pointer
}
.chapterTitleOver {
	CURSOR: pointer
}
.textSlideListTitleOver {
	COLOR: #000; TEXT-DECORATION: underline
}
.chapterTitleOver {
	COLOR: #000; TEXT-DECORATION: underline
}
.textSlideListTitleNormal {
	COLOR: #333; TEXT-DECORATION: none
}
.chapterTitle {
	COLOR: #333; TEXT-DECORATION: none
}
.textSlideListTitleNormal {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.textSlideListTitleOver {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.chapterTitle {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.chapterTime {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.chapterTitleOver {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.textSlideListTime {
	FONT-SIZE: 11px; OVERFLOW: hidden; WHITE-SPACE: nowrap; POSITION: =
absolute; TOP: 6px; HEIGHT: 14px; TEXT-OVERFLOW: ellipsis; =
-o-text-overflow: ellipsis
}
.textSlideListTitleNormal {
	PADDING-RIGHT: 3px; LEFT: 135px
}
.textSlideListTitleOver {
	PADDING-RIGHT: 3px; LEFT: 135px
}
.chapterTitle {
	PADDING-RIGHT: 3px; LEFT: 135px
}
.chapterTitleOver {
	PADDING-RIGHT: 3px; LEFT: 135px
}
.imagePopupZoomElement {
	BORDER-RIGHT: #666 1px solid; BORDER-TOP: #666 1px solid; BACKGROUND: =
white; BORDER-LEFT: #666 1px solid; BORDER-BOTTOM: #666 1px solid
}
#ThumbNailsArea {
	POSITION: absolute
}
.thumbNailTop {
	POSITION: absolute
}
.thumbNailXContainer {
	POSITION: absolute
}
.thumbNailViewButtonsContainer {
	POSITION: absolute
}
.chapterContainer {
	POSITION: absolute
}
.checkbox {
	BACKGROUND-POSITION: left top; PADDING-LEFT: 19px; BACKGROUND-REPEAT: =
no-repeat; HEIGHT: 16px
}
#ThumbNailsArea {
	WIDTH: 100%
}
.chapterContainer {
	WIDTH: 100%
}
.textSlideListContainer {
	WIDTH: 100%
}
#thumbNailPropertiesBackground {
	WIDTH: 100%
}
.chapterContainer {
	HEIGHT: 100%
}
.textSlideListContainer {
	HEIGHT: 100%
}
.thumbNailProperties {
	HEIGHT: 100%
}
#thumbNailPropertiesBackground {
	HEIGHT: 100%
}
#ThumbNailsArea {
	BACKGROUND-POSITION: 50% bottom; DISPLAY: inline-block; Z-INDEX: 1; =
OVERFLOW: hidden; BACKGROUND-REPEAT: repeat-x; TOP: 93px; HEIGHT: 389px; =
BACKGROUND-COLOR: #d4d4d4
}
.thumbNailTop {
	WIDTH: 100%; HEIGHT: 26px; BACKGROUND-COLOR: #ddd
}
.thumbNailXContainer {
	Z-INDEX: 1; LEFT: 0px; TOP: 26px
}
.chapterContainer {
	Z-INDEX: 1; LEFT: 0px; TOP: 26px
}
.thumbNailXContainer {
	OVERFLOW: hidden
}
.chapterContainer {
	OVERFLOW-Y: auto; OVERFLOW-X: hidden
}
.thumbNailViewButtonsContainer {
	LEFT: 5px; TOP: 4px
}
.thumbNailViewButton {
	POSITION: absolute
}
#thumbNailViewButtonSlideList {
	POSITION: absolute
}
#thumbNailViewButtonSmallThumbnails {
	POSITION: absolute
}
#thumbNailViewButtonLargeThumbnails {
	POSITION: absolute
}
#thumbNailViewButtonChapters {
	POSITION: absolute
}
.thumbNailViewButton {
	Z-INDEX: 1; HEIGHT: 18px
}
#thumbNailViewButtonSlideList {
	LEFT: 0px
}
#thumbNailViewButtonSmallThumbnails {
	LEFT: 18px
}
#thumbNailViewButtonLargeThumbnails {
	LEFT: 36px
}
#thumbNailViewButtonChapters {
	LEFT: 54px
}
.thumbNailSlide {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #333; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #f1f1f1
}
.chapterItem {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #333; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #f1f1f1
}
.textSlideListItem {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #333; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #f1f1f1
}
.thumbnailItemCurrent {
	BORDER-RIGHT: #555 1px solid; BORDER-TOP: #555 1px solid; BORDER-LEFT: =
#555 1px solid; COLOR: #222; BORDER-BOTTOM: #555 1px solid; =
BACKGROUND-COLOR: #fff
}
.thumbnailShadowRight {
	RIGHT: -2px; WIDTH: 2px; POSITION: absolute; TOP: 0px; HEIGHT: 100%
}
.thumbnailShadowBottom {
	LEFT: 0px; WIDTH: 100%; BOTTOM: -2px; POSITION: absolute; HEIGHT: 2px
}
.thumbnailShadowCorner {
	RIGHT: -2px; WIDTH: 2px; BOTTOM: -2px; POSITION: absolute; HEIGHT: 2px
}
.thumbnailZoomShadowRight {
	RIGHT: -3px; WIDTH: 3px; POSITION: absolute; TOP: 0px; HEIGHT: 100%
}
.thumbnailZoomShadowBottom {
	LEFT: 0px; WIDTH: 100%; BOTTOM: -3px; POSITION: absolute; HEIGHT: 3px
}
.thumbnailZoomShadowCorner {
	RIGHT: -3px; WIDTH: 3px; BOTTOM: -3px; POSITION: absolute; HEIGHT: 3px
}
.thumbNailZoomElement {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #000; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #fefefe
}
.thumbNailSlideX {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #000; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #fefefe
}
.chapterItemOver {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #000; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #fefefe
}
.textSlideListItemOver {
	BORDER-RIGHT: #9b9b9b 1px solid; BORDER-TOP: #9b9b9b 1px solid; =
BORDER-LEFT: #9b9b9b 1px solid; COLOR: #000; BORDER-BOTTOM: #9b9b9b 1px =
solid; BACKGROUND-COLOR: #fefefe
}
.thumbnailItemCurrent {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 4px =
1px 2px 2px; PADDING-TOP: 2px; TEXT-ALIGN: center
}
.thumbNailSlide {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 4px =
1px 2px 2px; PADDING-TOP: 2px; TEXT-ALIGN: center
}
.thumbNailSlideX {
	PADDING-RIGHT: 2px; PADDING-LEFT: 2px; PADDING-BOTTOM: 2px; MARGIN: 4px =
1px 2px 2px; PADDING-TOP: 2px; TEXT-ALIGN: center
}
.thumbNailSlideNumber {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: left; MARGIN: 2px; =
TEXT-ALIGN: left
}
.thumbNailSlideNumberCurrent {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: left; MARGIN: 2px; =
TEXT-ALIGN: left
}
.thumbNailSlideNumberCurrent {
	COLOR: #222
}
.textSlideListItemCurrent {
	COLOR: #222
}
.textSlideListItemCurrent .textSlideListTitleOver {
	COLOR: #222
}
.thumbNailExpandCollapseExpanded {
	LEFT: 28px; MARGIN: 2px; WIDTH: 14px; TOP: 3px; HEIGHT: 14px
}
.thumbNailExpandCollapseCollapsed {
	LEFT: 28px; MARGIN: 2px; WIDTH: 14px; TOP: 3px; HEIGHT: 14px
}
.thumbNailExpandCollapseCollapsed {
	BACKGROUND-POSITION: 0px 1px; BACKGROUND-REPEAT: no-repeat
}
.thumbnailHandle {
	HEIGHT: 18px
}
.thumbNailTiming {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: right; MARGIN: 2px; =
TEXT-ALIGN: right
}
.thumbNailZoomElement {
	PADDING-RIGHT: 3px; PADDING-LEFT: 3px; Z-INDEX: 2; LEFT: 0px; =
VISIBILITY: hidden; PADDING-BOTTOM: 3px; PADDING-TOP: 3px; POSITION: =
absolute; TOP: 0px
}
.thumbNailZoomBottomDiv {
	HEIGHT: 25px
}
.thumbNailZoomImageDiv {
	CURSOR: pointer
}
.thumbnailHandle {
	CURSOR: pointer
}
.thumbnailFocusCatcher {
	CURSOR: pointer
}
.thumbNailZoomAnchorElement {
	CURSOR: pointer
}
.thumbNailZoomAnchorElement {
	BACKGROUND-POSITION: 22px 7px; LEFT: -36px; WIDTH: 41px; =
BACKGROUND-REPEAT: no-repeat; POSITION: absolute; HEIGHT: 39px
}
.thumbNailZoomSlideNumber {
	FONT-WEIGHT: bold; FONT-SIZE: 15px; FLOAT: left; MARGIN: 4px; =
TEXT-ALIGN: left
}
.thumbNailZoomTiming {
	FONT-WEIGHT: bold; FONT-SIZE: 15px; FLOAT: right; MARGIN: 4px; =
TEXT-ALIGN: left
}
.thumbnailZoomFocusCatcher {
	POSITION: absolute; HEIGHT: 100%
}
.thumbNailZoomExpandCollapseCollapsed {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomExpandCollapseExpanded {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomPreviewLinkNormalSmall {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomPreviewLinkOverSmall {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomPlayLinkNormal {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomPlayLinkOver {
	FONT-SIZE: 9px; FLOAT: right; MARGIN: 7px 2px 2px; WIDTH: 12px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; HEIGHT: 12px
}
.thumbNailZoomExpandCollapseCollapsed {
	CURSOR: pointer
}
.thumbNailZoomExpandCollapseExpanded {
	CURSOR: pointer
}
.thumbNailZoomPreviewLinkNormalSmall {
	CURSOR: pointer
}
.thumbNailZoomPreviewLinkOverSmall {
	CURSOR: pointer
}
.thumbNailZoomPlayLinkNormal {
	CURSOR: pointer
}
.thumbNailZoomPlayLinkOver {
	CURSOR: pointer
}
.thumbNailZoomExpandCollapseCollapsed {
	RIGHT: -3px; WIDTH: 23px; POSITION: absolute; TOP: -8px; HEIGHT: 27px
}
.thumbNailZoomExpandCollapseExpanded {
	RIGHT: -3px; WIDTH: 23px; POSITION: absolute; TOP: -8px; HEIGHT: 27px
}
.thumbNailExpandCollapseCollapsedSmall {
	RIGHT: -3px; MARGIN: 0px; WIDTH: 25px; CURSOR: pointer; POSITION: =
absolute; TOP: -1px; HEIGHT: 27px
}
.thumbNailExpandCollapseExpandedSmall {
	RIGHT: -3px; MARGIN: 0px; WIDTH: 25px; CURSOR: pointer; POSITION: =
absolute; TOP: -1px; HEIGHT: 27px
}
.thumbNailZoomPreviewLinkNormalSmall {
	CURSOR: pointer
}
.thumbNailZoomPreviewLinkOverSmall {
	CURSOR: pointer
}
.thumbNailZoomPlayLinkNormal {
	RIGHT: 70px; WIDTH: 13px
}
.thumbNailZoomPlayLinkOver {
	RIGHT: 70px; WIDTH: 13px
}
.listZoomPlayLinkNormal {
	FONT-SIZE: 0px; CURSOR: pointer; BACKGROUND-REPEAT: no-repeat; =
POSITION: absolute; TOP: 6px; HEIGHT: 12px
}
.listZoomPlayLinkOver {
	FONT-SIZE: 0px; CURSOR: pointer; BACKGROUND-REPEAT: no-repeat; =
POSITION: absolute; TOP: 6px; HEIGHT: 12px
}
.listZoomPreviewLinkNormalSmall {
	FONT-SIZE: 0px; CURSOR: pointer; BACKGROUND-REPEAT: no-repeat; =
POSITION: absolute; TOP: 6px; HEIGHT: 12px
}
.listZoomPreviewLinkOverSmall {
	FONT-SIZE: 0px; CURSOR: pointer; BACKGROUND-REPEAT: no-repeat; =
POSITION: absolute; TOP: 6px; HEIGHT: 12px
}
.listZoomPreviewLinkNormalSmall {
	LEFT: 82px; WIDTH: 12px
}
.listZoomPreviewLinkOverSmall {
	LEFT: 82px; WIDTH: 12px
}
.listZoomPlayLinkNormal {
	LEFT: 97px; WIDTH: 13px
}
.listZoomPlayLinkOver {
	LEFT: 97px; WIDTH: 13px
}
.thumbNailPagerContainer {
	FLOAT: right; MARGIN: 5px 5px 0px; TEXT-ALIGN: right
}
.thumbNailPageLabel {
	FONT-WEIGHT: bold; FONT-SIZE: 11px; FLOAT: left; MARGIN-RIGHT: 4px
}
.thumbNailPageNormal {
	PADDING-RIGHT: 2px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; FONT-SIZE: =
11px; FLOAT: left; PADDING-BOTTOM: 0px; COLOR: #666; PADDING-TOP: 0px
}
.thumbNailPageCurrent {
	PADDING-RIGHT: 2px; PADDING-LEFT: 0px; FONT-WEIGHT: bold; FONT-SIZE: =
11px; FLOAT: left; PADDING-BOTTOM: 0px; PADDING-TOP: 0px
}
.thumbNailPagePrevious {
	MARGIN-TOP: 3px; FLOAT: left; WIDTH: 5px; MARGIN-RIGHT: 3px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 9px
}
.thumbNailPageNext {
	MARGIN-TOP: 3px; FLOAT: left; WIDTH: 5px; MARGIN-RIGHT: 3px; =
BACKGROUND-REPEAT: no-repeat; HEIGHT: 9px
}
.thumbNailPageNext {
	MARGIN-LEFT: 3px; MARGIN-RIGHT: 0px
}
.statusBar {
	BACKGROUND-REPEAT: repeat-x; HEIGHT: 16px; BACKGROUND-COLOR: #000
}
.statusBarLeft {
	FONT-SIZE: 11px; COLOR: #fff; POSITION: relative; TOP: 1px
}
.statusBarRight {
	FONT-SIZE: 11px; COLOR: #fff; POSITION: relative; TOP: 1px
}
.statusBarLeft {
	LEFT: 6px; FLOAT: left
}
.statusBarRight {
	RIGHT: 6px; FLOAT: right
}
#btnChangeVideoPositionImg {
	BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: =
none; BORDER-BOTTOM-STYLE: none
}
.dialogFrame {
	BORDER-RIGHT: #a2a2a2 1px solid; BORDER-TOP: #a2a2a2 1px solid; =
FONT-SIZE: 12px; Z-INDEX: 4; MARGIN: auto; BORDER-LEFT: #a2a2a2 1px =
solid; WIDTH: 400px; BORDER-BOTTOM: #a2a2a2 1px solid; POSITION: =
relative; TOP: 160px; HEIGHT: auto; BACKGROUND-COLOR: #fff
}
.dialogTitle {
	PADDING-RIGHT: 0px; BACKGROUND-POSITION: 50% bottom; PADDING-LEFT: 4px; =
FONT-WEIGHT: bold; FONT-SIZE: 14px; PADDING-BOTTOM: 3px; COLOR: #efefef; =
PADDING-TOP: 3px; BORDER-BOTTOM: #a2a2a2 1px solid; BACKGROUND-REPEAT: =
repeat-x; BACKGROUND-COLOR: #fff; TEXT-ALIGN: left
}
.dialogIcon {
	PADDING-RIGHT: 4px; LEFT: 0px; FLOAT: left; WIDTH: 18px; =
BACKGROUND-REPEAT: no-repeat; POSITION: relative; TOP: -3px; HEIGHT: =
22px
}
#linksIcon {
	HEIGHT: 20px
}
.dialogTitleText {
=09
}
.dialogCloseButtonNormal {
	CURSOR: pointer
}
.dialogCloseButtonOver {
	CURSOR: pointer
}
.dialogButton {
	CURSOR: pointer
}
.dialogCloseButtonNormal {
	RIGHT: 0px; WIDTH: 18px; BACKGROUND-REPEAT: no-repeat; POSITION: =
absolute; TOP: 0px; HEIGHT: 22px
}
.dialogCloseButtonOver {
	RIGHT: 0px; WIDTH: 18px; BACKGROUND-REPEAT: no-repeat; POSITION: =
absolute; TOP: 0px; HEIGHT: 22px
}
.dialogMessageText {
	PADDING-RIGHT: 8px; PADDING-LEFT: 10px; PADDING-BOTTOM: 8px; =
PADDING-TOP: 8px
}
#ChapterPointsPanelDialog {
	Z-INDEX: 5; OVERFLOW: hidden; POSITION: absolute; TOP: 15px
}
#ChapterPointsPanelDialogMessage {
	PADDING-RIGHT: 0px; OVERFLOW-Y: auto; PADDING-LEFT: 0px; LEFT: 0px; =
OVERFLOW-X: hidden; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; =
POSITION: absolute
}
.dialogInternalContent {
	PADDING-RIGHT: 4px; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; =
PADDING-TOP: 4px
}
.dialogButtonContainer {
	RIGHT: 6px; FLOAT: right; BOTTOM: 6px; POSITION: relative
}
#emailInviteButtons {
=09
}
#askQuestionButtons {
=09
}
.dialogButton {
	FONT-WEIGHT: bold; FONT-SIZE: 12px; WIDTH: 58px; COLOR: #efefef; =
LINE-HEIGHT: 20px; BACKGROUND-REPEAT: no-repeat; HEIGHT: 21px; =
TEXT-ALIGN: center
}
.dialogFieldset {
	BORDER-RIGHT: #666 1px solid; PADDING-RIGHT: 7px; BORDER-TOP: #666 1px =
solid; PADDING-LEFT: 5px; FONT-SIZE: 12px; PADDING-BOTTOM: 5px; =
BORDER-LEFT: #666 1px solid; WIDTH: 163px; COLOR: #666; PADDING-TOP: =
3px; BORDER-BOTTOM: #666 1px solid
}
.dialogFieldset IMG {
	PADDING-RIGHT: 1px; POSITION: relative; TOP: 2px
}
.dialogFieldset LABEL {
	POSITION: relative
}
.dialogFieldset LEGEND {
	COLOR: #333
}
#EmbeddedPlayer {
	WIDTH: 1px
}
.corePlayerPosition {
	WIDTH: 1px
}
.videoContainer {
	WIDTH: 1px
}
#SamiDropDownArea {
	WIDTH: 1px
}
#EmbeddedPlayer {
	HEIGHT: 1px; BACKGROUND-COLOR: #000
}
.videoContainer {
	HEIGHT: 1px; BACKGROUND-COLOR: #000
}
#EmbeddedPlayer {
	POSITION: relative
}
.playerControlContainer {
	BACKGROUND: #606060; WIDTH: 238px; POSITION: relative; HEIGHT: 42px
}
.videoContainer {
	POSITION: relative
}
.playPause {
	DISPLAY: block; POSITION: absolute
}
.skipBack {
	DISPLAY: block; POSITION: absolute
}
.playStop {
	DISPLAY: block; POSITION: absolute
}
.playFullScreen {
	DISPLAY: block; POSITION: absolute
}
.playerSlider {
	DISPLAY: block; POSITION: absolute
}
.changeVideoPosition {
	DISPLAY: block; POSITION: absolute
}
#PlayerSlider_positionGuide {
	DISPLAY: block; POSITION: absolute
}
#PlayerSlider_thumb {
	DISPLAY: block; POSITION: absolute
}
#VolumeSlider_positionGuide {
	DISPLAY: block; POSITION: absolute
}
#VolumeSlider_thumb {
	DISPLAY: block; POSITION: absolute
}
.volSlider {
	DISPLAY: block; POSITION: absolute
}
.volMute {
	DISPLAY: block; POSITION: absolute
}
.captioningToggle {
	DISPLAY: block; POSITION: absolute
}
.chapterToggle {
	DISPLAY: block; POSITION: absolute
}
#PlayerSlider_thumb {
	BACKGROUND-REPEAT: no-repeat
}
#VolumeSlider_thumb {
	BACKGROUND-REPEAT: no-repeat
}
#VolumeSlider_positionGuide {
	BACKGROUND-REPEAT: repeat-x
}
.playerSlider {
	LEFT: 8px; TOP: 0px
}
.playerSlider {
	WIDTH: 222px; HEIGHT: 14px
}
#PlayerSlider_positionGuide {
	WIDTH: 222px; HEIGHT: 14px
}
.volSlider {
	LEFT: 175px; TOP: 12px
}
.volSlider {
	WIDTH: 33px; HEIGHT: 30px
}
#VolumeSlider_positionGuide {
	WIDTH: 33px; HEIGHT: 30px
}
#PlayerSlider_thumb {
	Z-INDEX: 5; LEFT: -7px; WIDTH: 14px; TOP: 0px; HEIGHT: 11px
}
#VolumeSlider_thumb {
	Z-INDEX: 5; LEFT: 0px; WIDTH: 12px; TOP: 0px; HEIGHT: 30px
}
#PlayerSlider_positionGuide {
	Z-INDEX: 1
}
#VolumeSlider_positionGuide {
	Z-INDEX: 1
}
#PlayerSlider_positionGuide {
	CURSOR: pointer
}
#PlayerSlider_thumb {
	CURSOR: pointer
}
#VolumeSlider_positionGuide {
	CURSOR: pointer
}
#VolumeSlider_thumb {
	CURSOR: pointer
}
.volMute {
	LEFT: 145px; TOP: 12px
}
.playPause {
	DISPLAY: block; WIDTH: 30px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 30px; =
BORDER-BOTTOM-STYLE: none
}
.playPause IMG {
	DISPLAY: block; WIDTH: 30px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 30px; =
BORDER-BOTTOM-STYLE: none
}
.skipBack {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.skipBack IMG {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.playStop {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.playStop IMG {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.playFullScreen {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.captioningToggle {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.captioningToggle IMG {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.playFullScreen IMG {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.chapterToggle {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.chapterToggle IMG {
	WIDTH: 30px; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; =
BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: transparent; =
BORDER-BOTTOM-STYLE: none
}
.volMute {
	DISPLAY: block; WIDTH: 15px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 30px; =
BORDER-BOTTOM-STYLE: none
}
.volMute IMG {
	DISPLAY: block; WIDTH: 15px; BORDER-TOP-STYLE: none; =
BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; HEIGHT: 30px; =
BORDER-BOTTOM-STYLE: none
}
.playPause {
	TOP: 12px
}
.skipBack {
	TOP: 12px
}
.playStop {
	TOP: 12px
}
.playFullScreen {
	TOP: 12px
}
.changeVideoPosition {
	TOP: 12px
}
.captioningToggle {
	TOP: 12px
}
.chapterToggle {
	TOP: 12px
}
.playPause {
	LEFT: 0px
}
.skipBack {
	LEFT: 32px
}
.playStop {
	LEFT: 56px
}
.playFullScreen {
	LEFT: 209px
}
.captioningToggle {
	LEFT: 220px
}
.chapterToggle {
	LEFT: 180px
}
.playPause A:active IMG {
	DISPLAY: block
}
.skipBack A:active IMG {
	DISPLAY: block
}
.playPause A:focus IMG {
	DISPLAY: block
}
.skipBack A:focus IMG {
	DISPLAY: block
}
.playPause A:hover IMG {
	DISPLAY: block
}
.skipBack A:hover IMG {
	DISPLAY: block
}
.playStop A:active IMG {
	DISPLAY: block
}
.playFullScreen A:active IMG {
	DISPLAY: block
}
.playStop A:focus IMG {
	DISPLAY: block
}
.playFullScreen A:focus IMG {
	DISPLAY: block
}
.captioningToggle A:active IMG {
	DISPLAY: block
}
.captioningToggle A:focus IMG {
	DISPLAY: block
}
.captioningToggle A:hover IMG {
	DISPLAY: block
}
.changeVideoPosition A:active IMG {
	DISPLAY: block
}
.changeVideoPosition A:focus IMG {
	DISPLAY: block
}
.changeVideoPosition A:hover IMG {
	DISPLAY: block
}
.playStop A:hover IMG {
	DISPLAY: block
}
.playFullScreen A:hover IMG {
	DISPLAY: block
}
.playerSlider {
	DISPLAY: block
}
.videoContainer {
	DISPLAY: block
}
#PlayerSpeedControl {
	DISPLAY: block; Z-INDEX: 5; LEFT: 88px; WIDTH: 36px; POSITION: =
absolute; TOP: 12px
}
.PlayerSpeedControlLeftNormal {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlLeftOver {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlLeftDisabled {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlRightNormal {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlRightOver {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlRightDisabled {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlMiddleNormal {
	WIDTH: 14px; BACKGROUND-REPEAT: no-repeat; POSITION: absolute
}
.PlayerSpeedControlRightNormal {
	TOP: 0px; HEIGHT: 19px
}
.PlayerSpeedControlRightOver {
	TOP: 0px; HEIGHT: 19px
}
.PlayerSpeedControlRightDisabled {
	TOP: 0px; HEIGHT: 19px
}
.PlayerSpeedControlLeftNormal {
	BACKGROUND-POSITION: left -19px; TOP: 19px; HEIGHT: 14px
}
.PlayerSpeedControlLeftOver {
	BACKGROUND-POSITION: left -19px; TOP: 19px; HEIGHT: 14px
}
.PlayerSpeedControlLeftDisabled {
	BACKGROUND-POSITION: left -19px; TOP: 19px; HEIGHT: 14px
}
.PlayerSpeedControlMiddleNormal {
	FONT-SIZE: 10px; LEFT: 13px; WIDTH: 25px; COLOR: #ccc; PADDING-TOP: =
12px; BACKGROUND-REPEAT: repeat-x; POSITION: absolute; TOP: 0px; HEIGHT: =
30px; TEXT-ALIGN: center
}
.PlayerSpeedControlRightNormal {
	LEFT: 0px
}
.PlayerSpeedControlRightOver {
	LEFT: 0px
}
.PlayerSpeedControlRightDisabled {
	LEFT: 0px
}
.PlayerSpeedControlLeftOver {
	CURSOR: pointer
}
.PlayerSpeedControlRightOver {
	CURSOR: pointer
}
.languageSelectionArea {
	Z-INDEX: 10; FLOAT: right; CURSOR: pointer; POSITION: relative
}
.divLanguageSelectionMenuMiddle {
	FONT-SIZE: 9px
}
.divLanguageSelectionMenuMiddleOver {
	FONT-SIZE: 9px
}
.divLanguageSelectionMenuSelectedLeafMiddle {
	FONT-SIZE: 9px
}
.divLanguageSelectionMenuSelectedLeafMiddleOver {
	FONT-SIZE: 9px
}
.divLanguageSelectionMenuBaseMiddle {
	CURSOR: pointer; BACKGROUND-REPEAT: no-repeat
}
.divLanguageSelectionMenuBaseMiddleOver {
	CURSOR: pointer; BACKGROUND-REPEAT: no-repeat
}
.divLanguageSelectionMenuBaseRight {
	BACKGROUND-POSITION: 5px 6px; BACKGROUND-REPEAT: no-repeat
}
.divLanguageSelectionMenuBaseRightOver {
	BACKGROUND-POSITION: 5px 6px; BACKGROUND-REPEAT: no-repeat
}
.divLanguageSelectionMenuLeft {
	BACKGROUND-POSITION: 4px 0px; PADDING-LEFT: 4px; BACKGROUND-REPEAT: =
no-repeat
}
.divLanguageSelectionMenuLeftOver {
	BACKGROUND-POSITION: 4px 0px; PADDING-LEFT: 4px; BACKGROUND-REPEAT: =
no-repeat
}
.divLanguageSelectionMenuSelectedLeafLeft {
	BACKGROUND-POSITION: 4px 0px; PADDING-LEFT: 4px; BACKGROUND-REPEAT: =
no-repeat
}
.divLanguageSelectionMenuSelectedLeafLeftOver {
	BACKGROUND-POSITION: 4px 0px; PADDING-LEFT: 4px; BACKGROUND-REPEAT: =
no-repeat
}
.divLanguageSelectionMenuBaseLeft {
	COLOR: #fff; BACKGROUND-COLOR: transparent
}
.divLanguageSelectionMenuBaseRight {
	COLOR: #fff; BACKGROUND-COLOR: transparent
}
.divLanguageSelectionMenuBaseMiddle {
	COLOR: #fff; BACKGROUND-COLOR: transparent
}
.divLanguageSelectionMenuLeftOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuRightOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuMiddleOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuSelectedLeafLeftOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuSelectedLeafRightOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuSelectedLeafMiddleOver {
	COLOR: #fff; BACKGROUND-COLOR: #999
}
.divLanguageSelectionMenuSelectedLeafMiddle {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}
.divLanguageSelectionMenuSelectedLeafLeft {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}
.divLanguageSelectionMenuSelectedLeafRight {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}
.divLanguageSelectionMenuLeft {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}
.divLanguageSelectionMenuRight {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}
.divLanguageSelectionMenuMiddle {
	COLOR: #eee; BACKGROUND-COLOR: #919191
}

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/WebResource.axd?d=BZpzJFi3O7efX6u8u1lnDwzjW7Wff9MRM28EL4opL6_208o-G7WWw0AYb1PorWZuqKq1MHgGQZlAn8Wh89kuBS54fj41&t=634210220612724343

function WebForm_PostBackOptions(eventTarget, eventArgument, validation, =
validationGroup, actionUrl, trackFocus, clientSubmit) {
    this.eventTarget =3D eventTarget;
    this.eventArgument =3D eventArgument;
    this.validation =3D validation;
    this.validationGroup =3D validationGroup;
    this.actionUrl =3D actionUrl;
    this.trackFocus =3D trackFocus;
    this.clientSubmit =3D clientSubmit;
}
function WebForm_DoPostBackWithOptions(options) {
    var validationResult =3D true;
    if (options.validation) {
        if (typeof(Page_ClientValidate) =3D=3D 'function') {
            validationResult =3D =
Page_ClientValidate(options.validationGroup);
        }
    }
    if (validationResult) {
        if ((typeof(options.actionUrl) !=3D "undefined") && =
(options.actionUrl !=3D null) && (options.actionUrl.length > 0)) {
            theForm.action =3D options.actionUrl;
        }
        if (options.trackFocus) {
            var lastFocus =3D theForm.elements["__LASTFOCUS"];
            if ((typeof(lastFocus) !=3D "undefined") && (lastFocus !=3D =
null)) {
                if (typeof(document.activeElement) =3D=3D "undefined") {
                    lastFocus.value =3D options.eventTarget;
                }
                else {
                    var active =3D document.activeElement;
                    if ((typeof(active) !=3D "undefined") && (active =
!=3D null)) {
                        if ((typeof(active.id) !=3D "undefined") && =
(active.id !=3D null) && (active.id.length > 0)) {
                            lastFocus.value =3D active.id;
                        }
                        else if (typeof(active.name) !=3D "undefined") {
                            lastFocus.value =3D active.name;
                        }
                    }
                }
            }
        }
    }
    if (options.clientSubmit) {
        __doPostBack(options.eventTarget, options.eventArgument);
    }
}
var __pendingCallbacks =3D new Array();
var __synchronousCallBackIndex =3D -1;
function WebForm_DoCallback(eventTarget, eventArgument, eventCallback, =
context, errorCallback, useAsync) {
    var postData =3D __theFormPostData +
                "__CALLBACKID=3D" + WebForm_EncodeCallback(eventTarget) =
+
                "&__CALLBACKPARAM=3D" + =
WebForm_EncodeCallback(eventArgument);
    if (theForm["__EVENTVALIDATION"]) {
        postData +=3D "&__EVENTVALIDATION=3D" + =
WebForm_EncodeCallback(theForm["__EVENTVALIDATION"].value);
    }
    var xmlRequest,e;
    try {
        xmlRequest =3D new XMLHttpRequest();
    }
    catch(e) {
        try {
            xmlRequest =3D new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(e) {
        }
    }
    var setRequestHeaderMethodExists =3D true;
    try {
        setRequestHeaderMethodExists =3D (xmlRequest && =
xmlRequest.setRequestHeader);
    }
    catch(e) {}
    var callback =3D new Object();
    callback.eventCallback =3D eventCallback;
    callback.context =3D context;
    callback.errorCallback =3D errorCallback;
    callback.async =3D useAsync;
    var callbackIndex =3D =
WebForm_FillFirstAvailableSlot(__pendingCallbacks, callback);
    if (!useAsync) {
        if (__synchronousCallBackIndex !=3D -1) {
            __pendingCallbacks[__synchronousCallBackIndex] =3D null;
        }
        __synchronousCallBackIndex =3D callbackIndex;
    }
    if (setRequestHeaderMethodExists) {
        xmlRequest.onreadystatechange =3D WebForm_CallbackComplete;
        callback.xmlRequest =3D xmlRequest;
        xmlRequest.open("POST", theForm.action, true);
        xmlRequest.setRequestHeader("Content-Type", =
"application/x-www-form-urlencoded; charset=3Dutf-8");
        xmlRequest.send(postData);
        return;
    }
    callback.xmlRequest =3D new Object();
    var callbackFrameID =3D "__CALLBACKFRAME" + callbackIndex;
    var xmlRequestFrame =3D document.frames[callbackFrameID];
    if (!xmlRequestFrame) {
        xmlRequestFrame =3D document.createElement("IFRAME");
        xmlRequestFrame.width =3D "1";
        xmlRequestFrame.height =3D "1";
        xmlRequestFrame.frameBorder =3D "0";
        xmlRequestFrame.id =3D callbackFrameID;
        xmlRequestFrame.name =3D callbackFrameID;
        xmlRequestFrame.style.position =3D "absolute";
        xmlRequestFrame.style.top =3D "-100px"
        xmlRequestFrame.style.left =3D "-100px";
        try {
            if (callBackFrameUrl) {
                xmlRequestFrame.src =3D callBackFrameUrl;
            }
        }
        catch(e) {}
        document.body.appendChild(xmlRequestFrame);
    }
    var interval =3D window.setInterval(function() {
        xmlRequestFrame =3D document.frames[callbackFrameID];
        if (xmlRequestFrame && xmlRequestFrame.document) {
            window.clearInterval(interval);
            xmlRequestFrame.document.write("");
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.write('<html><body><form =
method=3D"post"><input type=3D"hidden" name=3D"__CALLBACKLOADSCRIPT" =
value=3D"t"></form></body></html>');
            xmlRequestFrame.document.close();
            xmlRequestFrame.document.forms[0].action =3D theForm.action;
            var count =3D __theFormPostCollection.length;
            var element;
            for (var i =3D 0; i < count; i++) {
                element =3D __theFormPostCollection[i];
                if (element) {
                    var fieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                    fieldElement.type =3D "hidden";
                    fieldElement.name =3D element.name;
                    fieldElement.value =3D element.value;
                    =
xmlRequestFrame.document.forms[0].appendChild(fieldElement);
                }
            }
            var callbackIdFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIdFieldElement.type =3D "hidden";
            callbackIdFieldElement.name =3D "__CALLBACKID";
            callbackIdFieldElement.value =3D eventTarget;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIdFieldElement);
            var callbackParamFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackParamFieldElement.type =3D "hidden";
            callbackParamFieldElement.name =3D "__CALLBACKPARAM";
            callbackParamFieldElement.value =3D eventArgument;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackParamFieldElement);=

            if (theForm["__EVENTVALIDATION"]) {
                var callbackValidationFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
                callbackValidationFieldElement.type =3D "hidden";
                callbackValidationFieldElement.name =3D =
"__EVENTVALIDATION";
                callbackValidationFieldElement.value =3D =
theForm["__EVENTVALIDATION"].value;
                =
xmlRequestFrame.document.forms[0].appendChild(callbackValidationFieldElem=
ent);
            }
            var callbackIndexFieldElement =3D =
xmlRequestFrame.document.createElement("INPUT");
            callbackIndexFieldElement.type =3D "hidden";
            callbackIndexFieldElement.name =3D "__CALLBACKINDEX";
            callbackIndexFieldElement.value =3D callbackIndex;
            =
xmlRequestFrame.document.forms[0].appendChild(callbackIndexFieldElement);=

            xmlRequestFrame.document.forms[0].submit();
        }
    }, 10);
}
function WebForm_CallbackComplete() {
    for (var i =3D 0; i < __pendingCallbacks.length; i++) {
        callbackObject =3D __pendingCallbacks[i];
        if (callbackObject && callbackObject.xmlRequest && =
(callbackObject.xmlRequest.readyState =3D=3D 4)) {
            if (!__pendingCallbacks[i].async) {
                __synchronousCallBackIndex =3D -1;
            }
            __pendingCallbacks[i] =3D null;
            var callbackFrameID =3D "__CALLBACKFRAME" + i;
            var xmlRequestFrame =3D =
document.getElementById(callbackFrameID);
            if (xmlRequestFrame) {
                xmlRequestFrame.parentNode.removeChild(xmlRequestFrame);
            }
            WebForm_ExecuteCallback(callbackObject);
        }
    }
}
function WebForm_ExecuteCallback(callbackObject) {
    var response =3D callbackObject.xmlRequest.responseText;
    if (response.charAt(0) =3D=3D "s") {
        if ((typeof(callbackObject.eventCallback) !=3D "undefined") && =
(callbackObject.eventCallback !=3D null)) {
            callbackObject.eventCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else if (response.charAt(0) =3D=3D "e") {
        if ((typeof(callbackObject.errorCallback) !=3D "undefined") && =
(callbackObject.errorCallback !=3D null)) {
            callbackObject.errorCallback(response.substring(1), =
callbackObject.context);
        }
    }
    else {
        var separatorIndex =3D response.indexOf("|");
        if (separatorIndex !=3D -1) {
            var validationFieldLength =3D parseInt(response.substring(0, =
separatorIndex));
            if (!isNaN(validationFieldLength)) {
                var validationField =3D =
response.substring(separatorIndex + 1, separatorIndex + =
validationFieldLength + 1);
                if (validationField !=3D "") {
                    var validationFieldElement =3D =
theForm["__EVENTVALIDATION"];
                    if (!validationFieldElement) {
                        validationFieldElement =3D =
document.createElement("INPUT");
                        validationFieldElement.type =3D "hidden";
                        validationFieldElement.name =3D =
"__EVENTVALIDATION";
                        theForm.appendChild(validationFieldElement);
                    }
                    validationFieldElement.value =3D validationField;
                }
                if ((typeof(callbackObject.eventCallback) !=3D =
"undefined") && (callbackObject.eventCallback !=3D null)) {
                    =
callbackObject.eventCallback(response.substring(separatorIndex + =
validationFieldLength + 1), callbackObject.context);
                }
            }
        }
    }
}
function WebForm_FillFirstAvailableSlot(array, element) {
    var i;
    for (i =3D 0; i < array.length; i++) {
        if (!array[i]) break;
    }
    array[i] =3D element;
    return i;
}
var __nonMSDOMBrowser =3D =
(window.navigator.appName.toLowerCase().indexOf('explorer') =3D=3D -1);
var __theFormPostData =3D "";
var __theFormPostCollection =3D new Array();
function WebForm_InitCallback() {
    var count =3D theForm.elements.length;
    var element;
    for (var i =3D 0; i < count; i++) {
        element =3D theForm.elements[i];
        var tagName =3D element.tagName.toLowerCase();
        if (tagName =3D=3D "input") {
            var type =3D element.type;
            if ((type =3D=3D "text" || type =3D=3D "hidden" || type =
=3D=3D "password" ||
                ((type =3D=3D "checkbox" || type =3D=3D "radio") && =
element.checked)) &&
                (element.id !=3D "__EVENTVALIDATION")) {
                WebForm_InitCallbackAddField(element.name, =
element.value);
            }
        }
        else if (tagName =3D=3D "select") {
            var selectCount =3D element.options.length;
            for (var j =3D 0; j < selectCount; j++) {
                var selectChild =3D element.options[j];
                if (selectChild.selected =3D=3D true) {
                    WebForm_InitCallbackAddField(element.name, =
element.value);
                }
            }
        }
        else if (tagName =3D=3D "textarea") {
            WebForm_InitCallbackAddField(element.name, element.value);
        }
    }
}
function WebForm_InitCallbackAddField(name, value) {
    var nameValue =3D new Object();
    nameValue.name =3D name;
    nameValue.value =3D value;
    __theFormPostCollection[__theFormPostCollection.length] =3D =
nameValue;
    __theFormPostData +=3D WebForm_EncodeCallback(name) + "=3D" + =
WebForm_EncodeCallback(value) + "&";
}
function WebForm_EncodeCallback(parameter) {
    if (encodeURIComponent) {
        return encodeURIComponent(parameter);
    }
    else {
        return escape(parameter);
    }
}
var __disabledControlArray =3D new Array();
function WebForm_ReEnableControls() {
    if (typeof(__enabledControlArray) =3D=3D 'undefined') {
        return false;
    }
    var disabledIndex =3D 0;
    for (var i =3D 0; i < __enabledControlArray.length; i++) {
        var c;
        if (__nonMSDOMBrowser) {
            c =3D document.getElementById(__enabledControlArray[i]);
        }
        else {
            c =3D document.all[__enabledControlArray[i]];
        }
        if ((typeof(c) !=3D "undefined") && (c !=3D null) && (c.disabled =
=3D=3D true)) {
            c.disabled =3D false;
            __disabledControlArray[disabledIndex++] =3D c;
        }
    }
    setTimeout("WebForm_ReDisableControls()", 0);
    return true;
}
function WebForm_ReDisableControls() {
    for (var i =3D 0; i < __disabledControlArray.length; i++) {
        __disabledControlArray[i].disabled =3D true;
    }
}
function WebForm_FireDefaultButton(event, target) {
    if (event.keyCode =3D=3D 13) {
        var src =3D event.srcElement || event.target;
        if (!src || (src.tagName.toLowerCase() !=3D "textarea")) {
            var defaultButton;
            if (__nonMSDOMBrowser) {
               defaultButton =3D document.getElementById(target);
            }
            else {
                defaultButton =3D document.all[target];
            }
            if (defaultButton && typeof(defaultButton.click) !=3D =
"undefined") {
                defaultButton.click();
                event.cancelBubble =3D true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_GetScrollX() {
    if (__nonMSDOMBrowser) {
        return window.pageXOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollLeft) {
            return document.documentElement.scrollLeft;
        }
        else if (document.body) {
            return document.body.scrollLeft;
        }
    }
    return 0;
}
function WebForm_GetScrollY() {
    if (__nonMSDOMBrowser) {
        return window.pageYOffset;
    }
    else {
        if (document.documentElement && =
document.documentElement.scrollTop) {
            return document.documentElement.scrollTop;
        }
        else if (document.body) {
            return document.body.scrollTop;
        }
    }
    return 0;
}
function WebForm_SaveScrollPositionSubmit() {
    if (__nonMSDOMBrowser) {
        theForm.elements['__SCROLLPOSITIONY'].value =3D =
window.pageYOffset;
        theForm.elements['__SCROLLPOSITIONX'].value =3D =
window.pageXOffset;
    }
    else {
        theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
        theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    }
    if ((typeof(this.oldSubmit) !=3D "undefined") && (this.oldSubmit =
!=3D null)) {
        return this.oldSubmit();
    }
    return true;
}
function WebForm_SaveScrollPositionOnSubmit() {
    theForm.__SCROLLPOSITIONX.value =3D WebForm_GetScrollX();
    theForm.__SCROLLPOSITIONY.value =3D WebForm_GetScrollY();
    if ((typeof(this.oldOnSubmit) !=3D "undefined") && (this.oldOnSubmit =
!=3D null)) {
        return this.oldOnSubmit();
    }
    return true;
}
function WebForm_RestoreScrollPosition() {
    if (__nonMSDOMBrowser) {
        window.scrollTo(theForm.elements['__SCROLLPOSITIONX'].value, =
theForm.elements['__SCROLLPOSITIONY'].value);
    }
    else {
        window.scrollTo(theForm.__SCROLLPOSITIONX.value, =
theForm.__SCROLLPOSITIONY.value);
    }
    if ((typeof(theForm.oldOnLoad) !=3D "undefined") && =
(theForm.oldOnLoad !=3D null)) {
        return theForm.oldOnLoad();
    }
    return true;
}
function WebForm_TextBoxKeyHandler(event) {
    if (event.keyCode =3D=3D 13) {
        var target;
        if (__nonMSDOMBrowser) {
            target =3D event.target;
        }
        else {
            target =3D event.srcElement;
        }
        if ((typeof(target) !=3D "undefined") && (target !=3D null)) {
            if (typeof(target.onchange) !=3D "undefined") {
                target.onchange();
                event.cancelBubble =3D true;
                if (event.stopPropagation) event.stopPropagation();
                return false;
            }
        }
    }
    return true;
}
function WebForm_TrimString(value) {
    return value.replace(/^\s+|\s+$/g, '')
}
function WebForm_AppendToClassName(element, className) {
    var currentClassName =3D ' ' + WebForm_TrimString(element.className) =
+ ' ';
    className =3D WebForm_TrimString(className);
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index =3D=3D=3D -1) {
        element.className =3D (element.className =3D=3D=3D '') ? =
className : element.className + ' ' + className;
    }
}
function WebForm_RemoveClassName(element, className) {
    var currentClassName =3D ' ' + WebForm_TrimString(element.className) =
+ ' ';
    className =3D WebForm_TrimString(className);
    var index =3D currentClassName.indexOf(' ' + className + ' ');
    if (index >=3D 0) {
        element.className =3D =
WebForm_TrimString(currentClassName.substring(0, index) + ' ' +
            currentClassName.substring(index + className.length + 1, =
currentClassName.length));
    }
}
function WebForm_GetElementById(elementId) {
    if (document.getElementById) {
        return document.getElementById(elementId);
    }
    else if (document.all) {
        return document.all[elementId];
    }
    else return null;
}
function WebForm_GetElementByTagName(element, tagName) {
    var elements =3D WebForm_GetElementsByTagName(element, tagName);
    if (elements && elements.length > 0) {
        return elements[0];
    }
    else return null;
}
function WebForm_GetElementsByTagName(element, tagName) {
    if (element && tagName) {
        if (element.getElementsByTagName) {
            return element.getElementsByTagName(tagName);
        }
        if (element.all && element.all.tags) {
            return element.all.tags(tagName);
        }
    }
    return null;
}
function WebForm_GetElementDir(element) {
    if (element) {
        if (element.dir) {
            return element.dir;
        }
        return WebForm_GetElementDir(element.parentNode);
    }
    return "ltr";
}
function WebForm_GetElementPosition(element) {
    var result =3D new Object();
    result.x =3D 0;
    result.y =3D 0;
    result.width =3D 0;
    result.height =3D 0;
    if (element.offsetParent) {
        result.x =3D element.offsetLeft;
        result.y =3D element.offsetTop;
        var parent =3D element.offsetParent;
        while (parent) {
            result.x +=3D parent.offsetLeft;
            result.y +=3D parent.offsetTop;
            var parentTagName =3D parent.tagName.toLowerCase();
            if (parentTagName !=3D "table" &&
                parentTagName !=3D "body" &&=20
                parentTagName !=3D "html" &&=20
                parentTagName !=3D "div" &&=20
                parent.clientTop &&=20
                parent.clientLeft) {
                result.x +=3D parent.clientLeft;
                result.y +=3D parent.clientTop;
            }
            parent =3D parent.offsetParent;
        }
    }
    else if (element.left && element.top) {
        result.x =3D element.left;
        result.y =3D element.top;
    }
    else {
        if (element.x) {
            result.x =3D element.x;
        }
        if (element.y) {
            result.y =3D element.y;
        }
    }
    if (element.offsetWidth && element.offsetHeight) {
        result.width =3D element.offsetWidth;
        result.height =3D element.offsetHeight;
    }
    else if (element.style && element.style.pixelWidth && =
element.style.pixelHeight) {
        result.width =3D element.style.pixelWidth;
        result.height =3D element.style.pixelHeight;
    }
    return result;
}
function WebForm_GetParentByTagName(element, tagName) {
    var parent =3D element.parentNode;
    var upperTagName =3D tagName.toUpperCase();
    while (parent && (parent.tagName.toUpperCase() !=3D upperTagName)) {
        parent =3D parent.parentNode ? parent.parentNode : =
parent.parentElement;
    }
    return parent;
}
function WebForm_SetElementHeight(element, height) {
    if (element && element.style) {
        element.style.height =3D height + "px";
    }
}
function WebForm_SetElementWidth(element, width) {
    if (element && element.style) {
        element.style.width =3D width + "px";
    }
}
function WebForm_SetElementX(element, x) {
    if (element && element.style) {
        element.style.left =3D x + "px";
    }
}
function WebForm_SetElementY(element, y) {
    if (element && element.style) {
        element.style.top =3D y + "px";
    }
}

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/ScriptResource.axd?d=Edle-2xc8xtHkqtCLzwM6CCCRijUJUWksLzSomABlck7XSWi74CkPf9jhLltMMCyUDXyT2KUWRAmQ1z8DSutFFcjJTwSnRlwkYJ40mgbX7w5wq0OK-8UdalPbklqWEnI9WUmV-d97UilMI-QE19MoRkOruBkI7Hh67ffO3r9fIE5X5Ml0&t=ffffffffda1e9529

=EF=BB=BF//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjax.js
Function.__typeName=3D"Function";Function.__class=3Dtrue;Function.createC=
allback=3Dfunction(b,a){return function(){var =
e=3Darguments.length;if(e>0){var d=3D[];for(var =
c=3D0;c<e;c++)d[c]=3Darguments[c];d[e]=3Da;return b.apply(this,d)}return =
b.call(this,a)}};Function.createDelegate=3Dfunction(a,b){return =
function(){return =
b.apply(a,arguments)}};Function.emptyFunction=3DFunction.emptyMethod=3Dfu=
nction(){};Function._validateParams=3Dfunction(e,c){var =
a;a=3DFunction._validateParameterCount(e,c);if(a){a.popStackFrame();retur=
n a}for(var b=3D0;b<e.length;b++){var =
d=3Dc[Math.min(b,c.length-1)],f=3Dd.name;if(d.parameterArray)f+=3D"["+(b-=
c.length+1)+"]";a=3DFunction._validateParameter(e[b],d,f);if(a){a.popStac=
kFrame();return a}}return =
null};Function._validateParameterCount=3Dfunction(e,a){var =
c=3Da.length,d=3D0;for(var =
b=3D0;b<a.length;b++)if(a[b].parameterArray)c=3DNumber.MAX_VALUE;else =
if(!a[b].optional)d++;if(e.length<d||e.length>c){var =
f=3DError.parameterCount();f.popStackFrame();return f}return =
null};Function._validateParameter=3Dfunction(c,a,h){var =
b,g=3Da.type,l=3D!!a.integer,k=3D!!a.domElement,m=3D!!a.mayBeNull;b=3DFun=
ction._validateParameterType(c,g,l,k,m,h);if(b){b.popStackFrame();return =
b}var =
e=3Da.elementType,f=3D!!a.elementMayBeNull;if(g=3D=3D=3DArray&&typeof =
c!=3D=3D"undefined"&&c!=3D=3Dnull&&(e||!f)){var =
j=3D!!a.elementInteger,i=3D!!a.elementDomElement;for(var =
d=3D0;d<c.length;d++){var =
n=3Dc[d];b=3DFunction._validateParameterType(n,e,j,i,f,h+"["+d+"]");if(b)=
{b.popStackFrame();return b}}}return =
null};Function._validateParameterType=3Dfunction(a,c,n,m,k,d){var =
b;if(typeof a=3D=3D=3D"undefined")if(k)return =
null;else{b=3DError.argumentUndefined(d);b.popStackFrame();return =
b}if(a=3D=3D=3Dnull)if(k)return =
null;else{b=3DError.argumentNull(d);b.popStackFrame();return =
b}if(c&&c.__enum){if(typeof =
a!=3D=3D"number"){b=3DError.argumentType(d,Object.getType(a),c);b.popStac=
kFrame();return b}if(a%1=3D=3D=3D0){var =
e=3Dc.prototype;if(!c.__flags||a=3D=3D=3D0){for(var i in =
e)if(e[i]=3D=3D=3Da)return null}else{var l=3Da;for(var i in e){var =
f=3De[i];if(f=3D=3D=3D0)continue;if((f&a)=3D=3D=3Df)l-=3Df;if(l=3D=3D=3D0=
)return =
null}}}b=3DError.argumentOutOfRange(d,a,String.format(Sys.Res.enumInvalid=
Value,a,c.getName()));b.popStackFrame();return b}if(m){var h;if(typeof =
a.nodeType!=3D=3D"number"){var =
g=3Da.ownerDocument||a.document||a;if(g!=3Da){var =
j=3Dg.defaultView||g.parentWindow;h=3Dj!=3Da&&!(j.document&&a.document&&j=
.document=3D=3D=3Da.document)}else h=3Dtypeof =
g.body=3D=3D=3D"undefined"}else =
h=3Da.nodeType=3D=3D=3D3;if(h){b=3DError.argument(d,Sys.Res.argumentDomEl=
ement);b.popStackFrame();return =
b}}if(c&&!c.isInstanceOfType(a)){b=3DError.argumentType(d,Object.getType(=
a),c);b.popStackFrame();return =
b}if(c=3D=3D=3DNumber&&n)if(a%1!=3D=3D0){b=3DError.argumentOutOfRange(d,a=
,Sys.Res.argumentInteger);b.popStackFrame();return b}return =
null};Error.__typeName=3D"Error";Error.__class=3Dtrue;Error.create=3Dfunc=
tion(d,b){var a=3Dnew Error(d);a.message=3Dd;if(b)for(var c in =
b)a[c]=3Db[c];a.popStackFrame();return =
a};Error.argument=3Dfunction(a,c){var b=3D"Sys.ArgumentException: =
"+(c?c:Sys.Res.argument);if(a)b+=3D"\n"+String.format(Sys.Res.paramName,a=
);var =
d=3DError.create(b,{name:"Sys.ArgumentException",paramName:a});d.popStack=
Frame();return d};Error.argumentNull=3Dfunction(a,c){var =
b=3D"Sys.ArgumentNullException: =
"+(c?c:Sys.Res.argumentNull);if(a)b+=3D"\n"+String.format(Sys.Res.paramNa=
me,a);var =
d=3DError.create(b,{name:"Sys.ArgumentNullException",paramName:a});d.popS=
tackFrame();return d};Error.argumentOutOfRange=3Dfunction(c,a,d){var =
b=3D"Sys.ArgumentOutOfRangeException: =
"+(d?d:Sys.Res.argumentOutOfRange);if(c)b+=3D"\n"+String.format(Sys.Res.p=
aramName,c);if(typeof =
a!=3D=3D"undefined"&&a!=3D=3Dnull)b+=3D"\n"+String.format(Sys.Res.actualV=
alue,a);var =
e=3DError.create(b,{name:"Sys.ArgumentOutOfRangeException",paramName:c,ac=
tualValue:a});e.popStackFrame();return =
e};Error.argumentType=3Dfunction(d,c,b,e){var =
a=3D"Sys.ArgumentTypeException: ";if(e)a+=3De;else =
if(c&&b)a+=3DString.format(Sys.Res.argumentTypeWithTypes,c.getName(),b.ge=
tName());else =
a+=3DSys.Res.argumentType;if(d)a+=3D"\n"+String.format(Sys.Res.paramName,=
d);var =
f=3DError.create(a,{name:"Sys.ArgumentTypeException",paramName:d,actualTy=
pe:c,expectedType:b});f.popStackFrame();return =
f};Error.argumentUndefined=3Dfunction(a,c){var =
b=3D"Sys.ArgumentUndefinedException: =
"+(c?c:Sys.Res.argumentUndefined);if(a)b+=3D"\n"+String.format(Sys.Res.pa=
ramName,a);var =
d=3DError.create(b,{name:"Sys.ArgumentUndefinedException",paramName:a});d=
.popStackFrame();return d};Error.format=3Dfunction(a){var =
c=3D"Sys.FormatException: =
"+(a?a:Sys.Res.format),b=3DError.create(c,{name:"Sys.FormatException"});b=
.popStackFrame();return b};Error.invalidOperation=3Dfunction(a){var =
c=3D"Sys.InvalidOperationException: =
"+(a?a:Sys.Res.invalidOperation),b=3DError.create(c,{name:"Sys.InvalidOpe=
rationException"});b.popStackFrame();return =
b};Error.notImplemented=3Dfunction(a){var =
c=3D"Sys.NotImplementedException: =
"+(a?a:Sys.Res.notImplemented),b=3DError.create(c,{name:"Sys.NotImplement=
edException"});b.popStackFrame();return =
b};Error.parameterCount=3Dfunction(a){var =
c=3D"Sys.ParameterCountException: =
"+(a?a:Sys.Res.parameterCount),b=3DError.create(c,{name:"Sys.ParameterCou=
ntException"});b.popStackFrame();return =
b};Error.prototype.popStackFrame=3Dfunction(){if(typeof =
this.stack=3D=3D=3D"undefined"||this.stack=3D=3D=3Dnull||typeof =
this.fileName=3D=3D=3D"undefined"||this.fileName=3D=3D=3Dnull||typeof =
this.lineNumber=3D=3D=3D"undefined"||this.lineNumber=3D=3D=3Dnull)return;=
var =
a=3Dthis.stack.split("\n"),c=3Da[0],e=3Dthis.fileName+":"+this.lineNumber=
;while(typeof =
c!=3D=3D"undefined"&&c!=3D=3Dnull&&c.indexOf(e)=3D=3D=3D-1){a.shift();c=3D=
a[0]}var d=3Da[1];if(typeof =
d=3D=3D=3D"undefined"||d=3D=3D=3Dnull)return;var =
b=3Dd.match(/@(.*):(\d+)$/);if(typeof =
b=3D=3D=3D"undefined"||b=3D=3D=3Dnull)return;this.fileName=3Db[1];this.li=
neNumber=3DparseInt(b[2]);a.shift();this.stack=3Da.join("\n")};Object.__t=
ypeName=3D"Object";Object.__class=3Dtrue;Object.getType=3Dfunction(b){var=
 a=3Db.constructor;if(!a||typeof =
a!=3D=3D"function"||!a.__typeName||a.__typeName=3D=3D=3D"Object")return =
Object;return a};Object.getTypeName=3Dfunction(a){return =
Object.getType(a).getName()};String.__typeName=3D"String";String.__class=3D=
true;String.prototype.endsWith=3Dfunction(a){return =
this.substr(this.length-a.length)=3D=3D=3Da};String.prototype.startsWith=3D=
function(a){return =
this.substr(0,a.length)=3D=3D=3Da};String.prototype.trim=3Dfunction(){ret=
urn =
this.replace(/^\s+|\s+$/g,"")};String.prototype.trimEnd=3Dfunction(){retu=
rn =
this.replace(/\s+$/,"")};String.prototype.trimStart=3Dfunction(){return =
this.replace(/^\s+/,"")};String.format=3Dfunction(){return =
String._toFormattedString(false,arguments)};String.localeFormat=3Dfunctio=
n(){return =
String._toFormattedString(true,arguments)};String._toFormattedString=3Dfu=
nction(l,j){var c=3D"",e=3Dj[0];for(var a=3D0;true;){var =
f=3De.indexOf("{",a),d=3De.indexOf("}",a);if(f<0&&d<0){c+=3De.slice(a);br=
eak}if(d>0&&(d<f||f<0)){c+=3De.slice(a,d+1);a=3Dd+2;continue}c+=3De.slice=
(a,f);a=3Df+1;if(e.charAt(a)=3D=3D=3D"{"){c+=3D"{";a++;continue}if(d<0)br=
eak;var =
h=3De.substring(a,d),g=3Dh.indexOf(":"),k=3DparseInt(g<0?h:h.substring(0,=
g),10)+1,i=3Dg<0?"":h.substring(g+1),b=3Dj[k];if(typeof =
b=3D=3D=3D"undefined"||b=3D=3D=3Dnull)b=3D"";if(b.toFormattedString)c+=3D=
b.toFormattedString(i);else =
if(l&&b.localeFormat)c+=3Db.localeFormat(i);else =
if(b.format)c+=3Db.format(i);else c+=3Db.toString();a=3Dd+1}return =
c};Boolean.__typeName=3D"Boolean";Boolean.__class=3Dtrue;Boolean.parse=3D=
function(b){var a=3Db.trim().toLowerCase();if(a=3D=3D=3D"false")return =
false;if(a=3D=3D=3D"true")return =
true};Date.__typeName=3D"Date";Date.__class=3Dtrue;Date._appendPreOrPostM=
atch=3Dfunction(e,b){var d=3D0,a=3Dfalse;for(var =
c=3D0,g=3De.length;c<g;c++){var f=3De.charAt(c);switch(f){case =
"'":if(a)b.append("'");else d++;a=3Dfalse;break;case =
"\\":if(a)b.append("\\");a=3D!a;break;default:b.append(f);a=3Dfalse}}retu=
rn =
d};Date._expandFormat=3Dfunction(a,b){if(!b)b=3D"F";if(b.length=3D=3D=3D1=
)switch(b){case "d":return a.ShortDatePattern;case "D":return =
a.LongDatePattern;case "t":return a.ShortTimePattern;case "T":return =
a.LongTimePattern;case "F":return a.FullDateTimePattern;case "M":case =
"m":return a.MonthDayPattern;case "s":return =
a.SortableDateTimePattern;case "Y":case "y":return =
a.YearMonthPattern;default:throw =
Error.format(Sys.Res.formatInvalidString)}return =
b};Date._expandYear=3Dfunction(c,a){if(a<100){var b=3D(new =
Date).getFullYear();a+=3Db-b%100;if(a>c.Calendar.TwoDigitYearMax)return =
a-100}return =
a};Date._getParseRegExp=3Dfunction(b,e){if(!b._parseRegExp)b._parseRegExp=
=3D{};else if(b._parseRegExp[e])return b._parseRegExp[e];var =
c=3DDate._expandFormat(b,e);c=3Dc.replace(/([\^\$\.\*\+\?\|\[\]\(\)\{\}])=
/g,"\\\\$1");var a=3Dnew =
Sys.StringBuilder("^"),j=3D[],f=3D0,i=3D0,h=3DDate._getTokenRegExp(),d;wh=
ile((d=3Dh.exec(c))!=3D=3Dnull){var =
l=3Dc.slice(f,d.index);f=3Dh.lastIndex;i+=3DDate._appendPreOrPostMatch(l,=
a);if(i%2=3D=3D=3D1){a.append(d[0]);continue}switch(d[0]){case =
"dddd":case "ddd":case "MMMM":case "MMM":a.append("(\\D+)");break;case =
"tt":case "t":a.append("(\\D*)");break;case =
"yyyy":a.append("(\\d{4})");break;case =
"fff":a.append("(\\d{3})");break;case =
"ff":a.append("(\\d{2})");break;case "f":a.append("(\\d)");break;case =
"dd":case "d":case "MM":case "M":case "yy":case "y":case "HH":case =
"H":case "hh":case "h":case "mm":case "m":case "ss":case =
"s":a.append("(\\d\\d?)");break;case =
"zzz":a.append("([+-]?\\d\\d?:\\d{2})");break;case "zz":case =
"z":a.append("([+-]?\\d\\d?)")}Array.add(j,d[0])}Date._appendPreOrPostMat=
ch(c.slice(f),a);a.append("$");var =
k=3Da.toString().replace(/\s+/g,"\\s+"),g=3D{"regExp":k,"groups":j};b._pa=
rseRegExp[e]=3Dg;return g};Date._getTokenRegExp=3Dfunction(){return =
/dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|=
zzz|zz|z/g};Date.parseLocale=3Dfunction(a){return =
Date._parse(a,Sys.CultureInfo.CurrentCulture,arguments)};Date.parseInvari=
ant=3Dfunction(a){return =
Date._parse(a,Sys.CultureInfo.InvariantCulture,arguments)};Date._parse=3D=
function(g,c,h){var e=3Dfalse;for(var a=3D1,i=3Dh.length;a<i;a++){var =
f=3Dh[a];if(f){e=3Dtrue;var b=3DDate._parseExact(g,f,c);if(b)return =
b}}if(!e){var d=3Dc._getDateTimeFormats();for(var =
a=3D0,i=3Dd.length;a<i;a++){var =
b=3DDate._parseExact(g,d[a],c);if(b)return b}}return =
null};Date._parseExact=3Dfunction(s,y,j){s=3Ds.trim();var =
m=3Dj.dateTimeFormat,v=3DDate._getParseRegExp(m,y),x=3D(new =
RegExp(v.regExp)).exec(s);if(x=3D=3D=3Dnull)return null;var =
w=3Dv.groups,f=3Dnull,c=3Dnull,h=3Dnull,g=3Dnull,d=3D0,n=3D0,o=3D0,e=3D0,=
k=3Dnull,r=3Dfalse;for(var p=3D0,z=3Dw.length;p<z;p++){var =
a=3Dx[p+1];if(a)switch(w[p]){case "dd":case =
"d":h=3DparseInt(a,10);if(h<1||h>31)return null;break;case =
"MMMM":c=3Dj._getMonthIndex(a);if(c<0||c>11)return null;break;case =
"MMM":c=3Dj._getAbbrMonthIndex(a);if(c<0||c>11)return null;break;case =
"M":case "MM":var c=3DparseInt(a,10)-1;if(c<0||c>11)return =
null;break;case "y":case =
"yy":f=3DDate._expandYear(m,parseInt(a,10));if(f<0||f>9999)return =
null;break;case "yyyy":f=3DparseInt(a,10);if(f<0||f>9999)return =
null;break;case "h":case =
"hh":d=3DparseInt(a,10);if(d=3D=3D=3D12)d=3D0;if(d<0||d>11)return =
null;break;case "H":case "HH":d=3DparseInt(a,10);if(d<0||d>23)return =
null;break;case "m":case "mm":n=3DparseInt(a,10);if(n<0||n>59)return =
null;break;case "s":case "ss":o=3DparseInt(a,10);if(o<0||o>59)return =
null;break;case "tt":case "t":var =
u=3Da.toUpperCase();r=3Du=3D=3D=3Dm.PMDesignator.toUpperCase();if(!r&&u!=3D=
=3Dm.AMDesignator.toUpperCase())return null;break;case =
"f":e=3DparseInt(a,10)*100;if(e<0||e>999)return null;break;case =
"ff":e=3DparseInt(a,10)*10;if(e<0||e>999)return null;break;case =
"fff":e=3DparseInt(a,10);if(e<0||e>999)return null;break;case =
"dddd":g=3Dj._getDayIndex(a);if(g<0||g>6)return null;break;case =
"ddd":g=3Dj._getAbbrDayIndex(a);if(g<0||g>6)return null;break;case =
"zzz":var q=3Da.split(/:/);if(q.length!=3D=3D2)return null;var =
i=3DparseInt(q[0],10);if(i<-12||i>13)return null;var =
l=3DparseInt(q[1],10);if(l<0||l>59)return =
null;k=3Di*60+(a.startsWith("-")?-l:l);break;case "z":case "zz":var =
i=3DparseInt(a,10);if(i<-12||i>13)return null;k=3Di*60}}var b=3Dnew =
Date;if(f=3D=3D=3Dnull)f=3Db.getFullYear();if(c=3D=3D=3Dnull)c=3Db.getMon=
th();if(h=3D=3D=3Dnull)h=3Db.getDate();b.setFullYear(f,c,h);if(b.getDate(=
)!=3D=3Dh)return null;if(g!=3D=3Dnull&&b.getDay()!=3D=3Dg)return =
null;if(r&&d<12)d+=3D12;b.setHours(d,n,o,e);if(k!=3D=3Dnull){var =
t=3Db.getMinutes()-(k+b.getTimezoneOffset());b.setHours(b.getHours()+pars=
eInt(t/60,10),t%60)}return b};Date.prototype.format=3Dfunction(a){return =
this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Date.prototy=
pe.localeFormat=3Dfunction(a){return =
this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Date.prototype=
._toFormattedString=3Dfunction(e,h){if(!e||e.length=3D=3D=3D0||e=3D=3D=3D=
"i")if(h&&h.name.length>0)return this.toLocaleString();else return =
this.toString();var d=3Dh.dateTimeFormat;e=3DDate._expandFormat(d,e);var =
a=3Dnew Sys.StringBuilder,b;function c(a){if(a<10)return "0"+a;return =
a.toString()}function g(a){if(a<10)return "00"+a;if(a<100)return =
"0"+a;return a.toString()}var =
j=3D0,i=3DDate._getTokenRegExp();for(;true;){var =
l=3Di.lastIndex,f=3Di.exec(e),k=3De.slice(l,f?f.index:e.length);j+=3DDate=
._appendPreOrPostMatch(k,a);if(!f)break;if(j%2=3D=3D=3D1){a.append(f[0]);=
continue}switch(f[0]){case =
"dddd":a.append(d.DayNames[this.getDay()]);break;case =
"ddd":a.append(d.AbbreviatedDayNames[this.getDay()]);break;case =
"dd":a.append(c(this.getDate()));break;case =
"d":a.append(this.getDate());break;case =
"MMMM":a.append(d.MonthNames[this.getMonth()]);break;case =
"MMM":a.append(d.AbbreviatedMonthNames[this.getMonth()]);break;case =
"MM":a.append(c(this.getMonth()+1));break;case =
"M":a.append(this.getMonth()+1);break;case =
"yyyy":a.append(this.getFullYear());break;case =
"yy":a.append(c(this.getFullYear()%100));break;case =
"y":a.append(this.getFullYear()%100);break;case =
"hh":b=3Dthis.getHours()%12;if(b=3D=3D=3D0)b=3D12;a.append(c(b));break;ca=
se =
"h":b=3Dthis.getHours()%12;if(b=3D=3D=3D0)b=3D12;a.append(b);break;case =
"HH":a.append(c(this.getHours()));break;case =
"H":a.append(this.getHours());break;case =
"mm":a.append(c(this.getMinutes()));break;case =
"m":a.append(this.getMinutes());break;case =
"ss":a.append(c(this.getSeconds()));break;case =
"s":a.append(this.getSeconds());break;case =
"tt":a.append(this.getHours()<12?d.AMDesignator:d.PMDesignator);break;cas=
e =
"t":a.append((this.getHours()<12?d.AMDesignator:d.PMDesignator).charAt(0)=
);break;case =
"f":a.append(g(this.getMilliseconds()).charAt(0));break;case =
"ff":a.append(g(this.getMilliseconds()).substr(0,2));break;case =
"fff":a.append(g(this.getMilliseconds()));break;case =
"z":b=3Dthis.getTimezoneOffset()/60;a.append((b<=3D0?"+":"-")+Math.floor(=
Math.abs(b)));break;case =
"zz":b=3Dthis.getTimezoneOffset()/60;a.append((b<=3D0?"+":"-")+c(Math.flo=
or(Math.abs(b))));break;case =
"zzz":b=3Dthis.getTimezoneOffset()/60;a.append((b<=3D0?"+":"-")+c(Math.fl=
oor(Math.abs(b)))+d.TimeSeparator+c(Math.abs(this.getTimezoneOffset()%60)=
))}}return =
a.toString()};Number.__typeName=3D"Number";Number.__class=3Dtrue;Number.p=
arseLocale=3Dfunction(a){return =
Number._parse(a,Sys.CultureInfo.CurrentCulture)};Number.parseInvariant=3D=
function(a){return =
Number._parse(a,Sys.CultureInfo.InvariantCulture)};Number._parse=3Dfuncti=
on(b,o){b=3Db.trim();if(b.match(/^[+-]?infinity$/i))return =
parseFloat(b);if(b.match(/^0x[a-f0-9]+$/i))return parseInt(b);var =
a=3Do.numberFormat,g=3DNumber._parseNumberNegativePattern(b,a,a.NumberNeg=
ativePattern),h=3Dg[0],e=3Dg[1];if(h=3D=3D=3D""&&a.NumberNegativePattern!=
=3D=3D1){g=3DNumber._parseNumberNegativePattern(b,a,1);h=3Dg[0];e=3Dg[1]}=
if(h=3D=3D=3D"")h=3D"+";var =
j,d,f=3De.indexOf("e");if(f<0)f=3De.indexOf("E");if(f<0){d=3De;j=3Dnull}e=
lse{d=3De.substr(0,f);j=3De.substr(f+1)}var =
c,k,m=3Dd.indexOf(a.NumberDecimalSeparator);if(m<0){c=3Dd;k=3Dnull}else{c=
=3Dd.substr(0,m);k=3Dd.substr(m+a.NumberDecimalSeparator.length)}c=3Dc.sp=
lit(a.NumberGroupSeparator).join("");var =
n=3Da.NumberGroupSeparator.replace(/\u00A0/g," =
");if(a.NumberGroupSeparator!=3D=3Dn)c=3Dc.split(n).join("");var =
l=3Dh+c;if(k!=3D=3Dnull)l+=3D"."+k;if(j!=3D=3Dnull){var =
i=3DNumber._parseNumberNegativePattern(j,a,1);if(i[0]=3D=3D=3D"")i[0]=3D"=
+";l+=3D"e"+i[0]+i[1]}if(l.match(/^[+-]?\d*\.?\d*(e[+-]?\d+)?$/))return =
parseFloat(l);return =
Number.NaN};Number._parseNumberNegativePattern=3Dfunction(a,d,e){var =
b=3Dd.NegativeSign,c=3Dd.PositiveSign;switch(e){case 4:b=3D" "+b;c=3D" =
"+c;case 3:if(a.endsWith(b))return =
["-",a.substr(0,a.length-b.length)];else if(a.endsWith(c))return =
["+",a.substr(0,a.length-c.length)];break;case 2:b+=3D" ";c+=3D" ";case =
1:if(a.startsWith(b))return ["-",a.substr(b.length)];else =
if(a.startsWith(c))return ["+",a.substr(c.length)];break;case =
0:if(a.startsWith("(")&&a.endsWith(")"))return =
["-",a.substr(1,a.length-2)]}return =
["",a]};Number.prototype.format=3Dfunction(a){return =
this._toFormattedString(a,Sys.CultureInfo.InvariantCulture)};Number.proto=
type.localeFormat=3Dfunction(a){return =
this._toFormattedString(a,Sys.CultureInfo.CurrentCulture)};Number.prototy=
pe._toFormattedString=3Dfunction(d,j){if(!d||d.length=3D=3D=3D0||d=3D=3D=3D=
"i")if(j&&j.name.length>0)return this.toLocaleString();else return =
this.toString();var o=3D["n %","n%","%n"],n=3D["-n =
%","-n%","-%n"],p=3D["(n)","-n","- n","n-","n -"],m=3D["$n","n$","$ =
n","n $"],l=3D["($n)","-$n","$-n","$n-","(n$)","-n$","n-$","n$-","-n =
$","-$ n","n $-","$ n-","$ -n","n- $","($ n)","(n $)"];function =
g(a,c,d){for(var b=3Da.length;b<c;b++)a=3Dd?"0"+a:a+"0";return =
a}function i(j,i,l,n,p){var =
h=3Dl[0],k=3D1,o=3DMath.pow(10,i),m=3DMath.round(j*o)/o;if(!isFinite(m))m=
=3Dj;j=3Dm;var =
b=3Dj.toString(),a=3D"",c,e=3Db.split(/e/i);b=3De[0];c=3De.length>1?parse=
Int(e[1]):0;e=3Db.split(".");b=3De[0];a=3De.length>1?e[1]:"";var =
q;if(c>0){a=3Dg(a,c,false);b+=3Da.slice(0,c);a=3Da.substr(c)}else =
if(c<0){c=3D-c;b=3Dg(b,c+1,true);a=3Db.slice(-c,b.length)+a;b=3Db.slice(0=
,-c)}if(i>0){if(a.length>i)a=3Da.slice(0,i);else =
a=3Dg(a,i,false);a=3Dp+a}else a=3D"";var =
d=3Db.length-1,f=3D"";while(d>=3D0){if(h=3D=3D=3D0||h>d)if(f.length>0)ret=
urn b.slice(0,d+1)+n+f+a;else return =
b.slice(0,d+1)+a;if(f.length>0)f=3Db.slice(d-h+1,d+1)+n+f;else =
f=3Db.slice(d-h+1,d+1);d-=3Dh;if(k<l.length){h=3Dl[k];k++}}return =
b.slice(0,d+1)+n+f+a}var =
a=3Dj.numberFormat,e=3DMath.abs(this);if(!d)d=3D"D";var =
b=3D-1;if(d.length>1)b=3DparseInt(d.slice(1),10);var =
c;switch(d.charAt(0)){case "d":case =
"D":c=3D"n";if(b!=3D=3D-1)e=3Dg(""+e,b,true);if(this<0)e=3D-e;break;case =
"c":case "C":if(this<0)c=3Dl[a.CurrencyNegativePattern];else =
c=3Dm[a.CurrencyPositivePattern];if(b=3D=3D=3D-1)b=3Da.CurrencyDecimalDig=
its;e=3Di(Math.abs(this),b,a.CurrencyGroupSizes,a.CurrencyGroupSeparator,=
a.CurrencyDecimalSeparator);break;case "n":case =
"N":if(this<0)c=3Dp[a.NumberNegativePattern];else =
c=3D"n";if(b=3D=3D=3D-1)b=3Da.NumberDecimalDigits;e=3Di(Math.abs(this),b,=
a.NumberGroupSizes,a.NumberGroupSeparator,a.NumberDecimalSeparator);break=
;case "p":case "P":if(this<0)c=3Dn[a.PercentNegativePattern];else =
c=3Do[a.PercentPositivePattern];if(b=3D=3D=3D-1)b=3Da.PercentDecimalDigit=
s;e=3Di(Math.abs(this)*100,b,a.PercentGroupSizes,a.PercentGroupSeparator,=
a.PercentDecimalSeparator);break;default:throw =
Error.format(Sys.Res.formatBadFormatSpecifier)}var =
k=3D/n|\$|-|%/g,f=3D"";for(;true;){var =
q=3Dk.lastIndex,h=3Dk.exec(c);f+=3Dc.slice(q,h?h.index:c.length);if(!h)br=
eak;switch(h[0]){case "n":f+=3De;break;case =
"$":f+=3Da.CurrencySymbol;break;case "-":f+=3Da.NegativeSign;break;case =
"%":f+=3Da.PercentSymbol}}return =
f};RegExp.__typeName=3D"RegExp";RegExp.__class=3Dtrue;Array.__typeName=3D=
"Array";Array.__class=3Dtrue;Array.add=3DArray.enqueue=3Dfunction(a,b){a[=
a.length]=3Db};Array.addRange=3Dfunction(a,b){a.push.apply(a,b)};Array.cl=
ear=3Dfunction(a){a.length=3D0};Array.clone=3Dfunction(a){if(a.length=3D=3D=
=3D1)return [a[0]];else return =
Array.apply(null,a)};Array.contains=3Dfunction(a,b){return =
Array.indexOf(a,b)>=3D0};Array.dequeue=3Dfunction(a){return =
a.shift()};Array.forEach=3Dfunction(b,e,d){for(var =
a=3D0,f=3Db.length;a<f;a++){var c=3Db[a];if(typeof =
c!=3D=3D"undefined")e.call(d,c,a,b)}};Array.indexOf=3Dfunction(d,e,a){if(=
typeof e=3D=3D=3D"undefined")return -1;var =
c=3Dd.length;if(c!=3D=3D0){a=3Da-0;if(isNaN(a))a=3D0;else{if(isFinite(a))=
a=3Da-a%1;if(a<0)a=3DMath.max(0,c+a)}for(var b=3Da;b<c;b++)if(typeof =
d[b]!=3D=3D"undefined"&&d[b]=3D=3D=3De)return b}return =
-1};Array.insert=3Dfunction(a,b,c){a.splice(b,0,c)};Array.parse=3Dfunctio=
n(value){if(!value)return [];return =
eval(value)};Array.remove=3Dfunction(b,c){var =
a=3DArray.indexOf(b,c);if(a>=3D0)b.splice(a,1);return =
a>=3D0};Array.removeAt=3Dfunction(a,b){a.splice(b,1)};if(!window)this.win=
dow=3Dthis;window.Type=3DFunction;Type.prototype.callBaseMethod=3Dfunctio=
n(a,d,b){var c=3Dthis.getBaseMethod(a,d);if(!b)return c.apply(a);else =
return c.apply(a,b)};Type.prototype.getBaseMethod=3Dfunction(d,c){var =
b=3Dthis.getBaseType();if(b){var a=3Db.prototype[c];return a instanceof =
Function?a:null}return =
null};Type.prototype.getBaseType=3Dfunction(){return typeof =
this.__baseType=3D=3D=3D"undefined"?null:this.__baseType};Type.prototype.=
getInterfaces=3Dfunction(){var a=3D[],b=3Dthis;while(b){var =
c=3Db.__interfaces;if(c)for(var d=3D0,f=3Dc.length;d<f;d++){var =
e=3Dc[d];if(!Array.contains(a,e))a[a.length]=3De}b=3Db.__baseType}return =
a};Type.prototype.getName=3Dfunction(){return typeof =
this.__typeName=3D=3D=3D"undefined"?"":this.__typeName};Type.prototype.im=
plementsInterface=3Dfunction(d){this.resolveInheritance();var =
c=3Dd.getName(),a=3Dthis.__interfaceCache;if(a){var e=3Da[c];if(typeof =
e!=3D=3D"undefined")return e}else a=3Dthis.__interfaceCache=3D{};var =
b=3Dthis;while(b){var =
f=3Db.__interfaces;if(f)if(Array.indexOf(f,d)!=3D=3D-1)return =
a[c]=3Dtrue;b=3Db.__baseType}return =
a[c]=3Dfalse};Type.prototype.inheritsFrom=3Dfunction(b){this.resolveInher=
itance();var a=3Dthis.__baseType;while(a){if(a=3D=3D=3Db)return =
true;a=3Da.__baseType}return =
false};Type.prototype.initializeBase=3Dfunction(a,b){this.resolveInherita=
nce();if(this.__baseType)if(!b)this.__baseType.apply(a);else =
this.__baseType.apply(a,b);return =
a};Type.prototype.isImplementedBy=3Dfunction(a){if(typeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;var =
b=3DObject.getType(a);return =
!!(b.implementsInterface&&b.implementsInterface(this))};Type.prototype.is=
InstanceOfType=3Dfunction(b){if(typeof =
b=3D=3D=3D"undefined"||b=3D=3D=3Dnull)return false;if(b instanceof =
this)return true;var a=3DObject.getType(b);return =
!!(a=3D=3D=3Dthis)||a.inheritsFrom&&a.inheritsFrom(this)||a.implementsInt=
erface&&a.implementsInterface(this)};Type.prototype.registerClass=3Dfunct=
ion(c,b,d){this.prototype.constructor=3Dthis;this.__typeName=3Dc;this.__c=
lass=3Dtrue;if(b){this.__baseType=3Db;this.__basePrototypePending=3Dtrue}=
Sys.__upperCaseTypes[c.toUpperCase()]=3Dthis;if(d){this.__interfaces=3D[]=
;for(var a=3D2,f=3Darguments.length;a<f;a++){var =
e=3Darguments[a];this.__interfaces.push(e)}}return =
this};Type.prototype.registerInterface=3Dfunction(a){Sys.__upperCaseTypes=
[a.toUpperCase()]=3Dthis;this.prototype.constructor=3Dthis;this.__typeNam=
e=3Da;this.__interface=3Dtrue;return =
this};Type.prototype.resolveInheritance=3Dfunction(){if(this.__baseProtot=
ypePending){var b=3Dthis.__baseType;b.resolveInheritance();for(var a in =
b.prototype){var =
c=3Db.prototype[a];if(!this.prototype[a])this.prototype[a]=3Dc}delete =
this.__basePrototypePending}};Type.getRootNamespaces=3Dfunction(){return =
Array.clone(Sys.__rootNamespaces)};Type.isClass=3Dfunction(a){if(typeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;return =
!!a.__class};Type.isInterface=3Dfunction(a){if(typeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;return =
!!a.__interface};Type.isNamespace=3Dfunction(a){if(typeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;return =
!!a.__namespace};Type.parse=3Dfunction(typeName,ns){var =
fn;if(ns){fn=3DSys.__upperCaseTypes[ns.getName().toUpperCase()+"."+typeNa=
me.toUpperCase()];return fn||null}if(!typeName)return =
null;if(!Type.__htClasses)Type.__htClasses=3D{};fn=3DType.__htClasses[typ=
eName];if(!fn){fn=3Deval(typeName);Type.__htClasses[typeName]=3Dfn}return=
 fn};Type.registerNamespace=3Dfunction(f){var =
d=3Dwindow,c=3Df.split(".");for(var b=3D0;b<c.length;b++){var =
e=3Dc[b],a=3Dd[e];if(!a){a=3Dd[e]=3D{__namespace:true,__typeName:c.slice(=
0,b+1).join(".")};if(b=3D=3D=3D0)Sys.__rootNamespaces[Sys.__rootNamespace=
s.length]=3Da;a.getName=3Dfunction(){return =
this.__typeName}}d=3Da}};window.Sys=3D{__namespace:true,__typeName:"Sys",=
getName:function(){return =
"Sys"},__upperCaseTypes:{}};Sys.__rootNamespaces=3D[Sys];Sys.IDisposable=3D=
function(){};Sys.IDisposable.prototype=3D{};Sys.IDisposable.registerInter=
face("Sys.IDisposable");Sys.StringBuilder=3Dfunction(a){this._parts=3Dtyp=
eof =
a!=3D=3D"undefined"&&a!=3D=3Dnull&&a!=3D=3D""?[a.toString()]:[];this._val=
ue=3D{};this._len=3D0};Sys.StringBuilder.prototype=3D{append:function(a){=
this._parts[this._parts.length]=3Da},appendLine:function(a){this._parts[t=
his._parts.length]=3Dtypeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull||a=3D=3D=3D""?"\r\n":a+"\r\n"},clea=
r:function(){this._parts=3D[];this._value=3D{};this._len=3D0},isEmpty:fun=
ction(){if(this._parts.length=3D=3D=3D0)return true;return =
this.toString()=3D=3D=3D""},toString:function(a){a=3Da||"";var =
b=3Dthis._parts;if(this._len!=3D=3Db.length){this._value=3D{};this._len=3D=
b.length}var d=3Dthis._value;if(typeof =
d[a]=3D=3D=3D"undefined"){if(a!=3D=3D"")for(var =
c=3D0;c<b.length;)if(typeof =
b[c]=3D=3D=3D"undefined"||b[c]=3D=3D=3D""||b[c]=3D=3D=3Dnull)b.splice(c,1=
);else c++;d[a]=3Dthis._parts.join(a)}return =
d[a]}};Sys.StringBuilder.registerClass("Sys.StringBuilder");if(!window.XM=
LHttpRequest)window.XMLHttpRequest=3Dfunction(){var =
b=3D["Msxml2.XMLHTTP.3.0","Msxml2.XMLHTTP"];for(var =
a=3D0,c=3Db.length;a<c;a++)try{return new =
ActiveXObject(b[a])}catch(d){}return =
null};Sys.Browser=3D{};Sys.Browser.InternetExplorer=3D{};Sys.Browser.Fire=
fox=3D{};Sys.Browser.Safari=3D{};Sys.Browser.Opera=3D{};Sys.Browser.agent=
=3Dnull;Sys.Browser.hasDebuggerStatement=3Dfalse;Sys.Browser.name=3Dnavig=
ator.appName;Sys.Browser.version=3DparseFloat(navigator.appVersion);Sys.B=
rowser.documentMode=3D0;if(navigator.userAgent.indexOf(" MSIE =
")>-1){Sys.Browser.agent=3DSys.Browser.InternetExplorer;Sys.Browser.versi=
on=3DparseFloat(navigator.userAgent.match(/MSIE =
(\d+\.\d+)/)[1]);if(Sys.Browser.version>=3D8)if(document.documentMode>=3D=
7)Sys.Browser.documentMode=3Ddocument.documentMode;Sys.Browser.hasDebugge=
rStatement=3Dtrue}else if(navigator.userAgent.indexOf(" =
Firefox/")>-1){Sys.Browser.agent=3DSys.Browser.Firefox;Sys.Browser.versio=
n=3DparseFloat(navigator.userAgent.match(/Firefox\/(\d+\.\d+)/)[1]);Sys.B=
rowser.name=3D"Firefox";Sys.Browser.hasDebuggerStatement=3Dtrue}else =
if(navigator.userAgent.indexOf(" =
AppleWebKit/")>-1){Sys.Browser.agent=3DSys.Browser.Safari;Sys.Browser.ver=
sion=3DparseFloat(navigator.userAgent.match(/AppleWebKit\/(\d+(\.\d+)?)/)=
[1]);Sys.Browser.name=3D"Safari"}else =
if(navigator.userAgent.indexOf("Opera/")>-1)Sys.Browser.agent=3DSys.Brows=
er.Opera;Type.registerNamespace("Sys.UI");Sys._Debug=3Dfunction(){};Sys._=
Debug.prototype=3D{_appendConsole:function(a){if(typeof =
Debug!=3D=3D"undefined"&&Debug.writeln)Debug.writeln(a);if(window.console=
&&window.console.log)window.console.log(a);if(window.opera)window.opera.p=
ostError(a);if(window.debugService)window.debugService.trace(a)},_appendT=
race:function(b){var =
a=3Ddocument.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()=
=3D=3D=3D"TEXTAREA")a.value+=3Db+"\n"},assert:function(c,a,b){if(!c){a=3D=
b&&this.assert.caller?String.format(Sys.Res.assertFailedCaller,a,this.ass=
ert.caller):String.format(Sys.Res.assertFailed,a);if(confirm(String.forma=
t(Sys.Res.breakIntoDebugger,a)))this.fail(a)}},clearTrace:function(){var =
a=3Ddocument.getElementById("TraceConsole");if(a&&a.tagName.toUpperCase()=
=3D=3D=3D"TEXTAREA")a.value=3D""},fail:function(message){this._appendCons=
ole(message);if(Sys.Browser.hasDebuggerStatement)eval("debugger")},trace:=
function(a){this._appendConsole(a);this._appendTrace(a)},traceDump:functi=
on(a,b){var =
c=3Dthis._traceDump(a,b,true)},_traceDump:function(a,c,f,b,d){c=3Dc?c:"tr=
aceDump";b=3Db?b:"";if(a=3D=3D=3Dnull){this.trace(b+c+": =
null");return}switch(typeof a){case "undefined":this.trace(b+c+": =
Undefined");break;case "number":case "string":case =
"boolean":this.trace(b+c+": =
"+a);break;default:if(Date.isInstanceOfType(a)||RegExp.isInstanceOfType(a=
)){this.trace(b+c+": "+a.toString());break}if(!d)d=3D[];else =
if(Array.contains(d,a)){this.trace(b+c+": =
...");return}Array.add(d,a);if(a=3D=3Dwindow||a=3D=3D=3Ddocument||window.=
HTMLElement&&a instanceof HTMLElement||typeof =
a.nodeName=3D=3D=3D"string"){var =
k=3Da.tagName?a.tagName:"DomElement";if(a.id)k+=3D" - =
"+a.id;this.trace(b+c+" {"+k+"}")}else{var =
i=3DObject.getTypeName(a);this.trace(b+c+(typeof i=3D=3D=3D"string"?" =
{"+i+"}":""));if(b=3D=3D=3D""||f){b+=3D"    ";var =
e,j,l,g,h;if(Array.isInstanceOfType(a)){j=3Da.length;for(e=3D0;e<j;e++)th=
is._traceDump(a[e],"["+e+"]",f,b,d)}else for(g in =
a){h=3Da[g];if(!Function.isInstanceOfType(h))this._traceDump(h,g,f,b,d)}}=
}Array.remove(d,a)}}};Sys._Debug.registerClass("Sys._Debug");Sys.Debug=3D=
new Sys._Debug;Sys.Debug.isDebug=3Dfalse;function =
Sys$Enum$parse(c,e){var =
a,b,i;if(e){a=3Dthis.__lowerCaseValues;if(!a){this.__lowerCaseValues=3Da=3D=
{};var g=3Dthis.prototype;for(var f in g)a[f.toLowerCase()]=3Dg[f]}}else =
a=3Dthis.prototype;if(!this.__flags){i=3De?c.toLowerCase():c;b=3Da[i.trim=
()];if(typeof b!=3D=3D"number")throw =
Error.argument("value",String.format(Sys.Res.enumInvalidValue,c,this.__ty=
peName));return b}else{var =
h=3D(e?c.toLowerCase():c).split(","),j=3D0;for(var =
d=3Dh.length-1;d>=3D0;d--){var k=3Dh[d].trim();b=3Da[k];if(typeof =
b!=3D=3D"number")throw =
Error.argument("value",String.format(Sys.Res.enumInvalidValue,c.split(","=
)[d].trim(),this.__typeName));j|=3Db}return j}}function =
Sys$Enum$toString(c){if(typeof =
c=3D=3D=3D"undefined"||c=3D=3D=3Dnull)return this.__string;var =
d=3Dthis.prototype,a;if(!this.__flags||c=3D=3D=3D0){for(a in =
d)if(d[a]=3D=3D=3Dc)return a}else{var =
b=3Dthis.__sortedValues;if(!b){b=3D[];for(a in =
d)b[b.length]=3D{key:a,value:d[a]};b.sort(function(a,b){return =
a.value-b.value});this.__sortedValues=3Db}var =
e=3D[],g=3Dc;for(a=3Db.length-1;a>=3D0;a--){var =
h=3Db[a],f=3Dh.value;if(f=3D=3D=3D0)continue;if((f&c)=3D=3D=3Df){e[e.leng=
th]=3Dh.key;g-=3Df;if(g=3D=3D=3D0)break}}if(e.length&&g=3D=3D=3D0)return =
e.reverse().join(", ")}return =
""}Type.prototype.registerEnum=3Dfunction(b,c){Sys.__upperCaseTypes[b.toU=
pperCase()]=3Dthis;for(var a in =
this.prototype)this[a]=3Dthis.prototype[a];this.__typeName=3Db;this.parse=
=3DSys$Enum$parse;this.__string=3Dthis.toString();this.toString=3DSys$Enu=
m$toString;this.__flags=3Dc;this.__enum=3Dtrue};Type.isEnum=3Dfunction(a)=
{if(typeof a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;return =
!!a.__enum};Type.isFlags=3Dfunction(a){if(typeof =
a=3D=3D=3D"undefined"||a=3D=3D=3Dnull)return false;return =
!!a.__flags};Sys.EventHandlerList=3Dfunction(){this._list=3D{}};Sys.Event=
HandlerList.prototype=3D{addHandler:function(b,a){Array.add(this._getEven=
t(b,true),a)},removeHandler:function(c,b){var =
a=3Dthis._getEvent(c);if(!a)return;Array.remove(a,b)},getHandler:function=
(b){var a=3Dthis._getEvent(b);if(!a||a.length=3D=3D=3D0)return =
null;a=3DArray.clone(a);return function(c,d){for(var =
b=3D0,e=3Da.length;b<e;b++)a[b](c,d)}},_getEvent:function(a,b){if(!this._=
list[a]){if(!b)return null;this._list[a]=3D[]}return =
this._list[a]}};Sys.EventHandlerList.registerClass("Sys.EventHandlerList"=
);Sys.EventArgs=3Dfunction(){};Sys.EventArgs.registerClass("Sys.EventArgs=
");Sys.EventArgs.Empty=3Dnew =
Sys.EventArgs;Sys.CancelEventArgs=3Dfunction(){Sys.CancelEventArgs.initia=
lizeBase(this);this._cancel=3Dfalse};Sys.CancelEventArgs.prototype=3D{get=
_cancel:function(){return =
this._cancel},set_cancel:function(a){this._cancel=3Da}};Sys.CancelEventAr=
gs.registerClass("Sys.CancelEventArgs",Sys.EventArgs);Sys.INotifyProperty=
Change=3Dfunction(){};Sys.INotifyPropertyChange.prototype=3D{};Sys.INotif=
yPropertyChange.registerInterface("Sys.INotifyPropertyChange");Sys.Proper=
tyChangedEventArgs=3Dfunction(a){Sys.PropertyChangedEventArgs.initializeB=
ase(this);this._propertyName=3Da};Sys.PropertyChangedEventArgs.prototype=3D=
{get_propertyName:function(){return =
this._propertyName}};Sys.PropertyChangedEventArgs.registerClass("Sys.Prop=
ertyChangedEventArgs",Sys.EventArgs);Sys.INotifyDisposing=3Dfunction(){};=
Sys.INotifyDisposing.prototype=3D{};Sys.INotifyDisposing.registerInterfac=
e("Sys.INotifyDisposing");Sys.Component=3Dfunction(){if(Sys.Application)S=
ys.Application.registerDisposableObject(this)};Sys.Component.prototype=3D=
{_id:null,_initialized:false,_updating:false,get_events:function(){if(!th=
is._events)this._events=3Dnew Sys.EventHandlerList;return =
this._events},get_id:function(){return =
this._id},set_id:function(a){this._id=3Da},get_isInitialized:function(){r=
eturn this._initialized},get_isUpdating:function(){return =
this._updating},add_disposing:function(a){this.get_events().addHandler("d=
isposing",a)},remove_disposing:function(a){this.get_events().removeHandle=
r("disposing",a)},add_propertyChanged:function(a){this.get_events().addHa=
ndler("propertyChanged",a)},remove_propertyChanged:function(a){this.get_e=
vents().removeHandler("propertyChanged",a)},beginUpdate:function(){this._=
updating=3Dtrue},dispose:function(){if(this._events){var =
a=3Dthis._events.getHandler("disposing");if(a)a(this,Sys.EventArgs.Empty)=
}delete =
this._events;Sys.Application.unregisterDisposableObject(this);Sys.Applica=
tion.removeComponent(this)},endUpdate:function(){this._updating=3Dfalse;i=
f(!this._initialized)this.initialize();this.updated()},initialize:functio=
n(){this._initialized=3Dtrue},raisePropertyChanged:function(b){if(!this._=
events)return;var =
a=3Dthis._events.getHandler("propertyChanged");if(a)a(this,new =
Sys.PropertyChangedEventArgs(b))},updated:function(){}};Sys.Component.reg=
isterClass("Sys.Component",null,Sys.IDisposable,Sys.INotifyPropertyChange=
,Sys.INotifyDisposing);function Sys$Component$_setProperties(a,i){var =
d,j=3DObject.getType(a),e=3Dj=3D=3D=3DObject||j=3D=3D=3DSys.UI.DomElement=
,h=3DSys.Component.isInstanceOfType(a)&&!a.get_isUpdating();if(h)a.beginU=
pdate();for(var c in i){var b=3Di[c],f=3De?null:a["get_"+c];if(e||typeof =
f!=3D=3D"function"){var k=3Da[c];if(!b||typeof =
b!=3D=3D"object"||e&&!k)a[c]=3Db;else =
Sys$Component$_setProperties(k,b)}else{var l=3Da["set_"+c];if(typeof =
l=3D=3D=3D"function")l.apply(a,[b]);else if(b instanceof =
Array){d=3Df.apply(a);for(var =
g=3D0,m=3Dd.length,n=3Db.length;g<n;g++,m++)d[m]=3Db[g]}else if(typeof =
b=3D=3D=3D"object"&&Object.getType(b)=3D=3D=3DObject){d=3Df.apply(a);Sys$=
Component$_setProperties(d,b)}}}if(h)a.endUpdate()}function =
Sys$Component$_setReferences(c,b){for(var a in b){var =
e=3Dc["set_"+a],d=3D$find(b[a]);e.apply(c,[d])}}var =
$create=3DSys.Component.create=3Dfunction(h,f,d,c,g){var a=3Dg?new =
h(g):new =
h,b=3DSys.Application,i=3Db.get_isCreatingComponents();a.beginUpdate();if=
(f)Sys$Component$_setProperties(a,f);if(d)for(var e in =
d)a["add_"+e](d[e]);if(a.get_id())b.addComponent(a);if(i){b._createdCompo=
nents[b._createdComponents.length]=3Da;if(c)b._addComponentToSecondPass(a=
,c);else =
a.endUpdate()}else{if(c)Sys$Component$_setReferences(a,c);a.endUpdate()}r=
eturn a};Sys.UI.MouseButton=3Dfunction(){throw =
Error.notImplemented()};Sys.UI.MouseButton.prototype=3D{leftButton:0,midd=
leButton:1,rightButton:2};Sys.UI.MouseButton.registerEnum("Sys.UI.MouseBu=
tton");Sys.UI.Key=3Dfunction(){throw =
Error.notImplemented()};Sys.UI.Key.prototype=3D{backspace:8,tab:9,enter:1=
3,esc:27,space:32,pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,righ=
t:39,down:40,del:127};Sys.UI.Key.registerEnum("Sys.UI.Key");Sys.UI.Point=3D=
function(a,b){this.x=3Da;this.y=3Db};Sys.UI.Point.registerClass("Sys.UI.P=
oint");Sys.UI.Bounds=3Dfunction(c,d,b,a){this.x=3Dc;this.y=3Dd;this.heigh=
t=3Da;this.width=3Db};Sys.UI.Bounds.registerClass("Sys.UI.Bounds");Sys.UI=
.DomEvent=3Dfunction(e){var =
a=3De,b=3Dthis.type=3Da.type.toLowerCase();this.rawEvent=3Da;this.altKey=3D=
a.altKey;if(typeof a.button!=3D=3D"undefined")this.button=3Dtypeof =
a.which!=3D=3D"undefined"?a.button:a.button=3D=3D=3D4?Sys.UI.MouseButton.=
middleButton:a.button=3D=3D=3D2?Sys.UI.MouseButton.rightButton:Sys.UI.Mou=
seButton.leftButton;if(b=3D=3D=3D"keypress")this.charCode=3Da.charCode||a=
.keyCode;else if(a.keyCode&&a.keyCode=3D=3D=3D46)this.keyCode=3D127;else =
this.keyCode=3Da.keyCode;this.clientX=3Da.clientX;this.clientY=3Da.client=
Y;this.ctrlKey=3Da.ctrlKey;this.target=3Da.target?a.target:a.srcElement;i=
f(!b.startsWith("key"))if(typeof a.offsetX!=3D=3D"undefined"&&typeof =
a.offsetY!=3D=3D"undefined"){this.offsetX=3Da.offsetX;this.offsetY=3Da.of=
fsetY}else if(this.target&&this.target.nodeType!=3D=3D3&&typeof =
a.clientX=3D=3D=3D"number"){var =
c=3DSys.UI.DomElement.getLocation(this.target),d=3DSys.UI.DomElement._get=
Window(this.target);this.offsetX=3D(d.pageXOffset||0)+a.clientX-c.x;this.=
offsetY=3D(d.pageYOffset||0)+a.clientY-c.y}this.screenX=3Da.screenX;this.=
screenY=3Da.screenY;this.shiftKey=3Da.shiftKey};Sys.UI.DomEvent.prototype=
=3D{preventDefault:function(){if(this.rawEvent.preventDefault)this.rawEve=
nt.preventDefault();else =
if(window.event)this.rawEvent.returnValue=3Dfalse},stopPropagation:functi=
on(){if(this.rawEvent.stopPropagation)this.rawEvent.stopPropagation();els=
e =
if(window.event)this.rawEvent.cancelBubble=3Dtrue}};Sys.UI.DomEvent.regis=
terClass("Sys.UI.DomEvent");var =
$addHandler=3DSys.UI.DomEvent.addHandler=3Dfunction(a,d,e){if(!a._events)=
a._events=3D{};var c=3Da._events[d];if(!c)a._events[d]=3Dc=3D[];var =
b;if(a.addEventListener){b=3Dfunction(b){return e.call(a,new =
Sys.UI.DomEvent(b))};a.addEventListener(d,b,false)}else =
if(a.attachEvent){b=3Dfunction(){var =
b=3D{};try{b=3DSys.UI.DomElement._getWindow(a).event}catch(c){}return =
e.call(a,new =
Sys.UI.DomEvent(b))};a.attachEvent("on"+d,b)}c[c.length]=3D{handler:e,bro=
wserHandler:b}},$addHandlers=3DSys.UI.DomEvent.addHandlers=3Dfunction(e,d=
,c){for(var b in d){var =
a=3Dd[b];if(c)a=3DFunction.createDelegate(c,a);$addHandler(e,b,a)}},$clea=
rHandlers=3DSys.UI.DomEvent.clearHandlers=3Dfunction(a){if(a._events){var=
 e=3Da._events;for(var b in e){var d=3De[b];for(var =
c=3Dd.length-1;c>=3D0;c--)$removeHandler(a,b,d[c].handler)}a._events=3Dnu=
ll}},$removeHandler=3DSys.UI.DomEvent.removeHandler=3Dfunction(a,e,f){var=
 d=3Dnull,c=3Da._events[e];for(var =
b=3D0,g=3Dc.length;b<g;b++)if(c[b].handler=3D=3D=3Df){d=3Dc[b].browserHan=
dler;break}if(a.removeEventListener)a.removeEventListener(e,d,false);else=
 =
if(a.detachEvent)a.detachEvent("on"+e,d);c.splice(b,1)};Sys.UI.DomElement=
=3Dfunction(){};Sys.UI.DomElement.registerClass("Sys.UI.DomElement");Sys.=
UI.DomElement.addCssClass=3Dfunction(a,b){if(!Sys.UI.DomElement.containsC=
ssClass(a,b))if(a.className=3D=3D=3D"")a.className=3Db;else =
a.className+=3D" =
"+b};Sys.UI.DomElement.containsCssClass=3Dfunction(b,a){return =
Array.contains(b.className.split(" =
"),a)};Sys.UI.DomElement.getBounds=3Dfunction(a){var =
b=3DSys.UI.DomElement.getLocation(a);return new =
Sys.UI.Bounds(b.x,b.y,a.offsetWidth||0,a.offsetHeight||0)};var =
$get=3DSys.UI.DomElement.getElementById=3Dfunction(f,e){if(!e)return =
document.getElementById(f);if(e.getElementById)return =
e.getElementById(f);var c=3D[],d=3De.childNodes;for(var =
b=3D0;b<d.length;b++){var =
a=3Dd[b];if(a.nodeType=3D=3D1)c[c.length]=3Da}while(c.length){a=3Dc.shift=
();if(a.id=3D=3Df)return =
a;d=3Da.childNodes;for(b=3D0;b<d.length;b++){a=3Dd[b];if(a.nodeType=3D=3D=
1)c[c.length]=3Da}}return null};switch(Sys.Browser.agent){case =
Sys.Browser.InternetExplorer:Sys.UI.DomElement.getLocation=3Dfunction(a){=
if(a.self||a.nodeType=3D=3D=3D9)return new Sys.UI.Point(0,0);var =
b=3Da.getBoundingClientRect();if(!b)return new Sys.UI.Point(0,0);var =
d=3Da.ownerDocument.documentElement,e=3Db.left-2+d.scrollLeft,f=3Db.top-2=
+d.scrollTop;try{var =
c=3Da.ownerDocument.parentWindow.frameElement||null;if(c){var =
g=3Dc.frameBorder=3D=3D=3D"0"||c.frameBorder=3D=3D=3D"no"?2:0;e+=3Dg;f+=3D=
g}}catch(h){}return new Sys.UI.Point(e,f)};break;case =
Sys.Browser.Safari:Sys.UI.DomElement.getLocation=3Dfunction(c){if(c.windo=
w&&c.window=3D=3D=3Dc||c.nodeType=3D=3D=3D9)return new =
Sys.UI.Point(0,0);var f=3D0,g=3D0,j=3Dnull,e=3Dnull,b;for(var =
a=3Dc;a;j=3Da,(e=3Db,a=3Da.offsetParent)){b=3DSys.UI.DomElement._getCurre=
ntStyle(a);var =
d=3Da.tagName?a.tagName.toUpperCase():null;if((a.offsetLeft||a.offsetTop)=
&&(d!=3D=3D"BODY"||(!e||e.position!=3D=3D"absolute"))){f+=3Da.offsetLeft;=
g+=3Da.offsetTop}}b=3DSys.UI.DomElement._getCurrentStyle(c);var =
h=3Db?b.position:null;if(!h||h!=3D=3D"absolute")for(var =
a=3Dc.parentNode;a;a=3Da.parentNode){d=3Da.tagName?a.tagName.toUpperCase(=
):null;if(d!=3D=3D"BODY"&&d!=3D=3D"HTML"&&(a.scrollLeft||a.scrollTop)){f-=
=3Da.scrollLeft||0;g-=3Da.scrollTop||0}b=3DSys.UI.DomElement._getCurrentS=
tyle(a);var =
i=3Db?b.position:null;if(i&&i=3D=3D=3D"absolute")break}return new =
Sys.UI.Point(f,g)};break;case =
Sys.Browser.Opera:Sys.UI.DomElement.getLocation=3Dfunction(b){if(b.window=
&&b.window=3D=3D=3Db||b.nodeType=3D=3D=3D9)return new =
Sys.UI.Point(0,0);var d=3D0,e=3D0,i=3Dnull;for(var =
a=3Db;a;i=3Da,a=3Da.offsetParent){var =
f=3Da.tagName;d+=3Da.offsetLeft||0;e+=3Da.offsetTop||0}var =
g=3Db.style.position,c=3Dg&&g!=3D=3D"static";for(var =
a=3Db.parentNode;a;a=3Da.parentNode){f=3Da.tagName?a.tagName.toUpperCase(=
):null;if(f!=3D=3D"BODY"&&f!=3D=3D"HTML"&&(a.scrollLeft||a.scrollTop)&&(c=
&&(a.style.overflow=3D=3D=3D"scroll"||a.style.overflow=3D=3D=3D"auto"))){=
d-=3Da.scrollLeft||0;e-=3Da.scrollTop||0}var =
h=3Da&&a.style?a.style.position:null;c=3Dc||h&&h!=3D=3D"static"}return =
new =
Sys.UI.Point(d,e)};break;default:Sys.UI.DomElement.getLocation=3Dfunction=
(d){if(d.window&&d.window=3D=3D=3Dd||d.nodeType=3D=3D=3D9)return new =
Sys.UI.Point(0,0);var e=3D0,f=3D0,i=3Dnull,g=3Dnull,b=3Dnull;for(var =
a=3Dd;a;i=3Da,(g=3Db,a=3Da.offsetParent)){var =
c=3Da.tagName?a.tagName.toUpperCase():null;b=3DSys.UI.DomElement._getCurr=
entStyle(a);if((a.offsetLeft||a.offsetTop)&&!(c=3D=3D=3D"BODY"&&(!g||g.po=
sition!=3D=3D"absolute"))){e+=3Da.offsetLeft;f+=3Da.offsetTop}if(i!=3D=3D=
null&&b){if(c!=3D=3D"TABLE"&&c!=3D=3D"TD"&&c!=3D=3D"HTML"){e+=3DparseInt(=
b.borderLeftWidth)||0;f+=3DparseInt(b.borderTopWidth)||0}if(c=3D=3D=3D"TA=
BLE"&&(b.position=3D=3D=3D"relative"||b.position=3D=3D=3D"absolute")){e+=3D=
parseInt(b.marginLeft)||0;f+=3DparseInt(b.marginTop)||0}}}b=3DSys.UI.DomE=
lement._getCurrentStyle(d);var =
h=3Db?b.position:null;if(!h||h!=3D=3D"absolute")for(var =
a=3Dd.parentNode;a;a=3Da.parentNode){c=3Da.tagName?a.tagName.toUpperCase(=
):null;if(c!=3D=3D"BODY"&&c!=3D=3D"HTML"&&(a.scrollLeft||a.scrollTop)){e-=
=3Da.scrollLeft||0;f-=3Da.scrollTop||0;b=3DSys.UI.DomElement._getCurrentS=
tyle(a);if(b){e+=3DparseInt(b.borderLeftWidth)||0;f+=3DparseInt(b.borderT=
opWidth)||0}}}return new =
Sys.UI.Point(e,f)}}Sys.UI.DomElement.removeCssClass=3Dfunction(d,c){var =
a=3D" "+d.className+" ",b=3Da.indexOf(" "+c+" =
");if(b>=3D0)d.className=3D(a.substr(0,b)+" =
"+a.substring(b+c.length+1,a.length)).trim()};Sys.UI.DomElement.setLocati=
on=3Dfunction(b,c,d){var =
a=3Db.style;a.position=3D"absolute";a.left=3Dc+"px";a.top=3Dd+"px"};Sys.U=
I.DomElement.toggleCssClass=3Dfunction(b,a){if(Sys.UI.DomElement.contains=
CssClass(b,a))Sys.UI.DomElement.removeCssClass(b,a);else =
Sys.UI.DomElement.addCssClass(b,a)};Sys.UI.DomElement.getVisibilityMode=3D=
function(a){return =
a._visibilityMode=3D=3D=3DSys.UI.VisibilityMode.hide?Sys.UI.VisibilityMod=
e.hide:Sys.UI.VisibilityMode.collapse};Sys.UI.DomElement.setVisibilityMod=
e=3Dfunction(a,b){Sys.UI.DomElement._ensureOldDisplayMode(a);if(a._visibi=
lityMode!=3D=3Db){a._visibilityMode=3Db;if(Sys.UI.DomElement.getVisible(a=
)=3D=3D=3Dfalse)if(a._visibilityMode=3D=3D=3DSys.UI.VisibilityMode.hide)a=
.style.display=3Da._oldDisplayMode;else =
a.style.display=3D"none";a._visibilityMode=3Db}};Sys.UI.DomElement.getVis=
ible=3Dfunction(b){var =
a=3Db.currentStyle||Sys.UI.DomElement._getCurrentStyle(b);if(!a)return =
true;return =
a.visibility!=3D=3D"hidden"&&a.display!=3D=3D"none"};Sys.UI.DomElement.se=
tVisible=3Dfunction(a,b){if(b!=3D=3DSys.UI.DomElement.getVisible(a)){Sys.=
UI.DomElement._ensureOldDisplayMode(a);a.style.visibility=3Db?"visible":"=
hidden";if(b||a._visibilityMode=3D=3D=3DSys.UI.VisibilityMode.hide)a.styl=
e.display=3Da._oldDisplayMode;else =
a.style.display=3D"none"}};Sys.UI.DomElement._ensureOldDisplayMode=3Dfunc=
tion(a){if(!a._oldDisplayMode){var =
b=3Da.currentStyle||Sys.UI.DomElement._getCurrentStyle(a);a._oldDisplayMo=
de=3Db?b.display:null;if(!a._oldDisplayMode||a._oldDisplayMode=3D=3D=3D"n=
one")switch(a.tagName.toUpperCase()){case "DIV":case "P":case =
"ADDRESS":case "BLOCKQUOTE":case "BODY":case "COL":case "COLGROUP":case =
"DD":case "DL":case "DT":case "FIELDSET":case "FORM":case "H1":case =
"H2":case "H3":case "H4":case "H5":case "H6":case "HR":case =
"IFRAME":case "LEGEND":case "OL":case "PRE":case "TABLE":case "TD":case =
"TH":case "TR":case "UL":a._oldDisplayMode=3D"block";break;case =
"LI":a._oldDisplayMode=3D"list-item";break;default:a._oldDisplayMode=3D"i=
nline"}}};Sys.UI.DomElement._getWindow=3Dfunction(a){var =
b=3Da.ownerDocument||a.document||a;return =
b.defaultView||b.parentWindow};Sys.UI.DomElement._getCurrentStyle=3Dfunct=
ion(a){if(a.nodeType=3D=3D=3D3)return null;var =
c=3DSys.UI.DomElement._getWindow(a);if(a.documentElement)a=3Da.documentEl=
ement;var =
b=3Dc&&a!=3D=3Dc&&c.getComputedStyle?c.getComputedStyle(a,null):a.current=
Style||a.style;if(!b&&Sys.Browser.agent=3D=3D=3DSys.Browser.Safari&&a.sty=
le){var =
g=3Da.style.display,f=3Da.style.position;a.style.position=3D"absolute";a.=
style.display=3D"block";var =
e=3Dc.getComputedStyle(a,null);a.style.display=3Dg;a.style.position=3Df;b=
=3D{};for(var d in e)b[d]=3De[d];b.display=3D"none"}return =
b};Sys.IContainer=3Dfunction(){};Sys.IContainer.prototype=3D{};Sys.IConta=
iner.registerInterface("Sys.IContainer");Sys._ScriptLoader=3Dfunction(){t=
his._scriptsToLoad=3Dnull;this._sessions=3D[];this._scriptLoadedDelegate=3D=
Function.createDelegate(this,this._scriptLoadedHandler)};Sys._ScriptLoade=
r.prototype=3D{dispose:function(){this._stopSession();this._loading=3Dfal=
se;if(this._events)delete =
this._events;this._sessions=3Dnull;this._currentSession=3Dnull;this._scri=
ptLoadedDelegate=3Dnull},loadScripts:function(d,b,c,a){var =
e=3D{allScriptsLoadedCallback:b,scriptLoadFailedCallback:c,scriptLoadTime=
outCallback:a,scriptsToLoad:this._scriptsToLoad,scriptTimeout:d};this._sc=
riptsToLoad=3Dnull;this._sessions[this._sessions.length]=3De;if(!this._lo=
ading)this._nextSession()},notifyScriptLoaded:function(){if(!this._loadin=
g)return;this._currentTask._notified++;if(Sys.Browser.agent=3D=3D=3DSys.B=
rowser.Safari)if(this._currentTask._notified=3D=3D=3D1)window.setTimeout(=
Function.createDelegate(this,function(){this._scriptLoadedHandler(this._c=
urrentTask.get_scriptElement(),true)}),0)},queueCustomScriptTag:function(=
a){if(!this._scriptsToLoad)this._scriptsToLoad=3D[];Array.add(this._scrip=
tsToLoad,a)},queueScriptBlock:function(a){if(!this._scriptsToLoad)this._s=
criptsToLoad=3D[];Array.add(this._scriptsToLoad,{text:a})},queueScriptRef=
erence:function(a){if(!this._scriptsToLoad)this._scriptsToLoad=3D[];Array=
.add(this._scriptsToLoad,{src:a})},_createScriptElement:function(c){var =
a=3Ddocument.createElement("script");a.type=3D"text/javascript";for(var =
b in c)a[b]=3Dc[b];return a},_loadScriptsInternal:function(){var =
b=3Dthis._currentSession;if(b.scriptsToLoad&&b.scriptsToLoad.length>0){va=
r =
c=3DArray.dequeue(b.scriptsToLoad),a=3Dthis._createScriptElement(c);if(a.=
text&&Sys.Browser.agent=3D=3D=3DSys.Browser.Safari){a.innerHTML=3Da.text;=
delete a.text}if(typeof c.src=3D=3D=3D"string"){this._currentTask=3Dnew =
Sys._ScriptLoaderTask(a,this._scriptLoadedDelegate);this._currentTask.exe=
cute()}else{document.getElementsByTagName("head")[0].appendChild(a);Sys._=
ScriptLoader._clearScript(a);this._loadScriptsInternal()}}else{this._stop=
Session();var =
d=3Db.allScriptsLoadedCallback;if(d)d(this);this._nextSession()}},_nextSe=
ssion:function(){if(this._sessions.length=3D=3D=3D0){this._loading=3Dfals=
e;this._currentSession=3Dnull;return}this._loading=3Dtrue;var =
a=3DArray.dequeue(this._sessions);this._currentSession=3Da;if(a.scriptTim=
eout>0)this._timeoutCookie=3Dwindow.setTimeout(Function.createDelegate(th=
is,this._scriptLoadTimeoutHandler),a.scriptTimeout*1000);this._loadScript=
sInternal()},_raiseError:function(a){var =
c=3Dthis._currentSession.scriptLoadFailedCallback,b=3Dthis._currentTask.g=
et_scriptElement();this._stopSession();if(c){c(this,b,a);this._nextSessio=
n()}else{this._loading=3Dfalse;throw =
Sys._ScriptLoader._errorScriptLoadFailed(b.src,a)}},_scriptLoadedHandler:=
function(a,b){if(b&&this._currentTask._notified)if(this._currentTask._not=
ified>1)this._raiseError(true);else{Array.add(Sys._ScriptLoader._getLoade=
dScripts(),a.src);this._currentTask.dispose();this._currentTask=3Dnull;th=
is._loadScriptsInternal()}else =
this._raiseError(false)},_scriptLoadTimeoutHandler:function(){var =
a=3Dthis._currentSession.scriptLoadTimeoutCallback;this._stopSession();if=
(a)a(this);this._nextSession()},_stopSession:function(){if(this._timeoutC=
ookie){window.clearTimeout(this._timeoutCookie);this._timeoutCookie=3Dnul=
l}if(this._currentTask){this._currentTask.dispose();this._currentTask=3Dn=
ull}}};Sys._ScriptLoader.registerClass("Sys._ScriptLoader",null,Sys.IDisp=
osable);Sys._ScriptLoader.getInstance=3Dfunction(){var =
a=3DSys._ScriptLoader._activeInstance;if(!a)a=3DSys._ScriptLoader._active=
Instance=3Dnew Sys._ScriptLoader;return =
a};Sys._ScriptLoader.isScriptLoaded=3Dfunction(b){var =
a=3Ddocument.createElement("script");a.src=3Db;return =
Array.contains(Sys._ScriptLoader._getLoadedScripts(),a.src)};Sys._ScriptL=
oader.readLoadedScripts=3Dfunction(){if(!Sys._ScriptLoader._referencedScr=
ipts){var =
b=3DSys._ScriptLoader._referencedScripts=3D[],c=3Ddocument.getElementsByT=
agName("script");for(i=3Dc.length-1;i>=3D0;i--){var =
d=3Dc[i],a=3Dd.src;if(a.length)if(!Array.contains(b,a))Array.add(b,a)}}};=
Sys._ScriptLoader._clearScript=3Dfunction(a){if(!Sys.Debug.isDebug)a.pare=
ntNode.removeChild(a)};Sys._ScriptLoader._errorScriptLoadFailed=3Dfunctio=
n(b,d){var a;if(d)a=3DSys.Res.scriptLoadMultipleCallbacks;else =
a=3DSys.Res.scriptLoadFailed;var e=3D"Sys.ScriptLoadFailedException: =
"+String.format(a,b),c=3DError.create(e,{name:"Sys.ScriptLoadFailedExcept=
ion","scriptUrl":b});c.popStackFrame();return =
c};Sys._ScriptLoader._getLoadedScripts=3Dfunction(){if(!Sys._ScriptLoader=
._referencedScripts){Sys._ScriptLoader._referencedScripts=3D[];Sys._Scrip=
tLoader.readLoadedScripts()}return =
Sys._ScriptLoader._referencedScripts};Sys._ScriptLoaderTask=3Dfunction(b,=
a){this._scriptElement=3Db;this._completedCallback=3Da;this._notified=3D0=
};Sys._ScriptLoaderTask.prototype=3D{get_scriptElement:function(){return =
this._scriptElement},dispose:function(){if(this._disposed)return;this._di=
sposed=3Dtrue;this._removeScriptElementHandlers();Sys._ScriptLoader._clea=
rScript(this._scriptElement);this._scriptElement=3Dnull},execute:function=
(){this._addScriptElementHandlers();document.getElementsByTagName("head")=
[0].appendChild(this._scriptElement)},_addScriptElementHandlers:function(=
){this._scriptLoadDelegate=3DFunction.createDelegate(this,this._scriptLoa=
dHandler);if(Sys.Browser.agent!=3D=3DSys.Browser.InternetExplorer){this._=
scriptElement.readyState=3D"loaded";$addHandler(this._scriptElement,"load=
",this._scriptLoadDelegate)}else =
$addHandler(this._scriptElement,"readystatechange",this._scriptLoadDelega=
te);if(this._scriptElement.addEventListener){this._scriptErrorDelegate=3D=
Function.createDelegate(this,this._scriptErrorHandler);this._scriptElemen=
t.addEventListener("error",this._scriptErrorDelegate,false)}},_removeScri=
ptElementHandlers:function(){if(this._scriptLoadDelegate){var =
a=3Dthis.get_scriptElement();if(Sys.Browser.agent!=3D=3DSys.Browser.Inter=
netExplorer)$removeHandler(a,"load",this._scriptLoadDelegate);else =
$removeHandler(a,"readystatechange",this._scriptLoadDelegate);if(this._sc=
riptErrorDelegate){this._scriptElement.removeEventListener("error",this._=
scriptErrorDelegate,false);this._scriptErrorDelegate=3Dnull}this._scriptL=
oadDelegate=3Dnull}},_scriptErrorHandler:function(){if(this._disposed)ret=
urn;this._completedCallback(this.get_scriptElement(),false)},_scriptLoadH=
andler:function(){if(this._disposed)return;var =
a=3Dthis.get_scriptElement();if(a.readyState!=3D=3D"loaded"&&a.readyState=
!=3D=3D"complete")return;var =
b=3Dthis;window.setTimeout(function(){b._completedCallback(a,true)},0)}};=
Sys._ScriptLoaderTask.registerClass("Sys._ScriptLoaderTask",null,Sys.IDis=
posable);Sys.ApplicationLoadEventArgs=3Dfunction(b,a){Sys.ApplicationLoad=
EventArgs.initializeBase(this);this._components=3Db;this._isPartialLoad=3D=
a};Sys.ApplicationLoadEventArgs.prototype=3D{get_components:function(){re=
turn this._components},get_isPartialLoad:function(){return =
this._isPartialLoad}};Sys.ApplicationLoadEventArgs.registerClass("Sys.App=
licationLoadEventArgs",Sys.EventArgs);Sys.HistoryEventArgs=3Dfunction(a){=
Sys.HistoryEventArgs.initializeBase(this);this._state=3Da};Sys.HistoryEve=
ntArgs.prototype=3D{get_state:function(){return =
this._state}};Sys.HistoryEventArgs.registerClass("Sys.HistoryEventArgs",S=
ys.EventArgs);Sys._Application=3Dfunction(){Sys._Application.initializeBa=
se(this);this._disposableObjects=3D[];this._components=3D{};this._created=
Components=3D[];this._secondPassComponents=3D[];this._appLoadHandler=3Dnu=
ll;this._beginRequestHandler=3Dnull;this._clientId=3Dnull;this._currentEn=
try=3D"";this._endRequestHandler=3Dnull;this._history=3Dnull;this._enable=
History=3Dfalse;this._historyFrame=3Dnull;this._historyInitialized=3Dfals=
e;this._historyInitialLength=3D0;this._historyLength=3D0;this._historyPoi=
ntIsNew=3Dfalse;this._ignoreTimer=3Dfalse;this._initialState=3Dnull;this.=
_state=3D{};this._timerCookie=3D0;this._timerHandler=3Dnull;this._uniqueI=
d=3Dnull;this._unloadHandlerDelegate=3DFunction.createDelegate(this,this.=
_unloadHandler);this._loadHandlerDelegate=3DFunction.createDelegate(this,=
this._loadHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._unloa=
dHandlerDelegate);Sys.UI.DomEvent.addHandler(window,"load",this._loadHand=
lerDelegate)};Sys._Application.prototype=3D{_creatingComponents:false,_di=
sposing:false,get_isCreatingComponents:function(){return =
this._creatingComponents},get_stateString:function(){var =
a=3Dwindow.location.hash;if(this._isSafari2()){var =
b=3Dthis._getHistory();if(b)a=3Db[window.history.length-this._historyInit=
ialLength]}if(a.length>0&&a.charAt(0)=3D=3D=3D"#")a=3Da.substring(1);if(S=
ys.Browser.agent=3D=3D=3DSys.Browser.Firefox)a=3Dthis._serializeState(thi=
s._deserializeState(a,true));return =
a},get_enableHistory:function(){return =
this._enableHistory},set_enableHistory:function(a){this._enableHistory=3D=
a},add_init:function(a){if(this._initialized)a(this,Sys.EventArgs.Empty);=
else =
this.get_events().addHandler("init",a)},remove_init:function(a){this.get_=
events().removeHandler("init",a)},add_load:function(a){this.get_events().=
addHandler("load",a)},remove_load:function(a){this.get_events().removeHan=
dler("load",a)},add_navigate:function(a){this.get_events().addHandler("na=
vigate",a)},remove_navigate:function(a){this.get_events().removeHandler("=
navigate",a)},add_unload:function(a){this.get_events().addHandler("unload=
",a)},remove_unload:function(a){this.get_events().removeHandler("unload",=
a)},addComponent:function(a){this._components[a.get_id()]=3Da},addHistory=
Point:function(c,f){this._ensureHistory();var b=3Dthis._state;for(var a =
in c){var d=3Dc[a];if(d=3D=3D=3Dnull){if(typeof =
b[a]!=3D=3D"undefined")delete b[a]}else b[a]=3Dd}var =
e=3Dthis._serializeState(b);this._historyPointIsNew=3Dtrue;this._setState=
(e,f);this._raiseNavigate()},beginCreateComponents:function(){this._creat=
ingComponents=3Dtrue},dispose:function(){if(!this._disposing){this._dispo=
sing=3Dtrue;if(this._timerCookie){window.clearTimeout(this._timerCookie);=
delete =
this._timerCookie}if(this._endRequestHandler){Sys.WebForms.PageRequestMan=
ager.getInstance().remove_endRequest(this._endRequestHandler);delete =
this._endRequestHandler}if(this._beginRequestHandler){Sys.WebForms.PageRe=
questManager.getInstance().remove_beginRequest(this._beginRequestHandler)=
;delete =
this._beginRequestHandler}if(window.pageUnload)window.pageUnload(this,Sys=
.EventArgs.Empty);var =
c=3Dthis.get_events().getHandler("unload");if(c)c(this,Sys.EventArgs.Empt=
y);var b=3DArray.clone(this._disposableObjects);for(var =
a=3D0,e=3Db.length;a<e;a++)b[a].dispose();Array.clear(this._disposableObj=
ects);Sys.UI.DomEvent.removeHandler(window,"unload",this._unloadHandlerDe=
legate);if(this._loadHandlerDelegate){Sys.UI.DomEvent.removeHandler(windo=
w,"load",this._loadHandlerDelegate);this._loadHandlerDelegate=3Dnull}var =
d=3DSys._ScriptLoader.getInstance();if(d)d.dispose();Sys._Application.cal=
lBaseMethod(this,"dispose")}},endCreateComponents:function(){var =
b=3Dthis._secondPassComponents;for(var a=3D0,d=3Db.length;a<d;a++){var =
c=3Db[a].component;Sys$Component$_setReferences(c,b[a].references);c.endU=
pdate()}this._secondPassComponents=3D[];this._creatingComponents=3Dfalse}=
,findComponent:function(b,a){return =
a?Sys.IContainer.isInstanceOfType(a)?a.findComponent(b):a[b]||null:Sys.Ap=
plication._components[b]||null},getComponents:function(){var =
a=3D[],b=3Dthis._components;for(var c in b)a[a.length]=3Db[c];return =
a},initialize:function(){if(!this._initialized&&!this._initializing){this=
._initializing=3Dtrue;window.setTimeout(Function.createDelegate(this,this=
._doInitialize),0)}},notifyScriptLoaded:function(){var =
a=3DSys._ScriptLoader.getInstance();if(a)a.notifyScriptLoaded()},register=
DisposableObject:function(a){if(!this._disposing)this._disposableObjects[=
this._disposableObjects.length]=3Da},raiseLoad:function(){var =
b=3Dthis.get_events().getHandler("load"),a=3Dnew =
Sys.ApplicationLoadEventArgs(Array.clone(this._createdComponents),!this._=
initializing);if(b)b(this,a);if(window.pageLoad)window.pageLoad(this,a);t=
his._createdComponents=3D[]},removeComponent:function(b){var =
a=3Db.get_id();if(a)delete =
this._components[a]},setServerId:function(a,b){this._clientId=3Da;this._u=
niqueId=3Db},setServerState:function(a){this._ensureHistory();this._state=
.__s=3Da;this._updateHiddenField(a)},unregisterDisposableObject:function(=
a){if(!this._disposing)Array.remove(this._disposableObjects,a)},_addCompo=
nentToSecondPass:function(b,a){this._secondPassComponents[this._secondPas=
sComponents.length]=3D{component:b,references:a}},_deserializeState:funct=
ion(a,i){var e=3D{};a=3Da||"";var =
b=3Da.indexOf("&&");if(b!=3D=3D-1&&b+2<a.length){e.__s=3Da.substr(b+2);a=3D=
a.substr(0,b)}var g=3Da.split("&");for(var =
f=3D0,k=3Dg.length;f<k;f++){var =
d=3Dg[f],c=3Dd.indexOf("=3D");if(c!=3D=3D-1&&c+1<d.length){var =
j=3Dd.substr(0,c),h=3Dd.substr(c+1);e[j]=3Di?h:decodeURIComponent(h)}}ret=
urn =
e},_doInitialize:function(){Sys._Application.callBaseMethod(this,"initial=
ize");var =
b=3Dthis.get_events().getHandler("init");if(b){this.beginCreateComponents=
();b(this,Sys.EventArgs.Empty);this.endCreateComponents()}if(Sys.WebForms=
){this._beginRequestHandler=3DFunction.createDelegate(this,this._onPageRe=
questManagerBeginRequest);Sys.WebForms.PageRequestManager.getInstance().a=
dd_beginRequest(this._beginRequestHandler);this._endRequestHandler=3DFunc=
tion.createDelegate(this,this._onPageRequestManagerEndRequest);Sys.WebFor=
ms.PageRequestManager.getInstance().add_endRequest(this._endRequestHandle=
r)}var =
a=3Dthis.get_stateString();if(a!=3D=3Dthis._currentEntry)this._navigate(a=
);this.raiseLoad();this._initializing=3Dfalse},_enableHistoryInScriptMana=
ger:function(){this._enableHistory=3Dtrue},_ensureHistory:function(){if(!=
this._historyInitialized&&this._enableHistory){if(Sys.Browser.agent=3D=3D=
=3DSys.Browser.InternetExplorer&&Sys.Browser.documentMode<8){this._histor=
yFrame=3Ddocument.getElementById("__historyFrame");this._ignoreIFrame=3Dt=
rue}if(this._isSafari2()){var =
a=3Ddocument.getElementById("__history");this._setHistory([window.locatio=
n.hash]);this._historyInitialLength=3Dwindow.history.length}this._timerHa=
ndler=3DFunction.createDelegate(this,this._onIdle);this._timerCookie=3Dwi=
ndow.setTimeout(this._timerHandler,100);try{this._initialState=3Dthis._de=
serializeState(this.get_stateString())}catch(b){}this._historyInitialized=
=3Dtrue}},_getHistory:function(){var =
a=3Ddocument.getElementById("__history");if(!a)return "";var =
b=3Da.value;return =
b?Sys.Serialization.JavaScriptSerializer.deserialize(b,true):""},_isSafar=
i2:function(){return =
Sys.Browser.agent=3D=3D=3DSys.Browser.Safari&&Sys.Browser.version<=3D419.=
3},_loadHandler:function(){if(this._loadHandlerDelegate){Sys.UI.DomEvent.=
removeHandler(window,"load",this._loadHandlerDelegate);this._loadHandlerD=
elegate=3Dnull}this.initialize()},_navigate:function(c){this._ensureHisto=
ry();var b=3Dthis._deserializeState(c);if(this._uniqueId){var =
d=3Dthis._state.__s||"",a=3Db.__s||"";if(a!=3D=3Dd){this._updateHiddenFie=
ld(a);__doPostBack(this._uniqueId,a);this._state=3Db;return}}this._setSta=
te(c);this._state=3Db;this._raiseNavigate()},_onIdle:function(){delete =
this._timerCookie;var =
a=3Dthis.get_stateString();if(a!=3D=3Dthis._currentEntry){if(!this._ignor=
eTimer){this._historyPointIsNew=3Dfalse;this._navigate(a);this._historyLe=
ngth=3Dwindow.history.length}}else =
this._ignoreTimer=3Dfalse;this._timerCookie=3Dwindow.setTimeout(this._tim=
erHandler,100)},_onIFrameLoad:function(a){this._ensureHistory();if(!this.=
_ignoreIFrame){this._historyPointIsNew=3Dfalse;this._navigate(a)}this._ig=
noreIFrame=3Dfalse},_onPageRequestManagerBeginRequest:function(){this._ig=
noreTimer=3Dtrue},_onPageRequestManagerEndRequest:function(e,d){var =
b=3Dd.get_dataItems()[this._clientId],a=3Ddocument.getElementById("__EVEN=
TTARGET");if(a&&a.value=3D=3D=3Dthis._uniqueId)a.value=3D"";if(typeof =
b!=3D=3D"undefined"){this.setServerState(b);this._historyPointIsNew=3Dtru=
e}else this._ignoreTimer=3Dfalse;var =
c=3Dthis._serializeState(this._state);if(c!=3D=3Dthis._currentEntry){this=
._ignoreTimer=3Dtrue;this._setState(c);this._raiseNavigate()}},_raiseNavi=
gate:function(){var =
c=3Dthis.get_events().getHandler("navigate"),b=3D{};for(var a in =
this._state)if(a!=3D=3D"__s")b[a]=3Dthis._state[a];var d=3Dnew =
Sys.HistoryEventArgs(b);if(c)c(this,d)},_serializeState:function(d){var =
b=3D[];for(var a in d){var e=3Dd[a];if(a=3D=3D=3D"__s")var c=3De;else =
b[b.length]=3Da+"=3D"+encodeURIComponent(e)}return =
b.join("&")+(c?"&&"+c:"")},_setHistory:function(b){var =
a=3Ddocument.getElementById("__history");if(a)a.value=3DSys.Serialization=
.JavaScriptSerializer.serialize(b)},_setState:function(a,c){a=3Da||"";if(=
a!=3D=3Dthis._currentEntry){if(window.theForm){var =
e=3Dwindow.theForm.action,f=3De.indexOf("#");window.theForm.action=3D(f!=3D=
=3D-1?e.substring(0,f):e)+"#"+a}if(this._historyFrame&&this._historyPoint=
IsNew){this._ignoreIFrame=3Dtrue;this._historyPointIsNew=3Dfalse;var =
d=3Dthis._historyFrame.contentWindow.document;d.open("javascript:'<html><=
/html>'");d.write("<html><head><title>"+(c||document.title)+"</title><scr=
i"+'pt =
type=3D"text/javascript">parent.Sys.Application._onIFrameLoad(\''+a+"');<=
/scri"+"pt></head><body></body></html>");d.close()}this._ignoreTimer=3Dfa=
lse;var =
h=3Dthis.get_stateString();this._currentEntry=3Da;if(a!=3D=3Dh){if(this._=
isSafari2()){var =
g=3Dthis._getHistory();g[window.history.length-this._historyInitialLength=
+1]=3Da;this._setHistory(g);this._historyLength=3Dwindow.history.length+1=
;var =
b=3Ddocument.createElement("form");b.method=3D"get";b.action=3D"#"+a;docu=
ment.appendChild(b);b.submit();document.removeChild(b)}else =
window.location.hash=3Da;if(typeof =
c!=3D=3D"undefined"&&c!=3D=3Dnull)document.title=3Dc}}},_unloadHandler:fu=
nction(){this.dispose()},_updateHiddenField:function(b){if(this._clientId=
){var =
a=3Ddocument.getElementById(this._clientId);if(a)a.value=3Db}}};Sys._Appl=
ication.registerClass("Sys._Application",Sys.Component,Sys.IContainer);Sy=
s.Application=3Dnew Sys._Application;var =
$find=3DSys.Application.findComponent;Type.registerNamespace("Sys.Net");S=
ys.Net.WebRequestExecutor=3Dfunction(){this._webRequest=3Dnull;this._resu=
ltObject=3Dnull};Sys.Net.WebRequestExecutor.prototype=3D{get_webRequest:f=
unction(){return =
this._webRequest},_set_webRequest:function(a){this._webRequest=3Da},get_s=
tarted:function(){throw =
Error.notImplemented()},get_responseAvailable:function(){throw =
Error.notImplemented()},get_timedOut:function(){throw =
Error.notImplemented()},get_aborted:function(){throw =
Error.notImplemented()},get_responseData:function(){throw =
Error.notImplemented()},get_statusCode:function(){throw =
Error.notImplemented()},get_statusText:function(){throw =
Error.notImplemented()},get_xml:function(){throw =
Error.notImplemented()},get_object:function(){if(!this._resultObject)this=
._resultObject=3DSys.Serialization.JavaScriptSerializer.deserialize(this.=
get_responseData());return =
this._resultObject},executeRequest:function(){throw =
Error.notImplemented()},abort:function(){throw =
Error.notImplemented()},getResponseHeader:function(){throw =
Error.notImplemented()},getAllResponseHeaders:function(){throw =
Error.notImplemented()}};Sys.Net.WebRequestExecutor.registerClass("Sys.Ne=
t.WebRequestExecutor");Sys.Net.XMLDOM=3Dfunction(d){if(!window.DOMParser)=
{var c=3D["Msxml2.DOMDocument.3.0","Msxml2.DOMDocument"];for(var =
b=3D0,f=3Dc.length;b<f;b++)try{var a=3Dnew =
ActiveXObject(c[b]);a.async=3Dfalse;a.loadXML(d);a.setProperty("Selection=
Language","XPath");return a}catch(g){}}else try{var e=3Dnew =
window.DOMParser;return e.parseFromString(d,"text/xml")}catch(g){}return =
null};Sys.Net.XMLHttpExecutor=3Dfunction(){Sys.Net.XMLHttpExecutor.initia=
lizeBase(this);var =
a=3Dthis;this._xmlHttpRequest=3Dnull;this._webRequest=3Dnull;this._respon=
seAvailable=3Dfalse;this._timedOut=3Dfalse;this._timer=3Dnull;this._abort=
ed=3Dfalse;this._started=3Dfalse;this._onReadyStateChange=3Dfunction(){if=
(a._xmlHttpRequest.readyState=3D=3D=3D4){try{if(typeof =
a._xmlHttpRequest.status=3D=3D=3D"undefined")return}catch(b){return}a._cl=
earTimer();a._responseAvailable=3Dtrue;try{a._webRequest.completed(Sys.Ev=
entArgs.Empty)}finally{if(a._xmlHttpRequest!=3Dnull){a._xmlHttpRequest.on=
readystatechange=3DFunction.emptyMethod;a._xmlHttpRequest=3Dnull}}}};this=
._clearTimer=3Dfunction(){if(a._timer!=3Dnull){window.clearTimeout(a._tim=
er);a._timer=3Dnull}};this._onTimeout=3Dfunction(){if(!a._responseAvailab=
le){a._clearTimer();a._timedOut=3Dtrue;a._xmlHttpRequest.onreadystatechan=
ge=3DFunction.emptyMethod;a._xmlHttpRequest.abort();a._webRequest.complet=
ed(Sys.EventArgs.Empty);a._xmlHttpRequest=3Dnull}}};Sys.Net.XMLHttpExecut=
or.prototype=3D{get_timedOut:function(){return =
this._timedOut},get_started:function(){return =
this._started},get_responseAvailable:function(){return =
this._responseAvailable},get_aborted:function(){return =
this._aborted},executeRequest:function(){this._webRequest=3Dthis.get_webR=
equest();var =
c=3Dthis._webRequest.get_body(),a=3Dthis._webRequest.get_headers();this._=
xmlHttpRequest=3Dnew =
XMLHttpRequest;this._xmlHttpRequest.onreadystatechange=3Dthis._onReadySta=
teChange;var =
e=3Dthis._webRequest.get_httpVerb();this._xmlHttpRequest.open(e,this._web=
Request.getResolvedUrl(),true);if(a)for(var b in a){var =
f=3Da[b];if(typeof =
f!=3D=3D"function")this._xmlHttpRequest.setRequestHeader(b,f)}if(e.toLowe=
rCase()=3D=3D=3D"post"){if(a=3D=3D=3Dnull||!a["Content-Type"])this._xmlHt=
tpRequest.setRequestHeader("Content-Type","application/x-www-form-urlenco=
ded; charset=3Dutf-8");if(!c)c=3D""}var =
d=3Dthis._webRequest.get_timeout();if(d>0)this._timer=3Dwindow.setTimeout=
(Function.createDelegate(this,this._onTimeout),d);this._xmlHttpRequest.se=
nd(c);this._started=3Dtrue},getResponseHeader:function(b){var =
a;try{a=3Dthis._xmlHttpRequest.getResponseHeader(b)}catch(c){}if(!a)a=3D"=
";return a},getAllResponseHeaders:function(){return =
this._xmlHttpRequest.getAllResponseHeaders()},get_responseData:function()=
{return this._xmlHttpRequest.responseText},get_statusCode:function(){var =
a=3D0;try{a=3Dthis._xmlHttpRequest.status}catch(b){}return =
a},get_statusText:function(){return =
this._xmlHttpRequest.statusText},get_xml:function(){var =
a=3Dthis._xmlHttpRequest.responseXML;if(!a||!a.documentElement){a=3DSys.N=
et.XMLDOM(this._xmlHttpRequest.responseText);if(!a||!a.documentElement)re=
turn null}else =
if(navigator.userAgent.indexOf("MSIE")!=3D=3D-1)a.setProperty("SelectionL=
anguage","XPath");if(a.documentElement.namespaceURI=3D=3D=3D"http://www.m=
ozilla.org/newlayout/xml/parsererror.xml"&&a.documentElement.tagName=3D=3D=
=3D"parsererror")return =
null;if(a.documentElement.firstChild&&a.documentElement.firstChild.tagNam=
e=3D=3D=3D"parsererror")return null;return =
a},abort:function(){if(this._aborted||this._responseAvailable||this._time=
dOut)return;this._aborted=3Dtrue;this._clearTimer();if(this._xmlHttpReque=
st&&!this._responseAvailable){this._xmlHttpRequest.onreadystatechange=3DF=
unction.emptyMethod;this._xmlHttpRequest.abort();this._xmlHttpRequest=3Dn=
ull;this._webRequest.completed(Sys.EventArgs.Empty)}}};Sys.Net.XMLHttpExe=
cutor.registerClass("Sys.Net.XMLHttpExecutor",Sys.Net.WebRequestExecutor)=
;Sys.Net._WebRequestManager=3Dfunction(){this._defaultTimeout=3D0;this._d=
efaultExecutorType=3D"Sys.Net.XMLHttpExecutor"};Sys.Net._WebRequestManage=
r.prototype=3D{add_invokingRequest:function(a){this._get_eventHandlerList=
().addHandler("invokingRequest",a)},remove_invokingRequest:function(a){th=
is._get_eventHandlerList().removeHandler("invokingRequest",a)},add_comple=
tedRequest:function(a){this._get_eventHandlerList().addHandler("completed=
Request",a)},remove_completedRequest:function(a){this._get_eventHandlerLi=
st().removeHandler("completedRequest",a)},_get_eventHandlerList:function(=
){if(!this._events)this._events=3Dnew Sys.EventHandlerList;return =
this._events},get_defaultTimeout:function(){return =
this._defaultTimeout},set_defaultTimeout:function(a){this._defaultTimeout=
=3Da},get_defaultExecutorType:function(){return =
this._defaultExecutorType},set_defaultExecutorType:function(a){this._defa=
ultExecutorType=3Da},executeRequest:function(webRequest){var =
executor=3DwebRequest.get_executor();if(!executor){var =
failed=3Dfalse;try{var =
executorType=3Deval(this._defaultExecutorType);executor=3Dnew =
executorType}catch(a){failed=3Dtrue}webRequest.set_executor(executor)}if(=
executor.get_aborted())return;var evArgs=3Dnew =
Sys.Net.NetworkRequestEventArgs(webRequest),handler=3Dthis._get_eventHand=
lerList().getHandler("invokingRequest");if(handler)handler(this,evArgs);i=
f(!evArgs.get_cancel())executor.executeRequest()}};Sys.Net._WebRequestMan=
ager.registerClass("Sys.Net._WebRequestManager");Sys.Net.WebRequestManage=
r=3Dnew =
Sys.Net._WebRequestManager;Sys.Net.NetworkRequestEventArgs=3Dfunction(a){=
Sys.Net.NetworkRequestEventArgs.initializeBase(this);this._webRequest=3Da=
};Sys.Net.NetworkRequestEventArgs.prototype=3D{get_webRequest:function(){=
return =
this._webRequest}};Sys.Net.NetworkRequestEventArgs.registerClass("Sys.Net=
.NetworkRequestEventArgs",Sys.CancelEventArgs);Sys.Net.WebRequest=3Dfunct=
ion(){this._url=3D"";this._headers=3D{};this._body=3Dnull;this._userConte=
xt=3Dnull;this._httpVerb=3Dnull;this._executor=3Dnull;this._invokeCalled=3D=
false;this._timeout=3D0};Sys.Net.WebRequest.prototype=3D{add_completed:fu=
nction(a){this._get_eventHandlerList().addHandler("completed",a)},remove_=
completed:function(a){this._get_eventHandlerList().removeHandler("complet=
ed",a)},completed:function(b){var =
a=3DSys.Net.WebRequestManager._get_eventHandlerList().getHandler("complet=
edRequest");if(a)a(this._executor,b);a=3Dthis._get_eventHandlerList().get=
Handler("completed");if(a)a(this._executor,b)},_get_eventHandlerList:func=
tion(){if(!this._events)this._events=3Dnew Sys.EventHandlerList;return =
this._events},get_url:function(){return =
this._url},set_url:function(a){this._url=3Da},get_headers:function(){retu=
rn =
this._headers},get_httpVerb:function(){if(this._httpVerb=3D=3D=3Dnull){if=
(this._body=3D=3D=3Dnull)return "GET";return "POST"}return =
this._httpVerb},set_httpVerb:function(a){this._httpVerb=3Da},get_body:fun=
ction(){return =
this._body},set_body:function(a){this._body=3Da},get_userContext:function=
(){return =
this._userContext},set_userContext:function(a){this._userContext=3Da},get=
_executor:function(){return =
this._executor},set_executor:function(a){this._executor=3Da;this._executo=
r._set_webRequest(this)},get_timeout:function(){if(this._timeout=3D=3D=3D=
0)return Sys.Net.WebRequestManager.get_defaultTimeout();return =
this._timeout},set_timeout:function(a){this._timeout=3Da},getResolvedUrl:=
function(){return =
Sys.Net.WebRequest._resolveUrl(this._url)},invoke:function(){Sys.Net.WebR=
equestManager.executeRequest(this);this._invokeCalled=3Dtrue}};Sys.Net.We=
bRequest._resolveUrl=3Dfunction(b,a){if(b&&b.indexOf("://")!=3D=3D-1)retu=
rn b;if(!a||a.length=3D=3D=3D0){var =
d=3Ddocument.getElementsByTagName("base")[0];if(d&&d.href&&d.href.length>=
0)a=3Dd.href;else a=3Ddocument.URL}var =
c=3Da.indexOf("?");if(c!=3D=3D-1)a=3Da.substr(0,c);c=3Da.indexOf("#");if(=
c!=3D=3D-1)a=3Da.substr(0,c);a=3Da.substr(0,a.lastIndexOf("/")+1);if(!b||=
b.length=3D=3D=3D0)return a;if(b.charAt(0)=3D=3D=3D"/"){var =
e=3Da.indexOf("://"),g=3Da.indexOf("/",e+3);return =
a.substr(0,g)+b}else{var f=3Da.lastIndexOf("/");return =
a.substr(0,f+1)+b}};Sys.Net.WebRequest._createQueryString=3Dfunction(d,b)=
{if(!b)b=3DencodeURIComponent;var a=3Dnew =
Sys.StringBuilder,f=3D0;for(var c in d){var e=3Dd[c];if(typeof =
e=3D=3D=3D"function")continue;var =
g=3DSys.Serialization.JavaScriptSerializer.serialize(e);if(f!=3D=3D0)a.ap=
pend("&");a.append(c);a.append("=3D");a.append(b(g));f++}return =
a.toString()};Sys.Net.WebRequest._createUrl=3Dfunction(a,b){if(!b)return =
a;var d=3DSys.Net.WebRequest._createQueryString(b);if(d.length>0){var =
c=3D"?";if(a&&a.indexOf("?")!=3D=3D-1)c=3D"&";return a+c+d}else return =
a};Sys.Net.WebRequest.registerClass("Sys.Net.WebRequest");Sys.Net.WebServ=
iceProxy=3Dfunction(){};Sys.Net.WebServiceProxy.prototype=3D{get_timeout:=
function(){return this._timeout},set_timeout:function(a){if(a<0)throw =
Error.argumentOutOfRange("value",a,Sys.Res.invalidTimeout);this._timeout=3D=
a},get_defaultUserContext:function(){return =
this._userContext},set_defaultUserContext:function(a){this._userContext=3D=
a},get_defaultSucceededCallback:function(){return =
this._succeeded},set_defaultSucceededCallback:function(a){this._succeeded=
=3Da},get_defaultFailedCallback:function(){return =
this._failed},set_defaultFailedCallback:function(a){this._failed=3Da},get=
_path:function(){return =
this._path},set_path:function(a){this._path=3Da},_invoke:function(d,e,g,f=
,c,b,a){if(c=3D=3D=3Dnull||typeof =
c=3D=3D=3D"undefined")c=3Dthis.get_defaultSucceededCallback();if(b=3D=3D=3D=
null||typeof =
b=3D=3D=3D"undefined")b=3Dthis.get_defaultFailedCallback();if(a=3D=3D=3Dn=
ull||typeof =
a=3D=3D=3D"undefined")a=3Dthis.get_defaultUserContext();return =
Sys.Net.WebServiceProxy.invoke(d,e,g,f,c,b,a,this.get_timeout())}};Sys.Ne=
t.WebServiceProxy.registerClass("Sys.Net.WebServiceProxy");Sys.Net.WebSer=
viceProxy.invoke=3Dfunction(k,a,j,d,i,c,f,h){var b=3Dnew =
Sys.Net.WebRequest;b.get_headers()["Content-Type"]=3D"application/json; =
charset=3Dutf-8";if(!d)d=3D{};var =
g=3Dd;if(!j||!g)g=3D{};b.set_url(Sys.Net.WebRequest._createUrl(k+"/"+enco=
deURIComponent(a),g));var =
e=3Dnull;if(!j){e=3DSys.Serialization.JavaScriptSerializer.serialize(d);i=
f(e=3D=3D=3D"{}")e=3D""}b.set_body(e);b.add_completed(l);if(h&&h>0)b.set_=
timeout(h);b.invoke();function l(d){if(d.get_responseAvailable()){var =
g=3Dd.get_statusCode(),b=3Dnull;try{var =
e=3Dd.getResponseHeader("Content-Type");if(e.startsWith("application/json=
"))b=3Dd.get_object();else =
if(e.startsWith("text/xml"))b=3Dd.get_xml();else =
b=3Dd.get_responseData()}catch(m){}var =
k=3Dd.getResponseHeader("jsonerror"),h=3Dk=3D=3D=3D"true";if(h){if(b)b=3D=
new =
Sys.Net.WebServiceError(false,b.Message,b.StackTrace,b.ExceptionType)}els=
e =
if(e.startsWith("application/json"))b=3Db.d;if(g<200||g>=3D300||h){if(c){=
if(!b||!h)b=3Dnew =
Sys.Net.WebServiceError(false,String.format(Sys.Res.webServiceFailedNoMsg=
,a),"","");b._statusCode=3Dg;c(b,f,a)}}else if(i)i(b,f,a)}else{var =
j;if(d.get_timedOut())j=3DString.format(Sys.Res.webServiceTimedOut,a);els=
e j=3DString.format(Sys.Res.webServiceFailedNoMsg,a);if(c)c(new =
Sys.Net.WebServiceError(d.get_timedOut(),j,"",""),f,a)}}return =
b};Sys.Net.WebServiceProxy._generateTypedConstructor=3Dfunction(a){return=
 function(b){if(b)for(var c in =
b)this[c]=3Db[c];this.__type=3Da}};Sys.Net.WebServiceError=3Dfunction(c,d=
,b,a){this._timedOut=3Dc;this._message=3Dd;this._stackTrace=3Db;this._exc=
eptionType=3Da;this._statusCode=3D-1};Sys.Net.WebServiceError.prototype=3D=
{get_timedOut:function(){return =
this._timedOut},get_statusCode:function(){return =
this._statusCode},get_message:function(){return =
this._message},get_stackTrace:function(){return =
this._stackTrace},get_exceptionType:function(){return =
this._exceptionType}};Sys.Net.WebServiceError.registerClass("Sys.Net.WebS=
erviceError");Type.registerNamespace("Sys.Services");Sys.Services._Profil=
eService=3Dfunction(){Sys.Services._ProfileService.initializeBase(this);t=
his.properties=3D{}};Sys.Services._ProfileService.DefaultWebServicePath=3D=
"";Sys.Services._ProfileService.prototype=3D{_defaultLoadCompletedCallbac=
k:null,_defaultSaveCompletedCallback:null,_path:"",_timeout:0,get_default=
LoadCompletedCallback:function(){return =
this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:func=
tion(a){this._defaultLoadCompletedCallback=3Da},get_defaultSaveCompletedC=
allback:function(){return =
this._defaultSaveCompletedCallback},set_defaultSaveCompletedCallback:func=
tion(a){this._defaultSaveCompletedCallback=3Da},get_path:function(){retur=
n this._path||""},load:function(c,d,e,f){var =
b,a;if(!c){a=3D"GetAllPropertiesForCurrentUser";b=3D{authenticatedUserOnl=
y:false}}else{a=3D"GetPropertiesForCurrentUser";b=3D{properties:this._clo=
nePropertyNames(c),authenticatedUserOnly:false}}this._invoke(this._get_pa=
th(),a,false,b,Function.createDelegate(this,this._onLoadComplete),Functio=
n.createDelegate(this,this._onLoadFailed),[d,e,f])},save:function(d,b,c,e=
){var =
a=3Dthis._flattenProperties(d,this.properties);this._invoke(this._get_pat=
h(),"SetPropertiesForCurrentUser",false,{values:a.value,authenticatedUser=
Only:false},Function.createDelegate(this,this._onSaveComplete),Function.c=
reateDelegate(this,this._onSaveFailed),[b,c,e,a.count])},_clonePropertyNa=
mes:function(e){var c=3D[],d=3D{};for(var b=3D0;b<e.length;b++){var =
a=3De[b];if(!d[a]){Array.add(c,a);d[a]=3Dtrue}}return =
c},_flattenProperties:function(a,i,j){var =
b=3D{},e,d,g=3D0;if(a&&a.length=3D=3D=3D0)return =
{value:b,count:0};for(var c in =
i){e=3Di[c];d=3Dj?j+"."+c:c;if(Sys.Services.ProfileGroup.isInstanceOfType=
(e)){var =
k=3Dthis._flattenProperties(a,e,d),h=3Dk.value;g+=3Dk.count;for(var f in =
h){var l=3Dh[f];b[f]=3Dl}}else =
if(!a||Array.indexOf(a,d)!=3D=3D-1){b[d]=3De;g++}}return =
{value:b,count:g}},_get_path:function(){var =
a=3Dthis.get_path();if(!a.length)a=3DSys.Services._ProfileService.Default=
WebServicePath;if(!a||!a.length)throw =
Error.invalidOperation(Sys.Res.servicePathNotSet);return =
a},_onLoadComplete:function(a,e,g){if(typeof a!=3D=3D"object")throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
g,"Object"));var c=3Dthis._unflattenProperties(a);for(var b in =
c)this.properties[b]=3Dc[b];var =
d=3De[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSuccee=
dedCallback();if(d){var =
f=3De[2]||this.get_defaultUserContext();d(a.length,f,"Sys.Services.Profil=
eService.load")}},_onLoadFailed:function(d,b){var =
a=3Db[1]||this.get_defaultFailedCallback();if(a){var =
c=3Db[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileServic=
e.load")}},_onSaveComplete:function(a,b,f){var =
c=3Db[3];if(a!=3D=3Dnull)if(a instanceof Array)c-=3Da.length;else =
if(typeof a=3D=3D=3D"number")c=3Da;else throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
f,"Array"));var =
d=3Db[0]||this.get_defaultSaveCompletedCallback()||this.get_defaultSuccee=
dedCallback();if(d){var =
e=3Db[2]||this.get_defaultUserContext();d(c,e,"Sys.Services.ProfileServic=
e.save")}},_onSaveFailed:function(d,b){var =
a=3Db[1]||this.get_defaultFailedCallback();if(a){var =
c=3Db[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.ProfileServic=
e.save")}},_unflattenProperties:function(e){var c=3D{},d,f,h=3D0;for(var =
a in e){h++;f=3De[a];d=3Da.indexOf(".");if(d!=3D=3D-1){var =
g=3Da.substr(0,d);a=3Da.substr(d+1);var =
b=3Dc[g];if(!b||!Sys.Services.ProfileGroup.isInstanceOfType(b)){b=3Dnew =
Sys.Services.ProfileGroup;c[g]=3Db}b[a]=3Df}else =
c[a]=3Df}e.length=3Dh;return =
c}};Sys.Services._ProfileService.registerClass("Sys.Services._ProfileServ=
ice",Sys.Net.WebServiceProxy);Sys.Services.ProfileService=3Dnew =
Sys.Services._ProfileService;Sys.Services.ProfileGroup=3Dfunction(a){if(a=
)for(var b in =
a)this[b]=3Da[b]};Sys.Services.ProfileGroup.registerClass("Sys.Services.P=
rofileGroup");Sys.Services._AuthenticationService=3Dfunction(){Sys.Servic=
es._AuthenticationService.initializeBase(this)};Sys.Services._Authenticat=
ionService.DefaultWebServicePath=3D"";Sys.Services._AuthenticationService=
.prototype=3D{_defaultLoginCompletedCallback:null,_defaultLogoutCompleted=
Callback:null,_path:"",_timeout:0,_authenticated:false,get_defaultLoginCo=
mpletedCallback:function(){return =
this._defaultLoginCompletedCallback},set_defaultLoginCompletedCallback:fu=
nction(a){this._defaultLoginCompletedCallback=3Da},get_defaultLogoutCompl=
etedCallback:function(){return =
this._defaultLogoutCompletedCallback},set_defaultLogoutCompletedCallback:=
function(a){this._defaultLogoutCompletedCallback=3Da},get_isLoggedIn:func=
tion(){return this._authenticated},get_path:function(){return =
this._path||""},login:function(c,b,a,h,f,d,e,g){this._invoke(this._get_pa=
th(),"Login",false,{userName:c,password:b,createPersistentCookie:a},Funct=
ion.createDelegate(this,this._onLoginComplete),Function.createDelegate(th=
is,this._onLoginFailed),[c,b,a,h,f,d,e,g])},logout:function(c,a,b,d){this=
._invoke(this._get_path(),"Logout",false,{},Function.createDelegate(this,=
this._onLogoutComplete),Function.createDelegate(this,this._onLogoutFailed=
),[c,a,b,d])},_get_path:function(){var =
a=3Dthis.get_path();if(!a.length)a=3DSys.Services._AuthenticationService.=
DefaultWebServicePath;if(!a||!a.length)throw =
Error.invalidOperation(Sys.Res.servicePathNotSet);return =
a},_onLoginComplete:function(e,c,f){if(typeof e!=3D=3D"boolean")throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
f,"Boolean"));var =
b=3Dc[4],d=3Dc[7]||this.get_defaultUserContext(),a=3Dc[5]||this.get_defau=
ltLoginCompletedCallback()||this.get_defaultSucceededCallback();if(e){thi=
s._authenticated=3Dtrue;if(a)a(true,d,"Sys.Services.AuthenticationService=
.login");if(typeof =
b!=3D=3D"undefined"&&b!=3D=3Dnull)window.location.href=3Db}else =
if(a)a(false,d,"Sys.Services.AuthenticationService.login")},_onLoginFaile=
d:function(d,b){var a=3Db[6]||this.get_defaultFailedCallback();if(a){var =
c=3Db[7]||this.get_defaultUserContext();a(d,c,"Sys.Services.Authenticatio=
nService.login")}},_onLogoutComplete:function(f,a,e){if(f!=3D=3Dnull)thro=
w =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
e,"null"));var =
b=3Da[0],d=3Da[3]||this.get_defaultUserContext(),c=3Da[1]||this.get_defau=
ltLogoutCompletedCallback()||this.get_defaultSucceededCallback();this._au=
thenticated=3Dfalse;if(c)c(null,d,"Sys.Services.AuthenticationService.log=
out");if(!b)window.location.reload();else =
window.location.href=3Db},_onLogoutFailed:function(c,b){var =
a=3Db[2]||this.get_defaultFailedCallback();if(a)a(c,b[3],"Sys.Services.Au=
thenticationService.logout")},_setAuthenticated:function(a){this._authent=
icated=3Da}};Sys.Services._AuthenticationService.registerClass("Sys.Servi=
ces._AuthenticationService",Sys.Net.WebServiceProxy);Sys.Services.Authent=
icationService=3Dnew =
Sys.Services._AuthenticationService;Sys.Services._RoleService=3Dfunction(=
){Sys.Services._RoleService.initializeBase(this);this._roles=3D[]};Sys.Se=
rvices._RoleService.DefaultWebServicePath=3D"";Sys.Services._RoleService.=
prototype=3D{_defaultLoadCompletedCallback:null,_rolesIndex:null,_timeout=
:0,_path:"",get_defaultLoadCompletedCallback:function(){return =
this._defaultLoadCompletedCallback},set_defaultLoadCompletedCallback:func=
tion(a){this._defaultLoadCompletedCallback=3Da},get_path:function(){retur=
n this._path||""},get_roles:function(){return =
Array.clone(this._roles)},isUserInRole:function(a){var =
b=3Dthis._get_rolesIndex()[a.trim().toLowerCase()];return =
!!b},load:function(a,b,c){Sys.Net.WebServiceProxy.invoke(this._get_path()=
,"GetRolesForCurrentUser",false,{},Function.createDelegate(this,this._onL=
oadComplete),Function.createDelegate(this,this._onLoadFailed),[a,b,c],thi=
s.get_timeout())},_get_path:function(){var =
a=3Dthis.get_path();if(!a||!a.length)a=3DSys.Services._RoleService.Defaul=
tWebServicePath;if(!a||!a.length)throw =
Error.invalidOperation(Sys.Res.servicePathNotSet);return =
a},_get_rolesIndex:function(){if(!this._rolesIndex){var b=3D{};for(var =
a=3D0;a<this._roles.length;a++)b[this._roles[a].toLowerCase()]=3Dtrue;thi=
s._rolesIndex=3Db}return =
this._rolesIndex},_onLoadComplete:function(a,c,f){if(a&&!(a instanceof =
Array))throw =
Error.invalidOperation(String.format(Sys.Res.webServiceInvalidReturnType,=
f,"Array"));this._roles=3Da;this._rolesIndex=3Dnull;var =
b=3Dc[0]||this.get_defaultLoadCompletedCallback()||this.get_defaultSuccee=
dedCallback();if(b){var =
e=3Dc[2]||this.get_defaultUserContext(),d=3DArray.clone(a);b(d,e,"Sys.Ser=
vices.RoleService.load")}},_onLoadFailed:function(d,b){var =
a=3Db[1]||this.get_defaultFailedCallback();if(a){var =
c=3Db[2]||this.get_defaultUserContext();a(d,c,"Sys.Services.RoleService.l=
oad")}}};Sys.Services._RoleService.registerClass("Sys.Services._RoleServi=
ce",Sys.Net.WebServiceProxy);Sys.Services.RoleService=3Dnew =
Sys.Services._RoleService;Type.registerNamespace("Sys.Serialization");Sys=
.Serialization.JavaScriptSerializer=3Dfunction(){};Sys.Serialization.Java=
ScriptSerializer.registerClass("Sys.Serialization.JavaScriptSerializer");=
Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs=3D[];Sys.Seri=
alization.JavaScriptSerializer._charsToEscape=3D[];Sys.Serialization.Java=
ScriptSerializer._dateRegEx=3Dnew =
RegExp('(^|[^\\\\])\\"\\\\/Date\\((-?[0-9]+)(?:[a-zA-Z]|(?:\\+|-)[0-9]{4}=
)?\\)\\\\/\\"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars=3D=
{};Sys.Serialization.JavaScriptSerializer._escapeRegEx=3Dnew =
RegExp('["\\\\\\x00-\\x1F]',"i");Sys.Serialization.JavaScriptSerializer._=
escapeRegExGlobal=3Dnew =
RegExp('["\\\\\\x00-\\x1F]',"g");Sys.Serialization.JavaScriptSerializer._=
jsonRegEx=3Dnew RegExp("[^,:{}\\[\\]0-9.\\-+Eaeflnr-u =
\\n\\r\\t]","g");Sys.Serialization.JavaScriptSerializer._jsonStringRegEx=3D=
new =
RegExp('"(\\\\.|[^"\\\\])*"',"g");Sys.Serialization.JavaScriptSerializer.=
_serverTypeFieldName=3D"__type";Sys.Serialization.JavaScriptSerializer._i=
nit=3Dfunction(){var =
c=3D["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006=
","\\u0007","\\b","\\t","\\n","\\u000b","\\f","\\r","\\u000e","\\u000f","=
\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u=
0017","\\u0018","\\u0019","\\u001a","\\u001b","\\u001c","\\u001d","\\u001=
e","\\u001f"];Sys.Serialization.JavaScriptSerializer._charsToEscape[0]=3D=
"\\";Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs["\\"]=3D=
new =
RegExp("\\\\","g");Sys.Serialization.JavaScriptSerializer._escapeChars["\=
\"]=3D"\\\\";Sys.Serialization.JavaScriptSerializer._charsToEscape[1]=3D'=
"';Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs['"']=3Dnew=
 =
RegExp('"',"g");Sys.Serialization.JavaScriptSerializer._escapeChars['"']=3D=
'\\"';for(var a=3D0;a<32;a++){var =
b=3DString.fromCharCode(a);Sys.Serialization.JavaScriptSerializer._charsT=
oEscape[a+2]=3Db;Sys.Serialization.JavaScriptSerializer._charsToEscapeReg=
Exs[b]=3Dnew =
RegExp(b,"g");Sys.Serialization.JavaScriptSerializer._escapeChars[b]=3Dc[=
a]}};Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBuilder=3D=
function(b,a){a.append(b.toString())};Sys.Serialization.JavaScriptSeriali=
zer._serializeNumberWithBuilder=3Dfunction(a,b){if(isFinite(a))b.append(S=
tring(a));else throw =
Error.invalidOperation(Sys.Res.cannotSerializeNonFiniteNumbers)};Sys.Seri=
alization.JavaScriptSerializer._serializeStringWithBuilder=3Dfunction(a,c=
){c.append('"');if(Sys.Serialization.JavaScriptSerializer._escapeRegEx.te=
st(a)){if(Sys.Serialization.JavaScriptSerializer._charsToEscape.length=3D=
=3D=3D0)Sys.Serialization.JavaScriptSerializer._init();if(a.length<128)a=3D=
a.replace(Sys.Serialization.JavaScriptSerializer._escapeRegExGlobal,funct=
ion(a){return =
Sys.Serialization.JavaScriptSerializer._escapeChars[a]});else for(var =
d=3D0;d<34;d++){var =
b=3DSys.Serialization.JavaScriptSerializer._charsToEscape[d];if(a.indexOf=
(b)!=3D=3D-1)if(Sys.Browser.agent=3D=3D=3DSys.Browser.Opera||Sys.Browser.=
agent=3D=3D=3DSys.Browser.FireFox)a=3Da.split(b).join(Sys.Serialization.J=
avaScriptSerializer._escapeChars[b]);else =
a=3Da.replace(Sys.Serialization.JavaScriptSerializer._charsToEscapeRegExs=
[b],Sys.Serialization.JavaScriptSerializer._escapeChars[b])}}c.append(a);=
c.append('"')};Sys.Serialization.JavaScriptSerializer._serializeWithBuild=
er=3Dfunction(b,a,i,g){var c;switch(typeof b){case =
"object":if(b)if(Number.isInstanceOfType(b))Sys.Serialization.JavaScriptS=
erializer._serializeNumberWithBuilder(b,a);else =
if(Boolean.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._se=
rializeBooleanWithBuilder(b,a);else =
if(String.isInstanceOfType(b))Sys.Serialization.JavaScriptSerializer._ser=
ializeStringWithBuilder(b,a);else =
if(Array.isInstanceOfType(b)){a.append("[");for(c=3D0;c<b.length;++c){if(=
c>0)a.append(",");Sys.Serialization.JavaScriptSerializer._serializeWithBu=
ilder(b[c],a,false,g)}a.append("]")}else{if(Date.isInstanceOfType(b)){a.a=
ppend('"\\/Date(');a.append(b.getTime());a.append(')\\/"');break}var =
d=3D[],f=3D0;for(var e in =
b){if(e.startsWith("$"))continue;if(e=3D=3D=3DSys.Serialization.JavaScrip=
tSerializer._serverTypeFieldName&&f!=3D=3D0){d[f++]=3Dd[0];d[0]=3De}else =
d[f++]=3De}if(i)d.sort();a.append("{");var =
j=3Dfalse;for(c=3D0;c<f;c++){var h=3Db[d[c]];if(typeof =
h!=3D=3D"undefined"&&typeof h!=3D=3D"function"){if(j)a.append(",");else =
j=3Dtrue;Sys.Serialization.JavaScriptSerializer._serializeWithBuilder(d[c=
],a,i,g);a.append(":");Sys.Serialization.JavaScriptSerializer._serializeW=
ithBuilder(h,a,i,g)}}a.append("}")}else a.append("null");break;case =
"number":Sys.Serialization.JavaScriptSerializer._serializeNumberWithBuild=
er(b,a);break;case =
"string":Sys.Serialization.JavaScriptSerializer._serializeStringWithBuild=
er(b,a);break;case =
"boolean":Sys.Serialization.JavaScriptSerializer._serializeBooleanWithBui=
lder(b,a);break;default:a.append("null")}};Sys.Serialization.JavaScriptSe=
rializer.serialize=3Dfunction(b){var a=3Dnew =
Sys.StringBuilder;Sys.Serialization.JavaScriptSerializer._serializeWithBu=
ilder(b,a,false);return =
a.toString()};Sys.Serialization.JavaScriptSerializer.deserialize=3Dfuncti=
on(data,secure){if(data.length=3D=3D=3D0)throw =
Error.argument("data",Sys.Res.cannotDeserializeEmptyString);try{var =
exp=3Ddata.replace(Sys.Serialization.JavaScriptSerializer._dateRegEx,"$1n=
ew =
Date($2)");if(secure&&Sys.Serialization.JavaScriptSerializer._jsonRegEx.t=
est(exp.replace(Sys.Serialization.JavaScriptSerializer._jsonStringRegEx,"=
")))throw null;return eval("("+exp+")")}catch(a){throw =
Error.argument("data",Sys.Res.cannotDeserializeInvalidJson)}};Sys.Culture=
Info=3Dfunction(c,b,a){this.name=3Dc;this.numberFormat=3Db;this.dateTimeF=
ormat=3Da};Sys.CultureInfo.prototype=3D{_getDateTimeFormats:function(){if=
(!this._dateTimeFormats){var =
a=3Dthis.dateTimeFormat;this._dateTimeFormats=3D[a.MonthDayPattern,a.Year=
MonthPattern,a.ShortDatePattern,a.ShortTimePattern,a.LongDatePattern,a.Lo=
ngTimePattern,a.FullDateTimePattern,a.RFC1123Pattern,a.SortableDateTimePa=
ttern,a.UniversalSortableDateTimePattern]}return =
this._dateTimeFormats},_getMonthIndex:function(a){if(!this._upperMonths)t=
his._upperMonths=3Dthis._toUpperArray(this.dateTimeFormat.MonthNames);ret=
urn =
Array.indexOf(this._upperMonths,this._toUpper(a))},_getAbbrMonthIndex:fun=
ction(a){if(!this._upperAbbrMonths)this._upperAbbrMonths=3Dthis._toUpperA=
rray(this.dateTimeFormat.AbbreviatedMonthNames);return =
Array.indexOf(this._upperAbbrMonths,this._toUpper(a))},_getDayIndex:funct=
ion(a){if(!this._upperDays)this._upperDays=3Dthis._toUpperArray(this.date=
TimeFormat.DayNames);return =
Array.indexOf(this._upperDays,this._toUpper(a))},_getAbbrDayIndex:functio=
n(a){if(!this._upperAbbrDays)this._upperAbbrDays=3Dthis._toUpperArray(thi=
s.dateTimeFormat.AbbreviatedDayNames);return =
Array.indexOf(this._upperAbbrDays,this._toUpper(a))},_toUpperArray:functi=
on(c){var b=3D[];for(var =
a=3D0,d=3Dc.length;a<d;a++)b[a]=3Dthis._toUpper(c[a]);return =
b},_toUpper:function(a){return a.split("\u00a0").join(" =
").toUpperCase()}};Sys.CultureInfo._parse=3Dfunction(b){var =
a=3DSys.Serialization.JavaScriptSerializer.deserialize(b);return new =
Sys.CultureInfo(a.name,a.numberFormat,a.dateTimeFormat)};Sys.CultureInfo.=
registerClass("Sys.CultureInfo");Sys.CultureInfo.InvariantCulture=3DSys.C=
ultureInfo._parse('{"name":"","numberFormat":{"CurrencyDecimalDigits":2,"=
CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],=
"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":"=
,","CurrencySymbol":"\u00a4","NaNSymbol":"NaN","CurrencyNegativePattern":=
0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePa=
ttern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberD=
ecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","=
CurrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveS=
ign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentG=
roupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeD=
igits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"=
dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"=
@-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmT=
ype":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":tr=
ue},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDate=
TimePattern":"dddd, dd MMMM yyyy HH:mm:ss","LongDatePattern":"dddd, dd =
MMMM yyyy","LongTimePattern":"HH:mm:ss","MonthDayPattern":"MMMM =
dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy =
HH\':\'mm\':\'ss =
\'GMT\'","ShortDatePattern":"MM/dd/yyyy","ShortTimePattern":"HH:mm","Sort=
ableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","TimeSepar=
ator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd =
HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"yyyy =
MMMM","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"=
ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":true,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}');if(typeof =
__cultureInfo=3D=3D=3D"undefined")var =
__cultureInfo=3D'{"name":"en-US","numberFormat":{"CurrencyDecimalDigits":=
2,"CurrencyDecimalSeparator":".","IsReadOnly":false,"CurrencyGroupSizes":=
[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparato=
r":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0=
,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePat=
tern":0,"NegativeInfinitySymbol":"-Infinity","NegativeSign":"-","NumberDe=
cimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","C=
urrencyPositivePattern":0,"PositiveInfinitySymbol":"Infinity","PositiveSi=
gn":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGr=
oupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"\u2030","NativeDi=
gits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"d=
ateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"@=
-62135568000000@","MaxSupportedDateTime":"@253402300799999@","AlgorithmTy=
pe":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":fal=
se},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDate=
TimePattern":"dddd, MMMM dd, yyyy h:mm:ss tt","LongDatePattern":"dddd, =
MMMM dd, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM =
dd","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy =
HH\':\'mm\':\'ss =
\'GMT\'","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm =
tt","SortableDateTimePattern":"yyyy\'-\'MM\'-\'dd\'T\'HH\':\'mm\':\'ss","=
TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\'-\'MM\'-\'dd=
 HH\':\'mm\':\'ss\'Z\'","YearMonthPattern":"MMMM, =
yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"=
ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunda=
y","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"Abbrev=
iatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","=
Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","=
May","June","July","August","September","October","November","December","=
"],"IsReadOnly":false,"NativeCalendarName":"Gregorian =
Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May",=
"Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["Janu=
ary","February","March","April","May","June","July","August","September",=
"October","November","December",""]}}';Sys.CultureInfo.CurrentCulture=3DS=
ys.CultureInfo._parse(__cultureInfo);delete =
__cultureInfo;Sys.UI.Behavior=3Dfunction(b){Sys.UI.Behavior.initializeBas=
e(this);this._element=3Db;var =
a=3Db._behaviors;if(!a)b._behaviors=3D[this];else =
a[a.length]=3Dthis};Sys.UI.Behavior.prototype=3D{_name:null,get_element:f=
unction(){return this._element},get_id:function(){var =
a=3DSys.UI.Behavior.callBaseMethod(this,"get_id");if(a)return =
a;if(!this._element||!this._element.id)return "";return =
this._element.id+"$"+this.get_name()},get_name:function(){if(this._name)r=
eturn this._name;var =
a=3DObject.getTypeName(this),b=3Da.lastIndexOf(".");if(b!=3D-1)a=3Da.subs=
tr(b+1);if(!this.get_isInitialized())this._name=3Da;return =
a},set_name:function(a){this._name=3Da},initialize:function(){Sys.UI.Beha=
vior.callBaseMethod(this,"initialize");var =
a=3Dthis.get_name();if(a)this._element[a]=3Dthis},dispose:function(){Sys.=
UI.Behavior.callBaseMethod(this,"dispose");if(this._element){var =
a=3Dthis.get_name();if(a)this._element[a]=3Dnull;Array.remove(this._eleme=
nt._behaviors,this);delete =
this._element}}};Sys.UI.Behavior.registerClass("Sys.UI.Behavior",Sys.Comp=
onent);Sys.UI.Behavior.getBehaviorByName=3Dfunction(b,c){var =
a=3Db[c];return =
a&&Sys.UI.Behavior.isInstanceOfType(a)?a:null};Sys.UI.Behavior.getBehavio=
rs=3Dfunction(a){if(!a._behaviors)return [];return =
Array.clone(a._behaviors)};Sys.UI.Behavior.getBehaviorsByType=3Dfunction(=
d,e){var a=3Dd._behaviors,c=3D[];if(a)for(var =
b=3D0,f=3Da.length;b<f;b++)if(e.isInstanceOfType(a[b]))c[c.length]=3Da[b]=
;return c};Sys.UI.VisibilityMode=3Dfunction(){throw =
Error.notImplemented()};Sys.UI.VisibilityMode.prototype=3D{hide:0,collaps=
e:1};Sys.UI.VisibilityMode.registerEnum("Sys.UI.VisibilityMode");Sys.UI.C=
ontrol=3Dfunction(a){Sys.UI.Control.initializeBase(this);this._element=3D=
a;a.control=3Dthis};Sys.UI.Control.prototype=3D{_parent:null,_visibilityM=
ode:Sys.UI.VisibilityMode.hide,get_element:function(){return =
this._element},get_id:function(){if(!this._element)return "";return =
this._element.id},set_id:function(){throw =
Error.invalidOperation(Sys.Res.cantSetId)},get_parent:function(){if(this.=
_parent)return this._parent;if(!this._element)return null;var =
a=3Dthis._element.parentNode;while(a){if(a.control)return =
a.control;a=3Da.parentNode}return =
null},set_parent:function(a){this._parent=3Da},get_visibilityMode:functio=
n(){return =
Sys.UI.DomElement.getVisibilityMode(this._element)},set_visibilityMode:fu=
nction(a){Sys.UI.DomElement.setVisibilityMode(this._element,a)},get_visib=
le:function(){return =
Sys.UI.DomElement.getVisible(this._element)},set_visible:function(a){Sys.=
UI.DomElement.setVisible(this._element,a)},addCssClass:function(a){Sys.UI=
.DomElement.addCssClass(this._element,a)},dispose:function(){Sys.UI.Contr=
ol.callBaseMethod(this,"dispose");if(this._element){this._element.control=
=3Dundefined;delete this._element}if(this._parent)delete =
this._parent},onBubbleEvent:function(){return =
false},raiseBubbleEvent:function(b,c){var =
a=3Dthis.get_parent();while(a){if(a.onBubbleEvent(b,c))return;a=3Da.get_p=
arent()}},removeCssClass:function(a){Sys.UI.DomElement.removeCssClass(thi=
s._element,a)},toggleCssClass:function(a){Sys.UI.DomElement.toggleCssClas=
s(this._element,a)}};Sys.UI.Control.registerClass("Sys.UI.Control",Sys.Co=
mponent);
Type.registerNamespace('Sys');Sys.Res=3D{"argumentInteger":"Value must =
be an integer.","scriptLoadMultipleCallbacks":"The script =
\u0027{0}\u0027 contains multiple calls to =
Sys.Application.notifyScriptLoaded(). Only one is =
allowed.","invokeCalledTwice":"Cannot call invoke more than =
once.","webServiceFailed":"The server method \u0027{0}\u0027 failed with =
the following error: {1}","webServiceInvalidJsonWrapper":"The server =
method \u0027{0}\u0027 returned invalid data. The \u0027d\u0027 property =
is missing from the JSON wrapper.","argumentType":"Object cannot be =
converted to the required type.","argumentNull":"Value cannot be =
null.","controlCantSetId":"The id property can\u0027t be set on a =
control.","formatBadFormatSpecifier":"Format specifier was =
invalid.","webServiceFailedNoMsg":"The server method \u0027{0}\u0027 =
failed.","argumentDomElement":"Value must be a DOM =
element.","invalidExecutorType":"Could not create a valid =
Sys.Net.WebRequestExecutor from: =
{0}.","cannotCallBeforeResponse":"Cannot call {0} when responseAvailable =
is false.","actualValue":"Actual value was =
{0}.","enumInvalidValue":"\u0027{0}\u0027 is not a valid value for enum =
{1}.","scriptLoadFailed":"The script \u0027{0}\u0027 could not be =
loaded.","parameterCount":"Parameter count =
mismatch.","cannotDeserializeEmptyString":"Cannot deserialize empty =
string.","formatInvalidString":"Input string was not in a correct =
format.","invalidTimeout":"Value must be greater than or equal to =
zero.","cannotAbortBeforeStart":"Cannot abort when executor has not =
started.","argument":"Value does not fall within the expected =
range.","cannotDeserializeInvalidJson":"Cannot deserialize. The data =
does not correspond to valid JSON.","invalidHttpVerb":"httpVerb cannot =
be set to an empty or null string.","nullWebRequest":"Cannot call =
executeRequest with a null webRequest.","eventHandlerInvalid":"Handler =
was not added through the Sys.UI.DomEvent.addHandler =
method.","cannotSerializeNonFiniteNumbers":"Cannot serialize non finite =
numbers.","argumentUndefined":"Value cannot be =
undefined.","webServiceInvalidReturnType":"The server method =
\u0027{0}\u0027 returned an invalid type. Expected type: =
{1}","servicePathNotSet":"The path to the web service has not been =
set.","argumentTypeWithTypes":"Object of type \u0027{0}\u0027 cannot be =
converted to type \u0027{1}\u0027.","cannotCallOnceStarted":"Cannot call =
{0} once started.","badBaseUrl1":"Base URL does not contain =
://.","badBaseUrl2":"Base URL does not contain another =
/.","badBaseUrl3":"Cannot find last / in base =
URL.","setExecutorAfterActive":"Cannot set executor after it has become =
active.","paramName":"Parameter name: =
{0}","cannotCallOutsideHandler":"Cannot call {0} outside of a completed =
event handler.","cannotSerializeObjectWithCycle":"Cannot serialize =
object with cyclic reference within child properties.","format":"One of =
the identified items was in an invalid =
format.","assertFailedCaller":"Assertion Failed: {0}\r\nat =
{1}","argumentOutOfRange":"Specified argument was out of the range of =
valid values.","webServiceTimedOut":"The server method \u0027{0}\u0027 =
timed out.","notImplemented":"The method or operation is not =
implemented.","assertFailed":"Assertion Failed: =
{0}","invalidOperation":"Operation is not valid due to the current state =
of the object.","breakIntoDebugger":"{0}\r\n\r\nBreak into debugger?"};
if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/ScriptResource.axd?d=7U_PRMYzfwdEnOaNwfi6Gi5-jCTzWneNhYe7m6sY0Da1-wpCWJhDP8uCYv7nYg3qb4ghD1CnFopiD9P2CTDFJ4fHgH7ASPPPD0m8riFGJw7jE2TAyCgTvoyWvdrrH6Y4Nlg3RmqRQqJ7Jk-x1z01XwsLbReaQYZW-CdLeYji7m0SXBCM0&t=ffffffffda1e9529

=EF=BB=BF//----------------------------------------------------------
// Copyright (C) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------
// MicrosoftAjaxWebForms.js
Type.registerNamespace("Sys.WebForms");Sys.WebForms.BeginRequestEventArgs=
=3Dfunction(b,a){Sys.WebForms.BeginRequestEventArgs.initializeBase(this);=
this._request=3Db;this._postBackElement=3Da};Sys.WebForms.BeginRequestEve=
ntArgs.prototype=3D{get_postBackElement:function(){return =
this._postBackElement},get_request:function(){return =
this._request}};Sys.WebForms.BeginRequestEventArgs.registerClass("Sys.Web=
Forms.BeginRequestEventArgs",Sys.EventArgs);Sys.WebForms.EndRequestEventA=
rgs=3Dfunction(c,a,b){Sys.WebForms.EndRequestEventArgs.initializeBase(thi=
s);this._errorHandled=3Dfalse;this._error=3Dc;this._dataItems=3Da||{};thi=
s._response=3Db};Sys.WebForms.EndRequestEventArgs.prototype=3D{get_dataIt=
ems:function(){return this._dataItems},get_error:function(){return =
this._error},get_errorHandled:function(){return =
this._errorHandled},set_errorHandled:function(a){this._errorHandled=3Da},=
get_response:function(){return =
this._response}};Sys.WebForms.EndRequestEventArgs.registerClass("Sys.WebF=
orms.EndRequestEventArgs",Sys.EventArgs);Sys.WebForms.InitializeRequestEv=
entArgs=3Dfunction(b,a){Sys.WebForms.InitializeRequestEventArgs.initializ=
eBase(this);this._request=3Db;this._postBackElement=3Da};Sys.WebForms.Ini=
tializeRequestEventArgs.prototype=3D{get_postBackElement:function(){retur=
n this._postBackElement},get_request:function(){return =
this._request}};Sys.WebForms.InitializeRequestEventArgs.registerClass("Sy=
s.WebForms.InitializeRequestEventArgs",Sys.CancelEventArgs);Sys.WebForms.=
PageLoadedEventArgs=3Dfunction(b,a,c){Sys.WebForms.PageLoadedEventArgs.in=
itializeBase(this);this._panelsUpdated=3Db;this._panelsCreated=3Da;this._=
dataItems=3Dc||{}};Sys.WebForms.PageLoadedEventArgs.prototype=3D{get_data=
Items:function(){return =
this._dataItems},get_panelsCreated:function(){return =
this._panelsCreated},get_panelsUpdated:function(){return =
this._panelsUpdated}};Sys.WebForms.PageLoadedEventArgs.registerClass("Sys=
.WebForms.PageLoadedEventArgs",Sys.EventArgs);Sys.WebForms.PageLoadingEve=
ntArgs=3Dfunction(b,a,c){Sys.WebForms.PageLoadingEventArgs.initializeBase=
(this);this._panelsUpdating=3Db;this._panelsDeleting=3Da;this._dataItems=3D=
c||{}};Sys.WebForms.PageLoadingEventArgs.prototype=3D{get_dataItems:funct=
ion(){return this._dataItems},get_panelsDeleting:function(){return =
this._panelsDeleting},get_panelsUpdating:function(){return =
this._panelsUpdating}};Sys.WebForms.PageLoadingEventArgs.registerClass("S=
ys.WebForms.PageLoadingEventArgs",Sys.EventArgs);Sys.WebForms.PageRequest=
Manager=3Dfunction(){this._form=3Dnull;this._activeDefaultButton=3Dnull;t=
his._activeDefaultButtonClicked=3Dfalse;this._updatePanelIDs=3Dnull;this.=
_updatePanelClientIDs=3Dnull;this._updatePanelHasChildrenAsTriggers=3Dnul=
l;this._asyncPostBackControlIDs=3Dnull;this._asyncPostBackControlClientID=
s=3Dnull;this._postBackControlIDs=3Dnull;this._postBackControlClientIDs=3D=
null;this._scriptManagerID=3Dnull;this._pageLoadedHandler=3Dnull;this._ad=
ditionalInput=3Dnull;this._onsubmit=3Dnull;this._onSubmitStatements=3D[];=
this._originalDoPostBack=3Dnull;this._originalDoPostBackWithOptions=3Dnul=
l;this._originalFireDefaultButton=3Dnull;this._originalDoCallback=3Dnull;=
this._isCrossPost=3Dfalse;this._postBackSettings=3Dnull;this._request=3Dn=
ull;this._onFormSubmitHandler=3Dnull;this._onFormElementClickHandler=3Dnu=
ll;this._onWindowUnloadHandler=3Dnull;this._asyncPostBackTimeout=3Dnull;t=
his._controlIDToFocus=3Dnull;this._scrollPosition=3Dnull;this._processing=
Request=3Dfalse;this._scriptDisposes=3D{};this._transientFields=3D["__VIE=
WSTATEENCRYPTED","__VIEWSTATEFIELDCOUNT"]};Sys.WebForms.PageRequestManage=
r.prototype=3D{_get_eventHandlerList:function(){if(!this._events)this._ev=
ents=3Dnew Sys.EventHandlerList;return =
this._events},get_isInAsyncPostBack:function(){return =
this._request!=3D=3Dnull},add_beginRequest:function(a){this._get_eventHan=
dlerList().addHandler("beginRequest",a)},remove_beginRequest:function(a){=
this._get_eventHandlerList().removeHandler("beginRequest",a)},add_endRequ=
est:function(a){this._get_eventHandlerList().addHandler("endRequest",a)},=
remove_endRequest:function(a){this._get_eventHandlerList().removeHandler(=
"endRequest",a)},add_initializeRequest:function(a){this._get_eventHandler=
List().addHandler("initializeRequest",a)},remove_initializeRequest:functi=
on(a){this._get_eventHandlerList().removeHandler("initializeRequest",a)},=
add_pageLoaded:function(a){this._get_eventHandlerList().addHandler("pageL=
oaded",a)},remove_pageLoaded:function(a){this._get_eventHandlerList().rem=
oveHandler("pageLoaded",a)},add_pageLoading:function(a){this._get_eventHa=
ndlerList().addHandler("pageLoading",a)},remove_pageLoading:function(a){t=
his._get_eventHandlerList().removeHandler("pageLoading",a)},abortPostBack=
:function(){if(!this._processingRequest&&this._request){this._request.get=
_executor().abort();this._request=3Dnull}},_cancelPendingCallbacks:functi=
on(){for(var a=3D0,e=3Dwindow.__pendingCallbacks.length;a<e;a++){var =
c=3Dwindow.__pendingCallbacks[a];if(c){if(!c.async)window.__synchronousCa=
llBackIndex=3D-1;window.__pendingCallbacks[a]=3Dnull;var =
d=3D"__CALLBACKFRAME"+a,b=3Ddocument.getElementById(d);if(b)b.parentNode.=
removeChild(b)}}},_commitControls:function(a,b){if(a){this._updatePanelID=
s=3Da.updatePanelIDs;this._updatePanelClientIDs=3Da.updatePanelClientIDs;=
this._updatePanelHasChildrenAsTriggers=3Da.updatePanelHasChildrenAsTrigge=
rs;this._asyncPostBackControlIDs=3Da.asyncPostBackControlIDs;this._asyncP=
ostBackControlClientIDs=3Da.asyncPostBackControlClientIDs;this._postBackC=
ontrolIDs=3Da.postBackControlIDs;this._postBackControlClientIDs=3Da.postB=
ackControlClientIDs}if(typeof =
b!=3D=3D"undefined"&&b!=3D=3Dnull)this._asyncPostBackTimeout=3Db*1000},_c=
reateHiddenField:function(c,d){var =
b,a=3Ddocument.getElementById(c);if(a)if(!a._isContained)a.parentNode.rem=
oveChild(a);else =
b=3Da.parentNode;if(!b){b=3Ddocument.createElement("span");b.style.cssTex=
t=3D"display:none =
!important";this._form.appendChild(b)}b.innerHTML=3D"<input =
type=3D'hidden' =
/>";a=3Db.childNodes[0];a._isContained=3Dtrue;a.id=3Da.name=3Dc;a.value=3D=
d},_createPageRequestManagerTimeoutError:function(){var =
b=3D"Sys.WebForms.PageRequestManagerTimeoutException: =
"+Sys.WebForms.Res.PRM_TimeoutError,a=3DError.create(b,{name:"Sys.WebForm=
s.PageRequestManagerTimeoutException"});a.popStackFrame();return =
a},_createPageRequestManagerServerError:function(a,d){var =
c=3D"Sys.WebForms.PageRequestManagerServerErrorException: =
"+(d||String.format(Sys.WebForms.Res.PRM_ServerError,a)),b=3DError.create=
(c,{name:"Sys.WebForms.PageRequestManagerServerErrorException",httpStatus=
Code:a});b.popStackFrame();return =
b},_createPageRequestManagerParserError:function(b){var =
c=3D"Sys.WebForms.PageRequestManagerParserErrorException: =
"+String.format(Sys.WebForms.Res.PRM_ParserError,b),a=3DError.create(c,{n=
ame:"Sys.WebForms.PageRequestManagerParserErrorException"});a.popStackFra=
me();return a},_createPostBackSettings:function(c,b,a){return =
{async:c,panelID:b,sourceElement:a}},_convertToClientIDs:function(a,d,c){=
if(a)for(var =
b=3D0,e=3Da.length;b<e;b++){Array.add(d,a[b]);Array.add(c,this._uniqueIDT=
oClientID(a[b]))}},_destroyTree:function(f){if(f.nodeType=3D=3D=3D1){var =
d=3Df.childNodes;for(var b=3Dd.length-1;b>=3D0;b--){var =
a=3Dd[b];if(a.nodeType=3D=3D=3D1){if(a.dispose&&typeof =
a.dispose=3D=3D=3D"function")a.dispose();else if(a.control&&typeof =
a.control.dispose=3D=3D=3D"function")a.control.dispose();var =
e=3DSys.UI.Behavior.getBehaviors(a);for(var =
c=3De.length-1;c>=3D0;c--)e[c].dispose();this._destroyTree(a)}}}},dispose=
:function(){if(this._form){Sys.UI.DomEvent.removeHandler(this._form,"subm=
it",this._onFormSubmitHandler);Sys.UI.DomEvent.removeHandler(this._form,"=
click",this._onFormElementClickHandler);Sys.UI.DomEvent.removeHandler(win=
dow,"unload",this._onWindowUnloadHandler);Sys.UI.DomEvent.removeHandler(w=
indow,"load",this._pageLoadedHandler)}if(this._originalDoPostBack){window=
.__doPostBack=3Dthis._originalDoPostBack;this._originalDoPostBack=3Dnull}=
if(this._originalDoPostBackWithOptions){window.WebForm_DoPostBackWithOpti=
ons=3Dthis._originalDoPostBackWithOptions;this._originalDoPostBackWithOpt=
ions=3Dnull}if(this._originalFireDefaultButton){window.WebForm_FireDefaul=
tButton=3Dthis._originalFireDefaultButton;this._originalFireDefaultButton=
=3Dnull}if(this._originalDoCallback){window.WebForm_DoCallback=3Dthis._or=
iginalDoCallback;this._originalDoCallback=3Dnull}this._form=3Dnull;this._=
updatePanelIDs=3Dnull;this._updatePanelClientIDs=3Dnull;this._asyncPostBa=
ckControlIDs=3Dnull;this._asyncPostBackControlClientIDs=3Dnull;this._post=
BackControlIDs=3Dnull;this._postBackControlClientIDs=3Dnull;this._asyncPo=
stBackTimeout=3Dnull;this._scrollPosition=3Dnull},_doCallback:function(d,=
b,c,f,a,e){if(!this.get_isInAsyncPostBack())this._originalDoCallback(d,b,=
c,f,a,e)},_doPostBack:function(a,e){this._additionalInput=3Dnull;var =
b=3Dthis._form;if(a=3D=3D=3Dnull||typeof =
a=3D=3D=3D"undefined"||this._isCrossPost){this._postBackSettings=3Dthis._=
createPostBackSettings(false,null,null);this._isCrossPost=3Dfalse}else{va=
r =
f=3Dthis._uniqueIDToClientID(a),d=3Ddocument.getElementById(f);if(!d)if(A=
rray.contains(this._asyncPostBackControlIDs,a))this._postBackSettings=3Dt=
his._createPostBackSettings(true,this._scriptManagerID+"|"+a,null);else =
if(Array.contains(this._postBackControlIDs,a))this._postBackSettings=3Dth=
is._createPostBackSettings(false,null,null);else{var =
c=3Dthis._findNearestElement(a);if(c)this._postBackSettings=3Dthis._getPo=
stBackSettings(c,a);else =
this._postBackSettings=3Dthis._createPostBackSettings(false,null,null)}el=
se =
this._postBackSettings=3Dthis._getPostBackSettings(d,a)}if(!this._postBac=
kSettings.async){b.onsubmit=3Dthis._onsubmit;this._originalDoPostBack(a,e=
);b.onsubmit=3Dnull;return}b.__EVENTTARGET.value=3Da;b.__EVENTARGUMENT.va=
lue=3De;this._onFormSubmit()},_doPostBackWithOptions:function(a){this._is=
CrossPost=3Da&&a.actionUrl;this._originalDoPostBackWithOptions(a)},_eleme=
ntContains:function(b,a){while(a){if(a=3D=3D=3Db)return =
true;a=3Da.parentNode}return =
false},_endPostBack:function(a,d,f){if(this._request=3D=3D=3Dd.get_webReq=
uest()){this._processingRequest=3Dfalse;this._additionalInput=3Dnull;this=
._request=3Dnull}var =
e=3Dthis._get_eventHandlerList().getHandler("endRequest"),b=3Dfalse;if(e)=
{var c=3Dnew =
Sys.WebForms.EndRequestEventArgs(a,f?f.dataItems:{},d);e(this,c);b=3Dc.ge=
t_errorHandled()}if(a&&!b)throw =
a},_findNearestElement:function(a){while(a.length>0){var =
d=3Dthis._uniqueIDToClientID(a),c=3Ddocument.getElementById(d);if(c)retur=
n c;var b=3Da.lastIndexOf("$");if(b=3D=3D=3D-1)return =
null;a=3Da.substring(0,b)}return null},_findText:function(b,a){var =
c=3DMath.max(0,a-20),d=3DMath.min(b.length,a+20);return =
b.substring(c,d)},_fireDefaultButton:function(a,d){if(a.keyCode=3D=3D=3D1=
3){var =
c=3Da.srcElement||a.target;if(!c||c.tagName.toLowerCase()!=3D=3D"textarea=
"){var b=3Ddocument.getElementById(d);if(b&&typeof =
b.click!=3D=3D"undefined"){this._activeDefaultButton=3Db;this._activeDefa=
ultButtonClicked=3Dfalse;try{b.click()}finally{this._activeDefaultButton=3D=
null}a.cancelBubble=3Dtrue;if(typeof =
a.stopPropagation=3D=3D=3D"function")a.stopPropagation();return =
false}}}return true},_getPageLoadedEventArgs:function(j,e){var =
i=3D[],h=3D[],d=3De?e.updatePanelData:null,c,g,b;if(!d){c=3Dthis._updateP=
anelIDs;g=3Dnull;b=3Dnull}else{c=3Dd.updatePanelIDs;g=3Dd.childUpdatePane=
lIDs;b=3Dd.panelsToRefreshIDs}var =
a,f;if(b)for(a=3D0,f=3Db.length;a<f;a++)Array.add(i,document.getElementBy=
Id(this._uniqueIDToClientID(b[a])));for(a=3D0,f=3Dc.length;a<f;a++)if(j||=
Array.indexOf(g,c[a])!=3D=3D-1)Array.add(h,document.getElementById(this._=
uniqueIDToClientID(c[a])));return new =
Sys.WebForms.PageLoadedEventArgs(i,h,e?e.dataItems:{})},_getPageLoadingEv=
entArgs:function(h){var =
g=3D[],f=3D[],c=3Dh.updatePanelData,b=3Dc.oldUpdatePanelIDs,j=3Dc.updateP=
anelIDs,i=3Dc.childUpdatePanelIDs,e=3Dc.panelsToRefreshIDs,a,d;for(a=3D0,=
d=3De.length;a<d;a++)Array.add(g,document.getElementById(this._uniqueIDTo=
ClientID(e[a])));for(a=3D0,d=3Db.length;a<d;a++)if(Array.indexOf(e,b[a])=3D=
=3D=3D-1&&(Array.indexOf(j,b[a])=3D=3D=3D-1||Array.indexOf(i,b[a])>-1))Ar=
ray.add(f,document.getElementById(this._uniqueIDToClientID(b[a])));return=
 new =
Sys.WebForms.PageLoadingEventArgs(g,f,h.dataItems)},_getPostBackSettings:=
function(a,c){var =
d=3Da,b=3Dnull;while(a){if(a.id){if(!b&&Array.contains(this._asyncPostBac=
kControlClientIDs,a.id))b=3Dthis._createPostBackSettings(true,this._scrip=
tManagerID+"|"+c,d);else =
if(!b&&Array.contains(this._postBackControlClientIDs,a.id))return =
this._createPostBackSettings(false,null,null);else{var =
e=3DArray.indexOf(this._updatePanelClientIDs,a.id);if(e!=3D=3D-1)if(this.=
_updatePanelHasChildrenAsTriggers[e])return =
this._createPostBackSettings(true,this._updatePanelIDs[e]+"|"+c,d);else =
return =
this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d)}if(!b&&t=
his._matchesParentIDInList(a.id,this._asyncPostBackControlClientIDs))b=3D=
this._createPostBackSettings(true,this._scriptManagerID+"|"+c,d);else =
if(!b&&this._matchesParentIDInList(a.id,this._postBackControlClientIDs))r=
eturn =
this._createPostBackSettings(false,null,null)}a=3Da.parentNode}if(!b)retu=
rn this._createPostBackSettings(false,null,null);else return =
b},_getScrollPosition:function(){var =
a=3Ddocument.documentElement;if(a&&(this._validPosition(a.scrollLeft)||th=
is._validPosition(a.scrollTop)))return =
{x:a.scrollLeft,y:a.scrollTop};else{a=3Ddocument.body;if(a&&(this._validP=
osition(a.scrollLeft)||this._validPosition(a.scrollTop)))return =
{x:a.scrollLeft,y:a.scrollTop};else =
if(this._validPosition(window.pageXOffset)||this._validPosition(window.pa=
geYOffset))return {x:window.pageXOffset,y:window.pageYOffset};else =
return =
{x:0,y:0}}},_initializeInternal:function(a,b){if(this._prmInitialized)thr=
ow =
Error.invalidOperation(Sys.WebForms.Res.PRM_CannotRegisterTwice);this._pr=
mInitialized=3Dtrue;this._scriptManagerID=3Da;this._form=3Db;this._onsubm=
it=3Dthis._form.onsubmit;this._form.onsubmit=3Dnull;this._onFormSubmitHan=
dler=3DFunction.createDelegate(this,this._onFormSubmit);this._onFormEleme=
ntClickHandler=3DFunction.createDelegate(this,this._onFormElementClick);t=
his._onWindowUnloadHandler=3DFunction.createDelegate(this,this._onWindowU=
nload);Sys.UI.DomEvent.addHandler(this._form,"submit",this._onFormSubmitH=
andler);Sys.UI.DomEvent.addHandler(this._form,"click",this._onFormElement=
ClickHandler);Sys.UI.DomEvent.addHandler(window,"unload",this._onWindowUn=
loadHandler);this._originalDoPostBack=3Dwindow.__doPostBack;if(this._orig=
inalDoPostBack)window.__doPostBack=3DFunction.createDelegate(this,this._d=
oPostBack);this._originalDoPostBackWithOptions=3Dwindow.WebForm_DoPostBac=
kWithOptions;if(this._originalDoPostBackWithOptions)window.WebForm_DoPost=
BackWithOptions=3DFunction.createDelegate(this,this._doPostBackWithOption=
s);this._originalFireDefaultButton=3Dwindow.WebForm_FireDefaultButton;if(=
this._originalFireDefaultButton)window.WebForm_FireDefaultButton=3DFuncti=
on.createDelegate(this,this._fireDefaultButton);this._originalDoCallback=3D=
window.WebForm_DoCallback;if(this._originalDoCallback)window.WebForm_DoCa=
llback=3DFunction.createDelegate(this,this._doCallback);this._pageLoadedH=
andler=3DFunction.createDelegate(this,this._pageLoadedInitialLoad);Sys.UI=
.DomEvent.addHandler(window,"load",this._pageLoadedHandler)},_matchesPare=
ntIDInList:function(c,b){for(var =
a=3D0,d=3Db.length;a<d;a++)if(c.startsWith(b[a]+"_"))return true;return =
false},_onFormElementActive:function(a,d,e){if(a.disabled)return;this._po=
stBackSettings=3Dthis._getPostBackSettings(a,a.name);if(a.name){var =
b=3Da.tagName.toUpperCase();if(b=3D=3D=3D"INPUT"){var =
c=3Da.type;if(c=3D=3D=3D"submit")this._additionalInput=3DencodeURICompone=
nt(a.name)+"=3D"+encodeURIComponent(a.value);else =
if(c=3D=3D=3D"image")this._additionalInput=3DencodeURIComponent(a.name)+"=
.x=3D"+d+"&"+encodeURIComponent(a.name)+".y=3D"+e}else =
if(b=3D=3D=3D"BUTTON"&&a.name.length!=3D=3D0&&a.type=3D=3D=3D"submit")thi=
s._additionalInput=3DencodeURIComponent(a.name)+"=3D"+encodeURIComponent(=
a.value)}},_onFormElementClick:function(a){this._activeDefaultButtonClick=
ed=3Da.target=3D=3D=3Dthis._activeDefaultButton;this._onFormElementActive=
(a.target,a.offsetX,a.offsetY)},_onFormSubmit:function(h){var =
g=3Dtrue,t=3Dthis._isCrossPost;this._isCrossPost=3Dfalse;var =
e,s;if(this._onsubmit)g=3Dthis._onsubmit();if(g)for(e=3D0,s=3Dthis._onSub=
mitStatements.length;e<s;e++)if(!this._onSubmitStatements[e]()){g=3Dfalse=
;break}if(!g){if(h)h.preventDefault();return}var =
n=3Dthis._form;if(t)return;if(this._activeDefaultButton&&!this._activeDef=
aultButtonClicked)this._onFormElementActive(this._activeDefaultButton,0,0=
);if(!this._postBackSettings.async)return;var a=3Dnew =
Sys.StringBuilder;a.append(encodeURIComponent(this._scriptManagerID)+"=3D=
"+encodeURIComponent(this._postBackSettings.panelID)+"&");var =
v=3Dn.elements.length;for(e=3D0;e<v;e++){var =
d=3Dn.elements[e],f=3Dd.name;if(typeof =
f=3D=3D=3D"undefined"||f=3D=3D=3Dnull||f.length=3D=3D=3D0||f=3D=3D=3Dthis=
._scriptManagerID)continue;var =
m=3Dd.tagName.toUpperCase();if(m=3D=3D=3D"INPUT"){var =
k=3Dd.type;if(k=3D=3D=3D"text"||k=3D=3D=3D"password"||k=3D=3D=3D"hidden"|=
|(k=3D=3D=3D"checkbox"||k=3D=3D=3D"radio")&&d.checked){a.append(encodeURI=
Component(f));a.append("=3D");a.append(encodeURIComponent(d.value));a.app=
end("&")}}else if(m=3D=3D=3D"SELECT"){var u=3Dd.options.length;for(var =
o=3D0;o<u;o++){var =
q=3Dd.options[o];if(q.selected){a.append(encodeURIComponent(f));a.append(=
"=3D");a.append(encodeURIComponent(q.value));a.append("&")}}}else =
if(m=3D=3D=3D"TEXTAREA"){a.append(encodeURIComponent(f));a.append("=3D");=
a.append(encodeURIComponent(d.value));a.append("&")}}a.append("__ASYNCPOS=
T=3Dtrue&");if(this._additionalInput){a.append(this._additionalInput);thi=
s._additionalInput=3Dnull}var c=3Dnew =
Sys.Net.WebRequest,b=3Dn.action;if(Sys.Browser.agent=3D=3D=3DSys.Browser.=
InternetExplorer){var =
p=3Db.indexOf("#");if(p!=3D=3D-1)b=3Db.substr(0,p);var =
l=3Db.indexOf("?");if(l!=3D=3D-1){var =
r=3Db.substr(0,l);if(r.indexOf("%")=3D=3D=3D-1)b=3DencodeURI(r)+b.substr(=
l)}else =
if(b.indexOf("%")=3D=3D=3D-1)b=3DencodeURI(b)}c.set_url(b);c.get_headers(=
)["X-MicrosoftAjax"]=3D"Delta=3Dtrue";c.get_headers()["Cache-Control"]=3D=
"no-cache";c.set_timeout(this._asyncPostBackTimeout);c.add_completed(Func=
tion.createDelegate(this,this._onFormSubmitCompleted));c.set_body(a.toStr=
ing());var =
i,j=3Dthis._get_eventHandlerList().getHandler("initializeRequest");if(j){=
i=3Dnew =
Sys.WebForms.InitializeRequestEventArgs(c,this._postBackSettings.sourceEl=
ement);j(this,i);g=3D!i.get_cancel()}if(!g){if(h)h.preventDefault();retur=
n}this._scrollPosition=3Dthis._getScrollPosition();this.abortPostBack();j=
=3Dthis._get_eventHandlerList().getHandler("beginRequest");if(j){i=3Dnew =
Sys.WebForms.BeginRequestEventArgs(c,this._postBackSettings.sourceElement=
);j(this,i)}if(this._originalDoCallback)this._cancelPendingCallbacks();th=
is._request=3Dc;this._processingRequest=3Dfalse;c.invoke();if(h)h.prevent=
Default()},_onFormSubmitCompleted:function(c){this._processingRequest=3Dt=
rue;if(c.get_timedOut()){this._endPostBack(this._createPageRequestManager=
TimeoutError(),c,null);return}if(c.get_aborted()){this._endPostBack(null,=
c,null);return}if(!this._request||c.get_webRequest()!=3D=3Dthis._request)=
return;if(c.get_statusCode()!=3D=3D200){this._endPostBack(this._createPag=
eRequestManagerServerError(c.get_statusCode()),c,null);return}var =
a=3Dthis._parseDelta(c);if(!a)return;var =
b,e;if(a.asyncPostBackControlIDsNode&&a.postBackControlIDsNode&&a.updateP=
anelIDsNode&&a.panelsToRefreshNode&&a.childUpdatePanelIDsNode){var =
p=3Dthis._updatePanelIDs,h=3Da.childUpdatePanelIDsNode.content,n=3Dh.leng=
th?h.split(","):[],l=3Dthis._splitNodeIntoArray(a.asyncPostBackControlIDs=
Node),m=3Dthis._splitNodeIntoArray(a.postBackControlIDsNode),o=3Dthis._sp=
litNodeIntoArray(a.updatePanelIDsNode),g=3Dthis._splitNodeIntoArray(a.pan=
elsToRefreshNode);for(b=3D0,e=3Dg.length;b<e;b++){var =
i=3Dthis._uniqueIDToClientID(g[b]);if(!document.getElementById(i)){this._=
endPostBack(Error.invalidOperation(String.format(Sys.WebForms.Res.PRM_Mis=
singPanel,i)),c,a);return}}var =
f=3Dthis._processUpdatePanelArrays(o,l,m);f.oldUpdatePanelIDs=3Dp;f.child=
UpdatePanelIDs=3Dn;f.panelsToRefreshIDs=3Dg;a.updatePanelData=3Df}a.dataI=
tems=3D{};var =
d;for(b=3D0,e=3Da.dataItemNodes.length;b<e;b++){d=3Da.dataItemNodes[b];a.=
dataItems[d.id]=3Dd.content}for(b=3D0,e=3Da.dataItemJsonNodes.length;b<e;=
b++){d=3Da.dataItemJsonNodes[b];a.dataItems[d.id]=3DSys.Serialization.Jav=
aScriptSerializer.deserialize(d.content)}var =
k=3Dthis._get_eventHandlerList().getHandler("pageLoading");if(k)k(this,th=
is._getPageLoadingEventArgs(a));Sys._ScriptLoader.readLoadedScripts();Sys=
.Application.beginCreateComponents();var =
j=3DSys._ScriptLoader.getInstance();this._queueScripts(j,a.scriptBlockNod=
es,true,false);this._processingRequest=3Dtrue;j.loadScripts(0,Function.cr=
eateDelegate(this,Function.createCallback(this._scriptIncludesLoadComplet=
e,a)),Function.createDelegate(this,Function.createCallback(this._scriptIn=
cludesLoadFailed,a)),null)},_onWindowUnload:function(){this.dispose()},_p=
ageLoaded:function(a,c){var =
b=3Dthis._get_eventHandlerList().getHandler("pageLoaded");if(b)b(this,thi=
s._getPageLoadedEventArgs(a,c));if(!a)Sys.Application.raiseLoad()},_pageL=
oadedInitialLoad:function(){this._pageLoaded(true,null)},_parseDelta:func=
tion(g){var =
c=3Dg.get_responseData(),d,h,D,E,C,b=3D0,e=3Dnull,i=3D[];while(b<c.length=
){d=3Dc.indexOf("|",b);if(d=3D=3D=3D-1){e=3Dthis._findText(c,b);break}h=3D=
parseInt(c.substring(b,d),10);if(h%1!=3D=3D0){e=3Dthis._findText(c,b);bre=
ak}b=3Dd+1;d=3Dc.indexOf("|",b);if(d=3D=3D=3D-1){e=3Dthis._findText(c,b);=
break}D=3Dc.substring(b,d);b=3Dd+1;d=3Dc.indexOf("|",b);if(d=3D=3D=3D-1){=
e=3Dthis._findText(c,b);break}E=3Dc.substring(b,d);b=3Dd+1;if(b+h>=3Dc.le=
ngth){e=3Dthis._findText(c,c.length);break}C=3Dc.substr(b,h);b+=3Dh;if(c.=
charAt(b)!=3D=3D"|"){e=3Dthis._findText(c,b);break}b++;Array.add(i,{type:=
D,id:E,content:C})}if(e){this._endPostBack(this._createPageRequestManager=
ParserError(String.format(Sys.WebForms.Res.PRM_ParserErrorDetails,e)),g,n=
ull);return null}var =
w=3D[],u=3D[],o=3D[],v=3D[],r=3D[],B=3D[],z=3D[],y=3D[],t=3D[],q=3D[],k,n=
,s,l,m,p,x;for(var j=3D0,F=3Di.length;j<F;j++){var =
a=3Di[j];switch(a.type){case "updatePanel":Array.add(w,a);break;case =
"hiddenField":Array.add(u,a);break;case =
"arrayDeclaration":Array.add(o,a);break;case =
"scriptBlock":Array.add(v,a);break;case =
"scriptStartupBlock":Array.add(r,a);break;case =
"expando":Array.add(B,a);break;case "onSubmit":Array.add(z,a);break;case =
"asyncPostBackControlIDs":k=3Da;break;case =
"postBackControlIDs":n=3Da;break;case "updatePanelIDs":s=3Da;break;case =
"asyncPostBackTimeout":l=3Da;break;case =
"childUpdatePanelIDs":m=3Da;break;case =
"panelsToRefreshIDs":p=3Da;break;case "formAction":x=3Da;break;case =
"dataItem":Array.add(y,a);break;case =
"dataItemJson":Array.add(t,a);break;case =
"scriptDispose":Array.add(q,a);break;case =
"pageRedirect":if(Sys.Browser.agent=3D=3D=3DSys.Browser.InternetExplorer)=
{var =
f=3Ddocument.createElement("a");f.style.display=3D"none";f.attachEvent("o=
nclick",A);f.href=3Da.content;document.body.appendChild(f);f.click();f.de=
tachEvent("onclick",A);document.body.removeChild(f);function =
A(a){a.cancelBubble=3Dtrue}}else =
window.location.href=3Da.content;return;case =
"error":this._endPostBack(this._createPageRequestManagerServerError(Numbe=
r.parseInvariant(a.id),a.content),g,null);return null;case =
"pageTitle":document.title=3Da.content;break;case =
"focus":this._controlIDToFocus=3Da.content;break;default:this._endPostBac=
k(this._createPageRequestManagerParserError(String.format(Sys.WebForms.Re=
s.PRM_UnknownToken,a.type)),g,null);return null}}return =
{executor:g,updatePanelNodes:w,hiddenFieldNodes:u,arrayDeclarationNodes:o=
,scriptBlockNodes:v,scriptStartupNodes:r,expandoNodes:B,onSubmitNodes:z,d=
ataItemNodes:y,dataItemJsonNodes:t,scriptDisposeNodes:q,asyncPostBackCont=
rolIDsNode:k,postBackControlIDsNode:n,updatePanelIDsNode:s,asyncPostBackT=
imeoutNode:l,childUpdatePanelIDsNode:m,panelsToRefreshNode:p,formActionNo=
de:x}},_processUpdatePanelArrays:function(e,l,n){var d,c,b;if(e){var =
f=3De.length;d=3Dnew Array(f);c=3Dnew Array(f);b=3Dnew Array(f);for(var =
a=3D0;a<f;a++){var =
k=3De[a].substr(1),m=3De[a].charAt(0)=3D=3D=3D"t";b[a]=3Dm;d[a]=3Dk;c[a]=3D=
this._uniqueIDToClientID(k)}}else{d=3D[];c=3D[];b=3D[]}var =
i=3D[],g=3D[];this._convertToClientIDs(l,i,g);var =
j=3D[],h=3D[];this._convertToClientIDs(n,j,h);return =
{updatePanelIDs:d,updatePanelClientIDs:c,updatePanelHasChildrenAsTriggers=
:b,asyncPostBackControlIDs:i,asyncPostBackControlClientIDs:g,postBackCont=
rolIDs:j,postBackControlClientIDs:h}},_queueScripts:function(scriptLoader=
,scriptBlockNodes,queueIncludes,queueBlocks){for(var =
i=3D0,l=3DscriptBlockNodes.length;i<l;i++){var =
scriptBlockType=3DscriptBlockNodes[i].id;switch(scriptBlockType){case =
"ScriptContentNoTags":if(!queueBlocks)continue;scriptLoader.queueScriptBl=
ock(scriptBlockNodes[i].content);break;case "ScriptContentWithTags":var =
scriptTagAttributes;eval("scriptTagAttributes =3D =
"+scriptBlockNodes[i].content);if(scriptTagAttributes.src){if(!queueInclu=
des||Sys._ScriptLoader.isScriptLoaded(scriptTagAttributes.src))continue}e=
lse =
if(!queueBlocks)continue;scriptLoader.queueCustomScriptTag(scriptTagAttri=
butes);break;case =
"ScriptPath":if(!queueIncludes||Sys._ScriptLoader.isScriptLoaded(scriptBl=
ockNodes[i].content))continue;scriptLoader.queueScriptReference(scriptBlo=
ckNodes[i].content)}}},_registerDisposeScript:function(a,b){if(!this._scr=
iptDisposes[a])this._scriptDisposes[a]=3D[b];else =
Array.add(this._scriptDisposes[a],b)},_scriptIncludesLoadComplete:functio=
n(e,b){if(b.executor.get_webRequest()!=3D=3Dthis._request)return;this._co=
mmitControls(b.updatePanelData,b.asyncPostBackTimeoutNode?b.asyncPostBack=
TimeoutNode.content:null);if(b.formActionNode)this._form.action=3Db.formA=
ctionNode.content;var =
a,d,c;for(a=3D0,d=3Db.updatePanelNodes.length;a<d;a++){c=3Db.updatePanelN=
odes[a];var =
j=3Ddocument.getElementById(c.id);if(!j){this._endPostBack(Error.invalidO=
peration(String.format(Sys.WebForms.Res.PRM_MissingPanel,c.id)),b.executo=
r,b);return}this._updatePanel(j,c.content)}for(a=3D0,d=3Db.scriptDisposeN=
odes.length;a<d;a++){c=3Db.scriptDisposeNodes[a];this._registerDisposeScr=
ipt(c.id,c.content)}for(a=3D0,d=3Dthis._transientFields.length;a<d;a++){v=
ar g=3Ddocument.getElementById(this._transientFields[a]);if(g){var =
k=3Dg._isContained?g.parentNode:g;k.parentNode.removeChild(k)}}for(a=3D0,=
d=3Db.hiddenFieldNodes.length;a<d;a++){c=3Db.hiddenFieldNodes[a];this._cr=
eateHiddenField(c.id,c.content)}if(b.scriptsFailed)throw =
Sys._ScriptLoader._errorScriptLoadFailed(b.scriptsFailed.src,b.scriptsFai=
led.multipleCallbacks);this._queueScripts(e,b.scriptBlockNodes,false,true=
);var =
i=3D"";for(a=3D0,d=3Db.arrayDeclarationNodes.length;a<d;a++){c=3Db.arrayD=
eclarationNodes[a];i+=3D"Sys.WebForms.PageRequestManager._addArrayElement=
('"+c.id+"', "+c.content+");\r\n"}var =
h=3D"";for(a=3D0,d=3Db.expandoNodes.length;a<d;a++){c=3Db.expandoNodes[a]=
;h+=3Dc.id+" =3D =
"+c.content+"\r\n"}if(i.length)e.queueScriptBlock(i);if(h.length)e.queueS=
criptBlock(h);this._queueScripts(e,b.scriptStartupNodes,true,true);var =
f=3D"";for(a=3D0,d=3Db.onSubmitNodes.length;a<d;a++){if(a=3D=3D=3D0)f=3D"=
Array.add(Sys.WebForms.PageRequestManager.getInstance()._onSubmitStatemen=
ts, function() =
{\r\n";f+=3Db.onSubmitNodes[a].content+"\r\n"}if(f.length){f+=3D"\r\nretu=
rn =
true;\r\n});\r\n";e.queueScriptBlock(f)}e.loadScripts(0,Function.createDe=
legate(this,Function.createCallback(this._scriptsLoadComplete,b)),null,nu=
ll)},_scriptIncludesLoadFailed:function(d,c,b,a){a.scriptsFailed=3D{src:c=
.src,multipleCallbacks:b};this._scriptIncludesLoadComplete(d,a)},_scripts=
LoadComplete:function(f,c){var =
e=3Dc.executor;if(window.__theFormPostData)window.__theFormPostData=3D"";=
if(window.__theFormPostCollection)window.__theFormPostCollection=3D[];if(=
window.WebForm_InitCallback)window.WebForm_InitCallback();if(this._scroll=
Position){if(window.scrollTo)window.scrollTo(this._scrollPosition.x,this.=
_scrollPosition.y);this._scrollPosition=3Dnull}Sys.Application.endCreateC=
omponents();this._pageLoaded(false,c);this._endPostBack(null,e,c);if(this=
._controlIDToFocus){var =
a,d;if(Sys.Browser.agent=3D=3D=3DSys.Browser.InternetExplorer){var =
b=3D$get(this._controlIDToFocus);a=3Db;if(b&&!WebForm_CanFocus(b))a=3DWeb=
Form_FindFirstFocusableChild(b);if(a&&typeof =
a.contentEditable!=3D=3D"undefined"){d=3Da.contentEditable;a.contentEdita=
ble=3Dfalse}else =
a=3Dnull}WebForm_AutoFocus(this._controlIDToFocus);if(a)a.contentEditable=
=3Dd;this._controlIDToFocus=3Dnull}},_splitNodeIntoArray:function(b){var =
a=3Db.content,c=3Da.length?a.split(","):[];return =
c},_uniqueIDToClientID:function(a){return =
a.replace(/\$/g,"_")},_updateControls:function(d,a,c,b){this._commitContr=
ols(this._processUpdatePanelArrays(d,a,c),b)},_updatePanel:function(updat=
ePanelElement,rendering){for(var updatePanelID in =
this._scriptDisposes)if(this._elementContains(updatePanelElement,document=
.getElementById(updatePanelID))){var =
disposeScripts=3Dthis._scriptDisposes[updatePanelID];for(var =
i=3D0,l=3DdisposeScripts.length;i<l;i++)eval(disposeScripts[i]);delete =
this._scriptDisposes[updatePanelID]}this._destroyTree(updatePanelElement)=
;updatePanelElement.innerHTML=3Drendering},_validPosition:function(a){ret=
urn typeof =
a!=3D=3D"undefined"&&a!=3D=3Dnull&&a!=3D=3D0}};Sys.WebForms.PageRequestMa=
nager.getInstance=3Dfunction(){var =
a=3DSys.WebForms.PageRequestManager._instance;if(!a)a=3DSys.WebForms.Page=
RequestManager._instance=3Dnew Sys.WebForms.PageRequestManager;return =
a};Sys.WebForms.PageRequestManager._addArrayElement=3Dfunction(a){if(!win=
dow[a])window[a]=3D[];for(var =
b=3D1,c=3Darguments.length;b<c;b++)Array.add(window[a],arguments[b])};Sys=
.WebForms.PageRequestManager._initialize=3Dfunction(a,b){Sys.WebForms.Pag=
eRequestManager.getInstance()._initializeInternal(a,b)};Sys.WebForms.Page=
RequestManager.registerClass("Sys.WebForms.PageRequestManager");Sys.UI._U=
pdateProgress=3Dfunction(a){Sys.UI._UpdateProgress.initializeBase(this,[a=
]);this._displayAfter=3D500;this._dynamicLayout=3Dtrue;this._associatedUp=
datePanelId=3Dnull;this._beginRequestHandlerDelegate=3Dnull;this._startDe=
legate=3Dnull;this._endRequestHandlerDelegate=3Dnull;this._pageRequestMan=
ager=3Dnull;this._timerCookie=3Dnull};Sys.UI._UpdateProgress.prototype=3D=
{get_displayAfter:function(){return =
this._displayAfter},set_displayAfter:function(a){this._displayAfter=3Da},=
get_dynamicLayout:function(){return =
this._dynamicLayout},set_dynamicLayout:function(a){this._dynamicLayout=3D=
a},get_associatedUpdatePanelId:function(){return =
this._associatedUpdatePanelId},set_associatedUpdatePanelId:function(a){th=
is._associatedUpdatePanelId=3Da},_clearTimeout:function(){if(this._timerC=
ookie){window.clearTimeout(this._timerCookie);this._timerCookie=3Dnull}},=
_handleBeginRequest:function(d,c){var =
a=3Dc.get_postBackElement(),b=3D!this._associatedUpdatePanelId;while(!b&&=
a){if(a.id&&this._associatedUpdatePanelId=3D=3D=3Da.id)b=3Dtrue;a=3Da.par=
entNode}if(b)this._timerCookie=3Dwindow.setTimeout(this._startDelegate,th=
is._displayAfter)},_startRequest:function(){if(this._pageRequestManager.g=
et_isInAsyncPostBack())if(this._dynamicLayout)this.get_element().style.di=
splay=3D"block";else =
this.get_element().style.visibility=3D"visible";this._timerCookie=3Dnull}=
,_handleEndRequest:function(){if(this._dynamicLayout)this.get_element().s=
tyle.display=3D"none";else =
this.get_element().style.visibility=3D"hidden";this._clearTimeout()},disp=
ose:function(){if(this._beginRequestHandlerDelegate!=3D=3Dnull){this._pag=
eRequestManager.remove_beginRequest(this._beginRequestHandlerDelegate);th=
is._pageRequestManager.remove_endRequest(this._endRequestHandlerDelegate)=
;this._beginRequestHandlerDelegate=3Dnull;this._endRequestHandlerDelegate=
=3Dnull}this._clearTimeout();Sys.UI._UpdateProgress.callBaseMethod(this,"=
dispose")},initialize:function(){Sys.UI._UpdateProgress.callBaseMethod(th=
is,"initialize");this._beginRequestHandlerDelegate=3DFunction.createDeleg=
ate(this,this._handleBeginRequest);this._endRequestHandlerDelegate=3DFunc=
tion.createDelegate(this,this._handleEndRequest);this._startDelegate=3DFu=
nction.createDelegate(this,this._startRequest);if(Sys.WebForms&&Sys.WebFo=
rms.PageRequestManager)this._pageRequestManager=3DSys.WebForms.PageReques=
tManager.getInstance();if(this._pageRequestManager!=3D=3Dnull){this._page=
RequestManager.add_beginRequest(this._beginRequestHandlerDelegate);this._=
pageRequestManager.add_endRequest(this._endRequestHandlerDelegate)}}};Sys=
.UI._UpdateProgress.registerClass("Sys.UI._UpdateProgress",Sys.UI.Control=
);
Type.registerNamespace('Sys.WebForms');Sys.WebForms.Res=3D{"PRM_UnknownTo=
ken":"Unknown token: \u0027{0}\u0027.","PRM_MissingPanel":"Could not =
find UpdatePanel with ID \u0027{0}\u0027. If it is being updated =
dynamically then it must be inside another =
UpdatePanel.","PRM_ServerError":"An unknown error occurred while =
processing the request on the server. The status code returned from the =
server was: {0}","PRM_ParserError":"The message received from the server =
could not be parsed. Common causes for this error are when the response =
is modified by calls to Response.Write(), response filters, HttpModules, =
or server trace is enabled.\r\nDetails: {0}","PRM_TimeoutError":"The =
server request timed out.","PRM_ParserErrorDetails":"Error parsing near =
\u0027{0}\u0027.","PRM_CannotRegisterTwice":"The PageRequestManager =
cannot be initialized more than once."};
if(typeof(Sys)!=3D=3D'undefined')Sys.Application.notifyScriptLoaded();
------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/PlayerService.asmx/js

Type.registerNamespace('SonicFoundry.Mediasite.Player.DataAccess');
SonicFoundry.Mediasite.Player.DataAccess.PlayerService=3Dfunction() {
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.initializeBase(thi=
s);
this._timeout =3D 0;
this._userContext =3D null;
this._succeeded =3D null;
this._failed =3D null;
}
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.prototype=3D{
_get_path:function() {
 var p =3D this.get_path();
 if (p) return p;
 else return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_path();},
ReportViewerPageOpened:function(playbackTicketId,playerType,playStatus,su=
cceededCallback, failedCallback, userContext) {
return this._invoke(this._get_path(), =
'ReportViewerPageOpened',false,{playbackTicketId:playbackTicketId,playerT=
ype:playerType,playStatus:playStatus},succeededCallback,failedCallback,us=
erContext); },
ReportViewerPageClosed:function(playbackTicketId,succeededCallback, =
failedCallback, userContext) {
return this._invoke(this._get_path(), =
'ReportViewerPageClosed',false,{playbackTicketId:playbackTicketId},succee=
dedCallback,failedCallback,userContext); },
SendQuestion:function(playbackTicketId,question,succeededCallback, =
failedCallback, userContext) {
return this._invoke(this._get_path(), =
'SendQuestion',false,{playbackTicketId:playbackTicketId,question:question=
},succeededCallback,failedCallback,userContext); },
SendInvite:function(playbackTicketId,invite,succeededCallback, =
failedCallback, userContext) {
return this._invoke(this._get_path(), =
'SendInvite',false,{playbackTicketId:playbackTicketId,invite:invite},succ=
eededCallback,failedCallback,userContext); },
GetInvite:function(playbackTicketId,succeededCallback, failedCallback, =
userContext) {
return this._invoke(this._get_path(), =
'GetInvite',false,{playbackTicketId:playbackTicketId},succeededCallback,f=
ailedCallback,userContext); },
GetLiveStatus:function(presentationId,succeededCallback, failedCallback, =
userContext) {
return this._invoke(this._get_path(), =
'GetLiveStatus',false,{presentationId:presentationId},succeededCallback,f=
ailedCallback,userContext); }}
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.registerClass('Son=
icFoundry.Mediasite.Player.DataAccess.PlayerService',Sys.Net.WebServicePr=
oxy);
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance =
=3D new SonicFoundry.Mediasite.Player.DataAccess.PlayerService();
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_path =3D =
function(value) { =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.se=
t_path(value); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_path =3D =
function() { return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_path(); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_timeout =3D =
function(value) { =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.se=
t_timeout(value); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_timeout =3D =
function() { return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_timeout(); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_defaultUserCon=
text =3D function(value) { =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.se=
t_defaultUserContext(value); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_defaultUserCon=
text =3D function() { return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_defaultUserContext(); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_defaultSucceed=
edCallback =3D function(value) { =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.se=
t_defaultSucceededCallback(value); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_defaultSucceed=
edCallback =3D function() { return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_defaultSucceededCallback(); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_defaultFailedC=
allback =3D function(value) { =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.se=
t_defaultFailedCallback(value); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_defaultFailedC=
allback =3D function() { return =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.ge=
t_defaultFailedCallback(); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.set_path("/mediasi=
te/Viewer/PlayerService.asmx");
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.ReportViewerPageOp=
ened=3D =
function(playbackTicketId,playerType,playStatus,onSuccess,onFailed,userCo=
ntext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.R=
eportViewerPageOpened(playbackTicketId,playerType,playStatus,onSuccess,on=
Failed,userContext); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.ReportViewerPageCl=
osed=3D function(playbackTicketId,onSuccess,onFailed,userContext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.R=
eportViewerPageClosed(playbackTicketId,onSuccess,onFailed,userContext); =
}
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.SendQuestion=3D =
function(playbackTicketId,question,onSuccess,onFailed,userContext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.S=
endQuestion(playbackTicketId,question,onSuccess,onFailed,userContext); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.SendInvite=3D =
function(playbackTicketId,invite,onSuccess,onFailed,userContext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.S=
endInvite(playbackTicketId,invite,onSuccess,onFailed,userContext); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetInvite=3D =
function(playbackTicketId,onSuccess,onFailed,userContext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.G=
etInvite(playbackTicketId,onSuccess,onFailed,userContext); }
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus=3D =
function(presentationId,onSuccess,onFailed,userContext) =
{SonicFoundry.Mediasite.Player.DataAccess.PlayerService._staticInstance.G=
etLiveStatus(presentationId,onSuccess,onFailed,userContext); }
var gtc =3D Sys.Net.WebServiceProxy._generateTypedConstructor;
if =
(typeof(SonicFoundry.Mediasite.Player.DataAccess.PresentationQuestion) =
=3D=3D=3D 'undefined') {
SonicFoundry.Mediasite.Player.DataAccess.PresentationQuestion=3Dgtc("Soni=
cFoundry.Mediasite.Player.DataAccess.PresentationQuestion");
SonicFoundry.Mediasite.Player.DataAccess.PresentationQuestion.registerCla=
ss('SonicFoundry.Mediasite.Player.DataAccess.PresentationQuestion');
}
if =
(typeof(SonicFoundry.Mediasite.Player.DataAccess.SendQuestionResponse) =
=3D=3D=3D 'undefined') {
SonicFoundry.Mediasite.Player.DataAccess.SendQuestionResponse=3Dgtc("Soni=
cFoundry.Mediasite.Player.DataAccess.SendQuestionResponse");
SonicFoundry.Mediasite.Player.DataAccess.SendQuestionResponse.registerCla=
ss('SonicFoundry.Mediasite.Player.DataAccess.SendQuestionResponse');
}
if (typeof(SonicFoundry.Mediasite.Player.DataAccess.PlayerEmailMessage) =
=3D=3D=3D 'undefined') {
SonicFoundry.Mediasite.Player.DataAccess.PlayerEmailMessage=3Dgtc("SonicF=
oundry.Mediasite.Player.DataAccess.PlayerEmailMessage");
SonicFoundry.Mediasite.Player.DataAccess.PlayerEmailMessage.registerClass=
('SonicFoundry.Mediasite.Player.DataAccess.PlayerEmailMessage');
}
if (typeof(SonicFoundry.Mediasite.Player.DataAccess.LiveStatus) =
=3D=3D=3D 'undefined') {
SonicFoundry.Mediasite.Player.DataAccess.LiveStatus=3Dgtc("SonicFoundry.M=
ediasite.Player.DataAccess.LiveStatus");
SonicFoundry.Mediasite.Player.DataAccess.LiveStatus.registerClass('SonicF=
oundry.Mediasite.Player.DataAccess.LiveStatus');
}

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/FileServer/Presentation/8e65ba54f9474ac8b42ab4db786874f41d/manifest.js?playbackTicket=07fef8371e3d4631ae4b84f495ec5777

// Copyright (c) 2007-2010 Sonic Foundry, Inc. and Sonic Foundry=20
// Media Systems, Inc. Neither this code nor any portion=20
// thereof may be reproduced, altered, or otherwise changed,=20
// distributed or copied, without the express written=20
// permission of Sonic Foundry.
// All rights reserved.

Manifest =3D function(){}

Slide =3D function(text,time,description)
{
	this.Text=3Dtext;
	this.Time=3Dtime;
	this.Description=3Ddescription;
}
Chapter =3D function(text,time)
{
	this.Text=3Dtext;
	this.Time=3Dtime;
}
SupportingLink =3D function(description,url)
{
	this.Description=3Ddescription;
	this.Url=3Durl;
}
Presenter =3D function(name, imageUrl, email, bioUrl)
{
    this.Name =3D name;
    this.ImageUrl =3D imageUrl;
    this.Email =3D email;
    this.BioUrl =3D bioUrl;
}

Manifest.OnLoad=3Dfunction()
{
    Manifest.LoadPresenters();  =20
    Manifest.LoadSlides();
    Manifest.LoadChapters();
    Manifest.LoadSupportingLinks();   =20
   =20
    return true;
}

Manifest.GetSlideUrl =3D function(slideNumber, width, height)
{
    var slideFileName =3D =
String.format(Manifest.SlideImageFileNameTemplate, slideNumber);

    if (arguments.length =3D=3D 3 && !Manifest.IsStandAlone)
    {
        slideFileName =3D slideFileName.replace(/full/i, =
String.format("{0}_{1}", width, height));
    }

    var source =3D String.format("{0}{1}", Manifest.SlideBaseUrl, =
slideFileName);

    if ((Manifest.AnonymousAllowed =3D=3D null || =
Manifest.AnonymousAllowed =3D=3D false) && =
(Manifest.SlidePlaybackTicketId !=3D null && =
Manifest.SlidePlaybackTicketId.length > 0))
    {
        if (source.indexOf('?') > -1)
        {
            source +=3D '&playbackTicket=3D' + =
Manifest.SlidePlaybackTicketId;
        }
        else
        {
            source +=3D '?playbackTicket=3D' + =
Manifest.SlidePlaybackTicketId;
        }
    }

    return source;
}

Manifest.GetSlideTime=3Dfunction(slideNumber)
{
    return Manifest.Slides[slideNumber].Time;
}
Manifest.GetSlideTitle=3Dfunction(slideNumber)
{
    return Manifest.Slides[slideNumber-1].Text;
}
Manifest.GetSlideDescription=3Dfunction(slideNumber)
{
    return Manifest.Slides[slideNumber-1].Description;
}


Manifest.Version=3D"5.4.5816";
Manifest.IsStandAlone=3Dfalse;
Manifest.VideoUrl=3D"mms://mediasitevideo.passhe.edu/8e65ba54-f947-4ac8-b=
42a-b4db786874f4.wmv?playbackTicket=3D07fef8371e3d4631ae4b84f495ec5777&si=
te=3Dmediasite.passhe.edu";
Manifest.SlideBaseUrl=3D"http://mediasite.passhe.edu/mediasite/FileServer=
/Presentation/8e65ba54f9474ac8b42ab4db786874f41d/";
Manifest.PlaybackTicketId=3D"07fef8371e3d4631ae4b84f495ec5777";
Manifest.SlidePlaybackTicketId=3D"07fef8371e3d4631ae4b84f495ec5777";
Manifest.IsLive=3Dfalse;
Manifest.IsOnDemand=3Dtrue;
Manifest.PlayStatus=3D"OnDemand";
Manifest.PollingEnabled=3Dtrue;
Manifest.ForumEnabled=3Dtrue;
Manifest.PresentationThumbImage=3D"";
Manifest.HasSlides=3Dtrue;
Manifest.HasVideo=3Dtrue;
Manifest.AnonymousAllowed=3Dtrue;
Manifest.SlideImageFileNameTemplate=3D"slide_{0:D4}_full.jpg";
Manifest.PresentationId=3D"8e65ba54f9474ac8b42ab4db786874f41d";
Manifest.Title=3D"ESS - Spring 2011 - 1";
Manifest.Description=3D"";
Manifest.Duration=3D176835;
Manifest.AirDate=3D"12/7/2010";
Manifest.AirTime=3D"7:53 AM CST";
Manifest.CaptionsFile=3D"";
Manifest.LoadSlides=3Dfunction(){
Manifest.Slides =3D new Array(49);
   Manifest.Slides[0] =3D new Slide("",62,"");
   Manifest.Slides[1] =3D new Slide("",3217,"");
   Manifest.Slides[2] =3D new Slide("",3737,"");
   Manifest.Slides[3] =3D new Slide("",4267,"");
   Manifest.Slides[4] =3D new Slide("",6962,"");
   Manifest.Slides[5] =3D new Slide("",7489,"");
   Manifest.Slides[6] =3D new Slide("",8010,"");
   Manifest.Slides[7] =3D new Slide("",11214,"");
   Manifest.Slides[8] =3D new Slide("",11749,"");
   Manifest.Slides[9] =3D new Slide("",12280,"");
   Manifest.Slides[10] =3D new Slide("",14934,"");
   Manifest.Slides[11] =3D new Slide("",15466,"");
   Manifest.Slides[12] =3D new Slide("",16008,"");
   Manifest.Slides[13] =3D new Slide("",16565,"");
   Manifest.Slides[14] =3D new Slide("",19212,"");
   Manifest.Slides[15] =3D new Slide("",19747,"");
   Manifest.Slides[16] =3D new Slide("",20273,"");
   Manifest.Slides[17] =3D new Slide("",21316,"");
   Manifest.Slides[18] =3D new Slide("",22369,"");
   Manifest.Slides[19] =3D new Slide("",22914,"");
   Manifest.Slides[20] =3D new Slide("",23941,"");
   Manifest.Slides[21] =3D new Slide("",34046,"");
   Manifest.Slides[22] =3D new Slide("",34578,"");
   Manifest.Slides[23] =3D new Slide("",35103,"");
   Manifest.Slides[24] =3D new Slide("",39365,"");
   Manifest.Slides[25] =3D new Slide("",40943,"");
   Manifest.Slides[26] =3D new Slide("",42506,"");
   Manifest.Slides[27] =3D new Slide("",45703,"");
   Manifest.Slides[28] =3D new Slide("",49461,"");
   Manifest.Slides[29] =3D new Slide("",49993,"");
   Manifest.Slides[30] =3D new Slide("",53710,"");
   Manifest.Slides[31] =3D new Slide("",54814,"");
   Manifest.Slides[32] =3D new Slide("",55296,"");
   Manifest.Slides[33] =3D new Slide("",64793,"");
   Manifest.Slides[34] =3D new Slide("",65300,"");
   Manifest.Slides[35] =3D new Slide("",65817,"");
   Manifest.Slides[36] =3D new Slide("",69015,"");
   Manifest.Slides[37] =3D new Slide("",74368,"");
   Manifest.Slides[38] =3D new Slide("",74906,"");
   Manifest.Slides[39] =3D new Slide("",78617,"");
   Manifest.Slides[40] =3D new Slide("",79161,"");
   Manifest.Slides[41] =3D new Slide("",141425,"");
   Manifest.Slides[42] =3D new Slide("",144082,"");
   Manifest.Slides[43] =3D new Slide("",144618,"");
   Manifest.Slides[44] =3D new Slide("",145160,"");
   Manifest.Slides[45] =3D new Slide("",145710,"");
   Manifest.Slides[46] =3D new Slide("",147306,"");
   Manifest.Slides[47] =3D new Slide("",151523,"");
   Manifest.Slides[48] =3D new Slide("",155246,"");
};
Manifest.HasSlideDescriptions=3Dfalse;
Manifest.LoadChapters=3Dfunction(){
Manifest.Chapters =3D new Array(0);
};
Manifest.LoadSupportingLinks=3Dfunction(){
Manifest.SupportingLinks =3D new Array(0);
};
Manifest.LoadPresenters=3Dfunction(){
Manifest.Presenters =3D new Array(1);
   Manifest.Presenters[0] =3D new Presenter("Slippery Rock =
University","","","");
};

------=_NextPart_000_0000_01CBE932.7CEFD480
Content-Type: application/octet-stream
Content-Transfer-Encoding: quoted-printable
Content-Location: http://mediasite.passhe.edu/mediasite/Viewer/JavascriptServer.aspx?mode=Default


// Copyright (c) 2003-2008 Sonic Foundry, Inc. and Sonic Foundry Media =
Systems, Inc. Neither this code nor any portion=20
// thereof may=C2=A0be reproduced, altered,=C2=A0or otherwise changed, =
distributed or copied,=C2=A0without the express written
// permission of Sonic Foundry.=C2=A0 All rights reserved.

function GlobalOptions(){}
GlobalOptions.AppRoot=3D"/mediasite/Viewer";
GlobalOptions.AllowEmailForm =3D =
true;GlobalOptions.EnableContextMenuForPlayer =3D =
true;GlobalOptions.AlwaysUseSilverlight =3D =
false;GlobalOptions.UseLiveEventPolling =3D =
false;GlobalOptions.SlideGroupThreshold =3D =
2000;GlobalOptions.SlideGroupMinToTrigger =3D =
25;GlobalOptions.SlideGroupMaxInGroup =3D 10;GlobalOptions.ErrorPage =3D =
"Errors/ErrorPage.aspx";

Type.registerNamespace('Localization');Localization.Common=3Dfunction(){}=

Localization.Buttons=3Dfunction(){}
Localization.FullSize=3Dfunction(){}
Localization.CurrentSlideResource=3Dfunction(){}
Localization.LinksResource=3Dfunction(){}
Localization.ThumbnailsResource=3Dfunction(){}
Localization.LiveIndicatorResource=3Dfunction(){}
Localization.PlayerLayoutResource=3Dfunction(){}
Localization.PresentationCardResource=3Dfunction(){}

Localization.Common.registerClass('Localization.Common');
Localization.Buttons.registerClass('Localization.Buttons');
Localization.FullSize.registerClass('Localization.FullSize');
Localization.CurrentSlideResource.registerClass('Localization.CurrentSlid=
eResource');
Localization.LinksResource.registerClass('Localization.LinksResource');
Localization.ThumbnailsResource.registerClass('Localization.ThumbnailsRes=
ource');
Localization.PlayerLayoutResource.registerClass('Localization.PlayerLayou=
tResource');
Localization.PresentationCardResource.registerClass('Localization.Present=
ationCardResource');
Localization.LiveIndicatorResource.registerClass('Localization.LiveIndica=
torResource');

Localization.Common.Slide =3D 'Slide';
Localization.Common.Of=3D'of';
Localization.Common.PreviousSlide=3D'Previous Slide';
Localization.Common.NextSlide=3D'Next Slide';
Localization.Common.Language=3D'Language';
Localization.Common.AudioTrack=3D'Audio Track';
Localization.Common.Expand=3D'Expand';
Localization.Common.Collapse=3D'Collapse';
Localization.Common.SlideShow=3D'Slide Show';
Localization.Common.SlideList=3D'Slide List';
Localization.Buttons.ShowPolls=3D'Show Polls';
Localization.Buttons.Ask=3D'Ask a Question';
Localization.Buttons.Email=3D'Share Presentation';
Localization.Buttons.Links=3D'Presentation Links';
Localization.Buttons.PreviousSlide=3D'Previous Slide';
Localization.Buttons.NextSlide=3D'Next Slide';
Localization.Buttons.Close=3D'Close this Window';
Localization.Buttons.FullScreen=3D'Full Screen';
Localization.Buttons.Help=3D'Help';
Localization.Buttons.MaxSlide=3D'Show Original Size Slideshow';
Localization.Buttons.Polls=3D'View Polls';
Localization.Buttons.Skipback=3D'Skip Back';
Localization.Buttons.Stop=3D'Stop';
Localization.Buttons.Mute=3D'Mute';
Localization.Buttons.UnMute=3D'Mute Off';
Localization.Buttons.Play=3D'Play';
Localization.Buttons.Pause=3D'Pause';
Localization.Buttons.CurrentSlide=3D'Slide Image';
Localization.Buttons.Navigate=3D'Navigate';
Localization.Buttons.ChangeVideoPosition =3D 'Change Video Position';
Localization.Buttons.PlayFaster =3D 'Play Faster';
Localization.Buttons.PlaySlower =3D 'Play Slower';
Localization.FullSize.AutoRefresh=3D'AutoRefresh';
Localization.FullSize.PlayFromSlide=3D'Play From This Slide';
Localization.FullSize.RefreshNow=3D'Refresh Now';
Localization.CurrentSlideResource.SlideImage=3D'Slide Image';
Localization.CurrentSlideResource.ShowFullSize=3D'Show Original Size =
Slide Show';
Localization.CurrentSlideResource.ShowSlideMagnifier=3D'Show Slide =
Magnifier';
Localization.CurrentSlideResource.HideSlideMagnifier=3D'Hide Slide =
Magnifier';
Localization.CurrentSlideResource.PresentationHasEnded=3D'This =
presentation has ended';
Localization.LinksResource.PresentationLinks=3D'Presentation Links';
Localization.LinksResource.Close=3D'Close';
Localization.ThumbnailsResource.Thumbnails=3D'Thumbnails';
Localization.ThumbnailsResource.SlideList=3D'Slide List';
Localization.ThumbnailsResource.SmallThumbnails=3D'Small Thumbnails';
Localization.ThumbnailsResource.LargeThumbnails=3D'Large Thumbnails';
Localization.ThumbnailsResource.Chapters=3D'Chapters';
Localization.ThumbnailsResource.Options=3D'Thumbnail Options';
Localization.ThumbnailsResource.PreviewSlide=3D'Preview this slide';
Localization.ThumbnailsResource.PlayFromSlide=3D'Play from this slide';
Localization.ThumbnailsResource.ExpandSlides=3D'Click to Expand Slide =
Group';
Localization.ThumbnailsResource.CollapseSlides=3D'Click to Collapse =
Slide Group';
Localization.ThumbnailsResource.Page=3D'Page';
Localization.ThumbnailsResource.Of=3D'of';
Localization.ThumbnailsResource.Previous=3D'Previous';
Localization.ThumbnailsResource.Next=3D'Next';
Localization.PlayerLayoutResource.AudioOnly =3D'Audio-only =
Presentation';
Localization.PlayerLayoutResource.NotStarted =3D 'The presentation has =
not started';
Localization.PlayerLayoutResource.ShowCaptioning =3D 'Show Captioning';
Localization.PlayerLayoutResource.HideCaptioning =3D 'Hide Captioning';
Localization.LiveIndicatorResource.LiveTooltip=3D'Live Broadcast';
Localization.LiveIndicatorResource.ReplayTooltip=3D'Previously =
Recorded';
Localization.LiveIndicatorResource.PausedTooltip=3D'Recording is =
Paused';
Localization.MediaPlayer=3Dfunction(){}
Localization.MediaPlayer.registerClass('Localization.MediaPlayer');
Localization.MediaPlayer.GeneralError =3D 'An error occurred while =
attempting to play the media for this presentation.';
Localization.MediaPlayer.FileNotFoundError=3D'The media file for this =
presentation could not be found.';
Localization.MediaPlayer.ServerConnectionError =3D 'Unable to connect to =
the media server. Reloading the presentation may resolve this problem.';
Localization.MediaPlayer.ServerNotAvailable =3D 'Unable to play the =
presentation due to a media server error.  Reloading the presentation =
may resolve this problem.';
Localization.MediaPlayer.SilverlightNetworkError=3D'Unable to play the =
presentation. The media server may not be available or the media stream =
format may not be supported.';
Localization.MediaPlayer.SilverlightSetValueError =3D 'Unable to set the =
following value for this presentation: ';
Localization.MediaPlayer.SilverlightFullScreenPrompt =3D 'Click for =
full-screen mode';
Localization.MediaPlayer.ClipEnded=3D'(Clip Ended)';
Localization.MediaPlayer.State=3Dfunction(){}
Localization.MediaPlayer.State.registerClass('Localization.MediaPlayer.St=
ate');
Localization.MediaPlayer.State.Undefined=3D'Undefined State';
Localization.MediaPlayer.State.Stopped=3D'Stopped';
Localization.MediaPlayer.State.Paused=3D'Paused';
Localization.MediaPlayer.State.Playing=3D'Playing';
Localization.MediaPlayer.State.ScanForward=3D'Fast Forward';
Localization.MediaPlayer.State.ScanReverse=3D'Rewind';
Localization.MediaPlayer.State.Buffering=3D'Buffering';
Localization.MediaPlayer.State.Waiting=3D'Waiting';
Localization.MediaPlayer.State.MediaEnded=3D'Media Ended';
Localization.MediaPlayer.State.Transitioning=3D'Transitioning';
Localization.MediaPlayer.State.Ready=3D'Ready';
Localization.MediaPlayer.State.Reconnecting=3D'Reconnecting';
Localization.MediaPlayer.State.Closed=3D'Closed';
Localization.MediaPlayer.State.Error=3D'Error';
Localization.MediaPlayer.State.Opening=3D'Opening';
Localization.MediaPlayer.State.Unknown=3D'Unknown State';
Localization.SubmitQuestionSuccess =3D 'Your question has been sent.';
Localization.SubmitQuestionFailure =3D 'There was a problem sending your =
question.  Please try again.';
Localization.EmailInviteInvalid =3D 'One of the email addresses you =
entered appears to be invalid.<br />Please check them and try again.';
Localization.ForumEmailInvalid =3D 'The email addresses you entered =
appears to be invalid';
Localization.ForumNameRequired =3D 'Enter your name';
Localization.ForumQuestionRequired =3D 'Enter a question for the =
presenter';
Localization.ForumSubjectRequired =3D 'Enter a subject for your =
question';
Localization.ForumErrorMessage =3D 'Please correct the following =
errors:';
Localization.ForumQuestionTimeError =3D 'Enter a valid time in the =
presentation';
Localization.PresentationCardResource.Presenters =3D 'Presenter(s):';
Localization.PresentationCardResource.Description =3D 'Description:';
Localization.PresentationCardResource.AirDate =3D 'Date:';
Localization.PresentationCardResource.AirTime =3D  'Time:';
Localization.PresentationCardResource.Duration =3D  'Length:';
Localization.PresentationCardResource.DefaultTitle =3D  'Mediasite =
Presentation';
Localization.PresentationCardResource.DefaultDescription =3D  =
'Presentation Description';
Localization.PresentationCardResource.More =3D  'More...';

/*  Prototype JavaScript framework, version 1.6.0
 *  (c) 2005-2007 Sam Stephenson
 *
 *  Prototype is freely distributable under the terms of an MIT-style =
license.
 *  For details, see the Prototype web site: http://www.prototypejs.org/
 *
 =
*------------------------------------------------------------------------=
--*/

var Prototype =3D {
  Version: '1.6.0',

  Browser: {
    IE:     !!(window.attachEvent && !window.opera),
    Opera:  !!window.opera,
    WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
    Gecko:  navigator.userAgent.indexOf('Gecko') > -1 && =
navigator.userAgent.indexOf('KHTML') =3D=3D -1,
    MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
  },

  BrowserFeatures: {
    XPath: !!document.evaluate,
    ElementExtensions: !!window.HTMLElement,
    SpecificElementExtensions:
      document.createElement('div').__proto__ &&
      document.createElement('div').__proto__ !=3D=3D
        document.createElement('form').__proto__
  },

  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,

  emptyFunction: function() { },
  K: function(x) { return x }
};

if (Prototype.Browser.MobileSafari)
  Prototype.BrowserFeatures.SpecificElementExtensions =3D false;

if (Prototype.Browser.WebKit)
  Prototype.BrowserFeatures.XPath =3D false;

/* Based on Alex Arnell's inheritance implementation. */
var Class =3D {
  create: function() {
    var parent =3D null, properties =3D $A(arguments);
    if (Object.isFunction(properties[0]))
      parent =3D properties.shift();

    function klass() {
      this.initialize.apply(this, arguments);
    }

    Object.extend(klass, Class.Methods);
    klass.superclass =3D parent;
    klass.subclasses =3D [];

    if (parent) {
      var subclass =3D function() { };
      subclass.prototype =3D parent.prototype;
      klass.prototype =3D new subclass;
      parent.subclasses.push(klass);
    }

    for (var i =3D 0; i < properties.length; i++)
      klass.addMethods(properties[i]);

    if (!klass.prototype.initialize)
      klass.prototype.initialize =3D Prototype.emptyFunction;

    klass.prototype.constructor =3D klass;

    return klass;
  }
};

Class.Methods =3D {
  addMethods: function(source) {
    var ancestor   =3D this.superclass && this.superclass.prototype;
    var properties =3D Object.keys(source);

    if (!Object.keys({ toString: true }).length)
      properties.push("toString", "valueOf");

    for (var i =3D 0, length =3D properties.length; i < length; i++) {
      var property =3D properties[i], value =3D source[property];
      if (ancestor && Object.isFunction(value) &&
          value.argumentNames().first() =3D=3D "$super") {
        var method =3D value, value =3D Object.extend((function(m) {
          return function() { return ancestor[m].apply(this, arguments) =
};
        })(property).wrap(method), {
          valueOf:  function() { return method },
          toString: function() { return method.toString() }
        });
      }
      this.prototype[property] =3D value;
    }

    return this;
  }
};

var Abstract =3D { };

Object.extend =3D function(destination, source) {
  for (var property in source)
    destination[property] =3D source[property];
  return destination;
};

Object.extend(Object, {
  inspect: function(object) {
    try {
      if (object =3D=3D=3D undefined) return 'undefined';
      if (object =3D=3D=3D null) return 'null';
      return object.inspect ? object.inspect() : object.toString();
    } catch (e) {
      if (e instanceof RangeError) return '...';
      throw e;
    }
  },

  toJSON: function(object) {
    var type =3D typeof object;
    switch (type) {
      case 'undefined':
      case 'function':
      case 'unknown': return;
      case 'boolean': return object.toString();
    }

    if (object =3D=3D=3D null) return 'null';
    if (object.toJSON) return object.toJSON();
    if (Object.isElement(object)) return;

    var results =3D [];
    for (var property in object) {
      var value =3D Object.toJSON(object[property]);
      if (value !=3D=3D undefined)
        results.push(property.toJSON() + ': ' + value);
    }

    return '{' + results.join(', ') + '}';
  },

  toQueryString: function(object) {
    return $H(object).toQueryString();
  },

  toHTML: function(object) {
    return object && object.toHTML ? object.toHTML() : =
String.interpret(object);
  },

  keys: function(object) {
    var keys =3D [];
    for (var property in object)
      keys.push(property);
    return keys;
  },

  values: function(object) {
    var values =3D [];
    for (var property in object)
      values.push(object[property]);
    return values;
  },

  clone: function(object) {
    return Object.extend({ }, object);
  },

  isElement: function(object) {
    return object && object.nodeType =3D=3D 1;
  },

  isArray: function(object) {
    return object && object.constructor =3D=3D=3D Array;
  },

  isHash: function(object) {
    return object instanceof Hash;
  },

  isFunction: function(object) {
    return typeof object =3D=3D "function";
  },

  isString: function(object) {
    return typeof object =3D=3D "string";
  },

  isNumber: function(object) {
    return typeof object =3D=3D "number";
  },

  isUndefined: function(object) {
    return typeof object =3D=3D "undefined";
  }
});

Object.extend(Function.prototype, {
  argumentNames: function() {
    var names =3D =
this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").inv=
oke("strip");
    return names.length =3D=3D 1 && !names[0] ? [] : names;
  },

  bind: function() {
    if (arguments.length < 2 && arguments[0] =3D=3D=3D undefined) return =
this;
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();
    return function() {
      return __method.apply(object, args.concat($A(arguments)));
    }
  },

  bindAsEventListener: function() {
    var __method =3D this, args =3D $A(arguments), object =3D =
args.shift();
    return function(event) {
      return __method.apply(object, [event || =
window.event].concat(args));
    }
  },

  curry: function() {
    if (!arguments.length) return this;
    var __method =3D this, args =3D $A(arguments);
    return function() {
      return __method.apply(this, args.concat($A(arguments)));
    }
  },

  delay: function() {
    var __method =3D this, args =3D $A(arguments), timeout =3D =
args.shift() * 1000;
    return window.setTimeout(function() {
      return __method.apply(__method, args);
    }, timeout);
  },

  wrap: function(wrapper) {
    var __method =3D this;
    return function() {
      return wrapper.apply(this, =
[__method.bind(this)].concat($A(arguments)));
    }
  },

  methodize: function() {
    if (this._methodized) return this._methodized;
    var __method =3D this;
    return this._methodized =3D function() {
      return __method.apply(null, [this].concat($A(arguments)));
    };
  }
});

Function.prototype.defer =3D Function.prototype.delay.curry(0.01);

Date.prototype.toJSON =3D function() {
  return '"' + this.getUTCFullYear() + '-' +
    (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
    this.getUTCDate().toPaddedString(2) + 'T' +
    this.getUTCHours().toPaddedString(2) + ':' +
    this.getUTCMinutes().toPaddedString(2) + ':' +
    this.getUTCSeconds().toPaddedString(2) + 'Z"';
};

var Try =3D {
  these: function() {
    var returnValue;

    for (var i =3D 0, length =3D arguments.length; i < length; i++) {
      var lambda =3D arguments[i];
      try {
        returnValue =3D lambda();
        break;
      } catch (e) { }
    }

    return returnValue;
  }
};

RegExp.prototype.match =3D RegExp.prototype.test;

RegExp.escape =3D function(str) {
  return String(str).replace(/([.*+?^=3D!:${}()|[\]\/\\])/g, '\\$1');
};

/*-----------------------------------------------------------------------=
---*/

var PeriodicalExecuter =3D Class.create({
  initialize: function(callback, frequency) {
    this.callback =3D callback;
    this.frequency =3D frequency;
    this.currentlyExecuting =3D false;

    this.registerCallback();
  },

  registerCallback: function() {
    this.timer =3D setInterval(this.onTimerEvent.bind(this), =
this.frequency * 1000);
  },

  execute: function() {
    this.callback(this);
  },

  stop: function() {
    if (!this.timer) return;
    clearInterval(this.timer);
    this.timer =3D null;
  },

  onTimerEvent: function() {
    if (!this.currentlyExecuting) {
      try {
        this.currentlyExecuting =3D true;
        this.execute();
      } finally {
        this.currentlyExecuting =3D false;
      }
    }
  }
});
Object.extend(String, {
  interpret: function(value) {
    return value =3D=3D null ? '' : String(value);
  },
  specialChar: {
    '\b': '\\b',
    '\t': '\\t',
    '\n': '\\n',
    '\f': '\\f',
    '\r': '\\r',
    '\\': '\\\\'
  }
});

Object.extend(String.prototype, {
  gsub: function(pattern, replacement) {
    var result =3D '', source =3D this, match;
    replacement =3D arguments.callee.prepareReplacement(replacement);

    while (source.length > 0) {
      if (match =3D source.match(pattern)) {
        result +=3D source.slice(0, match.index);
        result +=3D String.interpret(replacement(match));
        source  =3D source.slice(match.index + match[0].length);
      } else {
        result +=3D source, source =3D '';
      }
    }
    return result;
  },

  sub: function(pattern, replacement, count) {
    replacement =3D this.gsub.prepareReplacement(replacement);
    count =3D count =3D=3D=3D undefined ? 1 : count;

    return this.gsub(pattern, function(match) {
      if (--count < 0) return match[0];
      return replacement(match);
    });
  },

  scan: function(pattern, iterator) {
    this.gsub(pattern, iterator);
    return String(this);
  },

  truncate: function(length, truncation) {
    length =3D length || 30;
    truncation =3D truncation =3D=3D=3D undefined ? '...' : truncation;
    return this.length > length ?
      this.slice(0, length - truncation.length) + truncation : =
String(this);
  },

  strip: function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  },

  stripTags: function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  },

  stripScripts: function() {
    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), =
'');
  },

  extractScripts: function() {
    var matchAll =3D new RegExp(Prototype.ScriptFragment, 'img');
    var matchOne =3D new RegExp(Prototype.ScriptFragment, 'im');
    return (this.match(matchAll) || []).map(function(scriptTag) {
      return (scriptTag.match(matchOne) || ['', ''])[1];
    });
  },

  evalScripts: function() {
    return this.extractScripts().map(function(script) { return =
eval(script) });
  },

  escapeHTML: function() {
    var self =3D arguments.callee;
    self.text.data =3D this;
    return self.div.innerHTML;
  },

  unescapeHTML: function() {
    var div =3D new Element('div');
    div.innerHTML =3D this.stripTags();
    return div.childNodes[0] ? (div.childNodes.length > 1 ?
      $A(div.childNodes).inject('', function(memo, node) { return =
memo+node.nodeValue }) :
      div.childNodes[0].nodeValue) : '';
  },

  toQueryParams: function(separator) {
    var match =3D this.strip().match(/([^?#]*)(#.*)?$/);
    if (!match) return { };

    return match[1].split(separator || '&').inject({ }, function(hash, =
pair) {
      if ((pair =3D pair.split('=3D'))[0]) {
        var key =3D decodeURIComponent(pair.shift());
        var value =3D pair.length > 1 ? pair.join('=3D') : pair[0];
        if (value !=3D undefined) value =3D decodeURIComponent(value);

        if (key in hash) {
          if (!Object.isArray(hash[key])) hash[key] =3D [hash[key]];
          hash[key].push(value);
        }
        else hash[key] =3D value;
      }
      return hash;
    });
  },

  toArray: function() {
    return this.split('');
  },

  succ: function() {
    return this.slice(0, this.length - 1) +
      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
  },

  times: function(count) {
    return count < 1 ? '' : new Array(count + 1).join(this);
  },

  camelize: function() {
    var parts =3D this.split('-'), len =3D parts.length;
    if (len =3D=3D 1) return parts[0];

    var camelized =3D this.charAt(0) =3D=3D '-'
      ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
      : parts[0];

    for (var i =3D 1; i < len; i++)
      camelized +=3D parts[i].charAt(0).toUpperCase() + =
parts[i].substring(1);

    return camelized;
  },

  capitalize: function() {
    return this.charAt(0).toUpperCase() + =
this.substring(1).toLowerCase();
  },

  underscore: function() {
    return this.gsub(/::/, =
'/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{=
1}_#{2}').gsub(/-/,'_').toLowerCase();
  },

  dasherize: function() {
    return this.gsub(/_/,'-');
  },

  inspect: function(useDoubleQuotes) {
    var escapedString =3D this.gsub(/[\x00-\x1f\\]/, function(match) {
      var character =3D String.specialChar[match[0]];
      return character ? character : '\\u00' + =
match[0].charCodeAt().toPaddedString(2, 16);
    });
    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') =
+ '"';
    return "'" + escapedString.replace(/'/g, '\\\'') + "'";
  },

  toJSON: function() {
    return this.inspect(true);
  },

  unfilterJSON: function(filter) {
    return this.sub(filter || Prototype.JSONFilter, '#{1}');
  },

  isJSON: function() {
    var str =3D this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
    return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
  },

  evalJSON: function(sanitize) {
    var json =3D this.unfilterJSON();
    try {
      if (!sanitize || json.isJSON()) return eval('(' + json + ')');
    } catch (e) { }
    throw new SyntaxError('Badly formed JSON string: ' + =
this.inspect());
  },

  include: function(pattern) {
    return this.indexOf(pattern) > -1;
  },

  startsWith: function(pattern) {
    return this.indexOf(pattern) =3D=3D=3D 0;
  },

  endsWith: function(pattern) {
    var d =3D this.length - pattern.length;
    return d >=3D 0 && this.lastIndexOf(pattern) =3D=3D=3D d;
  },

  empty: function() {
    return this =3D=3D '';
  },

  blank: function() {
    return /^\s*$/.test(this);
  },

  interpolate: function(object, pattern) {
    return new Template(this, pattern).evaluate(object);
  }
});

if (Prototype.Browser.WebKit || Prototype.Browser.IE) =
Object.extend(String.prototype, {
  escapeHTML: function() {
    return =
this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');
  },
  unescapeHTML: function() {
    return =
this.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>');
  }
});

String.prototype.gsub.prepareReplacement =3D function(replacement) {
  if (Object.isFunction(replacement)) return replacement;
  var template =3D new Template(replacement);
  return function(match) { return template.evaluate(match) };
};

String.prototype.parseQuery =3D String.prototype.toQueryParams;

Object.extend(String.prototype.escapeHTML, {
  div:  document.createElement('div'),
  text: document.createTextNode('')
});

with (String.prototype.escapeHTML) div.appendChild(text);

var Template =3D Class.create({
  initialize: function(template, pattern) {
    this.template =3D template.toString();
    this.pattern =3D pattern || Template.Pattern;
  },

  evaluate: function(object) {
    if (Object.isFunction(object.toTemplateReplacements))
      object =3D object.toTemplateReplacements();

    return this.template.gsub(this.pattern, function(match) {
      if (object =3D=3D null) return '';

      var before =3D match[1] || '';
      if (before =3D=3D '\\') return match[2];

      var ctx =3D object, expr =3D match[3];
      var pattern =3D /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match =
=3D pattern.exec(expr);
      if (match =3D=3D null) return before;

      while (match !=3D null) {
        var comp =3D match[1].startsWith('[') ? match[2].gsub('\\\\]', =
']') : match[1];
        ctx =3D ctx[comp];
        if (null =3D=3D ctx || '' =3D=3D match[3]) break;
        expr =3D expr.substring('[' =3D=3D match[3] ? match[1].length : =
match[0].length);
        match =3D pattern.exec(expr);
      }

      return before + String.interpret(ctx);
    }.bind(this));
  }
});
Template.Pattern =3D /(^|.|\r|\n)(#\{(.*?)\})/;

var $break =3D { };

var Enumerable =3D {
  each: function(iterator, context) {
    var index =3D 0;
    iterator =3D iterator.bind(context);
    try {
      this._each(function(value) {
        iterator(value, index++);
      });
    } catch (e) {
      if (e !=3D $break) throw e;
    }
    return this;
  },

  eachSlice: function(number, iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var index =3D -number, slices =3D [], array =3D this.toArray();
    while ((index +=3D number) < array.length)
      slices.push(array.slice(index, index+number));
    return slices.collect(iterator, context);
  },

  all: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var result =3D true;
    this.each(function(value, index) {
      result =3D result && !!iterator(value, index);
      if (!result) throw $break;
    });
    return result;
  },

  any: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var result =3D false;
    this.each(function(value, index) {
      if (result =3D !!iterator(value, index))
        throw $break;
    });
    return result;
  },

  collect: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var results =3D [];
    this.each(function(value, index) {
      results.push(iterator(value, index));
    });
    return results;
  },

  detect: function(iterator, context) {
    iterator =3D iterator.bind(context);
    var result;
    this.each(function(value, index) {
      if (iterator(value, index)) {
        result =3D value;
        throw $break;
      }
    });
    return result;
  },

  findAll: function(iterator, context) {
    iterator =3D iterator.bind(context);
    var results =3D [];
    this.each(function(value, index) {
      if (iterator(value, index))
        results.push(value);
    });
    return results;
  },

  grep: function(filter, iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var results =3D [];

    if (Object.isString(filter))
      filter =3D new RegExp(filter);

    this.each(function(value, index) {
      if (filter.match(value))
        results.push(iterator(value, index));
    });
    return results;
  },

  include: function(object) {
    if (Object.isFunction(this.indexOf))
      if (this.indexOf(object) !=3D -1) return true;

    var found =3D false;
    this.each(function(value) {
      if (value =3D=3D object) {
        found =3D true;
        throw $break;
      }
    });
    return found;
  },

  inGroupsOf: function(number, fillWith) {
    fillWith =3D fillWith =3D=3D=3D undefined ? null : fillWith;
    return this.eachSlice(number, function(slice) {
      while(slice.length < number) slice.push(fillWith);
      return slice;
    });
  },

  inject: function(memo, iterator, context) {
    iterator =3D iterator.bind(context);
    this.each(function(value, index) {
      memo =3D iterator(memo, value, index);
    });
    return memo;
  },

  invoke: function(method) {
    var args =3D $A(arguments).slice(1);
    return this.map(function(value) {
      return value[method].apply(value, args);
    });
  },

  max: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var result;
    this.each(function(value, index) {
      value =3D iterator(value, index);
      if (result =3D=3D undefined || value >=3D result)
        result =3D value;
    });
    return result;
  },

  min: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var result;
    this.each(function(value, index) {
      value =3D iterator(value, index);
      if (result =3D=3D undefined || value < result)
        result =3D value;
    });
    return result;
  },

  partition: function(iterator, context) {
    iterator =3D iterator ? iterator.bind(context) : Prototype.K;
    var trues =3D [], falses =3D [];
    this.each(function(value, index) {
      (iterator(value, index) ?
        trues : falses).push(value);
    });
    return [trues, falses];
  },

  pluck: function(property) {
    var results =3D [];
    this.each(function(value) {
      results.push(value[property]);
    });
    return results;
  },

  reject: function(iterator, context) {
    iterator =3D iterator.bind(context);
    var results =3D [];
    this.each(function(value, index) {
      if (!iterator(value, index))
        results.push(value);
    });
    return results;
  },

  sortBy: function(iterator, context) {
    iterator =3D iterator.bind(context);
    return this.map(function(value, index) {
      return {value: value, criteria: iterator(value, index)};
    }).sort(function(left, right) {
      var a =3D left.criteria, b =3D right.criteria;
      return a < b ? -1 : a > b ? 1 : 0;
    }).pluck('value');
  },

  toArray: function() {
    return this.map();
  },

  zip: function() {
    var iterator =3D Prototype.K, args =3D $A(arguments);
    if (Object.isFunction(args.last()))
      iterator =3D args.pop();

    var collections =3D [this].concat(args).map($A);
    return this.map(function(value, index) {
      return iterator(collections.pluck(index));
    });
  },

  size: function() {
    return this.toArray().length;
  },

  inspect: function() {
    return '#<Enumerable:' + this.toArray().inspect() + '>';
  }
};

Object.extend(Enumerable, {
  map:     Enumerable.collect,
  find:    Enumerable.detect,
  select:  Enumerable.findAll,
  filter:  Enumerable.findAll,
  member:  Enumerable.include,
  entries: Enumerable.toArray,
  every:   Enumerable.all,
  some:    Enumerable.any
});
function $A(iterable) {
  if (!iterable) return [];
  if (iterable.toArray) return iterable.toArray();
  var length =3D iterable.length, results =3D new Array(length);
  while (length--) results[length] =3D iterable[length];
  return results;
}

if (Prototype.Browser.WebKit) {
  function $A(iterable) {
    if (!iterable) return [];
    if (!(Object.isFunction(iterable) && iterable =3D=3D '[object =
NodeList]') &&
        iterable.toArray) return iterable.toArray();
    var length =3D iterable.length, results =3D new Array(length);
    while (length--) results[length] =3D iterable[length];
    return results;
  }
}

Array.from =3D $A;

Object.extend(Array.prototype, Enumerable);

if (!Array.prototype._reverse) Array.prototype._reverse =3D =
Array.prototype.reverse;

Object.extend(Array.prototype, {
  _each: function(iterator) {
    for (var i =3D 0, length =3D this.length; i < length; i++)
      iterator(this[i]);
  },

  clear: function() {
    this.length =3D 0;
    return this;
  },

  first: function() {
    return this[0];
  },

  last: function() {
    return this[this.length - 1];
  },

  compact: function() {
    return this.select(function(value) {
      return value !=3D null;
    });
  },

  flatten: function() {
    return this.inject([], function(array, value) {
      return array.concat(Object.isArray(value) ?
        value.flatten() : [value]);
    });
  },

  without: function() {
    var values =3D $A(arguments);
    return this.select(function(value) {
      return !values.include(value);
    });
  },

  reverse: function(inline) {
    return (inline !=3D=3D false ? this : this.toArray())._reverse();
  },

  reduce: function() {
    return this.length > 1 ? this : this[0];
  },

  uniq: function(sorted) {
    return this.inject([], function(array, value, index) {
      if (0 =3D=3D index || (sorted ? array.last() !=3D value : =
!array.include(value)))
        array.push(value);
      return array;
    });
  },

  intersect: function(array) {
    return this.uniq().findAll(function(item) {
      return array.detect(function(value) { return item =3D=3D=3D value =
});
    });
  },

  clone: function() {
    return [].concat(this);
  },

  size: function() {
    return this.length;
  },

  inspect: function() {
    return '[' + this.map(Object.inspect).join(', ') + ']';
  },

  toJSON: function() {
    var results =3D [];
    this.each(function(object) {
      var value =3D Object.toJSON(object);
      if (value !=3D=3D undefined) results.push(value);
    });
    return '[' + results.join(', ') + ']';
  }
});

// use native browser JS 1.6 implementation if available
if (Object.isFunction(Array.prototype.forEach))
  Array.prototype._each =3D Array.prototype.forEach;

if (!Array.prototype.indexOf) Array.prototype.indexOf =3D function(item, =
i) {
  i || (i =3D 0);
  var length =3D this.length;
  if (i < 0) i =3D length + i;
  for (; i < length; i++)
    if (this[i] =3D=3D=3D item) return i;
  return -1;
};

if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf =3D =
function(item, i) {
  i =3D isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
  var n =3D this.slice(0, i).reverse().indexOf(item);
  return (n < 0) ? n : i - n - 1;
};

Array.prototype.toArray =3D Array.prototype.clone;

function $w(string) {
  if (!Object.isString(string)) return [];
  string =3D string.strip();
  return string ? string.split(/\s+/) : [];
}

if (Prototype.Browser.Opera){
  Array.prototype.concat =3D function() {
    var array =3D [];
    for (var i =3D 0, length =3D this.length; i < length; i++) =
array.push(this[i]);
    for (var i =3D 0, length =3D arguments.length; i < length; i++) {
      if (Object.isArray(arguments[i])) {
        for (var j =3D 0, arrayLength =3D arguments[i].length; j < =
arrayLength; j++)
          array.push(arguments[i][j]);
      } else {
        array.push(arguments[i]);
      }
    }
    return array;
  };
}
Object.extend(Number.prototype, {
  toColorPart: function() {
    return this.toPaddedString(2, 16);
  },

  succ: function() {
    return this + 1;
  },

  times: function(iterator) {
    $R(0, this, true).each(iterator);
    return this;
  },

  toPaddedString: function(length, radix) {
    var string =3D this.toString(radix || 10);
    return '0'.times(length - string.length) + string;
  },

  toJSON: function() {
    return isFinite(this) ? this.toString() : 'null';
  }
});

$w('abs round ceil floor').each(function(method){
  Number.prototype[method] =3D Math[method].methodize();
});
function $H(object) {
  return new Hash(object);
};

var Hash =3D Class.create(Enumerable, (function() {
  if (function() {
    var i =3D 0, Test =3D function(value) { this.key =3D value };
    Test.prototype.key =3D 'foo';
    for (var property in new Test('bar')) i++;
    return i > 1;
  }()) {
    function each(iterator) {
      var cache =3D [];
      for (var key in this._object) {
        var value =3D this._object[key];
        if (cache.include(key)) continue;
        cache.push(key);
        var pair =3D [key, value];
        pair.key =3D key;
        pair.value =3D value;
        iterator(pair);
      }
    }
  } else {
    function each(iterator) {
      for (var key in this._object) {
        var value =3D this._object[key], pair =3D [key, value];
        pair.key =3D key;
        pair.value =3D value;
        iterator(pair);
      }
    }
  }

  function toQueryPair(key, value) {
    if (Object.isUndefined(value)) return key;
    return key + '=3D' + encodeURIComponent(String.interpret(value));
  }

  return {
    initialize: function(object) {
      this._object =3D Object.isHash(object) ? object.toObject() : =
Object.clone(object);
    },

    _each: each,

    set: function(key, value) {
      return this._object[key] =3D value;
    },

    get: function(key) {
      return this._object[key];
    },

    unset: function(key) {
      var value =3D this._object[key];
      delete this._object[key];
      return value;
    },

    toObject: function() {
      return Object.clone(this._object);
    },

    keys: function() {
      return this.pluck('key');
    },

    values: function() {
      return this.pluck('value');
    },

    index: function(value) {
      var match =3D this.detect(function(pair) {
        return pair.value =3D=3D=3D value;
      });
      return match && match.key;
    },

    merge: function(object) {
      return this.clone().update(object);
    },

    update: function(object) {
      return new Hash(object).inject(this, function(result, pair) {
        result.set(pair.key, pair.value);
        return result;
      });
    },

    toQueryString: function() {
      return this.map(function(pair) {
        var key =3D encodeURIComponent(pair.key), values =3D pair.value;

        if (values && typeof values =3D=3D 'object') {
          if (Object.isArray(values))
            return values.map(toQueryPair.curry(key)).join('&');
        }
        return toQueryPair(key, values);
      }).join('&');
    },

    inspect: function() {
      return '#<Hash:{' + this.map(function(pair) {
        return pair.map(Object.inspect).join(': ');
      }).join(', ') + '}>';
    },

    toJSON: function() {
      return Object.toJSON(this.toObject());
    },

    clone: function() {
      return new Hash(this);
    }
  }
})());

Hash.prototype.toTemplateReplacements =3D Hash.prototype.toObject;
Hash.from =3D $H;
var ObjectRange =3D Class.create(Enumerable, {
  initialize: function(start, end, exclusive) {
    this.start =3D start;
    this.end =3D end;
    this.exclusive =3D exclusive;
  },

  _each: function(iterator) {
    var value =3D this.start;
    while (this.include(value)) {
      iterator(value);
      value =3D value.succ();
    }
  },

  include: function(value) {
    if (value < this.start)
      return false;
    if (this.exclusive)
      return value < this.end;
    return value <=3D this.end;
  }
});

var $R =3D function(start, end, exclusive) {
  return new ObjectRange(start, end, exclusive);
};

var Ajax =3D {
  getTransport: function() {
    return Try.these(
      function() {return new XMLHttpRequest()},
      function() {return new ActiveXObject('Msxml2.XMLHTTP')},
      function() {return new ActiveXObject('Microsoft.XMLHTTP')}
    ) || false;
  },

  activeRequestCount: 0
};

Ajax.Responders =3D {
  responders: [],

  _each: function(iterator) {
    this.responders._each(iterator);
  },

  register: function(responder) {
    if (!this.include(responder))
      this.responders.push(responder);
  },

  unregister: function(responder) {
    this.responders =3D this.responders.without(responder);
  },

  dispatch: function(callback, request, transport, json) {
    this.each(function(responder) {
      if (Object.isFunction(responder[callback])) {
        try {
          responder[callback].apply(responder, [request, transport, =
json]);
        } catch (e) { }
      }
    });
  }
};

Object.extend(Ajax.Responders, Enumerable);

Ajax.Responders.register({
  onCreate:   function() { Ajax.activeRequestCount++ },
  onComplete: function() { Ajax.activeRequestCount-- }
});

Ajax.Base =3D Class.create({
  initialize: function(options) {
    this.options =3D {
      method:       'post',
      asynchronous: true,
      contentType:  'application/x-www-form-urlencoded',
      encoding:     'UTF-8',
      parameters:   '',
      evalJSON:     true,
      evalJS:       true
    };
    Object.extend(this.options, options || { });

    this.options.method =3D this.options.method.toLowerCase();
    if (Object.isString(this.options.parameters))
      this.options.parameters =3D =
this.options.parameters.toQueryParams();
  }
});

Ajax.Request =3D Class.create(Ajax.Base, {
  _complete: false,

  initialize: function($super, url, options) {
    $super(options);
    this.transport =3D Ajax.getTransport();
    this.request(url);
  },

  request: function(url) {
    this.url =3D url;
    this.method =3D this.options.method;
    var params =3D Object.clone(this.options.parameters);

    if (!['get', 'post'].include(this.method)) {
      // simulate other verbs over post
      params['_method'] =3D this.method;
      this.method =3D 'post';
    }

    this.parameters =3D params;

    if (params =3D Object.toQueryString(params)) {
      // when GET, append parameters to URL
      if (this.method =3D=3D 'get')
        this.url +=3D (this.url.include('?') ? '&' : '?') + params;
      else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
        params +=3D '&_=3D';
    }

    try {
      var response =3D new Ajax.Response(this);
      if (this.options.onCreate) this.options.onCreate(response);
      Ajax.Responders.dispatch('onCreate', this, response);

      this.transport.open(this.method.toUpperCase(), this.url,
        this.options.asynchronous);

      if (this.options.asynchronous) =
this.respondToReadyState.bind(this).defer(1);

      this.transport.onreadystatechange =3D =
this.onStateChange.bind(this);
      this.setRequestHeaders();

      this.body =3D this.method =3D=3D 'post' ? (this.options.postBody =
|| params) : null;
      this.transport.send(this.body);

      /* Force Firefox to handle ready state 4 for synchronous requests =
*/
      if (!this.options.asynchronous && this.transport.overrideMimeType)
        this.onStateChange();

    }
    catch (e) {
      this.dispatchException(e);
    }
  },

  onStateChange: function() {
    var readyState =3D this.transport.readyState;
    if (readyState > 1 && !((readyState =3D=3D 4) && this._complete))
      this.respondToReadyState(this.transport.readyState);
  },

  setRequestHeaders: function() {
    var headers =3D {
      'X-Requested-With': 'XMLHttpRequest',
      'X-Prototype-Version': Prototype.Version,
      'Accept': 'text/javascript, text/html, application/xml, text/xml, =
*/*'
    };

    if (this.method =3D=3D 'post') {
      headers['Content-type'] =3D this.options.contentType +
        (this.options.encoding ? '; charset=3D' + this.options.encoding =
: '');

      /* Force "Connection: close" for older Mozilla browsers to work
       * around a bug where XMLHttpRequest sends an incorrect
       * Content-length header. See Mozilla Bugzilla #246651.
       */
      if (this.transport.overrideMimeType &&
          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < =
2005)
            headers['Connection'] =3D 'close';
    }

    // user-defined headers
    if (typeof this.options.requestHeaders =3D=3D 'object') {
      var extras =3D this.options.requestHeaders;

      if (Object.isFunction(extras.push))
        for (var i =3D 0, length =3D extras.length; i < length; i +=3D =
2)
          headers[extras[i]] =3D extras[i+1];
      else
        $H(extras).each(function(pair) { headers[pair.key] =3D =
pair.value });
    }

    for (var name in headers)
      this.transport.setRequestHeader(name, headers[name]);
  },

  success: function() {
    var status =3D this.getStatus();
    return !status || (status >=3D 200 && status < 300);
  },

  getStatus: function() {
    try {
      return this.transport.status || 0;
    } catch (e) { return 0 }
  },

  respondToReadyState: function(readyState) {
    var state =3D Ajax.Request.Events[readyState], response =3D new =
Ajax.Response(this);

    if (state =3D=3D 'Complete') {
      try {
        this._complete =3D true;
        (this.options['on' + response.status]
         || this.options['on' + (this.success() ? 'Success' : =
'Failure')]
         || Prototype.emptyFunction)(response, response.headerJSON);
      } catch (e) {
        this.dispatchException(e);
      }

      var contentType =3D response.getHeader('Content-type');
      if (this.options.evalJS =3D=3D 'force'
          || (this.options.evalJS && contentType
          && =
contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s=
*$/i)))
        this.evalResponse();
    }

    try {
      (this.options['on' + state] || Prototype.emptyFunction)(response, =
response.headerJSON);
      Ajax.Responders.dispatch('on' + state, this, response, =
response.headerJSON);
    } catch (e) {
      this.dispatchException(e);
    }

    if (state =3D=3D 'Complete') {
      // avoid memory leak in MSIE: clean up
      this.transport.onreadystatechange =3D Prototype.emptyFunction;
    }
  },

  getHeader: function(name) {
    try {
      return this.transport.getResponseHeader(name);
    } catch (e) { return null }
  },

  evalResponse: function() {
    try {
      return eval((this.transport.responseText || '').unfilterJSON());
    } catch (e) {
      this.dispatchException(e);
    }
  },

  dispatchException: function(exception) {
    (this.options.onException || Prototype.emptyFunction)(this, =
exception);
    Ajax.Responders.dispatch('onException', this, exception);
  }
});

Ajax.Request.Events =3D
  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

Ajax.Response =3D Class.create({
  initialize: function(request){
    this.request =3D request;
    var transport  =3D this.transport  =3D request.transport,
        readyState =3D this.readyState =3D transport.readyState;

    if((readyState > 2 && !Prototype.Browser.IE) || readyState =3D=3D 4) =
{
      this.status       =3D this.getStatus();
      this.statusText   =3D this.getStatusText();
      this.responseText =3D String.interpret(transport.responseText);
      this.headerJSON   =3D this._getHeaderJSON();
    }

    if(readyState =3D=3D 4) {
      var xml =3D transport.responseXML;
      this.responseXML  =3D xml =3D=3D=3D undefined ? null : xml;
      this.responseJSON =3D this._getResponseJSON();
    }
  },

  status:      0,
  statusText: '',

  getStatus: Ajax.Request.prototype.getStatus,

  getStatusText: function() {
    try {
      return this.transport.statusText || '';
    } catch (e) { return '' }
  },

  getHeader: Ajax.Request.prototype.getHeader,

  getAllHeaders: function() {
    try {
      return this.getAllResponseHeaders();
    } catch (e) { return null }
  },

  getResponseHeader: function(name) {
    return this.transport.getResponseHeader(name);
  },

  getAllResponseHeaders: function() {
    return this.transport.getAllResponseHeaders();
  },

  _getHeaderJSON: function() {
    var json =3D this.getHeader('X-JSON');
    if (!json) return null;
    json =3D decodeURIComponent(escape(json));
    try {
      return json.evalJSON(this.request.options.sanitizeJSON);
    } catch (e) {
      this.request.dispatchException(e);
    }
  },

  _getResponseJSON: function() {
    var options =3D this.request.options;
    if (!options.evalJSON || (options.evalJSON !=3D 'force' &&
      !(this.getHeader('Content-type') || =
'').include('application/json')))
        return null;
    try {
      return this.transport.responseText.evalJSON(options.sanitizeJSON);
    } catch (e) {
      this.request.dispatchException(e);
    }
  }
});

Ajax.Updater =3D Class.create(Ajax.Request, {
  initialize: function($super, container, url, options) {
    this.container =3D {
      success: (container.success || container),
      failure: (container.failure || (container.success ? null : =
container))
    };

    options =3D options || { };
    var onComplete =3D options.onComplete;
    options.onComplete =3D (function(response, param) {
      this.updateContent(response.responseText);
      if (Object.isFunction(onComplete)) onComplete(response, param);
    }).bind(this);

    $super(url, options);
  },

  updateContent: function(responseText) {
    var receiver =3D this.container[this.success() ? 'success' : =
'failure'],
        options =3D this.options;

    if (!options.evalScripts) responseText =3D =
responseText.stripScripts();

    if (receiver =3D $(receiver)) {
      if (options.insertion) {
        if (Object.isString(options.insertion)) {
          var insertion =3D { }; insertion[options.insertion] =3D =
responseText;
          receiver.insert(insertion);
        }
        else options.insertion(receiver, responseText);
      }
      else receiver.update(responseText);
    }

    if (this.success()) {
      if (this.onComplete) this.onComplete.bind(this).defer();
    }
  }
});

Ajax.PeriodicalUpdater =3D Class.create(Ajax.Base, {
  initialize: function($super, container, url, options) {
    $super(options);
    this.onComplete =3D this.options.onComplete;

    this.frequency =3D (this.options.frequency || 2);
    this.decay =3D (this.options.decay || 1);

    this.updater =3D { };
    this.container =3D container;
    this.url =3D url;

    this.start();
  },

  start: function() {
    this.options.onComplete =3D this.updateComplete.bind(this);
    this.onTimerEvent();
  },

  stop: function() {
    this.updater.options.onComplete =3D undefined;
    clearTimeout(this.timer);
    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
  },

  updateComplete: function(response) {
    if (this.options.decay) {
      this.decay =3D (response.responseText =3D=3D this.lastText ?
        this.decay * this.options.decay : 1);

      this.lastText =3D response.responseText;
    }
    this.timer =3D this.onTimerEvent.bind(this).delay(this.decay * =
this.frequency);
  },

  onTimerEvent: function() {
    this.updater =3D new Ajax.Updater(this.container, this.url, =
this.options);
  }
});
function $(element) {
  if (arguments.length > 1) {
    for (var i =3D 0, elements =3D [], length =3D arguments.length; i < =
length; i++)
      elements.push($(arguments[i]));
    return elements;
  }
  if (Object.isString(element))
    element =3D document.getElementById(element);
  return Element.extend(element);
}

if (Prototype.BrowserFeatures.XPath) {
  document._getElementsByXPath =3D function(expression, parentElement) {
    var results =3D [];
    var query =3D document.evaluate(expression, $(parentElement) || =
document,
      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    for (var i =3D 0, length =3D query.snapshotLength; i < length; i++)
      results.push(Element.extend(query.snapshotItem(i)));
    return results;
  };
}

/*-----------------------------------------------------------------------=
---*/

if (!window.Node) var Node =3D { };

if (!Node.ELEMENT_NODE) {
  // DOM level 2 ECMAScript Language Binding
  Object.extend(Node, {
    ELEMENT_NODE: 1,
    ATTRIBUTE_NODE: 2,
    TEXT_NODE: 3,
    CDATA_SECTION_NODE: 4,
    ENTITY_REFERENCE_NODE: 5,
    ENTITY_NODE: 6,
    PROCESSING_INSTRUCTION_NODE: 7,
    COMMENT_NODE: 8,
    DOCUMENT_NODE: 9,
    DOCUMENT_TYPE_NODE: 10,
    DOCUMENT_FRAGMENT_NODE: 11,
    NOTATION_NODE: 12
  });
}

(function() {
  var element =3D this.Element;
  this.Element =3D function(tagName, attributes) {
    attributes =3D attributes || { };
    tagName =3D tagName.toLowerCase();
    var cache =3D Element.cache;
    if (Prototype.Browser.IE && attributes.name) {
      tagName =3D '<' + tagName + ' name=3D"' + attributes.name + '">';
      delete attributes.name;
      return Element.writeAttribute(document.createElement(tagName), =
attributes);
    }
    if (!cache[tagName]) cache[tagName] =3D =
Element.extend(document.createElement(tagName));
    return Element.writeAttribute(cache[tagName].cloneNode(false), =
attributes);
  };
  Object.extend(this.Element, element || { });
}).call(window);

Element.cache =3D { };

Element.Methods =3D {
  visible: function(element) {
    return $(element).style.display !=3D 'none';
  },

  toggle: function(element) {
    element =3D $(element);
    Element[Element.visible(element) ? 'hide' : 'show'](element);
    return element;
  },

  hide: function(element) {
    $(element).style.display =3D 'none';
    return element;
  },

  show: function(element) {
    $(element).style.display =3D '';
    return element;
  },

  remove: function(element) {
    element =3D $(element);
    element.parentNode.removeChild(element);
    return element;
  },

  update: function(element, content) {
    element =3D $(element);
    if (content && content.toElement) content =3D content.toElement();
    if (Object.isElement(content)) return =
element.update().insert(content);
    content =3D Object.toHTML(content);
    element.innerHTML =3D content.stripScripts();
    content.evalScripts.bind(content).defer();
    return element;
  },

  replace: function(element, content) {
    element =3D $(element);
    if (content && content.toElement) content =3D content.toElement();
    else if (!Object.isElement(content)) {
      content =3D Object.toHTML(content);
      var range =3D element.ownerDocument.createRange();
      range.selectNode(element);
      content.evalScripts.bind(content).defer();
      content =3D =
range.createContextualFragment(content.stripScripts());
    }
    element.parentNode.replaceChild(content, element);
    return element;
  },

  insert: function(element, insertions) {
    element =3D $(element);

    if (Object.isString(insertions) || Object.isNumber(insertions) ||
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))
          insertions =3D {bottom:insertions};

    var content, t, range;

    for (position in insertions) {
      content  =3D insertions[position];
      position =3D position.toLowerCase();
      t =3D Element._insertionTranslations[position];

      if (content && content.toElement) content =3D content.toElement();
      if (Object.isElement(content)) {
        t.insert(element, content);
        continue;
      }

      content =3D Object.toHTML(content);

      range =3D element.ownerDocument.createRange();
      t.initializeRange(element, range);
      t.insert(element, =
range.createContextualFragment(content.stripScripts()));

      content.evalScripts.bind(content).defer();
    }

    return element;
  },

  wrap: function(element, wrapper, attributes) {
    element =3D $(element);
    if (Object.isElement(wrapper))
      $(wrapper).writeAttribute(attributes || { });
    else if (Object.isString(wrapper)) wrapper =3D new Element(wrapper, =
attributes);
    else wrapper =3D new Element('div', wrapper);
    if (element.parentNode)
      element.parentNode.replaceChild(wrapper, element);
    wrapper.appendChild(element);
    return wrapper;
  },

  inspect: function(element) {
    element =3D $(element);
    var result =3D '<' + element.tagName.toLowerCase();
    $H({'id': 'id', 'className': 'class'}).each(function(pair) {
      var property =3D pair.first(), attribute =3D pair.last();
      var value =3D (element[property] || '').toString();
      if (value) result +=3D ' ' + attribute + '=3D' + =
value.inspect(true);
    });
    return result + '>';
  },

  recursivelyCollect: function(element, property) {
    element =3D $(element);
    var elements =3D [];
    while (element =3D element[property])
      if (element.nodeType =3D=3D 1)
        elements.push(Element.extend(element));
    return elements;
  },

  ancestors: function(element) {
    return $(element).recursivelyCollect('parentNode');
  },

  descendants: function(element) {
    return =
$A($(element).getElementsByTagName('*')).each(Element.extend);
  },

  firstDescendant: function(element) {
    element =3D $(element).firstChild;
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;
    return $(element);
  },

  immediateDescendants: function(element) {
    if (!(element =3D $(element).firstChild)) return [];
    while (element && element.nodeType !=3D 1) element =3D =
element.nextSibling;
    if (element) return [element].concat($(element).nextSiblings());
    return [];
  },

  previousSiblings: function(element) {
    return $(element).recursivelyCollect('previousSibling');
  },

  nextSiblings: function(element) {
    return $(element).recursivelyCollect('nextSibling');
  },

  siblings: function(element) {
    element =3D $(element);
    return =
element.previousSiblings().reverse().concat(element.nextSiblings());
  },

  match: function(element, selector) {
    if (Object.isString(selector))
      selector =3D new Selector(selector);
    return selector.match($(element));
  },

  up: function(element, expression, index) {
    element =3D $(element);
    if (arguments.length =3D=3D 1) return $(element.parentNode);
    var ancestors =3D element.ancestors();
    return expression ? Selector.findElement(ancestors, expression, =
index) :
      ancestors[index || 0];
  },

  down: function(element, expression, index) {
    element =3D $(element);
    if (arguments.length =3D=3D 1) return element.firstDescendant();
    var descendants =3D element.descendants();
    return expression ? Selector.findElement(descendants, expression, =
index) :
      descendants[index || 0];
  },

  previous: function(element, expression, index) {
    element =3D $(element);
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.previousElementSibling(element));
    var previousSiblings =3D element.previousSiblings();
    return expression ? Selector.findElement(previousSiblings, =
expression, index) :
      previousSiblings[index || 0];
  },

  next: function(element, expression, index) {
    element =3D $(element);
    if (arguments.length =3D=3D 1) return =
$(Selector.handlers.nextElementSibling(element));
    var nextSiblings =3D element.nextSiblings();
    return expression ? Selector.findElement(nextSiblings, expression, =
index) :
      nextSiblings[index || 0];
  },

  select: function() {
    var args =3D $A(arguments), element =3D $(args.shift());
    return Selector.findChildElements(element, args);
  },

  adjacent: function() {
    var args =3D $A(arguments), element =3D $(args.shift());
    return Selector.findChildElements(element.parentNode, =
args).without(element);
  },

  identify: function(element) {
    element =3D $(element);
    var id =3D element.readAttribute('id'), self =3D arguments.callee;
    if (id) return id;
    do { id =3D 'anonymous_element_' + self.counter++ } while ($(id));
    element.writeAttribute('id', id);
    return id;
  },

  readAttribute: function(element, name) {
    element =3D $(element);
    if (Prototype.Browser.IE) {
      var t =3D Element._attributeTranslations.read;
      if (t.values[name]) return t.values[name](element, name);
      if (t.names[name]) name =3D t.names[name];
      if (name.include(':')) {
        return (!element.attributes || !element.attributes[name]) ? null =
:
         element.attributes[name].value;
      }
    }
    return element.getAttribute(name);
  },

  writeAttribute: function(element, name, value) {
    element =3D $(element);
    var attributes =3D { }, t =3D Element._attributeTranslations.write;

    if (typeof name =3D=3D 'object') attributes =3D name;
    else attributes[name] =3D value =3D=3D=3D undefined ? true : value;

    for (var attr in attributes) {
      var name =3D t.names[attr] || attr, value =3D attributes[attr];
      if (t.values[attr]) name =3D t.values[attr](element, value);
      if (value =3D=3D=3D false || value =3D=3D=3D null)
        element.removeAttribute(name);
      else if (value =3D=3D=3D true)
        element.setAttribute(name, name);
      else element.setAttribute(name, value);
    }
    return element;
  },

  getHeight: function(element) {
    return $(element).getDimensions().height;
  },

  getWidth: function(element) {
    return $(element).getDimensions().width;
  },

  classNames: function(element) {
    return new Element.ClassNames(element);
  },

  hasClassName: function(element, className) {
    if (!(element =3D $(element))) return;
    var elementClassName =3D element.className;
    return (elementClassName.length > 0 && (elementClassName =3D=3D =
className ||
      new RegExp("(^|\\s)" + className + =
"(\\s|$)").test(elementClassName)));
  },

  addClassName: function(element, className) {
    if (!(element =3D $(element))) return;
    if (!element.hasClassName(className))
      element.className +=3D (element.className ? ' ' : '') + className;
    return element;
  },

  removeClassName: function(element, className) {
    if (!(element =3D $(element))) return;
    element.className =3D element.className.replace(
      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
    return element;
  },

  toggleClassName: function(element, className) {
    if (!(element =3D $(element))) return;
    return element[element.hasClassName(className) ?
      'removeClassName' : 'addClassName'](className);
  },

  // removes whitespace-only text node children
  cleanWhitespace: function(element) {
    element =3D $(element);
    var node =3D element.firstChild;
    while (node) {
      var nextNode =3D node.nextSibling;
      if (node.nodeType =3D=3D 3 && !/\S/.test(node.nodeValue))
        element.removeChild(node);
      node =3D nextNode;
    }
    return element;
  },

  empty: function(element) {
    return $(element).innerHTML.blank();
  },

  descendantOf: function(element, ancestor) {
    element =3D $(element), ancestor =3D $(ancestor);

    if (element.compareDocumentPosition)
      return (element.compareDocumentPosition(ancestor) & 8) =3D=3D=3D =
8;

    if (element.sourceIndex && !Prototype.Browser.Opera) {
      var e =3D element.sourceIndex, a =3D ancestor.sourceIndex,
       nextAncestor =3D ancestor.nextSibling;
      if (!nextAncestor) {
        do { ancestor =3D ancestor.parentNode; }
        while (!(nextAncestor =3D ancestor.nextSibling) && =
ancestor.parentNode);
      }
      if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
    }

    while (element =3D element.parentNode)
      if (element =3D=3D ancestor) return true;
    return false;
  },

  scrollTo: function(element) {
    element =3D $(element);
    var pos =3D element.cumulativeOffset();
    window.scrollTo(pos[0], pos[1]);
    return element;
  },

  getStyle: function(element, style) {
    element =3D $(element);
    style =3D style =3D=3D 'float' ? 'cssFloat' : style.camelize();
    var value =3D element.style[style];
    if (!value) {
      var css =3D document.defaultView.getComputedStyle(element, null);
      value =3D css ? css[style] : null;
    }
    if (style =3D=3D 'opacity') return value ? parseFloat(value) : 1.0;
    return value =3D=3D 'auto' ? null : value;
  },

  getOpacity: function(element) {
    return $(element).getStyle('opacity');
  },

  setStyle: function(element, styles) {
    element =3D $(element);
    var elementStyle =3D element.style, match;
    if (Object.isString(styles)) {
      element.style.cssText +=3D ';' + styles;
      return styles.include('opacity') ?
        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : =
element;
    }
    for (var property in styles)
      if (property =3D=3D 'opacity') =
element.setOpacity(styles[property]);
      else
        elementStyle[(property =3D=3D 'float' || property =3D=3D =
'cssFloat') ?
          (elementStyle.styleFloat =3D=3D=3D undefined ? 'cssFloat' : =
'styleFloat') :
            property] =3D styles[property];

    return element;
  },

  setOpacity: function(element, value) {
    element =3D $(element);
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :
      (value < 0.00001) ? 0 : value;
    return element;
  },

  getDimensions: function(element) {
    element =3D $(element);
    var display =3D $(element).getStyle('display');
    if (display !=3D 'none' && display !=3D null) // Safari bug
      return {width: element.offsetWidth, height: element.offsetHeight};

    // All *Width and *Height properties give 0 on elements with display =
none,
    // so enable the element temporarily
    var els =3D element.style;
    var originalVisibility =3D els.visibility;
    var originalPosition =3D els.position;
    var originalDisplay =3D els.display;
    els.visibility =3D 'hidden';
    els.position =3D 'absolute';
    els.display =3D 'block';
    var originalWidth =3D element.clientWidth;
    var originalHeight =3D element.clientHeight;
    els.display =3D originalDisplay;
    els.position =3D originalPosition;
    els.visibility =3D originalVisibility;
    return {width: originalWidth, height: originalHeight};
  },

  makePositioned: function(element) {
    element =3D $(element);
    var pos =3D Element.getStyle(element, 'position');
    if (pos =3D=3D 'static' || !pos) {
      element._madePositioned =3D true;
      element.style.position =3D 'relative';
      // Opera returns the offset relative to the positioning context, =
when an
      // element is position relative but top and left have not been =
defined
      if (window.opera) {
        element.style.top =3D 0;
        element.style.left =3D 0;
      }
    }
    return element;
  },

  undoPositioned: function(element) {
    element =3D $(element);
    if (element._madePositioned) {
      element._madePositioned =3D undefined;
      element.style.position =3D
        element.style.top =3D
        element.style.left =3D
        element.style.bottom =3D
        element.style.right =3D '';
    }
    return element;
  },

  makeClipping: function(element) {
    element =3D $(element);
    if (element._overflow) return element;
    element._overflow =3D Element.getStyle(element, 'overflow') || =
'auto';
    if (element._overflow !=3D=3D 'hidden')
      element.style.overflow =3D 'hidden';
    return element;
  },

  undoClipping: function(element) {
    element =3D $(element);
    if (!element._overflow) return element;
    element.style.overflow =3D element._overflow =3D=3D 'auto' ? '' : =
element._overflow;
    element._overflow =3D null;
    return element;
  },

  cumulativeOffset: function(element) {
    var valueT =3D 0, valueL =3D 0;
    do {
      valueT +=3D element.offsetTop  || 0;
      valueL +=3D element.offsetLeft || 0;
      element =3D element.offsetParent;
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  positionedOffset: function(element) {
    var valueT =3D 0, valueL =3D 0;
    do {
      valueT +=3D element.offsetTop  || 0;
      valueL +=3D element.offsetLeft || 0;
      element =3D element.offsetParent;
      if (element) {
        if (element.tagName =3D=3D 'BODY') break;
        var p =3D Element.getStyle(element, 'position');
        if (p =3D=3D 'relative' || p =3D=3D 'absolute') break;
      }
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  absolutize: function(element) {
    element =3D $(element);
    if (element.getStyle('position') =3D=3D 'absolute') return;
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.

    var offsets =3D element.positionedOffset();
    var top     =3D offsets[1];
    var left    =3D offsets[0];
    var width   =3D element.clientWidth;
    var height  =3D element.clientHeight;

    element._originalLeft   =3D left - parseFloat(element.style.left  || =
0);
    element._originalTop    =3D top  - parseFloat(element.style.top || =
0);
    element._originalWidth  =3D element.style.width;
    element._originalHeight =3D element.style.height;

    element.style.position =3D 'absolute';
    element.style.top    =3D top + 'px';
    element.style.left   =3D left + 'px';
    element.style.width  =3D width + 'px';
    element.style.height =3D height + 'px';
    return element;
  },

  relativize: function(element) {
    element =3D $(element);
    if (element.getStyle('position') =3D=3D 'relative') return;
    // Position.prepare(); // To be done manually by Scripty when it =
needs it.

    element.style.position =3D 'relative';
    var top  =3D parseFloat(element.style.top  || 0) - =
(element._originalTop || 0);
    var left =3D parseFloat(element.style.left || 0) - =
(element._originalLeft || 0);

    element.style.top    =3D top + 'px';
    element.style.left   =3D left + 'px';
    element.style.height =3D element._originalHeight;
    element.style.width  =3D element._originalWidth;
    return element;
  },

  cumulativeScrollOffset: function(element) {
    var valueT =3D 0, valueL =3D 0;
    do {
      valueT +=3D element.scrollTop  || 0;
      valueL +=3D element.scrollLeft || 0;
      element =3D element.parentNode;
    } while (element);
    return Element._returnOffset(valueL, valueT);
  },

  getOffsetParent: function(element) {
    if (element.offsetParent) return $(element.offsetParent);
    if (element =3D=3D document.body) return $(element);

    while ((element =3D element.parentNode) && element !=3D =
document.body)
      if (Element.getStyle(element, 'position') !=3D 'static')
        return $(element);

    return $(document.body);
  },

  viewportOffset: function(forElement) {
    var valueT =3D 0, valueL =3D 0;

    var element =3D forElement;
    do {
      valueT +=3D element.offsetTop  || 0;
      valueL +=3D element.offsetLeft || 0;

      // Safari fix
      if (element.offsetParent =3D=3D document.body &&
        Element.getStyle(element, 'position') =3D=3D 'absolute') break;

    } while (element =3D element.offsetParent);

    element =3D forElement;
    do {
      if (!Prototype.Browser.Opera || element.tagName =3D=3D 'BODY') {
        valueT -=3D element.scrollTop  || 0;
        valueL -=3D element.scrollLeft || 0;
      }
    } while (element =3D element.parentNode);

    return Element._returnOffset(valueL, valueT);
  },

  clonePosition: function(element, source) {
    var options =3D Object.extend({
      setLeft:    true,
      setTop:     true,
      setWidth:   true,
      setHeight:  true,
      offsetTop:  0,
      offsetLeft: 0
    }, arguments[2] || { });

    // find page position of source
    source =3D $(source);
    var p =3D source.viewportOffset();

    // find coordinate system to use
    element =3D $(element);
    var delta =3D [0, 0];
    var parent =3D null;
    // delta [0,0] will do fine with position: fixed elements,
    // position:absolute needs offsetParent deltas
    if (Element.getStyle(element, 'position') =3D=3D 'absolute') {
      parent =3D element.getOffsetParent();
      delta =3D parent.viewportOffset();
    }

    // correct by body offsets (fixes Safari)
    if (parent =3D=3D document.body) {
      delta[0] -=3D document.body.offsetLeft;
      delta[1] -=3D document.body.offsetTop;
    }

    // set position
    if (options.setLeft)   element.style.left  =3D (p[0] - delta[0] + =
options.offsetLeft) + 'px';
    if (options.setTop)    element.style.top   =3D (p[1] - delta[1] + =
options.offsetTop) + 'px';
    if (options.setWidth)  element.style.width =3D source.offsetWidth + =
'px';
    if (options.setHeight) element.style.height =3D source.offsetHeight =
+ 'px';
    return element;
  }
};

Element.Methods.identify.counter =3D 1;

Object.extend(Element.Methods, {
  getElementsBySelector: Element.Methods.select,
  childElements: Element.Methods.immediateDescendants
});

Element._attributeTranslations =3D {
  write: {
    names: {
      className: 'class',
      htmlFor:   'for'
    },
    values: { }
  }
};


if (!document.createRange || Prototype.Browser.Opera) {
  Element.Methods.insert =3D function(element, insertions) {
    element =3D $(element);

    if (Object.isString(insertions) || Object.isNumber(insertions) ||
        Object.isElement(insertions) || (insertions && =
(insertions.toElement || insertions.toHTML)))
          insertions =3D { bottom: insertions };

    var t =3D Element._insertionTranslations, content, position, pos, =
tagName;

    for (position in insertions) {
      content  =3D insertions[position];
      position =3D position.toLowerCase();
      pos      =3D t[position];

      if (content && content.toElement) content =3D content.toElement();
      if (Object.isElement(content)) {
        pos.insert(element, content);
        continue;
      }

      content =3D Object.toHTML(content);
      tagName =3D ((position =3D=3D 'before' || position =3D=3D 'after')
        ? element.parentNode : element).tagName.toUpperCase();

      if (t.tags[tagName]) {
        var fragments =3D =
Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());
        if (position =3D=3D 'top' || position =3D=3D 'after') =
fragments.reverse();
        fragments.each(pos.insert.curry(element));
      }
      else element.insertAdjacentHTML(pos.adjacency, =
content.stripScripts());

      content.evalScripts.bind(content).defer();
    }

    return element;
  };
}

if (Prototype.Browser.Opera) {
  Element.Methods._getStyle =3D Element.Methods.getStyle;
  Element.Methods.getStyle =3D function(element, style) {
    switch(style) {
      case 'left':
      case 'top':
      case 'right':
      case 'bottom':
        if (Element._getStyle(element, 'position') =3D=3D 'static') =
return null;
      default: return Element._getStyle(element, style);
    }
  };
  Element.Methods._readAttribute =3D Element.Methods.readAttribute;
  Element.Methods.readAttribute =3D function(element, attribute) {
    if (attribute =3D=3D 'title') return element.title;
    return Element._readAttribute(element, attribute);
  };
}

else if (Prototype.Browser.IE) {
  $w('positionedOffset getOffsetParent =
viewportOffset').each(function(method) {
    Element.Methods[method] =3D Element.Methods[method].wrap(
      function(proceed, element) {
        element =3D $(element);
        var position =3D element.getStyle('position');
        if (position !=3D 'static') return proceed(element);
        element.setStyle({ position: 'relative' });
        var value =3D proceed(element);
        element.setStyle({ position: position });
        return value;
      }
    );
  });

  Element.Methods.getStyle =3D function(element, style) {
    element =3D $(element);
    style =3D (style =3D=3D 'float' || style =3D=3D 'cssFloat') ? =
'styleFloat' : style.camelize();
    var value =3D element.style[style];
    if (!value && element.currentStyle) value =3D =
element.currentStyle[style];

    if (style =3D=3D 'opacity') {
      if (value =3D (element.getStyle('filter') || =
'').match(/alpha\(opacity=3D(.*)\)/))
        if (value[1]) return parseFloat(value[1]) / 100;
      return 1.0;
    }

    if (value =3D=3D 'auto') {
      if ((style =3D=3D 'width' || style =3D=3D 'height') && =
(element.getStyle('display') !=3D 'none'))
        return element['offset' + style.capitalize()] + 'px';
      return null;
    }
    return value;
  };

  Element.Methods.setOpacity =3D function(element, value) {
    function stripAlpha(filter){
      return filter.replace(/alpha\([^\)]*\)/gi,'');
    }
    element =3D $(element);
    var currentStyle =3D element.currentStyle;
    if ((currentStyle && !currentStyle.hasLayout) ||
      (!currentStyle && element.style.zoom =3D=3D 'normal'))
        element.style.zoom =3D 1;

    var filter =3D element.getStyle('filter'), style =3D element.style;
    if (value =3D=3D 1 || value =3D=3D=3D '') {
      (filter =3D stripAlpha(filter)) ?
        style.filter =3D filter : style.removeAttribute('filter');
      return element;
    } else if (value < 0.00001) value =3D 0;
    style.filter =3D stripAlpha(filter) +
      'alpha(opacity=3D' + (value * 100) + ')';
    return element;
  };

  Element._attributeTranslations =3D {
    read: {
      names: {
        'class': 'className',
        'for':   'htmlFor'
      },
      values: {
        _getAttr: function(element, attribute) {
          return element.getAttribute(attribute, 2);
        },
        _getAttrNode: function(element, attribute) {
          var node =3D element.getAttributeNode(attribute);
          return node ? node.value : "";
        },
        _getEv: function(element, attribute) {
          var attribute =3D element.getAttribute(attribute);
          return attribute ? attribute.toString().slice(23, -2) : null;
        },
        _flag: function(element, attribute) {
          return $(element).hasAttribute(attribute) ? attribute : null;
        },
        style: function(element) {
          return element.style.cssText.toLowerCase();
        },
        title: function(element) {
          return element.title;
        }
      }
    }
  };

  Element._attributeTranslations.write =3D {
    names: Object.clone(Element._attributeTranslations.read.names),
    values: {
      checked: function(element, value) {
        element.checked =3D !!value;
      },

      style: function(element, value) {
        element.style.cssText =3D value ? value : '';
      }
    }
  };

  Element._attributeTranslations.has =3D {};

  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +
      'encType maxLength readOnly longDesc').each(function(attr) {
    Element._attributeTranslations.write.names[attr.toLowerCase()] =3D =
attr;
    Element._attributeTranslations.has[attr.toLowerCase()] =3D attr;
  });

  (function(v) {
    Object.extend(v, {
      href:        v._getAttr,
      src:         v._getAttr,
      type:        v._getAttr,
      action:      v._getAttrNode,
      disabled:    v._flag,
      checked:     v._flag,
      readonly:    v._flag,
      multiple:    v._flag,
      onload:      v._getEv,
      onunload:    v._getEv,
      onclick:     v._getEv,
      ondblclick:  v._getEv,
      onmousedown: v._getEv,
      onmouseup:   v._getEv,
      onmouseover: v._getEv,
      onmousemove: v._getEv,
      onmouseout:  v._getEv,
      onfocus:     v._getEv,
      onblur:      v._getEv,
      onkeypress:  v._getEv,
      onkeydown:   v._getEv,
      onkeyup:     v._getEv,
      onsubmit:    v._getEv,
      onreset:     v._getEv,
      onselect:    v._getEv,
      onchange:    v._getEv
    });
  })(Element._attributeTranslations.read.values);
}

else if (Prototype.Browser.Gecko && =
/rv:1\.8\.0/.test(navigator.userAgent)) {
  Element.Methods.setOpacity =3D function(element, value) {
    element =3D $(element);
    element.style.opacity =3D (value =3D=3D 1) ? 0.999999 :
      (value =3D=3D=3D '') ? '' : (value < 0.00001) ? 0 : value;
    return element;
  };
}

else if (Prototype.Browser.WebKit) {
  Element.Methods.setOpacity =3D function(element, value) {
    element =3D $(element);
    element.style.opacity =3D (value =3D=3D 1 || value =3D=3D=3D '') ? =
'' :
      (value < 0.00001) ? 0 : value;

    if (value =3D=3D 1)
      if(element.tagName =3D=3D 'IMG' && element.width) {
        element.width++; element.width--;
      } else try {
        var n =3D document.createTextNode(' ');
        element.appendChild(n);
        element.removeChild(n);
      } catch (e) { }

    return element;
  };

  // Safari returns margins on body which is incorrect if the child is =
absolutely
  // positioned.  For performance reasons, redefine =
Position.cumulativeOffset for
  // KHTML/WebKit only.
  Element.Methods.cumulativeOffset =3D function(element) {
    var valueT =3D 0, valueL =3D 0;
    do {
      valueT +=3D element.offsetTop  || 0;
      valueL +=3D element.offsetLeft || 0;
      if (element.offsetParent =3D=3D document.body)
        if (Element.getStyle(element, 'position') =3D=3D 'absolute') =
break;

      element =3D element.offsetParent;
    } while (element);

    return Element._returnOffset(valueL, valueT);
  };
}

if (Prototype.Browser.IE || Prototype.Browser.Opera) {
  // IE and Opera are missing .innerHTML support for TABLE-related and =
SELECT elements
  Element.Methods.update =3D function(element, content) {
    element =3D $(element);

    if (content && content.toElement) content =3D content.toElement();
    if (Object.isElement(content)) return =
element.update().insert(content);

    content =3D Object.toHTML(content);
    var tagName =3D element.tagName.toUpperCase();

    if (tagName in Element._insertionTranslations.tags) {
      $A(element.childNodes).each(function(node) { =
element.removeChild(node) });
      Element._getContentFromAnonymousElement(tagName, =
content.stripScripts())
        .each(function(node) { element.appendChild(node) });
    }
    else element.innerHTML =3D content.stripScripts();

    content.evalScripts.bind(content).defer();
    return element;
  };
}

if (document.createElement('div').outerHTML) {
  Element.Methods.replace =3D function(element, content) {
    element =3D $(element);

    if (content && content.toElement) content =3D content.toElement();
    if (Object.isElement(content)) {
      element.parentNode.replaceChild(content, element);
      return element;
    }

    content =3D Object.toHTML(content);
    var parent =3D element.parentNode, tagName =3D =
parent.tagName.toUpperCase();

    if (Element._insertionTranslations.tags[tagName]) {
      var nextSibling =3D element.next();
      var fragments =3D Element._getContentFromAnonymousElement(tagName, =
content.stripScripts());
      parent.removeChild(element);
      if (nextSibling)
        fragments.each(function(node) { parent.insertBefore(node, =
nextSibling) });
      else
        fragments.each(function(node) { parent.appendChild(node) });
    }
    else element.outerHTML =3D content.stripScripts();

    content.evalScripts.bind(content).defer();
    return element;
  };
}

Element._returnOffset =3D function(l, t) {
  var result =3D [l, t];
  result.left =3D l;
  result.top =3D t;
  return result;
};

Element._getContentFromAnonymousElement =3D function(tagName, html) {
  var div =3D new Element('div'), t =3D =
Element._insertionTranslations.tags[tagName];
  div.innerHTML =3D t[0] + html + t[1];
  t[2].times(function() { div =3D div.firstChild });
  return $A(div.childNodes);
};

Element._insertionTranslations =3D {
  before: {
    adjacency: 'beforeBegin',
    insert: function(element, node) {
      element.parentNode.insertBefore(node, element);
    },
    initializeRange: function(element, range) {
      range.setStartBefore(element);
    }
  },
  top: {
    adjacency: 'afterBegin',
    insert: function(element, node) {
      element.insertBefore(node, element.firstChild);
    },
    initializeRange: function(element, range) {
      range.selectNodeContents(element);
      range.collapse(true);
    }
  },
  bottom: {
    adjacency: 'beforeEnd',
    insert: function(element, node) {
      element.appendChild(node);
    }
  },
  after: {
    adjacency: 'afterEnd',
    insert: function(element, node) {
      element.parentNode.insertBefore(node, element.nextSibling);
    },
    initializeRange: function(element, range) {
      range.setStartAfter(element);
    }
  },
  tags: {
    TABLE:  ['<table>',                '</table>',                   1],
    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],
    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],
    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],
    SELECT: ['<select>',               '</select>',                  1]
  }
};

(function() {
  this.bottom.initializeRange =3D this.top.initializeRange;
  Object.extend(this.tags, {
    THEAD: this.tags.TBODY,
    TFOOT: this.tags.TBODY,
    TH:    this.tags.TD
  });
}).call(Element._insertionTranslations);

Element.Methods.Simulated =3D {
  hasAttribute: function(element, attribute) {
    attribute =3D Element._attributeTranslations.has[attribute] || =
attribute;
    var node =3D $(element).getAttributeNode(attribute);
    return node && node.specified;
  }
};

Element.Methods.ByTag =3D { };

Object.extend(Element, Element.Methods);

if (!Prototype.BrowserFeatures.ElementExtensions &&
    document.createElement('div').__proto__) {
  window.HTMLElement =3D { };
  window.HTMLElement.prototype =3D =
document.createElement('div').__proto__;
  Prototype.BrowserFeatures.ElementExtensions =3D true;
}

Element.extend =3D (function() {
  if (Prototype.BrowserFeatures.SpecificElementExtensions)
    return Prototype.K;

  var Methods =3D { }, ByTag =3D Element.Methods.ByTag;

  var extend =3D Object.extend(function(element) {
    if (!element || element._extendedByPrototype ||
        element.nodeType !=3D 1 || element =3D=3D window) return =
element;

    var methods =3D Object.clone(Methods),
      tagName =3D element.tagName, property, value;

    // extend methods for specific tags
    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);

    for (property in methods) {
      value =3D methods[property];
      if (Object.isFunction(value) && !(property in element))
        element[property] =3D value.methodize();
    }

    element._extendedByPrototype =3D Prototype.emptyFunction;
    return element;

  }, {
    refresh: function() {
      // extend methods for all tags (Safari doesn't need this)
      if (!Prototype.BrowserFeatures.ElementExtensions) {
        Object.extend(Methods, Element.Methods);
        Object.extend(Methods, Element.Methods.Simulated);
      }
    }
  });

  extend.refresh();
  return extend;
})();

Element.hasAttribute =3D function(element, attribute) {
  if (element.hasAttribute) return element.hasAttribute(attribute);
  return Element.Methods.Simulated.hasAttribute(element, attribute);
};

Element.addMethods =3D function(methods) {
  var F =3D Prototype.BrowserFeatures, T =3D Element.Methods.ByTag;

  if (!methods) {
    Object.extend(Form, Form.Methods);
    Object.extend(Form.Element, Form.Element.Methods);
    Object.extend(Element.Methods.ByTag, {
      "FORM":     Object.clone(Form.Methods),
      "INPUT":    Object.clone(Form.Element.Methods),
      "SELECT":   Object.clone(Form.Element.Methods),
      "TEXTAREA": Object.clone(Form.Element.Methods)
    });
  }

  if (arguments.length =3D=3D 2) {
    var tagName =3D methods;
    methods =3D arguments[1];
  }

  if (!tagName) Object.extend(Element.Methods, methods || { });
  else {
    if (Object.isArray(tagName)) tagName.each(extend);
    else extend(tagName);
  }

  function extend(tagName) {
    tagName =3D tagName.toUpperCase();
    if (!Element.Methods.ByTag[tagName])
      Element.Methods.ByTag[tagName] =3D { };
    Object.extend(Element.Methods.ByTag[tagName], methods);
  }

  function copy(methods, destination, onlyIfAbsent) {
    onlyIfAbsent =3D onlyIfAbsent || false;
    for (var property in methods) {
      var value =3D methods[property];
      if (!Object.isFunction(value)) continue;
      if (!onlyIfAbsent || !(property in destination))
        destination[property] =3D value.methodize();
    }
  }

  function findDOMClass(tagName) {
    var klass;
    var trans =3D {
      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",
      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": =
"DList",
      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": =
"Heading",
      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",
      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", =
"CAPTION":
      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", =
"THEAD":
      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", =
"TR":
      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":
      "FrameSet", "IFRAME": "IFrame"
    };
    if (trans[tagName]) klass =3D 'HTML' + trans[tagName] + 'Element';
    if (window[klass]) return window[klass];
    klass =3D 'HTML' + tagName + 'Element';
    if (window[klass]) return window[klass];
    klass =3D 'HTML' + tagName.capitalize() + 'Element';
    if (window[klass]) return window[klass];

    window[klass] =3D { };
    window[klass].prototype =3D =
document.createElement(tagName).__proto__;
    return window[klass];
  }

  if (F.ElementExtensions) {
    copy(Element.Methods, HTMLElement.prototype);
    copy(Element.Methods.Simulated, HTMLElement.prototype, true);
  }

  if (F.SpecificElementExtensions) {
    for (var tag in Element.Methods.ByTag) {
      var klass =3D findDOMClass(tag);
      if (Object.isUndefined(klass)) continue;
      copy(T[tag], klass.prototype);
    }
  }

  Object.extend(Element, Element.Methods);
  delete Element.ByTag;

  if (Element.extend.refresh) Element.extend.refresh();
  Element.cache =3D { };
};

document.viewport =3D {
  getDimensions: function() {
    var dimensions =3D { };
    $w('width height').each(function(d) {
      var D =3D d.capitalize();
      dimensions[d] =3D self['inner' + D] ||
       (document.documentElement['client' + D] || document.body['client' =
+ D]);
    });
    return dimensions;
  },

  getWidth: function() {
    return this.getDimensions().width;
  },

  getHeight: function() {
    return this.getDimensions().height;
  },

  getScrollOffsets: function() {
    return Element._returnOffset(
      window.pageXOffset || document.documentElement.scrollLeft || =
document.body.scrollLeft,
      window.pageYOffset || document.documentElement.scrollTop || =
document.body.scrollTop);
  }
};
/* Portions of the Selector class are derived from Jack Slocum=E2=80=99s =
DomQuery,
 * part of YUI-Ext version 0.40, distributed under the terms of an =
MIT-style
 * license.  Please see http://www.yui-ext.com/ for more information. */

var Selector =3D Class.create({
  initialize: function(expression) {
    this.expression =3D expression.strip();
    this.compileMatcher();
  },

  compileMatcher: function() {
    // Selectors with namespaced attributes can't use the XPath version
    if (Prototype.BrowserFeatures.XPath && =
!(/(\[[\w-]*?:|:checked)/).test(this.expression))
      return this.compileXPathMatcher();

    var e =3D this.expression, ps =3D Selector.patterns, h =3D =
Selector.handlers,
        c =3D Selector.criteria, le, p, m;

    if (Selector._cache[e]) {
      this.matcher =3D Selector._cache[e];
      return;
    }

    this.matcher =3D ["this.matcher =3D function(root) {",
                    "var r =3D root, h =3D Selector.handlers, c =3D =
false, n;"];

    while (e && le !=3D e && (/\S/).test(e)) {
      le =3D e;
      for (var i in ps) {
        p =3D ps[i];
        if (m =3D e.match(p)) {
          this.matcher.push(Object.isFunction(c[i]) ? c[i](m) :
    	      new Template(c[i]).evaluate(m));
          e =3D e.replace(m[0], '');
          break;
        }
      }
    }

    this.matcher.push("return h.unique(n);\n}");
    eval(this.matcher.join('\n'));
    Selector._cache[this.expression] =3D this.matcher;
  },

  compileXPathMatcher: function() {
    var e =3D this.expression, ps =3D Selector.patterns,
        x =3D Selector.xpath, le, m;

    if (Selector._cache[e]) {
      this.xpath =3D Selector._cache[e]; return;
    }

    this.matcher =3D ['.//*'];
    while (e && le !=3D e && (/\S/).test(e)) {
      le =3D e;
      for (var i in ps) {
        if (m =3D e.match(ps[i])) {
          this.matcher.push(Object.isFunction(x[i]) ? x[i](m) :
            new Template(x[i]).evaluate(m));
          e =3D e.replace(m[0], '');
          break;
        }
      }
    }

    this.xpath =3D this.matcher.join('');
    Selector._cache[this.expression] =3D this.xpath;
  },

  findElements: function(root) {
    root =3D root || document;
    if (this.xpath) return document._getElementsByXPath(this.xpath, =
root);
    return this.matcher(root);
  },

  match: function(element) {
    this.tokens =3D [];

    var e =3D this.expression, ps =3D Selector.patterns, as =3D =
Selector.assertions;
    var le, p, m;

    while (e && le !=3D=3D e && (/\S/).test(e)) {
      le =3D e;
      for (var i in ps) {
        p =3D ps[i];
        if (m =3D e.match(p)) {
          // use the Selector.assertions methods unless the selector
          // is too complex.
          if (as[i]) {
            this.tokens.push([i, Object.clone(m)]);
            e =3D e.replace(m[0], '');
          } else {
            // reluctantly do a document-wide search
            // and look for a match in the array
            return this.findElements(document).include(element);
          }
        }
      }
    }

    var match =3D true, name, matches;
    for (var i =3D 0, token; token =3D this.tokens[i]; i++) {
      name =3D token[0], matches =3D token[1];
      if (!Selector.assertions[name](element, matches)) {
        match =3D false; break;
      }
    }

    return match;
  },

  toString: function() {
    return this.expression;
  },

  inspect: function() {
    return "#<Selector:" + this.expression.inspect() + ">";
  }
});

Object.extend(Selector, {
  _cache: { },

  xpath: {
    descendant:   "//*",
    child:        "/*",
    adjacent:     "/following-sibling::*[1]",
    laterSibling: '/following-sibling::*',
    tagName:      function(m) {
      if (m[1] =3D=3D '*') return '';
      return "[local-name()=3D'" + m[1].toLowerCase() +
             "' or local-name()=3D'" + m[1].toUpperCase() + "']";
    },
    className:    "[contains(concat(' ', @class, ' '), ' #{1} ')]",
    id:           "[@id=3D'#{1}']",
    attrPresence: "[@#{1}]",
    attr: function(m) {
      m[3] =3D m[5] || m[6];
      return new Template(Selector.xpath.operators[m[2]]).evaluate(m);
    },
    pseudo: function(m) {
      var h =3D Selector.xpath.pseudos[m[1]];
      if (!h) return '';
      if (Object.isFunction(h)) return h(m);
      return new Template(Selector.xpath.pseudos[m[1]]).evaluate(m);
    },
    operators: {
      '=3D':  "[@#{1}=3D'#{3}']",
      '!=3D': "[@#{1}!=3D'#{3}']",
      '^=3D': "[starts-with(@#{1}, '#{3}')]",
      '$=3D': "[substring(@#{1}, (string-length(@#{1}) - =
string-length('#{3}') + 1))=3D'#{3}']",
      '*=3D': "[contains(@#{1}, '#{3}')]",
      '~=3D': "[contains(concat(' ', @#{1}, ' '), ' #{3} ')]",
      '|=3D': "[contains(concat('-', @#{1}, '-'), '-#{3}-')]"
    },
    pseudos: {
      'first-child': '[not(preceding-sibling::*)]',
      'last-child':  '[not(following-sibling::*)]',
      'only-child':  '[not(preceding-sibling::* or =
following-sibling::*)]',
      'empty':       "[count(*) =3D 0 and (count(text()) =3D 0 or =
translate(text(), ' \t\r\n', '') =3D '')]",
      'checked':     "[@checked]",
      'disabled':    "[@disabled]",
      'enabled':     "[not(@disabled)]",
      'not': function(m) {
        var e =3D m[6], p =3D Selector.patterns,
            x =3D Selector.xpath, le, m, v;

        var exclusion =3D [];
        while (e && le !=3D e && (/\S/).test(e)) {
          le =3D e;
          for (var i in p) {
            if (m =3D e.match(p[i])) {
              v =3D Object.isFunction(x[i]) ? x[i](m) : new =
Template(x[i]).evaluate(m);
              exclusion.push("(" + v.substring(1, v.length - 1) + ")");
              e =3D e.replace(m[0], '');
              break;
            }
          }
        }
        return "[not(" + exclusion.join(" and ") + ")]";
      },
      'nth-child':      function(m) {
        return =
Selector.xpath.pseudos.nth("(count(./preceding-sibling::*) + 1) ", m);
      },
      'nth-last-child': function(m) {
        return =
Selector.xpath.pseudos.nth("(count(./following-sibling::*) + 1) ", m);
      },
      'nth-of-type':    function(m) {
        return Selector.xpath.pseudos.nth("position() ", m);
      },
      'nth-last-of-type': function(m) {
        return Selector.xpath.pseudos.nth("(last() + 1 - position()) ", =
m);
      },
      'first-of-type':  function(m) {
        m[6] =3D "1"; return Selector.xpath.pseudos['nth-of-type'](m);
      },
      'last-of-type':   function(m) {
        m[6] =3D "1"; return =
Selector.xpath.pseudos['nth-last-of-type'](m);
      },
      'only-of-type':   function(m) {
        var p =3D Selector.xpath.pseudos; return p['first-of-type'](m) + =
p['last-of-type'](m);
      },
      nth: function(fragment, m) {
        var mm, formula =3D m[6], predicate;
        if (formula =3D=3D 'even') formula =3D '2n+0';
        if (formula =3D=3D 'odd')  formula =3D '2n+1';
        if (mm =3D formula.match(/^(\d+)$/)) // digit only
          return '[' + fragment + "=3D " + mm[1] + ']';
        if (mm =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // an+b
          if (mm[1] =3D=3D "-") mm[1] =3D -1;
          var a =3D mm[1] ? Number(mm[1]) : 1;
          var b =3D mm[2] ? Number(mm[2]) : 0;
          predicate =3D "[((#{fragment} - #{b}) mod #{a} =3D 0) and " +
          "((#{fragment} - #{b}) div #{a} >=3D 0)]";
          return new Template(predicate).evaluate({
            fragment: fragment, a: a, b: b });
        }
      }
    }
  },

  criteria: {
    tagName:      'n =3D h.tagName(n, r, "#{1}", c);   c =3D false;',
    className:    'n =3D h.className(n, r, "#{1}", c); c =3D false;',
    id:           'n =3D h.id(n, r, "#{1}", c);        c =3D false;',
    attrPresence: 'n =3D h.attrPresence(n, r, "#{1}"); c =3D false;',
    attr: function(m) {
      m[3] =3D (m[5] || m[6]);
      return new Template('n =3D h.attr(n, r, "#{1}", "#{3}", "#{2}"); c =
=3D false;').evaluate(m);
    },
    pseudo: function(m) {
      if (m[6]) m[6] =3D m[6].replace(/"/g, '\\"');
      return new Template('n =3D h.pseudo(n, "#{1}", "#{6}", r, c); c =
=3D false;').evaluate(m);
    },
    descendant:   'c =3D "descendant";',
    child:        'c =3D "child";',
    adjacent:     'c =3D "adjacent";',
    laterSibling: 'c =3D "laterSibling";'
  },

  patterns: {
    // combinators must be listed first
    // (and descendant needs to be last combinator)
    laterSibling: /^\s*~\s*/,
    child:        /^\s*>\s*/,
    adjacent:     /^\s*\+\s*/,
    descendant:   /^\s/,

    // selectors follow
    tagName:      /^\s*(\*|[\w\-]+)(\b|$)?/,
    id:           /^#([\w\-\*]+)(\b|$)/,
    className:    /^\.([\w\-\*]+)(\b|$)/,
    pseudo:       =
/^:((first|last|nth|nth-last|only)(-child|-of-type)|empty|checked|(en|dis=
)abled|not)(\((.*?)\))?(\b|$|(?=3D\s)|(?=3D:))/,
    attrPresence: /^\[([\w]+)\]/,
    attr:         =
/\[((?:[\w-]*:)?[\w-]+)\s*(?:([!^$*~|]?=3D)\s*((['"])([^\4]*?)\4|([^'"][^=
\]]*?)))?\]/
  },

  // for Selector.match and Element#match
  assertions: {
    tagName: function(element, matches) {
      return matches[1].toUpperCase() =3D=3D =
element.tagName.toUpperCase();
    },

    className: function(element, matches) {
      return Element.hasClassName(element, matches[1]);
    },

    id: function(element, matches) {
      return element.id =3D=3D=3D matches[1];
    },

    attrPresence: function(element, matches) {
      return Element.hasAttribute(element, matches[1]);
    },

    attr: function(element, matches) {
      var nodeValue =3D Element.readAttribute(element, matches[1]);
      return Selector.operators[matches[2]](nodeValue, matches[3]);
    }
  },

  handlers: {
    // UTILITY FUNCTIONS
    // joins two collections
    concat: function(a, b) {
      for (var i =3D 0, node; node =3D b[i]; i++)
        a.push(node);
      return a;
    },

    // marks an array of nodes for counting
    mark: function(nodes) {
      for (var i =3D 0, node; node =3D nodes[i]; i++)
        node._counted =3D true;
      return nodes;
    },

    unmark: function(nodes) {
      for (var i =3D 0, node; node =3D nodes[i]; i++)
        node._counted =3D undefined;
      return nodes;
    },

    // mark each child node with its position (for nth calls)
    // "ofType" flag indicates whether we're indexing for nth-of-type
    // rather than nth-child
    index: function(parentNode, reverse, ofType) {
      parentNode._counted =3D true;
      if (reverse) {
        for (var nodes =3D parentNode.childNodes, i =3D nodes.length - =
1, j =3D 1; i >=3D 0; i--) {
          var node =3D nodes[i];
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;
        }
      } else {
        for (var i =3D 0, j =3D 1, nodes =3D parentNode.childNodes; node =
=3D nodes[i]; i++)
          if (node.nodeType =3D=3D 1 && (!ofType || node._counted)) =
node.nodeIndex =3D j++;
      }
    },

    // filters out duplicates and extends all nodes
    unique: function(nodes) {
      if (nodes.length =3D=3D 0) return nodes;
      var results =3D [], n;
      for (var i =3D 0, l =3D nodes.length; i < l; i++)
        if (!(n =3D nodes[i])._counted) {
          n._counted =3D true;
          results.push(Element.extend(n));
        }
      return Selector.handlers.unmark(results);
    },

    // COMBINATOR FUNCTIONS
    descendant: function(nodes) {
      var h =3D Selector.handlers;
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        h.concat(results, node.getElementsByTagName('*'));
      return results;
    },

    child: function(nodes) {
      var h =3D Selector.handlers;
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {
        for (var j =3D 0, children =3D [], child; child =3D =
node.childNodes[j]; j++)
          if (child.nodeType =3D=3D 1 && child.tagName !=3D '!') =
results.push(child);
      }
      return results;
    },

    adjacent: function(nodes) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {
        var next =3D this.nextElementSibling(node);
        if (next) results.push(next);
      }
      return results;
    },

    laterSibling: function(nodes) {
      var h =3D Selector.handlers;
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        h.concat(results, Element.nextSiblings(node));
      return results;
    },

    nextElementSibling: function(node) {
      while (node =3D node.nextSibling)
	      if (node.nodeType =3D=3D 1) return node;
      return null;
    },

    previousElementSibling: function(node) {
      while (node =3D node.previousSibling)
        if (node.nodeType =3D=3D 1) return node;
      return null;
    },

    // TOKEN FUNCTIONS
    tagName: function(nodes, root, tagName, combinator) {
      tagName =3D tagName.toUpperCase();
      var results =3D [], h =3D Selector.handlers;
      if (nodes) {
        if (combinator) {
          // fastlane for ordinary descendant combinators
          if (combinator =3D=3D "descendant") {
            for (var i =3D 0, node; node =3D nodes[i]; i++)
              h.concat(results, node.getElementsByTagName(tagName));
            return results;
          } else nodes =3D this[combinator](nodes);
          if (tagName =3D=3D "*") return nodes;
        }
        for (var i =3D 0, node; node =3D nodes[i]; i++)
          if (node.tagName.toUpperCase() =3D=3D tagName) =
results.push(node);
        return results;
      } else return root.getElementsByTagName(tagName);
    },

    id: function(nodes, root, id, combinator) {
      var targetNode =3D $(id), h =3D Selector.handlers;
      if (!targetNode) return [];
      if (!nodes && root =3D=3D document) return [targetNode];
      if (nodes) {
        if (combinator) {
          if (combinator =3D=3D 'child') {
            for (var i =3D 0, node; node =3D nodes[i]; i++)
              if (targetNode.parentNode =3D=3D node) return =
[targetNode];
          } else if (combinator =3D=3D 'descendant') {
            for (var i =3D 0, node; node =3D nodes[i]; i++)
              if (Element.descendantOf(targetNode, node)) return =
[targetNode];
          } else if (combinator =3D=3D 'adjacent') {
            for (var i =3D 0, node; node =3D nodes[i]; i++)
              if (Selector.handlers.previousElementSibling(targetNode) =
=3D=3D node)
                return [targetNode];
          } else nodes =3D h[combinator](nodes);
        }
        for (var i =3D 0, node; node =3D nodes[i]; i++)
          if (node =3D=3D targetNode) return [targetNode];
        return [];
      }
      return (targetNode && Element.descendantOf(targetNode, root)) ? =
[targetNode] : [];
    },

    className: function(nodes, root, className, combinator) {
      if (nodes && combinator) nodes =3D this[combinator](nodes);
      return Selector.handlers.byClassName(nodes, root, className);
    },

    byClassName: function(nodes, root, className) {
      if (!nodes) nodes =3D Selector.handlers.descendant([root]);
      var needle =3D ' ' + className + ' ';
      for (var i =3D 0, results =3D [], node, nodeClassName; node =3D =
nodes[i]; i++) {
        nodeClassName =3D node.className;
        if (nodeClassName.length =3D=3D 0) continue;
        if (nodeClassName =3D=3D className || (' ' + nodeClassName + ' =
').include(needle))
          results.push(node);
      }
      return results;
    },

    attrPresence: function(nodes, root, attr) {
      if (!nodes) nodes =3D root.getElementsByTagName("*");
      var results =3D [];
      for (var i =3D 0, node; node =3D nodes[i]; i++)
        if (Element.hasAttribute(node, attr)) results.push(node);
      return results;
    },

    attr: function(nodes, root, attr, value, operator) {
      if (!nodes) nodes =3D root.getElementsByTagName("*");
      var handler =3D Selector.operators[operator], results =3D [];
      for (var i =3D 0, node; node =3D nodes[i]; i++) {
        var nodeValue =3D Element.readAttribute(node, attr);
        if (nodeValue =3D=3D=3D null) continue;
        if (handler(nodeValue, value)) results.push(node);
      }
      return results;
    },

    pseudo: function(nodes, name, value, root, combinator) {
      if (nodes && combinator) nodes =3D this[combinator](nodes);
      if (!nodes) nodes =3D root.getElementsByTagName("*");
      return Selector.pseudos[name](nodes, value, root);
    }
  },

  pseudos: {
    'first-child': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {
        if (Selector.handlers.previousElementSibling(node)) continue;
          results.push(node);
      }
      return results;
    },
    'last-child': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {
        if (Selector.handlers.nextElementSibling(node)) continue;
          results.push(node);
      }
      return results;
    },
    'only-child': function(nodes, value, root) {
      var h =3D Selector.handlers;
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        if (!h.previousElementSibling(node) && =
!h.nextElementSibling(node))
          results.push(node);
      return results;
    },
    'nth-child':        function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root);
    },
    'nth-last-child':   function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, true);
    },
    'nth-of-type':      function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, false, true);
    },
    'nth-last-of-type': function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, formula, root, true, true);
    },
    'first-of-type':    function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, "1", root, false, true);
    },
    'last-of-type':     function(nodes, formula, root) {
      return Selector.pseudos.nth(nodes, "1", root, true, true);
    },
    'only-of-type':     function(nodes, formula, root) {
      var p =3D Selector.pseudos;
      return p['last-of-type'](p['first-of-type'](nodes, formula, root), =
formula, root);
    },

    // handles the an+b logic
    getIndices: function(a, b, total) {
      if (a =3D=3D 0) return b > 0 ? [b] : [];
      return $R(1, total).inject([], function(memo, i) {
        if (0 =3D=3D (i - b) % a && (i - b) / a >=3D 0) memo.push(i);
        return memo;
      });
    },

    // handles nth(-last)-child, nth(-last)-of-type, and =
(first|last)-of-type
    nth: function(nodes, formula, root, reverse, ofType) {
      if (nodes.length =3D=3D 0) return [];
      if (formula =3D=3D 'even') formula =3D '2n+0';
      if (formula =3D=3D 'odd')  formula =3D '2n+1';
      var h =3D Selector.handlers, results =3D [], indexed =3D [], m;
      h.mark(nodes);
      for (var i =3D 0, node; node =3D nodes[i]; i++) {
        if (!node.parentNode._counted) {
          h.index(node.parentNode, reverse, ofType);
          indexed.push(node.parentNode);
        }
      }
      if (formula.match(/^\d+$/)) { // just a number
        formula =3D Number(formula);
        for (var i =3D 0, node; node =3D nodes[i]; i++)
          if (node.nodeIndex =3D=3D formula) results.push(node);
      } else if (m =3D formula.match(/^(-?\d*)?n(([+-])(\d+))?/)) { // =
an+b
        if (m[1] =3D=3D "-") m[1] =3D -1;
        var a =3D m[1] ? Number(m[1]) : 1;
        var b =3D m[2] ? Number(m[2]) : 0;
        var indices =3D Selector.pseudos.getIndices(a, b, nodes.length);
        for (var i =3D 0, node, l =3D indices.length; node =3D nodes[i]; =
i++) {
          for (var j =3D 0; j < l; j++)
            if (node.nodeIndex =3D=3D indices[j]) results.push(node);
        }
      }
      h.unmark(nodes);
      h.unmark(indexed);
      return results;
    },

    'empty': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++) {
        // IE treats comments as element nodes
        if (node.tagName =3D=3D '!' || (node.firstChild && =
!node.innerHTML.match(/^\s*$/))) continue;
        results.push(node);
      }
      return results;
    },

    'not': function(nodes, selector, root) {
      var h =3D Selector.handlers, selectorType, m;
      var exclusions =3D new Selector(selector).findElements(root);
      h.mark(exclusions);
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        if (!node._counted) results.push(node);
      h.unmark(exclusions);
      return results;
    },

    'enabled': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        if (!node.disabled) results.push(node);
      return results;
    },

    'disabled': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        if (node.disabled) results.push(node);
      return results;
    },

    'checked': function(nodes, value, root) {
      for (var i =3D 0, results =3D [], node; node =3D nodes[i]; i++)
        if (node.checked) results.push(node);
      return results;
    }
  },

  operators: {
    '=3D':  function(nv, v) { return nv =3D=3D v; },
    '!=3D': function(nv, v) { return nv !=3D v; },
    '^=3D': function(nv, v) { return nv.startsWith(v); },
    '$=3D': function(nv, v) { return nv.endsWith(v); },
    '*=3D': function(nv, v) { return nv.include(v); },
    '~=3D': function(nv, v) { return (' ' + nv + ' ').include(' ' + v + =
' '); },
    '|=3D': function(nv, v) { return ('-' + nv.toUpperCase() + =
'-').include('-' + v.toUpperCase() + '-'); }
  },

  matchElements: function(elements, expression) {
    var matches =3D new Selector(expression).findElements(), h =3D =
Selector.handlers;
    h.mark(matches);
    for (var i =3D 0, results =3D [], element; element =3D elements[i]; =
i++)
      if (element._counted) results.push(element);
    h.unmark(matches);
    return results;
  },

  findElement: function(elements, expression, index) {
    if (Object.isNumber(expression)) {
      index =3D expression; expression =3D false;
    }
    return Selector.matchElements(elements, expression || '*')[index || =
0];
  },

  findChildElements: function(element, expressions) {
    var exprs =3D expressions.join(','), expressions =3D [];
    exprs.scan(/(([\w#:.~>+()\s-]+|\*|\[.*?\])+)\s*(,|$)/, function(m) {
      expressions.push(m[1].strip());
    });
    var results =3D [], h =3D Selector.handlers;
    for (var i =3D 0, l =3D expressions.length, selector; i < l; i++) {
      selector =3D new Selector(expressions[i].strip());
      h.concat(results, selector.findElements(element));
    }
    return (l > 1) ? h.unique(results) : results;
  }
});

function $$() {
  return Selector.findChildElements(document, $A(arguments));
}
var Form =3D {
  reset: function(form) {
    $(form).reset();
    return form;
  },

  serializeElements: function(elements, options) {
    if (typeof options !=3D 'object') options =3D { hash: !!options };
    else if (options.hash =3D=3D=3D undefined) options.hash =3D true;
    var key, value, submitted =3D false, submit =3D options.submit;

    var data =3D elements.inject({ }, function(result, element) {
      if (!element.disabled && element.name) {
        key =3D element.name; value =3D $(element).getValue();
        if (value !=3D null && (element.type !=3D 'submit' || =
(!submitted &&
            submit !=3D=3D false && (!submit || key =3D=3D submit) && =
(submitted =3D true)))) {
          if (key in result) {
            // a key is already present; construct an array of values
            if (!Object.isArray(result[key])) result[key] =3D =
[result[key]];
            result[key].push(value);
          }
          else result[key] =3D value;
        }
      }
      return result;
    });

    return options.hash ? data : Object.toQueryString(data);
  }
};

Form.Methods =3D {
  serialize: function(form, options) {
    return Form.serializeElements(Form.getElements(form), options);
  },

  getElements: function(form) {
    return $A($(form).getElementsByTagName('*')).inject([],
      function(elements, child) {
        if (Form.Element.Serializers[child.tagName.toLowerCase()])
          elements.push(Element.extend(child));
        return elements;
      }
    );
  },

  getInputs: function(form, typeName, name) {
    form =3D $(form);
    var inputs =3D form.getElementsByTagName('input');

    if (!typeName && !name) return $A(inputs).map(Element.extend);

    for (var i =3D 0, matchingInputs =3D [], length =3D inputs.length; i =
< length; i++) {
      var input =3D inputs[i];
      if ((typeName && input.type !=3D typeName) || (name && input.name =
!=3D name))
        continue;
      matchingInputs.push(Element.extend(input));
    }

    return matchingInputs;
  },

  disable: function(form) {
    form =3D $(form);
    Form.getElements(form).invoke('disable');
    return form;
  },

  enable: function(form) {
    form =3D $(form);
    Form.getElements(form).invoke('enable');
    return form;
  },

  findFirstElement: function(form) {
    var elements =3D $(form).getElements().findAll(function(element) {
      return 'hidden' !=3D element.type && !element.disabled;
    });
    var firstByIndex =3D elements.findAll(function(element) {
      return element.hasAttribute('tabIndex') && element.tabIndex >=3D =
0;
    }).sortBy(function(element) { return element.tabIndex }).first();

    return firstByIndex ? firstByIndex : elements.find(function(element) =
{
      return ['input', 'select', =
'textarea'].include(element.tagName.toLowerCase());
    });
  },

  focusFirstElement: function(form) {
    form =3D $(form);
    form.findFirstElement().activate();
    return form;
  },

  request: function(form, options) {
    form =3D $(form), options =3D Object.clone(options || { });

    var params =3D options.parameters, action =3D =
form.readAttribute('action') || '';
    if (action.blank()) action =3D window.location.href;
    options.parameters =3D form.serialize(true);

    if (params) {
      if (Object.isString(params)) params =3D params.toQueryParams();
      Object.extend(options.parameters, params);
    }

    if (form.hasAttribute('method') && !options.method)
      options.method =3D form.method;

    return new Ajax.Request(action, options);
  }
};

/*-----------------------------------------------------------------------=
---*/

Form.Element =3D {
  focus: function(element) {
    $(element).focus();
    return element;
  },

  select: function(element) {
    $(element).select();
    return element;
  }
};

Form.Element.Methods =3D {
  serialize: function(element) {
    element =3D $(element);
    if (!element.disabled && element.name) {
      var value =3D element.getValue();
      if (value !=3D undefined) {
        var pair =3D { };
        pair[element.name] =3D value;
        return Object.toQueryString(pair);
      }
    }
    return '';
  },

  getValue: function(element) {
    element =3D $(element);
    var method =3D element.tagName.toLowerCase();
    return Form.Element.Serializers[method](element);
  },

  setValue: function(element, value) {
    element =3D $(element);
    var method =3D element.tagName.toLowerCase();
    Form.Element.Serializers[method](element, value);
    return element;
  },

  clear: function(element) {
    $(element).value =3D '';
    return element;
  },

  present: function(element) {
    return $(element).value !=3D '';
  },

  activate: function(element) {
    element =3D $(element);
    try {
      element.focus();
      if (element.select && (element.tagName.toLowerCase() !=3D 'input' =
||
          !['button', 'reset', 'submit'].include(element.type)))
        element.select();
    } catch (e) { }
    return element;
  },

  disable: function(element) {
    element =3D $(element);
    element.blur();
    element.disabled =3D true;
    return element;
  },

  enable: function(element) {
    element =3D $(element);
    element.disabled =3D false;
    return element;
  }
};

/*-----------------------------------------------------------------------=
---*/

var Field =3D Form.Element;
var $F =3D Form.Element.Methods.getValue;

/*-----------------------------------------------------------------------=
---*/

Form.Element.Serializers =3D {
  input: function(element, value) {
    switch (element.type.toLowerCase()) {
      case 'checkbox':
      case 'radio':
        return Form.Element.Serializers.inputSelector(element, value);
      default:
        return Form.Element.Serializers.textarea(element, value);
    }
  },

  inputSelector: function(element, value) {
    if (value =3D=3D=3D undefined) return element.checked ? =
element.value : null;
    else element.checked =3D !!value;
  },

  textarea: function(element, value) {
    if (value =3D=3D=3D undefined) return element.value;
    else element.value =3D value;
  },

  select: function(element, index) {
    if (index =3D=3D=3D undefined)
      return this[element.type =3D=3D 'select-one' ?
        'selectOne' : 'selectMany'](element);
    else {
      var opt, value, single =3D !Object.isArray(index);
      for (var i =3D 0, length =3D element.length; i < length; i++) {
        opt =3D element.options[i];
        value =3D this.optionValue(opt);
        if (single) {
          if (value =3D=3D index) {
            opt.selected =3D true;
            return;
          }
        }
        else opt.selected =3D index.include(value);
      }
    }
  },

  selectOne: function(element) {
    var index =3D element.selectedIndex;
    return index >=3D 0 ? this.optionValue(element.options[index]) : =
null;
  },

  selectMany: function(element) {
    var values, length =3D element.length;
    if (!length) return null;

    for (var i =3D 0, values =3D []; i < length; i++) {
      var opt =3D element.options[i];
      if (opt.selected) values.push(this.optionValue(opt));
    }
    return values;
  },

  optionValue: function(opt) {
    // extend element because hasAttribute may not be native
    return Element.extend(opt).hasAttribute('value') ? opt.value : =
opt.text;
  }
};

/*-----------------------------------------------------------------------=
---*/

Abstract.TimedObserver =3D Class.create(PeriodicalExecuter, {
  initialize: function($super, element, frequency, callback) {
    $super(callback, frequency);
    this.element   =3D $(element);
    this.lastValue =3D this.getValue();
  },

  execute: function() {
    var value =3D this.getValue();
    if (Object.isString(this.lastValue) && Object.isString(value) ?
        this.lastValue !=3D value : String(this.lastValue) !=3D =
String(value)) {
      this.callback(this.element, value);
      this.lastValue =3D value;
    }
  }
});

Form.Element.Observer =3D Class.create(Abstract.TimedObserver, {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.Observer =3D Class.create(Abstract.TimedObserver, {
  getValue: function() {
    return Form.serialize(this.element);
  }
});

/*-----------------------------------------------------------------------=
---*/

Abstract.EventObserver =3D Class.create({
  initialize: function(element, callback) {
    this.element  =3D $(element);
    this.callback =3D callback;

    this.lastValue =3D this.getValue();
    if (this.element.tagName.toLowerCase() =3D=3D 'form')
      this.registerFormCallbacks();
    else
      this.registerCallback(this.element);
  },

  onElementEvent: function() {
    var value =3D this.getValue();
    if (this.lastValue !=3D value) {
      this.callback(this.element, value);
      this.lastValue =3D value;
    }
  },

  registerFormCallbacks: function() {
    Form.getElements(this.element).each(this.registerCallback, this);
  },

  registerCallback: function(element) {
    if (element.type) {
      switch (element.type.toLowerCase()) {
        case 'checkbox':
        case 'radio':
          Event.observe(element, 'click', =
this.onElementEvent.bind(this));
          break;
        default:
          Event.observe(element, 'change', =
this.onElementEvent.bind(this));
          break;
      }
    }
  }
});

Form.Element.EventObserver =3D Class.create(Abstract.EventObserver, {
  getValue: function() {
    return Form.Element.getValue(this.element);
  }
});

Form.EventObserver =3D Class.create(Abstract.EventObserver, {
  getValue: function() {
    return Form.serialize(this.element);
  }
});
if (!window.Event) var Event =3D { };

Object.extend(Event, {
  KEY_BACKSPACE: 8,
  KEY_TAB:       9,
  KEY_RETURN:   13,
  KEY_ESC:      27,
  KEY_LEFT:     37,
  KEY_UP:       38,
  KEY_RIGHT:    39,
  KEY_DOWN:     40,
  KEY_DELETE:   46,
  KEY_HOME:     36,
  KEY_END:      35,
  KEY_PAGEUP:   33,
  KEY_PAGEDOWN: 34,
  KEY_INSERT:   45,

  cache: { },

  relatedTarget: function(event) {
    var element;
    switch(event.type) {
      case 'mouseover': element =3D event.fromElement; break;
      case 'mouseout':  element =3D event.toElement;   break;
      default: return null;
    }
    return Element.extend(element);
  }
});

Event.Methods =3D (function() {
  var isButton;

  if (Prototype.Browser.IE) {
    var buttonMap =3D { 0: 1, 1: 4, 2: 2 };
    isButton =3D function(event, code) {
      return event.button =3D=3D buttonMap[code];
    };

  } else if (Prototype.Browser.WebKit) {
    isButton =3D function(event, code) {
      switch (code) {
        case 0: return event.which =3D=3D 1 && !event.metaKey;
        case 1: return event.which =3D=3D 1 && event.metaKey;
        default: return false;
      }
    };

  } else {
    isButton =3D function(event, code) {
      return event.which ? (event.which =3D=3D=3D code + 1) : =
(event.button =3D=3D=3D code);
    };
  }

  return {
    isLeftClick:   function(event) { return isButton(event, 0) },
    isMiddleClick: function(event) { return isButton(event, 1) },
    isRightClick:  function(event) { return isButton(event, 2) },

    element: function(event) {
      var node =3D Event.extend(event).target;
      return Element.extend(node.nodeType =3D=3D Node.TEXT_NODE ? =
node.parentNode : node);
    },

    findElement: function(event, expression) {
      var element =3D Event.element(event);
      return element.match(expression) ? element : =
element.up(expression);
    },

    pointer: function(event) {
      return {
        x: event.pageX || (event.clientX +
          (document.documentElement.scrollLeft || =
document.body.scrollLeft)),
        y: event.pageY || (event.clientY +
          (document.documentElement.scrollTop || =
document.body.scrollTop))
      };
    },

    pointerX: function(event) { return Event.pointer(event).x },
    pointerY: function(event) { return Event.pointer(event).y },

    stop: function(event) {
      Event.extend(event);
      event.preventDefault();
      event.stopPropagation();
      event.stopped =3D true;
    }
  };
})();

Event.extend =3D (function() {
  var methods =3D Object.keys(Event.Methods).inject({ }, function(m, =
name) {
    m[name] =3D Event.Methods[name].methodize();
    return m;
  });

  if (Prototype.Browser.IE) {
    Object.extend(methods, {
      stopPropagation: function() { this.cancelBubble =3D true },
      preventDefault:  function() { this.returnValue =3D false },
      inspect: function() { return "[object Event]" }
    });

    return function(event) {
      if (!event) return false;
      if (event._extendedByPrototype) return event;

      event._extendedByPrototype =3D Prototype.emptyFunction;
      var pointer =3D Event.pointer(event);
      Object.extend(event, {
        target: event.srcElement,
        relatedTarget: Event.relatedTarget(event),
        pageX:  pointer.x,
        pageY:  pointer.y
      });
      return Object.extend(event, methods);
    };

  } else {
    Event.prototype =3D Event.prototype || =
document.createEvent("HTMLEvents").__proto__;
    Object.extend(Event.prototype, methods);
    return Prototype.K;
  }
})();

Object.extend(Event, (function() {
  var cache =3D Event.cache;

  function getEventID(element) {
    if (element._eventID) return element._eventID;
    arguments.callee.id =3D arguments.callee.id || 1;
    return element._eventID =3D ++arguments.callee.id;
  }

  function getDOMEventName(eventName) {
    if (eventName && eventName.include(':')) return "dataavailable";
    return eventName;
  }

  function getCacheForID(id) {
    return cache[id] =3D cache[id] || { };
  }

  function getWrappersForEventName(id, eventName) {
    var c =3D getCacheForID(id);
    return c[eventName] =3D c[eventName] || [];
  }

  function createWrapper(element, eventName, handler) {
    var id =3D getEventID(element);
    var c =3D getWrappersForEventName(id, eventName);
    if (c.pluck("handler").include(handler)) return false;

    var wrapper =3D function(event) {
      if (!Event || !Event.extend ||
        (event.eventName && event.eventName !=3D eventName))
          return false;

      Event.extend(event);
      handler.call(element, event)
    };

    wrapper.handler =3D handler;
    c.push(wrapper);
    return wrapper;
  }

  function findWrapper(id, eventName, handler) {
    var c =3D getWrappersForEventName(id, eventName);
    return c.find(function(wrapper) { return wrapper.handler =3D=3D =
handler });
  }

  function destroyWrapper(id, eventName, handler) {
    var c =3D getCacheForID(id);
    if (!c[eventName]) return false;
    c[eventName] =3D c[eventName].without(findWrapper(id, eventName, =
handler));
  }

  function destroyCache() {
    for (var id in cache)
      for (var eventName in cache[id])
        cache[id][eventName] =3D null;
  }

  if (window.attachEvent) {
    window.attachEvent("onunload", destroyCache);
  }

  return {
    observe: function(element, eventName, handler) {
      element =3D $(element);
      var name =3D getDOMEventName(eventName);

      var wrapper =3D createWrapper(element, eventName, handler);
      if (!wrapper) return element;

      if (element.addEventListener) {
        element.addEventListener(name, wrapper, false);
      } else {
        element.attachEvent("on" + name, wrapper);
      }

      return element;
    },

    stopObserving: function(element, eventName, handler) {
      element =3D $(element);
      var id =3D getEventID(element), name =3D =
getDOMEventName(eventName);

      if (!handler && eventName) {
        getWrappersForEventName(id, eventName).each(function(wrapper) {
          element.stopObserving(eventName, wrapper.handler);
        });
        return element;

      } else if (!eventName) {
        Object.keys(getCacheForID(id)).each(function(eventName) {
          element.stopObserving(eventName);
        });
        return element;
      }

      var wrapper =3D findWrapper(id, eventName, handler);
      if (!wrapper) return element;

      if (element.removeEventListener) {
        element.removeEventListener(name, wrapper, false);
      } else {
        element.detachEvent("on" + name, wrapper);
      }

      destroyWrapper(id, eventName, handler);

      return element;
    },

    fire: function(element, eventName, memo) {
      element =3D $(element);
      if (element =3D=3D document && document.createEvent && =
!element.dispatchEvent)
        element =3D document.documentElement;

      if (document.createEvent) {
        var event =3D document.createEvent("HTMLEvents");
        event.initEvent("dataavailable", true, true);
      } else {
        var event =3D document.createEventObject();
        event.eventType =3D "ondataavailable";
      }

      event.eventName =3D eventName;
      event.memo =3D memo || { };

      if (document.createEvent) {
        element.dispatchEvent(event);
      } else {
        element.fireEvent(event.eventType, event);
      }

      return event;
    }
  };
})());

Object.extend(Event, Event.Methods);

Element.addMethods({
  fire:          Event.fire,
  observe:       Event.observe,
  stopObserving: Event.stopObserving
});

Object.extend(document, {
  fire:          Element.Methods.fire.methodize(),
  observe:       Element.Methods.observe.methodize(),
  stopObserving: Element.Methods.stopObserving.methodize()
});

(function() {
  /* Support for the DOMContentLoaded event is based on work by Dan =
Webb,
     Matthias Miller, Dean Edwards and John Resig. */

  var timer, fired =3D false;

  function fireContentLoadedEvent() {
    if (fired) return;
    if (timer) window.clearInterval(timer);
    document.fire("dom:loaded");
    fired =3D true;
  }

  if (document.addEventListener) {
    if (Prototype.Browser.WebKit) {
      timer =3D window.setInterval(function() {
        if (/loaded|complete/.test(document.readyState))
          fireContentLoadedEvent();
      }, 0);

      Event.observe(window, "load", fireContentLoadedEvent);

    } else {
      document.addEventListener("DOMContentLoaded",
        fireContentLoadedEvent, false);
    }

  } else {
    document.write("<script id=3D__onDOMContentLoaded defer =
src=3D//:><\/script>");
    $("__onDOMContentLoaded").onreadystatechange =3D function() {
      if (this.readyState =3D=3D "complete") {
        this.onreadystatechange =3D null;
        fireContentLoadedEvent();
      }
    };
  }
})();
/*------------------------------- DEPRECATED =
-------------------------------*/

Hash.toQueryString =3D Object.toQueryString;

var Toggle =3D { display: Element.toggle };

Element.Methods.childOf =3D Element.Methods.descendantOf;

var Insertion =3D {
  Before: function(element, content) {
    return Element.insert(element, {before:content});
  },

  Top: function(element, content) {
    return Element.insert(element, {top:content});
  },

  Bottom: function(element, content) {
    return Element.insert(element, {bottom:content});
  },

  After: function(element, content) {
    return Element.insert(element, {after:content});
  }
};

var $continue =3D new Error('"throw $continue" is deprecated, use =
"return" instead');

// This should be moved to script.aculo.us; notice the deprecated =
methods
// further below, that map to the newer Element methods.
var Position =3D {
  // set to true if needed, warning: firefox performance problems
  // NOT neeeded for page scrolling, only if draggable contained in
  // scrollable elements
  includeScrollOffsets: false,

  // must be called before calling withinIncludingScrolloffset, every =
time the
  // page is scrolled
  prepare: function() {
    this.deltaX =3D  window.pageXOffset
                || document.documentElement.scrollLeft
                || document.body.scrollLeft
                || 0;
    this.deltaY =3D  window.pageYOffset
                || document.documentElement.scrollTop
                || document.body.scrollTop
                || 0;
  },

  // caches x/y coordinate pair to use with overlap
  within: function(element, x, y) {
    if (this.includeScrollOffsets)
      return this.withinIncludingScrolloffsets(element, x, y);
    this.xcomp =3D x;
    this.ycomp =3D y;
    this.offset =3D Element.cumulativeOffset(element);

    return (y >=3D this.offset[1] &&
            y <  this.offset[1] + element.offsetHeight &&
            x >=3D this.offset[0] &&
            x <  this.offset[0] + element.offsetWidth);
  },

  withinIncludingScrolloffsets: function(element, x, y) {
    var offsetcache =3D Element.cumulativeScrollOffset(element);

    this.xcomp =3D x + offsetcache[0] - this.deltaX;
    this.ycomp =3D y + offsetcache[1] - this.deltaY;
    this.offset =3D Element.cumulativeOffset(element);

    return (this.ycomp >=3D this.offset[1] &&
            this.ycomp <  this.offset[1] + element.offsetHeight &&
            this.xcomp >=3D this.offset[0] &&
            this.xcomp <  this.offset[0] + element.offsetWidth);
  },

  // within must be called directly before
  overlap: function(mode, element) {
    if (!mode) return 0;
    if (mode =3D=3D 'vertical')
      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /
        element.offsetHeight;
    if (mode =3D=3D 'horizontal')
      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /
        element.offsetWidth;
  },

  // Deprecation layer -- use newer Element methods now (1.5.2).

  cumulativeOffset: Element.Methods.cumulativeOffset,

  positionedOffset: Element.Methods.positionedOffset,

  absolutize: function(element) {
    Position.prepare();
    return Element.absolutize(element);
  },

  relativize: function(element) {
    Position.prepare();
    return Element.relativize(element);
  },

  realOffset: Element.Methods.cumulativeScrollOffset,

  offsetParent: Element.Methods.getOffsetParent,

  page: Element.Methods.viewportOffset,

  clone: function(source, target, options) {
    options =3D options || { };
    return Element.clonePosition(target, source, options);
  }
};

/*-----------------------------------------------------------------------=
---*/

if (!document.getElementsByClassName) document.getElementsByClassName =
=3D function(instanceMethods){
  function iter(name) {
    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' =
" + name + " ')]";
  }

  instanceMethods.getElementsByClassName =3D =
Prototype.BrowserFeatures.XPath ?
  function(element, className) {
    className =3D className.toString().strip();
    var cond =3D /\s/.test(className) ? $w(className).map(iter).join('') =
: iter(className);
    return cond ? document._getElementsByXPath('.//*' + cond, element) : =
[];
  } : function(element, className) {
    className =3D className.toString().strip();
    var elements =3D [], classNames =3D (/\s/.test(className) ? =
$w(className) : null);
    if (!classNames && !className) return elements;

    var nodes =3D $(element).getElementsByTagName('*');
    className =3D ' ' + className + ' ';

    for (var i =3D 0, child, cn; child =3D nodes[i]; i++) {
      if (child.className && (cn =3D ' ' + child.className + ' ') && =
(cn.include(className) ||
          (classNames && classNames.all(function(name) {
            return !name.toString().blank() && cn.include(' ' + name + ' =
');
          }))))
        elements.push(Element.extend(child));
    }
    return elements;
  };

  return function(className, parentElement) {
    return $(parentElement || =
document.body).getElementsByClassName(className);
  };
}(Element.Methods);

/*-----------------------------------------------------------------------=
---*/

Element.ClassNames =3D Class.create();
Element.ClassNames.prototype =3D {
  initialize: function(element) {
    this.element =3D $(element);
  },

  _each: function(iterator) {
    this.element.className.split(/\s+/).select(function(name) {
      return name.length > 0;
    })._each(iterator);
  },

  set: function(className) {
    this.element.className =3D className;
  },

  add: function(classNameToAdd) {
    if (this.include(classNameToAdd)) return;
    this.set($A(this).concat(classNameToAdd).join(' '));
  },

  remove: function(classNameToRemove) {
    if (!this.include(classNameToRemove)) return;
    this.set($A(this).without(classNameToRemove).join(' '));
  },

  toString: function() {
    return $A(this).join(' ');
  }
};

Object.extend(Element.ClassNames.prototype, Enumerable);

/*-----------------------------------------------------------------------=
---*/

Element.addMethods();

// End prototype.js

function SfKernel(){}

SfKernel.RequestVariables =3D
{
    PresentationId : "peid",
    PlaybackTicketId : "playbackTicket" =20
}

SfKernel.MediaPlayerType =3D=20
{
	WM7 : "WM7",
	Port25: "Port25",
	SL1 : "SL1"
}

SfKernel.CursorType =3D
{
    Default: 0,
    Hand: 1
}

SfKernel.SlideType =3D
{
	Normal: 0,
	FullSize: 1,
	ThumbNail: 2,
	Unknown: 3
}

SfKernel.ScriptCmdType =3D=20
{
	EndPresentation : "EndPresentation",
	ShowSlide : "ShowSlide",
	Pause : "Pause",
	Resume : "Resume"
}

SfKernel.SliderNotifyType =3D
{
	NewPosition : "NewPosition",
	DragPosition : "DragPosition",
	BeginDrag : "BeginDrag",
	EndDrag : "EndDrag"
}

SfKernel.MediaState =3D
{
	Undefined:		0,
    Stopped:        1,
    Paused:         2,
    Playing:        3,
    ScanForward:    4,
    ScanReverse:    5,
    Buffering:		6,
    Waiting:		7,
    MediaEnded:		8,
    Transitioning:	9,
    Ready:			10,
    Reconnecting:   11,
	Closed:			12,
	Error:			13,
	Opening:		14
}


SfKernel.PresentationPlayStatus =3D
{      =20
    NotAvailable : "NotAvailable",
    ScheduledForLive : "ScheduledForLive",
    OpenForLive : "OpenForLive",
    Live : "Live",
    LiveEnded : "LiveEnded",
    OnDemand : "OnDemand",
    LivePaused : "LivePaused"
}

SfKernel.EventType =3D
{
	Script : "Script",
	LivePlaybackStarted : "LivePlaybackStarted",
	PlayingFromBeginning : "PlayingFromBeginning",
	MediaOpened : "MediaOpened",
	PlayStateChanged : "PlayStateChanged",
	MediaLengthObtained : "MediaLengthObtained",
	PositionChanged : "PositionChanged",
	TimerLoop : "TimerLoop",
	SliderNotify : "SliderNotify",
	VolumeInitialized : "VolumeInitialized",
	MuteToggled : "MuteToggled",
	OptionChanged : "OptionChanged"
}

SfKernel.CommandEventId =3D
{
	NavigateToSlide : "NavigateToSlide",
	NavigateToTime : "NavigateToTime",
	NavigateToChapter : "NavigateToChapter",=09
	Play : "Play",
	Pause : "Pause",
	Stop : "Stop",
	SetVolume : "SetVolume",
	Mute : "Mute",
	FullScreen : "FullScreen",
	SkipBack : "SkipBack",
	SkipForward : "SkipForward",
	ChangePlaybackSpeed: "ChangePlaybackSpeed"
}

SfKernel.GetQueryStringValue =3D function(key)
{
    var queryString =3D document.location.search;
   =20
    if(queryString.length > 1)
    {
        var nvPairs =3D queryString.substring(1).split('&');
        var queryParams =3D new Array(nvPairs.length);
        for(var i=3D0;i<nvPairs.length;i++)
        {
            var parts =3D nvPairs[i].split('=3D');                 =20
            queryParams[parts[0].toLowerCase()] =3D parts[1];            =

        }
       =20
        return queryParams[key.toLowerCase()];      =20
    }
    return null;
}


SfKernel.EncodeHTML =3D function(val)
{
    if(val =3D=3D null)
    {
        return val;
    }  =20
    val =3D val.toString();
    val =3D val.replace(/\\r/g,"");
    val =3D val.replace(/\\n/g, "<br/>");
    val =3D val.replace(/\&/g, "&amp;");
    return val;
}


SfKernel.EncodeClean =3D function(val)
{
    if(val =3D=3D null)
    {
        return val;
    }  =20
    val =3D val.toString();
    val =3D val.replace(/\\r/g,"");
    val =3D val.replace(/\\n/g," ");
    return val;
}

SfKernel.DurationDisplayToMS =3D function(durationDisplay)
{
    var segments =3D durationDisplay.split(":");        =20

    for(var i =3D 0;i<segments.length;i++)
    {
        segments[i] =3D parseInt(segments[i], 10);
        if(isNaN(segments[i]))
        {    =20
            return 0;
        }
    }

    var timeInMS =3D 0;

    switch(segments.length) {
        case 3:     =20
            timeInMS =3D segments[0] * 3600000 + segments[1] * 60000 + =
segments[2] * 1000;
            break;
        case 2:
            timeInMS =3D segments[0] * 60000 + segments[1] * 1000;=20
            break;
        case 1:
            timeInMS =3D segments[0] * 1000;
            break;
    }     =20

    return timeInMS;
}

SfKernel.GetDisplayDuration =3D function(durationInMS,padHours)
{
    if(durationInMS < 0)
    {
        return "";
    }
    var whole =3D durationInMS;
   =20
    var hours =3D Math.floor(whole/3600000);
    whole =3D whole- (hours*3600000);
    if (hours<10)
    {
        hours=3D"0"+hours;
    }
   =20
    var minutes =3D Math.floor(whole/60000);
    whole =3D whole- (minutes*60000);
    var seconds =3D Math.floor(whole/1000);
   =20
    whole =3D whole-(seconds*1000);
   =20
    if (minutes<10)
    {
        minutes=3D"0"+minutes;
    }
    if (seconds<10)
    {
        seconds=3D"0"+seconds;
    }
    if(hours =3D=3D "00" && !padHours)
    {  =20
        return (minutes+":"+seconds);
    }
	return (hours+":"+minutes+":"+seconds);
}


SfKernel.SliderArgs =3D function(notifyType, position)
{
	this.NotifyType =3D notifyType;
	this.Position =3D position;
}

SfKernel.AudioLanguageEntry =3D function(index, locale, displayName)
{
    this.Index =3D index;
    this.Locale =3D locale;
    this.DisplayName =3D displayName;
}


SfKernel.GetPlayStateName =3D function(state)
{
	switch (state)
	{
		case SfKernel.MediaState.Undefined:
			return Localization.MediaPlayer.State.Undefined;
		case SfKernel.MediaState.Stopped:
			return Localization.MediaPlayer.State.Stopped;
		case SfKernel.MediaState.Paused:
			return Localization.MediaPlayer.State.Paused;
		case SfKernel.MediaState.Playing:
			return Localization.MediaPlayer.State.Playing;
		case SfKernel.MediaState.ScanForward:
			return Localization.MediaPlayer.State.ScanForward;
		case SfKernel.MediaState.ScanReverse:
			return Localization.MediaPlayer.State.ScanReverse;
		case SfKernel.MediaState.Buffering:
			return Localization.MediaPlayer.State.Buffering;
		case SfKernel.MediaState.Waiting:
			return Localization.MediaPlayer.State.Waiting;
		case SfKernel.MediaState.MediaEnded:
			return Localization.MediaPlayer.State.MediaEnded;
		case SfKernel.MediaState.Transitioning:
			return Localization.MediaPlayer.State.Transitioning;
		case SfKernel.MediaState.Ready:
			return Localization.MediaPlayer.State.Ready;
		case SfKernel.MediaState.Reconnecting:
		    return Localization.MediaPlayer.State.Reconnecting;
		case SfKernel.MediaState.Closed:
			return Localization.MediaPlayer.State.Closed;
		case SfKernel.MediaState.Error:
			return Localization.MediaPlayer.State.Error;
		case SfKernel.MediaState.Opening:
			return Localization.MediaPlayer.State.Opening;
		default:
			return Localization.MediaPlayer.State.Unknown;
	}
}


Panel =3D function(container, containingWindow, id)
{
	this.Container =3D container;
	this.ContainingWindow =3D containingWindow;
	this.ID =3D id;
	this.div =3D null;
	this.originalDisplay =3D null;
}

Panel.prototype =3D=20
{

    GetElement: function(e)
    {
        return document.getElementById(e);
    },

	GetDiv : function()
	{
		if (this.div =3D=3D null)
		{
			this.div =3D this.GetElement(this.ID);
		}
		return this.div;
	},
=09
	Hide : function()
	{
		var divElement =3D this.GetDiv();
	=09
		if (this.originalDisplay =3D=3D null)
		{
			this.originalDisplay =3D divElement.style.display;
		}
	=09
		divElement.style.display =3D 'none';	=09
	},
=09
	Show : function()
	{
		var divElement =3D this.GetDiv();
	=09
		var currentDisplay =3D divElement.style.display;
		if (currentDisplay !=3D 'none')
		{
			this.originalDisplay =3D currentDisplay;
			return;
		}
	=09
		if (this.originalDisplay =3D=3D null)
		{
			this.originalDisplay =3D  'none';
			divElement.style.display =3D '';
		}
		else
		{
			if (this.originalDisplay =3D=3D 'none')
			{
				divElement.style.display =3D '';
			}
			else
			{
				divElement.style.display =3D this.originalDisplay;
			}
		}
	},
=09
	IsShowing : function()
	{
		var displayVal =3D this.GetDiv().style.display;
		if (displayVal =3D=3D 'none')
		{
			return false;=09
		}
		else
		{
			return true;
		}
	}
}

SfKernel.Util =3D function(){}

SfKernel.Util.SetCursor =3D function(element, cursorType)
{
	if (cursorType =3D=3D SfKernel.CursorType.Default)
	{
		element.style.cursor =3D 'default';
	}
	else if (cursorType =3D=3D SfKernel.CursorType.Hand)
	{
		try
		{
			element.style.cursor =3D 'pointer';
		}
		catch (e)
		{
			element.style.cursor =3D 'hand';
		}
	}
}

SfKernel.Util.IsNullOrUndefined =3D function(obj)
{
	return (typeof(obj) =3D=3D 'undefined' || !obj);
}

SfKernel.Util.SetToolTip =3D function(element, tooltip)
{
	element.setAttribute("title", tooltip);
	element.setAttribute("alt", tooltip);
}


SfKernel.Util.SetText =3D function(element, text)
{
	var firstChild =3D element.childNodes[0];
	var newNode =3D document.createTextNode(text);
	if (firstChild)
	{
		element.replaceChild(newNode, firstChild);
	}
	else
	{
		element.appendChild(newNode);
	}
}



SfKernel.PlayerDetect =3D function() {
    this._playerType =3D null;

    this.GetPlayerType =3D function() {
        if (this._playerType =3D=3D null) {
            this.DetectPlayerType();
        }
        return this._playerType;
    }

    this.DetectPlayerType =3D function() {
        if (GlobalOptions.AlwaysUseSilverlight) {
            this._playerType =3D SfKernel.MediaPlayerType.SL1;
            return;
        }

        var slPref =3D SfKernel.GetQueryStringValue("UseSilverlight");
        if (slPref && slPref.toLowerCase() =3D=3D "true") {
            this._playerType =3D SfKernel.MediaPlayerType.SL1;
            return;
        }

        if (Sys.Browser.agent =3D=3D Sys.Browser.Firefox && =
this.IsWindows()) {
            this._SetFirefoxWinPlayerType();
            return;
        }

        if (Sys.Browser.agent =3D=3D Sys.Browser.InternetExplorer && =
this.IsWindows()) {
            this._playerType =3D SfKernel.MediaPlayerType.WM7;
            return;
        }

        this._playerType =3D SfKernel.MediaPlayerType.SL1;
    }

    this.DisplaySilverlightOption =3D function() {
        if (this.IsWindows()) {
            if (this.IsInternetExplorer()) {
                return true;
            }

            if (this.IsFirefox() && this.IsPort25Present()) {
                return true;
            }
        }
        return false;
    }

    this._SetFirefoxWinPlayerType =3D function() {
        this._playerType =3D SfKernel.MediaPlayerType.SL1;

        if (this.IsPort25Present() =3D=3D true) {
            this._playerType =3D SfKernel.MediaPlayerType.Port25;
            return;
        }
    }

    this.IsPort25Present =3D function() {
        var test
        for (var i =3D 0; i < navigator.plugins.length; ++i) {
            test +=3D navigator.plugins[i];
            test +=3D "\n";

            var plugin =3D navigator.plugins[i];
            if (
				(plugin.name && plugin.name.indexOf("np-mswmp") > -1)
				||
				(plugin.description && plugin.description.indexOf("np-mswmp") > -1)
				) {
                return true;
            }
        }
        return false;
    }

    this.IsWindows =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('windows') =
> -1);
        }
        return false;
    }

    this.IsMac =3D function() {
        if (navigator.userAgent) {
            return =
(navigator.userAgent.toLowerCase().indexOf('macintosh') > -1);
        }
        return false;
    }

    this.IsMacPPC =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('ppc mac =
os x') > -1);
        }
        return false;
    }

    this.IsFirefox =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('firefox') =
> -1);
        }
        return false;
    }

    this.IsInternetExplorer =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('msie') > =
-1);
        }
        return false;
    }

    this.IsInternetExplorer6 =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('msie 6.') =
> -1);
        }
        return false;
    }

    this.IsChrome =3D function() {
        if (navigator.userAgent) {
            return (navigator.userAgent.toLowerCase().indexOf('chrome') =
> -1);
        }
        return false;
    }
}


function EventManager()
{
	this.Events =3D new Sys.EventHandlerList();
	this.CommandEvents =3D new Sys.EventHandlerList();
}

EventManager.prototype =3D=20
{
	PostEvent : function(eventId, sender, args)
	{
		var handler =3D this.Events.getHandler(eventId);
		if (handler =3D=3D null)
		{
			return;
		}
		handler(sender, args);
	},

	PostCommandEvent : function(eventId, sender, args)
	{
		var handler =3D this.CommandEvents.getHandler(eventId);
		if (handler =3D=3D null)
		{
			return;
		}
		handler(sender, args);
	}
}

/////////////////////////////////////////////////////////////////////////=
///////
// Dialog Box
DialogBox =3D function DialogBox(container, containingWindow, id) {
    DialogBox.initializeBase(this, [ container, containingWindow, id, =
false ]);
   =20
    this.Message =3D null;
    this.Title =3D null;
    this.Id =3D id;
    this.okButton =3D null;
    this.cancelButton =3D null;
    this.okButtonFunction =3D null;
    this.okCancelButtonFunction =3D null;
}
DialogBox.prototype =3D {
    _container: null,
    _elements: null,
    _title: null,
    _closeButton: null,

    OnLoad: function DialogBox$OnLoad()
    {
        this._createDialog(this.Id);
    },

    _createDialog: function DialogBox$_createDialog(id)
    {
        var dialogFrame =3D this._createDiv(this.Id, 'dialogFrame');

        var dialogWidth;
        var dialogFrameLeft =3D 20;

        if (LayoutOptions.SlideWidth > 0)
        {
            dialogFrameLeft +=3D =
parseInt($('CurrentSlideArea').style.left);
            dialogWidth =3D LayoutOptions.SlideWidth - 40;
        }
        else
        {
            if (LayoutOptions.DefaultPosition =3D=3D 1 || =
LayoutOptions.DefaultPosition =3D=3D 4)
            {
                dialogFrameLeft +=3D LayoutOptions.VideoWidth;
            }
            dialogWidth =3D (LayoutOptions.PlayerWidth - =
LayoutOptions.VideoWidth - 40);
        }

        if (dialogWidth > 400)
        {
            dialogWidth =3D 400;
        }

        dialogFrame.style.position =3D 'absolute';
        dialogFrame.style.left =3D dialogFrameLeft + 'px';
        dialogFrame.style.width =3D dialogWidth + 'px';


        var dialogHeader =3D this._createDiv(this.Id + 'Header', =
'dialogTitle');
        var dialogIcon =3D this._createDiv(this.Id + 'HeaderIcon', =
'dialogIcon');
        var dialogHeaderText =3D this._createDiv(this.Id + 'HeaderText', =
'dialogTitleText', this.Title);
        this._closeButton =3D this._createCloseButton(this.Id + =
'HeaderCloseButton');

        this._closeButton.observe('mouseover', =
Function.createDelegate(this, this._closeButtonOnMouseOver));
        this._closeButton.observe('mouseout', =
Function.createDelegate(this, this._closeButtonOnMouseOut));
        this._closeButton.observe('click', Function.createDelegate(this, =
this._closeButtonOnClick));

        var dialogMessage =3D this._createDiv(this.Id + 'Message', =
'dialogMessageText', this.Message);
        var dialogButtonContainer =3D this._createDiv(this.Id + =
'MessageButton', 'dialogButtonContainer');
        if (this.okButton)
        {
            var okButton =3D this._createButton(this.Id + '_okButton', =
'OK', true, 'return true', this._okButtonOnClick);
            okButton.observe('click', Function.createDelegate(this, =
this._okButtonOnClick));
            dialogButtonContainer.appendChild(okButton);
        }
        if (this.cancelButton)
        {
            var cancelButton =3D this._createButton(this.Id + =
'_cancelButton', 'Cancel', false, 'return false', =
this.cancelButtonFunction);
            dialogButtonContainer.appendChild(cancelButton);
        }

        dialogHeader.appendChild(dialogIcon);
        dialogHeader.appendChild(dialogHeaderText);
        dialogHeader.appendChild(this._closeButton);

        dialogFrame.appendChild(dialogHeader);
        dialogFrame.appendChild(dialogMessage);
        dialogFrame.appendChild(dialogButtonContainer);

        document.body.appendChild(dialogFrame);
    },

    _createCloseButton: function DialogBox$_createCloseButton(id)
    {
        var element =3D $(document.createElement('div'));
        element.setAttribute('id', this.Id + '_closeButton');
        element.className =3D 'dialogCloseButtonNormal';
        return element;
    },

    _closeButtonOnMouseOver: function =
DialogBox$_closeButtonOnMouseOver(sender, args)
    {
        this._closeButton.className =3D 'dialogCloseButtonOver';
    },

    _closeButtonOnMouseOut: function =
DialogBox$_closeButtonOnMouseOut(sender, args)
    {
        this._closeButton.className =3D 'dialogCloseButtonNormal';
    },

    _closeButtonOnClick: function DialogBox$_closeButtonOnClick(sender, =
args)
    {
        this._closeButton.className =3D 'dialogCloseButtonNormal';
        document.body.removeChild($(this.Id));
    },

    _okButtonOnClick: function DialogBox$_okButtonOnClick(sender, args)
    {
        document.body.removeChild($(this.Id));
    },

    _addButton: function DialogBox$_createButton(id, text, dismiss, =
returns, clickevent)
    {
        var parentElement =3D document.getElementById(this.Id + =
'MessageButton');
        var newButton =3D this._createButton(id, text, dismiss, returns, =
clickevent);
        parentElement.appendChild(newButton);
    },

    _createButton: function DialogBox$_createButton(id, text, dismiss, =
returns, clickevent)
    {
        var element =3D $(document.createElement('div'));
        element.setAttribute('id', id);
        element.className =3D 'dialogButton';
        element.innerHTML =3D text;
        if (dismiss)
        {
            clickevent =3D 'document.body.removeChild($(\'' + this.Id + =
'\'));' + clickevent + ';';
            //element.setAttribute('onclick', =
'document.body.removeChild($(\''+ this.Id +'\'));' + returns +'');
        }
        if (returns)
        {
            clickevent =3D clickevent + returns;
        }
        element.setAttribute('onclick', clickevent);
        return element;
    },

    _createDiv: function DialogBox$_createDiv(id, className, html)
    {
        var element =3D $(document.createElement('div'));
        element.setAttribute('id', id);
        element.className =3D className;
        if (html)
        {
            element.innerHTML =3D html;
        }
        return element;
    }
}

function PresentationFailedToLoad(id,error)
{
    if(GlobalOptions.ErrorPage.length > 0)
    {
        var errorPage =3D GlobalOptions.ErrorPage;
        if(errorPage.indexOf('?') > -1)
        {
            errorPage +=3D '&';   =20
        }
        else
        {
            errorPage +=3D '?';
        }
       =20
        if(window.ErrorStatus)
        {
            var errorMessage =3D String.format("Manifest Load Error : =
{0} - {1}",ErrorStatus.Code,ErrorStatus.Text);
            errorPage =3D =
String.format("{0}errorType=3DClientLoad&errorDetails=3D{1}",errorPage,en=
codeURIComponent(errorMessage));
        }
        else
        {
            errorPage =3D =
String.format("{0}errorType=3DClientLoad&errorDetails=3D{1}",errorPage,en=
codeURIComponent(error));  =20
        }
       =20
        window.location =3D errorPage;
    }
	   =20
    var errorMessage =3D 'The requested presentation failed to =
load.<br/><br/>';
    var presentationFailureErrorDialog =3D new DialogBox(id);
    presentationFailureErrorDialog.Message=3D errorMessage + error;
    presentationFailureErrorDialog.Title=3D 'Mediasite Error';
    presentationFailureErrorDialog.Id =3D id;
    presentationFailureErrorDialog.okButton=3D true;
    presentationFailureErrorDialog.OnLoad();
    return false;
}


function ReportingCallManager()
{=09
	ReportingCallManager.prototype.OnSuccess =3D function(result, context)
	{
	}

	ReportingCallManager.prototype.OnFailure =3D function(error, context)
	{
	    //need to eat abort errors
	}
}

OptionsManager =3D function()
{
	this._options =3D {};
	this._Initialize();
}

OptionsManager.prototype =3D
{=09
	_Initialize : function()
	{
	},
	=09
	_GetBoolOptionFromCookie : function(optionType, def)
	{
	    return new MediasitePlayerCookie().GetBoolValue(optionType, def);
	},
=09
	_SetBoolOptionToCookie : function(optionType, val)
	{
	    return new MediasitePlayerCookie().SetBoolValue(optionType, val);
	},
	=09
	GetOption : function(optionType)
	{
		var val =3D this._options[optionType];
		if (typeof(val) !=3D 'undefined')
		{
			return val;
		}
		return null;
	},
	=09
	SetOption : function(optionType, val)
	{
		this._options[optionType] =3D val;
		this._FireOptionChanged(optionType, val);
	    this._SetBoolOptionToCookie(optionType, val);
	},
=09
	_FireOptionChanged : function(optionType, val)
	{
		mPlayer.EventManager.PostEvent(SfKernel.EventType.OptionChanged, this, =
{OptionType:optionType, Value:val});
	}
}



SfKernel.XMLHttpSyncExecutor =3D function SfKernel$XMLHttpSyncExecutor() =
{

    SfKernel.XMLHttpSyncExecutor.initializeBase(this);
}

    function SfKernel$XMLHttpSyncExecutor$executeRequest() {
        if (arguments.length !=3D=3D 0) throw Error.parameterCount();
        this._webRequest =3D this.get_webRequest();

        if (this._started) {
            throw =
Error.invalidOperation(String.format(Sys.Res.cannotCallOnceStarted, =
'executeRequest'));
        }
        if (this._webRequest =3D=3D=3D null) {
            throw Error.invalidOperation(Sys.Res.nullWebRequest);
        }

        var body =3D this._webRequest.get_body();
        var headers =3D this._webRequest.get_headers();
        this._xmlHttpRequest =3D new XMLHttpRequest();
        this._xmlHttpRequest.onreadystatechange =3D =
this._onReadyStateChange;

        var verb =3D this._webRequest.get_httpVerb();       =20
        this._xmlHttpRequest.open(verb, =
this._webRequest.getResolvedUrl(), false /*SYNC*/);
        if (headers) {
            for (var header in headers) {
                var val =3D headers[header];
                if (typeof(val) !=3D=3D "function")
                    this._xmlHttpRequest.setRequestHeader(header, val);
            }
        }

        if (verb.toLowerCase() =3D=3D=3D "post") {
            // If it's a POST but no Content-Type was specified, default =
to application/x-www-form-urlencoded
            if ((headers =3D=3D=3D null) || !headers['Content-Type']) {
                this._xmlHttpRequest.setRequestHeader('Content-Type', =
'application/x-www-form-urlencoded');
            }

            // DevDiv 15893: If POST with no body, default to ""(FireFox =
needs this)
            if (!body) {
                body =3D "";
            }
        }

        this._xmlHttpRequest.send(body);
        this._started =3D true;
    }  =20

SfKernel.XMLHttpSyncExecutor.prototype =3D {

    executeRequest: SfKernel$XMLHttpSyncExecutor$executeRequest
}
SfKernel.XMLHttpSyncExecutor.registerClass('SfKernel.XMLHttpSyncExecutor'=
, Sys.Net.XMLHttpExecutor);

function MediasitePlayerCookie() {
    this.name =3D "MediasitePlayerOptions";
    this.expires =3D null;
    this.path =3D null;

    this.values =3D new Object();
    this.valueDelimiter =3D "&";

    this.SetExpires =3D function(value) {
        this.expires =3D value;
    }

    this.SetPath =3D function(value) {
        this.path =3D value;
    }

    this.SetValue =3D function(name, value) {
        this.ReadCookieData();
        this.values[name] =3D value;
        this.WriteCookieData();
    }

    this.SetBoolValue =3D function(name, isTrue) {
        this.ReadCookieData();
        if (isTrue) {
            this.values[name] =3D "true";
        }
        else {
            this.values[name] =3D "false";
        }
        this.WriteCookieData();
    }

    this.GetValue =3D function(name) {
        this.ReadCookieData();
        return this.values[name];
    }

    this.GetNumberValue =3D function(name, def) {
        this.ReadCookieData();
        if (this.values[name] =3D=3D null) {
            return def;
        }

        return Number(this.values[name]);
    }

    this.GetBoolValue =3D function(name, def) {
        this.ReadCookieData();
        if (this.values[name] =3D=3D null) {
            return def;
        }

        if (this.values[name] =3D=3D "true") {
            return true;
        }
        else {
            return false;
        }
    }

    this.WriteCookieData =3D function() {
        if (this.expires =3D=3D null) {
            var now =3D new Date();
            this.expires =3D new Date(now.getFullYear() + 1, =
now.getMonth(), now.getDate());
        }

        var cookieData =3D "";
        for (var key in this.values) {
            cookieData +=3D key;
            cookieData +=3D "=3D";
            cookieData +=3D escape(this.values[key]);
            cookieData +=3D this.valueDelimiter;
        }
        cookieData =3D cookieData.substring(0, cookieData.length - 1);

        var newCookie =3D String.format("{0}=3D{1}", this.name, =
cookieData) +
                        ((this.path) ? "; path=3D" + this.path : "") +
		                ((this.expires) ? "; expires=3D" + =
this.expires.toGMTString() : "");

        document.cookie =3D newCookie;

    }

    this.ReadCookieData =3D function() {
        if (document.cookie) {
            var begin =3D document.cookie.indexOf(this.name + "=3D");
            if (begin !=3D -1) {
                begin +=3D this.name.length + 1;
                var end =3D document.cookie.indexOf(";", begin);
                if (end =3D=3D -1) {
                    end =3D document.cookie.length;
                }

                var rawCookie =3D document.cookie.substring(begin, end);
                var entries =3D rawCookie.split(this.valueDelimiter);

                for (var i =3D 0; i < entries.length; i++) {
                    var parts =3D entries[i].split("=3D");

                    if (parts.length =3D 2) {
                        this.values[parts[0]] =3D unescape(parts[1]);
                    }
                }
            }
        }
    }

}

Type.registerNamespace('SfEmail');

SfEmail.ValidateEmailAddress =3D function(address)
{=20
    var emailRegEx =3D /^[A-Z0-9.'_%+-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}$/i;
    return emailRegEx.test(address);
}

SfEmail.EnableStartTime =3D function()
{
    var enable =3D $("emailInviteStartcb").checked;
    $("emailInviteArea_emailInviteStartTimetxt").disabled =3D !enable;
    SfEmail.UpdateMessage();
}

SfEmail.UpdateMessage =3D function()
{
    var startTimeInputElement =3D =
$("emailInviteArea_emailInviteStartTimetxt");
    var startTimeInput =3D startTimeInputElement.value;
   =20
    var checkboxElement =3D $("emailInviteStartcb");
    var messageFieldElement =3D =
$("emailInviteArea_emailInviteMessageFieldtxt");
    if(checkboxElement.checked)
    {
        var startTimeMS =3D =
SfKernel.DurationDisplayToMS(startTimeInput);
        messageFieldElement.value =3D replaceStartPoint(startTimeMS);
    }
    else
    {
        messageFieldElement.value =3D replaceStartPoint(0);
    }
       =20
    function replaceStartPoint(startTimeMS)
    {
        var messageText =3D =
$("emailInviteArea_emailInviteMessageFieldtxt").value;
        var playFromString =3D "&playfrom=3D";
        var peidString =3D "peid=3D";
        var startTimeHMS =3D SfKernel.GetDisplayDuration(startTimeMS, =
true);

        if(messageText.match(playFromString) =3D=3D  null && startTimeMS =
> 0)
        {
            messageText =3D messageText.replace(peidString + =
getPeId(),peidString + getPeId() + playFromString + startTimeMS);
        }
        else
        {
            var startIndex =3D messageText.indexOf(playFromString);
            var endIndex =3D messageText.indexOf("\n",startIndex);
            var oldStartTime =3D =
messageText.substring(startIndex,endIndex);
            if(startTimeMS > 0)
            {
                messageText =3D messageText.replace(peidString + =
getPeId() + oldStartTime,peidString + getPeId() + playFromString + =
startTimeMS);
            }
            else
            {
                messageText =3D messageText.replace(peidString + =
getPeId() + oldStartTime,peidString + getPeId());                   =20
            }
        }       =20
        return messageText;       =20
    }
   =20
    function getPeId(){return Manifest.PresentationId.replace(/-/g,"");}
   =20
}
 =20
SfEmail.SetInviteStartTime =3D function()
{
    var startTimeInputElement =3D =
$("emailInviteArea_emailInviteStartTimetxt");
    var currentTimeDisplay =3D $("PlayerPositionArea").innerHTML;
    startTimeInputElement.value =3D =
currentTimeDisplay.substring(0,currentTimeDisplay.indexOf("/"));
    SfEmail.EnableStartTime();
}


SfEmail.ClientExport =3D function()
{
    SfEmail.CloseEmailInvitation();
    SfEmailIsShowing =3D false;

    var invite =3D SfEmail.CollectData();
    var mailTo =3D String.format("mailto:{0}?subject=3D{1}&body=3D{2}",
                                =
encodeURIComponent(invite.ToAddresses.join(",")),
                                encodeURIComponent(invite.Subject),
                                encodeURIComponent(invite.MessageBody));
    location.href =3D mailTo;
}

var SfEmailInvite =3D null;
var SfEmailIsShowing =3D false;

SfEmail.OpenEmailInvitation =3D function()
{
    if($("EmailInviteArea").style.display !=3D "block")
    {       =20
        SfEmail.HidePresentationCardScrollbars();
        $("emailInviteArea_emailInviteToFieldtxt").value =3D "";  =20
       =20
        var fromAddress =3D new =
MediasitePlayerCookie().GetValue("UserFromEmail");
        if(fromAddress !=3D undefined)
        {
            $("emailInviteArea_emailInviteFromFieldtxt").value =3D =
fromAddress;  =20
        }
                              =20
        if(Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand)
        {
            $("emailInviteStartcb").disabled =3D true;
        }
       =20
        if(SfEmailInvite)
        {     =20
            SfEmail.SetInviteStartTime();
           =20
            if(!SfEmailInvite.UseServerForSMTP)
            {
                SfEmail.ClientExport();
            }
            else
            {
                show("EmailInviteArea");
                SfEmailIsShowing =3D true;
            }
        }
        else
        {
            =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetInvite(Manifest=
.PlaybackTicketId, SfEmail.GetInviteOnSuccess); =20
        }       =20
    }
}

SfEmail.CloseEmailInvitation =3D function()
{
    hide("EmailInviteArea");
}

// workaround for issue in firefox 2 on mac where scrollbars show on top =
layer regardless of zIndex.
SfEmail.HidePresentationCardScrollbars =3D function()
{
    if($('CurrentSlideArea').offsetLeft =3D=3D =
($('PresentationCardArea').offsetLeft+1))
    {
        $('PresentationCardAreaScrollDiv').style.overflow =3D 'hidden';
        $('PresentationCardAreaScrollDiv').style.overflowY =3D 'hidden';
    }=09
}

SfEmail.ShowPresentationCardScrollbars =3D function()
{
    if($('CurrentSlideArea').offsetLeft =3D=3D =
($('PresentationCardArea').offsetLeft+1))
    {
        $('PresentationCardAreaScrollDiv').style.overflowY =3D 'scroll';
        $('PresentationCardAreaScrollDiv').style.overflowX =3D 'hidden';
    }=09
}

SfEmail.GetInviteOnSuccess =3D function(emailData) {
    $("emailInviteArea_emailInviteSubjectFieldtxt").value =3D =
emailData.Subject;
    var message =3D emailData.MessageBody;
    var messageCleaned =3D message.replace(/\t/g, "");
    $("emailInviteArea_emailInviteMessageFieldtxt").value =3D =
messageCleaned;

    SfEmailInvite =3D emailData;
    SfEmail.SetInviteStartTime();

    if (!emailData.UseServerForSMTP) {
        SfEmail.ClientExport();
    }
    else {
        show("EmailInviteArea");
        SfEmailIsShowing =3D true;
    }
}

SfEmail.SendEmail =3D function()
{
    var invite =3D SfEmail.CollectData();
   =20
    if(validateInvite(invite))
    {
        =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.SendInvite(Manifes=
t.PlaybackTicketId, invite, SfEmail.SendOnSuccess);       =20
        new MediasitePlayerCookie().SetValue("UserFromEmail", =
invite.FromAddress);
    }
    else
    {
        SfEmail.ShowMessage(Localization.EmailInviteInvalid,false)
    }
   =20
    function validateInvite(invite)
    {  =20
        if(!SfEmail.ValidateEmailAddress(invite.FromAddress))
        {
            return false;
        }           =20

        for (var i=3D0;i<invite.ToAddresses.length;i++)
        {
            if(!SfEmail.ValidateEmailAddress(invite.ToAddresses[i]))=20
            {
                return false;
            }
        }
        return true;
    }

}

SfEmail.SendOnSuccess =3D function(message)
{
    SfEmail.ShowMessage(message,true);
}


SfEmail.ShowMessage =3D function(message,closeParent)
{
    show('emailInviteModalMask');
    show('emailInviteReturnDiv');
    $("emailInviteReturnDivMessage").innerHTML =3D message;=20
    $("emailInviteReturnDivCloseButtonFlag").innerHTML =3D closeParent;
}

SfEmail.CloseMessage =3D function()
{
    hide('emailInviteModalMask');
    hide('emailInviteReturnDiv');
    if($("emailInviteReturnDivCloseButtonFlag").innerHTML !=3D "false")
    {
        SfEmail.CloseEmailInvitation();
        SfEmailIsShowing =3D false;
    }
    else
    {
        $("emailInviteReturnDivCloseButtonFlag").innerHTML =3D "true";
    }
}

function show(e)
{
    $(e).style.display =3D "block";
}
function hide(e)
{
    $(e).style.display =3D "none";   =20
}


SfEmail.CollectData =3D function()
{
    var invite =3D new =
SonicFoundry.Mediasite.Player.DataAccess.PlayerEmailMessage();
    invite.FromAddress =3D =
$("emailInviteArea_emailInviteFromFieldtxt").value;
   =20
    var recipients =3D =
$("emailInviteArea_emailInviteToFieldtxt").value.split(";");
   =20
    for (var i=3D0;i<recipients.length;i++)
    {
        recipients[i] =3D recipients[i].trim();
    }    =20
       =20
    invite.ToAddresses =3D recipients;
    invite.Subject =3D =
$("emailInviteArea_emailInviteSubjectFieldtxt").value;
    invite.MessageBody =3D =
$("emailInviteArea_emailInviteMessageFieldtxt").value;   =20
    return invite;
}

/// Ask Question Area

Type.registerNamespace('SfForum');

var SfForumIsShowing =3D false;

SfForum.EnableQuestionTime =3D function()
{
    var enable =3D $("askQuestionTimecb").checked;
    $("askQuestionArea_askQuestionTimetxt").disabled =3D !enable;
}

SfForum.OpenAskQuestion =3D function()
{
    if($("AskQuestionArea").style.display !=3D "block")
    {
        SfEmail.HidePresentationCardScrollbars();
        show("AskQuestionArea");
        SfForumIsShowing =3D true;

        this.TextAreasInit(); =20
       =20
        var userFromName =3D new =
MediasitePlayerCookie().GetValue("UserFromName");
        if(userFromName !=3D undefined)
        {
          $("askQuestionArea_askQuestionNameFieldtxt").value =3D =
userFromName;  =20
        }
        var userFromEmail =3D new =
MediasitePlayerCookie().GetValue("UserFromEmail");
        if(userFromEmail !=3D undefined)
        {
          $("askQuestionArea_askQuestionEmailFieldtxt").value =3D =
userFromEmail;
        }
       =20
        if(Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand)
        {
            // hide checkbox and move send button off form field
            $("askQuestionButtons").style.height =3D '44px';
            $("askQuestionButtons").style.top =3D '12px';
            $("askQuestionButtons").style.right =3D '12px';
            $("askQuestionTime").style.display =3D "none";
            $("askQuestionTimecb").checked =3D false;
            $("askQuestionArea_askQuestionTimetxt").value =3D =
"00:00:00";
        }
        else
        {
            $("askQuestionTimecb").checked =3D true;
            SfForum.SetPresentationTime();
        }              =20
    }
}

SfForum.CloseAskQuestion =3D function()
{
    hide('AskQuestionArea');
}

SfForum.SetPresentationTime =3D function()
{
    var currentTimeDisplay =3D $("PlayerPositionArea").innerHTML;   =20
    $("askQuestionArea_askQuestionTimetxt").value =3D =
currentTimeDisplay.substring(0,currentTimeDisplay.indexOf("/"));
    SfForum.EnableQuestionTime();
}

SfForum.TextAreasInit =3D function() {
    var obj =3D =
document.getElementById("askQuestionArea_askQuestionMessageFieldtxt");
    obj.onkeyup =3D SfForum.ForceMaxLength;
    obj.onblur =3D SfForum.ForceMaxLength;
}

SfForum.ForceMaxLength =3D function() {
var characterLimit =3D 2048;
if (this.value.length > characterLimit) {
        this.value =3D this.value.substring(0, characterLimit);
    }
}

SfForum.SendQuestion =3D function()
{
    var questionInfo =3D new =
SonicFoundry.Mediasite.Player.DataAccess.PresentationQuestion();
   =20
    questionInfo.Submitter =3D =
$("askQuestionArea_askQuestionNameFieldtxt").value;
    questionInfo.SubmitterEmail =3D =
$("askQuestionArea_askQuestionEmailFieldtxt").value;
    questionInfo.Subject =3D =
$("askQuestionArea_askQuestionSubjectFieldtxt").value;
    questionInfo.Question =3D =
$("askQuestionArea_askQuestionMessageFieldtxt").value;     =20
             =20
    if($("askQuestionTimecb").checked)
    {
        questionInfo.TimeInPresentation =3D =
SfKernel.DurationDisplayToMS($("askQuestionArea_askQuestionTimetxt").valu=
e);
    }  =20
    else
    {
        questionInfo.TimeInPresentation =3D 0;
    }
   =20
    var errors =3D SfForum.AskQuestionFormErrors(questionInfo);
   =20
    if(errors.length > 0)
    {
        SfForum.ShowAskQuestionMessage(errors,false);
        return;
    }
       =20
    =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.SendQuestion(Manif=
est.PlaybackTicketId, questionInfo, SfForum.SendQuestionOnSuccess);      =
        =20
   =20
    new MediasitePlayerCookie().SetValue("UserFromName", =
questionInfo.Submitter);
   =20
    if(questionInfo.SubmitterEmail.length > 0)
    {
        new MediasitePlayerCookie().SetValue("UserFromEmail", =
questionInfo.SubmitterEmail);
    }   =20
}

SfForum.AskQuestionFormErrors =3D function(questionInfo)
{
    var errors =3D "";
   =20
    if(questionInfo.Submitter.length < 1)
    {
   =20
        errors +=3D "<br/> - " + Localization.ForumNameRequired;
    }   =20
   =20
    if(questionInfo.SubmitterEmail.length > 0 && =
!SfEmail.ValidateEmailAddress(questionInfo.SubmitterEmail))
    {
        errors +=3D "<br/> - " + Localization.ForumEmailInvalid;
    }

    if(questionInfo.Subject.length < 1)
    {
        errors +=3D "<br/> - " + Localization.ForumSubjectRequired;
    }
           =20
    if(questionInfo.Question.length < 1)
    {
        errors +=3D "<br/> - " + Localization.ForumQuestionRequired;
    }
   =20
    if(questionInfo.TimeInPresentation > Manifest.Duration)
    {
        errors +=3D "<br/> - " + Localization.ForumQuestionTimeError;
    }
   =20
    if(errors.length > 0)
    {
        errors =3D Localization.ForumErrorMessage +"<br/>" + errors;
    }
    return errors;
}

SfForum.SendQuestionOnSuccess =3D function(response)
{
           =20
    if (response.Success)
    {
        =
SfForum.ShowAskQuestionMessage(Localization.SubmitQuestionSuccess, =
true);
   =20
        $("askQuestionArea_askQuestionMessageFieldtxt").value =3D "";    =
   =20
        $("askQuestionArea_askQuestionSubjectFieldtxt").value =3D "";    =

    }
    else
    {
        if(response.Message.length > 0)
        {
            SfForum.ShowAskQuestionMessage(response.Message, false);     =
      =20
        }
        else
        {
            =
SfForum.ShowAskQuestionMessage(Localization.SubmitQuestionFailure, =
false);           =20
        }       =20
    }

}

SfForum.ShowAskQuestionMessage =3D function(message,closeParent)
{
    show('askQuestionModalMask');
    show('askQuestionReturnDiv');
    $("askQuestionReturnDivMessage").innerHTML =3D message;=20
    $("askQuestionReturnDivCloseButtonFlag").innerHTML =3D closeParent;
}

SfForum.CloseAskQuestionMessage =3D function()
{
    hide('askQuestionModalMask');
    hide('askQuestionReturnDiv');
    if($("askQuestionReturnDivCloseButtonFlag").innerHTML !=3D "false")
    {
        SfForum.CloseAskQuestion();
        SfForumIsShowing =3D false;
    }
    else
    {
        $("askQuestionReturnDivCloseButtonFlag").innerHTML =3D "true";
    }
}
   =20


ChangePosition=3Dfunction(){};

ChangePosition.test=3Dfunction(q)
{
    var positionArray =3D this.BuildPositionArray(q);
    this.SetPositions(positionArray);
}

ChangePosition.OnLoad=3Dfunction()
{
    var positionArray =3D =
this.BuildPositionArray(parseInt(LayoutOptions.DefaultPosition));
    this.SetPositions(positionArray);
}

ChangePosition.BuildPositionArray =3D function(quadrant) {
    var changeArray =3D new Array();

    var vW =3D LayoutOptions.VideoWidth;
    var vH =3D LayoutOptions.VideoHeight;
    var sW =3D LayoutOptions.SlideWidth; // padding surrounding the =
currentslide
    var sH =3D LayoutOptions.SlideHeight;
    var pW =3D LayoutOptions.PlayerWidth;
    var pH =3D LayoutOptions.PlayerHeight;
    var adBannerHeight =3D 0;
    var adBannerWidth =3D 0;
    var titleBannerHeight =3D 0;
    var titleBannerWidth =3D 0;

    if (LayoutOptions.Images["AdBanner"]) {
        adBannerHeight =3D =
parseInt(LayoutOptions.Images["AdBanner"].Height);
        adBannerWidth =3D =
parseInt(LayoutOptions.Images["AdBanner"].Width);
    }
    if (LayoutOptions.Images["TitleBanner"]) {
        titleBannerHeight =3D =
parseInt(LayoutOptions.Images["TitleBanner"].Height);
        titleBannerWidth =3D =
parseInt(LayoutOptions.Images["TitleBanner"].Width);
    }

    // see if we have a value for these... otherwise use the following =
values.
    var btnPollWidth =3D 40;
    var btnEmailWidth =3D 40;
    var btnLinksWidth =3D 40;
    var btnAskButtonWidth =3D 40;
    var btnHelpWidth =3D $('btnHelp').offsetWidth;
    var btnPlayPauseWidth =3D 30;
    var btnSkipBackWidth =3D 30;
    var btnMuteWidth =3D 15;
    var btnCCWidth =3D 30;
    var btnChaptWidth =3D 28;
    var btnFullScreenWidth =3D 30;
    if (mPlayer.PlayerDetect.GetPlayerType() =3D=3D =
SfKernel.MediaPlayerType.SL1) {
        btnFullScreenWidth =3D 0;
    }
    var liveIndicatorWidth =3D 20;
    var playerControlsPadding =3D 4;
    var statusBarHeight =3D 16;
    var playerControlsHeight =3D 42;
    var videoElementPadding =3D 4;
    var playerControlsButtonSpacing =3D 0;
    var playerSliderPadding =3D playerControlsPadding * 2;
    var playerSliderWidth =3D vW - (playerSliderPadding * 2);
    var volumeSliderWidth =3D 33;
    var speedControlWidth =3D 35;
    var languageSelectionAreaWidth =3D 40;
    var commandBarPadding =3D 4;
    var linksPanelWidth =3D 340;
    var playerPadding =3D 3;
    var playerPaddingRight =3D 6;
    var playerPaddingLeft =3D 2;
    var playerMarginBottom =3D 1;
    var playerMarginRight =3D 4;
    var playerMarginLeft =3D 4;
    var commandBarButtonSpacing =3D -3;
    var commandBarHeight =3D 28;
    var currentSlideAreaTopPadding =3D 4;
    var currentSlideAreaLeftPadding =3D 4;
    var currentSlideAreaBorderThickness =3D 1;
    var currentSlideAreaLeft =3D ((pW - (vW + sW + playerPadding * 2)) / =
2) + vW; // obsolete?
    var presentationCardBorderThickness =3D 1;
    var applicationVersionAreaWidth =3D 83;
    var slideBrowserWidth =3D sW;
    var slideBrowserHeight =3D sH - (slideBrowserToolbarHeight - =
currentSlideAreaTopPadding);
    var slideBrowserWidth =3D 200;
    var slideBrowserHeight =3D 100 - (slideBrowserToolbarHeight - =
currentSlideAreaTopPadding);
    var slideBrowserToolbarHeight =3D 26;
    var thumbNailPropertiesContainerWidth =3D 190;
    var thumbNailPropertiesContainerHeight =3D 112;

    var totalMediaWidth =3D 0;
    var playerRemainingSpace =3D 0;
    var presentationCardWidth =3D pW - vW - 8;

    if (sW > 0) { totalMediaWidth =3D sW + (currentSlideAreaLeftPadding =
* 2) + vW + 2; }
    else { totalMediaWidth =3D presentationCardWidth + =
(currentSlideAreaLeftPadding * 2) + vW + 2; }
    playerRemainingSpace =3D Math.floor((pW - totalMediaWidth) / 3);

    if (playerRemainingSpace < 0) {
        playerRemainingSpace =3D 0
    }
    else {
        playerMarginLeft =3D playerRemainingSpace;
        playerMarginRight =3D playerRemainingSpace;
        playerPaddingLeft =3D playerRemainingSpace;
        currentSlideAreaLeft =3D (2 * playerRemainingSpace) + vW + 2;
    }

    var tabsLeft =3D currentSlideAreaLeft + 4;
    var tabsRight =3D tabsLeft;
    if ($("btnSlideShowImg")) {
        tabsRight +=3D $("btnSlideShowImg").offsetWidth;
    }
    if ($("btnSlideListImg")) {
        tabsRight +=3D $("btnSlideListImg").offsetWidth;
    }
    var currentSlideToolbarWidth =3D 50;
    var slideTickerWidth;
    if ($("SlideTicker")) {
        slideTickerWidth =3D $("SlideTicker").offsetWidth;
    }
    var remainingCommandBarWidth =3D (pW - tabsRight - =
applicationVersionAreaWidth - btnHelpWidth - currentSlideToolbarWidth);
    var remainingCommandBarSpacing =3D =
Math.floor((remainingCommandBarWidth - slideTickerWidth) / 2);
    if (remainingCommandBarWidth < 0) { remainingCommandBarSpacing =3D 0 =
}
    var presentationCardTop =3D titleBannerHeight + commandBarHeight + =
videoElementPadding + vH + statusBarHeight + playerControlsHeight + =
playerRemainingSpace;
    var presentationCardHeight =3D pH - (titleBannerHeight + =
commandBarHeight + videoElementPadding + vH + statusBarHeight + =
playerControlsHeight + playerRemainingSpace) - playerMarginBottom;
    var presentationCardFooterHeight =3D 16;
    var speedControlRemainingSpace =3D (vW - playerControlsPadding - =
btnFullScreenWidth - volumeSliderWidth - playerControlsButtonSpacing - =
btnMuteWidth - btnCCWidth - 4) - (playerControlsPadding + =
btnPlayPauseWidth + btnSkipBackWidth + (2 * =
playerControlsButtonSpacing));
    var speedControlLeft =3D ((speedControlRemainingSpace / 2) - =
(speedControlWidth / 2)) + (playerControlsPadding + btnPlayPauseWidth + =
btnSkipBackWidth + (2 * playerControlsButtonSpacing));
    var linksPanelHeight =3D sH =3D=3D 0 ? (vH + playerControlsHeight - =
18) : sH - 18;
    linksPanelHeight =3D linksPanelHeight > 280 ? 280 : =
linksPanelHeight;

    var basePositionArray =3D 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 - 7),
    "btnCC,l," + (vW - playerControlsPadding - btnFullScreenWidth - =
volumeSliderWidth - playerControlsButtonSpacing - btnMuteWidth - =
btnCCWidth - 6),
    "btnChapters,l," + (vW - playerControlsPadding - btnFullScreenWidth =
- volumeSliderWidth - playerControlsButtonSpacing - btnMuteWidth - =
btnCCWidth - btnChaptWidth - 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)
    );
    changeArray =3D basePositionArray.concat(basePositionArray);

    if ((vH / vW) < .75) // widescreen player
    {
        if (quadrant =3D=3D 1 || quadrant =3D=3D 4) {
            playerPadding =3D 0;
        }
        else {
            playerPadding =3D 4;
            playerPaddingLeft =3D 0;
            playerMarginRight =3D 2;
        }
    }

    if (sW > 0 && sH > 0) // if slide area is shown
    {
        var slidePositionArray =3D 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_emailInviteMessageFieldtxt,maxH," + (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),
        "emailInviteArea_emailInviteMessageFieldtxt,maxW," + (sW - 100),
        "AskQuestionArea,w," + (sW - 20),
        "askQuestionArea_askQuestionMessageFieldtxt,h," + (sH - 150),
        "askQuestionArea_askQuestionMessageFieldtxt,maxH," + (sH - 150),
        "askQuestionArea_askQuestionNameFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionEmailFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionSubjectFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionMessageFieldtxt,w," + (sW - 100),
        "askQuestionArea_askQuestionMessageFieldtxt,maxW," + (sW - 100),
        "emailInviteStartingPoint,w," + (sW - 100),
        "LinksPanelContainer,h," + linksPanelHeight
        );
        changeArray =3D changeArray.concat(slidePositionArray);
    }
    if (quadrant =3D=3D 1 || quadrant =3D=3D 4) {
        // players with video on left
        var leftPositionArray =3D 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 =3D changeArray.concat(leftPositionArray);
    }

    if (quadrant =3D=3D 3 || quadrant =3D=3D 2) {
        // players with video on right
        var tabsLeft =3D ((playerMarginLeft + sW) - =
$("btnSlideShowImg").offsetWidth - $("btnSlideListImg").offsetWidth);
        var helpRight =3D (playerMarginLeft + =
applicationVersionAreaWidth + (3 * commandBarButtonSpacing) + 5);
        var rightPositionArray =3D 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 =3D changeArray.concat(rightPositionArray);
    }

    if (quadrant =3D=3D 1 || quadrant =3D=3D 2) {
        // values for Top Viewers
        var topPositionArray =3D new Array(
        "PlayerContainer,t," + (titleBannerHeight + commandBarHeight + =
2),
        "PresentationCardArea,t," + presentationCardTop
        );
        changeArray =3D changeArray.concat(topPositionArray);
    }

    if (quadrant =3D=3D 3 || quadrant =3D=3D 4) {
        // values for Bottom Viewers
        var bottomPositionArray =3D new Array(
        "PlayerContainer,t," + (pH - playerMarginBottom - =
(videoElementPadding + vH + statusBarHeight + playerControlsHeight)),
        "PresentationCardArea,t," + (titleBannerHeight + =
commandBarHeight + 4)
        );
        changeArray =3D changeArray.concat(bottomPositionArray);
    }

    if ($('VendorLogo')) {
        var bannerSpecificPositionArray =3D new Array(
        "backgroundImage,h," + pH,
        "VendorLogo,t," + (pH - =
LayoutOptions.Images["VendorLogo"].Height - playerMarginBottom)
        );
        if (quadrant =3D=3D 1 || quadrant =3D=3D 4) {
            var bannerLeftArray =3D new Array(
            "VendorLogo,l," + (currentSlideAreaLeft + (((sW + 6) - =
$('VendorLogo').offsetWidth) / 2))
            );
            changeArray =3D changeArray.concat(bannerLeftArray);
        }
        if (quadrant =3D=3D 2 || quadrant =3D=3D 3) {
            var bannerRightArray =3D new Array(
            "VendorLogo,l," + (playerPaddingLeft + (((sW + 6) - =
$('VendorLogo').offsetWidth) / 2))
            );
            changeArray =3D changeArray.concat(bannerRightArray);
        }
        changeArray =3D changeArray.concat(bannerSpecificPositionArray);
    }

    // special cases ///////////////
    if (vW =3D=3D '200' && sW =3D=3D '1024') {
        var tinyVideoArray =3D new Array(
        "btnPlayPause,l," + 0,
        "btnSkipback,l," + 24,
        "PlayerSpeedControl,l," + 54,
        "btnCC,l," + 89,
        "btnChapters,l," + 75,
        "btnMute,l," + 114,
        "VolumeSlider,l," + 134,
        "btnFullScreen,l," + 170
        );
        changeArray =3D changeArray.concat(tinyVideoArray);
        $('PresentationCardAreaDurationLabel').style.display =3D 'none';
        $('PresentationCardAreaDurationText').style.display =3D 'none';

        if (mPlayer.PlayerDetect.GetPlayerType() =3D=3D =
SfKernel.MediaPlayerType.SL1) {
            var tinyVideoSL1Array =3D new Array(
            "btnCC,l," + 108,
            "btnChapters,l," + 78,
            "btnMute,l," + 138,
            "VolumeSlider,l," + 158
            );
            changeArray =3D changeArray.concat(tinyVideoSL1Array);
        }
        else {
            var tinyVideoWMArray =3D new Array("PlayerSpeedControl,l," + =
56);
            changeArray =3D changeArray.concat(tinyVideoWMArray);
        }
    }

    if (vW =3D=3D '400' && sW =3D=3D '360') {
        var remainingWidth =3D sW + 15;
        $('thumbNailViewButtonSmallThumbnails').style.display =3D =
'none';
        var compactViewerSpecialArray =3D 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_emailInviteMessageFieldtxt,maxH," + (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),
            "emailInviteArea_emailInviteMessageFieldtxt,maxW," + =
(remainingWidth - 82),
            "askQuestionArea_askQuestionMessageFieldtxt,h," + (sH - 57),
            "askQuestionArea_askQuestionMessageFieldtxt,maxH," + (sH - =
57),
            "askQuestionArea_askQuestionNameFieldtxt,w," + =
(remainingWidth - 82),
            "askQuestionArea_askQuestionEmailFieldtxt,w," + =
(remainingWidth - 82),
            "askQuestionArea_askQuestionSubjectFieldtxt,w," + =
(remainingWidth - 82),
            "askQuestionArea_askQuestionMessageFieldtxt,w," + =
(remainingWidth - 82),
            "askQuestionArea_askQuestionMessageFieldtxt,maxW," + =
(remainingWidth - 82),
            "emailInviteStartingPoint,w," + (remainingWidth - 82),
            "thumbNailViewButtonLargeThumbnails,l," + 18,
            "thumbNailViewButtonChapters,l," + 36,
            "ApplicationVersionArea,t," + (titleBannerHeight + 2),
            "PresentationCardArea,t," + (titleBannerHeight + =
commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2),
            "PresentationCardArea,w," + (sW + =
(currentSlideAreaLeftPadding * 2)),
            "PresentationCardArea,h," + (pH - (titleBannerHeight + =
commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2) - =
playerMarginBottom - 3),
            "CaptioningContainer,h," + (pH - (titleBannerHeight + =
commandBarHeight + 4 + sH + currentSlideAreaTopPadding * 2) - =
playerMarginBottom - 3),
            "PresentationCardAreaScrollDiv,h," + (pH - =
(titleBannerHeight + commandBarHeight + 4 + sH + =
currentSlideAreaTopPadding * 2) - playerMarginBottom - =
presentationCardFooterHeight)
        );
        changeArray =3D changeArray.concat(compactViewerSpecialArray);

        if (quadrant =3D=3D 1 || quadrant =3D=3D 4) {
            var compactViewerSpecialLeftArray =3D 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 =3D =
changeArray.concat(compactViewerSpecialLeftArray);
        }
        if (quadrant =3D=3D 2 || quadrant =3D=3D 3) {
            var compactViewerSpecialRightArray =3D 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 =3D =
changeArray.concat(compactViewerSpecialRightArray);
        }
    }
    else if (sW =3D=3D 0 || sH =3D=3D 0) {
        var presentationCardHeight =3D vH + statusBarHeight + =
playerControlsHeight;
        var noSlidesSpecialArray =3D new Array(
            "ApplicationVersionArea,t," + (titleBannerHeight + 2),
            "PresentationCardArea,t," + (titleBannerHeight + 2 + =
commandBarHeight),
            "ThumbNailsArea,t," + (titleBannerHeight + 10 + =
commandBarHeight),
            "PresentationCardArea,w," + presentationCardWidth,
            "PresentationCardArea,h," + presentationCardHeight,
            "CaptioningContainer,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_emailInviteMessageFieldtxt,maxH," + =
(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),
            "emailInviteArea_emailInviteMessageFieldtxt,maxW," + =
(presentationCardWidth - 80),
            "AskQuestionArea,w," + (presentationCardWidth),
            "ChapterPointsPanelDialog,w," + (presentationCardWidth),
            "ChapterPointsPanelDialog,h," + (presentationCardHeight),
            "ChapterPointsPanelDialogMessage,h," + =
(presentationCardHeight - 25),
            "ChapterPointsPanelDialogMessage,w," + =
(presentationCardWidth),
            "ChapterPointsPanelDialog,t," + (0),
            "askQuestionReturnDiv,w," + (presentationCardWidth),
            "askQuestionReturnDiv,marginLeft," + =
(Math.floor((presentationCardWidth) / 2) * -1),
            "askQuestionArea_askQuestionMessageFieldtxt,h," + =
(presentationCardHeight - 150),
            "askQuestionArea_askQuestionMessageFieldtxt,maxH," + =
(presentationCardHeight - 150),
            "askQuestionArea_askQuestionNameFieldtxt,w," + =
(presentationCardWidth - 80),
            "askQuestionArea_askQuestionEmailFieldtxt,w," + =
(presentationCardWidth - 80),
            "askQuestionArea_askQuestionSubjectFieldtxt,w," + =
(presentationCardWidth - 80),
            "askQuestionArea_askQuestionMessageFieldtxt,w," + =
(presentationCardWidth - 80),
            "askQuestionArea_askQuestionMessageFieldtxt,maxW," + =
(presentationCardWidth - 80),
            "emailInviteStartingPoint,w," + (presentationCardWidth - =
80),
            "LinksPanelContainer,h," + linksPanelHeight
        );
        changeArray =3D changeArray.concat(noSlidesSpecialArray);

        if (quadrant =3D=3D 1 || quadrant =3D=3D 4) {
            var noSlidesSpecialLeftArray =3D 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 =3D =
changeArray.concat(noSlidesSpecialLeftArray);
        }
        if (quadrant =3D=3D 2 || quadrant =3D=3D 3) {
            var noSlidesSpecialRightArray =3D 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 =3D =
changeArray.concat(noSlidesSpecialRightArray);
        }
        this.HideSlides();
    }
    else {
        var presentationCardArray =3D new Array(
            "PresentationCardArea,w," + vW,
            "PresentationCardArea,h," + (presentationCardHeight - 3),
            "CaptioningContainer,h," + (presentationCardHeight - 3),
            "PresentationCardAreaScrollDiv,h," + (presentationCardHeight =
- presentationCardFooterHeight - 3)
        );
        changeArray =3D changeArray.concat(presentationCardArray);
    }
    return changeArray;
}

ChangePosition.HideSlides=3Dfunction()
{
    $('SlideTicker').style.display =3D 'none';
    $('CurrentSlideArea').style.display =3D 'none';
    $('SlideTabs').style.display =3D 'none';
    $('ThumbNailsArea').style.display =3D 'none';
}

ChangePosition.SetPositions=3Dfunction(changeArray)
{
    for (var changeNum=3D0; changeNum<changeArray.length; changeNum++)
    {
       var thisChange =3D changeArray[changeNum].split(",");
       if(document.getElementById(thisChange[0]) !=3D 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;
            case "maxH":
                this.setMaxHeight(thisChange[0], thisChange[2]);
                break;
            case "maxW":
                this.setMaxWidth(thisChange[0], thisChange[2]);
                break;
            }
        }
    }
}

ChangePosition.setMargin=3Dfunction(e,dir,val)
{
    var E =3D $(e);
    switch(dir)
    {
    case "top":
        E.style.marginTop=3Dthis.withPX(val);
        break;
    case "right":=20
        E.style.marginRight=3Dthis.withPX(val);
        break;
    case "bottom":
        E.style.marginBottom=3Dthis.withPX(val);
        break;
    case "left":  =20
        E.style.marginLeft=3Dthis.withPX(val);
        break;
    }
}


ChangePosition.setPadding=3Dfunction(e,dir,val)
{
    var E =3D $(e);
    switch(dir)
    {
    case "top":
        E.style.paddingTop=3Dthis.withPX(val);
        break;
    case "right":=20
        E.style.paddingRight=3Dthis.withPX(val);
        break;
    case "bottom":
        E.style.paddingBottom=3Dthis.withPX(val);
        break;
    case "left":  =20
        E.style.paddingLeft=3Dthis.withPX(val);
        break;
    }
}

ChangePosition.getRemainingSpaceBetweenElements=3Dfunction(leftStop, =
rightStop)
{
    var spacing =3D (rightStop - leftStop);
    return spacing;
}
    =20
ChangePosition.withPX=3Dfunction(val){return val + "px";}
ChangePosition.setFloat=3Dfunction(e,f)
{
    $(e).style.cssFloat =3D f;
    $(e).style.styleFloat =3D f; /* for old IE */
}

ChangePosition.setZ=3Dfunction(e,zIndex){$(e).style.zIndex =3D zIndex;}
ChangePosition.setHeight=3D   function(e, height){$(e).style.height =3D =
this.withPX(height);}
ChangePosition.setWidth=3D    function(e, width) {$(e).style.width =3D =
this.withPX(width); }
ChangePosition.setMaxHeight=3Dfunction(e, height){$(e).style.maxHeight =
=3D this.withPX(height);}
ChangePosition.setMaxWidth=3D function(e, width) {$(e).style.maxWidth =
=3D this.withPX(width);}
ChangePosition.setPos=3Dfunction(e,direction,val)
{
    var E =3D $(e);
    switch(direction)
    {
    case "top":
        E.style.top=3Dthis.withPX(val);
        break;
    case "right":=20
        E.style.right=3Dthis.withPX(val);
        break;
    case "bottom":
        E.style.bottom=3Dthis.withPX(val);
        break;
    case "left":  =20
        E.style.left=3Dthis.withPX(val);
        break;
    }
}

ChangePosition.imgSwap=3Dfunction(e,ImageVariant)
{
    /* parses img url, returns old url but with new filename */
    var imageElement =3D $(e);
    var imgUrl =3D imageElement.src;
    imgUrl =3D imgUrl.split("/");
    var oldFileName =3D imgUrl.pop();
    imgUrl =3D imgUrl.join("/");
    imgUrl =3D imgUrl + "/" + ImageVariant;
    imageElement.src =3D imgUrl;
}

ChangePosition.setCSS=3Dfunction(theClass,element,value)=20
{
	var cssRules;
	if (document.all)=20
	{
	    cssRules =3D 'rules';
	}
	else if (document.getElementById)=20
	{
	    cssRules =3D 'cssRules';
	}
	for (var s =3D 0; s < document.styleSheets.length; s++)
	{
	    for (var r =3D 0; r < document.styleSheets[s][cssRules].length; =
r++)=20
	    {
	        if (document.styleSheets[s][cssRules][r].selectorText =3D=3D =
theClass)=20
	        {
	            document.styleSheets[s][cssRules][r].style[element] =3D =
value;
	        }
	    }
    }
}

ChangePosition.backgroundImageSwap=3Dfunction(e,ImageVariant)
{
    $(e).style.backgroundImage =3D 'url(' + LayoutOptions.ThemeImageBase =
+ '/' + ImageVariant + ')';
}

ChangePosition.setClass=3Dfunction(e,newClass)
{   =20
    $(e).className =3D newClass;
}

ChangePosition.setVisible=3Dfunction(e,visibility)
{  =20
    var E =3D $(e);
    if(E !=3D null)
    {
        if(visibility =3D=3D  "true" || visibility =3D=3D =
true){E.style.display =3D "block";}
        else {E.style.display =3D "none";}
    }
}

ChaptersPanel =3D function ChaptersPanel(container, containingWindow, =
id) {
    ChaptersPanel.initializeBase(this, [container, containingWindow, id, =
false]);
}
ChaptersPanel.prototype =3D {
    _chaptersContainer: null,
    _chaptersMessage: null,
    _closeButton: null,
    _chaptersTitleText: null,
    _isHeightInitialized: false,
    IsShowing: false,

    OnLoad: function ChaptersPanel$OnLoad() {
        this._initialize();
    },

    OnUnLoad: function ChaptersPanel$OnUnLoad() {
    },

    _initialize: function ChaptersPanel$_initialize() {
        if (Manifest.Chapters.length < 1) {
            if ($('btnChapters')) {$('btnChapters').style.display =3D =
"none";}
            this.Hide();
            return;
        }

        this._chaptersTitleText =3D $('ChapterPointsPanelTitleText');
        SfKernel.Util.SetText(this._chaptersTitleText, =
Localization.ThumbnailsResource.Chapters);

        this._closeButton =3D $('ChapterPointsPanelCloseButton');
        this._closeButton.setAttribute('title', =
Localization.LinksResource.Close);
        this._closeButton.observe('mouseover', =
Function.createDelegate(this, this._closeButtonOnMouseOver));
        this._closeButton.observe('mouseout', =
Function.createDelegate(this, this._closeButtonOnMouseOut));
        this._closeButton.observe('click', Function.createDelegate(this, =
this._closeButtonOnClick));
        this._chaptersMessage =3D $('ChapterPointsPanelDialogMessage');
        this.elements =3D new Array(Manifest.Chapters.length);
        for (var i =3D 0; i < Manifest.Chapters.length; ++i) {
            this._addChapterElement(i + 1);
            this.elements[i] =3D new ChapterPointElement(this, i + 1, =
Manifest.Chapters[i].Time);
            this.elements[i].addEvents();
        }
        this._chaptersContainer =3D $('ChapterPointsPanel');
    },

    Show: function ChaptersPanel$Show() {
        $(this.ID).style.display =3D 'block';
        this.IsShowing =3D true;
        // firefox 2 on mac has an issue with scrollbars showing =
through, so we disable them when we pop a box.
        if ($('CurrentSlideArea').offsetLeft =3D=3D =
($('PresentationCardArea').offsetLeft + 1)) {
            $('PresentationCardAreaScrollDiv').style.overflowY =3D =
'hidden';
        }
    },

    Hide: function ChaptersPanel$Hide() {
        $(this.ID).style.display =3D 'none';
        this.IsShowing =3D false;
    },

    _initializeHeight: function ChaptersPanel$_initializeHeight() {
        var containerHeight =3D this.GetDiv().getHeight() - $(this.ID + =
'Heading').getHeight() - 2;
        $(this.ID + 'Container').setStyle({ height: containerHeight + =
'px' });
        this._isHeightInitialized =3D true;
    },

    _onPlay: function ChaptersPanel$_onPlay(sender, args) {
    },

    _closeButtonOnMouseOver: function =
ChaptersPanel$_closeButtonOnMouseOver(sender, args) {
        this._closeButton.className =3D 'dialogCloseButtonOver';
    },

    _closeButtonOnMouseOut: function =
ChaptersPanel$_closeButtonOnMouseOut(sender, args) {
        this._closeButton.className =3D 'dialogCloseButtonNormal';
    },

    _closeButtonOnClick: function =
ChaptersPanel$_closeButtonOnClick(sender, args) {
        this._closeButton.className =3D 'dialogCloseButtonNormal'; //add =
onclick state?
        this.Hide();
    },

    _addChapterElement: function(chapterNumber) {
        var div1 =3D this._createDiv('chapterDiv' + chapterNumber, =
'chapterItem', null);
        this._chaptersMessage.appendChild(div1);
        var div2 =3D this._createDiv('chapterNumberSpan' + =
chapterNumber, 'chapterNumber', 'Chapter ' + chapterNumber);
        div1.appendChild(div2);
        var div3 =3D this._createDiv('chapterTimeSpan' + chapterNumber, =
'chapterTime', =
SfKernel.GetDisplayDuration(Manifest.Chapters[chapterNumber - 1].Time));
        div1.appendChild(div3);
        var div4 =3D this._createDiv('chapterTitleSpan' + chapterNumber, =
'chapterTitle', SfKernel.EncodeClean(Manifest.Chapters[chapterNumber - =
1].Text));
        div4.title =3D =
SfKernel.EncodeClean(Manifest.Chapters[chapterNumber - 1].Text);
        div1.appendChild(div4);
    },

    _createDiv: function(id, className, text) {
        var element =3D $(document.createElement('div'));
        element.setAttribute('id', id);
        element.className =3D className;
        if (text) {
            SfKernel.Util.SetText(element, text);
        }
        return element;
    }
}   =20

ChapterPointElement =3D function(parentArea, chapterNumber, timing) {
    this._parentArea =3D parentArea;
    this._chapterNumber =3D chapterNumber;
    this._timing =3D timing;
    this._titleElement =3D $('chapterTitleSpan' + this._chapterNumber);
    this._chapterElement =3D $('chapterDiv' + this._chapterNumber);

    this.addEvents =3D function() {
        this._chapterElement.observe('mouseover', =
Function.createDelegate(this, function(sender, args) {
            this._chapterElement.className =3D 'chapterItemOver';
            this._titleElement.className =3D 'chapterTitleOver';
            SfKernel.Util.SetCursor(this._chapterElement, =
SfKernel.CursorType.Hand);
        }));
        this._chapterElement.observe('mouseout', =
Function.createDelegate(this, function(sender, args) {
            this._chapterElement.className =3D 'chapterItem';
            this._titleElement.className =3D 'chapterTitle';
            SfKernel.Util.SetCursor(this._chapterElement, =
SfKernel.CursorType.Default);
        }));
        this._chapterElement.observe('click', =
Function.createDelegate(this, function(sender, args) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToC=
hapter, this, { Number: this._chapterNumber, Time: this._timing });
        }));
        this._chapterElement.observe('dblclick', =
Function.createDelegate(this, function(sender, args) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToC=
hapter, this, { Number: this._chapterNumber, Time: this._timing });
            mPlayer.btnSlideShowInstance.OnClick();
        }));
    }
}

LinksPanel =3D function LinksPanel(container, containingWindow, id) {
    LinksPanel.initializeBase(this, [ container, containingWindow, id, =
false ]);
}
LinksPanel.prototype =3D {
    _linksContainer: null,
    _closeButton: null,
    _linksTitleText: null,
    _isHeightInitialized: false,
    IsShowing: false,
   =20
    OnLoad: function LinksPanel$OnLoad() {
        this._initialize();
    },=20
   =20
    OnUnLoad: function LinksPanel$OnUnLoad() {
    },
   =20
    _initialize: function LinksPanel$_initialize() {
        if (Manifest.SupportingLinks.length < 1) {
            this.Hide();
            return;
        }
       =20
        this._linksTitleText =3D $(this.ID + 'LinksTitleText');
        SfKernel.Util.SetText(this._linksTitleText, =
Localization.LinksResource.PresentationLinks);
       =20
        this._closeButton =3D $(this.ID + 'CloseButton');
        this._closeButton.setAttribute('title', =
Localization.LinksResource.Close);
        this._closeButton.observe('mouseover', =
Function.createDelegate(this, this._closeButtonOnMouseOver));
        this._closeButton.observe('mouseout', =
Function.createDelegate(this, this._closeButtonOnMouseOut));
        this._closeButton.observe('click', Function.createDelegate(this, =
this._closeButtonOnClick));
       =20
        this._linksContainer =3D $(this.ID + 'Container');
        for (var i =3D 0; i < Manifest.SupportingLinks.length; ++i)=20
        {
            this._appendLinkElement(Manifest.SupportingLinks[i], (!(i % =
2)));
        }
    },
   =20
    Show: function LinksPanel$Show() {
        $(this.ID).style.display =3D 'block';
        this.IsShowing =3D true;
        // firefox 2 on mac has an issue with scrollbars showing =
through, so we disable them when we pop a box.
        if($('CurrentSlideArea').offsetLeft =3D=3D =
($('PresentationCardArea').offsetLeft+1))
        {
            $('PresentationCardAreaScrollDiv').style.overflowY =3D =
'hidden';
        }=09
    },
   =20
    Hide: function LinksPanel$Hide() {
        $(this.ID).style.display =3D 'none';
        this.IsShowing =3D false;
    },
   =20
    _initializeHeight: function LinksPanel$_initializeHeight() {
        var containerHeight =3D this.GetDiv().getHeight() - $(this.ID + =
'Heading').getHeight() - 2;
        $(this.ID + 'Container').setStyle({ height: containerHeight + =
'px' });
        this._isHeightInitialized =3D true;
    },
   =20
    _onPlay: function LinksPanel$_onPlay(sender, args) {
    },
   =20
    _closeButtonOnMouseOver: function =
LinksPanel$_closeButtonOnMouseOver(sender, args) {
        this._closeButton.className =3D 'dialogCloseButtonOver';
    },
   =20
    _closeButtonOnMouseOut: function =
LinksPanel$_closeButtonOnMouseOut(sender, args) {
        this._closeButton.className =3D 'dialogCloseButtonNormal';
    },=20
    =20
    _closeButtonOnClick: function LinksPanel$_closeButtonOnClick(sender, =
args) {
        this._closeButton.className =3D 'dialogCloseButtonNormal'; //add =
onclick state?
        this.Hide();
    },  =20
   =20
    _appendLinkElement: function LinksPanel$_appendLinkElement(link, =
isEven) {
        var element =3D document.createElement('div');
        this._linksContainer.appendChild(element);
        element.className =3D (isEven) ? 'linksItem' : 'linksItemAlt';
        var a =3D document.createElement('a');
        element.appendChild(a);
        a.setAttribute('href', link.Url);
        a.setAttribute('target', 'new');
        a.setAttribute('title', link.Url);
        a.appendChild(document.createTextNode(link.Description));
    }
}
function WindowHelper(){}
   =20
    WindowHelper.PopupNames =3D
    {
        FullSize : "FullSize",
	    Help : "Help",
	    ShowPolls : "ShowPolls",
	    PreviewSlide : "PreviewSlide"
    }

	WindowHelper.IsOpen =3D function (wnd)
	{
		if (!wnd)
		{
			return false;
		}
		if (wnd =3D=3D null)
		{
			return false;
		}
		if (wnd.closed =3D=3D true)
		{
			return false;
		}
		return true;
	}

	WindowHelper.CreateNamedPopup=3Dfunction(popupName, name, width, =
height, scrollbars, resizeable)
	{
		return this.CreatePopup(WindowHelper.GetPopupURL(popupName), name, =
width, height, scrollbars, resizeable);
	}

	=
WindowHelper.CreatePopup=3Dfunction(sUrl,sName,nWidth,nHeight,fScrollbars=
,fResizeable)
	{
		// extra offset for mac
		var offsetX =3D 0;
		var offsetY =3D 0;

		nWidth=3DMath.floor(nWidth) + offsetX;
		nHeight=3DMath.floor(nHeight) + offsetY;

		var sFeatures =3D "width=3D" + nWidth + ",height=3D" + nHeight;
	      =20
		if (fScrollbars)
		{
			sFeatures +=3D ",scrollbars=3Dyes";
		}
		else
		{
			sFeatures +=3D ",scrollbars=3Dno";
		}
	       =20
		if (fResizeable)
		{
			sFeatures +=3D ",resizable=3Dyes";
		}
		else
		{
			sFeatures +=3D ",resizable=3Dno";
		}

		this.PlayerDetect =3D new SfKernel.PlayerDetect();
		var popup =3D window.open(sUrl, sName, sFeatures);
	=09
		if(popup)
		{
		    if(!this.PlayerDetect.IsChrome())
		    {
		        // chrome has troubles positioning after resize
		        this.Center(popup, nWidth, nHeight);
		    }
		}	=09
		return popup;
	}

	WindowHelper.Center=3Dfunction(wnd,nWidth,nHeight)
	{
		var posX =3D Math.round((screen.availWidth-nWidth)/2);
		var posY =3D Math.round((screen.availHeight - nHeight) / 2);
		wnd.moveTo(posX,posY);
	}

	WindowHelper.PopupHelp =3D function(sUrl, nWidth, nHeight) {
	    window.popuphelp =3D this.CreatePopup(sUrl, "__help", nWidth, =
nHeight, true, true);
	    if (!this.PlayerDetect.IsChrome()) {
	        WindowHelper.Center(window.popuphelp, nWidth, nHeight);
	    }
	    window.popuphelp.focus();
	}

	WindowHelper.MaximizeOrCenter =3D function(wnd, width, height)
	{
		if (WindowHelper.IsWidthOrHeightGreater(width, height))
		{
			WindowHelper.Maximize(wnd);
		}
		else
		{
			WindowHelper.Center(wnd, width, height);
		}
	}

	WindowHelper.Maximize =3D function(wnd) {
	    wnd.resizeTo(screen.availWidth, screen.availHeight);
	    if (!this.PlayerDetect.IsChrome()) {
	        wnd.moveTo(0, 0);
	    }
	}

	WindowHelper.IsWidthOrHeightGreater =3D function(width, height)
	{
		var screenWidth =3D screen.availWidth;
		var screenHeight =3D screen.availHeight;
	=09
		if (width > screenWidth || height > screenHeight)
		{
			return true;
		=09
		}
		else
		{
			return false;
		}
	}
=09
    WindowHelper.GetPopupURL =3D function(popupName)
    {
	    switch (popupName)
	    {
		    case WindowHelper.PopupNames.Help:
		        if(Manifest.IsStandAlone)
		        {
		            return GlobalOptions.AppRoot + =
"/Players/Popups/Help/Overview.htm";
		        }
		        else
		        {
			        return GlobalOptions.AppRoot + =
"/Popups/Help/OverviewFullVersion.htm";
			    }
		    case WindowHelper.PopupNames.ShowPolls:
			    return GlobalOptions.AppRoot + "/Popups/Polls/PollList.aspx?" + =
SfKernel.RequestVariables.PlaybackTicketId + "=3D" + =
Manifest.PlaybackTicketId;
		    case WindowHelper.PopupNames.PreviewSlide:
			    return GlobalOptions.AppRoot + "/" + LayoutOptions.PreviewViewer;
		    case WindowHelper.PopupNames.FullSize:
			    return GlobalOptions.AppRoot + "/" + =
LayoutOptions.FullSizeViewer;
	    }
    }


Type.registerNamespace('SfUI');

SfUI.ButtonType =3D function() { };
SfUI.ButtonType.prototype =3D {
    Push: 0,=20
    Check: 1
}
SfUI.ButtonType.registerEnum('SfUI.ButtonType', false);

SfUI.Button =3D function SfUI_Button(id) {
    this._buttonType =3D SfUI.ButtonType.Push;
    this._id =3D id;
    this._link =3D $(this._id + 'Link');
    this._img =3D $(this._id + 'Img');
    this._link.observe('mouseover', Function.createDelegate(this, =
function(sender, args) {
        this._isHilited =3D true;
        this._paint();
    }));
    this._link.observe('mouseout', Function.createDelegate(this, =
function(sender, args) {
        this._isHilited =3D false;
        this._paint();
    }));
    this._link.observe('mouseup', Function.createDelegate(this, =
function(sender, args) {
        this._isPressed =3D true;
        this._paint();
    }));
    this._link.observe('mousedown', Function.createDelegate(this, =
function(sender, args) {
        this._isPressed =3D false;
        this._paint();
    }));
    this._link.observe('click', Function.createDelegate(this, =
function(sender, args) {
        this._isPressed =3D false;
        if (this._enabled) {
            if (this._click) {
                this._click(this, Sys.EventArgs.Empty);
            }
        }
        this._paint();
    }));
    this._link.observe('dblclick', Function.createDelegate(this, =
function(sender, args) {
        this._isPressed =3D false;
        if (this._enabled) {
            if (this._dblClick) {
                this._dblClick(this, Sys.EventArgs.Empty);
            }
        }
        this._paint();
    }));
    this._images =3D new Array(2);
    this._images[0] =3D new SfUI.ButtonImage();
    this._images[1] =3D new SfUI.ButtonImage();
}
SfUI.Button.prototype =3D {
    _link: null,
    _img: null,
    _id: null,
    _enabled: true,
    _isHilited: false,
    _isPressed: false,
    _isChecked: false,
    _images: null,
    _click: null,
    _dblClick: null,
   =20
    SetButtonType: function Buttons_Button$SetButtonType(type) {
        this._buttonType =3D type;
    },
   =20
    SetChecked: function Buttons_Button$SetChecked(isChecked) {
        if (this._buttonType !=3D=3D SfUI.ButtonType.Check) {
            throw Error.invalidOperation('Button must be check type');
        }
        this._isChecked =3D isChecked;
        this._paint();
    },
   =20
    GetChecked: function Buttons_Button$GetChecked() {
        return this._isChecked;
    },
   =20
    SetNormalImage: function Buttons_Button$SetNormalImage(index, val) {
        this._images[index].set_normal(val);
    },
   =20
    SetOverImage: function Buttons_Button$SetOverImage(index, val) {
        this._images[index].set_over(val);
    },
   =20
    SetPressedImage: function Buttons_Button$SetPressedImage(index, val) =
{
        this._images[index].set_pressed(val);
    },
   =20
    SetDisabledImage: function Buttons_Button$SetDisabledImage(index, =
val) {
        this._images[index].set_disabled(val);
    },
   =20
    Enable: function Buttons_Button$Enable(enabled) {
        this._enabled =3D enabled;
        this._paint();
    },
   =20
    Initialize: function Buttons_Button$Initialize() {
        this._paint();
    },
   =20
    SetTooltip: function Buttons_Button$SetTooltip(val) {
        this._link.setAttribute('title', val);
        this._img.setAttribute('alt', val);
    },
   =20
    SetClickHandler: function Buttons_Button$SetClickHandler(handler) {
        this._click =3D handler;
    },
   =20
    SetDblClickHandler: function =
Buttons_Button$SetDblClickHandler(handler) {
        this._dblClick =3D handler;
    },
   =20
    _paint: function Buttons_Button$_paint() {   =20
        var imageSrc =3D =
this._getCurrentImageSrcFromButtonImage(this._getCurrentButtonImage());  =
 =20
        if(imageSrc !=3D null)
        {
            this._img.setAttribute('src', imageSrc);
        }
    },
   =20
    _getCurrentButtonImage: function =
Buttons_Button$_getCurrentButtonImage() {
        if (this._buttonType =3D=3D=3D SfUI.ButtonType.Push) {
            return this._images[0];
        }
        else {
            if (this._isChecked) {
                return this._images[1];
            }
            else {
                return this._images[0];
            }
        }
    },
   =20
    _getCurrentImageSrcFromButtonImage: function =
Buttons_Button$_getCurrentImageSrcFromButtonImage(currentImage) {
        if (!this._enabled) {
            if(this._link){this._link.setStyle({ cursor: 'default' })};
            return currentImage.get_disabled();
        }
        if (this._isPressed) {
            if (currentImage.get_pressed()) {
                return currentImage.get_pressed();
            }
            else {
                return currentImage.get_normal();
            }
        }
        if (this._isHilited) {
            return currentImage.get_over();
        }
        if(this._link){this._link.setStyle({ cursor: 'pointer' })};
        return currentImage.get_normal();
    }
}

SfUI.Button.registerClass('SfUI.Button');


SfUI.ButtonImage =3D function SfUI_ButtonImage() {}
SfUI.ButtonImage.prototype =3D {
    _normal: null,
   =20
    get_normal: function Buttons_ButtonImage$get_normal() {
        return this._normal;
    },
    set_normal: function Buttons_ButtonImage$set_normal(value) {
        this._normal =3D value;
        return value;
    },
   =20
    _over: null,
   =20
    get_over: function Buttons_ButtonImage$get_over() {
        return this._over;
    },
    set_over: function Buttons_ButtonImage$set_over(value) {
        this._over =3D value;
        return value;
    },
   =20
    _pressed: null,
   =20
    get_pressed: function Buttons_ButtonImage$get_pressed() {
        return this._pressed;
    },
    set_pressed: function Buttons_ButtonImage$set_pressed(value) {
        this._pressed =3D value;
        return value;
    },
   =20
    _disabled: null,
   =20
    get_disabled: function Buttons_ButtonImage$get_disabled() {
        return this._disabled;
    },
    set_disabled: function Buttons_ButtonImage$set_disabled(value) {
        this._disabled =3D value;
        return value;
    }
}

SfUI.ButtonImage.registerClass('SfUI.ButtonImage');

Type.registerNamespace('SfImage');

SfImage.CachedImageStatus =3D function()
{
    Error =3D "Error";
    Complete =3D "Complete";
    Loading =3D "Loading";
}

SfImage.ImageCache =3D function(container)
{
	this.Container =3D container;
	this.CachedImages =3D new Array();
	this.NumItemsToCache =3D 1;
 =09
	this.AddImage =3D function(url, shouldDelayLoad)
	{
		if (shouldDelayLoad =3D=3D true)
		{
			// random time between 2 and 4 seconds
			var randomTime =3D Math.floor(2000*Math.random() +2000);
			setTimeout(this.Container + '.Internal_AddImage("' + url + '")', =
randomTime);
		}
		else
		{=09
			this.Internal_AddImage(url);
		}
	}
	=09
	this.Internal_AddImage =3D function(url)
	{
		var length =3D this.CachedImages.length;
		var currentIndex =3D 0;
		if (length >=3D this.NumItemsToCache)
		{
			currentIndex =3D length-1;
		}
		else
		{
			currentIndex =3D length;
		}
	=09
		var cachedImage =3D new CachedImage(url, this.Container + =
".CachedImages[" + currentIndex + "]");
		this.CachedImages[currentIndex] =3D cachedImage;
		cachedImage.Load();
	}
=09
	this.FindInCache =3D function(url)
	{
		var i;
		for (i=3D0; i<this.CachedImages.length; ++i)
		{
			if (this.CachedImages[i].Source =3D=3D url)
			{
				return this.CachedImages[i];=20
			}
		}
		return null;
	}
=09
	function CachedImage(source, container)
	{
		this.Source =3D source;
		this.Container =3D container;
		this.Status =3D SfImage.CachedImageStatus.Loading;
	=09
		this.Load =3D function()
		{
			this.Img =3D new Image();
			this.Img.onerror =3D new Function("", this.Container + ".OnError()");
			this.Img.onload =3D new Function("", this.Container + ".OnLoad()");
			this.Img.src =3D this.Source;
		}
	=09
		this.OnError =3D function()
		{
			this.Status =3D SfImage.CachedImageStatus.Error;
		}=09
	=09
		this.OnLoad =3D function()
		{
			this.Status =3D SfImage.CachedImageStatus.Complete;
		}
	=09
		this.toString =3D function()
		{
			var retVal =3D
				"Source: " + this.Source +=20
				", Status: " + this.Status
			return retVal;
		}
	}
}

Type.registerNamespace('SfImage.Popup');

SfImage.Popup.Position =3D function()
{
	Top =3D 0;
	Right =3D 1;
	Left =3D 2;
	Bottom =3D 3;
}

SfImage.Popup.PositionCalculator =3D function(containerDimension, =
boxDimension)
{
	this._separation =3D 4;// is the gap
	this._paddingLeft =3D 5;//padding shortens the container
	this._paddingRight =3D 20;
	this._paddingTop =3D 0;
	this._containerDimension =3D containerDimension;
	this._boxDimension =3D boxDimension;
}

SfImage.Popup.PositionCalculator.prototype =3D
{
	_CreateParams : function(location)
	{
		var params =3D new Object();
		params.t =3D location.Top - this._paddingTop - this._separation;
		params.l =3D location.Left - this._paddingLeft - this._separation;
		params.w =3D location.Width + 2 * this._separation;
		params.h =3D location.Height + 2 * this._separation;
	=09
		params.CW =3D this._containerDimension.Width - (this._paddingLeft + =
this._paddingRight);
		params.CH =3D this._containerDimension.Height - this._paddingTop;
	=09
		params.W =3D this._boxDimension.Width;
		params.H =3D this._boxDimension.Height;
	=09
		return params;
	},
=09
	GetPopupPosition : function(location)
	{
		var params =3D this._CreateParams(location);
		var calc =3D new SfImage.Popup.RawPopupCalculator(params);
		var pos =3D calc.GetPosition();
		pos.Left =3D pos.Left + this._paddingLeft;
		pos.Top =3D pos.Top + this._paddingTop;
		return pos;
    }
}

SfImage.Popup.RawPopupCalculator =3D function(params)
{
	this._params =3D params;
	// right=09
	//	popup.style.top =3D t + h/2 - H/2;
	//	popup.style.left =3D l + w;=09

	// left
	//	popup.style.top =3D t + h/2 - H/2;
	//	popup.style.left =3D l - W;
	=09
	// top=09
	//	popup.style.top =3D t - H;
	//	popup.style.left =3D l + w/2 - W/2;
	=09
	// bottom
	//	popup.style.top =3D t + h;
	//	popup.style.left =3D l + w/2 - W/2;
}

SfImage.Popup.RawPopupCalculator.prototype =3D
{
	GetPosition : function()
	{
		var position =3D new Object();
		if (this._CanPlaceOnTop() =3D=3D true)
		{
			//position.Top =3D this._params.t - this._params.H;
			//position.Left =3D this._CalculateLeftOffset();
			//position.Where =3D SfImage.Popup.Position.Top;
			position.Top =3D this._params.t - this._params.H + 22;
			position.Left =3D this._params.l + this._params.w;
			position.Where =3D SfImage.Popup.Position.Right;
			return position;
		}
		if (this._CanPlaceOnRight() =3D=3D true)
		{
			position.Top =3D this._CalculateTopOffset();
			position.Left =3D this._params.l + this._params.w;
			position.Where =3D SfImage.Popup.Position.Right;
			return position;
		}
		if (this._CanPlaceOnLeft() =3D=3D true)
		{
			position.Top =3D this._CalculateTopOffset();
			position.Left =3D this._params.l - this._params.W;
			position.Where =3D SfImage.Popup.Position.Left;
			return position;
		}
	=09
		position.Top =3D this._params.t + this._params.h;
		position.Left =3D this._CalculateLeftOffset();
		position.Where =3D SfImage.Popup.Position.Bottom;
		return position;
	},
=09
	_CanPlaceOnTop : function()
	{
		return (this._params.t - this._params.H >=3D 0);
	},
=09
	_CanPlaceOnRight : function()
	{
		return (this._params.CW >=3D this._params.l + this._params.w + =
this._params.W);
	},
=09
	_CanPlaceOnLeft : function()
	{
		return (this._params.l - this._params.W >=3D 0);
	},
=09
	_CalculateLeftOffset : function()
	{
		var intendedLeft =3D this._params.l + this._params.w/2 - =
this._params.W/2;
		if (intendedLeft <=3D0)
		{
			return 0;
		}
		var resultingRight =3D intendedLeft + this._params.W;
		if (resultingRight <=3D this._params.CW)
		{
			return intendedLeft;
		}
		else
		{
			return this._params.CW - this._params.W;
		}
	},
=09
	_CalculateTopOffset : function()
	{
		var intendedTop =3D this._params.t + this._params.h/2 - =
this._params.H/2;
		if (intendedTop >=3D0)
		{
			return intendedTop;
		}
		else
		{
			return 0;
		}
	}
}

SfImage.Popup.PopupHelper =3D function(input)
{
	this._input =3D input;
=09
	this._zoomElement =3D null;
	this._imageElement =3D null;
	this._positionCalculator =3D null;
	this._borderWidth =3D 1;
	this._padding =3D 3;
	this._isInitialized =3D false;
	this._CreateZoomElement();
=09
}
SfImage.Popup.PopupHelper.prototype =3D=20
{
	GetZoomElement : function()
	{
		return this._zoomElement;
	},
=09
	_CreateZoomElement : function()
	{
		this._zoomElement =3D $(document.createElement('div'));
		this._zoomElement.className =3D 'imagePopupZoomElement';
		=
this._zoomElement.setStyle({'z-index':'2','position':'absolute','top':'0p=
x','left':'0px','visibility':'hidden','border-width':''+this._borderWidth=
 + 'px','padding':'' + this._padding + 'px'});
		this._imageElement =3D document.createElement('img');
		this._imageElement =3D $(this._imageElement);
		this._zoomElement.appendChild(this._imageElement);
		this._imageElement.setStyle({'width':this._input.ZoomWidth + =
'px','height':this._input.ZoomHeight+'px','left':'0px','display':'block'}=
);
	},
=09
	_Initialize : function()
	{
		var containerDimension =3D =
this._input.ContainingElement.getDimensions();

		var boxDimension =3D new Object();
		boxDimension.Width =3D this._input.ZoomWidth + 2 * this._borderWidth + =
2 * this._padding;
		boxDimension.Height =3D this._input.ZoomHeight + 2 * this._borderWidth =
+ 2 * this._padding;

		this._positionCalculator =3D new =
SfImage.Popup.PositionCalculator({Width:containerDimension.width,Height:c=
ontainerDimension.height}, boxDimension);
		this._isInitialized =3D true;
	},

	ShowSlideNumber : function(slideNumber, anchorInfo)
	{
		if (this._isInitialized =3D=3D false)
		{
			this._Initialize();
		}
=09
		this._imageElement.setAttribute("src", =
mPlayer.GetImageLocationUsingWidthAndHeight(slideNumber, =
this._input.ZoomWidth, this._input.ZoomHeight));
	=09
		var scrollOffsets =3D =
{Top:this._input.ContainingElement.scrollTop,Left:this._input.ContainingE=
lement.scrollLeft};

		anchorInfo.Top =3D anchorInfo.Top - scrollOffsets.Top;
		anchorInfo.Left =3D anchorInfo.Left - scrollOffsets.Left;

		var displayPos =3D =
this._positionCalculator.GetPopupPosition(anchorInfo);
		displayPos.Top =3D displayPos.Top + scrollOffsets.Top;
		displayPos.Left =3D displayPos.Left + scrollOffsets.Left;
	=09
		var initial;
		if (displayPos.Where =3D=3D SfImage.Popup.Position.Top)
		{
			initial =3D {Top:displayPos.Top, Left:displayPos.Left, =
Width:this._input.ZoomWidth, Height:this._input.ZoomHeight};
		}
		else if (displayPos.Where =3D=3D SfImage.Popup.Position.Right)
		{
			initial =3D {Top:displayPos.Top, Left:displayPos.Left, =
Width:this._input.ZoomWidth, Height:this._input.ZoomHeight};
		}
		else if (displayPos.Where =3D=3D SfImage.Popup.Position.Left)
		{
			initial =3D {Top:displayPos.Top, =
Left:displayPos.Left+this._input.ZoomWidth-30, =
Width:this._input.ZoomWidth, Height:this._input.ZoomHeight};
		}
		else
		{
			initial =3D {Top:displayPos.Top, Left:displayPos.Left, =
Width:this._input.ZoomWidth, Height:this._input.ZoomHeight};
		}

		this.SetBounds({Top:initial.Top + 'px',=20
			Left:initial.Left + 'px',
			Width:initial.Width + 'px',
			Height:initial.Height + 'px'
			});
		this._zoomElement.style.visibility =3D 'visible';
		this._zoomElement.style.zIndex =3D '2';
	=09
	},
=09

	SetBounds: function(bounds)
	{
		this._zoomElement.style.top =3D bounds.Top;
		this._zoomElement.style.left =3D bounds.Left;
		this._imageElement.style.width =3D bounds.Width;
		this._imageElement.style.height =3D bounds.Height;
		this._zoomElement.style.width =3D bounds.Width;
	},

	Clear : function(e)
	{
		this.SetBounds({Top:0 + 'px',=20
			Left:0 + 'px',
			Width:0 + 'px',
			Height:0 + 'px'
			});
		this._zoomElement.style.visibility =3D 'hidden';
        this._imageElement.setAttribute('src', =
LayoutOptions.ThemeImageBase + '/1x1.gif');
	}
}

SfImage.ImageUpdater =3D function(container, imageElement, extraWidth, =
extraHeight, minWidth, minHeight)
{=09
	this.Container =3D container;
	this.ImageElement =3D imageElement;

	this.ExtraWidth =3D extraWidth;
	this.ExtraHeight =3D extraHeight;
=09
	this.MinWidth =3D minWidth;
	this.MinHeight =3D minHeight;
=09
	this.PreviousImageWidth =3D null;
	this.PreviousImageHeight =3D null;
	=09
	this.ChangeImage =3D function(imageSrc)
	{
		this.ImageElement.onload =3D new Function("", this.Container + =
".ChangeSizes();");
		this.ImageElement.src =3D imageSrc;
	}

	this.ChangeSizes =3D function()
	{
		var imageDimension =3D this.GetImageDimension();
		if (!this.ValidateDimension(imageDimension))
		{
			return;
		}
	=09
		if (this.IsChangeNecessary(imageDimension.Width, =
imageDimension.Height))
		{    	=09
    		this.PreviousImageWidth =3D imageDimension.Width;
    		this.PreviousImageHeight =3D imageDimension.Height;	=09

    		this.ChangeWindowSize(imageDimension.Width, =
imageDimension.Height);
		}			=09
	}
=09
	this.ChangeWindowSize =3D function(imageWidth, imageHeight)
	{
		var dimension =3D this.GetOptimumWindowDimension(imageWidth, =
imageHeight);
		if (dimension =3D=3D null)
		{
			return;
		}
	=09
        var currentSize =3D document.viewport.getDimensions();           =
                  =20
        window.resizeBy((dimension.Width - =
currentSize.width),(dimension.Height - currentSize.height));
	=09
	}
=09
	this.GetImageDimension =3D function()
	{
		var ret =3D new Object();
		if (!this.ImageElement)
		{
			return null;
		}
	=09
		ret.Width =3D this.ImageElement.width;
		ret.Height =3D this.ImageElement.height;

		return ret;
	}
=09
	this.ValidateDimension =3D function(dimension)
	{
		if (dimension =3D=3D null)
		{
			return false;
		}
	=09
		if (!dimension.Width)
		{
			return false;
		}
		if (dimension.Width < 100)
		{
			return false;
		}
	=09
		if (!dimension.Height)
		{
			return false;
		}
		if (dimension.Height < 100)
		{
			return false;
		}
	=09
		return true;
	}
=09
	this.IsChangeNecessary =3D function(imageWidth, imageHeight)
	{
		if (this.PreviousImageWidth =3D=3D null || this.PreviousImageHeight =
=3D=3D null)
		{
			return true;
		}
	=09
		if (this.PreviousImageWidth !=3D imageWidth || =
this.PreviousImageHeight !=3D imageHeight)
		{
			return true;
		}
	=09
		return false;=09
	}
=09
	this.GetOptimumWindowDimension =3D function(imageWidth, imageHeight)
	{	=09
		var ret =3D new Object();

		var availWidth =3D screen.availWidth;
		var availHeight =3D screen.availHeight;

		var windowWidth =3D imageWidth + this.ExtraWidth;=20
		if (windowWidth > availWidth)
		{
			ret.Width =3D availWidth;
		}
		else if(windowWidth < this.MinWidth)
		{
		    ret.Width =3D this.MinWidth;
		}
		else
		{
			ret.Width =3D windowWidth;
		}
	=09
		var windowHeight =3D imageHeight + this.ExtraHeight;
		if (windowHeight > availHeight)
		{
			ret.Height =3D availHeight;
		}
		else if(windowHeight < this.MinHeight)
		{
		    ret.Height =3D this.MinHeight;
		}
		else
		{
			ret.Height =3D windowHeight;
		}
	=09
		return ret;			=09
	}
		=09
	this.GetMainPlayer =3D function()
	{
		if (opener.closed)
		{
			return null;
		}
	=09
		if (!opener.mPlayer)
		{
			return null;
		}
		return opener.mPlayer;
	}
}


Type.registerNamespace('SfUI');

Type.registerNamespace('SfUI.Menu');
SfUI.Menu.MenuType =3D function(){}
SfUI.Menu.MenuType.prototype =3D=20
{
	RootMenu : 0,
	SubMenu : 1,
	Leaf : 2
}
SfUI.Menu.MenuType.registerEnum('SfUI.Menu.MenuType');
SfUI.Menu.LocationInfo =3D function(topOffset, leftOffset, width, =
height)
{
	this.Width =3D width;
	this.Height =3D height;
	this.TopOffset =3D topOffset;
	this.LeftOffset =3D leftOffset;
}
SfUI.Menu.LocationInfo.registerClass('SfUI.Menu.LocationInfo', null);

SfUI.Menu.SizeInfo =3D function (width, height)
{
	this.Width =3D width;
	this.Height =3D height;
}
SfUI.Menu.SizeInfo.registerClass('SfUI.Menu.SizeInfo', null);

SfUI.Menu.MenuTemplate =3D function()
{
	this.LocationInfo =3D new SfUI.Menu.LocationInfo();
	this.SubMenuSizeInfo =3D new SfUI.Menu.SizeInfo();
=09
	this.LeftDivWidth =3D 0;//13;
	this.RightDivWidth =3D 0;//13;
	this.BaseLeftDivWidth =3D 0;
	this.BaseRightDivWidth =3D 0;//13;
=09
	this.PaddingTop =3D 2;
	this.PaddingLeft =3D 10;
=09
	this.BaseBorderWidth =3D 1;
	this.ChildBorderWidth =3D 1;
	this.BaseBorderColor =3D '#777';
	this.ChildBorderColor =3D '#777';
=09
	this.CssPrefix =3D "";
}
SfUI.Menu.MenuTemplate.prototype =3D
{=09
	Clone : function()
	{
		var copy =3D new SfUI.Menu.MenuTemplate();
		copy.LocationInfo =3D this.LocationInfo;
		copy.SubMenuSizeInfo =3D this.SubMenuSizeInfo;
		copy.LeftDivWidth =3D this.LeftDivWidth;
		copy.RightDivWidth =3D this.RightDivWidth;
		copy.BaseLeftDivWidth =3D this.BaseLeftDivWidth;
		copy.BaseRightDivWidth =3D this.BaseRightDivWidth;
		copy.PaddingTop =3D this.PaddingTop;
		copy.PaddingLeft =3D this.PaddingLeft;
		copy.BaseBorderColor =3D this.BaseBorderColor;
		copy.ChildBorderColor =3D this.ChildBorderColor;
		copy.CssPrefix =3D this.CssPrefix;
		return copy;
	}
}
SfUI.Menu.MenuTemplate.registerClass('SfUI.Menu.MenuTemplate', null);

SfUI.Menu.Calculator =3D function()
{
}
SfUI.Menu.Calculator.prototype =3D
{
	GetCalculatedChildLeftOffset : function(intended, borderWidth)
	{
		return intended - 2*borderWidth;
	},
=09
	GetCalculatedChildTopOffset : function(intended, borderWidth)
	{
		return intended - 1*borderWidth;
	},

	GetWidth : function(intended, borderWidth)
	{
		return intended-2*borderWidth;
	},
=09
	GetHeight : function(intended, borderWidth)
	{
		return intended-2*borderWidth;
	},
=09
	GetPaddingBorderAdjustment : function(intended, borderWidth, padding)
	{
		return intended - 2*borderWidth - padding;
	}
}
SfUI.Menu.Calculator.registerClass('SfUI.Menu.Calculator', null);

SfUI.Menu.MenuItem =3D function(container, text, template)
{
	this.Container =3D container;
	this.Text =3D text;
	this.Width =3D template.LocationInfo.Width;
	this.Height =3D template.LocationInfo.Height;
	this.TopOffset =3D template.LocationInfo.TopOffset;
	this.LeftOffset =3D template.LocationInfo.LeftOffset;
	this.Template =3D template;

	this.MenuType =3D null;
	this.Parent =3D null;

	this.RootDiv =3D null;
	this.TextDiv =3D null;
	this.DivLeft =3D null;
	this.DivMiddle =3D null;
	this.DivRight =3D null;
=09
	this.ZIndex =3D 1;
}
SfUI.Menu.MenuItem.prototype =3D
{
	InitializeCalculator : function()
	{
		this.Calculator =3D new SfUI.Menu.Calculator();
	},

	CreateElement : function(top, left, width, height)
	{
		var elem =3D document.createElement("div");
		elem.style.position =3D 'absolute';
		elem.style.top =3D top + 'px';
		elem.style.left =3D left + 'px';
		elem.style.width =3D width + 'px';
		elem.style.height =3D height + 'px';
		return elem;
	},

	GetDivClassName : function(hilite, loc)
	{
	},

	Hide : function()
	{
		this.RootDiv.style.visibility =3D 'hidden';
		this.UnHiliteDiv();
	},

	Show : function()
	{
		this.RootDiv.style.visibility =3D 'visible';
	},

	OnMouseOver : function()
	{
		if (this.Parent !=3D null)
		{
			var children =3D this.Parent.GetChildren();
			for (var i=3D0; i<children.length; ++i)
			{
				children[i].CollapseChildrenNow();
			}
		}
		this.ExpandChildrenNow();

		this.HiliteDiv();
		this.HiliteAllParents();=09
	},

	HiliteAllParents : function()
	{
		var current =3D this;
		var par =3D current.Parent;
		while (par !=3D null)
		{
			par.HiliteDiv();
			var children =3D par.GetChildren();
			for (var i=3D0; i<children.length; ++i)
			{
				if (children[i].Container !=3D current.Container)
				{
					children[i].UnHiliteDiv();
				}
			}
			current =3D par;
			par =3D par.Parent;
		}
	},

	HiliteDiv : function()
	{
		this.DivLeft.className =3D this.GetDivClassName(true, 'Left');
		this.DivRight.className =3D this.GetDivClassName(true, 'Right');
		this.DivMiddle.className =3D this.GetDivClassName(true, 'Middle');
	},

	OnMouseOut : function()
	{
		this.UnHiliteDiv();
	},

	UnHiliteDiv : function()
	{
		this.DivLeft.className =3D this.GetDivClassName(false, 'Left');
		this.DivRight.className =3D this.GetDivClassName(false, 'Right');
		this.DivMiddle.className =3D this.GetDivClassName(false, 'Middle');
	},

	GetRootParent : function()
	{
		var currentElem =3D this;
		while (currentElem.Parent !=3D null)
		{
			currentElem =3D currentElem.Parent;
		}
		return currentElem;
	},

	CollapseChildrenNow : function()
	{
	},

	ExpandChildrenNow : function()
	{
	},

	CreateRootDiv : function()
	{
		this.RootDiv =3D this.CreateElement(this.TopOffset, this.LeftOffset, =
this.Calculator.GetWidth(this.Width, this.GetBorderWidth()), =
this.Calculator.GetHeight(this.Height, this.GetBorderWidth()));
	},

	GetLeftDivWidth : function()
	{
		return this.Template.LeftDivWidth;
	},

	GetRightDivWidth : function()
	{
		return this.Template.RightDivWidth;
	},

	GetBorderWidth : function()
	{
		return this.Template.ChildBorderWidth;
	},

	CreateTextDiv : function()
	{
		this.TextDiv =3D this.CreateElement(0, 0, =
this.Calculator.GetWidth(this.Width, this.GetBorderWidth()), =
this.Calculator.GetHeight(this.Height, this.GetBorderWidth()));
		this.RootDiv.appendChild(this.TextDiv);

		this.DivLeft =3D this.CreateElement(0, 0, this.GetLeftDivWidth(), =
this.Height-2*this.GetBorderWidth());
		this.DivLeft.className =3D this.GetDivClassName(false, 'Left');
		this.TextDiv.appendChild(this.DivLeft);

		this.DivMiddle =3D this.CreateElement(0, this.GetLeftDivWidth(), =
this.Calculator.GetPaddingBorderAdjustment(this.Width - =
(this.GetLeftDivWidth() + this.GetRightDivWidth()), =
this.GetBorderWidth(), this.Template.PaddingLeft), =
this.Calculator.GetPaddingBorderAdjustment(this.Height, =
this.GetBorderWidth(), this.Template.PaddingTop));
		this.DivMiddle.className =3D this.GetDivClassName(false, 'Middle');
		this.DivMiddle.style.paddingLeft =3D this.Template.PaddingLeft + 'px';
		this.DivMiddle.style.paddingTop =3D this.Template.PaddingTop + 'px';
		this.DivMiddle.appendChild(document.createTextNode(this.Text));
		this.TextDiv.appendChild(this.DivMiddle);

		this.DivRight =3D this.CreateElement(0, =
this.Width-this.GetRightDivWidth()-2*this.GetBorderWidth(), =
this.GetRightDivWidth(), this.Height-2*this.GetBorderWidth());
		this.DivRight.className =3D this.GetDivClassName(false, 'Right');
		this.TextDiv.appendChild(this.DivRight);

		this.TextDiv.onmouseover =3D new Function("", this.Container + =
".OnMouseOver();");
		this.TextDiv.onmouseout =3D new Function("", this.Container + =
".OnMouseOut();");
	}
}
SfUI.Menu.MenuItem.registerClass('SfUI.Menu.MenuItem', null);
SfUI.Menu.LeafItem =3D function(container, text, template, =
onClickFunction)
{
	SfUI.Menu.LeafItem.initializeBase(this, [container, text, template]);
	this.OnClickFunction =3D onClickFunction;

	this.MenuType =3D SfUI.Menu.MenuType.Leaf;
	this.IsSelectedLeaf =3D false;
}
SfUI.Menu.LeafItem.prototype =3D
{
	Create : function()
	{
		this.InitializeCalculator();
		this.CreateRootDiv();
		this.CreateTextDiv();
		this.TextDiv.onclick =3D new Function("", this.Container + =
".OnClick();");
	},

	OnClick : function()
	{
		var rootParent =3D this.GetRootParent();
		rootParent.CollapseChildrenNow();
		rootParent.Expanded =3D false;
		rootParent.UnHiliteDiv();

		if (this.OnClickFunction)
		{
			this.OnClickFunction();
		}
	=09
		if (this.Group)
		{
			this.Group.Select(this);
		}
	},

	GetDivClassName : function(hilite, loc)
	{
		if (hilite =3D=3D true)
		{
			if (this.IsSelectedLeaf =3D=3D true)
			{
				return 'div' + this.Template.CssPrefix + 'SelectedLeaf' + loc + =
'Over';
			}
			else
			{
				return 'div' + this.Template.CssPrefix + loc + 'Over';
			}
		}
		else
		{
			if (this.IsSelectedLeaf =3D=3D true)
			{
				return 'div' + this.Template.CssPrefix + 'SelectedLeaf' + loc;
			}
			else
			{
				return 'div' + this.Template.CssPrefix + loc;
			}
		}
	}
}
SfUI.Menu.LeafItem.registerClass('SfUI.Menu.LeafItem', =
SfUI.Menu.MenuItem);

SfUI.Menu.LeafGroup =3D function()
{
	this.Leafs =3D new Array();
}
SfUI.Menu.LeafGroup.prototype =3D=20
{
	Add : function(leaf)
	{
		this.Leafs[this.Leafs.length] =3D leaf;
		leaf.Group =3D this;
	},
=09
	Select : function(leaf)
	{
		for (var i=3D0; i<this.Leafs.length; ++i)
		{
			if (this.Leafs[i].Container =3D=3D leaf.Container)
			{
				this.Leafs[i].IsSelectedLeaf =3D true;
			}
			else
			{
				this.Leafs[i].IsSelectedLeaf =3D false;
			}
			this.Leafs[i].UnHiliteDiv();
		}
	}
}
SfUI.Menu.LeafGroup.registerClass('SfUI.Menu.LeafGroup', null);

SfUI.Menu.SubMenuItem =3D function(container, text, template)
{
	SfUI.Menu.SubMenuItem.initializeBase(this, [container, text, =
template]);

	this.SubMenuWidth =3D this.Template.SubMenuSizeInfo.Width;
	this.SubMenuHeight =3D this.Template.SubMenuSizeInfo.Height;
	this.MenuType =3D SfUI.Menu.MenuType.SubMenu;

	this.ChildDiv =3D null;
	this.Children =3D null;
}

SfUI.Menu.SubMenuItem.prototype =3D
{=09
	GetDivClassName : function(hilite, loc)
	{
		if (hilite =3D=3D true)
		{
			return 'div' + this.Template.CssPrefix + 'SubMenu' + loc + 'Over';
		}
		else
		{
			return 'div' + this.Template.CssPrefix + 'SubMenu' + loc;
		}
	},

	GetChildren : function()
	{
		return this.Children;
	},

	AddLeaf : function(text, onClickFunction)
	{
		var template =3D this.Template.Clone();
		template.LocationInfo =3D new =
SfUI.Menu.LocationInfo(this.GetCurrentChildTopOffset(), 0, =
this.SubMenuWidth, this.SubMenuHeight);
 		var item =3D new SfUI.Menu.LeafItem(this.GetCurrentChildContainer(),=20
 			text,=20
 			template,
 			onClickFunction);
 		item.Create();
		this.AddChild(item);
		return item;
	},

	AddSubMenu : function(text, subSubMenuWidth, subSubMenuHeight)
	{
		var template =3D this.Template.Clone();
		template.LocationInfo =3D new =
SfUI.Menu.LocationInfo(this.GetCurrentChildTopOffset(), 0, =
this.SubMenuWidth, this.SubMenuHeight);
		template.SubMenuSizeInfo =3D new SfUI.Menu.SizeInfo(subSubMenuWidth, =
subSubMenuHeight);
		var sub =3D new SfUI.Menu.SubMenuItem(this.GetCurrentChildContainer(), =
text, template);
		sub.Create();
		this.AddChild(sub);
		return sub;
	},

	GetCurrentChildContainer : function()
	{
		return this.Container + ".GetChildItem(" + this.Children.length + ")";
	},

	GetChildItem : function(index)
	{
		return this.Children[index];
	},

	ExpandChildrenNow : function()
	{
		this.ChildDiv.style.visibility =3D 'visible';
		for (var i=3D0; i<this.Children.length; ++i)
		{
			this.Children[i].Show();
		}
	},

	CollapseChildrenNow : function()
	{
		this.ChildDiv.style.visibility =3D 'hidden';
		for (var i=3D0; i<this.Children.length; ++i)
		{
			this.Children[i].Hide();
			if (this.Children[i].MenuType =3D=3D SfUI.Menu.MenuType.SubMenu)
			{
				this.Children[i].CollapseChildrenNow();
			}
		}
	},
=09
	AddChild : function(item)
	{
		item.Parent =3D this;
		item.ZIndex =3D this.ZIndex+1;

		item.TextDiv.style.zIndex =3D item.ZIndex;

		this.ChildDiv.appendChild(item.RootDiv);
		this.Children[this.Children.length] =3D item;
		this.ChildDiv.style.height =3D =
this.Calculator.GetHeight(((this.SubMenuHeight-2*this.Template.ChildBorde=
rWidth)*this.Children.length+2*this.Template.ChildBorderWidth), =
this.Template.ChildBorderWidth) + 'px';
	},

	GetCurrentChildTopOffset : function()
	{
		return this.Children.length * =
(this.SubMenuHeight-2*this.Template.ChildBorderWidth);
	},

	Create : function()
	{
		this.InitializeCalculator();
		this.CreateRootDiv();
		this.CreateTextDiv();
		this.CreateChildDiv();
		this.Children =3D new Array(0);
	},

	CreateChildDiv : function()
	{
		this.ChildDiv =3D this.CreateElement(
			this.Calculator.GetCalculatedChildTopOffset(0, =
this.GetBorderWidth()),=20
			this.Calculator.GetCalculatedChildLeftOffset(this.Width, =
this.GetBorderWidth()),=20
			this.Calculator.GetWidth(this.SubMenuWidth, this.GetBorderWidth()),=20
			this.Calculator.GetHeight(this.Height, this.GetBorderWidth()));
		this.RootDiv.appendChild(this.ChildDiv);
	}
}
SfUI.Menu.SubMenuItem.registerClass('SfUI.Menu.SubMenuItem', =
SfUI.Menu.MenuItem);

SfUI.Menu.BaseMenuItem =3D function(container, text, template, tooltip)
{
	SfUI.Menu.BaseMenuItem.initializeBase(this, [container, text, template, =
tooltip]);

	this.Expanded =3D false;

	this.Create();
=09
    this.TextDiv.setAttribute('title', tooltip);
	this.TextDiv.onclick =3D new Function("", this.Container + =
".OnClick();");

}
SfUI.Menu.BaseMenuItem.prototype =3D
{
	GetBorderWidth : function()
	{
		return this.Template.BaseBorderWidth;
	},

	GetDivClassName : function(hilite, loc)
	{
		if (hilite =3D=3D true)
		{
			return 'div' + this.Template.CssPrefix + 'Base' + loc + 'Over';
		}
		else
		{
			return 'div' + this.Template.CssPrefix + 'Base' + loc;
		}
	},

	CreateChildDiv : function()
	{
		this.ChildDiv =3D this.CreateElement(
			this.Height,
			0,
			this.Calculator.GetWidth(this.SubMenuWidth, =
this.Template.ChildBorderWidth),=20
			this.Calculator.GetHeight(this.Height, =
this.Template.ChildBorderWidth));
		this.RootDiv.appendChild(this.ChildDiv);
	},

	GetLeftDivWidth : function()
	{
		return this.Template.BaseLeftDivWidth;
	},

	GetRightDivWidth : function()
	{
		return this.Template.BaseRightDivWidth;
	},

	OnMouseOver : function()
	{
		this.HiliteDiv();
	},

	OnMouseOut : function()
	{
		if (this.Expanded =3D=3D true)
		{
			return;
		}
		this.UnHiliteDiv();

	},

	OnClick : function()
	{
		if (this.Expanded =3D=3D true)
		{
			this.CollapseChildrenNow();
		}
		else
		{
			this.ExpandChildrenNow();
		}
		this.Expanded =3D !this.Expanded;
	}

}
SfUI.Menu.BaseMenuItem.registerClass('SfUI.Menu.BaseMenuItem', =
SfUI.Menu.SubMenuItem);


Type.registerNamespace('SfUI.Tooltip');		=09
SfUI.Tooltip.TooltipEnabled =3D function(container, client, toolTip)
{
	this._container =3D container;
	this._client =3D client;
	this._tooltip =3D toolTip;
	this._handleClient =3D null;
	this._handleTooltip =3D null;
=09
	this._Initialize();
}

SfUI.Tooltip.TooltipEnabled.prototype =3D=20
{
	_Initialize : function()
	{
		this._client.observe('mouseover', =
this._ClientOnMouseOver.bindAsEventListener(this), true);				=09
		this._client.observe('mouseout', =
this._ClientOnMouseOut.bindAsEventListener(this), true);
		this._tooltip.observe('mouseover', =
this._TooltipOnMouseOver.bindAsEventListener(this), true);				=09
		this._tooltip.observe('mouseout', =
this._TooltipOnMouseOut.bindAsEventListener(this), true);
	},
=09
	_ClientOnMouseOver : function(e)
	{
		SfKernel.Util.SetCursor(this._client, SfKernel.CursorType.Hand);

		Event.stop(e);

		window.clearTimeout(this._handleTooltip);
		window.clearTimeout(this._handleClient);
=09
		var containerDimension =3D {Width:this._container.getWidth(), =
Height:this._container.getHeight()};
		var boxDimension =3D {Width:this._tooltip.getWidth(), =
Height:this._tooltip.getHeight()};

		var positionCalculator =3D new =
SfImage.Popup.PositionCalculator(containerDimension, boxDimension);

		var offset =3D this._GetOffsetFromContainer();
	=09
		var anchorInfo =3D {Top:offset.OffsetTop, Left:offset.OffsetLeft, =
Width:this._client.getWidth(), Height:this._client.getHeight()};
	=09
		var displayPos =3D positionCalculator.GetPopupPosition(anchorInfo);

		this._tooltip.setStyle({'top':displayPos.Top+'px', =
'left':displayPos.Left+'px'});
		this._tooltip.show();
	=09
	},
=09
	//! Refactor Up
	_GetOffsetFromContainer : function()
	{
		var containerOffset =3D Position.cumulativeOffset(this._container);
		var boxOffset =3D Position.cumulativeOffset(this._client);
	=09
		return {OffsetTop: boxOffset[1] - containerOffset[1], OffsetLeft: =
boxOffset[0] - containerOffset[0]};
	},
=09
	_ClientOnMouseOut : function(e)
	{
		SfKernel.Util.SetCursor(this._client, SfKernel.CursorType.Default);

		this._handleClient =3D window.setTimeout(this._HideTooltip.bind(this), =
300);
	},
=09
	_TooltipOnMouseOver : function(e)
	{
		Event.stop(e);

		window.clearTimeout(this._handleClient);
		window.clearTimeout(this._handleTooltip);
	=09
	},
=09
	_TooltipOnMouseOut : function(e)
	{
		this._handleTooltip =3D =
window.setTimeout(this._HideTooltip.bind(this), 300);
	},
=09
	_HideTooltip : function()
	{
		this._tooltip.hide();
	}
=09
}

SfUI.Checkbox =3D function(element, imageInfo, enabled)
{
	this._element =3D element;
	this._imageInfo =3D imageInfo;
	this._checked =3D false;
	this._enabled =3D enabled;

	if (this._enabled =3D=3D true)
	{
		this._mouseOverListener =3D this._OnMouseOver.bind(this);
		this._mouseOutListener =3D this._OnMouseOut.bind(this);

		this._element.observe('mouseover', this._mouseOverListener);
		this._element.observe('mouseout', this._mouseOutListener);
	}
	else
	{
		this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.DisabledImage + ')';
	}
}
SfUI.Checkbox.prototype =3D
{
	SetChecked : function(value)
	{
		this._checked =3D value;
		this._UpdateImage();
	},
=09
	GetChecked : function()
	{
		return this._checked;
	},

	Toggle : function()
	{
		this.SetChecked(!this.GetChecked());
	},
	=09
	SetOnClickMethod : function(onClickFunction)
	{
		this._element.observe('click', onClickFunction);
	},
=09
	_OnMouseOver : function()
	{
		SfKernel.Util.SetCursor(this._element, SfKernel.CursorType.Hand);
		if (this._checked =3D=3D false)
		{
			this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.OverImage + ')';
		}
		else
		{
			this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.CheckedOverImage + ')';
		}
	},
=09
	_OnMouseOut : function()
	{
		this._UpdateImage();
		SfKernel.Util.SetCursor(this._element, SfKernel.CursorType.Default);
	},
=09
	_UpdateImage : function()
	{
		if (this._enabled =3D=3D false)
		{
			this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.DisabledImage + ')';
			return;
		}
	=09
		if (this._checked =3D=3D true)
		{
			this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.CheckedImage + ')';
		}
		else
		{
			this._element.style.backgroundImage =3D 'url(' + =
this._imageInfo.NormalImage + ')';
		}
	}
}
SfUI.Checkbox.registerClass('SfUI.Checkbox', null);



SfUI.$create__imagePos =3D function SfUI__imagePos() { return {}; }

SfUI.Magnifier =3D function SfUI_Magnifier(imageDiv, magAreaDiv) {
    this._image =3D imageDiv;
    this._magArea =3D magAreaDiv;
    this._initialize();
}
SfUI.Magnifier.prototype =3D {
    _image: null,
    _magArea: null,
    _imagePos: null,
    _magWidth: 0,
    _magHeight: 0,
    _isEnabled: false,
    _mouseOutListener: null,
    _mouseMoveListener: null,
   =20
    IsEnabled: function SfUI_Magnifier$IsEnabled() {
        return this._isEnabled;
    },
   =20
    Enable: function SfUI_Magnifier$Enable() {
        if (this._isEnabled) {
            return;
        }
        this._bindEventListeners();
        this._isEnabled =3D true;
    },
   =20
    Disable: function SfUI_Magnifier$Disable() {
        if (!this._isEnabled) {
            return;
        }
        this._unbindEventListeners();
        this._onMouseOut(null);
        this._isEnabled =3D false;
    },
   =20
    _bindEventListeners: function SfUI_Magnifier$_bindEventListeners() {
        this._image.observe('mousemove', this._mouseMoveListener);
        this._magArea.observe('mousemove', this._mouseMoveListener);
        this._magArea.observe('mouseout', this._mouseOutListener);
        this._image.observe('mouseover', this._mouseOverListener);
    },
   =20
    _unbindEventListeners: function =
SfUI_Magnifier$_unbindEventListeners() {
        this._image.stopObserving('mousemove', this._mouseMoveListener);
        this._magArea.stopObserving('mousemove', =
this._mouseMoveListener);
        this._magArea.stopObserving('mouseout', this._mouseOutListener);
        this._image.stopObserving('mouseover', this._mouseOverListener);
    },
   =20
    _initialize: function SfUI_Magnifier$_initialize() {
        this._imagePos =3D SfUI.$create__imagePos();
        this._magWidth =3D this._magArea.getWidth() + 2;
        this._magHeight =3D this._magArea.getHeight() + 2;
        var myPos =3D Position.cumulativeOffset(this._image);
        this._imagePos.left =3D myPos[0];
        this._imagePos.right =3D this._imagePos.left + =
this._image.getWidth();
        this._imagePos.top =3D myPos[1];
        this._imagePos.bottom =3D this._imagePos.top + =
this._image.getHeight();               =20
        this._mouseOutListener =3D Function.createDelegate(this, =
this._onMouseOut);
        this._mouseMoveListener =3D Function.createDelegate(this, =
this._onMouseMove);
        this._mouseOverListener =3D Function.createDelegate(this, =
this._onMouseOver);
    },   =20
   =20
    _recalculatePositions: function =
SfUI_Magnifier$_recalculatePositions() {
        /* needs to be done somtime after the currentslide position is =
changed */
        this._imagePos =3D SfUI.$create__imagePos();
        var myPos =3D Position.cumulativeOffset(this._image);
        this._imagePos.left =3D myPos[0];
        this._imagePos.right =3D this._imagePos.left + =
this._image.getWidth();
        this._imagePos.top =3D myPos[1];
        this._imagePos.bottom =3D this._imagePos.top + =
this._image.getHeight();
    },
   =20
    _onMouseOut: function SfUI_Magnifier$_onMouseOut(e) {
        this._magArea.style.display =3D 'none';
    },
   =20
    _onMouseOver: function SfUI_Magnifier$_onMouseOver(e) {
        this._recalculatePositions();
    },
       =20
    _onMouseMove: function SfUI_Magnifier$_onMouseMove(e) {
        var ex =3D e.clientX;
        var ey =3D e.clientY;
        this._magArea.style.display =3D '';
 =20
        var fullSizeWidth =3D =
document.getElementById('currentSlideMagnifierImage').width;
        var fullSizeHeight =3D =
document.getElementById('currentSlideMagnifierImage').height;
               =20
        var leftOffset =3D (ex - this._imagePos.left) * (fullSizeWidth / =
this._image.width) - (this._magWidth/2);       =20
       =20
        if(leftOffset < 0 )
        {
            this._magArea.scrollLeft =3D 0;
        }
        else
        {
            this._magArea.scrollLeft =3D leftOffset;
        }
=20
        var topOffset =3D (ey - this._imagePos.top) * (fullSizeHeight / =
this._image.height) - (this._magHeight/2);       =20
        if(topOffset < 0 )
        {
            this._magArea.scrollTop =3D 0;
        }
        else
        {
            this._magArea.scrollTop =3D topOffset;       =20
        }
      =20
        this._magArea.setStyle({ left: this._getMagLeftPosition(ex) + =
'px', top: this._getMagTopPosition(ey) + 'px' });
    },
   =20
    _getMagLeftPosition: function SfUI_Magnifier$_getMagLeftPosition(ex) =
{
        var leftPos =3D ex - this._magWidth / 2;
        if (leftPos > this._imagePos.right - this._magWidth) {
            leftPos =3D this._imagePos.right - this._magWidth;
        }
        else if (leftPos < this._imagePos.left) {
            leftPos =3D this._imagePos.left;
        }
        return leftPos;
    },
   =20
    _getMagTopPosition: function SfUI_Magnifier$_getMagTopPosition(ey) {
        var topPos =3D ey - this._magHeight / 2;
        if (topPos > this._imagePos.bottom - this._magHeight) {
            topPos =3D this._imagePos.bottom - this._magHeight;
        }
        else if (topPos < this._imagePos.top) {
            topPos =3D this._imagePos.top;
        }
        return topPos;
    }
}


SfUI.Magnifier.registerClass('SfUI.Magnifier');
Type.registerNamespace('SfUI');

SfUI.SfSlider =3D function(settings)
{
	this._settings =3D settings;
=09
	this._enabled =3D true;
	this._thumbLength =3D -1;
	this._rangeMin =3D 0;
	this._rangeMax =3D 100;
	this._physicalMin =3D -1;
	this._physicalMax =3D -1;
	this._elementThumb =3D null;
	this._elementThumbImage =3D null;
	this._elementGuide =3D null;
	this._isPositionInitialized =3D false;
	this._events =3D null;
	this._onMouseMoveDelegate =3D null;
	this._onMouseUpDelegate =3D null;
=09
	this._Initialize();
}

SfUI.SfSlider.DragEventType =3D=20
{
	BeginDrag : "BeginDrag",
	EndDrag : "EndDrag",
	DragMove : "DragMove"
}

SfUI.SfSlider.Orientation =3D
{
	Horizontal : "Horizontal",
	Vertical : "Vertical"
}

SfUI.SfSlider.prototype =3D
{
	SetEnabled : function(enable)
	{
		this._enabled =3D enable;
	},
=09
	SetRange : function(min, max)
	{
		this._rangeMin =3D min;
		this._rangeMax =3D max;
	},
=09
	SetPosition : function(position)
	{
		this._SetLogicalPosition(position);
	},
=09
	IsPositionInitialized : function()
	{
		return this._isPositionInitialized;
	},
=09
	InitializePosition : function()
	{
		this._elementThumb =3D $(this._settings.NamePrefix + "_thumb");
		this._elementGuide =3D  $(this._settings.NamePrefix + =
"_positionGuide");
	=09
		this._thumbLength =3D this._GetThumbLength();
		this._physicalMin =3D this._GetPhysicalMin();
		this._physicalMax =3D this._physicalMin + this._GetPhysicalLength();
	=09
		if (typeof (this._physicalLeft) =3D=3D 'undefined' || =
this._physicalMax =3D=3D 0)
		{
			this._isPositionInitialized =3D false;
		}
		else
		{
			this._isPositionInitialized =3D true;
		}
	},
=09
	AddClickHandler : function(handler)
	{
		this._events.addHandler('Click', handler);
	},
=09
	RemoveClickHandler : function(handler)
	{
		this._events.removeHandler('Click', handler);
	},
=09
	AddDragHandler : function(handler)
	{
		this._events.addHandler('Drag', handler);
	},
=09
	RemoveDragHandler : function(handler)
	{
 		this._events.removeHandler('Drag', handler);
	},
=09
	_Initialize : function()
	{
		this.InitializePosition();
		if (this._enabled =3D=3D true)
		{
			Event.observe(this._elementThumb, 'mousedown', =
this._BeginDrag.bindAsEventListener(this), true);
			Event.observe(this._elementGuide, 'click', =
this._GuideOnClick.bindAsEventListener(this), true);
			this._onMouseMoveDelegate =3D this._OnMove.bindAsEventListener(this);
			this._onMouseUpDelegate =3D this._OnUp.bindAsEventListener(this);
		}
	=09
		this._InitializeThumbOver();
		this._events =3D new Sys.EventHandlerList();
	},
=09
	_InitializeThumbOver : function()
	{
		if (this._settings.ImageInfo.ThumbOverImage !=3D null)
		{
			Event.observe(this._elementThumb, 'mouseover', =
this._ThumbImageOver.bind(this));
			Event.observe(this._elementThumb, 'mouseout', =
this._ThumbImageOut.bind(this));
		}
	},
=09
	_ThumbImageOver : function()
	{
		this.InitializePosition();
		this._elementThumb.style.backgroundImage =3D 'url(' + =
this._settings.ImageInfo.ThumbOverImage +')';
	},
=09
	_ThumbImageOut : function()
	{
		this._elementThumb.style.backgroundImage =3D 'url(' + =
this._settings.ImageInfo.ThumbImage + ')';
	},
=09
	_GetThumbLength : function()
	{
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			return parseInt(this._elementThumb.getStyle('width'));
		}
		else
		{
			return parseInt(this._elementThumb.getStyle('height'));
		}
	},
=09
	_GetPhysicalMin : function()
	{
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			return this._GetPhysicalLeft();
		}
		else
		{
			return this._GetPhysicalTop();
		}
	},
=09
	_GetPhysicalLength : function()
	{
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			return parseInt(this._elementGuide.getStyle('width'));
		}
		else
		{
			//! bug in IE
			return parseInt(this._elementGuide.getStyle('height'));
		}
	},
=09
	_ParsePx : function(arg)
	{
		var retVal;
		var re =3D /\d+px/i;
		if (arg.match(re))
		{
			retVal =3D arg.substr(0, arg.length-2);
		}
		else
		{
			retVal =3D arg;
		}
		return Number(retVal);
	},

	_GetPhysicalLeft : function()
	{
		var physicalLeft =3D this._elementGuide.offsetLeft;
		var par =3D this._elementGuide.offsetParent;
		while (par)
		{
			physicalLeft +=3D par.offsetLeft;
			par =3D par.offsetParent;
		}
		return physicalLeft;
	},
=09
	_GetPhysicalTop : function()
	{
		var physicalTop =3D this._elementGuide.offsetTop;
		var par =3D this._elementGuide.offsetParent;
		while (par)
		{
			physicalTop +=3D par.offsetTop;
			par =3D par.offsetParent;
		}
		return physicalTop;
	},

	_LogicalToPhysical : function(logicalLength)
	{
		var physicalLength, totalLogicalLength, totalPhysicalLength;
	=09
		totalLogicalLength =3D this._rangeMax-this._rangeMin;
		totalPhysicalLength =3D this._physicalMax-this._physicalMin;
	=09
		if (totalLogicalLength=3D=3D0)
		{
			physicalLength =3D 0;
		}
		else
		{
			physicalLength =3D (totalPhysicalLength) * logicalLength;
			physicalLength =3D physicalLength/(totalLogicalLength);
		}

		var physicalPosition;
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			physicalPosition =3D this._physicalMin + physicalLength;
		}
		else
		{
			physicalPosition =3D this._physicalMax - physicalLength;
		}
	=09
		return physicalPosition;
	},
=09
	_PhysicalToLogical : function(physicalPosition)
	{
		var logicalLength, totalLogicalLength, totalPhysicalLength;
	=09
		totalLogicalLength =3D this._rangeMax-this._rangeMin;
		totalPhysicalLength =3D this._physicalMax-this._physicalMin;
	=09
		if (totalLogicalLength=3D=3D0 || totalPhysicalLength=3D=3D0)
		{
			logicalLength=3D0;
		}
		else if (physicalPosition < this._physicalMin)
		{
			if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
			{
				logicalLength =3D 0;
			}
			else
			{
				logicalLength =3D totalLogicalLength;
			}
		}
		else if (physicalPosition > this._physicalMax)
		{
			if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
			{
				logicalLength =3D totalLogicalLength;
			}
			else
			{
				logicalLength =3D 0;
			}
		}
		else
		{
			var physicalLength;
			if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
			{
			    physicalLength =3D physicalPosition - this._physicalMin;
			}
			else
			{
				physicalLength =3D this._physicalMax - physicalPosition;
			}
		=09
			logicalLength =3D (totalLogicalLength) * physicalLength;
			logicalLength =3D logicalLength/(totalPhysicalLength);
		}
	=09
		return logicalLength;
	},
=09
	_SetPhysicalPosition : function(position)
	{
	    if (position < this._physicalMin)
	    {
			position =3D this._physicalMin;
		}
	    if (position > this._physicalMax)
	    {
			position =3D this._physicalMax;
		}
	=09
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			this._elementThumb.style.left =3D '' + (position - this._physicalMin =
- this._thumbLength/2) + 'px';
		}
		else
		{
			this._elementThumb.style.top =3D '' + (position - this._physicalMin - =
this._thumbLength/2) + 'px';
		}
	},
=09
	_SetLogicalPosition : function(position)
	{
		if (position < this._rangeMin)
		{
			position =3D this._rangeMin;
		}
		if (position > this._rangeMax)
		{
			position =3D this._rangeMax;
		}
	=09
		this._SetPhysicalPosition(this._LogicalToPhysical(position));
	},
=09
	_GuideOnClick : function(evt)
	{
		this.InitializePosition();
		this._PostClickEvent(this._GetLogicalPositionFromEvent(evt));
	},
=09
	_GetPhysicalPositionFromEvent : function(evt)
	{
		if (this._settings.Orientation =3D=3D =
SfUI.SfSlider.Orientation.Horizontal)
		{
			return evt.pageX;
		}
		else
		{
			return evt.pageY;
		}
	},
=09
	_GetLogicalPositionFromEvent : function(evt)
	{
		var physicalPos =3D this._GetPhysicalPositionFromEvent(evt);
		return this._PhysicalToLogical(physicalPos);
	},
=09
	_PostClickEvent : function(logicalPosition)
	{
		var args =3D new Object();
 		args.Position =3D logicalPosition;
		var handler =3D this._events.getHandler('Click');
		if (handler =3D=3D null)
		{
			return;
		}
		handler(this, args);
	},
=09
	_PostDragEvent : function(type, logicalPosition)
	{
		var args =3D new Object();
		args.DragEventType =3D type;
 		args.Position =3D logicalPosition;
		var handler =3D this._events.getHandler('Drag');
		if (handler =3D=3D null)
		{
			return;
		}
		handler(this, args);
	},
=09
	_BeginDrag : function(evt)
	{
		Event.observe(document, 'mousemove', this._onMouseMoveDelegate, true);
		Event.observe(document, 'mouseup', this._onMouseUpDelegate, true);
		Event.stop(evt);

		this._PostDragEvent(SfUI.SfSlider.DragEventType.BeginDrag, =
this._GetLogicalPositionFromEvent(evt));
	},

	_OnUp : function (evt)
	{
		var logicalPosition =3D this._GetLogicalPositionFromEvent(evt);

		Event.stopObserving(document, 'mousemove', this._onMouseMoveDelegate, =
true);
		Event.stopObserving(document, 'mouseup', this._onMouseUpDelegate, =
true);
		Event.stop(evt);
	=09
		this._PostDragEvent(SfUI.SfSlider.DragEventType.EndDrag, =
logicalPosition);
	},
	=09
	_OnMove : function(evt)
	{
		var logicalPosition =3D this._GetLogicalPositionFromEvent(evt);
	=09
		Event.stop(evt);
	=09
		if (logicalPosition < this._rangeMin || logicalPosition > =
this._rangeMax)
		{
			return;
		}

		this._PostDragEvent(SfUI.SfSlider.DragEventType.DragMove, =
logicalPosition);
	}

}
SfUI.SfSlider.registerClass('SfUI.SfSlider');

SfUI.SfDiscreteSlider =3D function(settings)
{
	this._settings =3D settings;
=09
	SfUI.SfDiscreteSlider.initializeBase(this, [this._settings]);
=09
	this._points =3D null;
=09
	this._DivideIntoPoints();
}

SfUI.SfDiscreteSlider.prototype =3D
{=09
	SetPointNumber : function(pointNumber)
	{
		this.SetPosition(this._points[pointNumber]);
	},
=09
	FindClosestPointNumber : function(pos)
	{
		var closestPoint =3D 0;
		var minDistance =3D Math.abs(this._points[0] - pos);
		for (var i=3D1; i<this._points.length; ++i)
		{
			var distance =3D Math.abs(this._points[i] - pos);
			if (distance < minDistance)
			{
				minDistance =3D distance;
				closestPoint =3D i;
			}
		}
	=09
		return closestPoint;
	},

	_DivideIntoPoints : function()
	{
		var min =3D this._rangeMin;
		var max =3D this._rangeMax;
	=09
		var length =3D max - min;
		var numSegments =3D this._settings.NumPoints - 1;
		var segmentLength =3D length / numSegments;
	=09
		this._points =3D new Array(this._settings.NumPoints);
	=09
		this._points[0] =3D min;
		for (var i=3D1; i<=3DnumSegments; ++i)
		{
			this._points[i] =3D min + i*segmentLength;
		}
	}
}
SfUI.SfDiscreteSlider.registerClass('SfUI.SfDiscreteSlider', =
SfUI.SfSlider);



MediaPlayerArea =3D function(container, containingWindow, id) {
    this.ID =3D id;
    this.Container =3D container;

    this.ScriptParser =3D new SfMediaPlayer.ScriptParser();
    this.Volume =3D null;
    this.timerManager =3D null;
    this.partitionManager =3D null;
    this.embeddedPlayer =3D null;
    this.pci =3D null;

    this.ScheduledForLiveCheckInterval =3D 15000;
    this.OpenForLiveCheckInterval =3D 5000;
    this.LiveEventPollInterval =3D 5000;
    this.SkipAmount =3D 3000;
    this.StopTime =3D null;
    this.currentMediaState =3D -1;
    this.currentMediaDuration =3D 0;
    this.LastSeekPosition =3D 0;
    this.LastMediaError =3D null;

    this.OnLoad =3D MediaPlayerArea.prototype.OnLoad =3D function() {
        this.partitionManager =3D new =
SfMediaPlayer.PartitionManager(Manifest.Slides);
        this.CheckPresentationStatus();
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
this.ScriptEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.SliderNotify, =
this.SliderNotifyEventHandler.bind(this));

        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Pla=
y, this.PlayEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Pau=
se, this.PauseEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Sto=
p, this.StopEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Mut=
e, this.MuteEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Set=
Volume, this.SetVolumeEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Nav=
igateToSlide, this.NavigateToSlideEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Nav=
igateToTime, this.NavigateToTimeEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Nav=
igateToChapter, this.NavigateToChapterEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Ski=
pBack, this.SkipBackEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Ski=
pForward, this.SkipForwardEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Ful=
lScreen, this.FullScreenEventHandler.bind(this));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Cha=
ngePlaybackSpeed, this.ChangePlaybackSpeedEventHandler.bind(this));
    }

    this.CheckPresentationStatus =3D function() {
        var status =3D Manifest.PlayStatus;

        switch (status) {
            case SfKernel.PresentationPlayStatus.Live:
            case SfKernel.PresentationPlayStatus.LivePaused:
                this.StartLivePlayback(Manifest.Slides.length);
                return;
            case SfKernel.PresentationPlayStatus.OnDemand:
                this.StartPlaying();
                return;
            case SfKernel.PresentationPlayStatus.LiveEnded:
                return;
            case SfKernel.PresentationPlayStatus.ScheduledForLive:
            case SfKernel.PresentationPlayStatus.OpenForLive:
                this.DoNotReadyStuff();
                return;
            default:
                Sys.Debug.trace('Unknown Presentation Status: ' + =
status);
                return;
        }
    }

    this.DoNotReadyStuff =3D function() {
        this.HideMediaPlayerDiv();

        var status =3D Manifest.PlayStatus;
        if (status =3D=3D =
SfKernel.PresentationPlayStatus.ScheduledForLive) {
            window.setTimeout(this.Container + =
".CheckPresentationStatusFromDB()", this.ScheduledForLiveCheckInterval);
        }
        else if (status =3D=3D =
SfKernel.PresentationPlayStatus.OpenForLive) {
            window.setTimeout(this.Container + =
".CheckPresentationStatusFromDB()", this.OpenForLiveCheckInterval);
        }
        else {
            Sys.Debug.trace('Invalid status for a live presentation: ' + =
status);
        }
    }

    this.CheckPresentationStatusFromDB =3D function() {
        =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus
		(
			Manifest.PresentationId,
			Function.createDelegate(this, =
this.GetPresentationStatusInformationOnSuccess),
			Function.createDelegate(this, =
this.GetPresentationStatusInformationOnFailure),
			'GetLiveStatus'
		);
    }

    this.GetPresentationStatusInformationOnSuccess =3D function(result, =
context) {
        if (result.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.ScheduledForLive) {
            window.setTimeout(this.Container + =
".CheckPresentationStatusFromDB()", this.ScheduledForLiveCheckInterval);
        }
        else if (result.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OpenForLive) {
            window.setTimeout(this.Container + =
".CheckPresentationStatusFromDB()", this.OpenForLiveCheckInterval);
        }
        else if (result.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || result.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused) {
            Manifest.PlayStatus =3D result.PlayStatus;
            this.StartLivePlayback(result.CurrentSlide);
        }
    }

    this.GetPresentationStatusInformationOnFailure =3D function(error, =
context) {
        Sys.Debug.trace("GetPresentationStatusInformationOnFailure(): " =
+ error.Message);
        window.setTimeout(this.Container + =
".CheckPresentationStatusFromDB()", this.ScheduledForLiveCheckInterval);
    }

    this.StartLivePlayback =3D function(currentSlideNumber) {
        this.AddSlideTimingsIfRequired(currentSlideNumber);
        this.HandleLiveStatusDisplay(Manifest.PlayStatus);
        =
mPlayer.EventManager.PostEvent(SfKernel.EventType.LivePlaybackStarted, =
this, null);
        this.StartPlaying();
    }

    this.HandleMediaPlayerError =3D function(errorMsg) {
        if (mPlayer.PresentationEnded) {
            return;
        }

        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused) {
            this.LastMediaError =3D errorMsg;

            =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus
		    (
			    Manifest.PresentationId,
			    Function.createDelegate(this, this.CheckLiveErrorOnSuccess),
			    Function.createDelegate(this, =
this.GetPresentationStatusInformationOnFailure),
			    'GetLiveStatus'
		    );
        }
        else {
            this.ShowMediaErrorDialog(errorMsg);
        }
    }

    this.CheckLiveErrorOnSuccess =3D function(result, context) {
        if (result.PlayStatus !=3D SfKernel.PresentationPlayStatus.Live =
&& result.PlayStatus !=3D SfKernel.PresentationPlayStatus.LivePaused) {
            mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, =
this, { Command: SfKernel.ScriptCmdType.EndPresentation });
        }
        else {
            this.ShowMediaErrorDialog(this.LastMediaError);
        }
    }

    this.ShowMediaErrorDialog =3D function(errorMsg) {
        var presentationFailureErrorDialog =3D new =
DialogBox('mediaErrorDialog');
        presentationFailureErrorDialog.Message =3D errorMsg;
        presentationFailureErrorDialog.Title =3D 'Mediasite Player =
Error';
        presentationFailureErrorDialog.Id =3D 'mediaErrorDialog';
        presentationFailureErrorDialog.okButton =3D true;
        presentationFailureErrorDialog.OnLoad();
        return false;
    }

    this.ShowMediaPlayerDiv =3D function() {
        var playerElement =3D $('PlayerVideo');
        if (playerElement) {
            playerElement.style.display =3D '';
        }

        var notReady =3D $('PlayerNotStarted');
        if (notReady) {
            notReady.style.display =3D 'none';
        }
    }

    this.HideMediaPlayerDiv =3D function() {
        var playerElement =3D $('PlayerVideo');
        if (playerElement) {
            playerElement.style.height =3D '1px';
        }

        var notReady =3D $('PlayerNotStarted');
        if (notReady) {
            notReady.style.display =3D '';
        }
    }

    //	this.HideVideo =3D function()
    //	{
    //	    var playerElement =3D $('PlayerVideo');
    //	    if(playerElement)
    //	    {
    //	       =20
    //	    }
    //	}

    this.HandleAudioOnly =3D function() {
        if (!Manifest.HasVideo) {
            var fullScreenButton =3D $('btnFullScreen');
            if (fullScreenButton) {
                fullScreenButton.style.display =3D 'none';
            }

            var embeddedPlayer =3D $('EmbeddedPlayer');
            embeddedPlayer.style.height =3D '0px';
            var audioOnlyImage =3D $('PlayerAudioOnly');
            if (!this.IsCompact()) {
                var videoContainer =3D $('VideoContainer');
                var playerElement =3D $('PlayerVideo');
                var presentationCard =3D $('PresentationCardArea');
                var presentationCardScrollDiv =3D =
$('PresentationCardAreaScrollDiv');
                var playerContainer =3D $('PlayerContainer');
                var chapterPointsDialog =3D =
$('ChapterPointsPanelDialog');
                var chapterPointsDialogMessage =3D =
$('ChapterPointsPanelDialogMessage');
                if (audioOnlyImage) {
                    audioOnlyImage.style.display =3D 'none';
                }
                videoContainer.style.height =3D '0px';
                playerElement.style.height =3D '0px';
                var currentPCHeight =3D presentationCard.offsetHeight;
                var currentPCTop =3D presentationCard.offsetTop;
                var currentMediaTop =3D playerContainer.offsetTop;
                var videoContainerLeft =3D videoContainer.offsetLeft;

                var titleBannerHeight =3D $('TitleBanner').offsetHeight;
                var mediaPlayerHeight =3D $('CommandBar').offsetHeight + =
$('StatusBar').offsetHeight + $('PlayerControls').offsetHeight;
                var newPCHeight =3D (LayoutOptions.PlayerHeight - =
mediaPlayerHeight - titleBannerHeight - 10);
                presentationCard.style.height =3D (newPCHeight) + "px";
                presentationCardScrollDiv.style.height =3D =
((newPCHeight) - 12) + "px";
                if ($('ChapterPointsPanelDialog')) {
                    chapterPointsDialog.style.height =3D (newPCHeight) + =
"px";
                    chapterPointsDialogMessage.style.height =3D =
(newPCHeight - 25) + "px";
                }

                if (LayoutOptions.SlideHeight =3D=3D 0 || =
LayoutOptions.SlideWidth =3D=3D 0) {
                    presentationCard.style.left =3D (videoContainerLeft =
+ 3) + 'px';
                    presentationCard.style.width =3D =
(LayoutOptions.PlayerWidth - 8) + 'px';
                    if ($('ChapterPointsPanelDialog')) {
                        chapterPointsDialog.style.width =3D =
(LayoutOptions.PlayerWidth - 8) + 'px';
                        chapterPointsDialogMessage.style.width =3D =
(LayoutOptions.PlayerWidth - 8) + 'px';
                    }
                }

                if (LayoutOptions.DefaultPosition =3D=3D '1' || =
LayoutOptions.DefaultPosition =3D=3D '2') {
                    presentationCard.style.top =3D (titleBannerHeight + =
mediaPlayerHeight + 6) + "px";
                }
                if (LayoutOptions.DefaultPosition =3D=3D '3' || =
LayoutOptions.DefaultPosition =3D=3D '4') {
                    playerContainer.style.top =3D (titleBannerHeight + =
newPCHeight + 35) + "px";
                }
            }
            else {
                if (audioOnlyImage) {
                    audioOnlyImage.style.display =3D 'block';
                }
            }
        }
    }

    this.IsCompact =3D function() {
        var isCompact =3D (LayoutOptions.VideoWidth =3D=3D '400' && =
LayoutOptions.SlideWidth =3D=3D '360') ? true : false;
        return isCompact;
    }

    this.HandleLiveStatusDisplay =3D function(status) {
        var liveIndicator =3D $('LiveIndicatorAreaImg');
        if (!liveIndicator || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            return;
        }

        switch (status) {
            case SfKernel.PresentationPlayStatus.Live:
                liveIndicator.style.display =3D '';
                liveIndicator.setAttribute('title', =
Localization.LiveIndicatorResource.LiveTooltip);
                liveIndicator.setAttribute('alt', =
Localization.LiveIndicatorResource.LiveTooltip);
                liveIndicator.src =3D LayoutOptions.ThemeImageBase + =
'/liveIndicator.gif';
                break;
            case SfKernel.PresentationPlayStatus.LivePaused:
                liveIndicator.style.display =3D '';
                liveIndicator.setAttribute('title', =
Localization.LiveIndicatorResource.PausedTooltip);
                liveIndicator.setAttribute('alt', =
Localization.LiveIndicatorResource.PausedTooltip);
                liveIndicator.src =3D LayoutOptions.ThemeImageBase + =
'/liveIndicator_paused.gif';
                break;
            default:
                liveIndicator.style.display =3D 'none';
                liveIndicator.setAttribute('title', =
Localization.LiveIndicatorResource.ReplayTooltip);
                liveIndicator.setAttribute('alt', =
Localization.LiveIndicatorResource.ReplayTooltip);
                break;
        }
    }

    this.AddSlideTimingsIfRequired =3D function(currentSlideNumber) {
        if (currentSlideNumber =3D=3D -1) {
            return;
        }
        mPlayer.KeepAddingToSlideTimings(currentSlideNumber);
    }

    this.StartPlaying =3D function() {
        this.SetupPlayer();
        this.ShowMediaPlayerDiv();
    }

    this.CheckIfLiveEnded =3D function(playState) {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.Live && Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.LivePaused) {
            return;
        }

        if (playState =3D=3D SfKernel.MediaState.Stopped || playState =
=3D=3D SfKernel.MediaState.Paused) {
            =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus
		    (
			    Manifest.PresentationId,
			    Function.createDelegate(this, this.LiveStatusCheckStopOnSuccess),
			    Function.createDelegate(this, =
this.GetPresentationStatusInformationOnFailure),
			    'GetLiveStatus'
		    );
        }

    }

    this.LiveStatusCheckStopOnSuccess =3D function(result, context) {
        if (result.PlayStatus !=3D SfKernel.PresentationPlayStatus.Live =
&& result.PlayStatus !=3D SfKernel.PresentationPlayStatus.LivePaused) {
            mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, =
this, { Command: SfKernel.ScriptCmdType.EndPresentation });
        }
    }

    this.LiveStatusCheckStartOnSuccess =3D function(result, context) {
        if (result.PlayStatus !=3D SfKernel.PresentationPlayStatus.Live =
&& result.PlayStatus !=3D SfKernel.PresentationPlayStatus.LivePaused) {
            mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, =
this, { Command: SfKernel.ScriptCmdType.EndPresentation });
        }
        else {
            if (result.CurrentSlide > 0 && result.CurrentSlide > =
mPlayer.CurrentSlideNumber) {
                for (var i =3D mPlayer.CurrentSlideNumber; i < =
result.CurrentSlide; i++) {
                    this.ScriptParser.HE('S', i + 1);
                }
            }
            if (Manifest.PlayStatus !=3D result.PlayStatus) {
                Manifest.PlayStatus =3D result.PlayStatus;
                this.HandleLiveStatusDisplay(Manifest.PlayStatus);
            }
        }
    }

    this.AdjustSize =3D function() {
        $('PlayerVideo').style.width =3D LayoutOptions.VideoWidth + =
'px';
        $('PlayerVideo').style.height =3D LayoutOptions.VideoHeight + =
'px';
        $('VideoContainer').style.width =3D LayoutOptions.VideoWidth + =
'px';
        $('VideoContainer').style.height =3D LayoutOptions.VideoHeight + =
'px';

        if ($('EmbeddedPlayer')) {
            $('EmbeddedPlayer').style.width =3D LayoutOptions.VideoWidth =
+ 'px';
            $('EmbeddedPlayer').style.height =3D =
LayoutOptions.VideoHeight + 'px';
        }
    }

    this.InitVolume =3D function() {
        var initVolume =3D new =
MediasitePlayerCookie().GetValue("Volume");
        if (initVolume =3D=3D undefined) {
            initVolume =3D 50;
        }
        this.Volume.SetVolume(initVolume);
        this.Volume.InitializeVolume(initVolume);
    }

    this.CheckStartStopTimes =3D function() {
        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            var playFrom =3D SfKernel.GetQueryStringValue("playfrom");
            var duration =3D SfKernel.GetQueryStringValue("duration");
            if (playFrom !=3D null) {
                this.SetStartTime(Number(playFrom));
                if (duration !=3D null) {
                    this.StopTime =3D Number(playFrom) + =
Number(duration);
                }
            }
            else if (duration !=3D null) {
                this.StopTime =3D Number(duration);
            }

            var autoStart =3D SfKernel.GetQueryStringValue("autostart");

            if (autoStart !=3D null && autoStart.toLowerCase() =3D=3D =
"false") {
                this.Pause();
            }

        }
    }

    this.PostMediaLengthObtainedEvent =3D function() {
        this.currentMediaDuration =3D this.pci.GetMediaDuration();
        =
mPlayer.EventManager.PostEvent(SfKernel.EventType.MediaLengthObtained, =
this, { Left: 0, Right: this.currentMediaDuration });
    }

    this.PlayEventHandler =3D function(sender, args) {
        this.Play();
    }

    this.PauseEventHandler =3D function(sender, args) {
        this.Pause();
    }

    this.StopEventHandler =3D function(sender, args) {
        this.Stop();
    }

    this.SkipBackEventHandler =3D function(sender, args) {
        this.SkipInVideo(this.SkipAmount * -1);
    }
    this.SkipForwardEventHandler =3D function(sender, args) {
        this.SkipInVideo(this.SkipAmount);
    }

    this.SkipInVideo =3D function(SkipInMS) {
        var position =3D this.pci.GetPosition();

        if (position < this.LastSeekPosition) {
            position =3D this.LastSeekPosition;
        }

        var newPosition =3D position +=3D SkipInMS;

        if (newPosition < 0) {
            newPosition =3D 0;
        }
        else if (newPosition > this.pci.GetMediaDuration()) {
            return;
        }

        this.SetStartTime(newPosition);
    }

    this.MuteEventHandler =3D function(sender, args) {
        this.Mute();
    }

    this.SetVolumeEventHandler =3D function(sender, args) {
        this.SetVolume(args.Volume);
    }

    this.NavigateToSlideEventHandler =3D function(sender, args) {
        this._NavigateToSlide(args.SlideNumber);
    }

    this.NavigateToTimeEventHandler =3D function(sender, args) {
        this._NavigateToTime(args.Time);
    }

    this.NavigateToChapterEventHandler =3D function(sender, args) {
        this._NavigateToChapter(args.Number, args.Time);
    }

    this.FullScreenEventHandler =3D function(sender, args) {
        this.FullScreen();
    }

    this.ChangePlaybackSpeedEventHandler =3D function(sender, args) {
        this.pci.SetPlaybackSpeed(args["PlaybackSpeed"]);
    }

    this.ScriptEventHandler =3D function(sender, args) {
        switch (args.Command) {
            case SfKernel.ScriptCmdType.Pause:
                =
this.HandleLiveStatusDisplay(SfKernel.PresentationPlayStatus.LivePaused);=

                break;
            case SfKernel.ScriptCmdType.Resume:
                =
this.HandleLiveStatusDisplay(SfKernel.PresentationPlayStatus.Live);
                break;
            case SfKernel.ScriptCmdType.EndPresentation:
                if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused) {
                    Manifest.PlayStatus =3D =
SfKernel.PresentationPlayStatus.LiveEnded
                    this.HandleLiveStatusDisplay(Manifest.PlayStatus);
                }
                mPlayer.PresentationEnded =3D true;
                mPlayer.CurrentSlideNumber =3D -1;
                this.Stop();
                break;
        }
    }

    this.SliderNotifyEventHandler =3D function(sender, objNotify) {
        switch (objNotify.NotifyType) {
            case SfKernel.SliderNotifyType.NewPosition:
                this.SetStartTime(objNotify.Position);
                this.StopTime =3D null;
                var state =3D this.pci.GetPlayState();
                if (state !=3D SfKernel.MediaState.Playing && state !=3D =
SfKernel.MediaState.Paused) {
                    =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Play, =
this, null);
                }
                break;
        }
    }

    this.Play =3D function() {
        var currentPos =3D this.pci.GetPosition();
        if (currentPos =3D=3D 0 && Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            mPlayer.CurrentSlideNumber =3D -1;
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.PlayingFromBeginning, =
this, null);
        }

        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused) {
            =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus
		    (
			    Manifest.PresentationId,
			    Function.createDelegate(this, =
this.LiveStatusCheckStartOnSuccess),
			    Function.createDelegate(this, =
this.GetPresentationStatusInformationOnFailure),
			    'GetLiveStatus'
		    );

            this.SetMediaSource();
        }

        this.pci.Play();
        this.timerManager.Start();
        mPlayer.PresentationEnded =3D false;
    }

    this.Pause =3D function() {
        this.pci.Pause();
        this.timerManager.Stop();
    }

    this.Stop =3D function() {
        this.pci.Stop();
        this.timerManager.Stop();
        this.StopTime =3D null;
        mPlayer.SamiDropDownPanelInstance.Reset();
        this.LastSeekPosition =3D 0;
    }

    this.Mute =3D function() {
        if (this.Volume) {
            this.Volume.ToggleMute();
        }
    }

    this.SetVolume =3D function(vol) {
        this.Volume.SetVolume(vol);
    }

    this.FullScreen =3D function() {
        if (this.pci.GetPlayState() !=3D SfKernel.MediaState.Stopped) {
            this.pci.SetFullScreen(true);
        }
    }

    this.SetAudioLanguageIndex =3D function(index) {
        this.pci.SetAudioLanguageIndex(index);
    }

    this._NavigateToTime =3D function(timeInMS) {
        this.SetStartTime(timeInMS);
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Play, =
this, null);
    }

    this.SetStartTime =3D function(timeInMS) {
        this.pci.SetPosition(timeInMS);
        this.timerManager.PostTimerUpdatedEvent(timeInMS);
        mPlayer.SamiDropDownPanelInstance.Seek(timeInMS);
        this.LastSeekPosition =3D timeInMS;
        mPlayer.PresentationEnded =3D false;

        if (mPlayer.CurrentSlidePanelInstance) {
            this.HandleSlideChangeWhenPositionChanges(timeInMS);
        }
    }

    this.SetMediaSource =3D function() {
        this.pci.SetMedia(Manifest.VideoUrl);
    }

    this._NavigateToSlide =3D function(slideNumber) {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            return;
        }
        if (slideNumber < 0) {
            return;
        }
        if (Manifest.Slides.length < slideNumber) {
            return;
        }

        var timeCode =3D (slideNumber =3D=3D 0) ? 0.00 : =
Manifest.Slides[slideNumber - 1].Time;

        this._NavigateToTime(timeCode);
    }

    this._NavigateToChapter =3D function(number, timeInMilliSeconds) {
        this._NavigateToTime(timeInMilliSeconds);
    }

    this.HandleSlideChangeWhenPositionChanges =3D function(pos) {
        if (mPlayer.PresentationEnded) {
            return;
        }

        var slideNumber =3D =
this.partitionManager.GetSlideNumberToShow(pos);

        if (slideNumber < 1) {
            mPlayer.CurrentSlideNumber =3D -1;
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.PlayingFromBeginning, =
this, null);
            return;
        }

        if (slideNumber !=3D mPlayer.CurrentSlideNumber) {
            var args =3D mPlayer.CreateShowSlideEventArgs(slideNumber);
            mPlayer.CurrentSlideNumber =3D slideNumber;
            mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, =
this, args);
        }

    }

}
MediaPlayerArea.registerClass('MediaPlayerArea');


Type.registerNamespace('SfMediaPlayer');

SfMediaPlayer.ScriptParser =3D function()
{
	this.ParseScriptFromStream =3D function(sType, sParam)
	{
	    if(sType =3D=3D "MS5")
	    {
	        eval("this." + sParam);
	    }=09
	}
	=09
	this.HE =3D function()
	{
		if (arguments.length < 1)
		{
			return;
		}
	=09
		var command =3D arguments[0];
		switch (command)
		{
			case "S":
			    if(!mPlayer.CurrentSlidePanelInstance)
			    {
			        return;
			    }
				if (arguments.length < 2)
				{
					return;
				}

				var slideNumber =3D Number(arguments[1]);

				if (slideNumber <=3D mPlayer.CurrentSlideNumber)
				{
				    return;
				}

				if (Manifest.Slides.length < slideNumber)
				{
					mPlayer.KeepAddingToSlideTimings(slideNumber);
					mPlayer.DynamicAdd =3D true;
				}
				else
				{
					mPlayer.DynamicAdd =3D false;
				}
			=09
				mPlayer.CurrentSlideNumber =3D slideNumber;
				var args =3D mPlayer.CreateShowSlideEventArgs(slideNumber);
				this.NotifyScriptEvent(args);
				break;
			case "E":
				this.NotifyScriptEvent({Command: =
SfKernel.ScriptCmdType.EndPresentation});
				break;
			case "P":                       =20
				this.NotifyScriptEvent({Command: SfKernel.ScriptCmdType.Pause});
				break;
			case "R":
				this.NotifyScriptEvent({Command: SfKernel.ScriptCmdType.Resume});
				break;
		}
	}=20

	this.NotifyScriptEvent =3D function(oArgs)
	{
		mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, this, =
oArgs);
	}
	=09
}

SfMediaPlayer.Partition =3D function(left, right)
{
	this.MinIndex =3D left;
	this.MaxIndex =3D right;
	this.Left =3D null;
	this.Right =3D null;
}
SfMediaPlayer.Partition.prototype =3D=20
{
	GetCount : function()
	{
		return this.MaxIndex - this.MinIndex + 1;
	},
=09
	CreateSubPartitions : function()
	{
		var middle =3D Math.floor( (this.MinIndex + this.MaxIndex) / 2 );
		this.Left =3D new SfMediaPlayer.Partition(this.MinIndex, middle);
		this.Right =3D new SfMediaPlayer.Partition(middle+1, this.MaxIndex);
		return {Left:this.Left, Right:this.Right};
	}
}
SfMediaPlayer.Partition.registerClass('SfMediaPlayer.Partition', null);

SfMediaPlayer.PartitionManager =3D function(timings)
{
	this._timings =3D timings;
	this._timeCode =3D null;
}
SfMediaPlayer.PartitionManager.prototype =3D=20
{
	GetSlideNumberToShow : function(timeCode)
	{
		if (this._timings.length =3D=3D 0)
		{
			return 0;
		}
	=09
		this._timeCode =3D timeCode;
=09
		return this._FindInPartition(new SfMediaPlayer.Partition(0, =
this._timings.length-1));=09
	},
=09
	_FindInPartition : function(partition)
	{
		var count =3D partition.GetCount();
		if (count =3D=3D 1)
		{
			return this._FindIn1Partition(partition);
		}
		else if (count =3D=3D 2)
		{
			return this._FindIn2Partition(partition);
		}
	=09
		partition.CreateSubPartitions();

		if (this._timeCode < this._timings[partition.Left.MinIndex].Time)
		{
			return partition.Left.MinIndex;
		}
		else if (this._IsPresentInPartition(partition.Left) =3D=3D true)
		{
			return this._FindInPartition(partition.Left);		=09
		}
		else if (this._timeCode < =
this._timings[partition.Right.MinIndex].Time)
		{
			return partition.Right.MinIndex;
		}
		else if (this._IsPresentInPartition(partition.Right) =3D=3D true)
		{
			return this._FindInPartition(partition.Right);
		}
		else
		{
			return partition.Right.MaxIndex+1;
		}
	},
=09
	_FindIn1Partition : function(partition)
	{
		var partitionTime =3D this._timings[partition.MinIndex].Time;
	=09
		if (this._timeCode < partitionTime)
		{
			return partition.MinIndex;
		}
		else
		{
			return partition.MinIndex+1;		=09
		}
	},
=09
	_FindIn2Partition : function(partition)
	{
		var time1 =3D this._timings[partition.MinIndex].Time;
		var time2 =3D this._timings[partition.MaxIndex].Time

		if (this._timeCode < time1)
		{
			return partition.MinIndex;
		}
		else if (this._timeCode >=3D time1 && this._timeCode < time2)
		{
			return partition.MinIndex+1;
		}
		else
		{
			return partition.MaxIndex+1;
		}
	},
=09
	_IsPresentInPartition : function(partition)
	{
		return (this._timeCode >=3D this._timings[partition.MinIndex].Time && =
this._timeCode <=3D this._timings[partition.MaxIndex].Time);
	}
}


/// MediaPlayer Volume Helper Class
SfMediaPlayer.Volume =3D function(pci)
{
	this.IsMuted =3D false;
	this.PreviousVolume =3D null;
	this.pci =3D pci;
=09
	this.InitializeVolume =3D function(vol)
	{
		this.PostVolumeInitializedEvent(vol);
	}
	=09
	this._GetVolumeFromPlayer =3D function()
	{
	    if (this.pci =3D=3D null)
	    {
	        return 0;
	    }
	    =20
	       =20
	    return this.pci.GetVolume();
	}
=09
	this.ToggleMute =3D function()
	{
	    if (this.IsMuted)
	    {
	    	this.pci.SetMute(false);
	    =09
	    	if (this.PreviousVolume !=3D null)
			{
				this.pci.SetVolume(this.PreviousVolume);
	        }
	       =20
	        this.IsMuted =3D false;
	        this.PostMuteCommand(false);
	    }
	    else
	    {
			this.PreviousVolume =3D this.pci.GetVolume();
	    	this.pci.SetMute(true);
	       =20
	        this.IsMuted =3D true;
	        this.PostMuteCommand(true);
	    }
	}
=09
	this.SetVolume =3D function(val)
	{
		if (this.IsMuted)
		{
			if (val > 0)
			{
				this.ToggleMute();
			}
		}
		else
		{
			if (val =3D=3D 0)
			{
				this.ToggleMute();
			}
		}
	=09
		this.pci.SetVolume(val);
	=09
		new MediasitePlayerCookie().SetValue("Volume", Math.round(val));

	}
=09
	this.PostVolumeInitializedEvent =3D function(val)
	{
		mPlayer.EventManager.PostEvent(SfKernel.EventType.VolumeInitialized, =
this, {Volume:val});
	}
=09
	this.PostMuteCommand =3D function(mute)
	{
		mPlayer.EventManager.PostEvent(SfKernel.EventType.MuteToggled, this, =
mute);
	}
}

SfMediaPlayer.TimerManager =3D function(mediaPlayer) {

    this.player =3D mediaPlayer;

    this.updateTimer =3D null;
    this.updateTimerInterval =3D 200;

    this.pollLiveEventsTimer =3D null;
    this.pollLiveEvents =3D false;


    this.Start =3D function() {
        clearTimeout(this.updateTimer);
        this.TimedUpdate();

        if (this.pollLiveEvents) {
            clearTimeout(this.pollLiveEventsTimer);
            this.PollForLiveEvents();
        }
    }

    this.Stop =3D function() {
        this.PostTimerUpdatedEvent(this.player.pci.GetPosition());
        clearTimeout(this.updateTimer);
        clearTimeout(this.pollLiveEventsTimer);
    }

    this.PostTimerUpdatedEvent =3D function(pos) {
        mPlayer.EventManager.PostEvent(SfKernel.EventType.TimerLoop, =
this, { "Position": pos });
    }

    this.TimedUpdate =3D function() {
        if (!mPlayer.PlayerSliderInstance.IsCurrentlyDragging && =
this.player.pci.GetPlayState() =3D=3D SfKernel.MediaState.Playing) {
            var currentPosition =3D this.player.pci.GetPosition();

            if (this.player.LastSeekPosition > currentPosition) {
                this.updateTimer =3D =
setTimeout(this.TimedUpdate.bind(this), this.updateTimerInterval);
                return;
            }

            this.PostTimerUpdatedEvent(currentPosition);

            if (this.player.StopTime && this.player.StopTime < =
currentPosition) {
                this.player.Pause();
                this.player.StopTime =3D null;
                =
mPlayer.PlayerPositionPanelInstance.SetDisplayText(Localization.MediaPlay=
er.ClipEnded);
                return;
            }

            if ((this.player.currentMediaDuration > 0) && =
((currentPosition + 250) > this.player.currentMediaDuration)) {
                =
mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, this, { =
Command: SfKernel.ScriptCmdType.EndPresentation });
                return;
            }
        }

        this.updateTimer =3D setTimeout(this.TimedUpdate.bind(this), =
this.updateTimerInterval);
    }

    this.PollForLiveEvents =3D function() {
        =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.GetLiveStatus
		(
			Manifest.PresentationId,
			Function.createDelegate(this, =
this.GetPresentationStatusInformationOnSuccess),
			Function.createDelegate(this, =
this.GetPresentationStatusInformationOnFailure),
			'GetLiveStatus'
		);
    }

    this.GetPresentationStatusInformationOnSuccess =3D function(result, =
context) {
        if (result.PlayStatus !=3D SfKernel.PresentationPlayStatus.Live =
&& result.PlayStatus !=3D SfKernel.PresentationPlayStatus.LivePaused) {
            mPlayer.EventManager.PostEvent(SfKernel.EventType.Script, =
this, { Command: SfKernel.ScriptCmdType.EndPresentation });
        }
        else {
            if (result.CurrentSlide > 0 && result.CurrentSlide > =
mPlayer.CurrentSlideNumber) {
                for (var i =3D mPlayer.CurrentSlideNumber; i < =
result.CurrentSlide; i++) {
                    this.player.ScriptParser.HE('S', i + 1);
                }
            }
            if (Manifest.PlayStatus !=3D result.PlayStatus) {
                Manifest.PlayStatus =3D result.PlayStatus;
                =
this.player.HandleLiveStatusDisplay(Manifest.PlayStatus);   =20
            }
           =20
            this.pollLiveEventsTimer =3D =
setTimeout(this.PollForLiveEvents.bind(this), =
this.player.LiveEventPollInterval);
        }
    }

    this.GetPresentationStatusInformationOnFailure =3D function(error, =
context) {
        Sys.Debug.trace("GetPresentationStatusInformationOnFailure(): " =
+ error.Message);
        this.pollLiveEventsTimer =3D =
setTimeout(this.PollForLiveEvents.bind(this), =
this.player.LiveEventPollInterval);
    }
}


/// MediaPlayer Status Display
PlayerStatusPanel =3D function(container, containingWindow, id)
{
	this.ID =3D id;
=09
	this.OnLoad =3D function()
	{
		this.AddEventHandlers();
	}
=09
	this.AddEventHandlers =3D function()
	{
		=
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayStateChange=
d, this.PlayStateChangedEventHandler.bind(this));
	}
=09
	this.PlayStateChangedEventHandler =3D function(sender, state)
	{
		this.UpdateStatus(state);
	}
=09
	this.UpdateStatus =3D function(status)
	{
		var name =3D SfKernel.GetPlayStateName(status);
		$(this.ID).innerHTML =3D name;
	}
}

/// MediaPlayer Language Selector
LanguageDropDownArea =3D function(container, containingWindow, id)
{
    this.ID =3D id;
    this.Container =3D container;
}
LanguageDropDownArea.prototype =3D
{
    LoadLanguages : function(Languages, CurrentIndex)
    {
  		this.Show();

		var template =3D new SfUI.Menu.MenuTemplate();
		template.CssPrefix =3D "LanguageSelectionMenu";
		template.LocationInfo =3D new SfUI.Menu.LocationInfo(0, 0, 40, 18);
		template.SubMenuSizeInfo =3D new SfUI.Menu.SizeInfo(150, 20);
		template.BaseBorderWidth =3D 0;
		template.BaseRightDivWidth =3D 16;
		template.LeftDivWidth =3D 19;
		var group =3D new SfUI.Menu.LeafGroup();
	    this.BaseMenuItem =3D new SfUI.Menu.BaseMenuItem(this.Container + =
".BaseMenuItem", '', template, Localization.Common.Language);
	    //this.BaseMenuItem.SetToolTip(Localization.Common.Language);
	=09
		for (var i=3D0; i<Languages.length; ++i)
		{
			var func =3D new Function("", =
"mPlayer.PlayerAreaInstance.SetAudioLanguageIndex(" + Languages[i].Index =
+ ");");
			var leaf =3D this.BaseMenuItem.AddLeaf(Languages[i].DisplayName, =
func);
			group.Add(leaf);
			if (i=3D=3D (CurrentIndex-1))
			{
				group.Select(leaf);
			}
		}

		this.BaseMenuItem.CollapseChildrenNow();
		$(this.ID).appendChild(this.BaseMenuItem.RootDiv);

    },
   =20
	OnLoad : function()
	{
	    this.Hide();	=09
	},
=09
	Show : function()=20
	{
        $(this.ID).style.display =3D '';
    },
   =20
    Hide : function()=20
    {
        $(this.ID).style.display =3D 'none';
    }
}

/// Media Player Position Display
PlayerPositionPanel=3Dfunction(container,containingWindow,id){this.ID =
=3D id;}
PlayerPositionPanel.prototype=3D{
    isDragging: false,   =20
    duration: 0,
      =20
    OnLoad:function()
    {   =20
        this.AddHandlers();
    },
       =20
    AddHandlers:function()
    {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaLengthObta=
ined,Function.createDelegate(this,this.SetDuration));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.SliderNotify,Fu=
nction.createDelegate(this,this.SliderNotifyHandler));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.TimerLoop,Funct=
ion.createDelegate(this,this.TimerLoopHandler));
       =20
    },
   =20
    SetDuration:function(sender,args)
    {       =20
        this.duration=3Dargs['Right'];
    },
   =20
    SliderNotifyHandler:function(sender,args)
    {
        var notifyType=3Dargs['NotifyType'];
        switch(notifyType)
        {
            case SfKernel.SliderNotifyType.NewPosition:
                this.UpdatePosition(args['Position']);
            break;
            case SfKernel.SliderNotifyType.DragPosition:
                this.UpdatePosition(args['Position']);
            break;
            case SfKernel.SliderNotifyType.BeginDrag:
                this.isDragging=3Dtrue;
            break;
            case SfKernel.SliderNotifyType.EndDrag:
                this.isDragging=3Dfalse;
            break;
        }       =20
    },
   =20
    UpdatePosition:function(pos)
    {
        var display =3D SfKernel.GetDisplayDuration(pos);
        if(this.duration > 0)
        {
            display +=3D '/'+SfKernel.GetDisplayDuration(this.duration);
        }
        $(this.ID).innerHTML=3D display;
    },
   =20
    SetDisplayText:function(text)
    {
        $(this.ID).innerHTML=3Dtext;
    },
   =20
    TimerLoopHandler:function(sender,args)
    {
        =
if(this.isDragging){return;}this.UpdatePosition(args['Position']);
    }
 }

/// MediaPlayer Captioning Display
 SamiDropDownPanel =3D function(container, containingWindow, id) {
     this.ID =3D id;
     this.Container =3D container;

     this.IsClosedCaptioningVisible =3D false;
     this.ShowCaptioningText =3D =
Localization.PlayerLayoutResource.ShowCaptioning;
     this.HideCaptioningText =3D =
Localization.PlayerLayoutResource.HideCaptioning;
     this.CurrentIndex =3D -1;
     this.diplayArea =3D null;
     this.SelectedClass =3D 0;
     this.ToggleButton =3D null;

     this.OnLoad =3D function() {
         if (Manifest.CaptionsFile.length < 1) {
             $(this.ID + 'Container').style.display =3D 'none';
             $(this.ToggleButton.ID).style.display =3D 'none';
             return;
         }

         this.displayArea =3D $(this.ID + 'Display');
         this.CaptioningContainer =3D $(this.ID + 'Container');

         this.CaptioningContainer.style.display =3D 'none';
         $(this.ToggleButton.ID).style.display =3D '';

         $(this.ToggleButton.ID).onclick =3D new Function("", =
this.Container + ".ToggleClosedCaptioning();");
         =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.TimerLoop, =
this.TimerLoopEventHandler.bind(this));
     }

     this.TimerLoopEventHandler =3D function(sender, args) {
         this.CheckAdvance(args["Position"]);
     }

     this.ToggleClosedCaptioning =3D function() {
         if (this.IsClosedCaptioningVisible) {
             $('PresentationCardAreaInnerPadding').style.display =3D =
'block';
             this.CaptioningContainer.style.display =3D 'none';

             =
this.ToggleButton.button.SetTooltip(this.ShowCaptioningText);
         }
         else {
             $('PresentationCardAreaInnerPadding').style.display =3D =
'none';
             this.CaptioningContainer.style.display =3D 'block';
             //this.CaptioningContainer.style.height =3D '100%';

             =
this.ToggleButton.button.SetTooltip(this.HideCaptioningText);
         }

         this.IsClosedCaptioningVisible =3D =
!this.IsClosedCaptioningVisible;
     }

     this.Seek =3D function(currentPosition) {
         if (Manifest.CaptionsFile.length < 1) {
             return;
         }

         var currentTranscriptIndex =3D -1;

         while ((currentTranscriptIndex + 1) < =
Transcript.EventList[this.SelectedClass].length) {
             var time =3D =
Transcript.EventList[this.SelectedClass][currentTranscriptIndex + =
1].Time;

             if (currentPosition >=3D time) {
                 currentTranscriptIndex++;
             }
             else {
                 break;
             }
         }

         this.SetTextIndex(currentTranscriptIndex);
     }

     this.Reset =3D function() {
         if (Manifest.CaptionsFile.length < 1) {
             return;
         }
         this.SetTextIndex(-1);
     }


     this.CheckAdvance =3D function(currentPosition) {
         if (Manifest.CaptionsFile.length < 1) {
             return;
         }

         var currentTranscriptIndex =3D this.CurrentIndex;

         if (currentTranscriptIndex < 0) {
             currentTranscriptIndex =3D -1;
         }

         while ((currentTranscriptIndex + 1) < =
Transcript.EventList[this.SelectedClass].length) {
             var time =3D =
Transcript.EventList[this.SelectedClass][currentTranscriptIndex + =
1].Time;

             if (currentPosition >=3D time) {
                 currentTranscriptIndex++;
             }
             else {
                 break;
             }
         }

         if (currentTranscriptIndex > this.CurrentIndex) {
             this.SetTextIndex(currentTranscriptIndex);
         }
     }

     this.SetTextIndex =3D function(index) {
         this.CurrentIndex =3D index;

         if (index < 0) {
             this.SetText("");
         }
         else if (index < =
Transcript.EventList[this.SelectedClass].length) {
             var ccHeader =3D =
Transcript.EventList[this.SelectedClass][index].SourceText;
             var ccBody =3D =
Transcript.EventList[this.SelectedClass][index].Text;

             var ccText =3D "";

             if (ccHeader.length > 0) {
                ccText +=3D "<b>" + ccHeader + "</b><br>";
             }
             ccText +=3D ccBody;

             this.SetText(ccText);
         }
     }

     this.SetText =3D function(text) {
         if (this.displayArea) {
             this.displayArea.innerHTML =3D text;
         }
     }


 }


/// MediaPlayer Play/Pause Button
PlayPauseButton =3D function(id, container)
{
	this.id =3D id;
	this.IsEnabled =3D false;
	this.IsHilighted =3D false;
	this.Container =3D  container;
=09
	this.PlayImageDetails =3D new SfUI.ButtonImage();
	this.PauseImageDetails =3D new SfUI.ButtonImage();
	this.StopImageDetails =3D new SfUI.ButtonImage();
	this.ToolTipPlay;
	this.ToolTipPause;
	this.ToolTipStop;
=09
	var m_this =3D this;
	var m_link =3D null;
	var m_imageElement =3D null;
	var m_currentImageDetails =3D null;
=09
	this.AllowPlay =3D true;
=09
	this.Initialize =3D function()
	{

		m_imageElement =3D GetImage();
		m_link =3D GetLink();
	=09
		m_link.onmouseover =3D new Function("", this.Container + =
".button.OnMouseOver();");
		m_link.onmouseout =3D new Function("", this.Container + =
".button.OnMouseOut();");
		m_link.onclick =3D new Function("", this.Container + ".OnClick();");

		this._PreLoadImages();
			=09
		this.SetPlayImage();	=09
	}
=09
	this._PreLoadImages =3D function()
	{
	   =20
	    try
	    {
		    var img =3D new Image();
		    img.src =3D this.StopImageDetails.Over;
		    img.src =3D this.StopImageDetails.Normal;
		    img.src =3D this.StopImageDetails.Disabled;	=09
		    img.src =3D this.PauseImageDetails.Over;
		    img.src =3D this.PauseImageDetails.Normal;
		    img.src =3D this.PauseImageDetails.Disabled;
		    img.src =3D this.PlayImageDetails.Over;
		    img.src =3D this.PlayImageDetails.Normal;
		    img.src =3D this.PlayImageDetails.Disabled;
		}
		catch (e) {
		    //BUG27639 for IE8 on redirects
		}
	}
=09
	this.SetPlayImage =3D function()
	{
		m_currentImageDetails =3D m_this.PlayImageDetails;
		this.AllowPlay =3D true;
		this.Paint();
		this.SetToolTip(this.ToolTipPlay);
	}
=09
	this.SetPauseImage =3D function()
	{
		m_currentImageDetails =3D m_this.PauseImageDetails;
		this.AllowPlay =3D false;
		this.Paint();
		this.SetToolTip(this.ToolTipPause);
	}
=09
	this.SetStopImage =3D function()
	{
		m_currentImageDetails =3D m_this.StopImageDetails;
		this.AllowPlay =3D false;
		this.Paint();
		this.SetToolTip(this.ToolTipStop);
	}

	var GetImage =3D function()
	{
		var image =3D document.getElementById(m_this.id + "Img");
				=09
		return image;
	}
=09
	var GetLink =3D function()
	{
		var link =3D document.getElementById(m_this.id + "Link");
			=09
		return link;
	}
=09
	this.SetToolTip =3D function(strToolTip)
	{
		m_imageElement.alt =3D strToolTip;
		m_link.title =3D strToolTip;
	}
=09
	this.Enable =3D function(enabled)
	{
		this.IsEnabled =3D enabled;
	=09
		this.Paint();
	}
=09
	this.OnMouseOver =3D function()
	{
		this.IsHilighted =3D true;
		this.Paint();
	}
=09
	this.OnMouseOut =3D function()
	{
		this.IsHilighted =3D false;
		this.Paint();
	}
=09
	this.OnClick =3D function()
	{	=09
		if (this.IsEnabled)
		{
			this.ClickHandler();
		}
		=09
		this.Paint();
	}
=09
	this.Paint =3D function()
	{
=09
		var imgToSet;
	=09
		if (!this.IsEnabled)
		{
			imgToSet =3D m_currentImageDetails.Disabled;
		}
		else
		{
			if (this.IsHilighted)
			{
				imgToSet =3D m_currentImageDetails.Over;
			}
			else
			{
				imgToSet =3D m_currentImageDetails.Normal;
			}
		}
		=09
		m_imageElement.src =3D imgToSet;
	}
=09
	this.ClickHandler =3D function()
	{
		Sys.Debug.trace("Unimplimented Button ClickHandler id: " + this.id);
	}
}

PlayPauseButtonArea =3D function(container, containingWindow, id)
{
	this.OnLoad =3D function()
	{
		this.button.Initialize();
	}
=09
	this.OnDataLoad =3D function()
	{
		this.AddEventHandlers();
		this.button.ClickHandler =3D new Function("", this.Container + =
".OnClick();");
	}
=09
	this.AddEventHandlers =3D function()
	{
		mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaOpened, =
this.MediaOpenedEventHandler.bind(this));	=09
		=
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayStateChange=
d, this.PlayStateChangedEventHandler.bind(this));
	}
=09
	this.MediaOpenedEventHandler =3D function(sender, args)
	{
    	this.button.Enable(true);
	}
=09
	this.PlayStateChangedEventHandler =3D function(sender, state)
	{	   =20
	    if(Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LiveEnded)
	    {
	        this.button.Enable(false);
	    }
		else
		{
		    this.OnPlayerStateChanged(state);
		}
	}

	this.OnPlayerStateChanged =3D function(state)
	{
		var playIsEnabled =3D true;	=09
		switch(state)
		{
			case SfKernel.MediaState.Stopped:
			case SfKernel.MediaState.Ready:
			case SfKernel.MediaState.Paused:
				playIsEnabled =3D true;			=09
				break;
			case SfKernel.MediaState.Playing:
			case SfKernel.MediaState.ScanForward:
			case SfKernel.MediaState.ScanReverse:
				playIsEnabled =3D false;
				break;
			default:
				return;
		}
	=09
		if (playIsEnabled)
		{
			this.button.SetPlayImage();
		}
		else
		{
		    if(Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand)
		    {
		        this.button.SetPauseImage();   =20
		    }
		    else
		    {
		        this.button.SetStopImage();
		    }		=09
		}
	}

	this.OnClick =3D function()
	{
	    if(!this.button.IsEnabled)
	    {
	        return;
	    }
	   =20
		if (this.button.AllowPlay =3D=3D true)
		{
			mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Play, =
this, null);
		}
		else
		{
			if(Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand)
		    {
		        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Pause, =
this, null);
		    }
		    else
		    {
		        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Stop, =
this, null);
		    }=09
		=09
		}		=09
	}
=09
}

/// MediaPlayer Skip Back Button
SkipbackButtonArea =3D function(container, containingWindow, id)
{=09
	this.OnLoad =3D function()
	{
		this.button.Initialize();
		this.button.SetTooltip(Localization.Buttons.Skipback);
	}
=09
	this.OnDataLoad =3D function()
	{
        if(Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand)
	    {
	    	this.button.SetClickHandler(this.OnClick.bind(this));
		    this.AddEventHandlers();
		}
	}
=09
	this.AddEventHandlers =3D function()
	{
		=
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayStateChange=
d, this.PlayStateChangedEventHandler.bind(this));
	}
	=09
	this.PlayStateChangedEventHandler =3D function(sender, state)
	{
		switch(state)
		{
			case SfKernel.MediaState.Playing:
			case SfKernel.MediaState.Paused:=09
    			this.button.Enable(true);
				break;
			default:
			    this.button.Enable(false);		=09
				break;
		}=09
	}

	this.OnClick =3D function()
	{
		=
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.SkipBack, =
this, null);
	}
}

///MediaPlayer Speed Control
PlayerSpeedControlPanel =3D function(container, containingWindow, id) {
    this.ID =3D id;
    this._availableSpeeds$1 =3D [ 0.5, 0.66, 0.75, 0.8, 1, 1.2, 1.4, =
1.6, 1.8, 2];
    this._availableSpeedsDisplay$1 =3D [ '1/2x', '2/3x', '3/4x', '4/5x', =
'1x', '1.2x', '1.4x', '1.6x', '1.8x', '2x'];=20
   =20
}

PlayerSpeedControlPanel.prototype =3D {
    _leftDiv$1: null,
    _middleDiv$1: null,
    _rightDiv$1: null,
    _leftDivMouseOverHandler$1: null,
    _leftDivMouseOutHandler$1: null,
    _leftDivClickHandler$1: null,
    _rightDivMouseOverHandler$1: null,
    _rightDivMouseOutHandler$1: null,
    _rightDivClickHandler$1: null,
    _indexOfNormal$1: 3,
    _currentSpeedIndex$1: 3,
    _isLeftDivEnabled$1: true,
    _isRightDivEnabled$1: true,
   =20
    OnLoad: function()=20
    {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            this.Hide();
            return;
        }
        this._initialize$1();
    },
       =20
    _initialize$1: function() {
        this._leftDiv$1 =3D $(this.ID + 'Left');
        this._middleDiv$1 =3D $(this.ID + 'Middle');
        this._rightDiv$1 =3D $(this.ID + 'Right');
        SfKernel.Util.SetToolTip(this._leftDiv$1, =
Localization.Buttons.PlaySlower);
        SfKernel.Util.SetToolTip(this._rightDiv$1, =
Localization.Buttons.PlayFaster);
        this._leftDivMouseOverHandler$1 =3D =
Function.createDelegate(this, this._leftDivOnMouseOver$1);
        this._leftDivMouseOutHandler$1 =3D Function.createDelegate(this, =
this._leftDivOnMouseOut$1);
        this._leftDivClickHandler$1 =3D Function.createDelegate(this, =
this._leftDivOnClick$1);
        this._rightDivMouseOverHandler$1 =3D =
Function.createDelegate(this, this._rightDivOnMouseOver$1);
        this._rightDivMouseOutHandler$1 =3D =
Function.createDelegate(this, this._rightDivOnMouseOut$1);
        this._rightDivClickHandler$1 =3D Function.createDelegate(this, =
this._rightDivOnClick$1);
        this._leftDiv$1.observe('mouseover', =
this._leftDivMouseOverHandler$1);
        this._leftDiv$1.observe('mouseout', =
this._leftDivMouseOutHandler$1);
        this._leftDiv$1.observe('click', this._leftDivClickHandler$1);
        this._rightDiv$1.observe('mouseover', =
this._rightDivMouseOverHandler$1);
        this._rightDiv$1.observe('mouseout', =
this._rightDivMouseOutHandler$1);
        this._rightDiv$1.observe('click', this._rightDivClickHandler$1);
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Pla=
y, Function.createDelegate(this, this._onPlay$1));
    },
   =20
    _onPlay$1: function PlayerSpeedControl$_onPlay$1(sender, args) {
        if (this._currentSpeedIndex$1 !=3D=3D this._indexOfNormal$1) {
            this._changePlayerSpeed$1();
        }
    },
   =20
    _changePlayerSpeed$1: function =
PlayerSpeedControl$_changePlayerSpeed$1() {
        var param =3D {};
        param['PlaybackSpeed'] =3D =
this._availableSpeeds$1[this._currentSpeedIndex$1];
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.ChangePlayb=
ackSpeed, this, param);
    },
   =20
    _leftDivOnMouseOver$1: function =
PlayerSpeedControl$_leftDivOnMouseOver$1(sender, args) {
        this._leftDiv$1.className =3D this.ID + 'LeftOver';
    },
   =20
    _leftDivOnMouseOut$1: function =
PlayerSpeedControl$_leftDivOnMouseOut$1(sender, args) {
        this._leftDiv$1.className =3D this.ID + 'LeftNormal';
    },
   =20
    _leftDivOnClick$1: function =
PlayerSpeedControl$_leftDivOnClick$1(sender, args) {
   =20
        if(!this._isLeftDivEnabled$1)
        {
            return;
        }
        --this._currentSpeedIndex$1;
        if (!this._currentSpeedIndex$1) {
            this._disableLeftDiv$1();
        }
        if (!this._isRightDivEnabled$1) {
            this._enableRightDiv$1();
        }
        this._changePlayerSpeed$1();
        this._displayCurrentSpeed$1();
    },
   =20
    _displayCurrentSpeed$1: function =
PlayerSpeedControl$_displayCurrentSpeed$1() {
        SfKernel.Util.SetText(this._middleDiv$1, =
this._availableSpeedsDisplay$1[this._currentSpeedIndex$1]);
    },
   =20
    _disableLeftDiv$1: function PlayerSpeedControl$_disableLeftDiv$1() {
        this._leftDiv$1.className =3D this.ID + 'LeftDisabled';
        this._leftDiv$1.stopObserving('mouseover', =
this._leftDivMouseOverHandler$1);
        this._leftDiv$1.stopObserving('mouseout', =
this._leftDivMouseOutHandler$1);
        this._leftDiv$1.stopObserving('click', =
this._leftDivClickHandler$1);
        this._isLeftDivEnabled$1 =3D false;
    },
   =20
    _enableLeftDiv$1: function PlayerSpeedControl$_enableLeftDiv$1() {
        this._leftDiv$1.className =3D this.ID + 'LeftNormal';
        this._leftDiv$1.observe('mouseover', =
this._leftDivMouseOverHandler$1);
        this._leftDiv$1.observe('mouseout', =
this._leftDivMouseOutHandler$1);
        this._leftDiv$1.observe('click', this._leftDivClickHandler$1);
        this._isLeftDivEnabled$1 =3D true;
    },
   =20
    _disableRightDiv$1: function PlayerSpeedControl$_disableRightDiv$1() =
{
        this._rightDiv$1.className =3D this.ID + 'RightDisabled';
        this._rightDiv$1.stopObserving('mouseover', =
this._rightDivMouseOverHandler$1);
        this._rightDiv$1.stopObserving('mouseout', =
this._rightDivMouseOutHandler$1);
        this._rightDiv$1.stopObserving('click', =
this._rightDivClickHandler$1);
        this._isRightDivEnabled$1 =3D false;
    },
   =20
    _enableRightDiv$1: function PlayerSpeedControl$_enableRightDiv$1() {
        this._rightDiv$1.className =3D this.ID + 'RightNormal';
        this._rightDiv$1.observe('mouseover', =
this._rightDivMouseOverHandler$1);
        this._rightDiv$1.observe('mouseout', =
this._rightDivMouseOutHandler$1);
        this._rightDiv$1.observe('click', this._rightDivClickHandler$1);
        this._isRightDivEnabled$1 =3D true;
    },
   =20
    _rightDivOnMouseOver$1: function =
PlayerSpeedControl$_rightDivOnMouseOver$1(sender, args) {
        this._rightDiv$1.className =3D this.ID + 'RightOver';
    },
   =20
    _rightDivOnMouseOut$1: function =
PlayerSpeedControl$_rightDivOnMouseOut$1(sender, args) {
        this._rightDiv$1.className =3D this.ID + 'RightNormal';
    },
   =20
    _rightDivOnClick$1: function =
PlayerSpeedControl$_rightDivOnClick$1(sender, args) {
   =20
        if(!this._isRightDivEnabled$1)
        {
            return;
        }
        ++this._currentSpeedIndex$1;
        if (this._currentSpeedIndex$1 =3D=3D=3D =
this._availableSpeeds$1.length - 1) {
            this._disableRightDiv$1();
        }
        if (!this._isLeftDivEnabled$1) {
            this._enableLeftDiv$1();
        }
        this._changePlayerSpeed$1();
        this._displayCurrentSpeed$1();
    },
   =20
   	Show: function()=20
	{
        $(this.ID).style.display =3D 'block';
    },
   =20
    Hide: function()=20
    {
        $(this.ID).style.display =3D 'none';
    }
}

/// MediaPlayer Mute Button

MuteButtonArea =3D function(container, containingWindow, id)
{
	this.OnLoad =3D function()
	{
		this.button.SetTooltip(Localization.Buttons.Mute);
		this.button.Initialize();
	}
=09
	this.OnDataLoad =3D function()
	{=09
		this.button.SetClickHandler(this.OnClick.bind(this));
		this.AddEventHandlers();
	}
=09
	this.AddEventHandlers =3D function()
	{	=09
		mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaOpened, =
this.PlayerSetupCompleteEventHandler.bind(this));	=09
		mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MuteToggled, =
this.MuteToggledEventHandler.bind(this));
	}
=09
	this.PlayerSetupCompleteEventHandler =3D function(sender, args)
	{
		this.button.Enable(true);
	}
=09
	this.MuteToggledEventHandler =3D function(sender, mute)
	{
		if (mute =3D=3D true)
		{
			this.button.SetChecked(true);
			this.button.SetTooltip(Localization.Buttons.UnMute);
		}
		else
		{
			this.button.SetChecked(false);
			this.button.SetTooltip(Localization.Buttons.Mute);
		}
	}

	this.OnClick =3D function()
	{
		mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.Mute, =
this, null);
	}
}

/// MediaPlayer Volume Slider
VolumeSliderArea =3D function(container, containingWindow, id)
{
    this.ID =3D id;
	this.Slider =3D null;=09
	this.VolumeInitializedEventHandler =3D null;=09
	this.IsCurrentlyDragging =3D false;=09
	this.Orientation =3D SfUI.SfSlider.Orientation.Vertical;
=09
	this.OnLoad =3D function()
	{
		this.Initialize();
	}
=09
	this.Initialize =3D function()
	{
		var imageInfo =3D {SliderBackroundImage:this.SliderBackgroundImage, =
ThumbImage:this.ThumbImage, ThumbOverImage:this.ThumbOverImage};
		this.Slider =3D new SfUI.SfSlider({NamePrefix:this.ID, =
Orientation:this.Orientation, ImageInfo:imageInfo});
	    this.AddEventHandlers();
	}
=09
	this.AddEventHandlers =3D function()
	{
		this.Slider.AddClickHandler(Function.createDelegate(this, =
this.OnSliderClick));
		this.Slider.AddDragHandler(Function.createDelegate(this, =
this.OnSliderDrag));	=09
		=
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.VolumeInitializ=
ed, this.VolumeInitializedEventHandler.bind(this));
	}
=09
	this.VolumeInitializedEventHandler =3D function(sender, args)
	{
		this.Slider.SetPosition(args.Volume);
	}

	this.OnSliderClick =3D function(sender, args)
	{
		this.Slider.SetPosition(args.Position);
		this.PostSetVolumeCommand(args.Position);
	}
=09
	this.OnSliderDrag =3D function(sender, dragArgs)
	{
		if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.DragMove)
		{
			this.Slider.SetPosition(dragArgs.Position);
			this.PostSetVolumeCommand(dragArgs.Position);
		}
		else if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.BeginDrag)
		{
			this.IsCurrentlyDragging =3D true;
		}
		else if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.EndDrag)
		{
			this.IsCurrentlyDragging =3D false;
		}
	}
=09
	this.PostSetVolumeCommand =3D function(vol)
	{
		=
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.SetVolume, =
this, {Volume:vol});
	}
}

CCButtonArea =3D function(container, containingWindow, id) {
    this.ID =3D id;

    this.OnLoad =3D function() {
        this.button.Initialize();
    }

    this.OnDataLoad =3D function() {
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.AddEventHandlers();
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaOpened, =
this.PlayerSetupCompleteEventHandler.bind(this));
    }

    this.PlayerSetupCompleteEventHandler =3D function(sender, args) {
        this.button.Enable(true);
    }

    this.OnClick =3D function() {
    }
}

/// MediaPlayer Full Screen Button
FullScreenButtonArea =3D function(container, containingWindow, id)
{
	this.OnLoad =3D function()
	{
		this.button.Initialize();
		this.button.SetTooltip(Localization.Buttons.FullScreen);
	}
=09
	this.OnDataLoad =3D function()
	{
		this.button.SetClickHandler(this.OnClick.bind(this));
		this.AddEventHandlers();
	}
=09
	this.EnableDisableButton =3D function()
	{
		if (Manifest.HasVideo =3D=3D false)
		{
			this.button.Enable(false);
		}
		else
		{
			this.button.Enable(true);
		}
	}
=09
=09
	this.AddEventHandlers =3D function()
	{
		mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaOpened, =
this.PlayerSetupCompleteEventHandler.bind(this));
		=
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayStateChange=
d, this.PlayStateChangedEventHandler.bind(this));
	}
=09
	this.PlayerSetupCompleteEventHandler =3D function(sender, args)
	{
		this.EnableDisableButton();
	}
=09
	this.PlayStateChangedEventHandler =3D function(sender,state)
	{
		switch(state)
		{
			case SfKernel.MediaState.Playing:
			case SfKernel.MediaState.Paused:=09
    			this.button.Enable(true);
				break;
			default:
			    this.button.Enable(false);		=09
				break;
		}=09
	}
=09
	this.OnClick =3D function()
	{
		=
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.FullScreen,=
 this, null);
	}
=09
}

// 2.0.30603.0
if(!window.Silverlight)window.Silverlight=3D{};Silverlight._silverlightCo=
unt=3D0;Silverlight.__onSilverlightInstalledCalled=3Dfalse;Silverlight.fw=
linkRoot=3D"http://go2.microsoft.com/fwlink/?LinkID=3D";Silverlight.__ins=
tallationEventFired=3Dfalse;Silverlight.onGetSilverlight=3Dnull;Silverlig=
ht.onSilverlightInstalled=3Dfunction(){window.location.reload(false)};Sil=
verlight.isInstalled=3Dfunction(b){if(b=3D=3Dundefined)b=3Dnull;var =
a=3Dfalse,m=3Dnull;try{var =
i=3Dnull,j=3Dfalse;if(window.ActiveXObject)try{i=3Dnew =
ActiveXObject("AgControl.AgControl");if(b=3D=3D=3Dnull)a=3Dtrue;else =
if(i.IsVersionSupported(b))a=3Dtrue;i=3Dnull}catch(l){j=3Dtrue}else =
j=3Dtrue;if(j){var k=3Dnavigator.plugins["Silverlight =
Plug-In"];if(k)if(b=3D=3D=3Dnull)a=3Dtrue;else{var =
h=3Dk.description;if(h=3D=3D=3D"1.0.30226.2")h=3D"2.0.30226.2";var =
c=3Dh.split(".");while(c.length>3)c.pop();while(c.length<4)c.push(0);var =
e=3Db.split(".");while(e.length>4)e.pop();var =
d,g,f=3D0;do{d=3DparseInt(e[f]);g=3DparseInt(c[f]);f++}while(f<e.length&&=
d=3D=3D=3Dg);if(d<=3Dg&&!isNaN(d))a=3Dtrue}}}catch(l){a=3Dfalse}return =
a};Silverlight.WaitForInstallCompletion=3Dfunction(){if(!Silverlight.isBr=
owserRestartRequired&&Silverlight.onSilverlightInstalled){try{navigator.p=
lugins.refresh()}catch(a){}if(Silverlight.isInstalled(null)&&!Silverlight=
.__onSilverlightInstalledCalled){Silverlight.onSilverlightInstalled();Sil=
verlight.__onSilverlightInstalledCalled=3Dtrue}else =
setTimeout(Silverlight.WaitForInstallCompletion,3e3)}};Silverlight.__star=
tup=3Dfunction(){navigator.plugins.refresh();Silverlight.isBrowserRestart=
Required=3DSilverlight.isInstalled(null);if(!Silverlight.isBrowserRestart=
Required){Silverlight.WaitForInstallCompletion();if(!Silverlight.__instal=
lationEventFired){Silverlight.onInstallRequired();Silverlight.__installat=
ionEventFired=3Dtrue}}else if(window.navigator.mimeTypes){var =
b=3Dnavigator.mimeTypes["application/x-silverlight-2"],c=3Dnavigator.mime=
Types["application/x-silverlight-2-b2"],d=3Dnavigator.mimeTypes["applicat=
ion/x-silverlight-2-b1"],a=3Dd;if(c)a=3Dc;if(!b&&(d||c)){if(!Silverlight.=
__installationEventFired){Silverlight.onUpgradeRequired();Silverlight.__i=
nstallationEventFired=3Dtrue}}else =
if(b&&a)if(b.enabledPlugin&&a.enabledPlugin)if(b.enabledPlugin.descriptio=
n!=3Da.enabledPlugin.description)if(!Silverlight.__installationEventFired=
){Silverlight.onRestartRequired();Silverlight.__installationEventFired=3D=
true}}if(!Silverlight.disableAutoStartup)if(window.removeEventListener)wi=
ndow.removeEventListener("load",Silverlight.__startup,false);else =
window.detachEvent("onload",Silverlight.__startup)};if(!Silverlight.disab=
leAutoStartup)if(window.addEventListener)window.addEventListener("load",S=
ilverlight.__startup,false);else =
window.attachEvent("onload",Silverlight.__startup);Silverlight.createObje=
ct=3Dfunction(m,f,e,k,l,h,j){var =
d=3D{},a=3Dk,c=3Dl;d.version=3Da.version;a.source=3Dm;d.alt=3Da.alt;if(h)=
a.initParams=3Dh;if(a.isWindowless&&!a.windowless)a.windowless=3Da.isWind=
owless;if(a.framerate&&!a.maxFramerate)a.maxFramerate=3Da.framerate;if(e&=
&!a.id)a.id=3De;delete a.ignoreBrowserVer;delete =
a.inplaceInstallPrompt;delete a.version;delete a.isWindowless;delete =
a.framerate;delete a.data;delete a.src;delete =
a.alt;if(Silverlight.isInstalled(d.version)){for(var b in =
c)if(c[b]){if(b=3D=3D"onLoad"&&typeof =
c[b]=3D=3D"function"&&c[b].length!=3D1){var =
i=3Dc[b];c[b]=3Dfunction(a){return =
i(document.getElementById(e),j,a)}}var =
g=3DSilverlight.__getHandlerName(c[b]);if(g!=3Dnull){a[b]=3Dg;c[b]=3Dnull=
}else throw"typeof events."+b+" must be 'function' or =
'string'";}slPluginHTML=3DSilverlight.buildHTML(a)}else =
slPluginHTML=3DSilverlight.buildPromptHTML(d);if(f)f.innerHTML=3DslPlugin=
HTML;else return slPluginHTML};Silverlight.buildHTML=3Dfunction(a){var =
b=3D[];b.push('<object type=3D"application/x-silverlight" =
data=3D"data:application/x-silverlight,"');if(a.id!=3Dnull)b.push(' =
id=3D"'+Silverlight.HtmlAttributeEncode(a.id)+'"');if(a.width!=3Dnull)b.p=
ush(' width=3D"'+a.width+'"');if(a.height!=3Dnull)b.push(' =
height=3D"'+a.height+'"');b.push(" >");delete a.id;delete a.width;delete =
a.height;for(var c in a)if(a[c])b.push('<param =
name=3D"'+Silverlight.HtmlAttributeEncode(c)+'" =
value=3D"'+Silverlight.HtmlAttributeEncode(a[c])+'" =
/>');b.push("</object>");return =
b.join("")};Silverlight.createObjectEx=3Dfunction(b){var =
a=3Db,c=3DSilverlight.createObject(a.source,a.parentElement,a.id,a.proper=
ties,a.events,a.initParams,a.context);if(a.parentElement=3D=3Dnull)return=
 c};Silverlight.buildPromptHTML=3Dfunction(b){var =
a=3D"",d=3DSilverlight.fwlinkRoot,c=3Db.version;if(b.alt)a=3Db.alt;else{i=
f(!c)c=3D"";a=3D"<a =
href=3D'javascript:Silverlight.getSilverlight(\"{1}\");' =
style=3D'text-decoration: none;'><img src=3D'{2}' alt=3D'Get Microsoft =
Silverlight' style=3D'border-style: =
none'/></a>";a=3Da.replace("{1}",c);a=3Da.replace("{2}",d+"108181")}retur=
n =
a};Silverlight.getSilverlight=3Dfunction(e){if(Silverlight.onGetSilverlig=
ht)Silverlight.onGetSilverlight();var =
b=3D"",a=3DString(e).split(".");if(a.length>1){var =
c=3DparseInt(a[0]);if(isNaN(c)||c<2)b=3D"1.0";else b=3Da[0]+"."+a[1]}var =
d=3D"";if(b.match(/^\d+\056\d+$/))d=3D"&v=3D"+b;Silverlight.followFWLink(=
"149156"+d)};Silverlight.followFWLink=3Dfunction(a){top.location=3DSilver=
light.fwlinkRoot+String(a)};Silverlight.HtmlAttributeEncode=3Dfunction(c)=
{var a,b=3D"";if(c=3D=3Dnull)return null;for(var =
d=3D0;d<c.length;d++){a=3Dc.charCodeAt(d);if(a>96&&a<123||a>64&&a<91||a>4=
3&&a<58&&a!=3D47||a=3D=3D95)b=3Db+String.fromCharCode(a);else =
b=3Db+"&#"+a+";"}return =
b};Silverlight.default_error_handler=3Dfunction(e,b){var =
d,c=3Db.ErrorType;d=3Db.ErrorCode;var a=3D"\nSilverlight error message   =
  \n";a+=3D"ErrorCode: "+d+"\n";a+=3D"ErrorType: "+c+"       =
\n";a+=3D"Message: "+b.ErrorMessage+"     =
\n";if(c=3D=3D"ParserError"){a+=3D"XamlFile: "+b.xamlFile+"     =
\n";a+=3D"Line: "+b.lineNumber+"     \n";a+=3D"Position: =
"+b.charPosition+"     \n"}else =
if(c=3D=3D"RuntimeError"){if(b.lineNumber!=3D0){a+=3D"Line: =
"+b.lineNumber+"     \n";a+=3D"Position: "+b.charPosition+"     =
\n"}a+=3D"MethodName: "+b.methodName+"     =
\n"}alert(a)};Silverlight.__cleanup=3Dfunction(){for(var =
a=3DSilverlight._silverlightCount-1;a>=3D0;a--)window["__slEvent"+a]=3Dnu=
ll;Silverlight._silverlightCount=3D0;if(window.removeEventListener)window=
.removeEventListener("unload",Silverlight.__cleanup,false);else =
window.detachEvent("onunload",Silverlight.__cleanup)};Silverlight.__getHa=
ndlerName=3Dfunction(b){var a=3D"";if(typeof b=3D=3D"string")a=3Db;else =
if(typeof =
b=3D=3D"function"){if(Silverlight._silverlightCount=3D=3D0)if(window.addE=
ventListener)window.addEventListener("unload",Silverlight.__cleanup,false=
);else window.attachEvent("onunload",Silverlight.__cleanup);var =
c=3DSilverlight._silverlightCount++;a=3D"__slEvent"+c;window[a]=3Db}else =
a=3Dnull;return =
a};Silverlight.onRequiredVersionAvailable=3Dfunction(){};Silverlight.onRe=
startRequired=3Dfunction(){};Silverlight.onUpgradeRequired=3Dfunction(){}=
;Silverlight.onInstallRequired=3Dfunction(){};Silverlight.IsVersionAvaila=
bleOnError=3Dfunction(d,a){var =
b=3Dfalse;try{if(a.ErrorCode=3D=3D8001&&!Silverlight.__installationEventF=
ired){Silverlight.onUpgradeRequired();Silverlight.__installationEventFire=
d=3Dtrue}else =
if(a.ErrorCode=3D=3D8002&&!Silverlight.__installationEventFired){Silverli=
ght.onRestartRequired();Silverlight.__installationEventFired=3Dtrue}else =
if(a.ErrorCode=3D=3D5014||a.ErrorCode=3D=3D2106){if(Silverlight.__verifyS=
ilverlight2UpgradeSuccess(a.getHost()))b=3Dtrue}else =
b=3Dtrue}catch(c){}return =
b};Silverlight.IsVersionAvailableOnLoad=3Dfunction(b){var =
a=3Dfalse;try{if(Silverlight.__verifySilverlight2UpgradeSuccess(b.getHost=
()))a=3Dtrue}catch(c){}return =
a};Silverlight.__verifySilverlight2UpgradeSuccess=3Dfunction(d){var =
c=3Dfalse,b=3D"3.0.40624",a=3Dnull;try{if(d.IsVersionSupported(b+".99")){=
a=3DSilverlight.onRequiredVersionAvailable;c=3Dtrue}else =
if(d.IsVersionSupported(b+".0"))a=3DSilverlight.onRestartRequired;else =
a=3DSilverlight.onUpgradeRequired;if(a&&!Silverlight.__installationEventF=
ired){a();Silverlight.__installationEventFired=3Dtrue}}catch(e){}return =
c}/// SL1 MediaPlayer Area
SL1PlayerArea =3D function(container, containingWindow, id) {
    SL1PlayerArea.initializeBase(this, [container, containingWindow, =
id]);

    this.media =3D null;

    this.SetupPlayer =3D function() {
        var playerVideoArea =3D $('PlayerVideo');
        playerVideoArea.setAttribute('align', 'center');

        this.CreateObject();
        this.AdjustSize();
    }

    this.CreateObject =3D function() {

        var versionRequired =3D '1.0';

        if (Silverlight.isInstalled("3.0.40624")) {
            versionRequired =3D "3.0.40723";  //force SL3 GDR 1 if RTM =
is found
        }

        Silverlight.createObjectEx({
            source: this.GetXamlLocation(),
            parentElement: $('PlayerVideo'),
            id: 'EmbeddedPlayer',
            properties:
 				{ width: LayoutOptions.VideoWidth,
 				    height: LayoutOptions.VideoHeight,
 				    background: 'black',
 				    isWindowless: 'false',
 				    framerate: '24',
 				    version: versionRequired,
 				    alt: '<a =
href=3D"http://go.microsoft.com/fwlink/?LinkID=3D149156" =
style=3D"text-decoration: none;"><img =
src=3D"http://go.microsoft.com/fwlink/?LinkId=3D108181" alt=3D"Get =
Microsoft Silverlight" style=3D"border-style: none"/></a>'
 				},
            events:
 				{ onError: this.OnMediaError.bind(this), onLoad: =
this.OnMediaLoad.bind(this) },
            context: null
        });
    }

    this.GetXamlLocation =3D function() {
        var mainStylesheetLink =3D =
document.getElementById("mainStylesheet").href;
        return mainStylesheetLink.replace(/main.css/i, "SL1.xaml");
    }

    this.OnMediaError =3D function(sender, args) {
        if (args['errorCode'] =3D=3D 1001 && =
Manifest.VideoUrl.toLowerCase().substr(0, 4) =3D=3D 'http') {
            return;
        }

        this.HandleMediaPlayerError(this.FormatErrorMessage(args));
    }

    this.OnMediaLoad =3D function() {
        this.embeddedPlayer =3D $('EmbeddedPlayer');
        mss.OnLoad(this.embeddedPlayer);

        this.media =3D mss.FindName('media');
        this.media.width =3D LayoutOptions.VideoWidth;
        this.media.height =3D LayoutOptions.VideoHeight;

        this.AttachMediaEvents();

        this.pci =3D new SfMediaPlayer.SL1.PlayerControl(this.media);

        this.AddEventHandlers();

        this.SetMediaSource();

        this.Volume =3D new SfMediaPlayer.Volume(this.pci);
        this.timerManager =3D new SfMediaPlayer.TimerManager(this);

        if (mPlayer.CurrentSlidePanelInstance && Manifest.PlayStatus =
=3D=3D SfKernel.PresentationPlayStatus.OnDemand) {
            =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.TimerLoop, =
this.TimerLoopEventHandler.bind(this));
        }
    }

    this.SetMediaSource =3D function() {
        if (!Silverlight.isInstalled('4.0') && Manifest.UnicastVideoUrl =
&& Manifest.UnicastVideoUrl.length > 0) {
            this.pci.SetMedia(Manifest.UnicastVideoUrl);
        }
        else {
            this.pci.SetMedia(Manifest.VideoUrl);
        }
    }

    this.fullScreenChange =3D function(sender, args) {
        var embeddedSLMedia =3D mss.FindName('media');
        embeddedSLMedia.Width =3D mss.content.ActualWidth;
        embeddedSLMedia.Height =3D mss.content.ActualHeight;
        this.hideFullScreenPrompt();
    }

    this.hideFullScreenPrompt =3D function() {
        mss.SetVisible("fsText", false);
        mss.SetVisible("fsTextBackground", false);
    }

    this.MouseEnter =3D function(sender, args) {
        if (this.embeddedPlayer.content.fullScreen) {
            return;
        }

        var playState =3D this.pci.GetPlayState();

        if (playState !=3D SfKernel.MediaState.Playing && playState !=3D =
SfKernel.MediaState.Paused) {
            return;
        }

        mss.SetVisible("fsTextBackground", true);
        mss.SetVisible("fsText", true);

        var fsText =3D mss.FindName("fsText");
        var fsTextBackground =3D mss.FindName("fsTextBackground");
        fsText.Text =3D =
Localization.MediaPlayer.SilverlightFullScreenPrompt;
        fsText.width =3D LayoutOptions.VideoWidth;
        fsTextBackground.width =3D LayoutOptions.VideoWidth;
        mss.AlignText(mss.FindName("fsText"), TextAlign.CenterVertical | =
TextAlign.CenterHorizontal);

    }

    this.MouseLeave =3D function(sender, args) {
        this.hideFullScreenPrompt();
    }

    this.MouseLeftButtonUp =3D function(sender, args) {
        var playState =3D this.pci.GetPlayState();

        if (playState !=3D SfKernel.MediaState.Playing && playState !=3D =
SfKernel.MediaState.Paused) {
            return;
        }

        if (!this.embeddedPlayer.content.fullScreen) {
            this.embeddedPlayer.content.fullScreen =3D true;
            return;
        }

        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            if (playState =3D=3D SfKernel.MediaState.Paused) {
                this.Play();
            }
            else if (playState =3D=3D SfKernel.MediaState.Playing) {
                this.Pause();
            }
        }
    }

    this.AttachMediaEvents =3D function() {
        this.embeddedPlayer.content.onFullScreenChange =3D =
SfEvent.createDelegate(this, this.fullScreenChange);

        var videoArea =3D mss.FindName("videoArea");
        {
            videoArea.addEventListener("MouseEnter", =
SfEvent.createDelegate(this, this.MouseEnter));
            videoArea.addEventListener("MouseLeave", =
SfEvent.createDelegate(this, this.MouseLeave));
            videoArea.addEventListener("MouseLeftButtonUp", =
SfEvent.createDelegate(this, this.MouseLeftButtonUp));
        }

        this.media.addEventListener('mediaOpened', =
this.OnMediaOpened.bind(this));
        this.media.addEventListener('mediaFailed', =
this.OnMediaFailed.bind(this));
        this.media.addEventListener('currentStateChanged', =
this.OnMediaCurrentStateChanged.bind(this));

        if (!GlobalOptions.UseLiveEventPolling) {
            this.media.addEventListener('markerReached', =
this.OnMediaMarkerReached.bind(this));
        }
    }

    this.OnMediaOpened =3D function() {
        mPlayer.VolumeSliderInstance.OnLoad();
        mPlayer.PlayerSliderInstance.OnLoad();
        mPlayer.ReportViewerPageOpened();

        if (this.media.NaturalVideoHeight =3D=3D 0) {
            Manifest.HasVideo =3D false;
        }
        else {
            Manifest.HasVideo =3D true;
        }

        mPlayer.EventManager.PostEvent(SfKernel.EventType.MediaOpened, =
this, null);

        this.InitVolume();
        this.HandleAudioOnly();
        this.LoadAudioLanguages();

        switch (Manifest.PlayStatus) {
            case SfKernel.PresentationPlayStatus.Live:
            case SfKernel.PresentationPlayStatus.LivePaused:
                if (GlobalOptions.UseLiveEventPolling || =
mPlayer.PlayerDetect.IsMacPPC()) {
                    this.timerManager.pollLiveEvents =3D true;
                }
                break;
        }

        this.PostMediaLengthObtainedEvent();
        this.CheckStartStopTimes();

        this.timerManager.Start();
    }

    this.LoadAudioLanguages =3D function() {
        var languageCount =3D this.pci.GetAudioLanguageCount();
        if (languageCount > 1) {
            var AudioLanguages =3D new Array(languageCount);
            for (var i =3D 0; i < languageCount; ++i) {
                //Silverlight currently does not provide locale info
                AudioLanguages[i] =3D new SfKernel.AudioLanguageEntry(i, =
0, Localization.Common.AudioTrack + ' ' + (i + 1));
            }

            mPlayer.LoadAudioLanguages(AudioLanguages, 1);
        }
    }

    this.OnMediaFailed =3D function(sender, args) {
        this.HandleMediaPlayerError(this.FormatErrorMessage(args));
    }

    this.OnMediaLoaded =3D function(sender, args) {
    }

    this.OnMediaCurrentStateChanged =3D function(sender, args) {
        var playState =3D this.pci.GetPlayState();

        if (this.currentMediaState !=3D playState) {
            this.currentMediaState =3D playState;
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.PlayStateChanged, =
this, playState);
            this.CheckIfLiveEnded(playState);
        }
    }

    this.OnMediaMarkerReached =3D function(sender, args) {
        var scriptType =3D args['marker']['type'];
        var scriptParam =3D args['marker']['text'];
        this.ScriptParser.ParseScriptFromStream(scriptType, =
scriptParam);
    }

    this.TimerLoopEventHandler =3D function(sender, args) {
        this.HandleSlideChangeWhenPositionChanges(args["Position"]);
    }

    this.getFormattedTiming =3D function(posInMS) {
        var parsed =3D this.pci.ParseTime(posInMS);
        return parsed.HH + ":" + parsed.MM + ":" + parsed.SS + "." + =
parsed.FF;
    }

    this.FormatErrorMessage =3D function(args) {
        var errorDescription;

        switch (args['errorCode']) {
            case 4001:
                errorDescription =3D =
Localization.MediaPlayer.SilverlightNetworkError + "<br/> (" + =
args['errorMessage'] + ")";
                break;
            case 2203:
                errorDescription =3D =
Localization.MediaPlayer.SilverlightSetValueError + args['methodName'] + =
"<br/><br/>";
                break;
            default:
                errorDescription =3D =
Localization.MediaPlayer.GeneralError + "<br/> (" + args['errorCode'] + =
" - " + args['errorMessage'] + ")";
                break;
        }

        return errorDescription;
    }

    this.HideMediaPlayerDiv =3D function() {
        var playerElement =3D $('PlayerVideo');
        var notReady =3D $('PlayerNotStarted');

        var validSLVersion =3D Silverlight.isInstalled('1.0');
        if (validSLVersion) {
            if (Silverlight.isInstalled('3.0') && =
!Silverlight.isInstalled('3.0.40723')) {
                validSLVersion =3D false;
            }
        }

        if (validSLVersion) {
            if (playerElement) {
                playerElement.style.display =3D 'none';
            }
            if (notReady) {
                notReady.style.display =3D '';
            }
        }
        else {
            if (playerElement) {
                playerElement.setAttribute("align", "center");
                playerElement.style.display =3D '';
                var slPluginHelper =3D new Object();
                slPluginHelper.version =3D '1.0';
                playerElement.innerHTML =3D =
Silverlight.buildPromptHTML(slPluginHelper);
            }
            if (notReady) {
                notReady.style.display =3D 'none';
            }
        }

    }
}
SL1PlayerArea.registerClass('SL1PlayerArea', MediaPlayerArea);


/// SL1 MediaPlayer Control

Type.registerNamespace('SfMediaPlayer.SL1');
SfMediaPlayer.SL1.PlayerControl =3D function(embeddedMedia)
{
	this.media =3D embeddedMedia;
=09
	this.Play =3D function()
	{
		this.media.play();
	}
=09
	this.Stop =3D function()
	{
		this.media.stop();	=09
	}
=09
	this.Pause =3D function()
	{
		this.media.pause();
	}

	this.GetPlayState =3D function()
	{
		var state =3D this.media.currentState;
		return this.convertSL1StateToPlayState(state);
	}
=09
	this.SetMedia =3D function(loc)
	{
		this.media.source =3D loc;
	}
=09
	this.GetPosition =3D function()
	{
		return this.media.position.seconds * 1000;
	}
=09
	this.ParseTime =3D function(timeInMS)
	{
		var hh =3D Math.floor(timeInMS/3600000);
	=09
		var remainingMS =3D timeInMS - hh*3600000;
		var mm =3D Math.floor(remainingMS/60000);
	=09
		remainingMS =3D remainingMS - mm*60000;
		var ss =3D Math.floor(remainingMS/1000);
	=09
		remainingMS =3D remainingMS =3D ss*1000;
		var ff =3D Math.floor(remainingMS);

		return {HH:hh, MM:mm, SS:ss, FF:ff};	=09
	}
=09
	this.SetPosition =3D function(posInMS)
	{=09
		var parsed =3D this.ParseTime(posInMS);	=09
		var strPos =3D String.format('{0}:{1}:{2}.{3}', parsed.HH, parsed.MM, =
parsed.SS, parsed.FF);
	=09
		try
		{
	        if(this.GetPlayState() =3D=3D SfKernel.MediaState.Playing)
		    {
		        //prevent SL video freeze bug
		        this.Pause();
		        this.media.position =3D strPos;		   =20
		        this.Play();
		    }
		    else
		    {
		        this.media.position =3D strPos;		   =20
		    }

		}
		catch(e)
		{	=09
		}	=09
	}
=09
	this.GetMediaDuration =3D function()
	{
		return this.media.naturalDuration.seconds * 1000;
	}

	this.SetVolume =3D function(val)
	{  =20
		this.media.volume =3D val/100;
	}
=09
	this.GetVolume =3D function()
	{
		return this.media.volume * 100;
	}
=09
	this.SetMute =3D function(val)
	{
		this.media.isMuted =3D val;
	}
		=09
	this.convertSL1StateToPlayState =3D function(state)
	{
		switch (state.toLowerCase())
		{
			case 'buffering':
				return SfKernel.MediaState.Buffering;
			case 'closed':
				return SfKernel.MediaState.Closed;
			case 'error':
				return SfKernel.MediaState.Error;
			case 'opening':
				return SfKernel.MediaState.Opening;
			case 'paused':
				return SfKernel.MediaState.Paused;
			case 'playing':
				return SfKernel.MediaState.Playing;
			case 'stopped':
				return SfKernel.MediaState.Stopped;
			default:
				return SfKernel.MediaState.Undefined;
		}
	}

	this.SetPlaybackSpeed =3D function(speed)
	{
		throw Error.notImplemented();
	}
=09
    this.SetFullScreen =3D function(fs)
	{
		throw Error.notImplemented();
	}

    this.GetAudioLanguageCount =3D function()
    {
        return this.media.AudioStreamCount;
    }
   =20
	this.SetAudioLanguageIndex =3D function(index)
	{
		this.media.AudioStreamIndex  =3D index;
    }

}


////////////////////////////////////////////

function SfEvent(name)
{
    this.Name=3Dname;
    this.delegateList=3Dnew Array(0);
}

SfEvent.createDelegate =3D function(instance, method)=20
{
	return function() {
        return method.apply(instance, arguments);
    }
}

SfEvent.prototype=3D
{

    Invoke:function(objParameters)
	{
	    for (var i=3D0;i<this.delegateList.length;i++)
	    {
	        if (this.delegateList[i])
	        {
	            this.delegateList[i](objParameters);
	        }
	    }

    },
   =20
    addListener:function(delegate)
    {
   =20
        for(var i=3D0;i<this.delegateList.length;i++)
        {
            if (this.delegateList[i]=3D=3Dnull)
            {
                this.delegateList[i]=3Ddelegate;
                return i;
            }
        }
       =20
        var newList =3D new Array(this.delegateList.length+1);
       =20
        for(var i=3D0;i<this.delegateList.length;i++)
        {
            newList[i]=3Dthis.delegateList[i];
        }
       =20
        newList[this.delegateList.length]=3Ddelegate;
       =20
        this.delegateList=3DnewList;
       =20
        return (this.delegateList.length-1);
    },
   =20
    removeListener:function(token)
    {
        if (this.delegateList.length>token)
        {
            this.delegateList[token]=3Dnull;
        }
    }
}

function EventList()=20
{
    this.namedEvents=3Dnew Array(arguments.length);
   =20
    for(var i=3D0;i<arguments.length;i++)
    {
        this.namedEvents[i]=3Dnew Event(arguments[i]);
    }
}

EventList.prototype=3D
{

    Invoke:function(name,objParameters)
	{
	    var event =3D this.findEvent(name);
	   =20
	    if (event)
	    {
	        event.Invoke(objParameters);
	    }

    },
   =20
    addListener:function(name,delegate)
    {
        var event =3D this.findEvent(name);
	   =20
	    if (event)
	    {
	        return event.addListener(delegate);
	    }
	   =20
	    return null;
    },
    removeListener:function(name,token)
    {
        var event =3D this.findEvent(name);
	   =20
	    if (event)
	    {
	        event.removeListener(token);
	    }
    },
    findEvent:function(name)
    {
        for(var i=3D0;i<this.namedEvents.length;i++)
        {
            if (this.namedEvents[i].Name=3D=3Dname)
            {
                return this.namedEvents[i];
            }
        }
       =20
        return null;
    }
}

function mss(){}

mss.control=3Dnull;
mss.content=3Dnull;

mss.OnLoad=3Dfunction(silverlightControl)
{
    mss.control=3DsilverlightControl;
    mss.content=3Dmss.control.content;
}
   =20
mss.Animate=3Dfunction(animationName)=20
{
    var animation =3D mss.FindName(animationName);
=09
    if (animation!=3Dnull)
    {
        animation.begin();
        return true;
    }
    return false;
}

mss.FindName=3Dfunction(name)=20
{
    return mss.content.findName(name);
}

mss.SetVisible =3D function(canvasName,show)=20
{
    var panel =3D mss.FindName(canvasName);
   =20
    if (panel!=3Dnull)
    {
        if (show)
        {
           panel.SetValue("Visibility","Visible");
        }
        else
        {
           panel.SetValue("Visibility","Collapsed");
        }
    }
}
function TextAlign(){}
TextAlign.CenterVertical=3D1;
TextAlign.CenterHorizontal=3D2;

mss.AlignText=3Dfunction(textBlock,textAlign)
{

        if ((textAlign & =
TextAlign.CenterHorizontal)=3D=3DTextAlign.CenterHorizontal)
        {
            textBlock.SetValue("Canvas.Left", 0);
            var newLeft =3D ((textBlock.Width - textBlock.ActualWidth) / =
2)+ textBlock.GetValue("Canvas.Left");=20
           =20
            textBlock.SetValue("Canvas.Left", newLeft);=20
        }
=20

        if ((textAlign & =
TextAlign.CenterVertical)=3D=3DTextAlign.CenterVertical)
        {
            textBlock.SetValue("Canvas.Top", 0);
            var newTop =3D ((textBlock.Height - textBlock.ActualHeight) =
/ 2) + textBlock.GetValue("Canvas.Top");
                =20
            textBlock.SetValue("Canvas.Top", newTop);
        }
}

function Rectangle(left,top,width,height)
{
    this.Left=3Dleft;
    this.Top=3Dtop;
    this.Width=3Dwidth;
    this.Height=3Dheight;
}

Rectangle.prototype =3D
{
    SetCanvasRect:function(canvas)
	{
	    canvas.SetValue("Canvas.Left",this.Left);
        canvas.SetValue("Canvas.Top",this.Top);
	    canvas.width=3Dthis.Width;
        canvas.height=3Dthis.Height;

    },
   =20
    SetCanvasSize:function(canvas)
	{
	    canvas.width=3Dthis.Width;
        canvas.height=3Dthis.Height;
    },
   =20
    GetCanvasRect:function(canvas)
	{
	    this.Width=3Dcanvas.width;
        this.Height=3Dcanvas.height;
        this.Left=3Dcanvas.GetValue("Canvas.Left");
        this.Top=3Dcanvas.GetValue("Canvas.Top");
    },
   =20
    SetClipRect:function(rectangleGeometry)
	{
        var =
rectDimensions=3Dthis.Left+","+this.Top+","+this.Width+","+this.Height;
        rectangleGeometry["Rect"]=3DrectDimensions;
    },
   =20
    Clone:function()
    {
        return new Rectangle(this.Left,this.Top,this.Width,this.Height);
    },
   =20
    ToString:function()
    {
        return this.Left+","+this.Top+","+this.Width+","+this.Height;
    }
}


// WM7 MediaPlayer Area

WM7PlayerArea =3D function(container, containingWindow, id) {
    WM7PlayerArea.initializeBase(this, [container, containingWindow, =
id]);

    this.SetupPlayer =3D function() {
        var initDelay =3D 100;

        if (mPlayer.PlayerDetect.GetPlayerType() =3D=3D =
SfKernel.MediaPlayerType.WM7) {
            var wm7Player =3D document.createElement("OBJECT");
            wm7Player.setAttribute("id", "EmbeddedPlayer");
            wm7Player.setAttribute("classid", =
"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6");
            var wm7PlayerUI =3D document.createElement("PARAM");
            wm7PlayerUI.setAttribute("name", "uiMode");
            wm7PlayerUI.setAttribute("value", "none");
            wm7Player.appendChild(wm7PlayerUI);
            $('PlayerVideo').appendChild(wm7Player);
            $('EmbeddedPlayer').uiMode =3D "none";
        }
        else if (mPlayer.PlayerDetect.GetPlayerType() =3D=3D =
SfKernel.MediaPlayerType.Port25) {
            var port25Player =3D document.createElement("OBJECT");
            port25Player.setAttribute("id", "EmbeddedPlayer");
            port25Player.setAttribute("data", "");
            port25Player.setAttribute("type", "application/x-ms-wmp");
            var styleFormat =3D =
String.format("width:{0}px;height:{1}px", LayoutOptions.VideoWidth, =
LayoutOptions.VideoHeight);
            port25Player.setAttribute("style", styleFormat);
            var port25PlayerUI =3D document.createElement("PARAM");
            port25PlayerUI.setAttribute("name", "uiMode");
            port25PlayerUI.setAttribute("value", "none");
            port25Player.appendChild(port25PlayerUI);
            $('PlayerVideo').appendChild(port25Player);

            initDelay =3D 750;
        }

        this.embeddedPlayer =3D $('EmbeddedPlayer');
        this.pci =3D new =
SfMediaPlayer.WM7.PlayerControl(this.embeddedPlayer);
        this.AdjustSize();

        window.setTimeout(this.WaitForPlayerInit.bind(this), initDelay);
    }

    this.WaitForPlayerInit =3D function() {
        if (!this.embeddedPlayer.settings) {
            window.setTimeout(this.WaitForPlayerInit.bind(this), 200);
            return;
        }
        this.LoadPlayer();
    }

    this.LoadPlayer =3D function() {
        this.embeddedPlayer.enableContextMenu =3D =
GlobalOptions.EnableContextMenuForPlayer;
        this.embeddedPlayer.windowlessVideo =3D true;
        this.embeddedPlayer.settings.invokeURLs =3D false;
        this.embeddedPlayer.stretchToFit =3D true;


        this.AttachMediaEvents();
        this.AddEventHandlers();

        this.SetMediaSource();

        this.Volume =3D new SfMediaPlayer.Volume(this.pci);
        this.timerManager =3D new SfMediaPlayer.TimerManager(this);

        if (mPlayer.CurrentSlidePanelInstance && Manifest.PlayStatus =
=3D=3D SfKernel.PresentationPlayStatus.OnDemand) {
            =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.TimerLoop, =
this.TimerLoopEventHandler.bind(this));
        }
    }

    this.AttachMediaEvents =3D function() {
        if (document.attachEvent) {
            this.embeddedPlayer.attachEvent("OpenStateChange", =
this.OnMediaOpenStateChange.bind(this));
            this.embeddedPlayer.attachEvent("MediaError", =
this.OnMediaError.bind(this));
            this.embeddedPlayer.attachEvent("PlayStateChange", =
this.OnMediaPlayStateChange.bind(this));

            if (!GlobalOptions.UseLiveEventPolling) {
                this.embeddedPlayer.attachEvent("ScriptCommand", =
this.OnScriptCommand.bind(this));
            }
        }
    }

    this.TimerLoopEventHandler =3D function(sender, args) {
        this.HandleSlideChangeWhenPositionChanges(args["Position"]);
    }

    this.OnMediaOpenStateChange =3D function(openState) {
        if (openState !=3D 13) {
            return;
        }

        mPlayer.VolumeSliderInstance.OnLoad();
        mPlayer.PlayerSliderInstance.OnLoad();
        mPlayer.ReportViewerPageOpened();

        if (this.embeddedPlayer.currentMedia.getItemInfo("MediaType") =
=3D=3D 'audio') {
            Manifest.HasVideo =3D false;
        }
        else {
            Manifest.HasVideo =3D true;
        }

        mPlayer.EventManager.PostEvent(SfKernel.EventType.MediaOpened, =
this, null);

        this.InitVolume();
        this.HandleAudioOnly();
        this.LoadAudioLanguages();

        if ((Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused) && =
GlobalOptions.UseLiveEventPolling) {
            this.timerManager.pollLiveEvents =3D true;
        }

        this.PostMediaLengthObtainedEvent();
        this.CheckStartStopTimes();

        this.timerManager.Start();
    }

    this.LoadAudioLanguages =3D function() {
        var languageCount =3D this.pci.GetAudioLanguageCount();
        if (languageCount > 1) {
            var currentIndex =3D =
this.pci.GetCurrentAudioLanguageIndex();
            var AudioLanguages =3D new Array(languageCount);

            for (var i =3D 0; i < languageCount; ++i) {
                var lcid =3D this.pci.GetAudioLanguageID(i + 1);
                AudioLanguages[i] =3D new SfKernel.AudioLanguageEntry(i =
+ 1, lcid, this.pci.GetAudioLanguageName(lcid));
            }

            mPlayer.LoadAudioLanguages(AudioLanguages, currentIndex);
        }
    }

    this.OnMediaError =3D function() {
        =
this.HandleMediaPlayerError(this.FormatErrorMessage(this.embeddedPlayer.c=
urrentMedia.error));
    }

    this.OnMediaPlayStateChange =3D function(playState) {
        if (this.currentMediaState !=3D playState) {
            this.currentMediaState =3D playState;
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.PlayStateChanged, =
this, playState);
            this.CheckIfLiveEnded(playState);
        }
    }

    this.OnScriptCommand =3D function(sType, sParam) {
        this.ScriptParser.ParseScriptFromStream(sType, sParam);
    }

    this.FormatErrorMessage =3D function(error) {
        if (!error.errorCode) {
            return Localization.MediaPlayer.GeneralError;
        }

        var errorDescription;

        switch (error.errorCode) {
            case -1072885294: //C00D11D2
            case -1072885353: //C00D1197		=09
                errorDescription =3D =
Localization.MediaPlayer.FileNotFoundError;
                break;
            case -1072885352: //C00D1198
                errorDescription =3D =
Localization.MediaPlayer.ServerConnectionError;
                break;
            case -1072885328: //C00D11B0=20
                errorDescription =3D =
Localization.MediaPlayer.ServerNotAvailable;
                break;
            default:
                errorDescription =3D error.errorDescription + " (" + =
error.errorCode + ")";
                break;
        }

        return errorDescription;
    }

}
WM7PlayerArea.registerClass('WM7PlayerArea', MediaPlayerArea);

Type.registerNamespace('SfMediaPlayer.WM7');
SfMediaPlayer.WM7.PlayerControl =3D function(objEmbeddedPlayer)
{
	this.objEmbedded =3D objEmbeddedPlayer;
=09
	this.GetVersionInfo =3D function()
	{
		return this.objEmbedded.versionInfo;
	}

	this.Play =3D function()
	{
		this.objEmbedded.controls.play();
	}
=09
	this.Stop =3D function()
	{
		this.objEmbedded.controls.stop();
	}
=09
	this.Pause =3D function()
	{
		this.objEmbedded.controls.pause();
	}

    this.GetCurrentAudioLanguageIndex =3D function()
    {
		try
		{
		    return this.objEmbedded.controls.currentAudioLanguageIndex;
		}
		catch(ex)
		{
		    return 0;
		}       =20
   =20
    }
   =20
    this.GetAudioLanguageCount =3D function()
    {
		try
		{
		    return this.objEmbedded.controls.audioLanguageCount;
		}
		catch(ex)
		{
		    return 1;
		}       =20
   =20
    }
    this.GetAudioLanguageID =3D function(index)
    {
		try
		{
		    return this.objEmbedded.controls.getAudioLanguageID(index);
		}
		catch(ex)
		{
		    return 0;
		}           =20
    }

    this.GetAudioLanguageName =3D function(lcid)
    {
		try
		{
		    return this.objEmbedded.controls.getLanguageName(lcid);
		}
		catch(ex)
		{
		}       =20
    }
       =20
	this.SetAudioLanguageIndex =3D function(index)
	{
		try
		{
			this.objEmbedded.controls.currentAudioLanguageIndex =3D index;
		}
		catch(ex)
		{
		}
	}
=09
	this.GetPlayState =3D function()
	{
		return this.objEmbedded.playState;
	}
=09
	this.SetFullScreen =3D function(f)
	{
		this.objEmbedded.fullScreen =3D f;
	}
=09
	this.SetPosition =3D function(positionInMS)
	{	   =20
		this.objEmbedded.controls.currentPosition=3DpositionInMS/1000;=09
	}

	this.GetPosition =3D function()
	{
		return this.objEmbedded.controls.currentPosition * 1000;
	}
=09
	this.GetMediaDuration =3D function()
	{
		if (this.objEmbedded.currentMedia)
		{
			return this.objEmbedded.currentMedia.duration * 1000;
		}
	=09
		return 0;
	}

	this.SetMedia =3D function(sMedia)
	{
		this.objEmbedded.URL=3DsMedia;
	}
=09
	this.GetCurrentMarker =3D function()
	{
		return this.objEmbedded.controls.currentMarker;
	}
=09
	this.GetMediaMarkerCount =3D function()
	{
		if (this.objEmbedded.currentMedia)
		{
			return this.objEmbedded.currentMedia.markerCount;
		}
	=09
		return 0;
	}
=09
	this.GetMediaMarkerName =3D function(nIndex)
	{
		if (this.objEmbedded.currentMedia)
		{
			return this.objEmbedded.currentMedia.getMarkerName(nIndex);
		}
	=09
		return null;
	}
=09
	this.GetMediaMarkerTime =3D function(nIndex)
	{
		if (this.objEmbedded.currentMedia)
		{
			return this.objEmbedded.currentMedia.getMarkerTime(nIndex);
		}
	=09
		return 0;
	}
=09
	this.GetVolume =3D function()
	{
		return this.objEmbedded.settings.volume;
	}
=09
	this.SetVolume =3D function(nVolume)
	{
		this.objEmbedded.settings.volume =3D Math.round(nVolume);
	}
=09
	this.SetMute =3D function(fMute)
	{
		this.objEmbedded.settings.mute =3D fMute;
	}
=09
	this.SetPlaybackSpeed =3D function(speed)
	{
		this.objEmbedded.settings.rate =3D speed;
	}
}

/// Port25 Media Event Handlers
function OnDSPlayStateChangeEvt(newState)
{
    mPlayer.PlayerAreaInstance.OnMediaPlayStateChange(newState);
}
function OnDSOpenStateChangeEvt(newState)
{
    mPlayer.PlayerAreaInstance.OnMediaOpenStateChange(newState);
}
function OnDSScriptCommandEvt(scriptType, scriptParam)
{
   mPlayer.PlayerAreaInstance.OnScriptCommand(scriptType, scriptParam);
}
function OnDSMediaErrorEvt()
{
   mPlayer.PlayerAreaInstance.OnMediaError();
}



CurrentSlidePanel =3D function(container, containingWindow, id) {
    this.ID =3D id;
    this._imageCache$1 =3D new SfImage.ImageCache(container + =
'._imageCache$1');
}
CurrentSlidePanel.prototype =3D {
    _slideImageDiv$1: null,
    _slideImageLinkDiv$1: null,
   =20
    get_slideImageDiv: function CurrentSlidePanel$get_slideImageDiv() {
        return this._slideImageDiv$1;
    },
    set_slideImageDiv: function =
CurrentSlidePanel$set_slideImageDiv(value) {
        this._slideImageDiv$1 =3D value;
        return value;
    },
   =20
    _slideDescriptionDiv$1: null,
    _showNoImage$1: false,
    _imageCache$1: null,
    _toolbuttonController$1: null,
    _viewportManager$1: null,
   =20
    OnLoad: function CurrentSlidePanel$OnLoad() {
        this._slideImageDiv$1 =3D $(this.ID + 'SlideImage');
        this._slideDescriptionDiv$1 =3D $(this.ID + 'SlideDescription'); =
    =20
        this._slideImageLinkDiv$1 =3D $(this.ID + 'ImageLink');
       =20
        if(LayoutOptions.Images['SlideDefault'])
        {
            =
this._setSlideImage$1(LayoutOptions.Images['SlideDefault'].ImageFilename)=
;
            =
this._setSlideLink$1(LayoutOptions.Images['SlideDefault'].ImageUrl);
            =
this._setSlideDescription$1(Localization.CurrentSlideResource.SlideImage)=
;         =20
        }
    },
   =20
    OnDataLoad: function()
    {
        this._registerEvents$1();
        this._toolbuttonController$1 =3D new =
CurrentSlide.CurrentSlideToolbuttonController(this);
        this._viewportManager$1 =3D new =
CurrentSlide.ViewportManager(this);   =20
        this._loadDefaultImage$1(); =20
    },
   =20
    GetDiv : function()
	{
		if (this._div =3D=3D null)
		{
			this._div =3D $(this.ID);
		}
		return this._div;
	},
   =20
    turnOnSlideDescription: function =
CurrentSlidePanel$turnOnSlideDescription() {
        this._slideImageDiv$1.style.visibility =3D 'hidden';
        this._slideDescriptionDiv$1.style.visibility =3D 'visible';
    },
   =20
    turnOffSlideDescription: function =
CurrentSlidePanel$turnOffSlideDescription() {
        this._slideImageDiv$1.style.visibility =3D 'visible';
        this._slideDescriptionDiv$1.style.visibility =3D 'hidden';
    },
   =20
    showMagnifier: function CurrentSlidePanel$showMagnifier() {
        this._viewportManager$1.set_isShowing(true);
    },
   =20
    hideMagnifier: function CurrentSlidePanel$hideMagnifier() {
        this._viewportManager$1.set_isShowing(false);
    },
   =20
    _loadDefaultImage$1: function =
CurrentSlidePanel$_loadDefaultImage$1() {
        var status =3D Manifest.PlayStatus;
        switch (status) {
            case SfKernel.PresentationPlayStatus.Live:
            case SfKernel.PresentationPlayStatus.LivePaused:
                this._setCurrentCaptureImage$1();
                break;
            case SfKernel.PresentationPlayStatus.OnDemand:
                if(LayoutOptions.Images['SlideDefault'])
                {
                    =
this._setSlideImage$1(LayoutOptions.Images['SlideDefault'].ImageFilename)=
;
                    =
this._setSlideLink$1(LayoutOptions.Images['SlideDefault'].ImageUrl);
                    =
this._setSlideDescription$1(Localization.CurrentSlideResource.SlideImage)=
;
                }
                break;
            case SfKernel.PresentationPlayStatus.LiveEnded:
                if(!LayoutOptions.DoNotShowEndSlide && =
LayoutOptions.Images['SlideEnded'])
                {
                    =
this._setSlideImage$1(LayoutOptions.Images['SlideEnded'].ImageFilename);
                    =
this._setSlideLink$1(LayoutOptions.Images['SlideEnded'].ImageUrl);
                }
                break;
            case SfKernel.PresentationPlayStatus.ScheduledForLive:
            case SfKernel.PresentationPlayStatus.OpenForLive:
                if(LayoutOptions.Images['SlideNotStarted'])
                {
                    =
this._setSlideImage$1(LayoutOptions.Images['SlideNotStarted'].ImageFilena=
me);
                    =
this._setSlideLink$1(LayoutOptions.Images['SlideNotStarted'].ImageUrl);
                }
                break;
            default:
                throw Error.invalidOperation('Unknown presentation =
status');
        }
    },
   =20
    _registerEvents$1: function CurrentSlidePanel$_registerEvents$1() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
Function.createDelegate(this, this._onScriptEvent$1));
        =
mPlayer.EventManager.CommandEvents.addHandler(SfKernel.CommandEventId.Pla=
y, Function.createDelegate(this, this._onPlay$1));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.LivePlaybackSta=
rted, Function.createDelegate(this, this._onDataAvailable$1));
    },
   =20
    _setCurrentCaptureImage$1: function =
CurrentSlidePanel$_setCurrentCaptureImage$1() {
        var max =3D Manifest.Slides.length;
        if (max < 1) {
            if(LayoutOptions.Images['SlideDefault'])
            {
                =
this._setSlideImage$1(LayoutOptions.Images['SlideDefault'].ImageFilename)=
;
                =
this._setSlideLink$1(LayoutOptions.Images['SlideDefault'].ImageUrl);
            }
            return;
        }
        mPlayer.CurrentFullSizeImage =3D mPlayer.GetImageLocation(max, =
SfKernel.SlideType.FullSize);
        mPlayer.CurrentSlideNumber =3D max;
        this._setSlideImage$1(mPlayer.GetImageLocation(max, =
SfKernel.SlideType.Normal));      =20
        this._setSlideLink$1(null);
        this._toolbuttonController$1.ensureClickIsInitialized();
    },
   =20
    _setSlideImage$1: function CurrentSlidePanel$_setSlideImage$1(src) {
        this._slideImageDiv$1.setAttribute('src', src);
        this._slideImageDiv$1.show();
    },
   =20
   _setSlideLink$1: function CurrentSlidePanel$_setSlideLink$1(href) {
  =20
        if(!href || href.length < 1)
        {
            this._slideImageLinkDiv$1.removeAttribute('href');           =

        }
        else
        {
            this._slideImageLinkDiv$1.setAttribute('href', href);   =20
        }   =20
    },

    _onScriptEvent$1: function =
CurrentSlidePanel$_onScriptEvent$1(sender, args) {
        var commandType =3D args['Command'];
        switch (commandType) {
            case SfKernel.ScriptCmdType.ShowSlide:
                this._showSlide$1(args);
                break;
            case SfKernel.ScriptCmdType.EndPresentation:
                this._doEndPresentation$1();
                break;
        }
    },
   =20
    _onPlay$1: function CurrentSlidePanel$_onPlay$1(sender, args) {
        if (mPlayer.PresentationEnded) {
            this._doEndPresentation$1();
        }
    },
   =20
    _onDataAvailable$1: function =
CurrentSlidePanel$_onDataAvailable$1(sender, args) {
        this._setCurrentCaptureImage$1();
    },
           =20
    _showSlide$1: function CurrentSlidePanel$_showSlide$1(args) {
        var slideNumber =3D args['Index'];
        var currentImage =3D args['Image'];
        mPlayer.CurrentFullSizeImage =3D args['FullSizeImage'];
        if (this._showNoImage$1) {
            this._setSlideImage$1('');
            this._setSlideLink$1(null);
        }
        else {
            this._setSlideImage$1(currentImage);
            this._setSlideLink$1(null);
        }
        this._doSlideDescriptionStuff$1(slideNumber);
        if ((Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) && (slideNumber < =
Manifest.Slides.length)) {
            =
this._imageCache$1.AddImage(mPlayer.GetImageLocation(mPlayer.CurrentSlide=
Number + 1, SfKernel.SlideType.Normal), true);
        }
        this._updateFullSizeWindow$1(currentImage);
        this._toolbuttonController$1.ensureClickIsInitialized();
    },
   =20
    _updateFullSizeWindow$1: function =
CurrentSlidePanel$_updateFullSizeWindow$1(currentImage) {
        if (!WindowHelper.IsOpen(mPlayer.PopupWindows.FullSize)) {
            return;
        }
        var fullSize =3D mPlayer.PopupWindows.FullSize.SlidePlayer;
        if (SfKernel.Util.IsNullOrUndefined(fullSize)) {
            return;
        }
        fullSize.UpdateIfNeeded(mPlayer.CurrentFullSizeImage, =
mPlayer.CurrentSlideNumber);
    },
   =20
    _doSlideDescriptionStuff$1: function =
CurrentSlidePanel$_doSlideDescriptionStuff$1(slideNumber) {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            this._setDefaultAltText$1(slideNumber);
            this._setDefaultSlideDescription$1(slideNumber);
        }
        else
        {           =20
            var slideTitle =3D Manifest.GetSlideTitle(slideNumber);
    =20
            if(slideTitle !=3D null && slideTitle.length > 0)            =

            {
                this._setAltText$1(slideTitle);
            }                         =20
            else
            {
                this._setDefaultAltText$1(slideNumber);
            }
           =20
            var slideDescription =3D =
Manifest.GetSlideDescription(slideNumber);
           =20
    =20
            if((slideDescription !=3D null && slideDescription.length > =
0) || (slideTitle !=3D null && slideTitle.length > 0))
            {
                var slideDescriptionContent;
                if(slideTitle !=3D null && slideTitle.length > 0)
                {
                    slideDescriptionContent =3D "<b>" + slideTitle + =
"</b><br/>";
                }
                if(slideDescription !=3D null && slideDescription.length =
> 0)
                {
                    slideDescriptionContent +=3D slideDescription;
                }
                this._setSlideDescription$1(slideDescriptionContent);
            }
            else
            {        =20
                this._setDefaultSlideDescription$1(slideNumber);
            }
      }
    },
   =20
    _doEndPresentation$1: function =
CurrentSlidePanel$_doEndPresentation$1() {
    if (!LayoutOptions.DoNotShowEndSlide && =
LayoutOptions.Images['SlideEnded'])
        {
            =
this._setSlideImage$1(LayoutOptions.Images['SlideEnded'].ImageFilename);
            =
this._setSlideLink$1(LayoutOptions.Images['SlideEnded'].ImageUrl);
            =
this._setAltText$1(Localization.CurrentSlideResource.PresentationHasEnded=
);
            =
this._setSlideDescription$1(Localization.CurrentSlideResource.Presentatio=
nHasEnded);
            this._toolbuttonController$1.resetClick();
        }
    },
   =20
    _setDefaultSlideDescription$1: function =
CurrentSlidePanel$_setDefaultSlideDescription$1(slideNumber) {
        this._setSlideDescription$1(String.format('Slide {0}', =
slideNumber));
    },
   =20
    _setSlideDescription$1: function =
CurrentSlidePanel$_setSlideDescription$1(text) {
        $(this._slideDescriptionDiv$1).innerHTML =3D =
SfKernel.EncodeHTML(text);
    },
   =20
    _setDefaultAltText$1: function =
CurrentSlidePanel$_setDefaultAltText$1(slideNumber) {
        this._setAltText$1(String.format('Slide {0}', slideNumber));
    },
   =20
    _setAltText$1: function CurrentSlidePanel$_setAltText$1(text) {
        this._slideImageDiv$1.setAttribute('alt', text);
        this._slideImageDiv$1.setAttribute('title', text);
        this._slideDescriptionDiv$1.setAttribute('title', text);
    }
  =20
}


Type.registerNamespace('CurrentSlide');

CurrentSlide.IToolbuttonController =3D function() { };
CurrentSlide.IToolbuttonController.prototype =3D {
    selectButton : null
}
CurrentSlide.IToolbuttonController.registerInterface('CurrentSlide.IToolb=
uttonController');


CurrentSlide.$create_ToolbuttonClassInfo =3D function =
CurrentSlide_ToolbuttonClassInfo(normal, over, disabled, checkedClass) {
    var $o =3D { };
    $o.normal =3D normal;
    $o.over =3D over;
    $o.disabled =3D disabled;
    $o.checked =3D checkedClass;
    return $o;
}

CurrentSlide.CurrentSlideToolbuttonController =3D function =
CurrentSlide_CurrentSlideToolbuttonController(parentArea) {
    this._parentArea =3D parentArea;
    this._viewportToolbutton =3D new CurrentSlide.Toolbutton(this, =
$(this._parentArea.ID + 'ViewportToolbutton'), =
CurrentSlide.$create_ToolbuttonClassInfo('CurrentSlideAreaViewportToolbut=
tonNormal', 'CurrentSlideAreaViewportToolbuttonOver', =
'CurrentSlideAreaViewportToolbuttonDisabled', =
'CurrentSlideAreaViewportToolbuttonChecked'), =
Localization.CurrentSlideResource.ShowSlideMagnifier, true);
    this._fullSizeToolbutton =3D new CurrentSlide.Toolbutton(this, =
$(this._parentArea.ID + 'FullSizeToolbutton'), =
CurrentSlide.$create_ToolbuttonClassInfo('CurrentSlideAreaFullSizeToolbut=
tonNormal', 'CurrentSlideAreaFullSizeToolbuttonOver', =
'CurrentSlideAreaFullSizeToolbuttonDisabled', =
'CurrentSlideAreaFullSizeToolbuttonChecked'), =
Localization.CurrentSlideResource.ShowFullSize, true);
    this._slideDescriptionsShowing =3D new =
MediasitePlayerCookie().GetBoolValue("ShowSlideDescriptions");
   =20
    if(this._slideDescriptionsShowing)
    {
            this._parentArea.turnOnSlideDescription();
            this._viewportToolbutton.set_isDisabled(true);
            this._fullSizeToolbutton.set_isDisabled(true);   =20
    }
}
CurrentSlide.CurrentSlideToolbuttonController.prototype =3D {
    _parentArea: null,
    _viewportToolbutton: null,
    _fullSizeToolbutton: null,
    _isClickInitialized: false,
    _slideDescriptionsShowing: false,
   =20
    selectButton: function =
CurrentSlide_CurrentSlideToolbuttonController$selectButton(button) {
        if (button =3D=3D=3D this._fullSizeToolbutton) {
            this._onFullSizeClicked();
        }
        else if (button =3D=3D=3D this._viewportToolbutton) {
            this._onViewportClicked();
        }
        else {
            Error.invalidOperation('Unknown button clicked');
        }
    },
   =20
    ensureClickIsInitialized: function =
CurrentSlide_CurrentSlideToolbuttonController$ensureClickIsInitialized() =
{
        if (this._isClickInitialized) {
            return;
        }
        if (this._fullSizeToolbutton) {
            this._fullSizeToolbutton.set_isDisabled(false);
            =
this._fullSizeToolbutton.set_tooltip(Localization.CurrentSlideResource.Sh=
owFullSize);
        }
        if (this._viewportToolbutton) {
            this._viewportToolbutton.set_isDisabled(false);
            =
this._viewportToolbutton.set_tooltip(Localization.CurrentSlideResource.Sh=
owSlideMagnifier);
        }
        this._isClickInitialized =3D true;
    },
   =20
    resetClick: function =
CurrentSlide_CurrentSlideToolbuttonController$resetClick() {
        if (this._fullSizeToolbutton) {
            this._fullSizeToolbutton.set_isDisabled(true);
        }
        if (this._viewportToolbutton) {
            if (this._viewportToolbutton.get_isChecked()) {
                this._hideMagnifier();
            }
            this._viewportToolbutton.set_isDisabled(true);
        }
        this._isClickInitialized =3D false;
    },
   =20
    _onFullSizeClicked: function =
CurrentSlide_CurrentSlideToolbuttonController$_onFullSizeClicked() {
        this._openFullSizeWindow();
    },
       =20
    ToggleSlideDescriptions: function(){
       =20
        if(this._slideDescriptionsShowing)
        {
            this._parentArea.turnOffSlideDescription();
            if (mPlayer.CurrentSlideNumber > 0 && =
!mPlayer.PresentationEnded)=20
            {
                this._viewportToolbutton.set_isDisabled(false);
                this._fullSizeToolbutton.set_isDisabled(false);
                this._slideDescriptionsShowing =3D false;
            }
        }   =20
        else
        {
            this._parentArea.turnOnSlideDescription();
            this._viewportToolbutton.set_isDisabled(true);
            this._fullSizeToolbutton.set_isDisabled(true);
            this._slideDescriptionsShowing =3D true;
        }
       =20
        new MediasitePlayerCookie().SetValue("ShowSlideDescriptions", =
this._slideDescriptionsShowing);
    },
   =20
    _onViewportClicked: function =
CurrentSlide_CurrentSlideToolbuttonController$_onViewportClicked() {
        if (this._viewportToolbutton.get_isChecked()) {
            this._hideMagnifier();
        }
        else {
            this._showMagnifier();
        }
    },
   =20
    _showMagnifier: function =
CurrentSlide_CurrentSlideToolbuttonController$_showMagnifier() {
        =
this._viewportToolbutton.set_tooltip(Localization.CurrentSlideResource.Hi=
deSlideMagnifier);
        this._parentArea.showMagnifier();
        this._viewportToolbutton.set_isChecked(true);
    },
   =20
    _hideMagnifier: function =
CurrentSlide_CurrentSlideToolbuttonController$_hideMagnifier() {
        =
this._viewportToolbutton.set_tooltip(Localization.CurrentSlideResource.Sh=
owSlideMagnifier);
        this._parentArea.hideMagnifier();
        this._viewportToolbutton.set_isChecked(false);
    },
   =20
    _openFullSizeWindow: function =
CurrentSlide_CurrentSlideToolbuttonController$_openFullSizeWindow() {
        if (WindowHelper.IsOpen(mPlayer.PopupWindows.FullSize)) {
            return;
        }
        mPlayer.PopupWindows.FullSize =3D =
WindowHelper.CreateNamedPopup(WindowHelper.PopupNames.FullSize, =
'FullSizeWindow', mPlayer.DefaultPopupWindowWidth, =
mPlayer.DefaultPopupWindowHeight, true, true);
    }
}

CurrentSlide.Toolbutton =3D function CurrentSlide_Toolbutton(controller, =
element, classInfo, tooltip, isDisabled) {
    this._controller =3D controller;
    this._element =3D element;
    this._classInfo =3D classInfo;
    this.set_tooltip(tooltip);
    this.set_isDisabled(isDisabled);
}
CurrentSlide.Toolbutton.prototype =3D {
    _controller: null,
    _element: null,
    _isChecked: false,
    _isDisabled: false,
    _classInfo: null,
    _tooltip: null,
   =20
    get_tooltip: function CurrentSlide_Toolbutton$get_tooltip() {
        return this._tooltip;
    },
    set_tooltip: function CurrentSlide_Toolbutton$set_tooltip(value) {
        this._tooltip =3D value;
        SfKernel.Util.SetToolTip(this._element, this._tooltip);
        return value;
    },
   =20
    get_isChecked: function CurrentSlide_Toolbutton$get_isChecked() {
        return this._isChecked;
    },
    set_isChecked: function CurrentSlide_Toolbutton$set_isChecked(value) =
{
        this._isChecked =3D value;
        this._updateImage();
        return value;
    },
   =20
    get_isDisabled: function CurrentSlide_Toolbutton$get_isDisabled() {
        return this._isDisabled;
    },
    set_isDisabled: function =
CurrentSlide_Toolbutton$set_isDisabled(value) {
        this._isDisabled =3D value;
        if (this._isDisabled) {
            this._element.stopObserving();
        }
        else {
            this._element.observe('mouseover', =
Function.createDelegate(this, this._onMouseOver));
            this._element.observe('mouseout', =
Function.createDelegate(this, this._onMouseOut));
            this._element.observe('click', Function.createDelegate(this, =
this._onClick));
        }
        this._updateImage();
        return value;
    },
   =20
    _onClick: function CurrentSlide_Toolbutton$_onClick(sender, args) {
        this._controller.selectButton(this);
    },
   =20
    _onMouseOver: function CurrentSlide_Toolbutton$_onMouseOver(sender, =
args) {
        if (this._isDisabled) {
            return;
        }
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Hand);
        if (!this.get_isChecked()) {
            this._element.className =3D this._classInfo.over;
        }
    },
   =20
    _onMouseOut: function CurrentSlide_Toolbutton$_onMouseOut(sender, =
args) {
        this._updateImage();
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Default);
    },
   =20
    _updateImage: function CurrentSlide_Toolbutton$_updateImage() {
        if (this._isDisabled) {
            this._element.className =3D this._classInfo.disabled;
            return;
        }
        if (this._isChecked) {
            this._element.className =3D this._classInfo.checked;
        }
        else {
            this._element.className =3D this._classInfo.normal;
        }
    }
}

CurrentSlide.ViewportManager =3D function =
CurrentSlide_ViewportManager(parentArea) {
    this._parentArea =3D parentArea;
    this._initialize();
}
CurrentSlide.ViewportManager.prototype =3D {
    _parentArea: null,
    _viewportElement: null,
    _viewportImage: null,
    _magnifier: null,
    _isShowing: false,
   =20
    get_isShowing: function CurrentSlide_ViewportManager$get_isShowing() =
{
        return this._isShowing;
    },
    set_isShowing: function =
CurrentSlide_ViewportManager$set_isShowing(value) {
        this._isShowing =3D value;
        if (value) {
            this._viewportImage.setAttribute('src', =
mPlayer.CurrentFullSizeImage);
            this._magnifier.Enable();
        }
        else {
            this._magnifier.Disable();
        }
        return value;
    },
   =20
    _initialize: function CurrentSlide_ViewportManager$_initialize() {
        this._createViewportElement();
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
Function.createDelegate(this, this._onScriptEvent));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayingFromBegi=
nning, Function.createDelegate(this, this._onPlayingFromBeginning));
        this._magnifier =3D new =
SfUI.Magnifier(this._parentArea.get_slideImageDiv(), =
this._viewportElement);
    },
   =20
    _createViewportElement: function =
CurrentSlide_ViewportManager$_createViewportElement() {
        this._viewportElement =3D $(document.createElement('div'));
        this._viewportElement.setStyle({ overflow: 'hidden', position: =
'absolute', display: 'none', border: '1px solid #666', zIndex: '4', =
cursor: 'crosshair',
                                         width: =
this._parentArea.ViewportWidth + 'px',=20
                                         height: =
this._parentArea.ViewportHeight + 'px'});
        =
this._viewportElement.setAttribute('id','currentSlideMagnifierDiv');
        this._viewportImage =3D $(document.createElement('img'));
        =
this._viewportImage.setAttribute('id','currentSlideMagnifierImage');
        this._viewportElement.appendChild(this._viewportImage);

        =
this._parentArea.GetDiv().parentNode.appendChild(this._viewportElement); =

        //this._parentArea.GetDiv().appendChild(this._viewportElement);=20
    },
   =20
    _onScriptEvent: function =
CurrentSlide_ViewportManager$_onScriptEvent(sender, args) {
        var command =3D args['Command'];
        switch (command) {
            case SfKernel.ScriptCmdType.ShowSlide:
                this._onShowSlide(args);
                break;
            case SfKernel.ScriptCmdType.EndPresentation:
                this._onEndPresentation(args);
                break;
        }
    },
   =20
    _onShowSlide: function =
CurrentSlide_ViewportManager$_onShowSlide(args) {
        if (!this._isShowing) {
            return;
        }
        this._viewportImage.setAttribute('src', args['FullSizeImage']);
    },
   =20
    _onEndPresentation: function =
CurrentSlide_ViewportManager$_onEndPresentation(args) {
        this.set_isShowing(false);
    },
   =20
    _onPlayingFromBeginning: function =
CurrentSlide_ViewportManager$_onPlayingFromBeginning(sender, args) {
        this.set_isShowing(false);
        if(LayoutOptions.Images['SlideDefault'])
        {
            =
this._parentArea._setSlideImage$1(LayoutOptions.Images['SlideDefault'].Im=
ageFilename);
            =
this._parentArea._setSlideLink$1(LayoutOptions.Images['SlideDefault'].Ima=
geUrl);
        }
    }
}

CurrentSlide.CurrentSlideToolbuttonController.registerClass('CurrentSlide=
.CurrentSlideToolbuttonController', null, =
CurrentSlide.IToolbuttonController);
CurrentSlide.Toolbutton.registerClass('CurrentSlide.Toolbutton');
CurrentSlide.ViewportManager.registerClass('CurrentSlide.ViewportManager'=
);

ThumbnailsPanel =3D function(container, containingWindow, id) {
    this.ID =3D id;
    this.Container =3D container;
}
ThumbnailsPanel.prototype =3D {
    _originalThumbnailWidth: 0,
    _originalThumbnailHeight: 0,
    _numSlidesPerPage: 0,
    _slideGroupManager: null,
    _pageCalculator: null,
    _isInitialized: false,
    _thumbnailsDiv: null,
    _pagerContainer: null,
    _slidesContainer: null,
    _textListContainer: null,
    _chaptersContainer: null,
    _pageLinkManager: null,
    _slides: null,
    _zoomHelper: null,
    _lastHilitedSingleSlide: null,
    _currentPageNumber: 0,
    _currentPointNumber: 0,

    _widthOfSurroundingElements: 8,
    _heightOfSurroundingElements: 29,
    _rowsOfThumbnails: 3,
    _columnsOfThumbnails: 4,
    _aspectRation: .75,
    _ratio: 1,
    _defaultThumbSizePosition: 4,
    _minimumThumbnailWidth: 92,

    OnLoad: function ThumbnailsArea$OnLoad() {
        this._getViewCookie();
        this._setPresentationThumbnailDimensions();
        this._calculateNumSlidesPerPage();
        this._registerEvents();
        this._initializeSlideGroupManager();
        this._initializePageCalculator();
        this._drawPageIfShowing();
    },

    _getViewCookie: function ThumbnailsArea$_getViewCookie() {
        var viewCookieValue =3D new =
MediasitePlayerCookie().GetNumberValue("SlideDisplay", =
this._defaultThumbSizePosition);

        // override disables small thumbnails for very small players
        if (LayoutOptions.SlideWidth <=3D 360 && viewCookieValue =3D=3D =
'4') {
            viewCookieValue =3D 5;
        }

        if (viewCookieValue =3D=3D '9') {
            if (Manifest.Chapters.length > 0) {
                this._currentPointNumber =3D viewCookieValue;
                return viewCookieValue;
            }
            else {
                this._currentPointNumber =3D =
this._defaultThumbSizePosition;
                return this._defaultThumbSizePosition;
            }
        }
        else {
            this._currentPointNumber =3D viewCookieValue;
            this._ratio =3D this.getThumbnailSizeRatio(viewCookieValue);
            return viewCookieValue;
        }
    },

    _setViewCookie: function =
ThumbnailsArea$_setViewCookie(viewCookieValue) {
        new MediasitePlayerCookie().SetValue("SlideDisplay", =
viewCookieValue);
    },

    _setPresentationThumbnailDimensions: function =
ThumbnailsArea$_setPresentationThumbnailDimensions() {
        var thumbnailsarea =3D $(this.ID);
        var containerWidth =3D thumbnailsarea.offsetWidth - 6;  // 6, =
this._widthOfSurroundingElements
        var containerHeight =3D thumbnailsarea.offsetHeight - 29; // 29, =
this._heightOfSurroundingElements       =20
        var thumbnailMaxTotalWidth =3D Math.floor(containerWidth / =
this._columnsOfThumbnails);
        var thumbnailMaxImageWidth =3D thumbnailMaxTotalWidth - =
this._widthOfSurroundingElements;
        var thumbnailMaxTotalHeight =3D Math.floor(containerHeight / =
this._rowsOfThumbnails);
        var thumbnailMaxImageHeight =3D thumbnailMaxTotalHeight - =
this._heightOfSurroundingElements;
        var thumbnailAdjustedImageHeight =3D =
Math.floor(thumbnailMaxImageWidth * .75);
        if (thumbnailAdjustedImageHeight < thumbnailMaxImageHeight) {
            this._originalThumbnailHeight =3D =
thumbnailAdjustedImageHeight;
            this._originalThumbnailWidth =3D =
Math.floor(thumbnailAdjustedImageHeight / .75);
        }
        else {
            this._originalThumbnailHeight =3D thumbnailMaxImageWidth * =
.75;
            this._originalThumbnailWidth =3D thumbnailMaxImageWidth;
        }
        this.OriginalThumbnailHeight =3D this._originalThumbnailHeight;
        this.OriginalThumbnailWidth =3D this._originalThumbnailWidth;
        this.ThumbnailHeight =3D =
Math.floor(this._originalThumbnailHeight * this._ratio);
        this.ThumbnailWidth =3D Math.floor(this._originalThumbnailWidth =
* this._ratio);
        this._calculateNumSlidesPerPage();
        this.SlidesPerPage =3D this._numSlidesPerPage;
    },

    _calculateNumSlidesPerPage: function =
ThumbnailsArea$_calculateNumSlidesPerPage() {
        var heightOfListItem =3D 30;
        var thumbnailsarea =3D $(this.ID);
        if (this.ThumbnailWidth > 0 && this.ThumbnailHeight > 0) {
            this._columnsOfThumbnails =3D =
Math.floor((thumbnailsarea.offsetWidth - 6) / (this.ThumbnailWidth + =
this._widthOfSurroundingElements));
            this._rowsOfThumbnails =3D =
Math.floor((thumbnailsarea.offsetHeight - 29) / (this.ThumbnailHeight + =
this._heightOfSurroundingElements));
        }
        else {
            this._columnsOfThumbnails =3D 1;
            this._rowsOfThumbnails =3D =
Math.floor((thumbnailsarea.offsetHeight - 29) / heightOfListItem);
        }
        this._numSlidesPerPage =3D this._rowsOfThumbnails * =
this._columnsOfThumbnails;
    },

    _registerEvents: function ThumbnailsArea$_registerEvents() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
Function.createDelegate(this, this._onScriptEvent));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayingFromBegi=
nning, Function.createDelegate(this, =
this._onPlayingFromBeginningEvent));
    },

    _onScriptEvent: function ThumbnailsArea$_onScriptEvent(sender, args) =
{
        var commandType =3D args['Command'];
        if (commandType !=3D=3D SfKernel.ScriptCmdType.ShowSlide) {
            return;
        }
        var index =3D args['Index'];
        if (index < 1) {
            if (this._lastHilitedSingleSlide) {
                this._lastHilitedSingleSlide.unHiliteSlide();
                this._lastHilitedSingleSlide =3D null;
            }
            return;
        }
        if (mPlayer.DynamicAdd) {
            =
this._pageCalculator.set_totalSlides(Manifest.Slides.length);
            this._pageCalculator.Calculate();
            var totalSlides =3D this._pageCalculator.get_totalSlides();
            var maxPage =3D Math.ceil(totalSlides / =
this._numSlidesPerPage);
            if (maxPage > this._currentPageNumber) {
                this._pageLinkManager.updatePageLinks(maxPage);
                this._currentPageNumber =3D maxPage;
            }
        }
        if ($(this.ID).style.display =3D=3D 'none') {
            return;
        }
        var pageInfo =3D =
this._pageCalculator.GetPageInfoForSlide(index);

        if (this._currentPageNumber !=3D=3D pageInfo.get_pageNumber()) {
            if (this._lastHilitedSingleSlide) {
                this._lastHilitedSingleSlide.unHiliteSlide();
            }
            return;
        }
        if (mPlayer.DynamicAdd) {
            this._drawPage(pageInfo);
        }
        this._hiliteSlideNumber(index);
    },

    _onPlayingFromBeginningEvent: function =
ThumbnailsArea$_onPlayingFromBeginningEvent(sender, args) {
        if (this._lastHilitedSingleSlide) {
            this._lastHilitedSingleSlide.unHiliteSlide();
            this._lastHilitedSingleSlide =3D null;
        }
        if ($('CurrentSlideAreaSlideDescription')) {
            $('CurrentSlideAreaSlideDescription').innerHTML =3D =
'&nbsp;';
        }
    },

    _initializeSlideGroupManager: function =
ThumbnailsArea$_initializeSlideGroupManager() {
        this._slideGroupManager =3D new Thumbnails.SlideGroupManager({ =
Timings: Manifest.Slides, Threshold: GlobalOptions.SlideGroupThreshold, =
MinSlidesToTrigger: GlobalOptions.SlideGroupMinToTrigger, MaxInGroup: =
GlobalOptions.SlideGroupMaxInGroup });
    },

    _initializePageCalculator: function =
ThumbnailsArea$_initializePageCalculator() {
        this._pageCalculator =3D new =
Thumbnails.PageCalculator(this._numSlidesPerPage, =
Manifest.Slides.length, this._slideGroupManager);
        this._pageCalculator.Calculate();
    },

    _drawPageIfShowing: function ThumbnailsArea$_drawPageIfShowing() {
        if ($(this.ID).style.display !=3D 'none') {
            this._drawPage(this._calculateCurrentSlidePageInfo());
        }
    },

    _calculateCurrentSlidePageInfo: function =
ThumbnailsArea$_calculateCurrentSlidePageInfo() {
        return =
this._pageCalculator.GetPageInfoForSlide(mPlayer.CurrentSlideNumber);
    },

    _drawPage: function ThumbnailsArea$_drawPage(pageInfo) {
        if (!this._isInitialized) {
            this._initialize();
        }
        if (pageInfo.get_isDummy()) {
            return;
        }
        =
this._pageLinkManager.updatePageLinks(pageInfo.get_pageNumber());
        if (this._lastHilitedSingleSlide) {
            this._lastHilitedSingleSlide.unHiliteSlide();
        }
        var pageStartIndex =3D pageInfo.get_startIndex();
        var pageEndIndex =3D pageInfo.get_endIndex();
        var counter =3D 0;
        var currentSlideNumber =3D mPlayer.CurrentSlideNumber;
        for (var i =3D pageStartIndex; i <=3D pageEndIndex; ) {
            var currentSlideGroup =3D =
this._slideGroupManager.FindGroupForSlide(i + 1);
            if (!currentSlideGroup) {
                this._slides[counter].set_slideNumber(i + 1);
            }
            else {
                if (currentSlideGroup.get_isExpanded()) {
                    if (currentSlideGroup.get_min() =3D=3D=3D i + 1) {
                        =
this._slides[counter].set_group(currentSlideGroup);
                    }
                    else {
                        this._slides[counter].set_slideNumber(i + 1);
                    }
                }
                else {
                    this._slides[counter].set_group(currentSlideGroup);
                }
            }
            if (i + 1 =3D=3D=3D currentSlideNumber) {
                this._hiliteSlideNumber(i + 1);
            }
            if (currentSlideGroup && =
!currentSlideGroup.get_isExpanded()) {
                i +=3D currentSlideGroup.GetCount();
            }
            else {
                i +=3D 1;
            }
            this._slides[counter].set_visible(true);
            ++counter;
        }
        for (var i =3D counter; i < this._numSlidesPerPage && i < =
this._slides.length; ++i) {
            this._slides[i].set_visible(false);
        }
        this._currentPageNumber =3D pageInfo.get_pageNumber();
        this._thumbnailsDiv.scrollTop =3D 0;
    },

    _initialize: function ThumbnailsArea$_initialize() {
        this._initializeElements();
        this._drawBlankPage();
        this._isInitialized =3D true;
    },

    _initializeElements: function ThumbnailsArea$_initializeElements() {
        this._thumbnailsDiv =3D $('thumbNailsDiv');
        this._pagerContainer =3D $('pagerContainer');
        this._slidesContainer =3D $('thumbNailSlidesContainer');
        this._chaptersContainer =3D $('ChapterPointsArea');
    },

    _drawBlankPage: function ThumbnailsArea$_drawBlankPage() {
        this._pageLinkManager =3D new Thumbnails.PageLinkManager(this);
        this._addSlidesContainerElements();
        new Thumbnails.ViewButtonGroup(this);
    },

    _addSlidesContainerElements: function =
ThumbnailsArea$_addSlidesContainerElements() {
        this._addZoomHelper();
        this._slides =3D new Array(0);
        //this.updateSlidesPerPage();
        if (this._currentPointNumber =3D=3D 0) {
            for (var i =3D 0; i < this._numSlidesPerPage; ++i) {
                this._slides[i] =3D new Thumbnails.SingleSlide(this, i + =
1);
                =
this._slidesContainer.appendChild(this._slides[i].createListElement());
            }
        }
        else {
            for (var i =3D 0; i < this._numSlidesPerPage; ++i) {
                this._slides[i] =3D new Thumbnails.SingleSlide(this, i + =
1);
                =
this._slidesContainer.appendChild(this._slides[i].createThumbnailElement(=
));
            }
        }
    },

    _addZoomHelper: function ThumbnailsArea$_addZoomHelper() {
        this._zoomHelper =3D new Thumbnails.ZoomHelper(this);
        this._zoomHelper.ThumbnailHeight =3D this.ThumbnailHeight;
        this._zoomHelper.ThumbnailWidth =3D this.ThumbnailWidth;
        =
this._slidesContainer.appendChild(this._zoomHelper.GetZoomElement());
    },

    _hiliteSlideNumber: function =
ThumbnailsArea$_hiliteSlideNumber(slideNumber) {
        var singleSlide =3D this._getSingleSlide(slideNumber);
        singleSlide.hiliteSlide();
        if (this._lastHilitedSingleSlide && this._lastHilitedSingleSlide =
!=3D=3D singleSlide) {
            this._lastHilitedSingleSlide.unHiliteSlide();
        }
        this._lastHilitedSingleSlide =3D singleSlide;
    },

    _getSingleSlide: function =
ThumbnailsArea$_getSingleSlide(slideNumber) {
        for (var i =3D 0; i < this._slides.length; ++i) {
            if (this._slides[i].containsSlide(slideNumber)) {
                return this._slides[i];
            }
        }
        throw Error.invalidOperation('Could not find slide object for =
slideNumber: ' + slideNumber);
    },

    _changeImageSize: function ThumbnailsArea$_changeImageSize() {
        for (var i =3D 0; i < this._slides.length; ++i) {
            this._slides[i].setSize(this.ThumbnailWidth, =
this.ThumbnailHeight);
        }
        this._zoomHelper.InitializeZoom();
    },

    _reDrawBlankPage: function ThumbnailsArea$_reDrawBlankPage() {
        this._pageLinkManager.updatePageLinks(this._currentPageNumber);
        var firstChild =3D this._slidesContainer.firstChild;
        while (!SfKernel.Util.IsNullOrUndefined(firstChild)) {
            this._slidesContainer.removeChild(firstChild);
            firstChild =3D this._slidesContainer.firstChild;
        }
        this._addSlidesContainerElements();
    },

    get_slidesContainer: function ThumbnailsArea$get_slidesContainer() {
        return this._slidesContainer;
    },

    get_pagerContainer: function ThumbnailsArea$get_pagerContainer() {
        return this._pagerContainer;
    },

    getTotalPages: function ThumbnailsArea$getTotalPages() {
        return this._pageCalculator.GetTotalPages();
    },

    drawPageNumber: function ThumbnailsArea$drawPageNumber(pageNumber) {
        this._drawPage(this._pageCalculator.GetPageInfo(pageNumber));
    },

    zoomSingleSlide: function ThumbnailsArea$zoomSingleSlide(slide) {
        this._zoomHelper.ZoomSingleSlide(slide);
    },

    updateSlidesPerPage: function =
ThumbnailsArea$updateSlidesPerPage(slidesPerPage) {
        this._calculateNumSlidesPerPage();
        var lastPage =3D Math.floor(Manifest.Slides.length / =
this._numSlidesPerPage) + 1;
        var targetPage =3D this._currentPageNumber;
        if (lastPage < this._currentPageNumber) {
            targetPage =3D lastPage;
        }
        this._pageCalculator =3D new =
Thumbnails.PageCalculator(this._numSlidesPerPage, =
Manifest.Slides.length, this._slideGroupManager);
        this._pageCalculator.Calculate();
        this._reDrawBlankPage();
        this._drawPage(this._pageCalculator.GetPageInfo(targetPage));
    },

    setSlideGroupsIsEnabled: function =
ThumbnailsArea$setSlideGroupsIsEnabled(isEnabled) {
        this._slideGroupManager.set_isEnabled(isEnabled);
        this._pageCalculator.Calculate();
        this._drawPage(this._calculateCurrentSlidePageInfo());
    },

    getCurrentActualThumbnailWidth: function =
ThumbnailsArea$getCurrentActualThumbnailWidth() {
        if (this._slides.length > 0) {
            return this._slides[0].getActualWidth();
        }
        return this.ThumbnailWidth;
    },

    getCurrentActualThumbnailHeight: function =
ThumbnailsArea$getCurrentActualThumbnailHeight() {
        if (this._slides.length > 0) {
            return this._slides[0].getActualHeight();
        }
        return this.ThumbnailHeight;
    },

    getThumbnailSizeRatio: function =
ThumbnailsArea$getThumbnailSizeRatio(point) {
        switch (point) {
            case 0:
                return 0; // list
                break;
            case 1:
                return 0.53; //6 across
                break;
            case 2:
                return 0.64; //5
                break;
            case 3:
                return 0.75; //?=20
                break;
            case 4:
                return 1;    //4
                break;
            case 5:
                return 1.35; //3
                break;
            case 6:
                return 1.5;
                break;
            default:
                return 1;
                break;
        }
    },

    updateThumbnailSize: function =
ThumbnailsArea$updateThumbnailSize(ratio) {
        if (ratio > 0) {
            var thumbnailWidth =3D =
Math.floor(this._originalThumbnailWidth * ratio);
            if (thumbnailWidth >=3D this._minimumThumbnailWidth) {
                this.ThumbnailWidth =3D thumbnailWidth;
            }
            else {
                this.ThumbnailWidth =3D this._minimumThumbnailWidth;
            }
            this.ThumbnailHeight =3D =
Math.floor(this._originalThumbnailHeight * ratio);
            this._changeImageSize();
        }
        else {
            this.ThumbnailHeight =3D 0;
            this.ThumbnailWidth =3D 0;
        }
        this.updateSlidesPerPage();
    },

    showSlideList: function ThumbnailsArea$showSlideList() {
        var sizeKey =3D 0;
        this._setViewCookie(sizeKey);
        this.showThumbnailContainer();
        this._currentPointNumber =3D sizeKey;
        var ratio =3D this.getThumbnailSizeRatio(sizeKey);
        this.updateThumbnailSize(ratio);
    },

    showSmallThumbnails: function ThumbnailsArea$showSmallThumbnails() {
        var sizeKey =3D 4;
        this._setViewCookie(sizeKey);
        this.showThumbnailContainer();
        this._currentPointNumber =3D sizeKey;
        var ratio =3D this.getThumbnailSizeRatio(sizeKey);
        this.updateThumbnailSize(ratio);
    },

    showLargeThumbnails: function ThumbnailsArea$showLargeThumbnails() {
        var sizeKey =3D 5;
        this._setViewCookie(sizeKey);
        this.showThumbnailContainer();
        this._currentPointNumber =3D sizeKey;
        var ratio =3D this.getThumbnailSizeRatio(sizeKey);
        this.updateThumbnailSize(ratio);
    },

    showChapters: function ThumbnailsArea$showChapters() {
        var sizeKey =3D 9;
        this._setViewCookie(sizeKey);
        this.showChapterContainer();
    },

    showThumbnailContainer: function =
ThumbnailsArea$showThumbnailContainer() {
        this._slidesContainer.show();
        this._chaptersContainer.hide();
        this._pagerContainer.show();
    },

    showChapterContainer: function ThumbnailsArea$showChapterContainer() =
{
        this._slidesContainer.hide();
        this._chaptersContainer.show();
        this._pagerContainer.hide();
    },

    onGroupExpandCollapse: function =
ThumbnailsArea$onGroupExpandCollapse() {
        this._pageCalculator.Calculate();
        this._reDrawBlankPage();
        =
this._drawPage(this._pageCalculator.GetPageInfo(this._currentPageNumber))=
;
    },

    showBigSlide: function ThumbnailsArea$showBigSlide(slideNumber) {
        mPlayer.CurrentPreviewImage =3D =
mPlayer.GetImageLocation(slideNumber, SfKernel.SlideType.FullSize);

        if (WindowHelper.IsOpen(mPlayer.PopupWindows.PreviewSlide)) {
            var previewSlide =3D =
mPlayer.PopupWindows.PreviewSlide.PreviewSlideAreaInstance;
            if (!SfKernel.Util.IsNullOrUndefined(previewSlide)) {
                previewSlide.ChangeImage(mPlayer.CurrentPreviewImage);
            }
        }
        else {
            mPlayer.PopupWindows.PreviewSlide =3D =
WindowHelper.CreateNamedPopup(WindowHelper.PopupNames.PreviewSlide, =
'PreviewSlide', mPlayer.DefaultPopupWindowWidth, =
mPlayer.DefaultPopupWindowHeight, true, true);
        }
    }
}


Type.registerNamespace('Thumbnails');

/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.PageInfo

Thumbnails.PageInfo =3D function Thumbnails_PageInfo(startIndex, =
endIndex, pageNumber) {
    this._startIndex =3D startIndex;
    this._endIndex =3D endIndex;
    this._pageNumber =3D pageNumber;
}
Thumbnails.PageInfo.GetDummyPageInfo =3D function =
Thumbnails_PageInfo$GetDummyPageInfo() {
    var info =3D new Thumbnails.PageInfo(0, 0, 1);
    info._isDummy =3D true;
    return info;
}
Thumbnails.PageInfo.prototype =3D {
    _startIndex: 0,
    _endIndex: 0,
    _pageNumber: 0,
    _isDummy: false,

    get_startIndex: function Thumbnails_PageInfo$get_startIndex() {
        return this._startIndex;
    },

    get_endIndex: function Thumbnails_PageInfo$get_endIndex() {
        return this._endIndex;
    },

    get_pageNumber: function Thumbnails_PageInfo$get_pageNumber() {
        return this._pageNumber;
    },

    get_isDummy: function Thumbnails_PageInfo$get_isDummy() {
        return this._isDummy;
    },

    ContainsSlide: function =
Thumbnails_PageInfo$ContainsSlide(slideNumber) {
        return (slideNumber - 1 >=3D this._startIndex && slideNumber - 1 =
<=3D this._endIndex);
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.PageCalculator

Thumbnails.PageCalculator =3D function =
Thumbnails_PageCalculator(slidesPerPage, totalSlides, slideGroupManager) =
{
    this._slidesPerPage =3D slidesPerPage;
    this._totalSlides =3D totalSlides;
    this._slideGroupManager =3D slideGroupManager;
    this._pagesInfo =3D null;
}
Thumbnails.PageCalculator.prototype =3D {
    _slidesPerPage: 0,
    _totalSlides: 0,
    _slideGroupManager: null,
    _pagesInfo: null,

    get_totalSlides: function =
Thumbnails_PageCalculator$get_totalSlides() {
        return this._totalSlides;
    },
    set_totalSlides: function =
Thumbnails_PageCalculator$set_totalSlides(value) {
        this._totalSlides =3D value;
        return value;
    },

    get_slidesPerPage: function =
Thumbnails_PageCalculator$get_slidesPerPage() {
        return this._slidesPerPage;
    },
    set_slidesPerPage: function =
Thumbnails_PageCalculator$set_slidesPerPage(value) {
        this._slidesPerPage =3D value;
        return value;
    },

    Calculate: function Thumbnails_PageCalculator$Calculate() {
        this._pagesInfo =3D new Array(0);
        var slidesCounter =3D 0;
        var pageStartIndex =3D 0;
        for (var i =3D 0; i < this._totalSlides; ) {
            var group =3D this._slideGroupManager.FindGroupForSlide(i + =
1);
            if (group) {
                if (!group.get_isExpanded()) {
                    i +=3D group.GetCount();
                }
                else {
                    i +=3D 1;
                }
            }
            else {
                i +=3D 1;
            }
            ++slidesCounter;
            if (slidesCounter =3D=3D=3D this._slidesPerPage) {
                var pageEndIndex =3D i - 1;
                if (pageEndIndex >=3D this._totalSlides) {
                    pageEndIndex =3D this._totalSlides - 1;
                }
                this._pagesInfo[this._pagesInfo.length] =3D new =
Thumbnails.PageInfo(pageStartIndex, pageEndIndex, this._pagesInfo.length =
+ 1);
                slidesCounter =3D 0;
                pageStartIndex =3D i;
            }
        }
        this._collectRemainingSlides();
        return this._pagesInfo;
    },

    GetPageInfoForSlide: function =
Thumbnails_PageCalculator$GetPageInfoForSlide(slideNumber) {
        if (!this._pagesInfo.length) {
            return Thumbnails.PageInfo.GetDummyPageInfo();
        }
        if (slideNumber < 1) {
            return this._pagesInfo[0];
        }
        for (var i =3D 0; i < this._pagesInfo.length; ++i) {
            if (this._pagesInfo[i].ContainsSlide(slideNumber)) {
                return this._pagesInfo[i];
            }
        }
        return Thumbnails.PageInfo.GetDummyPageInfo();
        //throw Error.invalidOperation('could not find page for =
slideNumber: ' + slideNumber);
    },

    GetTotalPages: function Thumbnails_PageCalculator$GetTotalPages() {
        if (!this._pagesInfo.length) {
            return 1;
        }
        else {
            return this._pagesInfo.length;
        }
    },

    GetPageInfo: function =
Thumbnails_PageCalculator$GetPageInfo(pageNumber) {
        if (pageNumber > this._pagesInfo.length || pageNumber =3D=3D 0) =
{
            pageNumber =3D this._pagesInfo.length;
        }
        return this._pagesInfo[pageNumber - 1];
    },

    _collectRemainingSlides: function =
Thumbnails_PageCalculator$_collectRemainingSlides() {
        var numPages =3D this._pagesInfo.length;
        if (!numPages) {
            if (this._totalSlides > 0) {
                this._pagesInfo[0] =3D new Thumbnails.PageInfo(0, =
this._totalSlides - 1, 1);
            }
            else {
                this._pagesInfo[0] =3D =
Thumbnails.PageInfo.GetDummyPageInfo();
            }
        }
        else {
            if (this._pagesInfo[numPages - 1].get_endIndex() < =
this._totalSlides - 1) {
                this._pagesInfo[numPages] =3D new =
Thumbnails.PageInfo(this._pagesInfo[numPages - 1].get_endIndex() + 1, =
this._totalSlides - 1, numPages + 1);
            }
        }
    }
}


Thumbnails.PageInfo.registerClass('Thumbnails.PageInfo');
Thumbnails.PageCalculator.registerClass('Thumbnails.PageCalculator');


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.SlideGroup

Thumbnails.SlideGroup =3D function Thumbnails_SlideGroup(min, max) {
    this._min =3D min;
    this._max =3D max;
}
Thumbnails.SlideGroup.prototype =3D {
    _min: 0,
    _max: 0,
    _isExpanded: false,

    get_max: function Thumbnails_SlideGroup$get_max() {
        return this._max;
    },
    set_max: function Thumbnails_SlideGroup$set_max(value) {
        this._max =3D value;
        return value;
    },

    get_isExpanded: function Thumbnails_SlideGroup$get_isExpanded() {
        return this._isExpanded;
    },
    set_isExpanded: function Thumbnails_SlideGroup$set_isExpanded(value) =
{
        this._isExpanded =3D value;
        return value;
    },

    get_min: function Thumbnails_SlideGroup$get_min() {
        return this._min;
    },
    set_min: function Thumbnails_SlideGroup$set_min(value) {
        this._min =3D value;
        return value;
    },

    GetCount: function Thumbnails_SlideGroup$GetCount() {
        return this._max - this._min + 1;
    },

    ContainsSlide: function =
Thumbnails_SlideGroup$ContainsSlide(slideNumber) {
        return (slideNumber >=3D this._min && slideNumber <=3D =
this._max);
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.SlideGroupCalculator

Thumbnails.SlideGroupCalculator =3D function =
Thumbnails_SlideGroupCalculator(args) {
    this._groups =3D new Array(0);
    this._slideTimings =3D args['Timings'];
    this._threshold =3D args['Threshold'];
    this._minSlidesToTrigger =3D args['MinSlidesToTrigger'];
    this._maxInGroup =3D args['MaxInGroup'];
}
Thumbnails.SlideGroupCalculator.prototype =3D {
    _slideTimings: null,
    _threshold: 0,
    _minSlidesToTrigger: 0,
    _maxInGroup: 0,
    _currentGroup: null,

    GetGroups: function Thumbnails_SlideGroupCalculator$GetGroups() {
        return this._groups;
    },

    Calculate: function Thumbnails_SlideGroupCalculator$Calculate() {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            return;
        }
        if (Manifest.Slides.length < this._minSlidesToTrigger) {
            return;
        }
        var lastTiming =3D 0;
        for (var i =3D 0; i < this._slideTimings.length; ++i) {
            if (this._slideTimings[i].Time - lastTiming > =
this._threshold) {
                if (this._currentGroup) {
                    this._addCurrentGroup();
                }
                if (this._isNextBelowThreshold(i)) {
                    this._startNewGroup(i);
                }
                lastTiming =3D this._slideTimings[i].Time;
                continue;
            }
            if (!this._currentGroup) {
                if (this._isNextBelowThreshold(i)) {
                    this._startNewGroup(i);
                }
            }
            else {
                if (this._currentGroup.GetCount() < this._maxInGroup) {
                    this._addToExistingGroup(i);
                }
                else {
                    this._addCurrentGroup();
                    if (this._isNextBelowThreshold(i)) {
                        this._startNewGroup(i);
                    }
                }
            }
            lastTiming =3D this._slideTimings[i].Time;
        }
        if (this._currentGroup) {
            this._addCurrentGroup();
        }
    },

    _isNextBelowThreshold: function =
Thumbnails_SlideGroupCalculator$_isNextBelowThreshold(index) {
        if (index =3D=3D=3D this._slideTimings.length - 1) {
            return false;
        }
        return (this._slideTimings[index + 1].Time - =
this._slideTimings[index].Time <=3D this._threshold);
    },

    _addCurrentGroup: function =
Thumbnails_SlideGroupCalculator$_addCurrentGroup() {
        this._groups[this._groups.length] =3D this._currentGroup;
        this._currentGroup =3D null;
    },

    _startNewGroup: function =
Thumbnails_SlideGroupCalculator$_startNewGroup(index) {
        this._currentGroup =3D new Thumbnails.SlideGroup(index + 1, =
index + 1);
    },

    _addToExistingGroup: function =
Thumbnails_SlideGroupCalculator$_addToExistingGroup(index) {
        this._currentGroup.set_max(index + 1);
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.SlideGroupManager

Thumbnails.SlideGroupManager =3D function =
Thumbnails_SlideGroupManager(args) {
    var calc =3D new Thumbnails.SlideGroupCalculator(args);
    calc.Calculate();
    this._slideGroups =3D calc.GetGroups();
}
Thumbnails.SlideGroupManager.prototype =3D {
    _slideGroups: null,
    _isEnabled: true,

    get_isEnabled: function Thumbnails_SlideGroupManager$get_isEnabled() =
{
        return this._isEnabled;
    },
    set_isEnabled: function =
Thumbnails_SlideGroupManager$set_isEnabled(value) {
        this._isEnabled =3D value;
        return value;
    },

    FindGroupForSlide: function =
Thumbnails_SlideGroupManager$FindGroupForSlide(slideNumber) {
        if (!this._isEnabled) {
            return null;
        }
        for (var i =3D 0; i < this._slideGroups.length; ++i) {
            if (slideNumber < this._slideGroups[i].get_min()) {
                return null;
            }
            if (this._slideGroups[i].ContainsSlide(slideNumber)) {
                return this._slideGroups[i];
            }
        }
        return null;
    }
}


Thumbnails.SlideGroup.registerClass('Thumbnails.SlideGroup');
Thumbnails.SlideGroupCalculator.registerClass('Thumbnails.SlideGroupCalcu=
lator');
Thumbnails.SlideGroupManager.registerClass('Thumbnails.SlideGroupManager'=
);


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.OneLink

Thumbnails.OneLink =3D function Thumbnails_OneLink(parentArea) {
    this._parentArea =3D parentArea;
    this._createElement();
}
Thumbnails.OneLink.prototype =3D {
    _parentArea: null,
    _element: null,
    _pageNumber: 0,
    _onClickHandler: null,

    get_element: function Thumbnails_OneLink$get_element() {
        return this._element;
    },

    _createElement: function Thumbnails_OneLink$_createElement() {
        this._element =3D $(document.createElement('div'));
        this._element.className =3D 'thumbNailPageNormal';
    },

    _removeChildren: function Thumbnails_OneLink$_removeChildren() {
        while (this._element.hasChildNodes()) {
            this._element.removeChild(this._element.firstChild);
        }
    },

    setPrevious: function Thumbnails_OneLink$setPrevious(pageNumber) {
        this._pageNumber =3D pageNumber;
        this._element.className =3D 'thumbNailPagePrevious';
        this._removeChildren();
        SfKernel.Util.SetToolTip(this._element, =
Localization.ThumbnailsResource.Previous);
        this._addClickHandler();
        this.show();
    },

    setDotDotDot: function Thumbnails_OneLink$setDotDotDot() {
        this._makeText('...');
    },

    setPage: function Thumbnails_OneLink$setPage(pageNumber) {
        this._makePage(pageNumber);
    },

    setCurrentPage: function =
Thumbnails_OneLink$setCurrentPage(pageNumber) {
        this._makeText('' + pageNumber);
    },

    setOf: function Thumbnails_OneLink$setOf() {
        this._makeText(Localization.ThumbnailsResource.Of);
    },

    setTotal: function Thumbnails_OneLink$setTotal(totalPages) {
        this._makeText('' + totalPages);
    },

    setNext: function Thumbnails_OneLink$setNext(pageNumber) {
        this._pageNumber =3D pageNumber;
        this._element.className =3D 'thumbNailPageNext';
        this._removeChildren();
        SfKernel.Util.SetToolTip(this._element, =
Localization.ThumbnailsResource.Next);
        this._addClickHandler();
        this.show();
    },

    _makeText: function Thumbnails_OneLink$_makeText(text) {
        this._removeChildren();
        this._element.className =3D 'thumbNailPageCurrent';
        this._element.style.textDecoration =3D 'none';
        SfKernel.Util.SetText(this._element, text);
        SfKernel.Util.SetToolTip(this._element, '');
        this._removeClickHandler();
        this.show();
    },

    _removeClickHandler: function =
Thumbnails_OneLink$_removeClickHandler() {
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Default);
        this._element.stopObserving('click', this._onClickHandler);
    },

    _makePage: function Thumbnails_OneLink$_makePage(pageNumber) {
        this._pageNumber =3D pageNumber;
        this._element.className =3D 'thumbNailPageNormal';
        this._element.style.textDecoration =3D 'underline';
        this._removeChildren();
        SfKernel.Util.SetText(this._element, '' + pageNumber);
        SfKernel.Util.SetToolTip(this._element, '');
        this._addClickHandler();
        this.show();
    },

    _addClickHandler: function Thumbnails_OneLink$_addClickHandler() {
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Hand);
        this._element.stopObserving('click', this._onClickHandler);
        this._onClickHandler =3D Function.createDelegate(this, =
this._onClick);
        this._element.observe('click', this._onClickHandler);
    },

    show: function Thumbnails_OneLink$show() {
        this._element.show();
    },

    hide: function Thumbnails_OneLink$hide() {
        this._element.hide();
    },

    _onClick: function Thumbnails_OneLink$_onClick(sender, args) {
        this._parentArea.drawPageNumber(this._pageNumber);
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.PageIndexCalculator

Thumbnails.PageIndexCalculator =3D function =
Thumbnails_PageIndexCalculator(pageNumber, totalPages, toEachSide) {
    this._pageNumber =3D pageNumber;
    this._totalPages =3D totalPages;
    this._toEachSide =3D toEachSide;
}
Thumbnails.PageIndexCalculator.prototype =3D {
    _pageNumber: 0,
    _totalPages: 0,
    _toEachSide: 0,

    get_startIndex: function =
Thumbnails_PageIndexCalculator$get_startIndex() {
        return Math.max(1, this._pageNumber - this._toEachSide - =
this._getLeftOverFromEnd());
    },

    get_endIndex: function Thumbnails_PageIndexCalculator$get_endIndex() =
{
        return Math.min(this._totalPages, this._pageNumber + =
this._toEachSide + this._getLeftOverFromStart());
    },

    _getLeftOverFromEnd: function =
Thumbnails_PageIndexCalculator$_getLeftOverFromEnd() {
        if ((this._totalPages - this._pageNumber) >=3D this._toEachSide) =
{
            return 0;
        }
        else {
            return this._toEachSide - (this._totalPages - =
this._pageNumber);
        }
    },

    _getLeftOverFromStart: function =
Thumbnails_PageIndexCalculator$_getLeftOverFromStart() {
        if (this._pageNumber > this._toEachSide) {
            return 0;
        }
        else {
            return this._toEachSide - this._pageNumber + 1;
        }
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.PageLinkChain

Thumbnails.PageLinkChain =3D function =
Thumbnails_PageLinkChain(parentArea) {
    this._parentArea =3D parentArea;
    this._createPageTextSpan();
    this._createPageLinks();
}
Thumbnails.PageLinkChain.prototype =3D {
    _parentArea: null,
    _pageTextSpan: null,
    _pageLinks: null,

    selectPage: function Thumbnails_PageLinkChain$selectPage(pageNumber) =
{
        var totalPages =3D this._parentArea.getTotalPages();
        var toEachSide =3D (Thumbnails.PageLinkChain._numLinks - 1) / 2;
        var pageIndexCalculator =3D new =
Thumbnails.PageIndexCalculator(pageNumber, totalPages, toEachSide);
        var counter =3D 0;
        if (pageNumber > 1) {
            this._pageLinks[counter].setPrevious(pageNumber - 1);
            ++counter;
        }
        if (pageIndexCalculator.get_startIndex() > 1) {
            this._pageLinks[counter].setDotDotDot();
            ++counter;
        }
        for (var i =3D pageIndexCalculator.get_startIndex(); i <=3D =
pageIndexCalculator.get_endIndex(); ++i) {
            if (i =3D=3D=3D pageNumber) {
                this._pageLinks[counter].setCurrentPage(i);
            }
            else {
                this._pageLinks[counter].setPage(i);
            }
            ++counter;
        }
        if (pageIndexCalculator.get_endIndex() < totalPages) {
            this._pageLinks[counter].setDotDotDot();
            ++counter;
        }
        this._pageLinks[counter].setOf();
        ++counter;
        this._pageLinks[counter].setTotal(totalPages);
        ++counter;
        if (pageNumber < totalPages) {
            this._pageLinks[counter].setNext(pageNumber + 1);
            ++counter;
        }
        for (var i =3D counter; i < this._pageLinks.length; ++i) {
            this._pageLinks[i].hide();
        }
    },

    _createPageTextSpan: function =
Thumbnails_PageLinkChain$_createPageTextSpan() {
        this._pageTextSpan =3D $(document.createElement('div'));
        this._pageTextSpan.className =3D 'thumbNailPageLabel';
        SfKernel.Util.SetText(this._pageTextSpan, =
Localization.ThumbnailsResource.Page + ':');
        =
this._parentArea.get_pagerContainer().appendChild(this._pageTextSpan);
    },

    _createPageLinks: function =
Thumbnails_PageLinkChain$_createPageLinks() {
        var extraStuff =3D 6;
        this._pageLinks =3D new Array(Thumbnails.PageLinkChain._numLinks =
+ extraStuff);
        for (var i =3D 0; i < Thumbnails.PageLinkChain._numLinks + =
extraStuff; ++i) {
            this._appendOneLink(i);
        }
    },

    _appendOneLink: function =
Thumbnails_PageLinkChain$_appendOneLink(index) {
        var link =3D new Thumbnails.OneLink(this._parentArea);
        =
this._parentArea.get_pagerContainer().appendChild(link.get_element());
        this._pageLinks[index] =3D link;
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.PageLinkManager

Thumbnails.PageLinkManager =3D function =
Thumbnails_PageLinkManager(parentArea) {
    this._parentArea =3D parentArea;
    this._topPageLinks =3D new =
Thumbnails.PageLinkChain(this._parentArea);
}
Thumbnails.PageLinkManager.prototype =3D {
    _parentArea: null,
    _topPageLinks: null,

    updatePageLinks: function =
Thumbnails_PageLinkManager$updatePageLinks(pageNumber) {
        this._topPageLinks.selectPage(pageNumber);
    }
}

Thumbnails.OneLink.registerClass('Thumbnails.OneLink');
Thumbnails.PageIndexCalculator.registerClass('Thumbnails.PageIndexCalcula=
tor');
Thumbnails.PageLinkChain.registerClass('Thumbnails.PageLinkChain');
Thumbnails.PageLinkManager.registerClass('Thumbnails.PageLinkManager');
Thumbnails.PageLinkChain._numLinks =3D 9;


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.SingleSlide

Thumbnails.SingleSlide =3D function Thumbnails_SingleSlide(parentArea, =
position) {
    this._parentArea =3D parentArea;
    this._position =3D position;
    this._expandCollapse =3D new =
Thumbnails.SingleSlideExpandCollapse(this, this._parentArea);
}
Thumbnails.SingleSlide.prototype =3D {
    _parentArea: null,
    _position: 0,
    _group: null,
    _element: null,
    _imageElement: null,
    _imageContainer: null,
    _previewLinkElement: null,
    //    _playLinkElement: null,
    _slideNumberElement: null,
    _timingElement: null,
    _titleElement: null,
    _expandCollapse: null,
    _zoomHandle: 0,
    _slideNumber: 0,
    _visible: false,

    get_slideNumber: function Thumbnails_SingleSlide$get_slideNumber() {
        return this._slideNumber;
    },
    set_slideNumber: function =
Thumbnails_SingleSlide$set_slideNumber(value) {
        this._slideNumber =3D value;
        this._imageElement.setAttribute('src', =
mPlayer.GetImageLocationUsingWidthAndHeight(this._slideNumber, =
this._parentArea.ThumbnailWidth, this._parentArea.ThumbnailHeight));
        if (this._parentArea._currentPointNumber !=3D 0) {
            SfKernel.Util.SetToolTip(this._imageElement, '' + =
SfKernel.EncodeClean(Manifest.Slides[this._slideNumber - 1].Text));
        }
        SfKernel.Util.SetText(this._timingElement, =
SfKernel.GetDisplayDuration(Manifest.Slides[this._slideNumber - =
1].Time));
        SfKernel.Util.SetText(this._slideNumberElement, '' + =
this._slideNumber);
        if (this._titleElement) {
            SfKernel.Util.SetText(this._titleElement, '' + =
SfKernel.EncodeClean(Manifest.Slides[this._slideNumber - 1].Text));
            SfKernel.Util.SetToolTip(this._titleElement, =
SfKernel.EncodeClean(Manifest.Slides[this._slideNumber - =
1].Description));
        }
        this._group =3D null;
        this._expandCollapse.unActivate();
        this._imageElement.setStyle({ display: 'block' })
        return value;
    },

    get_group: function Thumbnails_SingleSlide$get_group() {
        return this._group;
    },
    set_group: function Thumbnails_SingleSlide$set_group(value) {
        this._group =3D value;
        this._imageElement.setAttribute('src', =
mPlayer.GetImageLocationUsingWidthAndHeight(this._group.get_min(), =
this._parentArea.ThumbnailWidth, this._parentArea.ThumbnailHeight));
        if (this._parentArea._currentPointNumber !=3D 0) {
            SfKernel.Util.SetToolTip(this._imageElement, '' + =
SfKernel.EncodeClean(Manifest.Slides[this._group.get_min() - 1].Text));
        }
        SfKernel.Util.SetText(this._timingElement, =
SfKernel.GetDisplayDuration(Manifest.Slides[this._group.get_min() - =
1].Time));
        SfKernel.Util.SetText(this._slideNumberElement, '' + =
this._group.get_min());
        if (this._titleElement) {
            SfKernel.Util.SetText(this._titleElement, '' + =
SfKernel.EncodeClean(Manifest.Slides[this._group.get_min() - 1].Text));
            SfKernel.Util.SetToolTip(this._titleElement, =
SfKernel.EncodeClean(Manifest.Slides[this._group.get_min() - =
1].Description));
        }
        this._slideNumber =3D this._group.get_min();
        this._expandCollapse.activate();
        return value;
    },

    get_visible: function Thumbnails_SingleSlide$get_visible() {
        return this._visible;
    },
    set_visible: function Thumbnails_SingleSlide$set_visible(value) {
        this._visible =3D value;
        if (this._visible) {
            this._element.style.visibility =3D 'visible';
        }
        else {
            this._element.style.visibility =3D 'hidden';
        }
        return value;
    },

    get_position: function Thumbnails_SingleSlide$get_position() {
        return Thumbnails.$create_Position(this._element.offsetLeft, =
this._element.offsetTop);
    },

    setSize: function Thumbnails_SingleSlide$setSize(width, height) {
        this._element.style.width =3D '' + width + 'px';
        this._imageElement.style.width =3D '' + width + 'px';
        this._imageElement.style.height =3D '' + height + 'px';
    },

    getActualWidth: function Thumbnails_SingleSlide$getActualWidth() {
        return this._imageElement.getWidth();
    },

    getActualHeight: function Thumbnails_SingleSlide$getActualHeight() {
        return this._imageElement.getHeight();
    },

    containsSlide: function =
Thumbnails_SingleSlide$containsSlide(slideNumber) {
        if (!this._group) {
            return (this._slideNumber =3D=3D=3D slideNumber);
        }
        if (this._group.get_isExpanded()) {
            return (this._slideNumber =3D=3D=3D slideNumber);
        }
        else {
            return this._group.ContainsSlide(slideNumber);
        }
    },

    hiliteSlide: function Thumbnails_SingleSlide$hiliteSlide() {
        //check if we're on list or thumb
        if (this._parentArea._currentPointNumber =3D=3D 0) {
            this._element.className =3D 'textSlideListItemCurrent';
        }
        else {
            this._element.className =3D 'thumbnailItemCurrent';
        }
    },

    unHiliteSlide: function Thumbnails_SingleSlide$unHiliteSlide() {
        // check if we're on the currently running slide or not
        if (this._parentArea._currentPointNumber =3D=3D 0) {
            this._element.className =3D 'textSlideListItem';
        }
        else {
            this._element.className =3D 'thumbNailSlide';
        }
    },


    createThumbnailElement: function =
Thumbnails_SingleSlide$createThumbnailElement() {

        this._element =3D $(document.createElement('div'));
        this._element.style.visibility =3D 'hidden';
        var width =3D this._parentArea.ThumbnailWidth + 'px';
        var height =3D this._parentArea.ThumbnailHeight + 'px';
        this._element.className =3D 'thumbNailSlide';
        var style =3D {};
        style['position'] =3D 'relative';
        style['float'] =3D 'left';
        style['width'] =3D width;
        this._element.setStyle(style);

        var shadowBottom =3D $(document.createElement('div'));
        shadowBottom.className =3D "thumbnailShadowBottom";
        var shadowRight =3D $(document.createElement('div'));
        shadowRight.className =3D "thumbnailShadowRight";
        var shadowCorner =3D $(document.createElement('div'));
        shadowCorner.className =3D "thumbnailShadowCorner";

        this._imageContainer =3D document.createElement('div');
        this._imageContainer.className =3D 'thumbNailImage';
        this._imageElement =3D $(document.createElement('img'));
        this._imageElement.setStyle({ width: width, height: height, =
left: '0px' });
        this._imageElement.setAttribute('src', =
LayoutOptions.ThemeImageBase + '/1x1.gif');
        this._bottomElement =3D $(document.createElement('div'));
        this._slideNumberElement =3D $(document.createElement('div'));
        this._slideNumberElement.className =3D 'thumbNailSlideNumber';
        this._timingElement =3D $(document.createElement('div'));
        this._timingElement.className =3D 'thumbNailTiming';

        this._imageContainer.appendChild(this._imageElement);
        this._element.appendChild(this._imageContainer);
        this._element.appendChild(this._bottomElement);
        this._element.appendChild(shadowRight);
        this._element.appendChild(shadowBottom);
        this._element.appendChild(shadowCorner);
        this._imageContainer.appendChild(this._slideNumberElement);
        =
this._element.appendChild(this._expandCollapse.createBlankElement());
        this._bottomElement.appendChild(this._timingElement);
        this._bottomElement.className =3D 'thumbnailHandle';
        this._bottomElement.style.cursor =3D 'url(' + =
LayoutOptions.ThemeImageBase + '/SlideSorter/magCursor.cur), url(' + =
LayoutOptions.ThemeImageBase + '/SlideSorter/magCursor.gif), pointer';

        this._element.style.visibility =3D 'hidden';
        this._bottomElement.observe('click', =
Function.createDelegate(this, this._NavOnly));
        this._bottomElement.observe('dblclick', =
Function.createDelegate(this, this._NavAndSwitch));
        this._bottomElement.observe('mouseover', =
Function.createDelegate(this, this._ThumbnailonMouseOver));

        // hack: this was supposed to be this._imageElement.observe=20
        this._element.observe('click', Function.createDelegate(this, =
this._NavOnly));
        this._element.observe('dblclick', Function.createDelegate(this, =
this._NavAndSwitch));
        // end hack

        this._element.observe('mouseout', Function.createDelegate(this, =
this._ThumbnailonMouseOut));
        return this._element;
    },

    createListElement: function =
Thumbnails_SingleSlide$createListElement() {
        this._element =3D $(document.createElement('div'));
        var parentWidth =3D =
this._parentArea.get_slidesContainer().offsetWidth;
        this._element.setStyle({ width: (parentWidth - 20) + 'px' });
        this._parentArea.ThumbnailWidth =3D 28;
        this._parentArea.ThumbnailHeight =3D 21;
        var width =3D '28px';
        var height =3D '21px';
        this._element.className =3D 'textSlideListItem';

        this._slideNumberElement =3D $(document.createElement('div'));
        this._slideNumberElement.className =3D 'textSlideListNumber';
        this._element.appendChild(this._slideNumberElement);

        var imageContainer =3D document.createElement('div');
        this._imageElement =3D $(document.createElement('img'));
        this._imageElement.setAttribute('height', '21');
        this._imageElement.setAttribute('width', '28');
        imageContainer.appendChild(this._imageElement);
        this._element.appendChild(imageContainer);
        imageContainer.className =3D 'textSlideListZoomImage';
        imageContainer.style.cursor =3D 'url(' + =
LayoutOptions.ThemeImageBase + '/SlideSorter/magCursor.cur), url(' + =
LayoutOptions.ThemeImageBase + '/SlideSorter/magCursor.gif), pointer';


        this._addImageElementEvents();

        =
this._element.appendChild(this._expandCollapse.createBlankElement('slideL=
istExpandCollapse'));

        this._timingElement =3D $(document.createElement('div'));
        this._timingElement.className =3D 'textSlideListTime';
        this._element.appendChild(this._timingElement);

        this._titleElement =3D $(document.createElement('div'));
        this._titleElement.className =3D 'textSlideListTitleNormal';
        this._titleElement.setStyle({ width: (parentWidth - 153) + 'px' =
});
        this._element.appendChild(this._titleElement);

        this._element.style.visibility =3D 'hidden';
        this._element.observe('click', Function.createDelegate(this, =
this._NavOnly));
        this._element.observe('dblclick', Function.createDelegate(this, =
this._NavAndSwitch));
        this._element.observe('mouseover', Function.createDelegate(this, =
this._ListonMouseOver));
        //this._imageElement.observe('mouseover', =
Function.createDelegate(this, this._ListImageonMouseOver));
        this._element.observe('mouseout', Function.createDelegate(this, =
this._ListonMouseOut));
        return this._element;
    },

    _addImageElementEvents: function =
Thumbnails_SingleSlide$_addImageElementEvents() {
        this._imageElement.observe('mouseover', =
Function.createDelegate(this, this._imageOnMouseOver));
    },

    _imageOnMouseOver: function =
Thumbnails_SingleSlide$_imageOnMouseOver() {
        this._delayedZoom();
    },

    _NavOnly: function Thumbnails_SingleSlide$_NavOnly(sender, args) {
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: this._slideNumber });
    },

    _NavAndSwitch: function Thumbnails_SingleSlide$_NavAndSwitch() {
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: this._slideNumber });
        mPlayer.btnSlideShowInstance.OnClick();
    },

    _ThumbnailonMouseOver: function =
Thumbnails_SingleSlide$_ThumbnailonMouseOver(sender, args) {
        this._element.className =3D 'thumbNailSlideX';
        this._previewLinkThumbnailOnMouseOver();
    },

    _ThumbnailonMouseOut: function =
Thumbnails_SingleSlide$_ThumbnailonMouseOut(sender, args) {
        this._element.className =3D 'thumbNailSlide';
        window.clearTimeout(this._zoomHandle);
    },

    //    _ListonClick: function =
Thumbnails_SingleSlide$_ListonClick(sender, args) {
    //        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: this._slideNumber });
    //    },

    _ListonMouseOver: function =
Thumbnails_SingleSlide$_ListonMouseOver(sender, args) {
        this._element.className =3D 'textSlideListItemOver';
        this._titleElement.className =3D 'textSlideListTitleOver';
    },

    _ListonMouseOut: function =
Thumbnails_SingleSlide$_ListonMouseOut(sender, args) {
        this._element.className =3D 'textSlideListItem';
        this._titleElement.className =3D 'textSlideListTitleNormal';
        window.clearTimeout(this._zoomHandle);
    },

    _delayedZoom: function Thumbnails_SingleSlide$_delayedZoom() {
        this._zoomHandle =3D =
window.setTimeout(Function.createDelegate(this, this._showZoom), 700);
    },

    _showZoom: function Thumbnails_SingleSlide$_showZoom() {
        this._parentArea.zoomSingleSlide(this);
    },

    _createPreviewLinkElement: function =
Thumbnails_SingleSlide$_createPreviewLinkElement() {
        this._previewLinkElement =3D $(document.createElement('div'));
        SfKernel.Util.SetToolTip(this._previewLinkElement, =
Localization.ThumbnailsResource.PreviewSlide);
        SfKernel.Util.SetCursor(this._previewLinkElement, =
SfKernel.CursorType.Hand);
    },

    _previewLinkThumbnailOnMouseOver: function =
Thumbnails_SingleSlide$_previewLinkThumbnailOnMouseOver(sender, args) {
        this._delayedZoom();
    },

    _playLinkOnMouseOver: function =
Thumbnails_SingleSlide$_playLinkOnMouseOver(sender, args) {
        this._playLinkElement.className =3D 'thumbNailZoomPlayLinkOver';
    },

    _playLinkOnMouseOut: function =
Thumbnails_SingleSlide$_playLinkOnMouseOut(sender, args) {
        this._playLinkElement.className =3D =
'thumbNailZoomPlayLinkNormal';
    },

    _playLinkOnClick: function =
Thumbnails_SingleSlide$_playLinkOnClick(sender, args) {
        mPlayer.btnSlideShowInstance.OnClick();
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.SingleSlideExpandCollapse

Thumbnails.SingleSlideExpandCollapse =3D function =
Thumbnails_SingleSlideExpandCollapse(singleSlide, parentArea) {
    this._singleSlide =3D singleSlide;
    this._parentArea =3D parentArea;
}
Thumbnails.SingleSlideExpandCollapse.prototype =3D {
    _singleSlide: null,
    _parentArea: null,
    _element: null,
    _isExpanded: false,
    _isShowing: false,

    get_isExpanded: function =
Thumbnails_SingleSlideExpandCollapse$get_isExpanded() {
        return this._isExpanded;
    },
    set_isExpanded: function =
Thumbnails_SingleSlideExpandCollapse$set_isExpanded(value) {
        this._isExpanded =3D value;
        if (this._isExpanded) {
            this._element.className =3D =
'thumbNailExpandCollapseExpandedSmall';
            SfKernel.Util.SetToolTip(this._element, =
Localization.ThumbnailsResource.CollapseSlides);
        }
        else {
            this._element.className =3D =
'thumbNailExpandCollapseCollapsedSmall';
            SfKernel.Util.SetToolTip(this._element, =
Localization.ThumbnailsResource.ExpandSlides);           =20
        }
        return value;
    },

    createBlankElement: function =
Thumbnails_SingleSlideExpandCollapse$createBlankElement() {
        var divDom =3D document.createElement('div');
        this._element =3D $(divDom);
        this._element.className =3D =
'thumbNailExpandCollapseExpandedSmall';
        this._element.observe('click', Function.createDelegate(this, =
this._expandCollapseOnClick));
        SfKernel.Util.SetToolTip(this._element, =
Localization.ThumbnailsResource.ExpandSlides);
        return this._element;
    },

    _expandCollapseOnClick: function =
Thumbnails_SingleSlideExpandCollapse$_expandCollapseOnClick(sender, =
args) {
        if (this._isExpanded) {
            this._singleSlide.get_group().set_isExpanded(false);
            this._parentArea.onGroupExpandCollapse();
        }
        else {
            this._singleSlide.get_group().set_isExpanded(true);
            this._parentArea.onGroupExpandCollapse();
        }
    },

    activate: function Thumbnails_SingleSlideExpandCollapse$activate() {
        =
this.set_isExpanded(this._singleSlide.get_group().get_isExpanded());
        this._element.show();
    },

    unActivate: function =
Thumbnails_SingleSlideExpandCollapse$unActivate() {
        this._element.hide();
    }
}


Thumbnails.SingleSlide.registerClass('Thumbnails.SingleSlide');
Thumbnails.SingleSlideExpandCollapse.registerClass('Thumbnails.SingleSlid=
eExpandCollapse');

/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.Dimension

Thumbnails.$create_Dimension =3D function Thumbnails_Dimension(width, =
height) {
    var $o =3D {};
    $o.Width =3D width;
    $o.Height =3D height;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.Position

Thumbnails.$create_Position =3D function Thumbnails_Position(x, y) {
    var $o =3D {};
    $o.X =3D x;
    $o.Y =3D y;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.Offset

Thumbnails.$create_Offset =3D function Thumbnails_Offset(top, left) {
    var $o =3D {};
    $o.Top =3D top;
    $o.Left =3D left;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.Bounds

Thumbnails.$create_Bounds =3D function Thumbnails_Bounds(top, left, =
width, height) {
    var $o =3D {};
    $o.Top =3D top;
    $o.Left =3D left;
    $o.Width =3D width;
    $o.Height =3D height;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.BoundsInt

Thumbnails.$create_BoundsInt =3D function Thumbnails_BoundsInt(top, =
left, width, height) {
    var $o =3D {};
    $o.Top =3D top;
    $o.Left =3D left;
    $o.Width =3D width;
    $o.Height =3D height;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.ZoomCalculator

Thumbnails.ZoomCalculator =3D function =
Thumbnails_ZoomCalculator(containerDimension, zoomedImageDimension, =
thumbnailDimension) {
    this._containerDimension =3D containerDimension;
    this._zoomedImageDimension =3D zoomedImageDimension;
    this._thumbnailDimension =3D thumbnailDimension;
    this._deltaX =3D (this._zoomedImageDimension.Width - =
this._thumbnailDimension.Width) / 2;
    this._deltaY =3D (this._zoomedImageDimension.Height - =
this._thumbnailDimension.Height) / 2;
}
Thumbnails.ZoomCalculator.prototype =3D {
    _containerDimension: null,
    _zoomedImageDimension: null,
    _thumbnailDimension: null,
    _deltaX: 0,
    _deltaY: 0,

    calculatePositionToShow: function =
Thumbnails_ZoomCalculator$calculatePositionToShow(currentThumbnailPositio=
n) {
        if (currentThumbnailPosition.X >=3D this._deltaX) {
            if (this._containerDimension.Width >=3D =
currentThumbnailPosition.X - this._deltaX + =
this._zoomedImageDimension.Width) {
                if (currentThumbnailPosition.Y >=3D this._deltaY) {
                    if (this._containerDimension.Height >=3D =
currentThumbnailPosition.Y - this._deltaY + =
this._zoomedImageDimension.Height) {
                        return =
Thumbnails.$create_Position((currentThumbnailPosition.X - this._deltaX), =
(currentThumbnailPosition.Y - this._deltaY));
                    }
                    else {
                        return =
Thumbnails.$create_Position((currentThumbnailPosition.X - this._deltaX), =
(this._containerDimension.Height - this._zoomedImageDimension.Height));
                    }
                }
                else {
                    return =
Thumbnails.$create_Position((currentThumbnailPosition.X - this._deltaX), =
0);
                }
            }
            else {
                if (currentThumbnailPosition.Y >=3D this._deltaY) {
                    if (this._containerDimension.Height >=3D =
currentThumbnailPosition.Y - this._deltaY + =
this._zoomedImageDimension.Height) {
                        return =
Thumbnails.$create_Position((this._containerDimension.Width - =
this._zoomedImageDimension.Width), (currentThumbnailPosition.Y - =
this._deltaY));
                    }
                    else {
                        return =
Thumbnails.$create_Position((this._containerDimension.Width - =
this._zoomedImageDimension.Width), (this._containerDimension.Height - =
this._zoomedImageDimension.Height));
                    }
                }
                else {
                    return =
Thumbnails.$create_Position((this._containerDimension.Width - =
this._zoomedImageDimension.Width), 0);
                }
            }
        }
        else {
            if (currentThumbnailPosition.Y >=3D this._deltaY) {
                if (this._containerDimension.Height >=3D =
currentThumbnailPosition.Y - this._deltaY + =
this._zoomedImageDimension.Height) {
                    return Thumbnails.$create_Position(0, =
(currentThumbnailPosition.Y - this._deltaY));
                }
                else {
                    return Thumbnails.$create_Position(0, =
(this._containerDimension.Height - this._zoomedImageDimension.Height));
                }
            }
            else {
                return Thumbnails.$create_Position(0, 0);
            }
        }
    }
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.ZoomHelper

Thumbnails.ZoomHelper =3D function Thumbnails_ZoomHelper(parentArea) {
    this._parentArea =3D parentArea;
    this._setThumbDimensions();
    this._createZoomElement();
}
Thumbnails.ZoomHelper.prototype =3D {
    _parentArea: null,
    _zoomElement: null,
    _imageElement: null,
    _slideNumberElement: null,
    _expandCollapseElement: null,
    _slideTimeElement: null,
    _playLinkElement: null,
    _anchorElement: null,
    _previewLinkElement: null,
    _currentSingleSlide: null,
    _isZoomInitialized: false,
    _isExpanded: false,
    _hideHandle: 0,
    _zoomCalculator: null,
    _zoomHeight: 225,
    _zoomWidth: 300,
    _zoomFactor: 2,
    _zoomBarHeight: 24,

    _setThumbDimensions: function =
Thumbnails_ZoomHelper$setThumbDimensions() {
        this._zoomHeight =3D this._parentArea.OriginalThumbnailHeight * =
2;
        this._zoomWidth =3D this._parentArea.OriginalThumbnailWidth * 2;
    },

    ZoomSingleSlide: function =
Thumbnails_ZoomHelper$ZoomSingleSlide(singleSlide) {
        var thumbnailPos =3D singleSlide.get_position();
        this._currentSingleSlide =3D singleSlide;

        this._zoomWidth =3D =
Math.floor(this._parentArea.OriginalThumbnailWidth * this._zoomFactor);
        this._zoomHeight =3D =
Math.floor(this._parentArea.OriginalThumbnailHeight * this._zoomFactor);
        this._imageElement.setAttribute('src', =
mPlayer.GetImageLocationUsingWidthAndHeight(singleSlide.get_slideNumber()=
, this._zoomWidth, this._zoomHeight));

        if (!this._isZoomInitialized) {
            this.InitializeZoom();
        }
        if (!singleSlide.get_group()) {
            this._expandCollapseElement.hide();
        }
        else {
            =
this._setExpanded(this._currentSingleSlide.get_group().get_isExpanded());=

            this._expandCollapseElement.show();
        }
        this._setSlideNumberText();

        SfKernel.Util.SetText(this._slideTimeElement, =
SfKernel.GetDisplayDuration(Manifest.Slides[singleSlide.get_slideNumber()=
 - 1].Time));
        SfKernel.Util.SetToolTip(this._imageElement, =
Manifest.Slides[singleSlide.get_slideNumber() - 1].Text); //handles IE
        SfKernel.Util.SetToolTip(this._focusCatcherElement, =
Manifest.Slides[singleSlide.get_slideNumber() - 1].Text); //handles FF =
etc.

        var initial =3D Thumbnails.$create_BoundsInt(thumbnailPos.Y, =
thumbnailPos.X, this._parentArea.getCurrentActualThumbnailWidth(), =
this._parentArea.getCurrentActualThumbnailHeight());

        var scrollOffsets =3D =
Thumbnails.$create_Offset(this._parentArea.get_slidesContainer().scrollTo=
p, this._parentArea.get_slidesContainer().scrollLeft);
        thumbnailPos.X -=3D scrollOffsets.Left;
        thumbnailPos.Y -=3D scrollOffsets.Top;

        var displayPos =3D =
this._zoomCalculator.calculatePositionToShow(thumbnailPos);

        if (this._parentArea._currentPointNumber =3D=3D 0) {
            displayPos.X +=3D 85;
            $('thumbNailZoomAnchorElement').style.top =3D =
(thumbnailPos.Y - displayPos.Y - 7) + 'px';

        }
        //displayPos.X +=3D scrollOffsets.Left;  =20
        //displayPos.Y +=3D scrollOffsets.Top;

        if (displayPos.X + this._zoomElement.getWidth() > =
this._parentArea.get_slidesContainer().getWidth() - =
Thumbnails.ZoomHelper._scrollbarWidth) {
            displayPos.X -=3D Thumbnails.ZoomHelper._scrollbarWidth;
        }

        this.SetBounds(Thumbnails.$create_Bounds(initial.Top + 'px', =
initial.Left + 'px', initial.Width + 'px', initial.Height + 'px'));
        this._zoomElement.style.visibility =3D 'visible';
        this.SetBounds(Thumbnails.$create_Bounds(displayPos.Y + 'px', =
displayPos.X + 'px', this._zoomWidth + 'px', this._zoomHeight + 'px'))
    },

    GetZoomElement: function Thumbnails_ZoomHelper$GetZoomElement() {
        return this._zoomElement;
    },

    SetBounds: function Thumbnails_ZoomHelper$SetBounds(bounds) {
        this._zoomElement.style.top =3D bounds.Top;
        this._zoomElement.style.left =3D bounds.Left;
        this._zoomElement.style.width =3D bounds.Width;
        this._imageElement.style.width =3D bounds.Width;
        this._imageElement.style.height =3D bounds.Height;
    },

    _setSlideNumberText: function =
Thumbnails_ZoomHelper$_setSlideNumberText() {
        var text;
        if (!this._currentSingleSlide.get_group()) {
            text =3D '' + this._currentSingleSlide.get_slideNumber();
        }
        else {
            text =3D '' + =
this._currentSingleSlide.get_group().get_min();
        }
        SfKernel.Util.SetText(this._slideNumberElement, text);
    },

    _setExpanded: function Thumbnails_ZoomHelper$_setExpanded(val) {
        if (val) {
            SfKernel.Util.SetToolTip(this._expandCollapseElement, =
Localization.ThumbnailsResource.CollapseSlides);
            this._expandCollapseElement.className =3D =
'thumbNailZoomExpandCollapseExpanded';
        }
        else {
            SfKernel.Util.SetToolTip(this._expandCollapseElement, =
Localization.ThumbnailsResource.ExpandSlides);
            this._expandCollapseElement.className =3D =
'thumbNailZoomExpandCollapseCollapsed';
        }
        this._isExpanded =3D val;
    },

    InitializeZoom: function Thumbnails_ZoomHelper$InitializeZoom() {
        var containerDimension =3D =
this._parentArea.get_slidesContainer().getDimensions();
        this._zoomCalculator =3D new =
Thumbnails.ZoomCalculator(Thumbnails.$create_Dimension(containerDimension=
.width, containerDimension.height), =
Thumbnails.$create_Dimension(this._zoomElement.getWidth(), =
this._zoomElement.getHeight()), =
Thumbnails.$create_Dimension(this._parentArea.getCurrentActualThumbnailWi=
dth(), this._parentArea.getCurrentActualThumbnailHeight()));
        this._isZoomInitialized =3D true;
    },

    _createZoomElement: function =
Thumbnails_ZoomHelper$_createZoomElement() {
        this._zoomElement =3D $(document.createElement('div'));
        this._zoomElement.className =3D 'thumbNailZoomElement';
        this._zoomElement.id =3D 'thumbNailZoomElement';

        var shadowBottom =3D $(document.createElement('div'));
        shadowBottom.className =3D "thumbnailZoomShadowBottom";
        var shadowRight =3D $(document.createElement('div'));
        shadowRight.className =3D "thumbnailZoomShadowRight";
        var shadowCorner =3D $(document.createElement('div'));
        shadowCorner.className =3D "thumbnailZoomShadowCorner";

        this._focusCatcherElement =3D $(document.createElement('div'));
        this._focusCatcherElement.className =3D =
'thumbnailZoomFocusCatcher';
        this._focusCatcherElement.id =3D 'thumbnailZoomFocusCatcher';
        this._focusCatcherElement.setStyle({ width: (this._zoomWidth) + =
'px', height: (this._zoomHeight + this._zoomBarHeight) + 'px' })
        this._zoomElement.appendChild(this._focusCatcherElement);

        this._zoomElement.appendChild(shadowRight);
        this._zoomElement.appendChild(shadowBottom);
        this._zoomElement.appendChild(shadowCorner);

        if (this._parentArea._currentPointNumber =3D=3D 0) {
            this._createAnchorElement();
            this._zoomElement.appendChild(this._anchorElement);
        }
        this._zoomElement.setStyle({ width: this._zoomWidth + 'px', =
height: (this._zoomHeight + this._zoomBarHeight) + 'px' });

        var imgContainer =3D $(document.createElement('div'));
        imgContainer.className =3D 'thumbNailZoomImageDiv';
        this._zoomElement.appendChild(imgContainer);

        this._imageElement =3D $(document.createElement('img'));
        imgContainer.appendChild(this._imageElement);
        this._imageElement.setStyle({ width: this._zoomWidth + 'px', =
height: this._zoomHeight + 'px' });

        var bottomDiv =3D document.createElement('div');
        bottomDiv.className =3D 'thumbNailZoomBottomDiv';
        this._zoomElement.appendChild(bottomDiv);

        this._createSlideNumberElement();
        bottomDiv.appendChild(this._slideNumberElement);

        this._createExpandCollapseElement();
        bottomDiv.appendChild(this._expandCollapseElement);

        this._createSlideTimeElement();
        bottomDiv.appendChild(this._slideTimeElement);

        this._createPreviewLinkElement();
        bottomDiv.appendChild(this._previewLinkElement);

        this._addZoomElementEvents();
    },

    _createAnchorElement: function =
Thumbnails_ZoomHelper$_createAnchorElement() {
        this._anchorElement =3D $(document.createElement('div'));
        this._anchorElement.id =3D 'thumbNailZoomAnchorElement';
        this._anchorElement.className =3D 'thumbNailZoomAnchorElement';
        this._anchorElement.observe('click', =
Function.createDelegate(this, this._onImageClick));
        this._anchorElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._anchorElement.observe('mouseout', =
Function.createDelegate(this, this._onMouseOut), true);
    },

    _addZoomElementEvents: function =
Thumbnails_ZoomHelper$_addZoomElementEvents() {
        this._focusCatcherElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._slideNumberElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._expandCollapseElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._slideTimeElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._previewLinkElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._imageElement.observe('mouseover', =
Function.createDelegate(this, this._resetZoomTimer), true);
        this._zoomElement.observe('mouseout', =
Function.createDelegate(this, this._onMouseOut), true);
        this._focusCatcherElement.observe('click', =
Function.createDelegate(this, this._onImageClick));
        this._imageElement.observe('click', =
Function.createDelegate(this, this._onImageClick));
        this._focusCatcherElement.observe('mouseout', =
Function.createDelegate(this, this._onMouseOut), true);
    },

    _onImageClick: function Thumbnails_ZoomHelper$_onImageClick() {
        mPlayer.btnSlideShowInstance.OnClick();
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: this._currentSingleSlide.get_slideNumber() =
});
    },

    _resetZoomTimer: function Thumbnails_ZoomHelper$_resetZoomTimer() {
        window.clearTimeout(this._hideHandle);
        this._parentArea.zoomSingleSlide(this._currentSingleSlide);
    },

    _imageOnMouseOver: function =
Thumbnails_ZoomHelper$_imageOnMouseOver(sender, args) {
        window.clearTimeout(this._hideHandle);
        this._parentArea.zoomSingleSlide(this._currentSingleSlide);
    },

    _createSlideNumberElement: function =
Thumbnails_ZoomHelper$_createSlideNumberElement() {
        this._slideNumberElement =3D $(document.createElement('div'));
        this._slideNumberElement.className =3D =
'thumbNailZoomSlideNumber';
    },

    _createExpandCollapseElement: function =
Thumbnails_ZoomHelper$_createExpandCollapseElement() {
        this._expandCollapseElement =3D =
$(document.createElement('div'));
        SfKernel.Util.SetToolTip(this._expandCollapseElement, =
Localization.ThumbnailsResource.ExpandSlides);
        this._expandCollapseElement.className =3D =
'thumbNailZoomExpandCollapseCollapsed';
        this._expandCollapseElement.observe('click', =
Function.createDelegate(this, this._expandCollapseOnClick));
    },

    _expandCollapseOnClick: function =
Thumbnails_ZoomHelper$_expandCollapseOnClick(sender, args) {
        if (this._isExpanded) {
            this._currentSingleSlide.get_group().set_isExpanded(false);
            this._parentArea.onGroupExpandCollapse();
        }
        else {
            this._currentSingleSlide.get_group().set_isExpanded(true);
            this._parentArea.onGroupExpandCollapse();
        }
    },

    _createSlideTimeElement: function =
Thumbnails_ZoomHelper$_createSlideTimeElement() {
        this._slideTimeElement =3D $(document.createElement('div'));
        this._slideTimeElement.className =3D 'thumbNailZoomTiming';
    },

    _createPreviewLinkElement: function =
Thumbnails_ZoomHelper$_createPreviewLinkElement() {
        this._previewLinkElement =3D $(document.createElement('div'));
        SfKernel.Util.SetToolTip(this._previewLinkElement, =
Localization.ThumbnailsResource.PreviewSlide);
        this._previewLinkElement.className =3D =
'thumbNailZoomPreviewLinkOverSmall';
        this._previewLinkElement.observe('click', =
Function.createDelegate(this, this._previewLinkOnClick));
    },

    _previewLinkOnClick: function =
Thumbnails_ZoomHelper$_previewLinkOnClick(sender, args) {
        =
this._parentArea.showBigSlide(this._currentSingleSlide.get_slideNumber())=
;
    },

    _onClick: function Thumbnails_ZoomHelper$_onClick(e) {
        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: this._currentSingleSlide.get_slideNumber() =
});
        Event.stop(e);
        window.clearTimeout(this._hideHandle);
    },

    _onMouseOver: function Thumbnails_ZoomHelper$_onMouseOver(e) {
        Event.stop(e);
        window.clearTimeout(this._hideHandle);
    },

    _onMouseOut: function Thumbnails_ZoomHelper$_onMouseOut(e) {
        Event.stop(e);
        this._hideHandle =3D =
window.setTimeout(Function.createDelegate(this, this._hide), 500);
    },

    _hide: function Thumbnails_ZoomHelper$_hide() {
        this._zoomElement.style.visibility =3D 'hidden';
        this._imageElement.setAttribute('src', =
LayoutOptions.ThemeImageBase + '/1x1.gif');
    }
}


Thumbnails.ZoomCalculator.registerClass('Thumbnails.ZoomCalculator');
Thumbnails.ZoomHelper.registerClass('Thumbnails.ZoomHelper');
Thumbnails.ZoomHelper._scrollbarWidth =3D 20;

/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.IRadioButtonGroup

Thumbnails.IRadioButtonGroup =3D function() { };
Thumbnails.IRadioButtonGroup.prototype =3D {
    selectButton: null
}
Thumbnails.IRadioButtonGroup.registerInterface('Thumbnails.IRadioButtonGr=
oup');


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.RadioImageInfo

Thumbnails.$create_RadioImageInfo =3D function =
Thumbnails_RadioImageInfo(overImage, normalImage, checkedImage) {
    var $o =3D {};
    $o.overImage =3D overImage;
    $o.normalImage =3D normalImage;
    $o.checkedImage =3D checkedImage;
    return $o;
}


/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.RadioButton

Thumbnails.RadioButton =3D function Thumbnails_RadioButton(group, =
element, imageInfo, tooltip) {
    this._group =3D group;
    this._element =3D element;
    this._imageInfo =3D imageInfo;
    this._tooltip =3D tooltip;
    this._element.observe('mouseover', Function.createDelegate(this, =
this._onMouseOver));
    this._element.observe('mouseout', Function.createDelegate(this, =
this._onMouseOut));
    this._element.observe('click', Function.createDelegate(this, =
this._onClick));
    if (this._tooltip) {
        SfKernel.Util.SetToolTip(this._element, this._tooltip);
    }
}
Thumbnails.RadioButton.prototype =3D {
    _group: null,
    _element: null,
    _isChecked: false,
    _imageInfo: null,
    _tooltip: null,

    get_tooltip: function Thumbnails_RadioButton$get_tooltip() {
        return this._tooltip;
    },
    set_tooltip: function Thumbnails_RadioButton$set_tooltip(value) {
        this._tooltip =3D value;
        return value;
    },

    get_isChecked: function Thumbnails_RadioButton$get_isChecked() {
        return this._isChecked;
    },
    set_isChecked: function Thumbnails_RadioButton$set_isChecked(value) =
{
        this._isChecked =3D value;
        this._updateImage();
        return value;
    },

    _onClick: function Thumbnails_RadioButton$_onClick(sender, args) {
        this._group.selectButton(this);
    },

    _onMouseOver: function Thumbnails_RadioButton$_onMouseOver(sender, =
args) {
        if (this._isChecked) {
            return;
        }
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Hand);
        this._element.setAttribute('src', this._imageInfo.overImage);
    },

    _onMouseOut: function Thumbnails_RadioButton$_onMouseOut(sender, =
args) {
        this._updateImage();
        SfKernel.Util.SetCursor(this._element, =
SfKernel.CursorType.Default);
    },

    _updateImage: function Thumbnails_RadioButton$_updateImage() {
        if (this._isChecked) {
            this._element.setAttribute('src', =
this._imageInfo.checkedImage);
        }
        else {
            this._element.setAttribute('src', =
this._imageInfo.normalImage);
        }
    }
}

Thumbnails.RadioButton.registerClass('Thumbnails.RadioButton');

/////////////////////////////////////////////////////////////////////////=
///////
// Thumbnails.ViewButtonGroup

Thumbnails.ViewButtonGroup =3D function =
Thumbnails_ViewButtonGroup(parentArea) {
    this._parentArea =3D parentArea;
    this._initialize();
}
Thumbnails.ViewButtonGroup.prototype =3D {
    _btnSlideList: null,
    _btnSmallThumbnails: null,
    _btnLargeThumbnails: null,
    _btnChapters: null,
    _parentArea: null,

    _initialize: function Thumbnails_ViewButtonGroup$_initialize() {
        this._btnSlideList =3D new Thumbnails.RadioButton(this, =
$('thumbNailViewButtonSlideList'), =
Thumbnails.$create_RadioImageInfo(LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSlideListOver.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSlideListNormal.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSlideListChecked.gif'), =
Localization.ThumbnailsResource.SlideList);
        this._btnSmallThumbnails =3D new Thumbnails.RadioButton(this, =
$('thumbNailViewButtonSmallThumbnails'), =
Thumbnails.$create_RadioImageInfo(LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSmallThumbOver.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSmallThumbNormal.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnSmallThumbChecked.gif'), =
Localization.ThumbnailsResource.SmallThumbnails);
        this._btnLargeThumbnails =3D new Thumbnails.RadioButton(this, =
$('thumbNailViewButtonLargeThumbnails'), =
Thumbnails.$create_RadioImageInfo(LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnLargeThumbOver.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnLargeThumbNormal.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnLargeThumbChecked.gif'), =
Localization.ThumbnailsResource.LargeThumbnails);
        this._btnSlideList.set_isChecked(false);
        this._btnSmallThumbnails.set_isChecked(false);
        this._btnLargeThumbnails.set_isChecked(true);

        if (Manifest.Chapters.length > 0) {
            this._btnChapters =3D new Thumbnails.RadioButton(this, =
$('thumbNailViewButtonChapters'), =
Thumbnails.$create_RadioImageInfo(LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnChaptersOver.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnChaptersNormal.gif', LayoutOptions.ThemeImageBase + =
'/SlideSorter/btnChaptersChecked.gif'), =
Localization.ThumbnailsResource.Chapters);
            this._btnChapters.set_isChecked(false);
        }
        else {
            $('thumbNailViewButtonChapters').style.display =3D 'none';
            $('thumbNailViewButtonChapters').setAttribute('alt', =
Localization.ThumbnailsResource.Chapters);
        }
        this.initializeCookieSetting();
    },

    initializeCookieSetting: function =
ThumbnailsArea$initializeCookieSetting() {
        var cookieValue =3D this._parentArea._getViewCookie();

        switch (cookieValue) {
            case 0:
                this.activateButton(this._btnSlideList);
                break;
            case 4:
                this.activateButton(this._btnSmallThumbnails);
                break;
            case 5:
                this.activateButton(this._btnLargeThumbnails);
                break;
            case 9:
                this.activateButton(this._btnChapters);
                this._parentArea.showChapters();
                break;
            default:
                this.activateButton(this._btnLargeThumbnails);
                break;
        }
    },

    activateButton: function ThumbnailsArea$activateButton(activeButton) =
{
        if (this._btnSlideList) { =
this._btnSlideList.set_isChecked(false); }
        if (this._btnSmallThumbnails) { =
this._btnSmallThumbnails.set_isChecked(false); }
        if (this._btnLargeThumbnails) { =
this._btnLargeThumbnails.set_isChecked(false); }
        if (this._btnChapters) { this._btnChapters.set_isChecked(false); =
}
        if (activeButton) { activeButton.set_isChecked(true); }
    },

    selectButton: function =
Thumbnails_ViewButtonGroup$selectButton(button) {
        this.activateButton(button);
        if (button =3D=3D this._btnSlideList) {
            this._parentArea.showSlideList();
        }
        else if (button =3D=3D this._btnSmallThumbnails) {
            this._parentArea.showSmallThumbnails();
        }
        else if (button =3D=3D this._btnLargeThumbnails) {
            this._parentArea.showLargeThumbnails();
        }
        else if (button =3D=3D this._btnChapters) {
            this._parentArea.showChapters();
        }
    }
}


Thumbnails.ViewButtonGroup.registerClass('Thumbnails.ViewButtonGroup', =
null, Thumbnails.IRadioButtonGroup);

/// Chapter Point Browser Panel

ChapterPointsPanel =3D function(container, containingWindow, id) {
    this.Container =3D container;
    this.ContainingWindow =3D containingWindow;
    this.ID =3D id;
    this.chaptersContainer =3D null;
    this.elements =3D null;

    this.OnLoad =3D function() {
        this.chaptersContainer =3D $(this.ID);
        this.Initialize();
    }

    this.Initialize =3D function() {
        this.elements =3D new Array(Manifest.Chapters.length);
        for (var i =3D 0; i < Manifest.Chapters.length; ++i) {
            this.AddChapterElement(i + 1);
            this.elements[i] =3D new ChapterPointElement(this, i + 1, =
Manifest.Chapters[i].Time);
            this.elements[i].addEvents();
        }
    }

    this.AddChapterElement =3D function(chapterNumber) {
        var div1 =3D this.createDiv('chapterDiv' + chapterNumber, =
'chapterItem', null);
        this.chaptersContainer.appendChild(div1);
        var div2 =3D this.createDiv('chapterNumberSpan' + chapterNumber, =
'chapterNumber', 'Chapter ' + chapterNumber);
        div1.appendChild(div2);
        var div3 =3D this.createDiv('chapterTimeSpan' + chapterNumber, =
'chapterTime', =
SfKernel.GetDisplayDuration(Manifest.Chapters[chapterNumber - 1].Time));
        div1.appendChild(div3);
        var div4 =3D this.createDiv('chapterTitleSpan' + chapterNumber, =
'chapterTitle', SfKernel.EncodeClean(Manifest.Chapters[chapterNumber - =
1].Text));
        div4.title =3D =
SfKernel.EncodeClean(Manifest.Chapters[chapterNumber - 1].Text);
        div1.appendChild(div4);
    }

    this.createDiv =3D function(id, className, text) {
        var element =3D $(document.createElement('div'));
        element.setAttribute('id', id);
        element.className =3D className;
        if (text) {
            SfKernel.Util.SetText(element, text);
        }
        return element;
    }
}

ChapterPointElement =3D function(parentArea, chapterNumber, timing) {
    this._parentArea =3D parentArea;
    this._chapterNumber =3D chapterNumber;
    this._timing =3D timing;
    this._titleElement =3D $('chapterTitleSpan' + this._chapterNumber);
    this._chapterElement =3D $('chapterDiv' + this._chapterNumber);

    this.addEvents =3D function() {
        this._chapterElement.observe('mouseover', =
Function.createDelegate(this, function(sender, args) {
            this._chapterElement.className =3D 'chapterItemOver';
            this._titleElement.className =3D 'chapterTitleOver';
            SfKernel.Util.SetCursor(this._chapterElement, =
SfKernel.CursorType.Hand);
        }));
        this._chapterElement.observe('mouseout', =
Function.createDelegate(this, function(sender, args) {
            this._chapterElement.className =3D 'chapterItem';
            this._titleElement.className =3D 'chapterTitle';
            SfKernel.Util.SetCursor(this._chapterElement, =
SfKernel.CursorType.Default);
        }));
        this._chapterElement.observe('click', =
Function.createDelegate(this, function(sender, args) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToC=
hapter, this, { Number: this._chapterNumber, Time: this._timing });
        }));
        this._chapterElement.observe('dblclick', =
Function.createDelegate(this, function(sender, args) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToC=
hapter, this, { Number: this._chapterNumber, Time: this._timing });
            mPlayer.btnSlideShowInstance.OnClick();
        }));
    }
}
/////////////////////////////////////////////////////////////////////////=
///////
// SpeakerInfoAnchor

SpeakerInfoAnchor =3D function(card, index) {
    this._card =3D card;
    this._index =3D index;
    this._element =3D $(this._card.ID + 'SpeakerInfoImage' + =
this._index);
    this._element.observe('mouseover', Function.createDelegate(this, =
function(sender, args) {
        this._element.setAttribute('src', this._card.ImageBase + =
'/presenterInfoOver.png');
    }));
    this._element.observe('mouseout', Function.createDelegate(this, =
function(sender, args) {
        this._element.setAttribute('src', this._card.ImageBase + =
'/presenterInfo.png');
    }));
    this._element.observe('mouseover', Function.createDelegate(this, =
function(sender, args) {
        $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).style.display =3D 'block';
    }));
    $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).observe('mouseout', Function.createDelegate(this, =
function(sender, args) {
        $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).style.display =3D 'none';
    }));
    $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).observe('mouseover', Function.createDelegate(this, =
function(sender, args) {
        $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).style.display =3D 'block';
    }));
    $(this._card.ID + 'SpeakerInfoPopupInner' + =
this._index).observe('mouseout', Function.createDelegate(this, =
function(sender, args) {
        $(this._card.ID + 'SpeakerInfoPopup' + =
this._index).style.display =3D 'block';
    }));
}

SpeakerInfoAnchor.prototype =3D {
    _card: null,
    _index: 0,
    _element: null
}

/////////////////////////////////////////////////////////////////////////=
///////
// PresentationCardPanel

PresentationCardPanel =3D function(container, containingWindow, id) {
    this.Container =3D container;
	this.ContainingWindow =3D containingWindow;
	this.ID =3D id;
    this._scrollDiv =3D $(this.ID + 'ScrollDiv');
    this._innerPadding =3D $(this.ID + 'InnerPadding');
    this._cardMore =3D $('PresentationCardAreaMore');
    this._presentersTextDiv =3D $(this.ID + 'PresentersText');
   =20
}
PresentationCardPanel.prototype=3D new Panel();
PresentationCardPanel.prototype.constructor=3DPresentationCardPanel;
PresentationCardPanel.prototype.baseClass=3DPanel.prototype.constructor;
PresentationCardPanel.prototype._scrollDiv=3Dnull;
PresentationCardPanel.prototype._innerPadding=3Dnull;
PresentationCardPanel.prototype._cardMore=3Dnull;
PresentationCardPanel.prototype._presentersTextDiv=3Dnull;
PresentationCardPanel.prototype._currentDimensions=3Dnull;
PresentationCardPanel.prototype._mouseoverDimensions=3Dnull;
PresentationCardPanel.prototype._isScrolling=3Dfalse;
PresentationCardPanel.prototype._zIndexPrevious=3D0;

PresentationCardPanel.prototype.create_BoundsInt =3D function() {=20
        return {};=20
    }
PresentationCardPanel.prototype.get_scrollDiv=3Dfunction() {
        return this._scrollDiv;
    }
PresentationCardPanel.prototype.set_scrollDiv=3Dfunction(value) {
        this._scrollDiv =3D value;
        return value;
    }

PresentationCardPanel.prototype.get_currentDimensions=3Dfunction() {
        return this._currentDimensions;
    }
PresentationCardPanel.prototype.set_currentDimensions=3Dfunction(value) =
{
        this._currentDimensions =3D value;
        return value;
    }

PresentationCardPanel.prototype.get_mouseoverDimensions=3Dfunction() {
        return this._mouseoverDimensions;
    }
PresentationCardPanel.prototype.set_mouseoverDimensions=3Dfunction(value)=
 {
        this._mouseoverDimensions =3D value;
        return value;
    }   =20
         =20
PresentationCardPanel.prototype.OnLoad=3Dfunction()=20
{       =20
        this._setPresentationCardTextItem($(this.ID + 'Title'), =
Localization.PresentationCardResource.DefaultTitle);

        if(!LayoutOptions.HideDateTime)
        {  =20
            this._setPresentationCardTextItem($(this.ID + =
'AirDateText'), "01/01/2000");      =20
            this._setPresentationCardTextItem($(this.ID + =
'AirTimeText'), "12:00");
        }       =20
        this._setPresentationCardTextItem($(this.ID + =
'DescriptionText'), =
Localization.PresentationCardResource.DefaultDescription); =20
        this._setPresentationCardTextItem($(this.ID + 'DurationLabel'), =
Localization.PresentationCardResource.Duration);
        this._setPresentationCardTextItem($(this.ID + 'DurationText'), =
"00:00:00");
        this._setPresentationCardTextItem($(this.ID + 'More'), =
Localization.PresentationCardResource.More);
        this._initializeZooming();
}

PresentationCardPanel.prototype.OnDataLoad=3Dfunction()=20
{
        this._initializeItems();      =20
}
 =20
PresentationCardPanel.prototype._initializeItems=3Dfunction()=20
    {
        this._setPresentationCardTextItem($(this.ID + 'Title'), =
Manifest.Title);
       =20
        if(!LayoutOptions.HideDateTime)
        {
            this._setPresentationCardTextItem($(this.ID + =
'AirDateText'), Manifest.AirDate);
            this._setPresentationCardTextItem($(this.ID + =
'AirTimeText'), Manifest.AirTime);
        }
       =20
        if(Manifest.Duration < 1)
        {
            this._setPresentationCardTextItem($(this.ID + =
'DurationLabel'), '');
            this._setPresentationCardTextItem($(this.ID + =
'DurationText'), '');         =20
        }
        else
        {
            this._setPresentationCardTextItem($(this.ID + =
'DurationText'), SfKernel.GetDisplayDuration(Manifest.Duration, true));  =
     =20
        }

       =20
        if(Manifest.Description =3D=3D null || =
Manifest.Description.length < 1)
        {
            this._setPresentationCardTextItem($(this.ID + =
'DescriptionText'), ''); =20
        }
        else
        {
            this._setPresentationCardTextItem($(this.ID + =
'DescriptionText'), Manifest.Description); =20
        }
       =20
        this._initializeSpeakers();
    }
   =20
PresentationCardPanel.prototype._setPresentationCardTextItem=3Dfunction(e=
lement, text)=20
    {
        if(text !=3D null)
        {
            element.innerHTML=3DSfKernel.EncodeHTML(text);
        }
        else
        {
            element.innerHTML=3D"";
        }
    }
   =20
PresentationCardPanel.prototype._initializeZooming=3Dfunction() {
        this._currentDimensions =3D this.create_BoundsInt();
        this._currentDimensions.Top =3D =
window.parseInt(this.GetDiv().style.top);
        this._currentDimensions.Left =3D =
window.parseInt(this.GetDiv().style.left);
        this._currentDimensions.Width =3D =
window.parseInt(this.GetDiv().style.width);
        this._currentDimensions.Height =3D =
window.parseInt(this.GetDiv().style.height);
        this._mouseoverDimensions =3D this.create_BoundsInt();
        this._mouseoverDimensions.Width =3D =
window.parseInt(this.Mouseover_Width);
        this._mouseoverDimensions.Height =3D =
window.parseInt(this.Mouseover_Height);
        this._cardMore.observe('click', Function.createDelegate(this, =
this._toggleScrolling));
        this._cardMore.observe('mouseover', =
Function.createDelegate(this, this._moreMouseover));
        this._cardMore.observe('mouseout', Function.createDelegate(this, =
this._moreMouseout));
        var strZIndex =3D this.GetDiv();
       =20
        strZIndex=3DstrZIndex.style.zIndex;
        if (!strZIndex) {
            this._zIndexPrevious =3D 0;
        }
        else {
            this._zIndexPrevious =3D window.parseInt(strZIndex);
        }       =20
    }
   =20
    PresentationCardPanel.prototype._moreMouseover=3Dfunction(sender, =
args) {
        // more button mouseover
        // change css class to mouseover version
    }
   =20
    PresentationCardPanel.prototype._moreMouseout=3Dfunction(sender, =
args) {
        // more button mouseout
        // change css class to normal version
    }
   =20
    PresentationCardPanel.prototype._enableScrolling=3Dfunction() {
        this._scrollDiv.style.overflowY =3D 'scroll';
        this._scrollDiv.style.overflowX =3D 'hidden';
    }
   =20
    PresentationCardPanel.prototype._disableScrolling=3Dfunction() {
        this._scrollDiv.style.overflow =3D 'hidden';
        this._scrollDiv.style.overflowY =3D 'hidden';
        this._scrollDiv.style.overflowX =3D 'hidden';
    }
   =20
    PresentationCardPanel.prototype._toggleScrolling=3Dfunction(sender, =
args) {
        if (this._scrollDiv.style.overflow =3D=3D 'scroll' || =
this._scrollDiv.style.overflowY =3D=3D 'scroll' ) {
            this._disableScrolling();
        }
        else {
            this._enableScrolling();
        }
    }

    PresentationCardPanel.prototype._initializeSpeakerPopups =3D =
function() {

        var len =3D Manifest.Presenters.length;
        for (var i =3D 0; i < len; ++i) {
            if (Manifest.Presenters[i].ImageUrl.length > 0) {
                new SpeakerInfoAnchor(this, i + 1);
            }
        }

        if (LayoutOptions) {
            var isCompact =3D (LayoutOptions.VideoWidth =3D=3D '400' && =
LayoutOptions.SlideWidth =3D=3D '360');
            if (LayoutOptions.DefaultPosition =3D=3D 3 || =
LayoutOptions.DefaultPosition =3D=3D 4 || isCompact) {
                var presenterPopupElements =3D =
$$('.speakerInfoPopupContainer');
                var presenterPopupInnerElements =3D =
$$('.speakerInfoPopup');
                var presenterPopupArrowElements =3D =
$$('.speakerInfoPopupArrow');
                for (var j =3D 0; j < presenterPopupElements.length; =
j++) {
                    $(presenterPopupElements[j]).className =3D =
'speakerInfoPopupContainerDown';
                }
                for (var k =3D 0; k < =
presenterPopupInnerElements.length; k++) {
                    $(presenterPopupInnerElements[k]).className =3D =
'speakerInfoPopupDown';
                }
                for (var l =3D 0; l < =
presenterPopupArrowElements.length; l++) {
                    $(presenterPopupArrowElements[l]).className =3D =
'speakerInfoPopupArrowDown';
                }
            }
        }

    }
   =20
PresentationCardPanel.prototype._initializeSpeakers=3Dfunction() {
        if(Manifest.Presenters.length < 1)
        {
            return;
        }
       =20
        this._addAllSpeakerNamesEtc();
        this._initializeSpeakerPopups();
    }

    PresentationCardPanel.prototype._addAllSpeakerNamesEtc =3D =
function() {
        var len =3D Manifest.Presenters.length;
        if (!len) {
            return;
        }
        for (var i =3D 1; i < len; ++i) {
            this._addSpeakerNameEtc(i, Manifest.Presenters[i - 1]);
        }
        this._addSpeakerNameEtc(len, Manifest.Presenters[len - 1]);
    }

    PresentationCardPanel.prototype._addSpeakerNameEtc =3D =
function(index, presenter) {
        var speakerElement =3D $(document.createElement('div'));
        speakerElement.setAttribute('id', this.ID + 'SpeakerInfoElement' =
+ index);
        if (presenter.ImageUrl) {
            var imageElement =3D $(document.createElement('img'));
            imageElement.setAttribute('id', this.ID + 'SpeakerInfoImage' =
+ index);
            imageElement.setAttribute('src', this.ImageBase + =
'/presenterInfo.png');
            imageElement.className =3D 'cardPresenterInfoImage';
            this._addSpeakerInfoPopup(speakerElement, index, presenter);
            speakerElement.appendChild(imageElement);
        }

        if (presenter.BioUrl.length > 0) {
            var a =3D $(document.createElement('a'));
            speakerElement.appendChild(a);
            a.setAttribute('href', presenter.BioUrl);
            a.setAttribute('target', '_blank');
            a.appendChild(document.createTextNode(presenter.Name));
        }
        else {
            =
speakerElement.appendChild(document.createTextNode(presenter.Name));
        }
        this._presentersTextDiv.appendChild(speakerElement);
    }
   =20
    PresentationCardPanel.prototype._addSpeakerInfoPopups=3Dfunction() {
        var len =3D Manifest.Presenters.length;
        for (var i =3D 0; i < len; ++i) {
            this._addSpeakerInfoPopup(i + 1, Manifest.Presenters[i]);
        }
    }

    PresentationCardPanel.prototype._addSpeakerInfoPopup =3D =
function(speakerElement, index, presenter) {
    var element =3D $(document.createElement('div'));
        speakerElement.appendChild(element);
        element.setAttribute('id', this.ID + 'SpeakerInfoPopup' + =
index);
        element.setStyle({ display: 'none', position: 'absolute' });
        element.className =3D 'speakerInfoPopupContainer';

        var arrowElement =3D $(document.createElement('div'));
        arrowElement.setAttribute('id', this.ID + =
'SpeakerInfoPopupArrow' + index);
        arrowElement.className =3D 'speakerInfoPopupArrow';
        element.appendChild(arrowElement);

        var innerElement =3D $(document.createElement('div'));
        innerElement.setAttribute('id', this.ID + =
'SpeakerInfoPopupInner' + index);
        innerElement.className =3D 'speakerInfoPopup';
        element.appendChild(innerElement);

        var imageContainer =3D $(document.createElement('div'));
        innerElement.appendChild(imageContainer);
        imageContainer.className =3D 'speakerInfoPopupImageContainer';

        if (presenter.ImageUrl.length > 0) {
            var imageElement =3D $(document.createElement('img'));
            imageElement.setAttribute('src', =
this._getSpeakerImageSrc(presenter));
            imageElement.className =3D 'speakerInfoPopupImage';
            imageElement.style.display =3D 'block';

            if (presenter.BioUrl.length > 0) {
                var a =3D $(document.createElement('a'));
                this._presentersTextDiv.appendChild(a);
                a.setAttribute('href', presenter.BioUrl);
                a.setAttribute('target', '_blank');
                a.appendChild(imageElement);
                imageContainer.appendChild(a);
            }
            else {
                imageContainer.appendChild(imageElement);
            }
        }
    }
   =20
PresentationCardPanel.prototype._getSpeakerImageSrc=3Dfunction(presenter)=
 {
        return presenter.ImageUrl;
    }
   =20
PresentationCardPanel.prototype.OnUnLoad=3Dfunction() {
    }



MediasitePlayer =3D function() { }

MediasitePlayer.prototype =3D {
    _type: 0,
    _element: null,

    CurrentSlideNumber: -1,
    CurrentFullSizeImage: null,
    DynamicAdd: false,
    PresentationEnded: false,
    IsPreview: false,
    OpenReported: false,
    ShowSlides: true,
    ImageFileType: '.png',
    LegacyThemeName: 'Mediasite for IE6',

    DefaultPopupWindowWidth: 1024,
    DefaultPopupWindowHeight: 768,

    OnBodyLoad: function() {
        if (!this.IsPreview) {
            this.LoadMediaPlayer();
        }
        else {
            $('PlayerSpeedControl').style.display =3D 'none';
            $('btnFullScreen').style.display =3D 'none';
        }
        $('PlayerMask').style.display =3D 'none';
    },

    OnLoad: function() {
        this.PlayerDetect =3D new SfKernel.PlayerDetect();
        loadingMask('loadingImage', 10, 10);

        var playerMode =3D SfKernel.GetQueryStringValue("mode");
        if (playerMode !=3D null && playerMode.toLowerCase() =3D=3D =
"skinpreview") {
            this.IsPreview =3D true;
        }
        if (LayoutOptions.SlideHeight =3D=3D 0 || =
LayoutOptions.SlideWidth =3D=3D 0) {
            this.ShowSlides =3D false;
        }

        LayoutOptions.OnLoad();

        this.LoadThemeStylesheet();
        this.BrowserHacks();
        this.ResizeWindow();


        var BannerLoaderInstance =3D new LoadBanners();

        BannerLoaderInstance.Banner =3D new Array('AdBanner', =
'TitleBanner');
        if (LayoutOptions.Images["VendorLogo"]) {
            if (!$('VendorLogo')) {
                var contentElement =3D $('MediasitePlayerForm');
                var vendorLogoContainer =3D =
document.createElement('div');
                vendorLogoContainer.setAttribute('id', 'VendorLogo');
                vendorLogoContainer.setAttribute('height', =
LayoutOptions.Images["VendorLogo"].Height);
                vendorLogoContainer.setAttribute('width', =
LayoutOptions.Images["VendorLogo"].Width);
                contentElement.appendChild(vendorLogoContainer);
            }
            BannerLoaderInstance.Banner =3D new Array('AdBanner', =
'TitleBanner', 'VendorLogo');
        }
        BannerLoaderInstance.OnLoad();

        var PlayerNotStartedImageInstance =3D new =
SkinImage('PlayerNotStarted');
        PlayerNotStartedImageInstance.ImageSRC =3D =
LayoutOptions.Images['PlayerNotStarted'].ImageFilename;
        PlayerNotStartedImageInstance.ImageHref =3D =
LayoutOptions.Images['PlayerNotStarted'].ImageUrl;
        PlayerNotStartedImageInstance.ImageHeight =3D =
LayoutOptions.Images['PlayerNotStarted'].Height;
        PlayerNotStartedImageInstance.ImageWidth =3D =
LayoutOptions.Images['PlayerNotStarted'].Width;
        PlayerNotStartedImageInstance.Alt =3D =
Localization.PlayerLayoutResource.NotStarted;
        PlayerNotStartedImageInstance.OnLoad();

        if (LayoutOptions.Images['PlayerAudioOnly']) {
            var AudioOnlyImageInstance =3D new =
SkinImage('PlayerAudioOnly');
            AudioOnlyImageInstance.ImageSRC =3D =
LayoutOptions.Images['PlayerAudioOnly'].ImageFilename;
            AudioOnlyImageInstance.ImageHref =3D =
LayoutOptions.Images['PlayerAudioOnly'].ImageUrl;
            AudioOnlyImageInstance.ImageHeight =3D =
LayoutOptions.Images['PlayerAudioOnly'].Height;
            AudioOnlyImageInstance.ImageWidth =3D =
LayoutOptions.Images['PlayerAudioOnly'].Width;
            AudioOnlyImageInstance.Alt =3D =
Localization.PlayerLayoutResource.AudioOnly;
            AudioOnlyImageInstance.OnLoad();
        }

        this.EventManager =3D new EventManager();
        this.OptionsManager =3D new OptionsManager();

        this.PopupWindows =3D new Object();
        this.PopupWindows.FullSize =3D null;
        this.PopupWindows.PreviewSlide =3D null;
        this.PopupWindows.Polls =3D null;

        this.presentationCard =3D new =
PresentationCardPanel("PresentationCardPanelInstance", window, =
"PresentationCardArea");
        this.presentationCard.ImageBase =3D LayoutOptions.ThemeImageBase =
+ '/PresentationCard';
        this.presentationCard.ToolTipExpand =3D =
Localization.Common.Expand;
        this.presentationCard.ToolTipCollapse =3D =
Localization.Common.Collapse;
        this.presentationCard.AllowZooming =3D true;
        this.presentationCard.Mouseover_Width =3D "50px";
        this.presentationCard.Mouseover_Height =3D "65px";
        this.presentationCard.OnLoad();

        if ($('btnAskButton')) {
            this.btnAskInstance =3D new AskButtonPanel();
            this.btnAskInstance.button =3D new =
SfUI.Button('btnAskButton');
            this.btnAskInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnAskNormal' + =
this.ImageFileType);
            this.btnAskInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnAskOver' + =
this.ImageFileType);
            this.btnAskInstance.button.SetPressedImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnAskPressed' + =
this.ImageFileType);
            this.btnAskInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnAskDisabled' + =
this.ImageFileType);
            this.btnAskInstance.button.Enable(false);
            this.btnAskInstance.OnLoad();
        }
        if ($('btnLinks')) {
            this.btnLinksInstance =3D new LinksButtonPanel();
            this.btnLinksInstance.button =3D new =
SfUI.Button('btnLinks');
            this.btnLinksInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnLinksNormal' + =
this.ImageFileType);
            this.btnLinksInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnLinksOver' + =
this.ImageFileType);
            this.btnLinksInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnLinksDisabled' + =
this.ImageFileType);
            this.btnLinksInstance.button.Enable(false);
            this.btnLinksInstance.OnLoad();
        }
        if ($('btnPoll')) {
            this.btnPollInstance =3D new PollButtonPanel();
            this.btnPollInstance.button =3D new SfUI.Button('btnPoll');
            this.btnPollInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPollResultsNormal' + =
this.ImageFileType);
            this.btnPollInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPollResultsOver' + =
this.ImageFileType);
            this.btnPollInstance.button.SetPressedImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPollResultsPressed' + =
this.ImageFileType);
            this.btnPollInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPollResultsDisabled' + =
this.ImageFileType);
            this.btnPollInstance.button.Enable(false);
            this.btnPollInstance.OnLoad();
        }
        if ($('btnEmail')) {
            this.btnEmailInstance =3D new EmailButtonArea();
            this.btnEmailInstance.button =3D new =
SfUI.Button('btnEmail');
            this.btnEmailInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnEmailNormal' + =
this.ImageFileType);
            this.btnEmailInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnEmailOver' + =
this.ImageFileType);
            this.btnEmailInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnEmailDisabled' + =
this.ImageFileType);
            this.btnEmailInstance.button.Enable(false);
            this.btnEmailInstance.OnLoad();
        }
        if ($('btnChapters')) {
            if (LayoutOptions.SlideWidth =3D=3D 0 && =
LayoutOptions.SlideHeight =3D=3D 0) {
                this.btnChaptersInstance =3D new ChaptersButtonArea();
                this.btnChaptersInstance.button =3D new =
SfUI.Button('btnChapters');
                this.btnChaptersInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnChapNormal' + =
this.ImageFileType);
                this.btnChaptersInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnChapOver' + =
this.ImageFileType);
                this.btnChaptersInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnChapDisabled' + =
this.ImageFileType);
                this.btnChaptersInstance.button.Enable(false);
                this.btnChaptersInstance.OnLoad();
            }
            else {
                $('btnChaptersImg').setAttribute('alt', =
Localization.ThumbnailsResource.Chapters);
            }
        }
        if ($('btnHelp')) {
            this.btnHelpInstance =3D new HelpButtonArea();
            this.btnHelpInstance.button =3D new SfUI.Button('btnHelp');
            this.btnHelpInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnHelpNormal' + =
this.ImageFileType);
            this.btnHelpInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnHelpOver' + =
this.ImageFileType);
            this.btnHelpInstance.button.SetPressedImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnHelpPressed' + =
this.ImageFileType);
            this.btnHelpInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnHelpDisabled' + =
this.ImageFileType);
            this.btnHelpInstance.button.Enable(false);
            this.btnHelpInstance.OnLoad();
        }
        if ($('SlideTicker') && this.ShowSlides) {
            this.btnPreviousSlideInstance =3D new =
PreviousSlideButtonArea('btnPreviousSlideInstance');
            this.btnPreviousSlideInstance.button =3D new =
SfUI.Button('btnPreviousSlide');
            this.btnPreviousSlideInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPrevNormal' + =
this.ImageFileType);
            this.btnPreviousSlideInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPrevOver' + =
this.ImageFileType);
            this.btnPreviousSlideInstance.button.SetPressedImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPrevPressed' + =
this.ImageFileType);
            this.btnPreviousSlideInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnPrevDisabled' + =
this.ImageFileType);
            this.btnPreviousSlideInstance.OnLoad();

            this.btnNextSlideInstance =3D new =
NextSlideButtonArea('btnNextSlideInstance');
            this.btnNextSlideInstance.button =3D new =
SfUI.Button('btnNextSlide');
            this.btnNextSlideInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnNextNormal' + =
this.ImageFileType);
            this.btnNextSlideInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnNextOver' + =
this.ImageFileType);
            this.btnNextSlideInstance.button.SetPressedImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnNextPressed' + =
this.ImageFileType);
            this.btnNextSlideInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnNextDisabled' + =
this.ImageFileType);
            this.btnNextSlideInstance.OnLoad();

            this.SlideNumberPanelInstance =3D new =
SlideNumberPanel("SlideNumberPanelInstance", window, "SlideNumberArea");
            this.SlideNumberPanelInstance.SlideText =3D =
Localization.Common.Slide;
            this.SlideNumberPanelInstance.OfText =3D =
Localization.Common.Of;
            this.SlideNumberPanelInstance.DefaultText =3D ' ';
        }

        if ($('SlideTabs')) {
            this.btnSlideShowInstance =3D new =
SlideShowButtonArea('btnSlideShow');
            this.btnSlideShowInstance.button =3D new =
SfUI.Button('btnSlideShow');
            this.btnSlideShowInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideShowNormal' + =
this.ImageFileType);
            this.btnSlideShowInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideShowOver' + =
this.ImageFileType);
            =
this.btnSlideShowInstance.button.SetButtonType(SfUI.ButtonType.Check);
            this.btnSlideShowInstance.button.SetChecked(true);
            this.btnSlideShowInstance.button.SetNormalImage(1, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideShowCheckedNormal' + =
this.ImageFileType);
            this.btnSlideShowInstance.button.SetOverImage(1, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideShowCheckedOver' + =
this.ImageFileType);
            this.btnSlideShowInstance.Enabled =3D true;
            this.btnSlideShowInstance.TooltipId =3D =
Localization.Common.SlideShow;
            this.btnSlideShowInstance.ControlArea =3D =
$('CurrentSlideArea');
            this.btnSlideShowInstance.OnLoad();

            this.btnSlideListInstance =3D new =
SlideShowButtonArea('btnSlideList');
            this.btnSlideListInstance.button =3D new =
SfUI.Button('btnSlideList');
            this.btnSlideListInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideNavNormal' + =
this.ImageFileType);
            this.btnSlideListInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideNavOver' + =
this.ImageFileType);
            =
this.btnSlideListInstance.button.SetButtonType(SfUI.ButtonType.Check);
            this.btnSlideListInstance.button.SetChecked(false);
            this.btnSlideListInstance.button.SetNormalImage(1, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideNavCheckedNormal' + =
this.ImageFileType);
            this.btnSlideListInstance.button.SetOverImage(1, =
LayoutOptions.ThemeImageBase + '/CommandBar/btnSlideNavCheckedOver' + =
this.ImageFileType);
            this.btnSlideListInstance.Enabled =3D true;
            this.btnSlideListInstance.TooltipId =3D =
Localization.Common.SlideList;
            this.btnSlideListInstance.ControlArea =3D =
$('CurrentSlideArea');
            this.btnSlideListInstance.OnLoad();
        }

        if ($('StatusBar')) {
            this.PlayerStatusPanelInstance =3D new =
PlayerStatusPanel("PlayerStatusPanelInstance", window, =
"PlayerStatusArea");
            this.PlayerStatusPanelInstance.OnLoad();

            this.PlayerPositionPanelInstance =3D new =
PlayerPositionPanel("PlayerPositionPanelInstance", window, =
"PlayerPositionArea");
            this.PlayerPositionPanelInstance.OnLoad();
        }

        if ($('PlayerControls')) {
            this.btnPlayPauseInstance =3D new =
PlayPauseButtonArea("btnPlayPauseInstance", window, "btnPlayPause");
            this.btnPlayPauseInstance.button =3D new =
PlayPauseButton("btnPlayPause", "mPlayer.btnPlayPauseInstance");
            this.btnPlayPauseInstance.button.PlayImageDetails.Over =3D =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPlayOver' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.PlayImageDetails.Normal =3D =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPlayNormal' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.PlayImageDetails.Disabled =
=3D LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPlayDisabled' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.PauseImageDetails.Over =3D =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPauseOver' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.PauseImageDetails.Normal =
=3D LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPauseNormal' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.PauseImageDetails.Disabled =
=3D LayoutOptions.ThemeImageBase + '/Player/Buttons/btnPauseDisabled' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.StopImageDetails.Over =3D =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnStopOver' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.StopImageDetails.Normal =3D =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnStopNormal' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.StopImageDetails.Disabled =
=3D LayoutOptions.ThemeImageBase + '/Player/Buttons/btnStopDisabled' + =
this.ImageFileType;
            this.btnPlayPauseInstance.button.ToolTipPlay =3D =
Localization.Buttons.Play;
            this.btnPlayPauseInstance.button.ToolTipPause =3D =
Localization.Buttons.Pause;
            this.btnPlayPauseInstance.button.ToolTipStop =3D =
Localization.Buttons.Stop;
            this.btnPlayPauseInstance.button.IsEnabled =3D false;
            this.btnPlayPauseInstance.OnLoad();

            this.btnSkipbackInstance =3D new =
SkipbackButtonArea("btnSkipbackInstance", window, "btnSkipback");
            this.btnSkipbackInstance.button =3D new =
SfUI.Button('btnSkipback');
            this.btnSkipbackInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnSkipbackNormal' + =
this.ImageFileType);
            this.btnSkipbackInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnSkipbackOver' + =
this.ImageFileType);
            this.btnSkipbackInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnSkipbackDisabled' + =
this.ImageFileType);
            this.btnSkipbackInstance.button.Enable(false);
            this.btnSkipbackInstance.OnLoad();

            this.btnMuteInstance =3D new =
MuteButtonArea("btnMuteInstance", window, "btnMute");
            this.btnMuteInstance.button =3D new SfUI.Button('btnMute');
            this.btnMuteInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Volume/btnMuteNormal' + =
this.ImageFileType);
            this.btnMuteInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Volume/btnMuteOver' + =
this.ImageFileType);
            this.btnMuteInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Volume/btnMuteDisabled' + =
this.ImageFileType);
            =
this.btnMuteInstance.button.SetButtonType(SfUI.ButtonType.Check);
            this.btnMuteInstance.button.SetNormalImage(1, =
LayoutOptions.ThemeImageBase + '/Player/Volume/btnMuteCheckedNormal' + =
this.ImageFileType);
            this.btnMuteInstance.button.SetOverImage(1, =
LayoutOptions.ThemeImageBase + '/Player/Volume/btnMuteCheckedOver' + =
this.ImageFileType);
            this.btnMuteInstance.button.Enable(false);
            this.btnMuteInstance.OnLoad();

            this.btnFullScreenInstance =3D new =
FullScreenButtonArea("btnFullScreenInstance", window, "btnFullScreen");
            this.btnFullScreenInstance.button =3D new =
SfUI.Button('btnFullScreen');
            this.btnFullScreenInstance.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnFullScreenNormal' + =
this.ImageFileType);
            this.btnFullScreenInstance.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnFullScreenOver' + =
this.ImageFileType);
            this.btnFullScreenInstance.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Buttons/btnFullScreenDisabled' + =
this.ImageFileType);
            this.btnFullScreenInstance.button.Enable(false);
            this.btnFullScreenInstance.OnLoad();
        }

        if ($('CurrentSlideArea') && this.ShowSlides) {
            this.CurrentSlidePanelInstance =3D new =
CurrentSlidePanel("mPlayer.CurrentSlidePanelInstance", window, =
"CurrentSlideArea");
            this.CurrentSlidePanelInstance.ViewportWidth =3D =
Math.floor(LayoutOptions.SlideWidth / 3);
            this.CurrentSlidePanelInstance.ViewportHeight =3D =
Math.floor(LayoutOptions.SlideHeight / 3);
            this.CurrentSlidePanelInstance.OnLoad();
        }

        if (LayoutOptions.SlideWidth =3D=3D 0 && =
LayoutOptions.SlideHeight =3D=3D 0) {
            if ($('btnChapters')) { $('btnChapters').style.display =3D =
'block'; }
            this.CreateChapterDialog();
        }

        if ($('LiveIndicatorAreaImg')) {
            $('LiveIndicatorAreaImg').setAttribute('title', =
Localization.LiveIndicatorResource.ReplayTooltip);
            $('LiveIndicatorAreaImg').setAttribute('alt', =
Localization.LiveIndicatorResource.ReplayTooltip);
        }

        ChangePosition.OnLoad();
        $('btnCC').style.display =3D 'none';

        if (!this.IsPreview) {
            this.OnDataLoad();
        }
    },

    OnDataLoad: function() {
        Manifest.OnLoad();

        if (this.btnChaptersInstance) {
            this.btnChaptersInstance.OnDataLoad();

            this.ChaptersPanel =3D new =
ChaptersPanel("mPlayer.ChaptersPanel", window, =
"ChapterPointsPanelDialog");
            this.ChaptersPanel.ID =3D "ChapterPointsPanelDialog";
            this.ChaptersPanel.OnLoad();
        }

        if (Manifest.CaptionsFile.length > 0) {
            document.writeln('<script src=3D"' + Manifest.CaptionsFile + =
'" type=3D"text/javascript"></script>');
        }

        $('ApplicationVersionArea').title =3D 'Mediasite ' + =
Manifest.Version;

        if (this.presentationCard) {
            this.presentationCard.OnDataLoad();
        }

        if (this.btnAskInstance) {
            this.btnAskInstance.OnDataLoad();
        }
        if (this.btnPollInstance) {
            this.btnPollInstance.OnDataLoad();
        }
        if (this.btnEmailInstance) {
            this.btnEmailInstance.OnDataLoad();
        }
        if (this.btnLinksInstance) {
            this.btnLinksInstance.OnDataLoad();

            this.LinksPanel =3D new LinksPanel("mPlayer.LinksPanel", =
window, "LinksPanel");
            this.LinksPanel.ID =3D "LinksPanel";
            this.LinksPanel.OnLoad();
        }

        if ($('SlideTabs')) {
            this.btnSlideShowInstance.OnDataLoad();
            this.btnSlideListInstance.OnDataLoad();
        }

        if ($('SlideTicker') && this.ShowSlides) {
            this.btnPreviousSlideInstance.OnDataLoad();
            this.btnNextSlideInstance.OnDataLoad();

            this.SlideNumberPanelInstance.OnDataLoad();
        }

        if ($('CurrentSlideArea') && this.ShowSlides) {
            this.CurrentSlidePanelInstance.OnDataLoad();

            this.ThumbnailsPanelInstance =3D new =
ThumbnailsPanel("mPlayer.ThumbnailsPanelInstance", window, =
"ThumbNailsArea");
            this.ThumbnailsPanelInstance.OnLoad();

            this.ChapterPointsPanelInstance =3D new =
ChapterPointsPanel("mPlayer.ChapterPointsPanelInstance", window, =
"ChapterPointsArea");
            this.ChapterPointsPanelInstance.OnLoad();
        }

        if ($('PlayerControls')) {
            this.btnPlayPauseInstance.OnDataLoad();
            this.btnSkipbackInstance.OnDataLoad();
            this.btnMuteInstance.OnDataLoad();
            this.btnFullScreenInstance.OnDataLoad();
            this.btnHelpInstance.OnDataLoad();

            this.PlayerSliderInstance =3D new =
SliderArea("mPlayer.PlayerSliderInstance", window, "PlayerSlider");
            this.PlayerSliderInstance.Orientation =3D =
SfUI.SfSlider.Orientation.Horizontal;
            this.PlayerSliderInstance.SliderBackgroundImage =3D =
LayoutOptions.ThemeImageBase + '/Player/slider_bkg' + =
this.ImageFileType;
            this.PlayerSliderInstance.ThumbImage =3D =
LayoutOptions.ThemeImageBase + '/Player/thumb' + this.ImageFileType;
            this.PlayerSliderInstance.ThumbOverImage =3D =
LayoutOptions.ThemeImageBase + '/Player/thumbOver' + this.ImageFileType;

            this.VolumeSliderInstance =3D new =
VolumeSliderArea("mPlayer.VolumeSliderInstance", window, =
"VolumeSlider");
            this.VolumeSliderInstance.Orientation =3D =
SfUI.SfSlider.Orientation.Horizontal;
            this.VolumeSliderInstance.SliderBackgroundImage =3D =
LayoutOptions.ThemeImageBase + '/Player/Volume/slider_bkg' + =
this.ImageFileType;
            this.VolumeSliderInstance.ThumbImage =3D =
LayoutOptions.ThemeImageBase + '/Player/Volume/thumb' + =
this.ImageFileType;
            this.VolumeSliderInstance.ThumbOverImage =3D =
LayoutOptions.ThemeImageBase + '/Player/Volume/thumbOver' + =
this.ImageFileType;
        }

        if ($('LanguageSelectionArea')) {
            this.LanguageSelectionAreaInstance =3D new =
LanguageDropDownArea("mPlayer.LanguageSelectionAreaInstance", window, =
"LanguageSelectionArea");
            this.LanguageSelectionAreaInstance.OnLoad();
        }

        if ($('CaptioningContainer')) {
            this.SamiDropDownPanelInstance =3D new =
SamiDropDownPanel("mPlayer.SamiDropDownPanelInstance", window, =
"Captioning");

            this.SamiDropDownPanelInstance.ToggleButton =3D new =
CCButtonArea("btnCCInstance", window, "btnCC");
            this.SamiDropDownPanelInstance.ToggleButton.button =3D new =
SfUI.Button('btnCC');
            =
this.SamiDropDownPanelInstance.ToggleButton.button.SetNormalImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Captioning/btnCCNormal' + =
this.ImageFileType);
            =
this.SamiDropDownPanelInstance.ToggleButton.button.SetOverImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Captioning/btnCCOver' + =
this.ImageFileType);
            =
this.SamiDropDownPanelInstance.ToggleButton.button.SetDisabledImage(0, =
LayoutOptions.ThemeImageBase + '/Player/Captioning/btnCCDisabled' + =
this.ImageFileType);
            =
this.SamiDropDownPanelInstance.ToggleButton.button.SetTooltip(Localizatio=
n.PlayerLayoutResource.ShowCaptioning);
            =
this.SamiDropDownPanelInstance.ToggleButton.button.Enable(true);
            this.SamiDropDownPanelInstance.ToggleButton.OnLoad();

            this.SamiDropDownPanelInstance.OnLoad();
        }
        else if ($('btnCC')) {
            $('btnCC').style.display =3D 'none';
        }


        window.onbeforeunload =3D this.OnBeforeUnload;

        document.onkeyup =3D this.OnKeyUp;
        document.onkeydown =3D this.OnKeyDown;
    },

    OnBeforeUnload: function() {
        if (mPlayer.OpenReported) {
            mPlayer.ReportViewerPageClosed();
        }

        if (mPlayer.PopupWindows.FullSize) {
            mPlayer.PopupWindows.FullSize.close();
        }

        if (mPlayer.PopupWindows.PreviewSlide) {
            mPlayer.PopupWindows.PreviewSlide.close();
        }

        if (mPlayer.PopupWindows.Polls) {
            mPlayer.PopupWindows.Polls.close();
        }
    },

    LoadMediaPlayer: function() {
        if (this.PlayerDetect.GetPlayerType() =3D=3D =
SfKernel.MediaPlayerType.SL1) {
            this.PlayerAreaInstance =3D new =
SL1PlayerArea("mPlayer.PlayerAreaInstance", window, "PlayerArea");

            $('PlayerSpeedControl').style.display =3D 'none';
            $('btnFullScreen').style.display =3D 'none';
        }
        else {
            this.PlayerAreaInstance =3D new =
WM7PlayerArea("mPlayer.PlayerAreaInstance", window, "PlayerArea");

            this.PlayerSpeedControlInstance =3D new =
PlayerSpeedControlPanel("mPlayer.PlayerSpeedControlInstance", window, =
"PlayerSpeedControl");
            this.PlayerSpeedControlInstance.OnLoad();
        }

        this.PlayerAreaInstance.OnLoad();
    },

    OnKeyUp: function(e) {
        if (SfEmailIsShowing || SfForumIsShowing || =
mPlayer.LinksPanel.IsShowing) {
            return;
        }

        var keyEvent =3D (window.event) ? event : e;

        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            switch (keyEvent.keyCode) {
                case 32: //Space
                    mPlayer.btnPlayPauseInstance.OnClick();
                    break;
                case 37: // left arrow
                    if (keyEvent.ctrlKey) {
                        if (mPlayer.btnPreviousSlideInstance) {
                            mPlayer.btnPreviousSlideInstance.OnClick();
                        }
                    }
                    else {
                        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.SkipBack, =
this, null);
                    }
                    break;
                case 38:  // up arrow
                    if (mPlayer.PlayerSpeedControlInstance) {
                        =
mPlayer.PlayerSpeedControlInstance._rightDivOnClick$1();
                    }
                    break;
                case 39:  // right arrow
                    if (keyEvent.ctrlKey) {
                        if (mPlayer.btnNextSlideInstance) {
                            mPlayer.btnNextSlideInstance.OnClick();
                        }
                    }
                    else {
                        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.SkipForward=
, this, null);
                    }
                    break;
                case 40:  // down arrow
                    if (mPlayer.PlayerSpeedControlInstance) {
                        =
mPlayer.PlayerSpeedControlInstance._leftDivOnClick$1();
                    }
                    break;
            }
        }

        switch (keyEvent.keyCode) {
            case 65:  //A
                mPlayer.btnAskInstance.OnClick();
                break;
            case 69:  //E
                mPlayer.btnEmailInstance.OnClick();
                break;
            case 76:  //L
                mPlayer.btnLinksInstance.OnClick();
                break;
            case 77:  //M
                mPlayer.btnMuteInstance.OnClick();
                break;
            case 80:  //P
                mPlayer.btnPollInstance.OnClick();
                break;
            case 83:  //S
                if (LayoutOptions.SlideHeight !=3D 0 && =
LayoutOptions.SlideWidth !=3D 0) {
                    if (keyEvent.shiftKey) {
                        if (mPlayer.CurrentSlidePanelInstance) {
                            =
mPlayer.CurrentSlidePanelInstance._toolbuttonController$1.ToggleSlideDesc=
riptions();
                        }
                    }
                    else if (mPlayer.btnSlideListInstance && =
mPlayer.btnSlideShowInstance) {
                        if =
(mPlayer.btnSlideListInstance.button.GetChecked()) {
                            mPlayer.btnSlideShowInstance.OnClick();
                        }
                        else {
                            mPlayer.btnSlideListInstance.OnClick();
                        }
                    }
                }
                break;
            case 112: //F1
                mPlayer.btnHelpInstance.OnClick();
                break;
        }
    },

    OnKeyDown: function(e) {
        var keyEvent =3D (window.event) ? event : e;
        if (keyEvent.keyCode =3D=3D=3D 27) {
            Event.stop(keyEvent);
        }
    },

    LoadAudioLanguages: function(Languages, CurrentIndex) {
        if (this.LanguageSelectionAreaInstance) {
            this.LanguageSelectionAreaInstance.LoadLanguages(Languages, =
CurrentIndex);
        }
    },

    LoadThemeStylesheet: function() {
        var theme =3D LayoutOptions.ThemeId;
        // override theme for transparency compatibility on MSIE6.

        if (this.PlayerDetect.IsInternetExplorer6()) {
            var isStandAlone =3D false;
            try {
                isStandAlone =3D Manifest.IsStandAlone;
            }
            catch (error) { }

            if (!isStandAlone) {
                LayoutOptions.ThemeImageBase =3D =
LayoutOptions.ThemeImageBase.replace("/App_Themes/" + theme + "/Images", =
"/App_Themes/" + this.LegacyThemeName + "/Images");
                theme =3D this.LegacyThemeName;
            }
        }

        if (theme =3D=3D this.LegacyThemeName) {
            this.ImageFileType =3D '.gif';
        }
        else {
            this.ImageFileType =3D '.png';
        }

        var href =3D GlobalOptions.AppRoot + '/App_Themes/' + theme + =
'/Images.css';
        document.writeln("<link id=3D'themeStylesheet' =
rel=3D'stylesheet' type=3D'text/css' href=3D'" + href + "'//>");
    },

    BrowserHacks: function() {
        // Firefox On Mac
        if (this.PlayerDetect.IsMac() && this.PlayerDetect.IsFirefox() =
&& $('PresentationCardArea') !=3D null) {
            // opacity used with overflow:hidden hides Silverlight video =
on Mac/Firefox
            $('PresentationCardArea').style.opacity =3D 1;
            $('PresentationCardArea').style.MozOpacity =3D 1;
        }
    },

    CreateChapterDialog: function() {
        var contentElement =3D $('PresentationCardArea');
        var chapterElement =3D document.createElement('div');
        chapterElement.setAttribute('id', 'ChapterPointsPanelDialog');
        chapterElement.className =3D 'dialogFrame';
        chapterElement.style.display =3D 'none';

        var title =3D document.createElement('div');
        title.setAttribute('id', 'ChapterPointsPanelDialogTitle');
        title.className =3D 'dialogTitle';

        var icon =3D document.createElement('div');
        icon.setAttribute('id', 'ChapterPointsPanelIcon');
        icon.className =3D 'dialogIcon';
        title.appendChild(icon);

        var titleText =3D document.createElement('div');
        titleText.setAttribute('id', 'ChapterPointsPanelTitleText');
        titleText.className =3D 'dialogTitleText';
        title.appendChild(titleText);

        var close =3D document.createElement('div');
        close.setAttribute('id', 'ChapterPointsPanelCloseButton');
        close.className =3D 'dialogCloseButtonNormal';
        title.appendChild(close);

        var message =3D document.createElement('div');
        message.setAttribute('id', 'ChapterPointsPanelDialogMessage');
        message.className =3D 'dialogMessageText';

        chapterElement.appendChild(title);
        chapterElement.appendChild(message);
        contentElement.appendChild(chapterElement);

        // hide this element to populate for later
    },

    ResizeWindow: function() {
        var doResize =3D SfKernel.GetQueryStringValue("shouldResize");

        if (doResize) {
            var currentSize =3D document.viewport.getDimensions();
            window.resizeBy((LayoutOptions.PlayerWidth - =
currentSize.width), (LayoutOptions.PlayerHeight - currentSize.height));
        }
    },

    ReportViewerPageOpened: function() {
        if (Manifest.IsStandAlone || this.OpenReported) {
            return;
        }

        var callManager =3D new ReportingCallManager();
        =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.ReportViewerPageOp=
ened
		(
			Manifest.PlaybackTicketId,
			mPlayer.PlayerDetect.GetPlayerType(),
			Manifest.PlayStatus,
			Function.createDelegate(callManager, callManager.OnSuccess),
			Function.createDelegate(callManager, callManager.OnFailure),
			'ReportViewerPageOpened'
		);

        this.OpenReported =3D true;
    },

    ReportViewerPageClosed: function() {
        var syncRequest =3D new Sys.Net.WebRequest();
        syncRequest.set_url(String.format('{0}/ReportViewerPageClosed', =
SonicFoundry.Mediasite.Player.DataAccess.PlayerService.get_path()));
        syncRequest.set_httpVerb('POST');
        syncRequest.get_headers()['Content-Type'] =3D 'application/json; =
charset=3Dutf-8';
        =
syncRequest.set_body(String.format('{{"playbackTicketId":"{0}"}}', =
Manifest.PlaybackTicketId));
        syncRequest.set_executor(new SfKernel.XMLHttpSyncExecutor());
        syncRequest.invoke();
    },

    CreateShowSlideEventArgs: function(slideNumber) {
        var args =3D new Object();

        args.Command =3D SfKernel.ScriptCmdType.ShowSlide;
        args.Index =3D slideNumber;

        if (slideNumber < 1) {
            return args;
        }

        args.Image =3D this.GetImageLocation(slideNumber, =
SfKernel.SlideType.Normal);
        args.FullSizeImage =3D this.GetImageLocation(slideNumber, =
SfKernel.SlideType.FullSize);
        args.ThumbNailImage =3D this.GetImageLocation(slideNumber, =
SfKernel.SlideType.ThumbNail);

        return args;
    },

    KeepAddingToSlideTimings: function(slideNumber) {
        var maxTimings =3D Manifest.Slides.length;
        if (maxTimings > slideNumber) {
            return;
        }

        var startIndex =3D maxTimings + 1;
        var endIndex =3D slideNumber;

        var i;
        for (i =3D startIndex; i <=3D endIndex; ++i) {
            this.AddToSlideTimings(i);
        }
    },

    AddToSlideTimings: function(slideNumber) {
        Manifest.Slides[Manifest.Slides.length] =3D new Slide("", -1, =
"");
    },

    GetImageLocationUsingWidthAndHeight: function(slideNumber, width, =
height) {
        return Manifest.GetSlideUrl(slideNumber, width, height);
    },

    GetImageLocation: function(slideNumber, type) {
        if (type =3D=3D SfKernel.SlideType.Normal) {
            return Manifest.GetSlideUrl(slideNumber, =
LayoutOptions.SlideWidth, LayoutOptions.SlideHeight);
        }
        else if (type =3D=3D SfKernel.SlideType.ThumbNail) {
            return Manifest.GetSlideUrl(slideNumber, =
mPlayer.ThumbnailsPanelInstance.ThumbnailWidth, =
mPlayer.ThumbnailsPanelInstance.ThumbnailHeight);
        }
        else {
            return Manifest.GetSlideUrl(slideNumber);
        }
    }
}

LinksButtonPanel =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.Links);
    }

    this.OnDataLoad =3D function() {
        if (Manifest.SupportingLinks.length > 0) {
            this.button.Enable(true);
            this.button.SetClickHandler(this.OnClick.bind(this));
        }
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            mPlayer.LinksPanel.Show();
        }
    }
}

////////////////////////
AskButtonPanel =3D function() {
    this.PrimarySpeakerEmail =3D null;

    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.button.SetTooltip(Localization.Buttons.Ask);
        this.AddEventHandlers();
    }

    this.OnDataLoad =3D function() {
        this.LoadPrimarySpeakerEmail();
        this.HandleButtonState();
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
this.ScriptEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.LivePlaybackSta=
rted, this.DataAvailableEventHandler.bind(this));
    }

    this.ScriptEventHandler =3D function(sender, args) {
        switch (args.Command) {
            case SfKernel.ScriptCmdType.EndPresentation:
                if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
                    this.button.Enable(false);
                }
                break;
        }
    }

    this.DataAvailableEventHandler =3D function(sender, args) {
        this.HandleButtonState();
    }

    this.HandleButtonState =3D function() {
        if (Manifest.ForumEnabled) {
            if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.Live || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.LivePaused || Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
                this.button.Enable(true);
                return;
            }
        }

        this.button.Enable(false);
    }

    this.LoadPrimarySpeakerEmail =3D function() {
        if (Manifest.Presenters.length < 1) {
            this.PrimarySpeakerEmail =3D null;
            return;
        }

        this.PrimarySpeakerEmail =3D Manifest.Presenters[0].Email;
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            SfForum.OpenAskQuestion();
        }
    }
}

/////////////////
PollButtonPanel =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.Polls);
    }

    this.OnDataLoad =3D function() {
        this.HandleButtonState();
    }

    this.HandleButtonState =3D function() {
        if (Manifest.PollingEnabled) {
            this.button.Enable(true);
            this.button.SetClickHandler(this.OnClick.bind(this));
        }
        else {
            this.button.Enable(false);
        }
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            // needs to be resizeable
            mPlayer.PopupWindows.Polls =3D =
WindowHelper.CreateNamedPopup(WindowHelper.PopupNames.ShowPolls, =
"polls", 600, 450, true, false);
            if (mPlayer.PopupWindows.Polls) {
                mPlayer.PopupWindows.Polls.focus();
            }
        }
    }
}
//////////
ChangeVideoPositionButtonArea =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        =
this.button.SetTooltip(Localization.Buttons.ChangeVideoPosition);
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.button.Enable(true);
    }

    this.OnClick =3D function() {
        toggleVariant();
    }
}
//////////
EmailButtonArea =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.Email);
    }

    this.OnDataLoad =3D function() {
        if (GlobalOptions.AllowEmailForm =3D=3D true) {
            this.button.Enable(true);
            this.button.SetClickHandler(this.OnClick.bind(this));
        }
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            SfEmail.OpenEmailInvitation();
        }
    }
}
///////
ChaptersButtonArea =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        =
this.button.SetTooltip(Localization.ThumbnailsResource.Chapters);
    }

    this.OnDataLoad =3D function() {
        //if (Manifest.SupportingLinks.length > 0) {
        this.button.Enable(true);
        this.button.SetClickHandler(this.OnClick.bind(this));
        //}
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            mPlayer.ChaptersPanel.Show();
            this.IsShowing =3D true;
        }
    }
}

///////
HelpButtonArea =3D function() {
    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.Help);
    }

    this.OnDataLoad =3D function() {
        this.button.Enable(true);
        this.button.SetClickHandler(this.OnClick.bind(this));
    }

    this.OnClick =3D function() {
        if (this.button._enabled) {
            =
WindowHelper.PopupHelp(WindowHelper.GetPopupURL(WindowHelper.PopupNames.H=
elp), 800, 600);
        }
    }
}
ControlButtonArea =3D function(id) {
    this.ID =3D id;
    this.Enabled =3D true;
    this.ControlArea =3D null;

    this.OnLoad =3D function() {
        if (this.Enabled =3D=3D false) {
            this.Hide();
            return;
        }
        else {
            this.Show();
        }
        this.button.Initialize();
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.button.SetTooltip(this.TooltipId);
    }

    this.OnClick =3D function() {
        if (this.button.GetChecked()) {
            this.HideControlArea();
        }
        else {
            this.ShowControlArea();
        }
    }

    this.ShowControlArea =3D function() {
        this.ControlArea.Show();
        this.button.SetChecked(true);
    }

    this.HideControlArea =3D function() {
        this.ControlArea.Hide();
        this.button.SetChecked(false);
    }

    this.Hide =3D function() {
        var divElement =3D this.GetDiv();

        if (this._originalDisplay =3D=3D null) {
            this._originalDisplay =3D divElement.style.display;
        }

        divElement.style.display =3D 'none';
    }

    this.GetDiv =3D function() {
        if (this._div =3D=3D null) {
            this._div =3D $(this.ID);
        }
        return this._div;
    }

    this.Show =3D function() {
        var divElement =3D this.GetDiv();

        var currentDisplay =3D divElement.style.display;
        if (currentDisplay !=3D 'none') {
            this._originalDisplay =3D currentDisplay;
            return;
        }

        // currentdisplay =3D=3D 'none'
        if (this._originalDisplay =3D=3D null) {
            // not initialized
            this._originalDisplay =3D 'none';
            divElement.style.display =3D '';
        }
        else {
            if (this._originalDisplay =3D=3D 'none') {
                divElement.style.display =3D '';
            }
            else {
                divElement.style.display =3D this._originalDisplay;
            }
        }
    }
}

ControlButtonGroup =3D function() {
    this.OnLoad =3D function() {
        this.ResetClickHandlersForButtons();
        this.SelectFirstEnabledButton();
    }

    this.SelectFirstEnabledButton =3D function() {
        for (var i =3D 0; i < this.Buttons.length; ++i) {
            if (this.Buttons[i].Enabled =3D=3D true) {
                this.OnClick(this.Buttons[i].ID);
                return;
            }
        }
    }

    this.ResetClickHandlersForButtons =3D function() {
        var len =3D this.Buttons.length;

        for (var i =3D 0; i < len; ++i) {
            this.Buttons[i].Group =3D this;
            =
this.Buttons[i].button.SetClickHandler(this.OnClick.bind(this, =
this.Buttons[i].ID));
        }
    }

    this.ShowThisAndHideOthers =3D function(index) {
        for (var i =3D 0; i < this.Buttons.length; ++i) {
            if (i =3D=3D index) {
                this.Buttons[i].ShowControlArea();
            }
            else {
                this.Buttons[i].HideControlArea();
            }
        }
    }

    this.OnClick =3D function(buttonID) {
        var index =3D this.FindClickedButtonIndex(buttonID);
        if (this.Buttons[index].button.IsChecked =3D=3D true) {
            return;
        }
        this.ShowThisAndHideOthers(index);
    }

    this.FindClickedButtonIndex =3D function(buttonID) {
        for (var i =3D 0; i < this.Buttons.length; ++i) {
            if (this.Buttons[i].ID =3D=3D buttonID) {
                return i;
            }
        }
        return -1;
    }
}

////////////////////////
PreviousSlideButtonArea =3D function(container) {
    this.Container =3D container;

    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.PreviousSlide);
    }

    this.OnDataLoad =3D function() {
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.button.SetDblClickHandler(this.OnClick.bind(this));
        this.AddEventHandlers();
        this.HandleButtonState(-1);
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
this.ScriptEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayingFromBegi=
nning, this.PlayingFromBeginningEventHandler.bind(this));
    }

    this.ScriptEventHandler =3D function(sender, args) {
        if (args.Command !=3D SfKernel.ScriptCmdType.ShowSlide) {
            return;
        }
        this.HandleButtonState(args.Index);
    }

    this.PlayingFromBeginningEventHandler =3D function(sender, args) {
        this.HandleButtonState(-1);
    }

    this.OnClick =3D function() {
        var currentSlide =3D mPlayer.CurrentSlideNumber;

        var toJumpTo;
        if (mPlayer.PresentationEnded) {
            if (Manifest.Slides.length > 0) {
                toJumpTo =3D Manifest.Slides.length;
            }
            else {
                return;
            }
        }
        else if (currentSlide > 1) {
            toJumpTo =3D currentSlide - 1;
        }
        else {
            return;
        }

        =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: toJumpTo });

    }

    this.HandleButtonState =3D function(currentSlide) {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            this.button.Enable(false);
            return;
        }

        if (currentSlide < 2) {
            this.button.Enable(false);
            return;
        }

        this.button.Enable(true);
    }
}

////////////////////////
NextSlideButtonArea =3D function(container) {
    this.Container =3D container;

    this.OnLoad =3D function() {
        this.button.Initialize();
        this.button.SetTooltip(Localization.Buttons.NextSlide);
    }

    this.OnDataLoad =3D function() {
        this.button.SetClickHandler(this.OnClick.bind(this));
        this.AddEventHandlers();
        this.HandleButtonState(-1);
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
this.ScriptEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayingFromBegi=
nning, this.PlayingFromBeginningEventHandler.bind(this));
    }

    this.ScriptEventHandler =3D function(sender, args) {
        switch (args.Command) {
            case SfKernel.ScriptCmdType.ShowSlide:
                this.HandleButtonState(args.Index);
        }
    }

    this.PlayingFromBeginningEventHandler =3D function(sender, args) {
        this.HandleButtonState(-1);
    }

    this.OnClick =3D function() {
        var currentSlide =3D mPlayer.CurrentSlideNumber;
        var maxSlide =3D Manifest.Slides.length;
        if (currentSlide =3D=3D -1 && maxSlide > 0) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: 1 });
        }
        else if (currentSlide < maxSlide) {
            =
mPlayer.EventManager.PostCommandEvent(SfKernel.CommandEventId.NavigateToS=
lide, this, { SlideNumber: currentSlide + 1 });
        }
    }

    this.HandleButtonState =3D function(currentSlide) {
        if (Manifest.PlayStatus !=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            this.button.Enable(false);
            return;
        }

        var maxSlide =3D Manifest.Slides.length;
        if (currentSlide =3D=3D -1) {
            if (maxSlide > 0) {
                this.button.Enable(true);
            }
            else {
                this.button.Enable(false);
            }
            return;
        }

        if (currentSlide < maxSlide) {
            this.button.Enable(true);
        }
        else {
            this.button.Enable(false);
        }
    }
}


SlideNumberPanel =3D function(container, containingWindow, id) {
    this.Container =3D container;
    this.ContainingWindow =3D containingWindow;
    this.ID =3D id;

    this.SlideText =3D null;
    this.OfText =3D null;
    this.DefaultText =3D null;

    this.OnLoad =3D function() {
    }

    this.OnDataLoad =3D function() {
        this.AddEventHandlers();
    }


    this.SetText =3D function(val) {
        var textNode =3D document.createTextNode(val);

        var div =3D this.GetDiv();
        var firstChild =3D div.childNodes[0];
        if (firstChild) {
            div.replaceChild(textNode, firstChild);
        }
        else {
            div.appendChild(textNode);
        }
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.Script, =
this.ScriptEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.PlayingFromBegi=
nning, this.PlayingFromBeginningEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.LivePlaybackSta=
rted, this.LivePlaybackStartedEventHandler.bind(this));
    }

    this.ScriptEventHandler =3D function(sender, args) {
        switch (args.Command) {
            case SfKernel.ScriptCmdType.ShowSlide:
                var index =3D args.Index;
                if (index < 1) {
                    this.SetBlankText();
                    return;
                }
                this.SetText(this.SlideText + " " + index + " " + =
this.OfText + " " + Manifest.Slides.length);
                break;
            case SfKernel.ScriptCmdType.EndPresentation:
                this.SetBlankText();
                break;
        }
    }
    this.LivePlaybackStartedEventHandler =3D function(sender, args) {
        var slideNumber =3D Manifest.Slides.length;
        if (slideNumber > 0) {
            this.SetText(this.SlideText + " " + slideNumber + " " + =
this.OfText + " " + slideNumber);
        }

    }

    this.PlayingFromBeginningEventHandler =3D function(sender, args) {
        if (mPlayer.CurrentSlideNumber =3D=3D -1) {
            this.SetBlankText();
        }
    }

    this.SetBlankText =3D function() {
        this.SetText(this.DefaultText);
    }
}

SlideNumberPanel.prototype =3D new Panel();
SlideNumberPanel.prototype.constructor =3D SlideNumberPanel;
SlideNumberPanel.prototype.baseClass =3D Panel.prototype.constructor;


//////////////////////
SlideShowButtonArea =3D function(id) {
    this.ID =3D id;
    this.OnLoad =3D function() {
        if (!this.Enabled) {
            this.Hide();
            return;
        }
        this.Show();
        this.button.Initialize();
        this.button.SetTooltip(this.TooltipId);
    }

    this.OnDataLoad =3D function() {
        this.button.SetClickHandler(this.OnClick.bind(this));
    }

    this.OnClick =3D function() {
        if (!this.button.GetChecked()) {
            if (this.ID =3D=3D 'btnSlideShow') {
                this.ShowControlArea();
            }
            else {
                this.HideControlArea();
            }
        }
    }

    this.ShowControlArea =3D function() {
        this.ControlArea.show();
        mPlayer.btnSlideShowInstance.button.SetChecked(true);
        mPlayer.btnSlideListInstance.button.SetChecked(false);
    }

    this.HideControlArea =3D function() {
        this.ControlArea.hide();
        mPlayer.btnSlideListInstance.button.SetChecked(true);
        mPlayer.btnSlideShowInstance.button.SetChecked(false);
    }

    this.Hide =3D function() {
        var divElement =3D this.GetDiv();
        if (this._originalDisplay =3D=3D null) {
            this._originalDisplay =3D divElement.style.display;
        }
        divElement.style.display =3D 'none';
    }

    this.GetDiv =3D function() {
        if (this._div =3D=3D null) {
            this._div =3D $(this.ID);
        }
        return this._div;
    }

    this.Show =3D function() {
        var divElement =3D this.GetDiv();

        var currentDisplay =3D divElement.style.display;
        if (currentDisplay !=3D 'none') {
            this._originalDisplay =3D currentDisplay;
            return;
        }

        // currentdisplay =3D=3D 'none'
        if (this._originalDisplay =3D=3D null) {
            // not initialized
            this._originalDisplay =3D 'none';
            divElement.style.display =3D '';
        }
        else {
            if (this._originalDisplay =3D=3D 'none') {
                divElement.style.display =3D '';
            }
            else {
                divElement.style.display =3D this._originalDisplay;
            }
        }
    }
}

/// Theme Image
SkinImage =3D function(id) {
    this.ID =3D id;
    this.ImageSRC =3D null;
    //this.ImageBackSRC =3D null;
    this.ImageHref =3D null;
    this.ImageWidth =3D null;
    this.ImageHeight =3D null;
    this.ParentWidth =3D null;
    this.ParentHeight =3D null;
    this.Alt =3D '';
    this.Style =3D null;
    this.ParentStyle =3D null;

    this.OnLoad =3D function() {
        var ParentElement =3D $(this.ID);

        if (!ParentElement) {
            return;
        }

        this.ParentWidth =3D ParentElement.style.width;
        this.ParentHeight =3D ParentElement.style.height;

        var parentStyle =3D ParentElement.style;
        ParentElement.setAttribute('style', parentStyle + =
this.ParentStyle);
        var BannerPanel =3D this.createBannerPanel();
        ParentElement.appendChild(BannerPanel);
    }

    this.createBannerPanel =3D function() {
        //        banners as img tags.   =20
        //        var imgElement =3D $(document.createElement('img'));
        //        imgElement.setAttribute('id', this.ID + 'Image');
        //        imgElement.setAttribute('src', this.ImageSRC);
        //        imgElement.setAttribute('alt', this.Alt);
        //        imgElement.setAttribute('style', this.Style);
        //        imgElement.setAttribute('border', '0');

        //      banners as divs with background images       =20
        var imgElement =3D $(document.createElement('div'));
        imgElement.setAttribute('id', this.ID + 'Image');
        imgElement.setAttribute('style', this.Style);
        imgElement.setAttribute('border', '0');
        imgElement.setStyle({
            backgroundRepeat: 'no-repeat',
            backgroundImage: 'url(' + this.ImageSRC + ')',
            height: this.ImageHeight + 'px',
            width: this.ImageWidth + 'px'
        });
        imgElement.setAttribute('title', this.Alt);
        if (this.ImageHeight !=3D null && this.ImageWidth !=3D null) {
            imgElement.setAttribute('height', this.ImageHeight);
            imgElement.setAttribute('width', this.ImageWidth);
        }
        else {
            imgElement.setAttribute('height', =
this.ParentHeight.replace("px", ""));
            imgElement.setAttribute('width', =
this.ParentWidth.replace("px", ""));
        }

        if (this.ImageHref !=3D '') // if there's no link, dont create =
the tag
        {
            var aElement =3D $(document.createElement('a'));
            aElement.setAttribute('id', this.ID + 'Link');
            aElement.setAttribute('href', this.ImageHref);
            aElement.setAttribute('target', '_offsite');
            aElement.appendChild(imgElement);
            imgElement.setStyle({ cursor: 'pointer', cursor: 'hand' })
            return aElement;
        }
        else {
            return imgElement;
        }
    }
}

// Banners
function LoadBanners() {
    this.Banner =3D null;
    this.OnLoad =3D function() {
        for (var i =3D 0; i < this.Banner.length; i++) {
            if (LayoutOptions.Images[this.Banner[i]]) {
                var BannerInstance =3D new SkinImage(this.Banner[i]);
                BannerInstance.ImageSRC =3D =
LayoutOptions.Images[this.Banner[i]].ImageFilename;
                BannerInstance.ImageHref =3D =
LayoutOptions.Images[this.Banner[i]].ImageUrl;
                BannerInstance.ImageHeight =3D =
LayoutOptions.Images[this.Banner[i]].Height;
                BannerInstance.ImageWidth =3D =
LayoutOptions.Images[this.Banner[i]].Width;
                BannerInstance.OnLoad();
            }
        }
    }
}

//Slider Area
SliderArea =3D function(container, containingWindow, id) {
    this.ID =3D id;
    this.Slider =3D null;
    this.mediaLengthObtainedEventHandler =3D null;
    this.playerTimerUpdatedEventHandler =3D null;
    this.IsCurrentlyDragging =3D false;
    this.Orientation =3D SfUI.SfSlider.Orientation.Vertical;

    this.OnLoad =3D function() {
        if (Manifest.PlayStatus =3D=3D =
SfKernel.PresentationPlayStatus.OnDemand) {
            this.Initialize();
            this.Slider.SetEnabled(true);
            this.AddEventHandlers();
        }
    }

    this.Initialize =3D function() {
        var imageInfo =3D { SliderBackroundImage: =
this.SliderBackgroundImage, ThumbImage: this.ThumbImage, ThumbOverImage: =
this.ThumbOverImage };
        this.Slider =3D new SfUI.SfSlider({ NamePrefix: this.ID, =
Orientation: this.Orientation, ImageInfo: imageInfo });
    }

    this.AddEventHandlers =3D function() {
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.MediaLengthObta=
ined, this.MediaLengthObtainedEventHandler.bind(this));
        =
mPlayer.EventManager.Events.addHandler(SfKernel.EventType.TimerLoop, =
this.TimerLoopEventHandler.bind(this));

        this.Slider.AddClickHandler(Function.createDelegate(this, =
this.OnSliderClick));
        this.Slider.AddDragHandler(Function.createDelegate(this, =
this.OnSliderDrag));
    }

    this.MediaLengthObtainedEventHandler =3D function(sender, range) {
        this.Slider.SetRange(range.Left, range.Right);
    }

    this.TimerLoopEventHandler =3D function(sender, args) {
        if (this.IsCurrentlyDragging =3D=3D true) {
            return;
        }
        this.Slider.SetPosition(args["Position"]);
    }

    this.OnSliderClick =3D function(sender, args) {
        this.Slider.SetPosition(args.Position);

        var sliderArgs =3D new =
SfKernel.SliderArgs(SfKernel.SliderNotifyType.NewPosition, =
args.Position);
        mPlayer.EventManager.PostEvent(SfKernel.EventType.SliderNotify, =
this, sliderArgs);
    }

    this.OnSliderDrag =3D function(sender, dragArgs) {
        if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.DragMove) {
            this.Slider.SetPosition(dragArgs.Position);

            var sliderArgs =3D new =
SfKernel.SliderArgs(SfKernel.SliderNotifyType.DragPosition, =
dragArgs.Position);
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.SliderNotify, this, =
sliderArgs);
        }
        else if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.BeginDrag) {
            var sliderArgs =3D new =
SfKernel.SliderArgs(SfKernel.SliderNotifyType.BeginDrag, =
dragArgs.Position);

            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.SliderNotify, this, =
sliderArgs);
            this.IsCurrentlyDragging =3D true;
        }
        else if (dragArgs.DragEventType =3D=3D =
SfUI.SfSlider.DragEventType.EndDrag) {
            var newPositionArgs =3D new =
SfKernel.SliderArgs(SfKernel.SliderNotifyType.NewPosition, =
dragArgs.Position);
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.SliderNotify, this, =
newPositionArgs);

            var endDragArgs =3D new =
SfKernel.SliderArgs(SfKernel.SliderNotifyType.EndDrag, =
dragArgs.Position);
            =
mPlayer.EventManager.PostEvent(SfKernel.EventType.SliderNotify, this, =
endDragArgs);
            this.IsCurrentlyDragging =3D false;
        }
    }
}

function loadingMask(container, max, num) {

    createBlocks(container, num);
    for (var i =3D 0; i < max; ++i)                       // max repeats =
before stop
    {
        setTimeout('paintBlocks(' + num + ')', i * 1600);  // interval =
between repeat
    }
}

function createBlocks(container, num) {
    var blockPaintInterval =3D 0;
    var container =3D document.getElementById(container);
    for (var i =3D 0; i < num; ++i) {
        var e =3D document.createElement('div');
        e.setAttribute('id', 'spinDiv' + i);
        e.setAttribute('class', 'spinDiv');
        container.appendChild(e);
    }
}

function paintBlocks(num) {
    var i =3D 0;
    var t =3D 100;
    var c =3D 150;
    for (var j =3D 1; j < num; ++j) {
        setTimeout('colorBlock(' + i + ',' + num + ',' + c + ',' + c + =
',' + c + ')', t);
        c =3D (c + 20);  // grayscale step
        t =3D t + 100;   // chase length
    }
}

function colorBlock(i, num, r, g, b) {
    if (i < num) {
        var e =3D document.getElementById('spinDiv' + i);
        e.style.backgroundColor =3D 'rgb(' + r + ',' + g + ',' + b + =
')';
        setTimeout('colorBlock(' + (++i) + ',' + num + ',' + r + ',' + g =
+ ',' + b + ')', 100);
    }
}

var mPlayer =3D new MediasitePlayer();
try {
    mPlayer.OnLoad();
}
catch (error) {
    PresentationFailedToLoad('manifestFailedErrorDialog', =
error.message);
}

------=_NextPart_000_0000_01CBE932.7CEFD480--
