[ Index ] |
|
Code source de Joomla 1.0.13 |
1 /* This notice must be untouched at all times. 2 3 wz_tooltip.js v. 3.34 4 5 The latest version is available at 6 http://www.walterzorn.com 7 or http://www.devira.com 8 or http://www.walterzorn.de 9 10 Copyright (c) 2002-2004 Walter Zorn. All rights reserved. 11 Created 1. 12. 2002 by Walter Zorn (Web: http://www.walterzorn.com ) 12 Last modified: 9. 9. 2005 13 14 Cross-browser tooltips working even in Opera 5 and 6, 15 as well as in NN 4, Gecko-Browsers, IE4+, Opera 7 and Konqueror. 16 No onmouseouts required. 17 Appearance of tooltips can be individually configured 18 via commands within the onmouseovers. 19 20 LICENSE: LGPL 21 22 This library is free software; you can redistribute it and/or 23 modify it under the terms of the GNU Lesser General Public 24 License (LGPL) as published by the Free Software Foundation; either 25 version 2.1 of the License, or (at your option) any later version. 26 27 This library is distributed in the hope that it will be useful, 28 but WITHOUT ANY WARRANTY; without even the implied warranty of 29 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 30 31 For more details on the GNU Lesser General Public License, 32 see http://www.gnu.org/copyleft/lesser.html 33 */ 34 35 36 37 //////////////// GLOBAL TOOPTIP CONFIGURATION ///////////////////// 38 var ttAbove = false; // tooltip above mousepointer? Alternative: true 39 var ttBgColor = "#e6ecff"; 40 var ttBgImg = ""; // path to background image; 41 var ttBorderColor = "#003399"; 42 var ttBorderWidth = 1; 43 var ttDelay = 500; // time span until tooltip shows up [milliseconds] 44 var ttFontColor = "#000066"; 45 var ttFontFace = "arial,helvetica,sans-serif"; 46 var ttFontSize = "11px"; 47 var ttFontWeight = "normal"; // alternative: "bold"; 48 var ttLeft = false; // tooltip on the left of the mouse? Alternative: true 49 var ttOffsetX = 12; // horizontal offset of left-top corner from mousepointer 50 var ttOffsetY = 15; // vertical offset " 51 var ttOpacity = 100; // opacity of tooltip in percent (must be integer between 0 and 100) 52 var ttPadding = 3; // spacing between border and content 53 var ttShadowColor = ""; 54 var ttShadowWidth = 0; 55 var ttStatic = false; // tooltip NOT move with the mouse? Alternative: true 56 var ttSticky = false; // do NOT hide tooltip on mouseout? Alternative: true 57 var ttTemp = 0; // time span after which the tooltip disappears; 0 (zero) means "infinite timespan" 58 var ttTextAlign = "left"; 59 var ttTitleColor = "#ffffff"; // color of caption text 60 var ttWidth = 300; 61 //////////////////// END OF TOOLTIP CONFIG //////////////////////// 62 63 64 65 ////////////// TAGS WITH TOOLTIP FUNCTIONALITY //////////////////// 66 // List may be extended or shortened: 67 var tt_tags = new Array("a","area","b","big","caption","center","code","dd","div","dl","dt","em","h1","h2","h3","h4","h5","h6","i","img","input","li","map","ol","p","pre","s","small","span","strike","strong","sub","sup","table","td","th","tr","tt","u","var","ul","layer"); 68 ///////////////////////////////////////////////////////////////////// 69 70 71 72 ///////// DON'T CHANGE ANYTHING BELOW THIS LINE ///////////////////// 73 var tt_obj, // current tooltip 74 tt_ifrm, // iframe to cover windowed controls in IE 75 tt_objW = 0, tt_objH = 0, // width and height of tt_obj 76 tt_objX = 0, tt_objY = 0, 77 tt_offX = 0, tt_offY = 0, 78 xlim = 0, ylim = 0, // right and bottom borders of visible client area 79 tt_sup = false, // true if T_ABOVE cmd 80 tt_sticky = false, // tt_obj sticky? 81 tt_wait = false, 82 tt_act = false, // tooltip visibility flag 83 tt_sub = false, // true while tooltip below mousepointer 84 tt_u = "undefined", 85 tt_mf, // stores previous mousemove evthandler 86 // Opera: disable href when hovering <a> 87 tt_tag = null; // stores hovered dom node, href and previous statusbar txt 88 89 90 var tt_db = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body? document.body : null, 91 tt_n = navigator.userAgent.toLowerCase(), 92 tt_nv = navigator.appVersion; 93 // Browser flags 94 var tt_op = !!(window.opera && document.getElementById), 95 tt_op6 = tt_op && !document.defaultView, 96 tt_op7 = tt_op && !tt_op6, 97 tt_ie = tt_n.indexOf("msie") != -1 && document.all && tt_db && !tt_op, 98 tt_ie6 = tt_ie && parseFloat(tt_nv.substring(tt_nv.indexOf("MSIE")+5)) >= 5.5; 99 tt_n4 = (document.layers && typeof document.classes != tt_u), 100 tt_n6 = (!tt_op && document.defaultView && typeof document.defaultView.getComputedStyle != tt_u), 101 tt_w3c = !tt_ie && !tt_n6 && !tt_op && document.getElementById; 102 103 function tt_Int(t_x) 104 { 105 var t_y; 106 return isNaN(t_y = parseInt(t_x))? 0 : t_y; 107 } 108 function wzReplace(t_x, t_y) 109 { 110 var t_ret = "", 111 t_str = this, 112 t_xI; 113 while((t_xI = t_str.indexOf(t_x)) != -1) 114 { 115 t_ret += t_str.substring(0, t_xI) + t_y; 116 t_str = t_str.substring(t_xI + t_x.length); 117 } 118 return t_ret+t_str; 119 } 120 String.prototype.wzReplace = wzReplace; 121 function tt_N4Tags(tagtyp, t_d, t_y) 122 { 123 t_d = t_d || document; 124 t_y = t_y || new Array(); 125 var t_x = (tagtyp=="a")? t_d.links : t_d.layers; 126 for(var z = t_x.length; z--;) t_y[t_y.length] = t_x[z]; 127 for(z = t_d.layers.length; z--;) t_y = tt_N4Tags(tagtyp, t_d.layers[z].document, t_y); 128 return t_y; 129 } 130 function tt_Htm(tt, t_id, txt) 131 { 132 var t_bgc = (typeof tt.T_BGCOLOR != tt_u)? tt.T_BGCOLOR : ttBgColor, 133 t_bgimg = (typeof tt.T_BGIMG != tt_u)? tt.T_BGIMG : ttBgImg, 134 t_bc = (typeof tt.T_BORDERCOLOR != tt_u)? tt.T_BORDERCOLOR : ttBorderColor, 135 t_bw = (typeof tt.T_BORDERWIDTH != tt_u)? tt.T_BORDERWIDTH : ttBorderWidth, 136 t_ff = (typeof tt.T_FONTFACE != tt_u)? tt.T_FONTFACE : ttFontFace, 137 t_fc = (typeof tt.T_FONTCOLOR != tt_u)? tt.T_FONTCOLOR : ttFontColor, 138 t_fsz = (typeof tt.T_FONTSIZE != tt_u)? tt.T_FONTSIZE : ttFontSize, 139 t_fwght = (typeof tt.T_FONTWEIGHT != tt_u)? tt.T_FONTWEIGHT : ttFontWeight, 140 t_opa = (typeof tt.T_OPACITY != tt_u)? tt.T_OPACITY : ttOpacity, 141 t_padd = (typeof tt.T_PADDING != tt_u)? tt.T_PADDING : ttPadding, 142 t_shc = (typeof tt.T_SHADOWCOLOR != tt_u)? tt.T_SHADOWCOLOR : (ttShadowColor || 0), 143 t_shw = (typeof tt.T_SHADOWWIDTH != tt_u)? tt.T_SHADOWWIDTH : (ttShadowWidth || 0), 144 t_algn = (typeof tt.T_TEXTALIGN != tt_u)? tt.T_TEXTALIGN : ttTextAlign, 145 t_tit = (typeof tt.T_TITLE != tt_u)? tt.T_TITLE : "", 146 t_titc = (typeof tt.T_TITLECOLOR != tt_u)? tt.T_TITLECOLOR : ttTitleColor, 147 t_w = (typeof tt.T_WIDTH != tt_u)? tt.T_WIDTH : ttWidth; 148 if(t_shc || t_shw) 149 { 150 t_shc = t_shc || "#cccccc"; 151 t_shw = t_shw || 5; 152 } 153 if(tt_n4 && (t_fsz == "10px" || t_fsz == "11px")) t_fsz = "12px"; 154 155 var t_optx = (tt_n4? '' : tt_n6? ('-moz-opacity:'+(t_opa/100.0)) : tt_ie? ('filter:Alpha(opacity='+t_opa+')') : ('opacity:'+(t_opa/100.0))) + ';'; 156 var t_y = '<div id="'+t_id+'" style="position:absolute;z-index:1010;'; 157 t_y += 'left:0px;top:0px;width:'+(t_w+t_shw)+'px;visibility:'+(tt_n4? 'hide' : 'hidden')+';'+t_optx+'">' + 158 '<table border="0" cellpadding="0" cellspacing="0"'+(t_bc? (' bgcolor="'+t_bc+'" style="background:'+t_bc+';"') : '')+' width="'+t_w+'">'; 159 if(t_tit) 160 { 161 t_y += '<tr><td style="padding-left:3px;padding-right:3px;" align="'+t_algn+'"><font color="'+t_titc+'" face="'+t_ff+'" ' + 162 'style="color:'+t_titc+';font-family:'+t_ff+';font-size:'+t_fsz+';"><b>' + 163 (tt_n4? ' ' : '')+t_tit+'<\/b><\/font><\/td><\/tr>'; 164 } 165 t_y += '<tr><td><table border="0" cellpadding="'+t_padd+'" cellspacing="'+t_bw+'" width="100%">' + 166 '<tr><td'+(t_bgc? (' bgcolor="'+t_bgc+'"') : '')+(t_bgimg? ' background="'+t_bgimg+'"' : '')+' style="text-align:'+t_algn+';'; 167 if(tt_n6) t_y += 'padding:'+t_padd+'px;'; 168 t_y += '" align="'+t_algn+'"><font color="'+t_fc+'" face="'+t_ff+'"' + 169 ' style="color:'+t_fc+';font-family:'+t_ff+';font-size:'+t_fsz+';font-weight:'+t_fwght+';">'; 170 if(t_fwght == 'bold') t_y += '<b>'; 171 t_y += txt; 172 if(t_fwght == 'bold') t_y += '<\/b>'; 173 t_y += '<\/font><\/td><\/tr><\/table><\/td><\/tr><\/table>'; 174 if(t_shw) 175 { 176 var t_spct = Math.round(t_shw*1.3); 177 if(tt_n4) 178 { 179 t_y += '<layer bgcolor="'+t_shc+'" left="'+t_w+'" top="'+t_spct+'" width="'+t_shw+'" height="0"><\/layer>' + 180 '<layer bgcolor="'+t_shc+'" left="'+t_spct+'" align="bottom" width="'+(t_w-t_spct)+'" height="'+t_shw+'"><\/layer>'; 181 } 182 else 183 { 184 t_optx = tt_n6? '-moz-opacity:0.85;' : tt_ie? 'filter:Alpha(opacity=85);' : 'opacity:0.85;'; 185 t_y += '<div id="'+t_id+'R" style="position:absolute;background:'+t_shc+';left:'+t_w+'px;top:'+t_spct+'px;width:'+t_shw+'px;height:1px;overflow:hidden;'+t_optx+'"><\/div>' + 186 '<div style="position:relative;background:'+t_shc+';left:'+t_spct+'px;top:0px;width:'+(t_w-t_spct)+'px;height:'+t_shw+'px;overflow:hidden;'+t_optx+'"><\/div>'; 187 } 188 } 189 return(t_y+'<\/div>' + 190 (tt_ie6 ? '<iframe id="TTiEiFrM" src="javascript:false" scrolling="no" frameborder="0" style="filter:Alpha(opacity=0);position:absolute;top:0px;left:0px;display:none;"><\/iframe>' : '')); 191 } 192 function tt_EvX(t_e) 193 { 194 var t_y = tt_Int(t_e.pageX || t_e.clientX || 0) + 195 tt_Int(tt_ie? tt_db.scrollLeft : 0) + 196 tt_offX; 197 if(t_y > xlim) t_y = xlim; 198 var t_scr = tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0); 199 if(t_y < t_scr) t_y = t_scr; 200 return t_y; 201 } 202 function tt_EvY(t_e) 203 { 204 var t_y = tt_Int(t_e.pageY || t_e.clientY || 0) + 205 tt_Int(tt_ie? tt_db.scrollTop : 0); 206 if(tt_sup) t_y -= (tt_objH + tt_offY - 15); 207 else if(t_y > ylim || !tt_sub && t_y > ylim-24) 208 { 209 t_y -= (tt_objH + 5); 210 tt_sub = false; 211 } 212 else 213 { 214 t_y += tt_offY; 215 tt_sub = true; 216 } 217 return t_y; 218 } 219 function tt_ReleasMov() 220 { 221 if(document.onmousemove == tt_Move) 222 { 223 if(!tt_mf && document.releaseEvents) document.releaseEvents(Event.MOUSEMOVE); 224 document.onmousemove = tt_mf; 225 } 226 } 227 function tt_ShowIfrm(t_x) 228 { 229 if(!tt_ie6 || !tt_obj) return; 230 tt_ifrm = document.getElementById("TTiEiFrM"); 231 //tt_obj.style.display = t_x? "block" : "none"; 232 if(t_x) 233 { 234 tt_ifrm.style.width = tt_objW+'px'; 235 tt_ifrm.style.height = tt_objH+'px'; 236 tt_ifrm.style.zIndex = tt_obj.style.zIndex - 1; 237 tt_ifrm.style.display = "block"; 238 } 239 else tt_ifrm.style.display = "none"; 240 } 241 function tt_GetDiv(t_id) 242 { 243 return( 244 tt_n4? (document.layers[t_id] || null) 245 : tt_ie? (document.all[t_id] || null) 246 : (document.getElementById(t_id) || null) 247 ); 248 } 249 function tt_GetDivW() 250 { 251 return tt_Int( 252 tt_n4? tt_obj.clip.width 253 : (tt_obj.style.pixelWidth || tt_obj.offsetWidth) 254 ); 255 } 256 function tt_GetDivH() 257 { 258 return tt_Int( 259 tt_n4? tt_obj.clip.height 260 : (tt_obj.style.pixelHeight || tt_obj.offsetHeight) 261 ); 262 } 263 264 // Compat with DragDrop Lib: Ensure that z-index of tooltip is lifted beyond toplevel dragdrop element 265 function tt_SetDivZ() 266 { 267 var t_i = tt_obj.style || tt_obj; 268 if(window.dd && dd.z) 269 t_i.zIndex = Math.max(dd.z+1, t_i.zIndex); 270 } 271 function tt_SetDivPos(t_x, t_y) 272 { 273 var t_i = tt_obj.style || tt_obj; 274 var t_px = (tt_op6 || tt_n4)? '' : 'px'; 275 t_i.left = (tt_objX = t_x) + t_px; 276 t_i.top = (tt_objY = t_y) + t_px; 277 if(tt_ifrm) 278 { 279 tt_ifrm.style.left = t_i.left; 280 tt_ifrm.style.top = t_i.top; 281 } 282 } 283 function tt_ShowDiv(t_x) 284 { 285 if(tt_n4) tt_obj.visibility = t_x? 'show' : 'hide'; 286 else tt_obj.style.visibility = t_x? 'visible' : 'hidden'; 287 tt_act = t_x; 288 tt_ShowIfrm(t_x); 289 } 290 function tt_OpDeHref(t_e) 291 { 292 var t_tag; 293 if(t_e) 294 { 295 t_tag = t_e.target; 296 while(t_tag) 297 { 298 if(t_tag.hasAttribute("href")) 299 { 300 tt_tag = t_tag 301 tt_tag.t_href = tt_tag.getAttribute("href"); 302 tt_tag.removeAttribute("href"); 303 tt_tag.style.cursor = "hand"; 304 tt_tag.onmousedown = tt_OpReHref; 305 tt_tag.stats = window.status; 306 window.status = tt_tag.t_href; 307 break; 308 } 309 t_tag = t_tag.parentElement; 310 } 311 } 312 } 313 function tt_OpReHref() 314 { 315 if(tt_tag) 316 { 317 tt_tag.setAttribute("href", tt_tag.t_href); 318 window.status = tt_tag.stats; 319 tt_tag = null; 320 } 321 } 322 function tt_Show(t_e, t_id, t_sup, t_delay, t_fix, t_left, t_offx, t_offy, t_static, t_sticky, t_temp) 323 { 324 if(tt_obj) tt_Hide(); 325 tt_mf = document.onmousemove || null; 326 if(window.dd && (window.DRAG && tt_mf == DRAG || window.RESIZE && tt_mf == RESIZE)) return; 327 var t_uf = document.onmouseup || null, t_sh, t_h; 328 if(tt_mf && t_uf) t_uf(t_e); 329 330 tt_obj = tt_GetDiv(t_id); 331 if(tt_obj) 332 { 333 t_e = t_e || window.event; 334 tt_sub = !(tt_sup = t_sup); 335 tt_sticky = t_sticky; 336 tt_objW = tt_GetDivW(); 337 tt_objH = tt_GetDivH(); 338 tt_offX = t_left? -(tt_objW+t_offx) : t_offx; 339 tt_offY = t_offy; 340 if(tt_op7) tt_OpDeHref(t_e); 341 if(tt_n4) 342 { 343 if(tt_obj.document.layers.length) 344 { 345 t_sh = tt_obj.document.layers[0]; 346 t_sh.clip.height = tt_objH - Math.round(t_sh.clip.width*1.3); 347 } 348 } 349 else 350 { 351 t_sh = tt_GetDiv(t_id+'R'); 352 if(t_sh) 353 { 354 t_h = tt_objH - tt_Int(t_sh.style.pixelTop || t_sh.style.top || 0); 355 if(typeof t_sh.style.pixelHeight != tt_u) t_sh.style.pixelHeight = t_h; 356 else t_sh.style.height = t_h+'px'; 357 } 358 } 359 360 xlim = tt_Int((tt_db && tt_db.clientWidth)? tt_db.clientWidth : window.innerWidth) + 361 tt_Int(window.pageXOffset || (tt_db? tt_db.scrollLeft : 0) || 0) - 362 tt_objW - 363 (tt_n4? 21 : 0); 364 ylim = tt_Int(window.innerHeight || tt_db.clientHeight) + 365 tt_Int(window.pageYOffset || (tt_db? tt_db.scrollTop : 0) || 0) - 366 tt_objH - tt_offY; 367 368 tt_SetDivZ(); 369 if(t_fix) tt_SetDivPos(tt_Int((t_fix = t_fix.split(','))[0]), tt_Int(t_fix[1])); 370 else tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e)); 371 372 var t_txt = 'tt_ShowDiv(\'true\');'; 373 if(t_sticky) t_txt += '{'+ 374 'tt_ReleasMov();'+ 375 'window.tt_upFunc = document.onmouseup || null;'+ 376 'if(document.captureEvents) document.captureEvents(Event.MOUSEUP);'+ 377 'document.onmouseup = new Function("window.setTimeout(\'tt_Hide();\', 10);");'+ 378 '}'; 379 else if(t_static) t_txt += 'tt_ReleasMov();'; 380 if(t_temp > 0) t_txt += 'window.tt_rtm = window.setTimeout(\'tt_sticky = false; tt_Hide();\','+t_temp+');'; 381 window.tt_rdl = window.setTimeout(t_txt, t_delay); 382 383 if(!t_fix) 384 { 385 if(document.captureEvents) document.captureEvents(Event.MOUSEMOVE); 386 document.onmousemove = tt_Move; 387 } 388 } 389 } 390 var tt_area = false; 391 function tt_Move(t_ev) 392 { 393 if(!tt_obj) return; 394 if(tt_n6 || tt_w3c) 395 { 396 if(tt_wait) return; 397 tt_wait = true; 398 setTimeout('tt_wait = false;', 5); 399 } 400 var t_e = t_ev || window.event; 401 tt_SetDivPos(tt_EvX(t_e), tt_EvY(t_e)); 402 if(tt_op6) 403 { 404 if(tt_area && t_e.target.tagName != 'AREA') tt_Hide(); 405 else if(t_e.target.tagName == 'AREA') tt_area = true; 406 } 407 } 408 function tt_Hide() 409 { 410 if(window.tt_obj) 411 { 412 if(window.tt_rdl) window.clearTimeout(tt_rdl); 413 if(!tt_sticky || !tt_act) 414 { 415 if(window.tt_rtm) window.clearTimeout(tt_rtm); 416 tt_ShowDiv(false); 417 tt_SetDivPos(-tt_objW, -tt_objH); 418 tt_obj = null; 419 if(typeof window.tt_upFunc != tt_u) document.onmouseup = window.tt_upFunc; 420 } 421 tt_sticky = false; 422 if(tt_op6 && tt_area) tt_area = false; 423 tt_ReleasMov(); 424 if(tt_op7) tt_OpReHref(); 425 } 426 } 427 function tt_Init() 428 { 429 if(!(tt_op || tt_n4 || tt_n6 || tt_ie || tt_w3c)) return; 430 431 var htm = tt_n4? '<div style="position:absolute;"><\/div>' : '', 432 tags, 433 t_tj, 434 over, 435 esc = 'return escape('; 436 var i = tt_tags.length; while(i--) 437 { 438 tags = tt_ie? (document.all.tags(tt_tags[i]) || 1) 439 : document.getElementsByTagName? (document.getElementsByTagName(tt_tags[i]) || 1) 440 : (!tt_n4 && tt_tags[i]=="a")? document.links 441 : 1; 442 if(tt_n4 && (tt_tags[i] == "a" || tt_tags[i] == "layer")) tags = tt_N4Tags(tt_tags[i]); 443 var j = tags.length; while(j--) 444 { 445 if(typeof (t_tj = tags[j]).onmouseover == "function" && t_tj.onmouseover.toString().indexOf(esc) != -1 && !tt_n6 || tt_n6 && (over = t_tj.getAttribute("onmouseover")) && over.indexOf(esc) != -1) 446 { 447 if(over) t_tj.onmouseover = new Function(over); 448 var txt = unescape(t_tj.onmouseover()); 449 htm += tt_Htm( 450 t_tj, 451 "tOoLtIp"+i+""+j, 452 txt.wzReplace("& ","&") 453 ); 454 455 t_tj.onmouseover = new Function('e', 456 'tt_Show(e,'+ 457 '"tOoLtIp' +i+''+j+ '",'+ 458 ((typeof t_tj.T_ABOVE != tt_u)? t_tj.T_ABOVE : ttAbove)+','+ 459 ((typeof t_tj.T_DELAY != tt_u)? t_tj.T_DELAY : ttDelay)+','+ 460 ((typeof t_tj.T_FIX != tt_u)? '"'+t_tj.T_FIX+'"' : '""')+','+ 461 ((typeof t_tj.T_LEFT != tt_u)? t_tj.T_LEFT : ttLeft)+','+ 462 ((typeof t_tj.T_OFFSETX != tt_u)? t_tj.T_OFFSETX : ttOffsetX)+','+ 463 ((typeof t_tj.T_OFFSETY != tt_u)? t_tj.T_OFFSETY : ttOffsetY)+','+ 464 ((typeof t_tj.T_STATIC != tt_u)? t_tj.T_STATIC : ttStatic)+','+ 465 ((typeof t_tj.T_STICKY != tt_u)? t_tj.T_STICKY : ttSticky)+','+ 466 ((typeof t_tj.T_TEMP != tt_u)? t_tj.T_TEMP : ttTemp)+ 467 ');' 468 ); 469 t_tj.onmouseout = tt_Hide; 470 if(t_tj.alt) t_tj.alt = ""; 471 if(t_tj.title) t_tj.title = ""; 472 } 473 } 474 } 475 document.write(htm); 476 } 477 tt_Init();
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 14:43:32 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |