var HelpBalloon=Object.extend(Class.create(),{POS_DYNAMIC:-1,POS_TOP_LEFT:0,POS_TOP_RIGHT:1,POS_BOTTOM_LEFT:2,POS_BOTTOM_RIGHT:3,ELEMENT_CLASS_NAME:'HelpBalloon',_balloons:[],registerClassLinks:function(e){$A(document.getElementsByClassName(HelpBalloon.ELEMENT_CLASS_NAME)).each(function(obj){if(obj&&obj.tagName&&obj.href&&obj.href!=''){new HelpBalloon({icon:obj,method:'get'})}});Event.observe(document,'mousemove',HelpBalloon._trackMousePosition)},_mouseX:0,_mouseY:0,_trackMousePosition:function(e){if(!e)e=window.event;HelpBalloon._mouseX=e.clientX;HelpBalloon._mouseY=e.clientY}});Event.observe(window,'load',HelpBalloon.registerClassLinks);HelpBalloon.prototype={options:null,container:null,inner:null,icon:null,content:null,button:null,closer:null,titleContainer:null,bgContainer:null,balloons:null,_titleString:null,visible:false,drawn:false,balloonCoords:null,balloonDimensions:null,id:null,_lastBalloon:null,initialize:function(options){this.options=new HelpBalloon.Options();Object.extend(this.options,options||{});this._titleString=this.options.title;this.balloonDimensions=[0,0];this.balloons=[];for(var i=0;i<4;i++){var balloon=new Element('img',{src:this.options.balloonPrefix+i+this.options.balloonSuffix});this.balloons.push(balloon.src)}this._lastBalloon=balloon;this.button=new Element('img',{src:this.options.button});if(typeof this.options.icon=='string'){this.icon=new Element('img',{src:this.options.icon,id:this.id+"_icon"});Element.setStyle(this.icon,this.options.iconStyle)}else{this.icon=this.options.icon;this.options.returnElement=true}this.icon._HelpBalloon=this;for(i=0;i<this.options.useEvent.length;i++)Event.observe(this.icon,this.options.useEvent[i],this.toggle.bindAsEventListener(this));this.container=new Element('div');this.container._HelpBalloon=this;this.id='HelpBalloon_'+Element.identify(this.container);HelpBalloon._balloons.push(this);if(!this.options.returnElement){document.write('<span id="'+this.id+'"></span>');var te=$(this.id);var p=te.parentNode;p.insertBefore(this.icon,te);p.removeChild(te)}},toggle:function(event){if(!event)event=window.event||{type:this.options.useEvent,target:this.icon};var icon=Event.element(event);Event.stop(event);if(event.type==this.options.useEvent&&!this.visible&&icon==this.icon){this.show(event)}else this.hide()},show:function(event){if(!this.visible){if(!event)event=window.event;if(!this.drawn||!this.options.cacheRemoteContent)this._draw();this._reposition(event);this._hideOtherHelps();if(this.options.showEffect){this.options.showEffect(this.container,Object.extend(this.options.showEffectOptions,{afterFinish:this._afterShow.bindAsEventListener(this)}))}else{this._afterShow()}Event.observe(window,'resize',this._reposition.bindAsEventListener(this))}},_afterShow:function(){Element.setStyle(this.container,{'display':'block'});this._hideLowerElements();this.visible=true;if(this.options.autoHideTimeout){setTimeout(this._hideQueue.bind(this),this.options.autoHideTimeout)}},_hideQueue:function(){if(Position.within(this.container,HelpBalloon._mouseX,HelpBalloon._mouseY))setTimeout(this._hideQueue.bind(this),this.options.autoHideTimeout);else this.hide()},hide:function(){if(this.visible){this._showLowerElements();if(this.options.hideEffect){this.options.hideEffect(this.container,Object.extend(this.options.hideEffectOptions,{afterFinish:this._afterHide.bindAsEventListener(this)}))}else{this._afterHide()}Event.stopObserving(window,'resize',this._reposition.bindAsEventListener(this))}},_afterHide:function(){Element.setStyle(this.container,{'display':'none'});this.visible=false},_reposition:function(event){if(this.icon.tagName.toLowerCase()=='area'||!!this.icon.isMap){this.balloonCoords=Event.pointer(event)}else{this.balloonCoords=this._getXY(this.icon);var ho=this.icon.offsetWidth/2;var vo=this.icon.offsetHeight/2;var offsets=this.options.anchorPosition.split(/\s+/gi);if(offsets.length>2)offsets.length=2;for(var i=0;i<offsets.length;i++){switch(offsets[i].toLowerCase()){case'left':ho=0;break;case'right':ho=this.icon.offsetWidth;break;case'center':ho=this.icon.offsetWidth/2;break;case'top':vo=0;break;case'middle':vo=this.icon.offsetHeight/2;break;case'bottom':vo=this.icon.offsetHeight;break;default:var numVal=parseInt(offsets[i]);if(!isNaN(numVal)){if(i==0){if(numVal<0){ho=0}else{if(numVal>this.icon.offsetWidth)ho=this.icon.offsetWidth;else ho=numVal}}else{if(numVal<0){vo=0}else{if(numVal>this.icon.offsetHeight)vo=this.icon.offsetHeight;else vo=numVal}}}break}}this.balloonCoords.x+=ho;this.balloonCoords.y+=vo}var pos=1;if(this.options.fixedPosition==HelpBalloon.POS_DYNAMIC){var offsetHeight=this.balloonCoords.y-this.balloonDimensions[1];if(offsetHeight<0)pos+=2;var offsetWidth=this.balloonCoords.x+this.balloonDimensions[0];var ww=Prototype.Browser.IE?document.body.clientWidth:window.outerWidth;if(offsetWidth>ww)pos--}else pos=this.options.fixedPosition;var zx=0;var zy=0;switch(pos){case 0:zx=this.balloonCoords.x-this.balloonDimensions[0]+90;zy=this.balloonCoords.y-this.balloonDimensions[1];break;case 1:zx=this.balloonCoords.x-90;zy=this.balloonCoords.y-this.balloonDimensions[1];break;case 2:zx=this.balloonCoords.x-this.balloonDimensions[0]+90;zy=this.balloonCoords.y;break;case 3:zx=this.balloonCoords.x-90;zy=this.balloonCoords.y;break}var containerStyle={'zIndex':'1000','left':zx+"px",'top':zy+"px",'width':this.balloonDimensions[0]+'px','height':this.balloonDimensions[1]+'px'};if(Prototype.Browser.IE){if(this.balloons[pos].toLowerCase().indexOf('.png')>-1){Element.setStyle(this.bgContainer,{'left':'0px','top':'0px','filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.balloons[pos]+"', sizingMethod='scale')",'width':this.balloonDimensions[0]+'px','height':this.balloonDimensions[1]+'px','position':'absolute'})}else containerStyle['background']='transparent url('+this.balloons[pos]+') top left no-repeat'}else{containerStyle['background']='transparent url('+this.balloons[pos]+') top left no-repeat'}Element.setStyle(this.container,containerStyle)},_draw:function(){Element.setStyle(this.container,Object.extend(this.options.balloonStyle,{'position':'absolute','display':'none'}));var url=this.options.dataURL;if(this.icon.className=='a'){if(!this.options.dataURL&&this.icon.href!=''){url=this.icon.href;this.options.cacheRemoteContent=false}}if(url&&(!this.drawn||!this.options.cacheRemoteContent)){var cont=new Ajax.Request(this.options.dataURL,{asynchronous:false,evalJS:true,method:this.options.method});var doHTML=false;if(cont.transport.responseXML){var xml=cont.transport.responseXML.getElementsByTagName('HelpBalloon')[0];if(xml){if(!this.options.title){xmlTitle=xml.getElementsByTagName('title')[0];if(xmlTitle)this._titleString=xmlTitle.firstChild.nodeValue}xmlContent=xml.getElementsByTagName('content')[0];if(xmlContent)this.options.content=xmlContent.firstChild.nodeValue}else doHTML=true}else doHTML=true;if(doHTML){if(!this.options.title){var htmlTitle=cont.transport.responseText.match(/\<title\>([^\<]+)\<\/title\>/gi);if(htmlTitle){htmlTitle=htmlTitle.toString().replace(/\<title\>|\<\/title\>/gi,'');this._titleString=htmlTitle}}this.options.content=cont.transport.responseText}}this.balloonDimensions[0]=this._lastBalloon.width;this.balloonDimensions[1]=this._lastBalloon.height;var contentDimensions=[this.balloonDimensions[0]-(2*this.options.contentMargin),this.balloonDimensions[1]-(2*this.options.contentMargin)];var buttonDimensions=[this.button.width,this.button.height];if(!this.drawn){this.inner=new Element('div');this.titleContainer=new Element('div');this.inner.appendChild(this.titleContainer);if(Prototype.Browser.IE){this.bgContainer=new Element('div');this.container.appendChild(this.bgContainer);if(this.options.button.toLowerCase().indexOf('.png')>-1){this.closer=new Element('div');Element.setStyle(this.closer,{'filter':"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.options.button+"', sizingMethod='scale')"})}else{this.closer=this.button}}else{this.closer=this.button}Event.observe(this.closer,'click',this.toggle.bindAsEventListener(this));this.inner.appendChild(this.closer);this.content=new Element('div');this.inner.appendChild(this.content);this.container.appendChild(this.inner);document.getElementsByTagName('body')[0].appendChild(this.container);this.drawn=true}this.titleContainer.innerHTML='';this.titleContainer.appendChild(document.createTextNode(this._titleString));this.content.innerHTML=this.options.content;Element.setStyle(this.inner,{'position':'absolute','top':this.options.contentMargin+'px','left':this.options.contentMargin+'px','width':contentDimensions[0]+'px','height':contentDimensions[1]+'px'});Element.setStyle(this.titleContainer,{'width':(contentDimensions[0]-buttonDimensions[0])+'px','height':buttonDimensions[1]+'px','position':'absolute','overflow':'hidden','bottom':'0px','left':'0px'});Element.setStyle(this.titleContainer,this.options.titleStyle);Element.setStyle(this.closer,{'width':buttonDimensions[0]+'px','height':buttonDimensions[1]+'px','cursor':'pointer','position':'absolute','bottom':'0px','right':'0px'});Element.setStyle(this.content,{'width':contentDimensions[0]+'px','height':(contentDimensions[1]-this.button.height)+'px','overflow':'auto','position':'absolute','top':'0px','left':'0px','fontSize':'11px','fontWeight':'normal','color':'black'})},_getXY:function(obj){var pos=Position.cumulativeOffset(obj);var y=pos[1];var x=pos[0];var x2=x+parseInt(obj.offsetWidth);var y2=y+parseInt(obj.offsetHeight);return{'x':x,'y':y,'x2':x2,'y2':y2}},_isChild:function(obj){var i=15;do{if(obj==this.container)return true;obj=obj.parentNode}while(obj&&i--);return false},_isOver:function(this_obj){if(!this.visible)return false;if(this_obj==this.container||this._isChild(this_obj))return false;var this_coords=this._getXY(this_obj);var that_coords=this._getXY(this.container);if((((this_coords.x>=that_coords.x&&this_coords.x<=that_coords.x2)||(this_coords.x2>=that_coords.x&&this_coords.x2<=that_coords.x2))&&((this_coords.y>=that_coords.y&&this_coords.y<=that_coords.y2)||(this_coords.y2>=that_coords.y&&this_coords.y2<=that_coords.y2)))){return true}else return false},_showLowerElements:function(){if(this.options.hideUnderElementsInIE){var elements=this._getWeirdAPIElements();for(var i=0;i<elements.length;i++){if(this._isOver(elements[i])){if(elements[i].style.visibility!='visible'&&elements[i].hiddenBy==this){elements[i].style.visibility='visible';elements[i].hiddenBy=null}}}}},_hideLowerElements:function(){if(this.options.hideUnderElementsInIE){var elements=this._getWeirdAPIElements();for(var i=0;i<elements.length;i++){if(this._isOver(elements[i])){if(elements[i].style.visibility!='hidden'){elements[i].style.visibility='hidden';elements[i].hiddenBy=this}}}}},_getWeirdAPIElements:function(){if(!Prototype.Browser.IE)return[];var objs=['select','input','object'];var elements=[];for(var i=0;i<objs.length;i++){var e=document.getElementsByTagName(objs[i]);for(var j=0;j<e.length;j++){elements.push(e[j])}}return elements},_hideOtherHelps:function(e){if(this.options.hideOtherBalloonsOnDisplay){$A(HelpBalloon._balloons).each(function(obj){if(obj!=this){obj.hide()}}.bind(this))}}};HelpBalloon.Options=Class.create();HelpBalloon.Options.prototype={initialize:function(values){Object.extend(this,values||{})},showEffect:window.Scriptaculous?Effect.Appear:null,showEffectOptions:{duration:0.2},hideEffect:window.Scriptaculous?Effect.Fade:null,hideEffectOptions:{duration:0.2},returnElement:false,icon:'images/icon.gif',altText:'Click here for help with this topic.',dataURL:null,title:null,content:null,useEvent:['click'],method:'get',cacheRemoteContent:true,contentMargin:35,buttonX:246,buttonY:35,button:'images/button.png',balloonPrefix:'images/balloon-',balloonSuffix:'.png?x=1504',anchorPosition:'center middle',hideUnderElementsInIE:true,balloonStyle:{},titleStyle:{'color':'black','fontSize':'16px','fontWeight':'bold','fontFamily':'Verdana'},iconStyle:{'cursor':'pointer'},hideOtherBalloonsOnDisplay:true,fixedPosition:HelpBalloon.POS_DYNAMIC,autoHideTimeout:0};