forum_slide.js 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /*
  2. [Discuz!] (C)2001-2099 Comsenz Inc.
  3. This is NOT a freeware, use is subject to license terms
  4. $Id: forum_slide.js 23838 2011-08-11 06:51:58Z monkey $
  5. */
  6. if(isUndefined(sliderun)) {
  7. var sliderun = 1;
  8. function slide() {
  9. var s = new Object();
  10. s.slideId = Math.random();
  11. s.slideSpeed = slideSpeed;
  12. s.size = slideImgsize;
  13. s.imgs = slideImgs;
  14. s.imgLoad = new Array();
  15. s.imgnum = slideImgs.length;
  16. s.imgLinks = slideImgLinks;
  17. s.imgTexts = slideImgTexts;
  18. s.slideBorderColor = slideBorderColor;
  19. s.slideBgColor = slideBgColor;
  20. s.slideSwitchColor = slideSwitchColor;
  21. s.slideSwitchbgColor = slideSwitchbgColor;
  22. s.slideSwitchHiColor = slideSwitchHiColor;
  23. s.currentImg = 0;
  24. s.prevImg = 0;
  25. s.imgLoaded = 0;
  26. s.st = null;
  27. s.loadImage = function () {
  28. if(!s.imgnum) {
  29. return;
  30. }
  31. s.size[0] = parseInt(s.size[0]);
  32. s.size[1] = parseInt(s.size[1]);
  33. document.write('<div class="slideouter" id="outer_'+s.slideId+'" style="cursor:pointer;position:absolute;width:'+(s.size[0]-2)+'px;height:'+(s.size[1]-2)+'px;border:1px solid '+s.slideBorderColor+'"></div>');
  34. document.write('<table cellspacing="0" cellpadding="0" style="cursor:pointer;width:'+s.size[0]+'px;height:'+s.size[1]+'px;table-layout:fixed;overflow:hidden;background:'+s.slideBgColor+';text-align:center"><tr><td valign="middle" style="padding:0" id="slide_'+s.slideId+'">');
  35. document.write((typeof IMGDIR == 'undefined' ? '' : '<img src="'+IMGDIR+'/loading.gif" />') + '<br /><span id="percent_'+s.slideId+'">0%</span></td></tr></table>');
  36. document.write('<div id="switch_'+s.slideId+'" style="position:absolute;margin-left:1px;margin-top:-18px"></div>');
  37. $('outer_' + s.slideId).onclick = s.imageLink;
  38. for(i = 1;i < s.imgnum;i++) {
  39. switchdiv = document.createElement('div');
  40. switchdiv.id = 'switch_' + i + '_' + s.slideId;
  41. switchdiv.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(opacity=70)';
  42. switchdiv.style.opacity = 0.7;
  43. switchdiv.style.styleFloat = 'left';
  44. switchdiv.style.cssFloat = 'left';
  45. switchdiv.style.cursor = 'pointer';
  46. switchdiv.style.width = '17px';
  47. switchdiv.style.height = '17px';
  48. switchdiv.style.overflow = 'hidden';
  49. switchdiv.style.fontWeight = 'bold';
  50. switchdiv.style.textAlign = 'center';
  51. switchdiv.style.fontSize = '9px';
  52. switchdiv.style.color = s.slideSwitchColor;
  53. switchdiv.style.borderRight = '1px solid ' + s.slideBorderColor;
  54. switchdiv.style.borderTop = '1px solid ' + s.slideBorderColor;
  55. switchdiv.style.backgroundColor = s.slideSwitchbgColor;
  56. switchdiv.className = 'slideswitch';
  57. switchdiv.i = i;
  58. switchdiv.onclick = function () {
  59. s.switchImage(this);
  60. };
  61. switchdiv.innerHTML = i;
  62. $('switch_'+s.slideId).appendChild(switchdiv);
  63. s.imgLoad[i] = new Image();
  64. s.imgLoad[i].src = s.imgs[i];
  65. s.imgLoad[i].onerror = function () { s.imgLoaded++; };
  66. }
  67. s.loadCheck();
  68. };
  69. s.imageLink = function () {
  70. window.open(s.imgLinks[s.currentImg]);
  71. };
  72. s.switchImage = function (obj) {
  73. s.showImage(obj.i);
  74. s.interval();
  75. };
  76. s.loadCheck = function () {
  77. for(i = 1;i < s.imgnum;i++) {
  78. if(s.imgLoad[i].complete && !s.imgLoad[i].status) {
  79. s.imgLoaded++;
  80. s.imgLoad[i].status = 1;
  81. if(s.imgLoad[i].width > s.size[0] || s.imgLoad[i].height > s.size[1]) {
  82. zr = s.imgLoad[i].width / s.imgLoad[i].height;
  83. if(zr > 1) {
  84. s.imgLoad[i].height = s.size[1];
  85. s.imgLoad[i].width = s.size[1] * zr;
  86. } else {
  87. s.imgLoad[i].width = s.size[0];
  88. s.imgLoad[i].height = s.size[0] / zr;
  89. if(s.imgLoad[i].height > s.size[1]) {
  90. s.imgLoad[i].height = s.size[1];
  91. s.imgLoad[i].width = s.size[1] * zr;
  92. }
  93. }
  94. }
  95. }
  96. }
  97. if(s.imgLoaded < s.imgnum - 1) {
  98. $('percent_' + s.slideId).innerHTML = (parseInt(s.imgLoad.length / s.imgnum * 100)) + '%';
  99. setTimeout(function () { s.loadCheck(); }, 100);
  100. } else {
  101. for(i = 1;i < s.imgnum;i++) {
  102. s.imgLoad[i].onclick = s.imageLink;
  103. s.imgLoad[i].title = s.imgTexts[i];
  104. }
  105. s.showImage();
  106. s.interval();
  107. }
  108. };
  109. s.interval = function () {
  110. clearInterval(s.st);
  111. s.st = setInterval(function () { s.showImage(); }, s.slideSpeed);
  112. };
  113. s.showImage = function (i) {
  114. if(!i) {
  115. s.currentImg++;
  116. s.currentImg = s.currentImg < s.imgnum ? s.currentImg : 1;
  117. } else {
  118. s.currentImg = i;
  119. }
  120. if(s.prevImg) {
  121. $('switch_' + s.prevImg + '_' + s.slideId).style.backgroundColor = s.slideSwitchbgColor;
  122. }
  123. $('switch_' + s.currentImg + '_' + s.slideId).style.backgroundColor = s.slideSwitchHiColor;
  124. $('slide_' + s.slideId).innerHTML = '';
  125. $('slide_' + s.slideId).appendChild(s.imgLoad[s.currentImg]);
  126. s.prevImg = s.currentImg;
  127. };
  128. s.loadImage();
  129. }
  130. }
  131. slide();