function CustomInfowindow(needleOffestX,needleOffestY){var infoWindowContainer=this;this.map_=null,this.div_=null,this.contentdiv_=null,this.contentdivSize_=null,this.visible_=!1,this.nohide_=!1,this.needleOffset_={x:needleOffestX||0,y:needleOffestY||0},this.ready_=!1,this.station_="",this.point_=null,this.content_=null,this.marker_=null,this.nolongerDrawnCallback_=null,this.init()}CustomInfowindow.prototype=new GOverlay,CustomInfowindow.prototype.init=function(){this.div_=$("<div></div>").addClass("itemInfoWindow").css("position","absolute").css("background-repeat","no-repeat").css("display","none"),this.contentdiv_=$("<div></div>").addClass("itemInfoWindow_content"),this.contentdivSize_=null,this.div_.append(this.contentdiv_)},CustomInfowindow.prototype.setNeedle=function(style){var resultStyles={margin:{top:0,left:0,bottom:0,right:0},background:{image:{part1:"",part2:""},position:{top:"",left:""}}};style.left==!0?(resultStyles.margin.right=this.needleOffset_.x,resultStyles.background.position.left="right",resultStyles.background.image.part2="r"):(resultStyles.margin.left=this.needleOffset_.x,resultStyles.background.position.left="left",resultStyles.background.image.part2="l"),style.top==!0?(resultStyles.margin.bottom=this.needleOffset_.y,resultStyles.background.position.top="bottom",resultStyles.background.image.part1="b"):(resultStyles.margin.top=this.needleOffset_.y,resultStyles.background.position.top="top",resultStyles.background.image.part1="t"),this.contentdiv_.css("margin-top",resultStyles.margin.top+"px").css("margin-left",resultStyles.margin.left+"px").css("margin-bottom",resultStyles.margin.bottom+"px").css("margin-right",resultStyles.margin.right+"px"),this.div_.css("background-image","url(/portaldata/1/Resources/_internal/images/kartensuche/needle_"+resultStyles.background.image.part1+resultStyles.background.image.part2+".gif)").css("background-position",resultStyles.background.position.left+" "+resultStyles.background.position.top)},CustomInfowindow.prototype.getContentSize=function(){var toMeasure,wrapper;return this.contentdivSize_?this.contentdivSize_:(toMeasure=this.div_.clone(),$(document.body).append(toMeasure),toMeasure=toMeasure.css("left","-5000px").css("top","-5000px").css("position","absolute").show(),wrapper=toMeasure.find("div.itemInfoWindowWrapper"),this.contentdivSize_={width:wrapper.width(),height:wrapper.height()},wrapper=null,toMeasure.remove(),this.contentdivSize_)},CustomInfowindow.prototype.unload=function(){this.clear(),this.map_=null,this.div_=null,this.station_="",this.point_=null,this.content_=null,this.contentdiv_=null,this.contentdivSize_=null,this.marker_=null},CustomInfowindow.prototype.initialize=function(map){this.map_=map,this.div_==null&&this.init(),this.div_.css("height",""),this.contentdiv_.css("height",""),this.contentdivSize_=null,this.div_.hide(),$(document.body).append(this.div_)},CustomInfowindow.prototype.clear=function(){this.div_.hide(),this.visible_=!1,this.nolongerDrawnCallback_&&(this.nolongerDrawnCallback_(this.station_),this.nolongerDrawnCallback_=null),this.station_=null,this.ready_=!1},CustomInfowindow.prototype.copy=function(){return new CustomInfowindow(this.needleOffset_.x,this.needleOffset_.y)},CustomInfowindow.prototype.isVisible=function(){return this.visible_},CustomInfowindow.prototype.currentMarker=function(){return this.marker_},CustomInfowindow.prototype.redraw=function(){if(this.ready_==!1)return;this.visible_=!0;var mapPostion=this.getAbsolutePosition(this.map_.getContainer()),mapSize=this.map_.getSize(),markerPosition=this.map_.fromLatLngToContainerPixel(this.marker_.getPoint()),divSize=this.getContentSize(),divPosition={x:0,y:0},style={top:!0,left:!0};divPosition.x=markerPosition.x-(divSize.width+this.needleOffset_.x+4),divPosition.x<0&&(divPosition.x=markerPosition.x,style.left=!1),divPosition.y=markerPosition.y-(divSize.height+this.needleOffset_.y+3),divPosition.y<30&&(divPosition.y=markerPosition.y,style.top=!1),divPosition.x<0||divPosition.x>mapSize.width||divPosition.y<0||divPosition.y>mapSize.height?this.div_.hide():(this.setNeedle(style),this.div_.css("top",mapPostion.y+divPosition.y+"px").css("left",mapPostion.x+divPosition.x+"px"),this.div_.show())},CustomInfowindow.prototype.setStation=function(station,nolongerDrawnCallback){this.clear(),this.marker_=station.Marker.GetCurrentMarker(),this.station_=station,this.nolongerDrawnCallback_=null,nolongerDrawnCallback&&(this.nolongerDrawnCallback_=nolongerDrawnCallback),this.point_=station.Point,this.content_=station.ItemHtmlDetails==null?$('<div class="itemInfoWindowWrapper"><div class="loading"></div></div>'):$(station.ItemHtmlDetails.IHTML);if(this.content_==null)return;this.createContent(),this.ready_=!0},CustomInfowindow.prototype.processResult=function(station){this.content_=$(station.ItemHtmlDetails.IHTML);if(this.content_==null)return;this.createContent(),this.ready_=!0,this.redraw(!0)},CustomInfowindow.prototype.createContent=function(){var container=this;this.clearContent(),this.contentdiv_.append(this.content_),this.content_.find("div.close").click(function(){container.clear()}),this.content_.find("div.linktoanchor").click(function(){var position=container.getAbsolutePosition(container.station_.Element[0]),height=container.station_.Element.height(),windowHeight=$(window).height();position.y+height>windowHeight-30&&(height=(windowHeight-height)/-2,$.scrollTo(container.station_.Element,750,{easing:"swing",offset:{top:height}})),container.station_.FlashDetails()}),this.contentdivSize_=null},CustomInfowindow.prototype.clearContent=function(){this.content_.find("div.close").unbind(),this.contentdiv_.empty(),this.contentdivSize_=null},CustomInfowindow.prototype.getAbsolutePosition=function(node){var n=node,pos={x:0,y:0};pos.x=n.offsetLeft,pos.y=n.offsetTop;while((n=n.offsetParent)!=null)pos.x+=n.offsetLeft,pos.y+=n.offsetTop;return pos},CustomInfowindow.prototype.getRelativePosition=function(child,parent){var cpos=this.getAbsolutePosition(child),ppos=this.getAbsolutePosition(parent),pos={x:0,y:0};return pos.x=cpos.x-ppos.x,pos.y=cpos.y-ppos.y,pos},CustomInfowindow.prototype.remove=function(){this.clear()}
