/************************************************************************* This code is from Dynamic Web Coding at dyn-web.com Copyright 2008 by Sharon Paine See Terms of Use at www.dyn-web.com/business/terms.php regarding conditions under which you may use this code. This notice must be retained in the code as is! for use with dw_tooltip.js Version date: Aug 2008 (dw_Event.add instead of addLoadEvent for onload ) *************************************************************************/ // Used when the tooltip content is in HTML elements with tipContent class attached dw_Tooltip.writeStyleRule = function() { if ( document.createElement && document.getElementsByTagName && ( document.addEventListener || document.attachEvent ) ) { document.write(''); } } /////////////////////////////////////////////////////////////////////////////////// // Initialization: init tooltip and set up event delegation dw_Event.add( window, 'load', dw_Tooltip.init ); dw_Event.add( window, 'load', dw_Tooltip.initHandlers ); // removed in favor of event delegation function dw_initShowTip() {} // empty fn to avoid errors // fn's for ajax in head of ajax demo function dw_TooltipRequest() {} ///////////////////////////////////////////////////////////////////// // Positioning algorithms dw_Tooltip.positionWindowCenter = function() { var x = Math.round( (dw_Viewport.width - dw_Tooltip.tip.offsetWidth)/2 ) + dw_Viewport.scrollX; var y = Math.round( (dw_Viewport.height - dw_Tooltip.tip.offsetHeight)/2 ) + dw_Viewport.scrollY; dw_Tooltip.setPosition(x,y); } // more later or TBA ///////////////////////////////////////////////////////////////////// // formatting and display functions // for style sheet specs: id for stickyTable, // stickyBar class for tr, div classes: stickyTitle, stickyContent (inside td's) dw_Tooltip.wrapSticky = function(str, title) { title = title || ''; var src = dw_Tooltip.defaultProps['closeBoxImage']; var msg = '' + '' + '' + '
' + str + '
'; return msg; } // optional caption, optional width supported by all these wrapFn's dw_Tooltip.wrapToWidth = function(obj) { if (!obj) return ''; var str = obj['str']; var caption = obj['caption'] || ''; if ( this.sticky && this.defaultProps['showCloseBox'] ) { str = dw_Tooltip.wrapSticky(str, caption ); } else { if (caption) { str = '
' + obj['caption'] + '
' + str; } } if ( obj['w'] ) this.setTipWidth( obj['w'] ); return str; } // w, h in obj are width and height of image dw_Tooltip.wrapImageToWidth = function(obj) { if (!obj) return ''; dw_getImage( obj['img'] ); var caption = obj['caption'] || ''; var w = obj['w']; var str = ''; if ( this.sticky && this.defaultProps['showCloseBox'] ) { str = dw_Tooltip.wrapSticky(str, caption ); w += 8; // attempt to account for padding etc of inner wrapper } else { if (caption) { str = '
' + obj['caption'] + '
' + str; } } if (w) this.setTipWidth(w); return str; } // Image and text side by side // w is width to set tipDiv dw_Tooltip.wrapTextByImage = function(obj) { if (!obj) return ''; dw_getImage( obj['img'] ); var caption = obj['caption'] || ''; var str = '' + '' + '
' + obj['txt'] + '
' + '
'; if ( this.sticky && this.defaultProps['showCloseBox'] ) { str = dw_Tooltip.wrapSticky(str, caption ); } else { if (caption) { str = '
' + obj['caption'] + '
' + str; } } if ( obj['w'] ) this.setTipWidth( obj['w'] ); return str; } dw_Tooltip.wrapImageOverText = function(obj) { if (!obj) return ''; dw_getImage( obj['img'] ); var caption = obj['caption'] || ''; var str = '
' + obj['txt'] + '
'; if ( this.sticky && this.defaultProps['showCloseBox'] ) { str = dw_Tooltip.wrapSticky(str, caption ); } else { if (caption) { str = '
' + obj['caption'] + '
' + str; } } if ( obj['w'] ) this.setTipWidth( obj['w'] ); return str; } dw_Tooltip.wrapTextOverImage = function(obj) { if (!obj) return ''; dw_getImage( obj['img'] ); var caption = obj['caption'] || ''; var str = '
' + obj['txt'] + '
'; if ( this.sticky && this.defaultProps['showCloseBox'] ) { str = dw_Tooltip.wrapSticky(str, caption ); } else { if (caption) { str = '
' + obj['caption'] + '
' + str; } } if ( obj['w'] ) this.setTipWidth( obj['w'] ); return str; } // several functions include option of setting width dw_Tooltip.setTipWidth = function(w) { w += dw_backCompatWidth( this.tip ); // in case padding and border set on tipDiv this.tip.style.width = w + "px"; } ///////////////////////////////////////////////////////////////////// // a few utility functions function dw_getImage(src) { var img = new Image(); img.src = src; } // To obtain padding and border for setting width on an element function dw_backCompatWidth(el) { var val = 0; if ( el.currentStyle && !window.opera && (document.compatMode == null || document.compatMode == "BackCompat") ) { var p = parseInt( dw_getCurrentStyle(el, 'paddingLeft') ) + parseInt( dw_getCurrentStyle(el, 'paddingRight') ); var b = parseInt( dw_getCurrentStyle(el, 'borderLeftWidth') ) + parseInt( dw_getCurrentStyle(el, 'borderRightWidth') ) val = p + b; } return val; } // prop must be camelCase (e.g., paddingLeft, borderLeftWidth) function dw_getCurrentStyle(el, prop) { var val = ''; if (document.defaultView && document.defaultView.getComputedStyle) { val = document.defaultView.getComputedStyle(el, null)[prop]; } else if (el.currentStyle) { val = el.currentStyle[prop]; // from jquery, dean edwards, see http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 if ( !/^\d+(px)?$/i.test(val) && /^\d/.test(val) ) { var style = el.style.left; var runtimeStyle = el.runtimeStyle.left; el.runtimeStyle.left = el.currentStyle.left; el.style.left = val || 0; val = el.style.pixelLeft + "px"; el.style.left = style; el.runtimeStyle.left = runtimeStyle; } } return val; }