[ Index ] |
|
Code source de eGroupWare 1.2.106-2 |
1 /* 2 DynAPI Distribution 3 dynapi.functions.Image extension 4 */ 5 6 var f = dynapi.functions; 7 f.Image = {}; // used by dynapi.library 8 9 // Image Functions --------------------------- 10 11 f._imgTTL = 30000; // Image Time To Load (ms) 12 f.getImage = function(src,w,h,params) { 13 var img,name,p=params; 14 if(!p) name=src; 15 else name=(!p.alias)? src:p.alias; 16 img = dynapi.ximages[name]; 17 if(!img || (img && img.params!=params)){ // if user enters a new set of params then create a new image object 18 img=dynapi.ximages[name] = (w!=null&&h!=null)? new Image(w,h) : new Image(); 19 img.w=w||null; 20 img.h=h||null; 21 img.src=src;img.params=p; 22 img.getHTML=dynapi._imageGetHTML; 23 img.reload=dynapi._imageReload; 24 img.dtStart=new Date(); 25 if(p) { 26 var f=dynapi.functions; 27 if(p.oversrc) f.getImage(p.oversrc); 28 if(p.downsrc) f.getImage(p.downsrc); 29 } 30 if(!this._imgTmr && this._imgProgFn) this._imageProgress(); 31 } 32 return img; 33 }; 34 f.getFailedImages = function(){ 35 var ar=[]; 36 for(i in dynapi.ximages){ 37 img=dynapi.ximages[i]; 38 if(img && img.failed) ar[ar.length]=img; 39 } 40 return ar; 41 }; 42 f.captureImageProgress=function(fn){ //fn = fn(completed,failed,total); 43 this._imgProgFn=fn; 44 this._imageProgress(); 45 }; 46 f._imageProgress = function(){ 47 var i,c=0,f=0,t=0; 48 var img,dtEnd = new Date; 49 var fn=this._imgProgFn; 50 for(i in dynapi.ximages){ 51 img=dynapi.ximages[i]; 52 if(img && img.complete!=null){ 53 t++; 54 img.failed=(!img.complete && (dtEnd-img.dtStart)>this._imgTTL)? true:false; 55 if (img.complete) c++; 56 else if(img.failed) f++; 57 } 58 } 59 if(fn) fn(c,f,t); 60 if(c+f<t) this._imgTmr=window.setTimeout('dynapi.functions._imageProgress()',100); 61 else this._imgTmr=0; 62 }; 63 f.setImageTTL = function(ms){ 64 this._imgTTL=ms; 65 }; 66 67 68 dynapi._imageReload = function(){ 69 var t=this.src; 70 this.src=''; 71 this.src=t; 72 this.dtStart=new Date(); 73 this.failed=false; 74 dynapi.functions._imageProgress(); 75 }; 76 dynapi._imageHookArray={}; 77 dynapi._imageHook=function(anc,id,img,act,iSrc){ 78 var rt,f,tf,p=dynapi._imageHookArray[id]; 79 if(img && iSrc) img.src = iSrc; 80 if(p) { 81 f=p['on'+((act!='click')?'mouse':'')+act];tf=typeof(f); 82 if(f) rt=((tf=='string')? eval(f):f(act,anc,img,iSrc)); 83 if(anc && !dynapi.ua.ns4) anc.blur(); 84 } 85 return (!rt)? false:rt; 86 }; 87 dynapi._imageGetHTML=function(params){ 88 var c,i,t,text,dir,xtags=''; 89 var p=(params)? params:{}; 90 var lparams=(this.params)? this.params:{}; // opera can't do a for(i in object) on a null variable? 91 var forbid =',width,height,alias,src,tooltip,link,text,textdir,' 92 +'oversrc,downsrc,onclick,onmouseover,onmouseout,onmouseup,onmousedown,'; 93 for(i in lparams) {if(p[i]==null) p[i]=lparams[i]}; 94 if(!p.name) p.name='XImage'+dynapi.ximages['__xCnTer__']++; 95 if(p.border==null) p.border=0; 96 // setup width & height 97 if(this.width && this.w==null) this.w=this.width; 98 if(this.height && this.h==null) this.h=this.height; 99 text=p['text']; dir=p['textdir']; 100 t= '<img src="'+this.src+'"' 101 +((this.w)? ' width="'+this.w+'"':'') 102 +((this.h)? ' height="'+this.h+'"':'') 103 +((p['tooltip'])?' alt="'+p['tooltip']+'"':''); 104 c='return dynapi._imageHook(this,\''+p.name+'\','+((dynapi.ua.ns4)? '((this._dynobj)? this._dynobj.doc:document)':'document')+'.images[\''; 105 if(p.onclick) xtags=' onclick="'+c+p.name+'\'],\'click\');"'; 106 if(p.onmouseover||p.oversrc) xtags+=' onmouseover="'+c+p.name+'\'],\'over\',\''+((p.oversrc)?p.oversrc:'')+'\');"'; 107 if(p.onmouseout||p.oversrc) xtags+=' onmouseout="'+c+p.name+'\'],\'out\',\''+((p.oversrc)?this.src:'')+'\');"'; 108 if(p.onmousedown||p.downsrc) xtags+=' onmousedown="'+c+p.name+'\'],\'down\',\''+((p.downsrc)?p.downsrc:'')+'\');"'; 109 if(p.onmouseup||p.downsrc) xtags+=' onmouseup="'+c+p.name+'\'],\'up\',\''+((p.downsrc)?((p.oversrc)?p.oversrc:this.src):'')+'\');"'; 110 if(!p.link && (p.onclick||p.oversrc||p.downsrc)) p.link='javascript:;'; 111 if(!xtags && p.name.indexOf('XImage')==0) p.name=null; // remove name if not needed 112 for(i in p){if(forbid.indexOf(','+i+',')<0 && p[i]!=null) t+=' '+i+'="'+p[i]+'"';} 113 t+='>'; 114 if (text){ 115 dir=(dir)?(dir+'').toUpperCase():'E'; 116 if (dir=='N') t=text+'<br>'+t; 117 else if (dir=='S') t=t+'<br>'+text; 118 else if (dir=='E') t=t+text; 119 else if (dir=='W') t=text+t; 120 } 121 if(p.link) t='<a title="'+((p.tooltip)? p.tooltip:'')+'" href="'+p['link']+'"'+xtags+'>'+t+'</a>'; 122 if(xtags && p.name) dynapi._imageHookArray[p.name]=p; 123 return t; 124 };
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Feb 25 17:20:01 2007 | par Balluche grâce à PHPXref 0.7 |