// INFO & LICENSE: http://www.tempus-vivit.net/license/help.txt
var HelpBalloon=Class.create();var HelpBalloons=[];HelpBalloon.prototype={initialize:function(B,A){this.options=Object.extend({dataURL:null,title:"Hilfe",content:"Keine Hilfe definiert",useEvent:["click"],imagePath:"/images/help/",method:"get"},A||{});this._elements={container:null,inner:null,icon:null,content:null,button:null,title:null};this._properties={balloons:[this.options.imagePath+"balloon-tl.png",this.options.imagePath+"balloon-tr.png",this.options.imagePath+"balloon-bl.png",this.options.imagePath+"balloon-br.png"],balloonStyle:{position:"absolute",border:"none",background:"white",width:"300px",height:"240px",display:"none",zIndex:"100"},button:this.options.imagePath+"button.png",visible:false,balloonCoords:null,innerDims:[230,170],outerDims:[300,240],pointerDims:[20,20],innerMargin:15,buttonHeight:20,drawn:false,renderXY:[0,0]};HelpBalloons.push(this);this._properties.balloons.each(function(C){var D=document.createElement("img");D.src=C});this._elements.icon=$(B);if(!this._elements.icon){return false}this._elements.icon._HelpBalloon=this;for(i=0;i<this.options.useEvent.length;i++){Event.observe(this._elements.icon,this.options.useEvent[i],this.toggle.bindAsEventListener(this))}this._elements.icon.style.cursor="pointer";this._elements.container=document.createElement("div");this._elements.container._HelpBalloon=this},toggle:function(B){if(!B){B=window.event||{type:this.options.useEvent[0],target:this._elements.icon}}var A=Event.element(B);if(this.options.useEvent.indexOf(B.type)!=-1&&!this._properties.visible&&A==this._elements.icon){this.show()}else{this.hide()}},show:function(){if(!this._properties.drawn){this._draw()}this._reposition();this._hideOtherHelps();$(this._elements.container).show();this._hideLowerElements();this._properties.visible=true;Event.observe(window,"resize",this._reposition.bindAsEventListener(this))},hide:function(){this._showLowerElements();$(this._elements.container).hide();this._properties.visible=false;Event.stopObserving(window,"resize",this._reposition.bindAsEventListener(this));return },_reposition:function(){this._properties.balloonCoords=this._getXY(this._elements.icon);this._properties.balloonCoords.x+=Math.round(this._elements.icon.width/2);this._properties.balloonCoords.y+=Math.round(this._elements.icon.height/2);var H=0;var E=this._properties.balloonCoords.x+parseInt(this._elements.container.style.width);var D=this._properties.balloonCoords.y-parseInt(this._elements.container.style.height);if(D>0){H+=2}var F=window.outerWidth?window.outerWidth:document.body.clientWidth;if(E>F){H+=1}this._elements.container.style.backgroundImage="url("+this._properties.balloons[H]+")";this._elements.container.style.backgroundRepeat="no-repeat";this._elements.container.style.backgroundColor="transparent";if(this.isMSIE()){this._elements.container.style.backgroundAttachment="fixed"}this._elements.container.style.backgroundPosition="top left";var A=0;var G=0;var C=0;var B=0;switch(H){case 1:A=this._properties.pointerDims[0];G=this._properties.pointerDims[1];C=this._properties.balloonCoords.x-parseInt(this._elements.container.style.width);B=this._properties.balloonCoords.y;break;case 2:A=this._properties.pointerDims[0];G=this._properties.pointerDims[1];C=this._properties.balloonCoords.x;B=this._properties.balloonCoords.y-parseInt(this._elements.container.style.height);break;case 3:A=this._properties.pointerDims[0];G=this._properties.pointerDims[1];C=this._properties.balloonCoords.x-parseInt(this._elements.container.style.width);B=this._properties.balloonCoords.y-parseInt(this._elements.container.style.height);break;default:case 0:A=this._properties.pointerDims[0];G=this._properties.pointerDims[1];C=this._properties.balloonCoords.x;B=this._properties.balloonCoords.y;break}this._elements.container.style.left=C+"px";this._elements.container.style.top=B+"px";if(this._elements.inner){this._elements.inner.style.left=(A+this._properties.innerMargin)+"px"}if(this._elements.inner){this._elements.inner.style.top=(G+this._properties.innerMargin)+"px"}},_draw:function(){Element.setStyle(this._elements.container,this._properties.balloonStyle);if(this.options.dataURL&&!this._properties.drawn){var A=new Ajax.Request(this.options.dataURL,{asynchronous:false,method:this.options.method});if(A.success()){var D=false;if(A.transport.responseXML){var B=A.transport.responseXML.getElementsByTagName("HelpBalloon")[0];if(B){xmlTitle=B.getElementsByTagName("title")[0];if(xmlTitle){this.options.title=xmlTitle.firstChild.nodeValue}xmlContent=B.getElementsByTagName("content")[0];if(xmlContent){this.options.content=xmlContent.firstChild.nodeValue}}else{D=true}}else{D=true}if(D){var C=A.transport.responseText.match(/\<title\>([^\<]+)\<\/title\>/gi);if(C){C=C.toString().replace(/\<title\>|\<\/title\>/gi,"");this.options.title=C}this.options.content=A.transport.responseText}}else{this.options.content="Hilfe konnte nicht geladen werden";this.options.title="Fehler"}}this._elements.inner=document.createElement("div");this._elements.inner.style.position="absolute";this._elements.inner.style.width=this._properties.innerDims[0]+"px";this._elements.inner.style.height=this._properties.innerDims[1]+"px";var F=document.createElement("div");F.appendChild(document.createTextNode(this.options.title));F.style.fontFamily="verdana";F.style.fontSize="14px";F.style.fontWeight="bold";F.style.color="black";F.style.width=(this._properties.innerDims[0]-this._properties.buttonHeight)+"px";F.style.height=this._properties.buttonHeight+"px";F.style.position="absolute";F.style.overflow="hidden";F.style.top="0px";F.style.left="0px";this._elements.inner.appendChild(F);var G=document.createElement("img");G.width=this._properties.buttonHeight;G.height=this._properties.buttonHeight;G.src=this._properties.button;Event.observe(G,"click",this.toggle.bindAsEventListener(this));G.style.cursor="pointer";G.title="Hilfe schließen";G.style.position="absolute";G.style.top="0px";G.style.left=parseInt(F.style.width)+"px";this._elements.inner.appendChild(G);var E=document.createElement("div");E.style.width=this._properties.innerDims[0]+"px";E.style.height=(this._properties.innerDims[1]-parseInt(F.style.height))+"px";E.style.overflow="auto";E.style.position="absolute";E.style.top=parseInt(F.style.height)+"px";E.style.left="0px";E.style.fontFamily="verdana";E.style.fontSize="11px";E.style.fontWeight="normal";E.style.color="black";E.innerHTML=this.options.content;this._elements.inner.appendChild(E);this._elements.container.appendChild(this._elements.inner);document.getElementsByTagName("body")[0].appendChild(this._elements.container);this._properties.drawn=true},_getXY:function(D){var F=D.viewportOffset();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}},_isOver:function(C){if(!this._properties.visible){return false}if(C==this._elements.container||$(C).descendantOf(this._elements.container)){return false}var A=this._getXY(C);var B=this._getXY(this._elements.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(){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(){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(!document.all){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(B){for(var A=0;A<HelpBalloons.length;A++){if(HelpBalloons[A]!=this){HelpBalloons[A].hide()}}},isMSIE:function(){return(/MSIE ((6)|(5\.5))/gi.test(navigator.userAgent)&&/windows/i.test(navigator.userAgent)&&!/opera/i.test(navigator.userAgent))}}