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(A){$A(document.getElementsByClassName(HelpBalloon.ELEMENT_CLASS_NAME)).each(function(B){if(B&&B.tagName&&B.href&&B.href!=""){new HelpBalloon({icon:B,method:"get"})}});Event.observe(document,"mousemove",HelpBalloon._trackMousePosition)},_mouseX:0,_mouseY:0,_trackMousePosition:function(A){if(!A){A=window.event}HelpBalloon._mouseX=A.clientX;HelpBalloon._mouseY=A.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(A){this.options=new HelpBalloon.Options();Object.extend(this.options,A||{});this._titleString=this.options.title;this.balloonDimensions=[0,0];this.balloons=[];for(var B=0;B<4;B++){var C=new Element("img",{src:this.options.balloonPrefix+B+this.options.balloonSuffix});this.balloons.push(C.src)}this._lastBalloon=C;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(B=0;B<this.options.useEvent.length;B++){Event.observe(this.icon,this.options.useEvent[B],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 E=$(this.id);var D=E.parentNode;D.insertBefore(this.icon,E);D.removeChild(E)}},toggle:function(B){if(!B){B=window.event||{type:this.options.useEvent,target:this.icon}}var A=Event.element(B);Event.stop(B);if(B.type==this.options.useEvent&&!this.visible&&A==this.icon){this.show(B)}else{this.hide()}},show:function(A){if(!this.visible){if(!A){A=window.event}if(!this.drawn||!this.options.cacheRemoteContent){this._draw()}this._reposition(A);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(A){if(this.icon.tagName.toLowerCase()=="area"||!!this.icon.isMap){this.balloonCoords=Event.pointer(A)}else{this.balloonCoords=this._getXY(this.icon);var M=this.icon.offsetWidth/2;var B=this.icon.offsetHeight/2;var E=this.options.anchorPosition.split(/\s+/gi);if(E.length>2){E.length=2}for(var I=0;I<E.length;I++){switch(E[I].toLowerCase()){case"left":M=0;break;case"right":M=this.icon.offsetWidth;break;case"center":M=this.icon.offsetWidth/2;break;case"top":B=0;break;case"middle":B=this.icon.offsetHeight/2;break;case"bottom":B=this.icon.offsetHeight;break;default:var G=parseInt(E[I]);if(!isNaN(G)){if(I==0){if(G<0){M=0}else{if(G>this.icon.offsetWidth){M=this.icon.offsetWidth}else{M=G}}}else{if(G<0){B=0}else{if(G>this.icon.offsetHeight){B=this.icon.offsetHeight}else{B=G}}}}break}}this.balloonCoords.x+=M;this.balloonCoords.y+=B}var L=1;if(this.options.fixedPosition==HelpBalloon.POS_DYNAMIC){var C=this.balloonCoords.y-this.balloonDimensions[1];if(C<0){L+=2}var J=this.balloonCoords.x+this.balloonDimensions[0];var H=Prototype.Browser.IE?document.body.clientWidth:window.outerWidth;if(J>H){L--}}else{L=this.options.fixedPosition}var F=0;var D=0;switch(L){case 0:F=this.balloonCoords.x-this.balloonDimensions[0];D=this.balloonCoords.y-this.balloonDimensions[1];break;case 1:F=this.balloonCoords.x;D=this.balloonCoords.y-this.balloonDimensions[1];break;case 2:F=this.balloonCoords.x-this.balloonDimensions[0];D=this.balloonCoords.y;break;case 3:F=this.balloonCoords.x;D=this.balloonCoords.y;break}var K={left:F+"px",top:D+"px",width:this.balloonDimensions[0]+"px",height:this.balloonDimensions[1]+"px"};if(Prototype.Browser.IE){if(this.balloons[L].toLowerCase().indexOf(".png")>-1){Element.setStyle(this.bgContainer,{left:"0px",top:"0px",filter:"progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+this.balloons[L]+"', sizingMethod='scale')",width:this.balloonDimensions[0]+"px",height:this.balloonDimensions[1]+"px",position:"absolute"})}else{K.background="transparent url("+this.balloons[L]+") top left no-repeat"}}else{K.background="transparent url("+this.balloons[L]+") top left no-repeat"}Element.setStyle(this.container,K)},_draw:function(){Element.setStyle(this.container,Object.extend(this.options.balloonStyle,{position:"absolute",display:"none"}));var C=this.options.dataURL;if(this.icon.className=="a"){if(!this.options.dataURL&&this.icon.href!=""){C=this.icon.href;this.options.cacheRemoteContent=false}}if(C&&(!this.drawn||!this.options.cacheRemoteContent)){var A=new Ajax.Request(this.options.dataURL,{asynchronous:false,method:this.options.method});var E=false;if(A.transport.responseXML){var B=A.transport.responseXML.getElementsByTagName("HelpBalloon")[0];if(B){if(!this.options.title){xmlTitle=B.getElementsByTagName("title")[0];if(xmlTitle){this._titleString=xmlTitle.firstChild.nodeValue}}xmlContent=B.getElementsByTagName("content")[0];if(xmlContent){this.options.content=xmlContent.firstChild.nodeValue}}else{E=true}}else{E=true}if(E){if(!this.options.title){var D=A.transport.responseText.match(/\<title\>([^\<]+)\<\/title\>/gi);if(D){D=D.toString().replace(/\<title\>|\<\/title\>/gi,"");this._titleString=D}}this.options.content=A.transport.responseText}}this.balloonDimensions[0]=this._lastBalloon.width;this.balloonDimensions[1]=this._lastBalloon.height;var G=[this.balloonDimensions[0]-(2*this.options.contentMargin),this.balloonDimensions[1]-(2*this.options.contentMargin)];var F=[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.options.button.toLowerCase().indexOf(".png")>-1){this.bgContainer=new Element("div");this.container.appendChild(this.bgContainer);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}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:G[0]+"px",height:G[1]+"px"});Element.setStyle(this.titleContainer,{width:(G[0]-F[0])+"px",height:F[1]+"px",position:"absolute",overflow:"hidden",top:"0px",left:"0px"});Element.setStyle(this.titleContainer,this.options.titleStyle);Element.setStyle(this.closer,{width:F[0]+"px",height:F[1]+"px",cursor:"pointer",position:"absolute",top:"0px",right:"0px"});Element.setStyle(this.content,{width:G[0]+"px",height:(G[1]-this.button.height)+"px",overflow:"auto",position:"absolute",top:F[1]+"px",left:"0px",fontFamily:"verdana",fontSize:"11px",fontWeight:"normal",color:"black"})},_getXY:function(D){var F=Position.cumulativeOffset(D);var E=F[1];var A=F[0];var B=A+parseInt(D.offsetWidth);var C=E+parseInt(D.offsetHeight);return{x:A,y:E,x2:B,y2:C}},_isChild:function(B){var A=15;do{if(B==this.container){return true}B=B.parentNode}while(B&&A--);return false},_isOver:function(C){if(!this.visible){return false}if(C==this.container||this._isChild(C)){return false}var A=this._getXY(C);var B=this._getXY(this.container);if((((A.x>=B.x&&A.x<=B.x2)||(A.x2>=B.x&&A.x2<=B.x2))&&((A.y>=B.y&&A.y<=B.y2)||(A.y2>=B.y&&A.y2<=B.y2)))){return true}else{return false}},_showLowerElements:function(){if(this.options.hideUnderElementsInIE){var B=this._getWeirdAPIElements();for(var A=0;A<B.length;A++){if(this._isOver(B[A])){if(B[A].style.visibility!="visible"&&B[A].hiddenBy==this){B[A].style.visibility="visible";B[A].hiddenBy=null}}}}},_hideLowerElements:function(){if(this.options.hideUnderElementsInIE){var B=this._getWeirdAPIElements();for(var A=0;A<B.length;A++){if(this._isOver(B[A])){if(B[A].style.visibility!="hidden"){B[A].style.visibility="hidden";B[A].hiddenBy=this}}}}},_getWeirdAPIElements:function(){if(!Prototype.Browser.IE){return[]}var E=["select","input","object"];var C=[];for(var B=0;B<E.length;B++){var D=document.getElementsByTagName(E[B]);for(var A=0;A<D.length;A++){C.push(D[A])}}return C},_hideOtherHelps:function(A){if(this.options.hideOtherBalloonsOnDisplay){$A(HelpBalloon._balloons).each(function(B){if(B!=this){B.hide()}}.bind(this))}}};HelpBalloon.Options=Class.create();HelpBalloon.Options.prototype={initialize:function(A){Object.extend(this,A||{})},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",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};