var Badge=Class.create({initialize:function(A,B){this.el=A;this.cat=this.el.getAttribute("id")||false;if(!this.cat){return }this.offsetX=B.x||0;this.offsetY=B.y||0;this.loc=String(B.loc||"above").toLowerCase();this.popClass=B.className||"default";this.popup=this.newOffsetX=this.newOffsetY=this.popWidth=this.popHeight=this.wrapWidth=this.wrapHeight=0;this.pos=0;this.setup();this.el.observe("mouseover",this.show.bindAsEventListener(this));this.el.observe("mouseout",this.hide.bindAsEventListener(this))},setup:function(){if(null==$("popup")){var A=$("wrapper").cloneNode(false);A.setAttribute("id","popup");A.setStyle({position:"absolute",display:"none"});$("wrapper").appendChild(A)}this.popup=$("popup")},fill:function(){this.popup.update(badgeTemplate.evaluate(eval(this.cat)));this.popup.addClassName(this.popClass)},show:function(){this.fill();this.pos=this.el.cumulativeOffset();this.popWidth=this.popup.getWidth();this.popHeight=this.popup.getHeight();this.wrapWidth=$("wrapper").getWidth();this.wrapHeight=$("wrapper").getHeight();this.setPosition();this.popup.setStyle({left:this.newOffsetX+"px",top:this.newOffsetY+"px",display:"block"})},hide:function(){this.popup.hide();this.popup.update();this.popup.removeClassName(this.popClass)},setPosition:function(){switch(this.loc){case"above":this.positionAbove();break;case"below":this.positionBelow();break;case"left":this.positionLeft();break;case"right":this.positionRight();break;case"topleft":this.positionTopLeft();break;case"topright":this.positionTopRight();break;case"bottomleft":this.positionBottomLeft();break;case"bottomright":this.positionBottomRight();break}},positionAbove:function(){this.newOffsetX=this.pos.left+this.offsetX;this.newOffsetY=this.pos.top-this.offsetY-this.popHeight},positionBelow:function(){this.newOffsetX=this.pos.left+this.offsetX;this.newOffsetY=this.pos.top+this.el.getHeight()+this.offsetY},positionLeft:function(){this.newOffsetX=this.pos.left-this.offsetX-this.popWidth;this.newOffsetY=this.pos.top+this.offsetY},positionRight:function(){this.newOffsetX=this.pos.left+this.el.getWidth()+this.offsetX;this.newOffsetY=this.pos.top+this.offsetY},positionTopLeft:function(){this.newOffsetX=this.pos.left-this.offsetX-this.popWidth;this.newOffsetY=this.pos.top-this.offsetY-this.popHeight},positionTopRight:function(){this.newOffsetX=this.pos.left+this.el.getWidth()+this.offsetX;this.newOffsetY=this.pos.top-this.offsetY-this.popHeight},positionBottomLeft:function(){this.newOffsetX=this.pos.left-this.offsetX-this.popWidth;this.newOffsetY=this.pos.top+this.el.getHeight()+this.offsetY},positionBottomRight:function(){this.newOffsetX=this.pos.left+this.el.getWidth()+this.offsetX;this.newOffsetY=this.pos.top+this.el.getHeight()+this.offsetY}});