script.js
上传用户:tiancihang
上传日期:2014-03-12
资源大小:21387k
文件大小:26k
源码类别:

.net编程

开发平台:

C#

  1. function LoadSld()
  2. {
  3. var sld=GetObj("SlideObj")
  4. if( !g_supportsPPTHTML ) {
  5. sld.style.visibility="visible"
  6. return
  7. }
  8. if( MakeNotesVis() ) return
  9. runAnimations = _InitAnimations();
  10. if( IsWin("PPTSld") )
  11. parent.SldUpdated(GetSldId())
  12. g_origSz=parseInt(SlideObj.style.fontSize)
  13. g_origH=sld.style.posHeight
  14. g_origW=sld.style.posWidth
  15. g_scaleHyperlinks=(document.all.tags("AREA").length>0)
  16. if( g_scaleHyperlinks )
  17. InitHLinkArray()
  18. if( g_scaleInFrame||(IsWin("PPTSld") && parent.IsFullScrMode() ) )
  19. document.body.scroll="no"
  20. _RSW()
  21. if( IsWin("PPTSld") && parent.IsFullScrMode() )
  22. FullScrInit();
  23. MakeSldVis();
  24. ChkAutoAdv()
  25. if( runAnimations )
  26. {
  27. if( document.all("NSPlay") )
  28. document.all("NSPlay").autoStart = false;
  29. if( sld.filters && sld.filters.revealtrans )
  30. setTimeout( "document.body.start()", sld.filters.revealtrans.duration * 1000 );
  31. else
  32. document.body.start();
  33. }
  34. }
  35. function MakeSldVis() 
  36. {
  37. var fTrans=g_showAnimation && SldHasTrans()
  38. if( fTrans )
  39. {
  40. if( g_bgSound ) {
  41. idx=g_bgSound.indexOf(",");
  42. pptSound.src=g_bgSound.substr( 0, idx );
  43. pptSound.loop= -(parseInt(g_bgSound.substr(idx+1)));
  44. }
  45. SlideObj.filters.revealtrans.Apply()
  46.     }
  47. SlideObj.style.visibility="visible"
  48. if( fTrans )
  49. SlideObj.filters.revealtrans.Play()
  50. }
  51. function MakeNotesVis() 
  52. {
  53. if( !IsNts() ) return false 
  54. SlideObj.style.display="none"
  55. nObj = document.all.item("NotesObj")
  56. parent.SetHasNts(0)
  57. if( nObj ) { 
  58. nObj.style.display=""
  59. parent.SetHasNts(1)
  60. }
  61. return 1
  62. }
  63. function ChkAutoAdv()
  64. {
  65. if(SldHasTrans())
  66. SlideObj.onfilterchange=AutoAdv
  67. else
  68. AutoAdv()
  69. }
  70. function AutoAdv()
  71. {
  72. if(!IsWin("PPTSld") || !gUseSldTimings )return
  73. var sld=GetCurSld()
  74. if( (sld.mAdvDelay>0) && !parent.IsFramesMode() )
  75. setTimeout("parent.GoToNextSld()",sld.mAdvDelay)
  76. }
  77. function GetObj(id)
  78. {
  79. if(g_supportsPPTHTML) return document.all(id);
  80. else return document.getElementById(id);
  81. }
  82. function SldHasTrans() { return SlideObj.style.filter != ""; }
  83. function GetSldId() { return sId=location.href.substring(location.href.lastIndexOf('/')+1) }
  84. function HideMenu() { if( frames["PPTSld"] && PPTSld.document.all.item("ctxtmenu") && PPTSld.ctxtmenu.style.display!="none" ) { PPTSld.ctxtmenu.style.display='none'; return true } return false }
  85. function IsWin( name ) { return window.name == name }
  86. function IsNts() { return IsWin("PPTNts") }
  87. function IsSldOrNts() { return( IsWin("PPTSld")||IsWin("PPTNts") ) }
  88. function SupportsPPTAnimation() { return( navigator.platform == "Win32" && navigator.appVersion.indexOf("Windows")>0 ) }
  89. function SupportsPPTHTML()
  90. {
  91. var appVer=navigator.appVersion, msie=appVer.indexOf("MSIE "), ver=0
  92. if( msie >= 0 )
  93. ver=parseFloat( appVer.substring( msie+5, appVer.indexOf(";",msie) ) )
  94. else
  95. ver=parseInt(appVer)
  96. return( ver >= 4 && msie >= 0 )
  97. }
  98. function _RSW()
  99. {
  100. if( !g_supportsPPTHTML || IsNts() ||
  101.   ( !g_scaleInFrame && (!IsWin("PPTSld") || !parent.IsFullScrMode()) ) )
  102. return
  103.         var padding=0;
  104.         if( IsWin("PPTSld") && parent.IsFramesMode() ) padding=6
  105. cltWidth=document.body.clientWidth-padding
  106. cltHeight=document.body.clientHeight-padding
  107. factor=(1.0*cltWidth)/g_origW
  108. if( cltHeight < g_origH*factor )
  109. factor=(1.0*cltHeight)/g_origH
  110. newSize = g_origSz * factor
  111. if( newSize < 1 ) newSize=1
  112. s=SlideObj.style
  113. s.fontSize=newSize+"px"
  114. s.posWidth=g_origW*factor
  115. s.posHeight=g_origH*factor
  116. s.posLeft=(cltWidth-s.posWidth+padding)/2
  117. s.posTop=(cltHeight-s.posHeight+padding)/2
  118. if( g_scaleHyperlinks )
  119. ScaleHyperlinks( factor )
  120. }
  121. function _InitAnimations()
  122. {
  123. animRuntimeInstalled = ''+document.body.localTime != 'undefined';
  124. isFullScreen = (window.name == "PPTSld") && !parent.IsFramesMode();
  125. g_animUseRuntime = g_showAnimation && animRuntimeInstalled && !(isFullScreen && parent.IsSldVisited());
  126. if( g_animUseRuntime ) {
  127. collSeq = document.all.tags("seq");
  128. if( collSeq != null ) {
  129. for(ii=0;ii<collSeq.length;ii++) {
  130. if( collSeq[ii].getAttribute( "p:nodeType" ) == "mainSeq" ) {
  131. g_animMainSequence = collSeq[ii];
  132. break;
  133. }
  134. }
  135. }
  136. if( g_animItemsToHide && document.body.playAnimations != false ) {
  137. for(jj = 0; jj < g_animItemsToHide.length; jj++) {
  138. if( hideObj = GetObj(g_animItemsToHide[jj]) )
  139. hideObj.runtimeStyle.visibility="hidden";
  140. }
  141. }
  142. if( g_animInteractiveItems ){
  143. for(jj = 0; jj < g_animInteractiveItems.length; jj++) {
  144. if( triggerObj = GetObj(g_animInteractiveItems[jj]) )
  145. triggerObj.runtimeStyle.cursor="hand";
  146. }
  147. }
  148. if( gUseSldTimings && ''+g_animSlideTime != 'undefined' ) {
  149. adjustedTime = document.body.calculateAutoAdvanceTimes( g_animSlideTime, g_animEffectTimings );
  150. if( IsWin("PPTSld") && adjustedTime != g_animSlideTime ) {
  151.    var sld = GetCurSld();
  152.    sld.mAdvDelay = adjustedTime * 1000;
  153. }
  154. }
  155. }
  156. return g_animUseRuntime;
  157. }
  158. gSldJump = 0, gSldJumpTrack = 0, gSldJumpIdx = "";
  159. function _KPH()
  160. if( IsNts() ) return;
  161. if( !parent.IsFramesMode() && event.keyCode == 27 && !HideMenu() )
  162. parent.window.close( self );
  163. else if( event.keyCode == 32 ) {
  164. if( window.name == "PPTSld" )
  165. parent.PPTSld.DocumentOnClick();
  166. else
  167. parent.GoToNextSld();
  168. }
  169. CatchNumKeys( parent, event );
  170. }
  171. function CatchNumKeys( win, event ) {
  172. if( win.IsFullScrMode() && (48<=event.keyCode) && (event.keyCode<=57) ) {
  173. gSldJump = 1;
  174. gSldJumpIdx += (event.keyCode-48).toString();
  175. }
  176. if( win.IsFullScrMode() && gSldJump && event.keyCode == 13 ) {
  177. var numSlds = parent.GetSldList().mList.length
  178. if ( gSldJumpIdx > numSlds )
  179. gSldJumpIdx = numSlds;
  180. if ( gSldJumpIdx >= 0 ) {
  181. if ( gSldJumpIdx == 0 )
  182. gSldJumpIdx = 1;
  183. var jumpTo = parseInt(gSldJumpIdx);
  184. gSldJump = 0; gSldJumpIdx = "";
  185. win.GoToSld( parent.GetSldList().mList[jumpTo-1].mSldHref )
  186. }
  187. }
  188. }
  189. function _KDH()
  190. {
  191. if( event.keyCode == 8 ) {
  192. event.returnValue = 0;
  193. parent.GoToPrevSld();
  194. }
  195. }
  196. function DocumentOnClick()
  197. {
  198. if( IsNts() || parent.HideMenu() ) return;
  199. if( ( g_allowAdvOnClick && !parent.IsFramesMode() ) ||
  200.     (event && (event.keyCode==32) ) )
  201. parent.GoToNextSld();
  202. }
  203. var g_supportsPPTHTML = SupportsPPTHTML(), g_scaleInFrame = 1, gId="", g_bgSound="",
  204.     g_scaleHyperlinks = false, g_allowAdvOnClick = 1, g_showInBrowser = 0, gLoopCont = 0, gUseSldTimings = 1;
  205. var g_showAnimation = g_supportsPPTHTML && SupportsPPTAnimation() && ( (window.name=="PPTSld" && !parent.IsFramesMode()) || g_showInBrowser );var g_animManager = null;
  206. var g_animUseRuntime = false;
  207. var g_animItemsToHide, g_animInteractiveItems, g_animSlideTime;
  208. var g_animMainSequence = null;
  209. var ENDSHOW_MESG="放映结束,单击鼠标退出。", SCREEN_MODE="Frames", gIsEndShow=0, NUM_VIS_SLDS=2, SCRIPT_HREF="script.js", FULLSCR_HREF="fullscreen.htm";
  210. var gCurSld = gPrevSld = 1, g_offset = 0, gNtsOpen = gHasNts = gOtlTxtExp = 0, gHasNarration = 0, gOtlOpen = true
  211. window.gPPTHTML=SupportsPPTHTML()
  212. var gMainDoc=new Array(new hrefList("slide0001.htm",1,-1,1),new hrefList("slide0002.htm",1,-1,1));
  213. /*********************************************
  214.  Frameset functions
  215.  These functions control slide navigation
  216.  and state of the frameset.
  217. **********************************************/
  218. function FullScrInit()
  219. {
  220. g_allowAdvOnClick = GetCurSld().mAdvOnClk
  221. document.body.style.backgroundColor="black"
  222. document.oncontextmenu=parent._CM;
  223. document.onkeydown = _KDH;
  224. document.ondragstart=Cancel
  225. document.onselectstart=Cancel
  226. self.focus()
  227. }
  228. function Redirect( frmId )
  229. {
  230. var str=document.location.hash,idx=str.indexOf('#'), sId=GetSldId()
  231. if(idx>=0) str=str.substr(1);
  232. if( window.name != frmId && ( sId != str) ) {
  233. obj = GetObj("Main-File")
  234. window.location.href=obj.href+"#"+sId
  235. return 1
  236. }
  237. return 0
  238. }
  239. var MHTMLPrefix = CalculateMHTMLPrefix(); 
  240. function CalculateMHTMLPrefix()
  241. {
  242. if ( document.location.protocol == 'mhtml:') { 
  243. href=new String(document.location.href) 
  244. Start=href.indexOf('!')+1 
  245. End=href.lastIndexOf('/')+1 
  246. if (End < Start) 
  247. return href.substring(0, Start) 
  248. else 
  249. return href.substring(0, End) 
  250. }
  251. return '';
  252. }
  253. function GetTags(base,tag)
  254. {
  255. if(g_supportsPPTHTML) return base.all.tags(tag);
  256. else return base.getElementsByTagName(tag);
  257. }
  258. function UpdNtsPane(){ if(frames["PPTNts"]) PPTNts.location.replace( MHTMLPrefix+GetHrefObj( gCurSld ).mNtsHref ) }
  259. function UpdNavPane( sldIndex ){ if(gNavLoaded) PPTNav.UpdNav() }
  260. function UpdOtNavPane(){ if(gOtlNavLoaded) PPTOtlNav.UpdOtlNav() }
  261. function UpdOtlPane(){ if(gOtlLoaded) PPTOtl.UpdOtl() }
  262. function SetHasNts( fVal )
  263. {
  264. if( gHasNts != fVal ) {
  265. gHasNts=fVal
  266. UpdNavPane()
  267. }
  268. }
  269. function ToggleOtlText()
  270. {
  271. gOtlTxtExp=!gOtlTxtExp
  272. UpdOtlPane()
  273. }
  274. function ClearMedia()
  275. {
  276. // Clear any sounds playing before launching another browser window. Otherwise,
  277. // in fullscreen mode, you'll continue to hear the sound in the frames mode.
  278. if (PPTSld.pptSound) PPTSld.pptSound.loop = 0;
  279. }
  280. function FullScreen()
  281. if ( PPTSld.g_animUseRuntime )
  282. PPTSld.document.body.pause();
  283. ClearMedia();
  284. var href = ( document.location.protocol == 'mhtml:') ? FULLSCR_HREF : FULLSCR_HREF+"#"+GetHrefObj(gCurSld).mSldHref;
  285. if(PPTNav.event.ctrlKey) {
  286. var w = (window.screen.availWidth * 1.0) / 2.0
  287. var h = w * (PPTSld.g_origH * 1.0) / PPTSld.g_origW
  288. win = window.open( MHTMLPrefix+href,null,"toolbar=0,resizable=1,top=0,left=0," + "width="+ w + ",height=" + h );
  289. if( win.document.body && PPTSld.g_animUseRuntime )
  290. win.document.body.PPTSldFrameset=window;
  291. }
  292. else
  293. {
  294. win = window.open( MHTMLPrefix+href,null,"fullscreen=yes" );
  295. if( win.document.body && PPTSld.g_animUseRuntime )
  296. win.document.body.PPTSldFrameset=window;
  297. }
  298. }
  299. function ToggleVNarration()
  300. {
  301. rObj=PPTSld.document.all("NSPlay")
  302. if( rObj && !PPTSld.g_animUseRuntime ) {
  303. if( (rObj.playState == 1)||(rObj.playState == 0) )
  304. rObj.Play()
  305. else if( rObj.playState == 2 )
  306. rObj.Pause()
  307. else
  308. return;
  309. }
  310. else if( PPTSld.g_animUseRuntime )
  311. {
  312. narObj = PPTSld.document.all("narrationID")
  313. if( narObj )
  314. narObj.togglePause()
  315. }
  316. }
  317. function GetCurSldNum()
  318. {   
  319. obj=GetHrefObj(gCurSld)
  320. if( obj.mOrigVis == 1 )
  321. return obj.mSldIdx
  322. else   
  323. return gCurSld
  324. }
  325. function GetNumSlds()
  326. {   
  327. if( GetHrefObj(gCurSld).mOrigVis == 1 )
  328. return GetSldList().mNumVisSlds;
  329. else
  330. return GetSldList().mList.length
  331. }
  332. function GetSldNum( href )
  333. {
  334. for(ii=0; ii<GetSldList().mList.length; ii++) {
  335. if ( GetSldList().mList[ii].mSldHref == href )
  336. return ii+1
  337. }
  338. return 1
  339. }
  340. function GetHrefObj( sldIdx ){ return GetSldList().mList[sldIdx-1] }
  341. function IsFramesMode(){ return ( SCREEN_MODE == "Frames" ) }
  342. function IsFullScrMode(){ return ( SCREEN_MODE == "FullScreen" ) }
  343. function GoToNextSld()
  344. {
  345. ii=gCurSld + 1
  346. if( GetHrefObj( ii-1 ).mOrigVis == 0 ) {
  347. if( ii<=GetSldList().mList.length ) {
  348. obj=GetHrefObj(ii)
  349. obj.mVis=1
  350. GoToSldNum(ii)
  351. return
  352. }
  353. }
  354. else {
  355. obj=GetHrefObj( ii )
  356. while ( obj && ( obj.mOrigVis == 0 ) )
  357. obj=GetHrefObj(++ii)
  358. if( obj && obj.mOrigVis ) {
  359. GoToSldNum(ii)
  360. return
  361. }
  362. }
  363. if( gSldStack.length > 1 )
  364. PopSldList();
  365. else if( !IsFramesMode() ) {
  366.                 if( gLoopCont )
  367. GoToFirst()
  368.                 else
  369. EndShow()
  370. }
  371. }
  372. function GoToPrevSld()
  373. {
  374. ii=gCurSld-1
  375. if( ii > 0 ) {
  376. obj=GetHrefObj(ii)
  377. while ( obj && ( obj.mVis == 0 ) && ( ii>0 ) )
  378. obj=GetHrefObj(--ii)
  379.         if( ii == 0 ) ii=1
  380. GoToSldNum(ii)
  381. }
  382. }
  383. function GoToFirst(){ GoToSld( GetHrefObj(1).mSldHref ) }
  384. function GoToLast()
  385. {
  386. ii=GetSldList().mList.length
  387. if( ii != gCurSld )
  388. GoToSld( GetHrefObj(ii).mSldHref )
  389. }
  390. function GoToSldNum( num )
  391. {
  392. if( PPTSld.event ) PPTSld.event.cancelBubble=true
  393. obj = GetHrefObj( num )
  394. obj.mVis=1
  395. gPrevSld=gCurSld
  396. gCurSld = num;
  397. PPTSld.location.replace(MHTMLPrefix+obj.mSldHref)
  398. if( IsFramesMode() ) {
  399. UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  400. }
  401. }
  402. function GoToSld( href )
  403. {
  404. if( PPTSld.event ) PPTSld.event.cancelBubble=true
  405. GetHrefObj( GetSldNum(href) ).mVis=1
  406. PPTSld.location.replace(MHTMLPrefix+href)
  407. }
  408. function SldUpdated( id )
  409. {
  410. if( id == GetHrefObj(gCurSld).mSldHref ) return
  411. gPrevSld=gCurSld
  412. gCurSld=GetSldNum(id)
  413. if( IsFramesMode() ) {
  414. UpdNavPane(); UpdOtlPane(); UpdNtsPane()
  415. }
  416. }
  417. function PrevSldViewed(){ GoToSld( GetHrefObj(gPrevSld).mSldHref ) }
  418. function HasPrevSld() { return ( gIsEndShow || ( gCurSld != 1 && GetHrefObj( gCurSld-1 ).mVis == 1 )||( GetCurSldNum() > 1 ) ) }
  419. function HasNextSld() { return (GetCurSldNum() != GetNumSlds()) }
  420. function CloseWindow() {
  421. if( HideMenu() ) return;
  422. var event = PPTSld.event;
  423. if( !IsFramesMode() && event && (event.keyCode==27 || event.keyCode==32 || event.type=="click" ) )
  424. window.close( self );
  425. CatchNumKeys( self, event );
  426. }
  427. function Unload() { gIsEndShow=0; }
  428. function SetupEndShow() {
  429. gIsEndShow=1;
  430. PPTSld.document.body.scroll="no";
  431. PPTSld.document.onkeypress=CloseWindow;
  432. PPTSld.document.onclick=CloseWindow;
  433. PPTSld.document.oncontextmenu=_CM;
  434. }
  435. function EndShow()
  436. {
  437. if( IsFramesMode() ) return
  438. if( PPTSld.event ) PPTSld.event.cancelBubble=true
  439. doc=PPTSld.document
  440. var dir = doc.body.dir
  441. if( dir != "rtl" ) dir = "ltr";
  442. doc.open()
  443. doc.writeln('<html><body dir=' + dir + ' bgcolor=black onload=parent.SetupEndShow() onunload=parent.Unload()><center><p><font face=Tahoma color=white size=2><br><b>' + ENDSHOW_MESG + '</b></font></p></center></body></html>')
  444. doc.close()
  445. }
  446. function SetSldVisited(){ GetSldList().mList[gCurSld-1].mVisited=true }
  447. function IsSldVisited(){ return GetSldList().mList[gCurSld-1].mVisited }
  448. function hrefList( sldHref, visible, advDelay, advClk )
  449. {
  450. this.mSldHref= this.mNtsHref = sldHref
  451. this.mOrigVis= this.mVis = visible
  452. this.mVisited= false
  453. this.mAdvDelay= advDelay
  454. this.mAdvOnClk= advClk
  455. }
  456. function SldList(arr,curSld,fEnd)
  457. {
  458. this.mCurSld = curSld;
  459. this.mList = new Array();
  460. var idx = 1;
  461. for(ii=0;ii<arr.length;ii++) {
  462. this.mList[ii] = new hrefList( arr[ii].mSldHref, arr[ii].mOrigVis, arr[ii].mAdvDelay, arr[ii].mAdvOnClk );
  463. if( arr[ii].mOrigVis )
  464. this.mList[ii].mSldIdx = idx++;
  465. }
  466. this.mNumVisSlds = idx-1;
  467. this.fEndShow = fEnd;
  468. }
  469. function GetSldList() { return gSldStack[gSldStack.length-1] }
  470. function GetCurSld() { return parent.GetSldList().mList[parent.gCurSld - 1] }
  471. gSldStack = new Array();
  472. gSldStack[0] = new SldList(gMainDoc,gCurSld,1)
  473. function ToggleOtlPane()
  474. {
  475. frmset=document.all("PPTHorizAdjust")
  476. frm=document.all("PPTOtl")
  477. if( gOtlOpen )
  478. frmset.cols="*,100%"
  479. else
  480. frmset.cols="25%,*"
  481. gOtlOpen=!gOtlOpen
  482. frm.noResize=!frm.noResize
  483. UpdOtNavPane()
  484. }
  485. function ToggleNtsPane()
  486. {
  487. frmset=document.all("PPTVertAdjust")
  488. frm=document.all("PPTNts")
  489. if( gNtsOpen )
  490. frmset.rows="100%,*"
  491. else
  492. frmset.rows="*,20%"
  493. gNtsOpen=!gNtsOpen
  494. UpdNtsPane()
  495. }
  496. /*********************************************
  497. Custom Shows implementation
  498. When ViewCustomShow() is called, we create
  499. a new array that is a subset of the slides in 
  500. the main doc. This list pushed on a stack so
  501. we can return after the end of the custom
  502. show.
  503. *********************************************/
  504. function ViewCustomShow(idx,fEnd)
  505. {
  506. if( !IsFullScrMode() ) return;
  507. var sldList = new Array();
  508. var custShow = custShowList[idx-1];
  509. var jj = 0;
  510. for( ii=0;ii<custShow.length;ii++ ) {
  511. if( custShow[ii] <= gMainDoc.length )
  512. sldList[jj++] = gMainDoc[custShow[ii]-1];
  513. }
  514. if (sldList.length > 0) {
  515. PushSldList(sldList,fEnd);
  516. gCurSld = 1;
  517. }
  518. else
  519. if( PPTSld.event ) PPTSld.event.cancelBubble=true
  520. }
  521. function PushSldList(arr,fEnd) {
  522. var ii = gSldStack.length;
  523. gSldStack[ii] = new SldList(arr,gCurSld,fEnd);
  524. GoToSld( gSldStack[ii].mList[0].mSldHref );
  525. }
  526. function PopSldList() {
  527. if (gSldStack[gSldStack.length-1].fEndShow)
  528. EndShow()
  529. else {
  530. gCurSld = gSldStack[gSldStack.length-1].mCurSld;
  531. gSldStack[gSldStack.length-1] = null;
  532. gSldStack.length--;
  533. var sldList = gSldStack[gSldStack.length-1];
  534. GoToSld( sldList.mList[gCurSld - 1].mSldHref );
  535. }
  536. }
  537. var custShowList=new Array();
  538. /*********************************************
  539.  Navigation button implementation
  540.  There are 2 types of buttons: ImgBtn, TxtBtn
  541.  implemented as function objects. They share
  542.  a similiar interface so the event handlers
  543.  can call SetActive, for example, on a button 
  544.  object without needing to know exactly 
  545.  what type of button it is.
  546. **********************************************/
  547. //----------------------------------
  548. function ImgBtn( oId,bId,w,action )
  549. //----------------------------------
  550. {
  551. var t=this
  552. t.Perform    = _IBP
  553. t.SetActive  = _IBSetA
  554. t.SetInactive= _IBSetI
  555. t.SetPressed = _IBSetP
  556. t.SetDisabled= _IBSetD
  557. t.Enabled    = _IBSetE
  558. t.ChangeIcon = null
  559. t.UserAction = action
  560. t.ChgState   = _IBUI
  561. t.mObjId   = oId
  562. t.mBorderId= bId
  563. t.mWidth   = w
  564. t.mIsOn    = t.mCurState = 0
  565. }
  566. function _IBSetA()
  567. {
  568. if( this.mIsOn ) {
  569. obj=this.ChgState( gHiliteClr,gShadowClr,2 )
  570. obj.style.posTop=0
  571. }
  572. }
  573. function _IBSetI()
  574. {
  575. if( this.mIsOn ) {
  576. obj=this.ChgState( gFaceClr,gFaceClr,1 )
  577. obj.style.posTop=0 
  578. }
  579. }
  580. function _IBSetP()
  581. {
  582. if( this.mIsOn ) {
  583. obj=this.ChgState( gShadowClr,gHiliteClr,2 )
  584. obj.style.posLeft+=1; obj.style.posTop+=1
  585. }
  586. }
  587. function _IBSetD()
  588. {  
  589. obj=this.ChgState( gFaceClr,gFaceClr,0 )
  590. obj.style.posTop=0 
  591. }
  592. function _IBSetE( state )
  593. {
  594. var t=this
  595. GetObj( t.mBorderId ).style.visibility="visible"
  596. if( state != t.mIsOn ) {
  597. t.mIsOn=state
  598. if( state )
  599. t.SetInactive()
  600. else
  601. t.SetDisabled()
  602. }
  603. }
  604. function _IBP()
  605. {
  606. var t=this
  607. if( t.mIsOn ) {
  608. if( t.UserAction != null )
  609. t.UserAction()
  610. if( t.ChangeIcon ) {
  611. obj=GetObj(t.mObjId)
  612. if( t.ChangeIcon() )
  613. obj.style.posLeft=obj.style.posLeft+(t.mCurState-4)*t.mWidth
  614. else
  615. obj.style.posLeft=obj.style.posLeft+(t.mCurState-0)*t.mWidth
  616. }
  617. t.SetActive()
  618. }  
  619. }
  620. function _IBUI( clr1,clr2,nextState )
  621. {
  622. var t=this
  623. SetBorder( GetObj( t.mBorderId ),clr1,clr2 )
  624. obj=GetObj( t.mObjId )
  625. obj.style.posLeft=obj.style.posLeft+(t.mCurState-nextState)*t.mWidth-obj.style.posTop
  626. t.mCurState=nextState
  627. return obj
  628. }
  629. //-----------------------------------------
  630. function TxtBtn( oId,oeId,action,chkState )
  631. //-----------------------------------------
  632. {
  633. var t=this
  634. t.Perform    = _TBP
  635. t.SetActive  = _TBSetA
  636. t.SetInactive= _TBSetI
  637. t.SetPressed = _TBSetP
  638. t.SetDisabled= _TBSetD
  639. t.SetEnabled = _TBSetE
  640. t.GetState   = chkState
  641. t.UserAction = action
  642. t.ChgState   = _TBUI
  643. t.mObjId      = oId
  644. t.m_elementsId= oeId
  645. t.mIsOn       = 1
  646. }
  647. function _TBSetA()
  648. {
  649. var t=this
  650. if( t.mIsOn && !t.GetState() )
  651. t.ChgState( gHiliteClr,gShadowClr,0,0 )
  652. }
  653. function _TBSetI()
  654. {
  655. var t=this
  656. if( t.mIsOn && !t.GetState() )
  657. t.ChgState( gFaceClr,gFaceClr,0,0 )
  658. }
  659. function _TBSetP()
  660. {
  661. if( this.mIsOn )
  662. this.ChgState( gShadowClr,gHiliteClr,1,1 )
  663. }
  664. function _TBSetD()
  665. {   
  666. this.ChgState( gFaceClr,gFaceClr,0,0 )
  667. this.mIsOn = 0
  668. }
  669. function _TBSetE()
  670. {
  671. var t=this
  672. if( !t.GetState() )
  673. t.ChgState( gFaceClr,gFaceClr,0,0 )
  674. else
  675. t.ChgState( gShadowClr,gHiliteClr,1,1 )
  676. t.mIsOn = 1
  677. }
  678. function _TBP()
  679. {
  680. var t=this
  681. if( t.mIsOn ) { 
  682. if( t.UserAction != null )
  683. t.UserAction()
  684.         if( !t.GetState )
  685.             return
  686. if( t.GetState() )
  687. t.SetPressed()
  688. else
  689. t.SetActive()
  690. }  
  691. }
  692. function _TBUI( clr1,clr2,lOffset,tOffset )
  693. {
  694. SetBorder( GetObj( this.mObjId ),clr1,clr2 )
  695. Offset( GetObj( this.m_elementsId ),lOffset,tOffset )
  696. }
  697. function Offset( obj, top, left ){ obj.style.top=top; obj.style.left=left }
  698. function SetBorder( obj, upperLeft, lowerRight )
  699. {
  700. s=obj.style;
  701. s.borderStyle      = "solid"
  702. s.borderWidth      = 1 
  703. s.borderLeftColor  = s.borderTopColor = upperLeft
  704. s.borderBottomColor= s.borderRightColor = lowerRight
  705. }
  706. function GetBtnObj(){ return gBtnArr[window.event.srcElement.id] }
  707. function BtnOnOver(){ b=GetBtnObj(); if( b != null ) b.SetActive() }
  708. function BtnOnDown(){ b=GetBtnObj(); if( b != null ) b.SetPressed() }
  709. function BtnOnOut(){ b=GetBtnObj(); if( b != null ) b.SetInactive() }
  710. function BtnOnUp()
  711. {
  712. b=GetBtnObj()
  713. if( b != null )
  714. b.Perform()
  715. else
  716. Upd()
  717. }
  718. function GetNtsState(){ return parent.gNtsOpen }
  719. function GetOtlState(){ return parent.gOtlOpen }
  720. function GetOtlTxtState(){ return parent.gOtlTxtExp }
  721. function NtsBtnSetFlag( fVal )
  722. {
  723. s=document.all.item( this.m_flagId ).style
  724. s.display="none"
  725. if( fVal )
  726. s.display=""
  727. else
  728. s.display="none"
  729. }
  730. function _BSetA_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetActive() }
  731. function _BSetI_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetInactive() }
  732. function _BSetP_Border(){ b = gBtnArr[this.mObjId]; if( b != null ) b.SetPressed() }
  733. function _BSetA_BorderImg()
  734. b = gBtnArr[this.mBorderId] 
  735. if( b != null && this.mIsOn && !b.GetState() ) {
  736. obj=this.ChgState( gHiliteClr,gShadowClr,2 )
  737. obj.style.posTop=0
  738. }
  739. }
  740. function _BSetI_BorderImg()
  741. b = gBtnArr[this.mBorderId]
  742. if( b != null && this.mIsOn && !b.GetState() ) {
  743. obj=this.ChgState( gFaceClr,gFaceClr,1 )
  744. obj.style.posTop=0
  745. }
  746. }
  747. var gHiliteClr="THREEDHIGHLIGHT",gShadowClr="THREEDSHADOW",gFaceClr="THREEDFACE"
  748. var gBtnArr = new Array()
  749. gBtnArr["nb_otl"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
  750. gBtnArr["nb_otlElem"] = new TxtBtn( "nb_otl","nb_otlElem",parent.ToggleOtlPane,GetOtlState )
  751. gBtnArr["nb_nts"] = new ImgBtn( "nb_nts","nb_ntsBorder",10,parent.ToggleNtsPane )
  752. gBtnArr["nb_nts"].SetActive = _BSetA_BorderImg;
  753. gBtnArr["nb_nts"].SetInactive = _BSetI_BorderImg;
  754. gBtnArr["nb_ntsBorder"] = new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.ToggleNtsPane,GetNtsState )
  755. gBtnArr["nb_ntsElem"] = new TxtBtn( "nb_ntsBorder","nb_ntsElem",parent.ToggleNtsPane,GetNtsState )
  756. gBtnArr["nb_prevBorder"] = gBtnArr["nb_prev"]= new ImgBtn( "nb_prev","nb_prevBorder",30,parent.GoToPrevSld )
  757. gBtnArr["nb_nextBorder"] = gBtnArr["nb_next"]= new ImgBtn( "nb_next","nb_nextBorder",30,parent.GoToNextSld )
  758. gBtnArr["nb_sldshw"]= new ImgBtn( "nb_sldshw","nb_sldshwBorder",18,parent.FullScreen )
  759. gBtnArr["nb_sldshwBorder"] = new TxtBtn( "nb_sldshw","nb_sldshwBorder",parent.FullScreen,null )
  760. gBtnArr["nb_sldshwBorder"].SetActive = _BSetA_Border;
  761. gBtnArr["nb_sldshwBorder"].SetInactive = _BSetI_Border;
  762. gBtnArr["nb_sldshwText"] = new TxtBtn( "nb_sldshw","nb_sldshwText",parent.FullScreen,null )
  763. gBtnArr["nb_sldshwText"].SetActive = _BSetA_Border;
  764. gBtnArr["nb_sldshwText"].SetInactive = _BSetI_Border;
  765. gBtnArr["nb_voice"] = gBtnArr["nb_voiceBorder"] = new ImgBtn( "nb_voice","nb_voiceBorder",18,parent.ToggleVNarration )
  766. gBtnArr["nb_otlTxtBorder"] = gBtnArr["nb_otlTxt"]= new ImgBtn( "nb_otlTxt","nb_otlTxtBorder",23,parent.ToggleOtlText )
  767. gBtnArr["nb_ntsBorder"].m_flagId= "nb_nts"
  768. gBtnArr["nb_ntsBorder"].SetFlag = NtsBtnSetFlag
  769. gBtnArr["nb_otlTxt"].ChangeIcon= GetOtlTxtState
  770. /*********************************************
  771.  Context menu implementation
  772.  _CM() is the function that's hooked up to
  773.  the oncontextmenu event. Once we're asked to
  774.  show the menu, we first build it by creating
  775.  DIVs on-the-fly. Then we position it 
  776.  within the screen area so it doesn't get
  777.  clipped.
  778.  Creating the DIVs using createElement() means
  779.  we don't have to write out any extra HTML
  780.  into the slide HTML files.
  781. **********************************************/
  782. var sNext="下一步",sPrev="上一步",sEnd="结束放映",sFont="宋体",sArrow="箭头",sFreeform="任意形状",sRect="矩形",sOval="椭圆"
  783. function ShowMenu()
  784. {
  785. BuildMenu();
  786. var doc=PPTSld.document.body,x=PPTSld.event.clientX+doc.scrollLeft,y=PPTSld.event.clientY+doc.scrollTop
  787. m = PPTSld.document.all.item("ctxtmenu")
  788. m.style.pixelLeft=x
  789. if( (x+m.scrollWidth > doc.clientWidth)&&(x-m.scrollWidth > 0) )
  790. m.style.pixelLeft=x-m.scrollWidth
  791. m.style.pixelTop=y
  792. if( (y+m.scrollHeight > doc.clientHeight)&&(y-m.scrollHeight > 0) )
  793. m.style.pixelTop=y-m.scrollHeight
  794. m.style.display=""
  795. }
  796. function _CM()
  797. {
  798. if( !parent.IsFullScrMode() ) return;
  799. if(!PPTSld.event.ctrlKey) {
  800. ShowMenu()
  801. return false
  802. } else
  803. HideMenu()
  804. }
  805. function BuildMenu()
  806. {
  807. if( PPTSld.document.all.item("ctxtmenu") ) return
  808. var mObj=CreateItem( PPTSld.document.body )
  809. mObj.id="ctxtmenu"
  810. mObj.style.visibility="hidden"
  811. var s=mObj.style
  812. s.position="absolute"
  813. s.cursor="default"
  814. s.width="120px"
  815. SetCMBorder(mObj,"menu","black")
  816. var iObj=CreateItem( mObj )
  817. SetCMBorder( iObj, "threedhighlight","threedshadow" )
  818. iObj.style.padding=2
  819. CreateMenuItem( iObj,sNext,M_GoNextSld,M_True )
  820. CreateMenuItem( iObj,sPrev,M_GoPrevSld,M_HasPrevSld )
  821. CreateSeparator( iObj )
  822. CreateMenuItem( iObj,sEnd,M_End,M_True )
  823. mObj.style.visibility="visible"
  824. }
  825. function Cancel() { window.event.cancelBubble=true; window.event.returnValue=false }
  826. function Highlight() { ChangeClr("activecaption","threedhighlight") }
  827. function Deselect() { ChangeClr("threedface","menutext") }
  828. function Perform()
  829. {
  830. e=PPTSld.event.srcElement
  831. if( e.type=="menuitem" && e.IsActive() )
  832. e.Action()
  833. else
  834. PPTSld.event.cancelBubble=true
  835. }
  836. function ChangeClr( bg,clr )
  837. {
  838. e=PPTSld.event.srcElement
  839. if( e.type=="menuitem" && e.IsActive() ) {
  840. e.style.backgroundColor=bg
  841. e.style.color=clr
  842. }
  843. }
  844. function M_HasPrevSld() { return( parent.HasPrevSld() ) }
  845. function M_GoNextSld() { if( gIsEndShow ) M_End(); else GoToNextSld() }
  846. function M_GoPrevSld() { if( gIsEndShow ) { gIsEndShow=0; history.back(); PPTSld.event.cancelBubble=true; } else GoToPrevSld() }
  847. function M_True() { return true }
  848. function M_End() { window.close( self ) }
  849. function CreateMenuItem( node,text,action,eval )
  850. {
  851. var e=CreateItem( node )
  852. e.type="menuitem"
  853. e.Action=action
  854. e.IsActive=eval
  855. e.innerHTML=text
  856. if( !e.IsActive() )
  857. e.style.color="threedshadow"
  858. e.onclick=Perform
  859. e.onmouseover=Highlight
  860. e.onmouseout=Deselect
  861. s=e.style;
  862. s.fontFamily=sFont
  863. s.fontSize="9pt"
  864. s.paddingLeft=2
  865. }
  866. function CreateSeparator( node )
  867. {
  868. var sObj=CreateItem( node )
  869. SetCMBorder(sObj,"menu","menu")
  870. var s=sObj.style
  871. s.borderTopColor="threedshadow"
  872. s.borderBottomColor="threedhighlight"
  873. s.height=1
  874. s.fontSize="0px"
  875. }
  876. function CreateItem( node )
  877. {
  878. var elem=PPTSld.document.createElement("DIV")
  879. node.insertBefore( elem )
  880. return elem
  881. }
  882. function SetCMBorder( o,ltClr,rbClr )
  883. {
  884. var s=o.style
  885. s.backgroundColor="menu"
  886. s.borderStyle="solid"
  887. s.borderWidth=1
  888. s.borderColor=ltClr+" "+rbClr+" "+rbClr+" "+ltClr
  889. }