(function($){Hapnin.RegularSite={initialize:function(){Hapnin.RegularSite.initFancybox();Hapnin.RegularSite.initMaxlengthForTextarea();$(".favorite-link").live('click',function(){var link=this;var link_text=link.innerHTML;link.innerHTML="<img src ='/images/ajax-loader.gif'>";$.post(link.href,function(){link.innerHTML=(link_text.match(/save/)?link_text.replace(/save/,'unsave'):link_text.replace(/remove/,'unsave'));});return false;});$('div.hideable-details').hide();$(".details-link").click(function(){var link_text=this.innerHTML;this.innerHTML=(link_text.match(/show details/i)?"hide details":"show details");$(this).closest('div.event').find(".details").toggle('fast');return false;});},initMaxlengthForTextarea:function(){$("textarea").livequery('keypress',function(event){var key=event.which;if(key>=33||key==13){var maxLength=$(this).attr("maxlength");var length=this.value.length;if(length>=maxLength){event.preventDefault();}}});},initFancybox:function(){$('a.modal').livequery(function(){$(this).fancybox();});$('#fancy_content form').livequery(function(){$(this).submit(function(){$(this).find('input[type=submit]').attr('disabled',true);$.fn.fancybox.showLoading();$(this).ajaxSubmit({success:function(html){if(!html.match(/^\s*$/)){$('#fancy_loading').hide();$('#fancy_ajax').html(html);}},complete:function(xhr){$.fn.fancybox.handleRedirects(xhr);}});return false;});});$('#fancy_content a.cancel').live('click',$.fn.fancybox.close);},updateMapLocations:function(){var locations=Hapnin.Location.createFromJSONArray(initialLocations);$(locations).each(function(){$('#location_'+this.id).data('location',this);});return locations;},_mouseEnteredMapButton:function(mouseEvent){var button=mouseEvent.target;var location=$(button).closest('div.location').data('location');Hapnin.EventListTooltip.startMapTooltipTimeout(button,location);},_mouseLeftMapButton:function(mouseEvent){Hapnin.EventListTooltip.startMapTooltipTimeout(null);},_mouseClickedMapButton:function(mouseEvent){var button=mouseEvent.target;var location=$(button).closest('div.location').data('location');Hapnin.EventListTooltip.showMapTooltip(button,location);return false;}};})(Hapnin.q);(function($){Hapnin.SearchFilters={load:function(){Hapnin.Url.updateHashParams(location.hash.replace(/^#/,''));this._setFiltersFromParams();$.address.strict(false);$.address.change($.bind(Hapnin.SearchFilters,'_addressWasChanged'));},prepareHrefParams:function(){var params={nhood:$("#neighborhood_selection_container li.selected").attr('id').replace("neighborhood_selection_input_",""),day:$("#day_selection_container li.selected").attr('id').replace("day_selection_input_",""),tod:$("#time_selection_container li.selected").attr('id').replace("time_selection_input_",""),type:$("#type").val(),radar:$("#radar-type").val()};if(Hapnin.params.page>1){params.page=Hapnin.params.page;}
return decodeURIComponent($.param(params));},_addressWasChanged:function(event){Hapnin.Url.updateHashParams(event.value);this._setFiltersFromParams();this._loadResults();},_changeAddress:function(){$.address.value(this.prepareHrefParams());},_setNeighborhood:function(neighborhood){$("#neighborhood_selection").val(neighborhood);neighborhood_name=$('#neighborhood_selection [value="'+neighborhood+'"]').text();$("#neighborhood_selection_input").val(neighborhood_name);},_setDay:function(day){$("#day_selection").val(day);day_name=$('#day_selection [value="'+day+'"]').text();$("#day_selection_input").val(day_name);$("#day_selection_container li.selected").removeClass("selected");$("#day_selection_input_"+day).addClass("selected");},_setTime:function(time){$("#time_selection").val(time);time_name=$('#time_selection [value="'+time+'"]').text();$("#time_selection_input").val(time_name);},_setType:function(type){$("#type").val(type);$(".category_label").hide();$(".category_label[type='"+type+"']").show();$("#category-list li").removeClass("selected");$("#category-list a").show();$("#category-list a[type='"+type+"']").hide();$("#category-list a[type='"+type+"']").parent().addClass("selected");},_setRadarType:function(type){$("#radar-type").val(type);$(".radar_label").hide();$(".radar_label[type='"+type+"']").show();$("#radar-list li").removeClass("selected");$("#radar-list a").show();$("#radar-list a[type='"+type+"']").hide();$("#radar-list a[type='"+type+"']").parent().addClass("selected");},_setFiltersFromParams:function(){this._setNeighborhood(Hapnin.params.nhood);this._setDay(Hapnin.params.day);this._setTime(Hapnin.params.tod);this._setType(Hapnin.params.type);this._setRadarType(Hapnin.params.radar);this._updateTimeFilter();$('#search_in_map').attr('checked',false);if(Hapnin.Url.mapLocationParams()){if(this._filterMap){this._filterMap.setPositionAndZoom(Hapnin.params.lat,Hapnin.params.lng,Hapnin.params.zoom);}
$('#search_in_map').attr('checked',true);}
$("#hapnin_occurrence_type_filter").val(Hapnin.params.occurrence_type);},_updateTimeFilter:function(){try{var day_val=parseInt($("#day_selection_container li.selected").attr('id').replace("day_selection_input_",""));var time_val=$("#time_selection_container li.selected").text();if(day_val>0&&time_val=="Now (and later)"){var time_val=$('#time_selection_container li:eq(1)').text();$("#time_selection").val(time_val);$("#time_selection_input").val(time_val);$("#time_selection_container li:eq(0)").hide();$('#time_selection_container li:eq(0)').removeClass('selected');$('#time_selection_container li:eq(1)').addClass('selected');}}catch(e){}},_neighborhoodSelected:function(){this.resetAndReloadResults();},_daySelected:function(){this._updateTimeFilter();this.resetAndReloadResults();},_typeSelected:function(event){$('#type').val(event.target.type);$('.category_label:visible').hide();$('#category-list a:hidden').show();$(event.target).parent().find(".category_label").show();$(event.target).parent().find("a").hide();$(event.target).parent().parent().find(".selected").removeClass("selected");$(event.target).parent().addClass("selected");this.resetAndReloadResults();return false;},_radarSelected:function(event){$('#radar-type').val(event.target.type);$('.radar_label:visible').hide();$('#radar-list a:hidden').show();$(event.target).parent().find(".radar_label").show();$(event.target).parent().find("a").hide();$(event.target).parent().parent().find(".selected").removeClass("selected");$(event.target).parent().addClass("selected");this.resetAndReloadResults();return false;},_paginationLinkClicked:function(event){var label=event.target.innerHTML;if(label.indexOf("Prev")!=-1){Hapnin.params.page--;}else if(label.indexOf("Next")!=-1){Hapnin.params.page++;}else{Hapnin.params.page=parseInt(label,10);}
this._changeAddress();this._loadResults();return false;},resetAndReloadResults:function(){Hapnin.params.page=1;this.reloadResults();},reloadResults:function(){this._changeAddress();this._loadResults();},_loadResults:function(){$('#location_list').html("<p class='spinner'><img src='/images/spinner.gif' /></p>").show();var params=$("#search_form").serialize();if(Hapnin.params.page>1){params+="&page="+Hapnin.params.page;}
$.get(location.pathname+'/?'+params,function(html){$('#location_list').html(html);Hapnin.RegularSite.updateMapLocations();});}};})(Hapnin.q);(function($){function _ajax_request(url,data,callback,type,method){if($.isFunction(data)){callback=data;data={};}
return $.ajax({type:method,url:url,data:data,success:callback,dataType:type});}
$.extend({put:function(url,data,callback,type){return _ajax_request(url,data,callback,type,'PUT');},delete_:function(url,data,callback,type){return _ajax_request(url,data,callback,type,'DELETE');}});$.fn.submitWithAjax=function(){this.unbind('submit',false);this.submit(function(){$.post(this.action,$(this).serialize(),null,"script");return false;})
return this;};$.fn.getWithAjax=function(){this.unbind('click',false);this.click(function(){$.get($(this).attr("href"),$(this).serialize(),null,"script");return false;})
return this;};$.fn.postWithAjax=function(){this.unbind('click',false);this.click(function(){$.post($(this).attr("href"),$(this).serialize(),null,"script");return false;})
return this;};$.fn.putWithAjax=function(){this.unbind('click',false);this.click(function(){$.put($(this).attr("href"),$(this).serialize(),null,"script");return false;})
return this;};$.fn.deleteWithAjax=function(){this.removeAttr('onclick');this.unbind('click',false);this.click(function(){$.delete_($(this).attr("href"),$(this).serialize(),null,"script");return false;})
return this;};function ajaxLinks(){$('.ajaxForm').submitWithAjax();$('a.get').getWithAjax();$('a.post').postWithAjax();$('a.put').putWithAjax();$('a.delete').deleteWithAjax();}
$(document).ready(function(){$(document).ajaxSend(function(event,request,settings){if(typeof(window.AUTH_TOKEN)=="undefined")return;if(settings.type=='GET'||settings.type=='get')return;settings.data=settings.data||"";settings.data+=(settings.data?"&":"")+"authenticity_token="+encodeURIComponent(window.AUTH_TOKEN);request.setRequestHeader("Content-Type",settings.contentType);});ajaxLinks();});})(Hapnin.q);(function(b){b.tools=b.tools||{};b.tools.scrollable={version:"1.1.2",conf:{size:5,vertical:false,speed:400,keyboard:true,keyboardSteps:null,disabledClass:"disabled",hoverClass:null,clickable:true,activeClass:"active",easing:"swing",loop:false,items:".items",item:null,prev:".prev",next:".next",prevPage:".prevPage",nextPage:".nextPage",api:false}};var c;function a(o,m){var r=this,p=b(this),d=!m.vertical,e=o.children(),k=0,i;if(!c){c=r}b.each(m,function(s,t){if(b.isFunction(t)){p.bind(s,t)}});if(e.length>1){e=b(m.items,o)}function l(t){var s=b(t);return m.globalNav?s:o.parent().find(t)}o.data("finder",l);var f=l(m.prev),h=l(m.next),g=l(m.prevPage),n=l(m.nextPage);b.extend(r,{getIndex:function(){return k},getClickIndex:function(){var s=r.getItems();return s.index(s.filter("."+m.activeClass))},getConf:function(){return m},getSize:function(){return r.getItems().size()},getPageAmount:function(){return Math.ceil(this.getSize()/m.size)},getPageIndex:function(){return Math.ceil(k/m.size)},getNaviButtons:function(){return f.add(h).add(g).add(n)},getRoot:function(){return o},getItemWrap:function(){return e},getItems:function(){return e.children(m.item)},getVisibleItems:function(){return r.getItems().slice(k,k+m.size)},seekTo:function(s,w,t){if(s<0){s=0}if(k===s){return r}if(b.isFunction(w)){t=w}if(s>r.getSize()-m.size){return m.loop?r.begin():this.end()}var u=r.getItems().eq(s);if(!u.length){return r}var v=b.Event("onBeforeSeek");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r}if(w===undefined||b.isFunction(w)){w=m.speed}function x(){if(t){t.call(r,s)}p.trigger("onSeek",[s])}if(d){e.animate({left:-u.position().left},w,m.easing,x)}else{e.animate({top:-u.position().top},w,m.easing,x)}c=r;k=s;v=b.Event("onStart");p.trigger(v,[s]);if(v.isDefaultPrevented()){return r}f.add(g).toggleClass(m.disabledClass,s===0);h.add(n).toggleClass(m.disabledClass,s>=r.getSize()-m.size);return r},move:function(u,t,s){i=u>0;return this.seekTo(k+u,t,s)},next:function(t,s){return this.move(1,t,s)},prev:function(t,s){return this.move(-1,t,s)},movePage:function(w,v,u){i=w>0;var s=m.size*w;var t=k%m.size;if(t>0){s+=(w>0?-t:m.size-t)}return this.move(s,v,u)},prevPage:function(t,s){return this.movePage(-1,t,s)},nextPage:function(t,s){return this.movePage(1,t,s)},setPage:function(t,u,s){return this.seekTo(t*m.size,u,s)},begin:function(t,s){i=false;return this.seekTo(0,t,s)},end:function(t,s){i=true;var u=this.getSize()-m.size;return u>0?this.seekTo(u,t,s):r},reload:function(){p.trigger("onReload");return r},focus:function(){c=r;return r},click:function(u){var v=r.getItems().eq(u),s=m.activeClass,t=m.size;if(u<0||u>=r.getSize()){return r}if(t==1){if(m.loop){return r.next()}if(u===0||u==r.getSize()-1){i=(i===undefined)?true:!i}return i===false?r.prev():r.next()}if(t==2){if(u==k){u--}r.getItems().removeClass(s);v.addClass(s);return r.seekTo(u,time,fn)}if(!v.hasClass(s)){r.getItems().removeClass(s);v.addClass(s);var x=Math.floor(t/2);var w=u-x;if(w>r.getSize()-t){w=r.getSize()-t}if(w!==u){return r.seekTo(w)}}return r},bind:function(s,t){p.bind(s,t);return r},unbind:function(s){p.unbind(s);return r}});b.each("onBeforeSeek,onStart,onSeek,onReload".split(","),function(s,t){r[t]=function(u){return r.bind(t,u)}});f.addClass(m.disabledClass).click(function(){r.prev()});h.click(function(){r.next()});n.click(function(){r.nextPage()});if(r.getSize()<m.size){h.add(n).addClass(m.disabledClass)}g.addClass(m.disabledClass).click(function(){r.prevPage()});var j=m.hoverClass,q="keydown."+Math.random().toString().substring(10);r.onReload(function(){if(j){r.getItems().hover(function(){b(this).addClass(j)},function(){b(this).removeClass(j)})}if(m.clickable){r.getItems().each(function(s){b(this).unbind("click.scrollable").bind("click.scrollable",function(t){if(b(t.target).is("a")){return}return r.click(s)})})}if(m.keyboard){b(document).unbind(q).bind(q,function(t){if(t.altKey||t.ctrlKey){return}if(m.keyboard!="static"&&c!=r){return}var u=m.keyboardSteps;if(d&&(t.keyCode==37||t.keyCode==39)){r.move(t.keyCode==37?-u:u);return t.preventDefault()}if(!d&&(t.keyCode==38||t.keyCode==40)){r.move(t.keyCode==38?-u:u);return t.preventDefault()}return true})}else{b(document).unbind(q)}});r.reload()}b.fn.scrollable=function(d){var e=this.eq(typeof d=="number"?d:0).data("scrollable");if(e){return e}var f=b.extend({},b.tools.scrollable.conf);d=b.extend(f,d);d.keyboardSteps=d.keyboardSteps||d.size;this.each(function(){e=new a(b(this),d);b(this).data("scrollable",e)});return d.api?e:this}})(Hapnin.q);(function(b){var a=b.tools.scrollable;a.plugins=a.plugins||{};a.plugins.circular={version:"0.5.1",conf:{api:false,clonedClass:"cloned"}};b.fn.circular=function(e){var d=b.extend({},a.plugins.circular.conf),c;b.extend(d,e);this.each(function(){var i=b(this).scrollable(),n=i.getItems(),k=i.getConf(),f=i.getItemWrap(),j=0;if(i){c=i}if(n.length<k.size){return false}n.slice(0,k.size).each(function(o){b(this).clone().appendTo(f).click(function(){i.click(n.length+o)}).addClass(d.clonedClass)});var l=b.makeArray(n.slice(-k.size)).reverse();b(l).each(function(o){b(this).clone().prependTo(f).click(function(){i.click(-o-1)}).addClass(d.clonedClass)});var m=f.children(k.item);var h=k.hoverClass;if(h){m.hover(function(){b(this).addClass(h)},function(){b(this).removeClass(h)})}function g(o){var p=m.eq(o);if(k.vertical){f.css({top:-p.position().top})}else{f.css({left:-p.position().left})}}g(k.size);b.extend(i,{move:function(s,r,p,q){var u=j+s+k.size;var t=u>i.getSize()-k.size;if(u<=0||t){var o=j+k.size+(t?-n.length:n.length);g(o);u=o+s}if(q){m.removeClass(k.activeClass).eq(u+Math.floor(k.size/2)).addClass(k.activeClass)}if(u===j+k.size){return self}return i.seekTo(u,r,p)},begin:function(p,o){return this.seekTo(k.size,p,o)},end:function(p,o){return this.seekTo(n.length,p,o)},click:function(p,r,q){if(!k.clickable){return self}if(k.size==1){return this.next()}var s=p-j,o=k.activeClass;s-=Math.floor(k.size/2);return this.move(s,r,q,true)},getIndex:function(){return j},setPage:function(p,q,o){return this.seekTo(p*k.size+k.size,q,o)},getPageAmount:function(){return Math.ceil(n.length/k.size)},getPageIndex:function(){if(j<0){return this.getPageAmount()-1}if(j>=n.length){return 0}var o=(j+k.size)/k.size-1;return o},getVisibleItems:function(){var o=j+k.size;return m.slice(o,o+k.size)}});i.onStart(function(p,o){j=o-k.size;return false});i.getNaviButtons().removeClass(k.disabledClass)});return d.api?c:this}})(Hapnin.q);(function(b){var a=b.tools.scrollable;a.plugins=a.plugins||{};a.plugins.autoscroll={version:"1.0.1",conf:{autoplay:true,interval:3000,autopause:true,steps:1,api:false}};b.fn.autoscroll=function(d){if(typeof d=="number"){d={interval:d}}var e=b.extend({},a.plugins.autoscroll.conf),c;b.extend(e,d);this.each(function(){var g=b(this).scrollable();if(g){c=g}var i,f,h=true;g.play=function(){if(i){return}h=false;i=setInterval(function(){g.move(e.steps)},e.interval);g.move(e.steps)};g.pause=function(){i=clearInterval(i)};g.stop=function(){g.pause();h=true};if(e.autopause){g.getRoot().add(g.getNaviButtons()).hover(function(){g.pause();clearInterval(f)},function(){if(!h){f=setTimeout(g.play,e.interval)}})}if(e.autoplay){setTimeout(g.play,e.interval)}});return e.api?c:this}})(Hapnin.q);(function($){$.fn.extend({selectbox:function(options){return this.each(function(){new $.SelectBox(this,options);});}});if(!window.console){var console={log:function(msg){}}}
$.SelectBox=function(selectobj,options){var opt=options||{};opt.inputClass=opt.inputClass||"selectbox";opt.containerClass=opt.containerClass||"selectbox-wrapper";opt.hoverClass=opt.hoverClass||"current";opt.currentClass=opt.currentClass||"selected";opt.onChangeCallback=opt.onChangeCallback||false;opt.onChangeParams=opt.onChangeParams||false;opt.debug=opt.debug||false;opt.autoWidth=opt.autoWidth||false;var elm_id=selectobj.id;var active=0;var inFocus=false;var hasfocus=0;var $select=$(selectobj);var $container=setupContainer(opt);var $input=setupInput(opt);$select.hide().before($input).before($container);init();$input.click(function(){if(!inFocus){$container.toggle();}}).focus(function(){window.console.log("Focus called");if($container.not(':visible')){inFocus=true;$container.show();$container.focus();}}).keydown(function(event){switch(event.keyCode){case 38:event.preventDefault();moveSelect(-1);break;case 40:event.preventDefault();moveSelect(1);break;case 13:event.preventDefault();$('li.'+opt.hoverClass).trigger('click');break;case 27:hideMe();break;}}).blur(function(){if($container.is(':visible')&&hasfocus>0){if(opt.debug)console.log('container visible and has focus')}else{hideMe();}});function hideMe(){hasfocus=0;$container.hide();}
function init(){$container.append(getSelectOptions($input.attr('id'))).hide();var width=$input.css('width');$container.width(width);}
function setupContainer(options){var container=document.createElement("div");$container=$(container);$container.attr('id',elm_id+'_container');$container.addClass(options.containerClass);$container.css('display','none');return $container;}
function setupInput(options){var input=document.createElement("input");var $input=$(input);$input.attr("id",elm_id+"_input");$input.attr("type","text");$input.addClass(options.inputClass);$input.attr("autocomplete","off");$input.attr("readonly","readonly");$input.attr("tabIndex",$select.attr("tabindex"));if(opt.autoWidth)$input.css("width",$select.css("width"));return $input;}
function moveSelect(step){var lis=$("li",$container);if(!lis||lis.length==0)return false;active+=step;if(active<0){active=lis.size();}else if(active>lis.size()){active=0;}
scroll(lis,active);lis.removeClass(opt.hoverClass);$(lis[active]).addClass(opt.hoverClass);}
function scroll(list,active){var el=$(list[active]).get(0);var list=$container.get(0);if(el.offsetTop+el.offsetHeight>list.scrollTop+list.clientHeight){list.scrollTop=el.offsetTop+el.offsetHeight-list.clientHeight;}else if(el.offsetTop<list.scrollTop){list.scrollTop=el.offsetTop;}}
function setCurrent(){var li=$("li."+opt.currentClass,$container).get(0);var ar=(''+li.id).split('_');var el=ar[ar.length-1];$select.get(0).selectedIndex=$('li',$container).index(li);$input.val($(li).html().replace("&nbsp;",""));opt.onChangeParams={selectedVal:$select.val()};if(opt.onChangeCallback)opt.onChangeCallback(opt.onChangeParams);return true;}
function getCurrentSelected(){return $select.val();}
function getCurrentValue(){return $input.val();}
function getSelectOptions(parentid){var select_options=new Array();var ul=document.createElement('ul');$select.children('option').each(function(){var li=document.createElement('li');li.setAttribute('id',parentid+'_'+$(this).val());li.innerHTML=$(this).html();if($(this).is(':selected')){$input.val($(this).html());$(li).addClass(opt.currentClass);}
ul.appendChild(li);$(li).mouseover(function(event){hasfocus=1;if(opt.debug)console.log('over on : '+this.id);$(event.target,$container).addClass(opt.hoverClass);}).mouseout(function(event){hasfocus=-1;if(opt.debug)console.log('out on : '+this.id);$(event.target,$container).removeClass(opt.hoverClass);}).click(function(event){var fl=$('li.'+opt.hoverClass,$container).get(0);if(opt.debug)console.log('click on :'+this.id);$('li.'+opt.currentClass,$container).removeClass(opt.currentClass);$(this).addClass(opt.currentClass);setCurrent();$select.get(0).blur();hideMe();});});return ul;}};})(Hapnin.q);