var ui={overlay:null,init:function(){if(Prototype.Browser.IE)
ui.browser.ie=parseFloat(navigator.appVersion.split("MSIE")[1]);ui.overlay=new Element('div').hide().setStyle({position:'absolute',backgroundColor:'#e8e8e4',opacity:.5,zIndex:5000,top:0,left:0}).clonePosition($(document.body),{setLeft:false,setTop:false});$('screen').insert(ui.overlay);ui.extend();},browser:{ie:false,isIE:function(version){if(!version)return ui.browser.ie;else return(ui.browser.ie&&ui.browser.ie<=version)}},extend:function(dom){if(!dom)dom=$(document.body);if(ui.browser.ie&&ui.browser.ie<=6){dom.select('img.png').each(function(img){img.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+img.src+"')";img.src='/images/blank.gif';});dom.select('input[type="text"]','input[type="password"]').each(function(input){input.addClassName('textbox');});dom.select('input[type="submit"]').each(function(input){input.addClassName('submit');});dom.select('input[type="reset"]','input[type="button"]').each(function(input){input.addClassName('button');});}
if(ui.browser.ie&&ui.browser.ie<=7){dom.select('input[type="text"]','input[type="password"]').each(function(input){input.observe('focus',function(){input.addClassName('focus')}).observe('blur',function(){input.removeClassName('focus')});});dom.select('hr').each(function(hr){hr.insert({after:new Element('div',{'class':'hr'})}).remove()});}
dom.select('input.desc').each(function(input){if(input.id!='')
ui.txt_descs[input.id]=new ui.txt_desc(input);else new ui.txt_desc(input);});},txt_descs:{},txt_desc:Class.create({txt:null,init_value:'',initialize:function(txt){this.txt=txt;this.init_value=this.txt.value;this.txt.observe('focus',this.focus.bindAsEventListener(this)).observe('blur',this.blur.bindAsEventListener(this));},focus:function(e){if(this.txt.hasClassName('desc')){if(this.txt.value==this.init_value){this.txt.removeClassName('desc');}}},blur:function(e){if(this.txt.value==''||this.txt.value==this.init_value){this.txt.addClassName('desc').value=this.init_value;}},change_init_value:function(value){if(this.txt.value==this.init_value)
this.txt.value=value;this.init_value=value;}}),selects:{},selectbox:Class.create({select:null,layer:null,lnk:null,onchange:function(){},initialize:function(select,zIndex){var container=new Element('div',{'class':select.className!=''?'select-container-for-'+select.className:'select-container',style:'position:relative;z-index:'+(15-zIndex)});select.insert({before:container});this.select=select.setStyle({visibility:'hidden'});var div=new Element('div',{'class':'selectbox',style:'position:absolute;top:0;left:0;width:'+select.getWidth()+'px'});var selected=select.down('option',select.selectedIndex);this.layer=new Element('div',{'class':'layer',style:'width:'+(select.getWidth()-6)+'px;display:none'});this.select.select('option').each(function(option){this.layer.insert(new Element('a',option==selected?{href:'#'+option.value,'class':'active'}:{href:'#'+option.value}).update(option.innerHTML).observe('click',this.change.bindAsEventListener(this)))}.bind(this));this.lnk=new Element('a',{href:'#','class':'selectbox'}).update(selected.innerHTML).observe('click',this.showLayer.bindAsEventListener(this))
container.insert(div.insert(this.lnk).insert(this.layer)).insert(select);this.cancelfnc=this.cancel.bindAsEventListener(this);ui.selects[select.id]=this;},cancel:function(e){this.layer.hide();$(document).stopObserving('click',this.cancelfnc);},showLayer:function(e){e.stop();if(this.layer.getStyle('display')=='none'){this.layer.show();$(document).observe('click',this.cancelfnc);}else this.cancel();},change:function(e){e.stop();this.layer.down('.active').removeClassName('active');var active=e.element().addClassName('active');this.lnk.update(active.innerHTML);this.select.value=decodeURIComponent(active.href.split('#')[1]);this.onchange(this.select.value,this.select);this.cancel();},setValue:function(value){this.select.value=value;this.layer.down('.active').removeClassName('active');var active=this.layer.down('a',this.select.selectedIndex);active.addClassName('active');this.lnk.update(active.innerHTML);this.onchange(this.select.value,this.select);}}),imageScroller:Class.create({container:null,sum:0,tt:null,initialize:function(scroller,tooltip){this.container=scroller.down('.images-container');this.sum=this.container.select('a').length;scroller.down('.pager').down('a.lft').observe('click',this.scroll_lft.bindAsEventListener(this)).next('a.rgt').observe('click',this.scroll_rgt.bindAsEventListener(this));if(tooltip){this.tt=new Element('div',{'class':'image-tooltipp'}).hide();scroller.insert(this.tt);scroller.down('div.images-container').select('a').each(function(a){var img=a.down('img');var txt='<strong>'+img.alt+'</strong><br />'+img.title;img.alt=img.title='';if(img.src.substr(img.src.length-15,15)!='_foto_fehlt.png'){this.tt_link(a,txt);}else{if(a.href.indexOf('merkzettel')==-1){this.tt_link(a,txt,true);}}}.bind(this));}},tt_link:function(a,txt){var withoutPhoto=arguments[2];a.addClassName('im').observe('mouseover',function(e,tip){e.stop();var elem=e.element();if(!elem.hasClassName('im'))
elem=elem.up('a.im');if(elem){if(!elem.hasClassName('similar_tips')){if(withoutPhoto){this.tt.update(tip).setStyle({left:(elem.down().positionedOffset().left+(ui.browser.isIE(7)?-6:0))+'px',top:'46px',width:'56px'}).show();}else{this.tt.update(tip).setStyle({left:(elem.down().positionedOffset().left+(ui.browser.isIE(7)?-6:0))-39+'px',top:'73px',width:'127px'}).show();}}else{this.tt.update(tip).setStyle({left:(elem.down().positionedOffset().left+(ui.browser.isIE(7)?-6:0))+'px'}).show();}}}.bindAsEventListener(this,txt)).observe('mouseout',function(e){e.stop();var elem=e.element();if(!elem.hasClassName('im'))
elem=elem.up('a.im');if(elem){this.tt.hide().update();}}.bindAsEventListener(this));},scroll_lft:function(e){e.stop();this.container.insert({top:this.container.down('a',this.sum-1)});},scroll_rgt:function(e){e.stop();this.container.insert(this.container.down('a'));},add:function(poi){if(this.container.select('a').find(function(a){var tmp=a.href.split('/');return tmp[tmp.length-1]==poi.slug})==undefined){if(this.sum==0)
this.container.update();this.sum++;var imgNew=new Element('img',{src:'/images/107x80/'+poi.imagesrc});var lnk=new Element('a',{href:'/'+sp.tic+'/profil/'+poi.slug}).insert(imgNew);sp.merkzettel.zoomer(imgNew);if(this.tt!==null){var txt='<strong>'+poi.name+'</strong>';this.tt_link(lnk,txt);}
this.container.insert({top:lnk});return true;}else return false;}}),imageScrollerSpan:Class.create({container:null,sum:0,tt:null,initialize:function(scroller,tooltip){this.container=scroller.down('.images-container');this.sum=this.container.select('span').length;scroller.down('.pager').down('a.lft').observe('click',this.scroll_lft.bindAsEventListener(this)).next('a.rgt').observe('click',this.scroll_rgt.bindAsEventListener(this));if(tooltip){this.tt=new Element('div',{'class':'image-tooltipp'}).hide();scroller.insert(this.tt);scroller.down('div.images-container').select('span').each(function(a){var img=a.down('img');var txt='<strong>'+img.alt+'</strong><br />'+img.title;img.alt=img.title='';this.tt_link(a,txt);}.bind(this));}},tt_link:function(a,txt){a.addClassName('im').observe('mouseover',function(e,tip){e.stop();var elem=e.element();if(!elem.hasClassName('im'))
elem=elem.up('span.im');if(elem){this.tt.update(tip).setStyle({left:(elem.positionedOffset().left+(ui.browser.isIE(7)?-6:0))+'px'}).show();}}.bindAsEventListener(this,txt)).observe('mouseout',function(e){e.stop();var elem=e.element();if(!elem.hasClassName('im'))
elem=elem.up('span.im');if(elem){this.tt.hide().update();}}.bindAsEventListener(this));},scroll_lft:function(e){e.stop();this.container.insert({top:this.container.down('span',this.sum-1)});},scroll_rgt:function(e){e.stop();this.container.insert(this.container.down('span'));},add:function(poi){if(this.container.select('span').find(function(a){var tmp=a.href.split('/');return tmp[tmp.length-1]==poi.slug})==undefined){if(this.sum==0)
this.container.update();this.sum++;var imgNew=new Element('img',{src:'/images/107x80/'+poi.imagesrc});var lnk=new Element('span').insert(imgNew);sp.merkzettel.zoomer(imgNew);if(this.tt!==null){var txt='<strong>'+poi.name+'</strong>';this.tt_link(lnk,txt);}
this.container.insert({top:lnk});return true;}else return false;}}),boxes:{_js_contentes:function(box){if(!box.up().hasClassName('box-js-contents')){var jsContents=new Element('div',{'class':'box-js-contents'});box.insert({before:jsContents});jsContents.insert(box);}
return box.up();},loader:{show:function(box){var dim=box.getDimensions();box=ui.boxes._js_contentes(box);if(!box.down('div.box-disable')){box.insert(new Element('div',{'class':'box-disable'}).setStyle({width:dim.width+'px',height:dim.height+'px'}));}
if(!box.down('div.box-loader')){box.insert(new Element('div',{'class':'box-loader'}).setStyle({width:dim.width+'px',height:dim.height+'px'}));}},hide:function(box){box=ui.boxes._js_contentes(box);var boxDisable=box.down('div.box-disable');if(boxDisable)
boxDisable.remove();var boxLoader=box.down('div.box-loader');if(boxLoader)
boxLoader.remove();}}},popUp:{container:null,open:function(title,form){var className='popup';ui.popUp.container=new Element('div',{'class':className}).insert(form.insert({top:new Element('div',{'class':'head'}).insert(new Element('a',{href:'#','class':'close',title:'Schließen'}).update('&nbsp;').observe('click',function(e){e.stop();ui.popUp.close();})).insert(new Element('h2').update(title))}).insert({top:$($('logo').cloneNode(true))}));$('screen').insert(ui.popUp.container);ui.popUp.setPosition();ui.overlay.show();ui.extend(ui.popUp.container);Event.observe(window,'resize',ui.popUp.setPosition);if(arguments[2]!=true){Event.observe(window,'scroll',ui.popUp.setPosition);}
return ui.popUp.container;},update:function(form){var head=ui.popUp.container.down('div.head');var next=head.next();while(next){next.remove();next=head.next();}
head.insert({after:form});ui.extend(ui.popUp.container);return form;},close:function(){Event.stopObserving(window,'resize',ui.popUp.setPosition);Event.stopObserving(window,'scroll',ui.popUp.setPosition);ui.popUp.container.remove();ui.overlay.hide();},setPosition:function(e){ui.popUp.container.setStyle({top:(document.viewport.getScrollOffsets().top+120)+'px'});}},calendar:Class.create({bubble:null,container:null,field:null,loaded:false,yearmonth:'',store:{},next_month:false,prev_month:false,initialize:function(button,field){this.field=field;button.observe('click',this.show.bindAsEventListener(this)).insert({after:this.rel});this.container=new Element('div',{style:'padding: 0 3px'}).insert(new Element('em').update('lade...'));this.bubble=new Element('div',{'class':'calendar',style:'display:none'}).insert(new Element('div',{'class':'bubble'})).insert(new Element('div',{'class':'contents'}).insert(new Element('a',{'class':'close',title:'Schließen'}).observe('click',this.hide.bindAsEventListener(this))).insert(new Element('h1').update('Kalender')).insert(this.container)).insert(new Element('div',{'class':'pager'}).insert(new Element('a',{href:'#','class':'lft'}).update('<').observe('click',this.prev.bindAsEventListener(this))).insert(new Element('a',{href:'#','class':'rgt'}).update('>').observe('click',this.next.bindAsEventListener(this))));if(ui.browser.isIE(7)){var rel=new Element('div',{'style':'position: relative'});$(document.body).insert(rel);var pos=button.positionedOffset();this.bubble.setStyle({top:(pos.top-$(document.body).getHeight()-72)+'px',left:(pos.left+28)+'px'});rel.insert(this.bubble);}else{var rel=new Element('div',{style:'position:relative;display:inline-block'});button.insert({after:rel.insert(this.bubble)});}
if(field.value==''){var date=new Date();this.set(null,date.getDate(),date.getMonth()+1,date.getFullYear());}else{var date_parts=field.value.split('.');this.set(null,parseInt(date_parts[0],10),parseInt(date_parts[1],10),parseInt(date_parts[2],10));}},show:function(e){e.stop();this.bubble.show();if(!this.loaded){hlp.xhr({module:'veranstaltungen',action:'calendar',params:{d:this.yearmonth},callback:this.render.bind(this)});}},hide:function(e){if(e)e.stop();this.bubble.hide();},set:function(e,d,m,y){if(e)e.stop();d=d.toString().length==1?'0'+d:d;m=m.toString().length==1?'0'+m:m;this.yearmonth=y+'-'+m;this.field.value=d+'.'+m+'.'+y;this.hide();},next:function(e){e.stop();if(this.next_month){if(this.store[this.next_month]){this.render(this.store[this.next_month]);}else{hlp.xhr({module:'veranstaltungen',action:'calendar',params:{d:this.next_month},callback:this.render.bind(this)});this.next_month=this.prev_month=false;}}},prev:function(e){e.stop();if(this.prev_month){if(this.store[this.prev_month]){this.render(this.store[this.prev_month]);}else{this.container.update('<em>lade...</em>');hlp.xhr({module:'veranstaltungen',action:'calendar',params:{d:this.prev_month},callback:this.render.bind(this)});this.next_month=this.prev_month=false;}}},render:function(cal){this.loaded=true;this.store[cal.y+'-'+cal.m]=cal;this.next_month=cal.next_month;this.prev_month=cal.prev_month;this.container.update().insert(new Element('table',{border:0,cellspacing:0,cellpadding:0,'class':'calendar'}).insert(new Element('tbody').insert(new Element('tr').insert(new Element('th',{colspan:7}).update(cal.title))).insert(new Element('tr').insert(new Element('td',{'class':'title'}).update('Mo')).insert(new Element('td',{'class':'title'}).update('Di')).insert(new Element('td',{'class':'title'}).update('Mi')).insert(new Element('td',{'class':'title'}).update('Do')).insert(new Element('td',{'class':'title'}).update('Fr')).insert(new Element('td',{'class':'title'}).update('Sa')).insert(new Element('td',{'class':'title sunday'}).update('So')))));var tbody=this.container.down('tbody');for(var i=0,ln=cal.days.length;i<ln;i++){var tr=new Element('tr');for(var j=0;j<7;j++){var td=new Element('td');if(typeof(cal.days[i][j])!='undefined'&&cal.days[i][j].viewport){td.insert(new Element('a',{href:'#'}).update(cal.days[i][j].day).observe('click',this.set.bindAsEventListener(this,cal.days[i][j].day,cal.m,cal.y)));}
else{td.addClassName('empty');}
if(typeof(cal.days[i][j])!='undefined'&&cal.days[i][j].today){td.addClassName('today');}
if(j==6){td.addClassName('sunday');}
tr.insert(td);}
tbody.insert(tr);}}}),observeBodyClick:Class.create({fnc:null,initialize:function(callback){this.fnc=function(e,callback){if(callback(e)){e.stop();$(document).stopObserving('click',this.fnc);}}.bindAsEventListener(this,callback);$(document).observe('click',this.fnc);}})};