emv.js
上传用户:hfhuasheng
上传日期:2007-08-09
资源大小:2125k
文件大小:14k
源码类别:

Internet/IE编程

开发平台:

HTML/CSS

  1. emv_ini()
  2. function emv_ini(){
  3. var l,x,y
  4. window.emv={}
  5. document.write("<style>v\:*{behavior:url(#default#vml)}</style>")
  6. lrc_ini()
  7. x=(document.body.clientWidth-600)/2
  8. y=(document.body.clientHeight-460)/2
  9. l="<div id=bxEmv ondragok=emv.dragOk() clientY="+y+" ondragstart=return(false) onselectstart=return(false) oncontextmenu=return(false) style=display:none;position:absolute;left:"+x+";top:"+y+";width:600;height:460;z-index:90>"
  10. l+="<div style=position:absolute;left:0;top:0;width:600;height:460;"+(isIE?"filter:progid:dximagetransform.microsoft.alphaimageloader(src=images/shadow_main.png)":"background:url(images/shadow_main.png)")+"></div>"
  11. l+="<img width=600 height=460 src=images/bg_main.gif>"
  12. l+="<table onmousedown=oDrag('bxEmv',event) style=position:absolute;left:0;top:0;height:26;width:585><tr><td></td></tr></table>"
  13. l+="<div onclick=emv.close() type=button src=images/btclose.gif style=position:absolute;left:562;top:6;width:15;height:15></div>"
  14. l+="<div id=btEmvPlay onclick=emv.play() type=button src=images/btplay.gif style=position:absolute;left:20;top:405;width:33;height:35></div>"
  15. l+="<div id=btEmvPause onclick=emv.pause() type=button src=images/btpause.gif style=display:none;position:absolute;left:20;top:405;width:33;height:35></div>"
  16. l+="<div id=barEmvPos style=position:absolute;left:25;top:389;width:0;height:10;overflow:hidden><img src=images/bar_pos.gif></div>"
  17. l+="<div id=btEmvPos onmousedown=oDrag(this,event) dragRange=25,389,553,389 ondrag=emv.dragPos() ondragok=emv.dragPosOk() type=button src=images/btpos.gif style=cursor:hand;position:absolute;left:25;top:389;width:20;height:11></div>"
  18. l+="<div id=barEmvVolume style=position:absolute;left:96;top:416;width:62;height:11;overflow:hidden><img src=images/bar_volume.gif></div>"
  19. l+="<div id=btEmvVolume onmousedown=oDrag(this,event) dragRange=96,416,154,416 ondrag=emv.dragVolume() type=button src=images/btvolume.gif style=cursor:hand;position:absolute;left:154;top:416;width:12;height:13></div>"
  20. l+="<div id=btEmvList onclick=emv.clickList() type=button src=images/btlist.gif style=position:absolute;left:54;top:409;width:25;height:27></div>"
  21. l+="<IE:download id=bxEmvLoad style=behavior:url(#default#download) />"
  22. l+="<img src=images/bg_def.jpg style=position:absolute;left:19;top:26;width:560;height:360>"
  23. l+="<div id=bxEmvScreen style=position:absolute;overflow:hidden;left:19;top:26;width:560;height:360></div>"
  24. l+="<object classid=clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95 id=mplayer style=display:none;position:absolute;left:19;top:26;width:560;height:360><param name=volume value=0><param name=ShowControls value=0><param name=ClickToPlay value=0><param name=EnableContextMenu value=0></object>"
  25. l+="<div id=bxEmvList style=display:none;background:black;position:absolute;padding:6;left:19;top:26;width:560;height:360;overflow:auto>"
  26. l+="<table id=bxEmvListTb width=100% cellpadding=2 cellspacing=0 style=color:white></table>"
  27. l+="</div>"
  28. l+="</div>"
  29. insHtm(document.body,l)
  30. button_ref()
  31. emv.add=function(url,name){
  32. var tb,tr,x,y
  33. x=(document.body.clientWidth-600)/2
  34. y=(document.body.clientHeight-460)/2
  35. oo("bxEmv").style.left=x
  36. oo("bxEmv").style.top=y
  37. oo("bxEmv").clientY=y
  38. oShow("bxEmv")
  39. tb=oo("bxEmvListTb")
  40. for(i=0;i<tb.rows.length;i++){
  41. if(tb.rows[i].url==url){
  42. if(tb.index==i)
  43. emv.play()
  44. else
  45. emv.play(i)
  46. return
  47. }
  48. }
  49. if(name==null)
  50. name=url.replace(/(.*/)(.*..*)/,"$2")
  51. tr=tb.insertRow()
  52. tr.onclick=function(){emv.play(tr.rowIndex)}
  53. tr.url=url
  54. tr.name=name
  55. td=tr.insertCell()
  56. td.innerHTML=(tr.rowIndex+1)+"."+name
  57. emv.play(tr.rowIndex)
  58. }
  59. emv.play=function(index){
  60. if(!isIE)
  61. return
  62. var tb=oo("bxEmvListTb"),url
  63. if(tb.index==index)
  64. return
  65. if(index==null){
  66. if(oo("mplayer").fileName!="")
  67. oo("mplayer").Play()
  68. return
  69. }
  70. oo("mplayer").Stop()
  71. if(tb.index!=null)
  72. tb.rows[tb.index].style.color=""
  73. tb.rows[index].style.color="#00FF00"
  74. tb.index=index
  75. oo("mplayer").show=0
  76. url=tb.rows[index].url
  77. if(/.txt+$/i.test(url)){
  78. oDel("bxCaption_l")
  79. oDel("bxCaption_l_cover")
  80. oDel("bxCaption_r")
  81. oDel("bxCaption_r_cover")
  82. if(tb.rows[index].data==null){
  83. oo("bxEmvScreen").innerHTML=emv.getWord("正在下载lrc歌词文件...","size:18;color:white;x:50;y:160")
  84. oo("bxEmvLoad").startDownload(url,function(data){lrc.setData(data)})
  85. oo("mplayer").fileName=""
  86. oo("mplayer").Stop()
  87. }
  88. else
  89. lrc.setData()
  90. }
  91. if(/.(mp3|wma)+$/i.test(url)){
  92. lrc.arr=null
  93. oo("mplayer").FileName=url
  94. oo("bxEmvScreen").innerHTML=emv.getWord("当前曲目:"+tb.rows[index].name,"size:18;color:white;x:50;y:160")
  95. }
  96. if(/.(mpg|wmv|avi)+$/i.test(url)){
  97. lrc.arr=null
  98. oo("bxEmvScreen").innerHTML="<div style=width:100%;height:100%;background:black></div>"
  99. oo("mplayer").show=1
  100. oo("mplayer").ShowControls=0
  101. oo("mplayer").ClickToPlay=0
  102. oo("mplayer").EnableContextMenu=0
  103. oo("mplayer").FileName=url
  104. }
  105. }
  106. emv.close=function(){
  107. oo("bxEmv").style.display="none"
  108. oo("mplayer").FileName=""
  109. }
  110. emv.pause=function(){
  111. oo("mplayer").Pause()
  112. }
  113. emv.dragOk=function(){
  114. oo("bxEmv").clientY=oo("bxEmv").offsetTop-document.body.scrollTop
  115. }
  116. emv.clickList=function(){
  117. var bx=oo("bxEmvList")
  118. bx.style.display=bx.style.display=="none"?"":"none"
  119. }
  120. emv.moveto=function(){
  121. if(dragObj!=null)
  122. return
  123. var dy=5,n=oo("bxEmv").offsetTop-document.body.scrollTop-oo("bxEmv").clientY
  124. if(n>dy)
  125. oo("bxEmv").style.top=oo("bxEmv").offsetTop-dy
  126. else if(n<-dy)
  127. oo("bxEmv").style.top=oo("bxEmv").offsetTop+dy
  128. else if(n!=0)
  129. oo("bxEmv").style.top=document.body.scrollTop+oo("bxEmv").clientY*1
  130. }
  131. emv.movePos=function(){
  132. var duration,mPos
  133. if(oo("mplayer").playState!=2)
  134. oHide("btEmvPause")
  135. else
  136. oShow("btEmvPause")
  137. if(oo("mplayer").CurrentPosition<=0){
  138. oo("btEmvPos").style.left=25
  139. oo("barEmvPos").style.width=oo("btEmvPos").offsetLeft-20
  140. return
  141. }
  142. duration=oo("mplayer").Duration
  143. mPos=oo("mplayer").CurrentPosition
  144. if(dragObj!=oo("btEmvPos")){
  145. oo("btEmvPos").style.left=(mPos/duration)*528+25
  146. oo("barEmvPos").style.width=oo("btEmvPos").offsetLeft-20
  147. }
  148. }
  149. emv.dragVolume=function(){
  150. var x
  151. x=oo("btEmvVolume").offsetLeft-92
  152. if(x!=oo("barEmvVolume").offsetWidth){
  153. oo("barEmvVolume").style.width=x
  154. mplayer.Volume=-Math.pow(1-x/62,2)*3050
  155. }
  156. }
  157. emv.dragPos=function(){
  158. var x
  159. x=oo("btEmvPos").offsetLeft-20
  160. if(x!=oo("barEmvPos").offsetWidth){
  161. oo("barEmvPos").style.width=x
  162. }
  163. }
  164. emv.dragPosOk=function(){
  165. oDel("bxCaption_l")
  166. oDel("bxCaption_l_cover")
  167. oDel("bxCaption_r")
  168. oDel("bxCaption_r_cover")
  169. oo("mplayer").CurrentPosition=oo("mplayer").Duration*oo("barEmvPos").offsetWidth/528
  170. }
  171. emv.playLrc=function(){
  172. var mPos=oo("mplayer").CurrentPosition
  173. var n,o,len,per,n0,n1,s
  174. if(mPos<=0||lrc.arr==null)
  175. return
  176. n=-1
  177. for(i=0;i<lrc.arr.length;i++){
  178. if(mPos<lrc.arr[i].slice(0,"|")*1)
  179. break
  180. n=i
  181. }
  182. if(n==-1)
  183. return
  184. if(lrc.i!=n){
  185. if(n==0){
  186. oHide("bxLrc_brief")
  187. lrc.write(lrc.arr[n].slice("|"),"l")
  188. }
  189. if(n!=lrc.i+1)
  190. lrc.write(lrc.arr[n].slice("|"),n%2==0?"l":"r")
  191. if(n<lrc.arr.length-1)
  192. lrc.write(lrc.arr[n+1].slice("|"),n%2==1?"l":"r")
  193. lrc.i=n
  194. bg=lrc.arr[n].replace(/<|>/g,";").get("bg")
  195. if(bg!=""){
  196. a="Blinds;Fade;GradientWipe;Pixelate(maxSquare=10);RandomBars;RandomDissolve".split(";")
  197. oo("bxLrc").style.filter="progid:DXImageTransform.Microsoft."+a[parseInt(Math.random()*a.length)]
  198. oo("bxLrc").filters[0].apply()
  199. lrc.cbg.style.zIndex=0
  200. lrc.cbg=oo("bxLrc_"+bg)
  201. lrc.cbg.style.zIndex=1
  202. oo("bxLrc").filters[0].play()
  203. }
  204. }
  205. n0=lrc.arr[n].slice(0,"|")
  206. n1=lrc.arr.length>n+1?lrc.arr[n+1].slice(0,"|"):n0*1+5
  207. o=oo("bxCaption_"+(n%2==0?"l":"r")+"_cover")
  208. len=o.time!=""?o.time*1:n1-n0
  209. per=(mPos-n0)/len
  210. for(i=0.01;i<1;i+=0.01){
  211. per1=lrc.getRealPos(o,i)
  212. if(per1>=per)
  213. break
  214. }
  215. o.style.width=o.width*i
  216. }
  217. emv.getWord=function(str,style){
  218. var l
  219. if(style==null)
  220. style=""
  221. l="<v:curve to=800,1 fillcolor="+style.get("color","black")+" strokecolor="+style.get("color","black")+" strokeweight="+style.get("border",1)
  222. l+=" style=position:absolute;left:"+style.get("x",0)+";top:"+style.get("y",0)+">"
  223. l+="<v:path textpathok=t /><v:textpath on=t string='"+str+"' style='font-family:"+style.get("face","楷体_gb2312")+";font-size:"+style.get("size",26)+";v-text-align:left' /></v:curve>"
  224. return l
  225. }
  226. emv.showPlayer=function(){
  227. var v
  228. v=oo("mplayer").show==1?"":"none"
  229. if(oo("bxEmvList").style.display=="")
  230. v="none"
  231. if(oo("mplayer").style.display!=v)
  232. oo("mplayer").style.display=v
  233. }
  234. emv.time=function(){
  235. if(!isIE||oo("mplayer")==null||oo("bxEmv").style.display=="none")
  236. return
  237. emv.showPlayer()
  238. emv.moveto()
  239. emv.movePos()
  240. lrc.loadPic()
  241. emv.playLrc()
  242. }
  243. timer.add("emv.time()")
  244. }
  245. function lrc_ini(){
  246. window.lrc={}
  247. lrc.wordPer=function(str,pos){
  248. return str.slice(0,pos).replace(/[^x00-xff]/g,"  ").length/str.replace(/[^x00-xff]/g,"  ").length
  249. }
  250. lrc.get=function(key,def){
  251. var a=new RegExp("\["+key+"\:(.+)\]","g").exec(lrc.data)
  252. return a==null?(def==null?"":def):a[1]
  253. }
  254. lrc.sortFoo=function(v1,v2){
  255. var s1=v1.split("|")[0],s2=v2.split("|")[0]
  256. if(!isNaN(s1)&&!isNaN(s2)){
  257. s1*=1
  258. s2*=1
  259. }
  260. return (s1==s2?0:(s1>s2?1:-1))
  261. }
  262. lrc.loadPic=function(){
  263. var bx=oo("bxLrc"),ol,i,n,l,y
  264. if(bx==null)
  265. return
  266. if(bx.load!=1)
  267. return
  268. ol=bx.childNodes
  269. n=0
  270. for(i=0;i<ol.length;i++){
  271. if(ol[i].readyState=="complete")
  272. n++
  273. }
  274. if(lrc.loadPic_i!=n)
  275. oo("bxLrc_load").innerHTML=emv.getWord("正在载入歌曲图片:"+(parseInt(n*100/ol.length))+"%","size:18;color:white")
  276. lrc.loadPic_i=n
  277. if(n==ol.length){
  278. oHide("bxLrc_load")
  279. oo("mplayer").FileName=lrc.get("url")
  280. oo("mplayer").Play()
  281. oShow(bx)
  282. bx.load=0
  283. l="<div id=bxLrc_brief style=position:absolute;left:30;top:160>"
  284. l+=emv.getWord(lrc.get("ti"),"color:black;border:3")+emv.getWord(lrc.get("ti"),"color:white")
  285. y=40
  286. s=lrc.get("al")
  287. if(s!=""){
  288. l+=emv.getWord("专辑:"+s,"y:"+y+";size:18;color:black;border:3")+emv.getWord("专辑:"+s,"y:"+y+";size:18;color:white")
  289. y+=25
  290. }
  291. s=lrc.get("ar")
  292. if(s!=""){
  293. l+=emv.getWord("演唱:"+s,"y:"+y+";size:18;color:black;border:3")+emv.getWord("演唱:"+s,"y:"+y+";size:18;color:white")
  294. y+=25
  295. }
  296. s=lrc.get("by")
  297. if(s!=""){
  298. l+=emv.getWord("制作:"+s,"y:"+y+";size:18;color:black;border:3")+emv.getWord("制作:"+s,"y:"+y+";size:18;color:white")
  299. y+=25
  300. }
  301. l+="</div>"
  302. insHtm("bxEmvScreen",l)
  303. }
  304. }
  305. lrc.setData=function(str){
  306. var tb=oo("bxEmvListTb")
  307. var l,a,i,ad,n,j,sBg
  308. if(str==null)
  309. str=tb.rows[tb.index].data
  310. else
  311. tb.rows[tb.index].data=str
  312. lrc.data=str
  313. if(lrc.get("url")==""){
  314. lrc.data=null
  315. oo("bxEmvScreen").innerHTML=emv.getWord("《"+tb.rows[tb.index].name+"》&#13;&#13;  歌词文件中没有指定歌曲url,请加入此项设定。","size:18;color:white;x:50;y:160")
  316. oo("mplayer").FileName=""
  317. return
  318. }
  319. str=str.replace(/|/g,"").replace(/rn/g,"n")
  320. str=str.replace(/[(dd):((d|.)+)]/g,function($0,$1,$2){return ($1*60+$2*1)+"|"})
  321. a=str.split("n")
  322. lrc.arr=new Array()
  323. lrc.color=lrc.get("color","blue")
  324. lrc.folder=lrc.get("folder")
  325. l="<div id=bxLrc load=1 style=position:absolute;left:0;top:0;width:560;height:360;display:nonex>"
  326. l+="<img id=bxLrc_bg src='"+lrc.folder+lrc.get("bg")+"' style=position:absolute;z-index:1>"
  327. for(i=0;i<a.length;i++){
  328. ad=a[i].split("|")
  329. s=ad[ad.length-1]
  330. sBg=s.replace(/<|>/,";").get("bg")
  331. if(sBg!=""&&l.indexOf("bxLrc_"+sBg)==-1){
  332. l+="<img id='bxLrc_"+sBg+"' src='"+lrc.folder+sBg+"' style=position:absolute>"
  333. }
  334. for(j=1;j<ad.length;j++){
  335. lrc.arr.add(ad[j-1]+"|"+s)
  336. }
  337. }
  338. l+="</div>"
  339. l+="<div id=bxLrc_load style=position:absolute;left:50;top:160>"+emv.getWord("正在载入图片:0%","size:18;color:white")+"</div>"
  340. lrc.i=-1
  341. lrc.arr.sort(lrc.sortFoo)
  342. oo("bxEmvScreen").innerHTML=l
  343. lrc.cbg=oo("bxLrc_bg")
  344. }
  345. lrc.getRealPos=function(obj,pos){
  346. var a=obj.path,zoom=obj.zoom,pos1=pos*zoom
  347. var a,i,ad
  348. for(i=0;i<a.length;i++){
  349. ad=a[i]
  350. if(pos<=ad[0])
  351. continue
  352. if(pos>ad[0]&&pos<=ad[1])
  353. pos1+=(zoom*ad[2]-zoom)*(pos-ad[0])
  354. else
  355. pos1+=(zoom*ad[2]-zoom)*(ad[1]-ad[0])
  356. }
  357. return pos1
  358. }
  359. lrc.write=function(str,pos){
  360. var word=str,style="",color=lrc.color
  361. var x,y,l,w,w1,o,a,i,ad,bg
  362. if(/^<.+>/.test(str)){
  363. word=str.slice(">")
  364. style=str.slice(1).slice(0,">")
  365. color=style.get("color",lrc.color)
  366. }
  367. w=word.replace(/[^x00-xff]/g,"  ").length*13+2
  368. if(pos=="l"){
  369. x=40
  370. y=285
  371. }
  372. else{
  373. x=520-w
  374. y=315
  375. }
  376. l="<div id=bxCaption_"+pos+" style='position:absolute;left:"+x+";top:"+y+";width:"+w+";height:32;overflow:hidden'>"
  377. l+=emv.getWord(word,"border:3;y:14;")+emv.getWord(word,"color:white;y:14")
  378. l+="</div>"
  379. l+="<div id=bxCaption_"+pos+"_cover width="+w+" style=position:absolute;left:"+x+";top:"+y+";width:0;height:32;overflow:hidden>"
  380. l+=emv.getWord(word,"color:white;border:3;y:14")+emv.getWord(word,"color:"+color+";y:14")
  381. l+="</div>"
  382. oDel("bxCaption_"+pos)
  383. oDel("bxCaption_"+pos+"_cover")
  384. insHtm("bxEmvScreen",l)
  385. o=oo("bxCaption_"+pos+"_cover")
  386. o.time=style.get("time")
  387. o.path=new Array()
  388. len1=1
  389. a=style.split(";")
  390. for(i=0;i<a.length;i++){
  391. if(!/(d+):(d+)/.test(a[i]))
  392. continue
  393. if(/(d+)-(d+):(d+)/.test(a[i])){
  394. ad=/(d+)-(d+):(d+)/.exec(a[i])
  395. ad[0]=lrc.wordPer(word,ad[1]-1)
  396. ad[1]=lrc.wordPer(word,ad[2]*1)
  397. ad[2]=ad[3]
  398. }
  399. else{
  400. ad=/(d+):(.+)/.exec(a[i])
  401. ad[0]=lrc.wordPer(word,ad[1]-1)
  402. ad[1]=lrc.wordPer(word,ad[1]*1)
  403. }
  404. len1+=(ad[1]-ad[0])*(ad[2]-1)
  405. o.path.add(ad)
  406. }
  407. o.zoom=1/len1
  408. }
  409. }