var GM=google.maps,CM=function(){var b=[];return{init:function(){for($.ajaxSetup({type:"POST",dataType:"json"});b.length;)b.shift()()},addToLoad:function(k){b.push(k)},newObj:function(k){function o(){}var v=Array.prototype.slice.call(arguments,1);o.prototype=k;var s=new o;v.length&&s.init.apply(s,v);return s}}}();CM.extendGoogleMap=function(){$.extend(GM.Map.prototype,{visibleCount:0,markers:{},markerCounter:[],oldBounds:undefined,oldBoundsObject:"",oldZoom:undefined,overlap:false,setVisibleCount:function(){var b=this.getBounds(),k=0,o=this.getZoom();for(key in this.markers)b.contains(this.markers[key].getPosition())&&this.markers[key].zoom<=o&&k++;return this.visibleCount=k},garbageCollect:function(){for(var b,k=0,o,v=this.getBounds();this.markerCounter.length>400;){o=this.markerCounter[k];if(b=this.markers[o])if(v.contains(b.getPosition()))k=
(k+137)%400;else{this.markerCounter.splice(k,1);this.removeMarker(o)}else this.markerCounter.splice(k,1)}},recordOldBounds:function(){this.oldBounds=this.getBounds();this.oldZoom=this.getZoom();this.oldBoundsObject=this.getBoundsObject(this.oldBounds,"o")},getBoundsObject:function(b,k){var o={};o[k+"N"]=b.getNorthEast().lat();o[k+"S"]=b.getSouthWest().lat();o[k+"E"]=b.getNorthEast().lng();o[k+"W"]=b.getSouthWest().lng();return o},detectOverlap:function(){var b=this.getBounds();b={N:b.getNorthEast().lat(),
S:b.getSouthWest().lat(),E:b.getNorthEast().lng(),W:b.getSouthWest().lng()};var k={N:this.oldBounds.getNorthEast().lat(),S:this.oldBounds.getSouthWest().lat(),E:this.oldBounds.getNorthEast().lng(),W:this.oldBounds.getSouthWest().lng()};b={N:b.N<k.N&&b.N>k.S,S:b.S>k.S&&b.S<k.N,E:b.E<k.E&&b.E>k.W,W:b.W>k.W&&b.W<k.E};b={NW:b.N&&b.W,NE:b.N&&b.E,SE:b.S&&b.E,SW:b.S&&b.W};if((b.NW||b.NE||b.SE||b.SW)&&!(b.NW&&b.NE&&b.SE&&b.SW))return true},removeMarker:function(b){this.markerManager.removeMarker(this.markers[b]);
delete this.markers[b]},switchCurrentMarker:function(b){this.currentMarker&&this.markers[this.currentMarker].hideInfo();this.currentMarker=b}})};String.prototype.trim=function(){return this.replace(/^\s*/,"").replace(/\s*$/,"")};Array.prototype.joinWithAnd=function(b){var k=b?"<"+b+">":"";b=b?"</"+b+">":"";var o=b+", "+k,v=this.length>1?this.pop():null;return k+this.join(o)+b+(v?" and "+k+v+b:"")};CM.Filters=function(){function b(){for(var f=0,a=d.length;f<a;f++)i(d[f]);m();CM.URL.setFilters(k());v();s()}function k(){var f="";$(".include:checked",r[0]).each(function(){f+="+"+this.name});$(".exclude:checked",r[0]).each(function(){f+="-"+this.name});return f}function o(f,a){var e,j;for(var t in f)if(f.hasOwnProperty(t)){j=f[t];for(var y=0,A=d.length;y<A;y++){e=d[y];if((h[e].required&j["filters_"+e])!=h[e].required||h[e].excluded&j["filters_"+e]){a(t);break}}}return f}function v(){c=c||CM.Map.map();
o(c.markers,$.proxy(c,"removeMarker"));CM.newObj(CM.MarkerAdder,{number:CM.SATURATION-c.setVisibleCount(),shape:"rectangle"})}function s(){return false}function i(f){var a,e,j,t="",y="",A={required:[],excluded:[]};a=g[f];e=CM.FILTERS[f];for(key in e){j=$("[name='"+e[key].code+"']:checked",a).val();if(j==1){t+="1";y+="0";A.required.push(e[key].name)}else if(j==-1){t+="0";y+="1";A.excluded.push(e[key].name)}else if(j==0){t+="0";y+="0"}}h[f]={required:parseInt(t,2),excluded:parseInt(y,2)};p[f]=A}function n(){r=
$("#filters").submit(function(j){_gaq.push(["_trackEvent","/filtered"]);j.preventDefault();r.slideUp(function(){$("#extra_filters").hide();$("html, body").scrollTop(0)});b();$("#filterToggle").show()});w=$("span","#filterDetails");for(var f=0,a=d.length;f<a;f++)g[d[f]]=$("#filters_"+d[f]);$("#filterToggle").live("click",function(){r.slideDown();$("#filterToggle").hide();return false});$("#filters .cancel").live("click",function(){$("#filterToggle").show();r.slideUp(function(){$("#extra_filters").hide();
$("html, body").scrollTop(0)})});$(".reset","#filters").click(function(){q()});$(".morefilters","#filters").click(function(){$("#extra_filters").slideDown()});if(f=CM.URL.getFilters()){l(f);f=0;for(a=d.length;f<a;f++)i(d[f]);m()}else{try{h=u()}catch(e){}f=0;for(a=d.length;f<a;f++)i(d[f])}$.fn.slidey=function(){function j(x){$(document).bind("mousemove.slidey",{original:x.target},C).bind("mouseup.slidey",{original:x.target},t);x.preventDefault()}function t(x){$(x.data.original).parent().removeClass("noClick");
$(document).unbind("mousemove.slidey").unbind("mouseup.slidey");$(x.data.original).trigger("updateVal")}function y(x){A($(x.target))}function A(x){var B=x.parent().attr("class");x.closest("li").find("[id$="+B.substr(0,1).toUpperCase()+B.substr(1)+"]").prop("checked",true)}function C(x){$(x.data.original).parent().addClass("noClick");var B=x.data.original;x=x.pageX-$(B).parent().offset().left;var z=x>25?"false":x<15?"true":"neutral";otherClasses=x>25?"true neutral":x<15?"false neutral":"true false";
$(B).parent().addClass(z).removeClass(otherClasses)}this.each2(function(x,B){$("label, input",this).css("display","none");B.append('<span style="width: 40px;display: inline-block; position:relative;height: 10px;"><span class="switch" style="width: 10px;height: 10px; position:absolute; top: 0;"></span></span>');x=/(True|Neutral|False)/.exec($(":checked",this).attr("id"))[1].toLowerCase();B.children("span").addClass(x).click(function(){var z=$(this);if(!z.hasClass("noClick")){if(z.hasClass("true"))z.removeClass("true").addClass("false");
else if(z.hasClass("neutral"))z.removeClass("neutral").addClass("true");else z.hasClass("false")&&z.removeClass("false").addClass("neutral");A(z.children(0))}})});this.delegate(".switch","mousedown",j).delegate(".switch","updateVal",y);$(document).bind("clearAll.slidey",function(){$("fieldset .switch").parent().attr("class","neutral").end().each(function(){A($(this))})})};$("li",r[0]).slidey();s()}function l(f){$("input[id*='Neutral']",r[0]).prop("checked",true);f.replace(/(\+|\-)(\w+)/g,function(a,
e,j){e=="+"?$("#"+j+"True").prop("checked",true):$("#"+j+"False").prop("checked",true)})}function q(){$(document).trigger("clearAll.slidey")}function u(){for(var f={},a=0,e=d.length;a<e;a++)f[d[a]]={required:parseInt($.cookie(d[a]+"_required"),10),excluded:parseInt($.cookie(d[a]+"_excluded"),10)};return f}function m(){var f={expires:30};for(var a in h){$.cookie(a+"_required",h[a].required,f);$.cookie(a+"_excluded",h[a].excluded,f)}}CM.FILTER_TYPES="type,facility,leisure,restriction".split(",");var d=
CM.FILTER_TYPES,g={},h={},p={},r,w,c;return{init:n,getFilters:function(){return h},applyFilters:o}}();CM.headings={};CM.Map=function(){function b(){function n(){if((p=$("a[href$='"+p.join("/")+"']",CM.MapNav.container()))&&p.length){coords=p.eq(0).attr("class").split("|");u({lat:coords[1],lng:coords[2],zoom:coords[3]})}else d()}function l(){$.ajax({url:"/town/"+w,success:u})}function q(){$.ajax({url:"/campsites/view/"+c[0],success:u})}function u(e){if(e.lat){f=false;if(e.months)a.campsite=e;g({center:new GM.LatLng(parseFloat(e.lat),parseFloat(e.lng)),zoom:parseFloat(e.zoom)||CM.SEARCH_ZOOM})}else d()}function m(e){if(e){f=
false;$.extend(a,{center:new GM.LatLng(e.lat,e.lng),zoom:CM.SEARCH_ZOOM})}else $.extend(a,CM.DEFAULT_CENTER);h()}function d(){CM.URL.clear();g(CM.DEFAULT_CENTER)}function g(e){$.extend(a,e);CM.Search.clear();h()}function h(){i=new GM.Map(s[0],a);GM.event.addListenerOnce(i,"bounds_changed",function(){i.recordOldBounds()});i.markerManager=new MarkerManager(i,{borderPadding:0});GM.event.addListener(i.markerManager,"loaded",function(){GM.event.addListenerOnce(i,"idle",function(){a.campsite&&CM.MarkerAdder.addMarker(a.campsite,
1,i).showInfo();CM.newObj(CM.MarkerAdder,{shape:"uk",number:CM.SATURATION,zoom:1,repopulate:!f,defaultMarkers:CM.DEFAULT_MARKERS});GM.event.addListener(i,"idle",o)})})}var p,r,w,c,f=true,a={mapTypeId:GM.MapTypeId.ROADMAP};s=$("#campingMap").bind("newInfoWindow",function(e,j){i.switchCurrentMarker(j)});if(s.length){CM.extendGoogleMap();if(CM.URL.isValid())if(p=CM.URL.getArea())n();else if(w=CM.URL.getTown())l();else if(c=CM.URL.getCampsite())q();else(r=CM.URL.getSearch())?CM.Search.doSearch(r,m):g(CM.DEFAULT_CENTER);
else d()}}function k(n,l,q){if(typeof n=="object"){i.setCenter(n.center);i.setZoom(n.zoom)}else{i.setCenter(new GM.LatLng(parseFloat(n),parseFloat(l)));q&&i.setZoom(parseInt(q,10))}}function o(){var n=CM.SATURATION-i.setVisibleCount(),l=i.getZoom(),q=i.oldZoom;if(n>0)if(q<l&&l>6)l==q+1?CM.newObj(CM.MarkerAdder,{number:n,zoom:l,shape:"rectangle",singleLevel:true}):CM.newObj(CM.MarkerAdder,{number:n,zoom:l});else CM.newObj(CM.MarkerAdder,{number:n,zoom:l});i.recordOldBounds()}function v(){CM.MapNav.init();
CM.Search.init();CM.Filters.init();CM.Months.init();b()}var s,i;CM.SEARCH_ZOOM=11;CM.DEFAULT_CENTER={zoom:6,center:new GM.LatLng(parseFloat(54.149567212540525),parseFloat(-3.076171875))};return{init:v,handleViewChange:o,centerAt:k,map:function(){return i},container:function(){return s}}}();CM.MapNav=function(){function b(l){l.preventDefault();$(l.target).closest("li").siblings().removeClass("active").end().toggleClass("active");n.delegate(":not(#regionNav ul), .close","click",k);return false}function k(){$(">li",i).removeClass("active");n.undelegate("click");return false}function o(l){l.preventDefault();k();var q=l.target;l=q.className.split("|");var u=q.href.split("/");q=u.pop();u=u.pop();CM.URL.set(u,q);CM.Map.centerAt(l[1],l[2],l[3])}function v(l){CM.Map.centerAt(CM.DEFAULT_CENTER);
CM.URL.clear();l.preventDefault()}function s(){i=$("#regionNav").delegate("h2 a","click",b).delegate("li li a","click",o);n=$("body:eq(0)");$("h1 a","#header").click(v)}var i,n;return{init:s,loadRegion:o,container:function(){return i}}}();(function(){function b(i,n){this.zoom=n<=6?1:n;this.setPosition(new GM.LatLng(parseFloat(i.lat),parseFloat(i.lng)));this.setOptions({title:i.name});this.data=i;n=0;for(var l=s.length;n<l;n++)this[s[n]]=parseInt(i[s[n]],10);this.months=parseInt(i.months,10);var q=[],u;n=0;for(l=this.addressComponents.length;n<l;n++)if(u=i[this.addressComponents[n]])q.push(u);this.infowindow=new google.maps.InfoWindow({content:'<div class="markerHtml"><h3>'+i.name+"</h3><ul><li>"+q.join("<br />")+"</li>"+(i.phone?"<li><strong>Tel:</strong> "+
i.phone+"</li>":"")+(i.website?'<li><a target="_blank" href="'+i.website+'">Website</a></li>':"")+(i.ukcs_id?'<li><a target="_blank" href="http://www.ukcampsite.co.uk/sites/details.asp?revid='+i.ukcs_id+'">Reviews and more info</a></li>':"")+"</ul></div>"});GM.event.addListener(this,"click",k)}function k(){CM.Map.container().trigger("newInfoWindow",this.data.id);this.infowindow.open(CM.Map.map(),this)}function o(){this.infowindow.close()}CM.Marker=new GM.Marker(new GM.LatLng(0,0));var v="add_1,add_2,add_3,add_4,county,postcode".split(","),
s="filters_restriction,filters_type,filters_leisure,filters_facility".split(",");$.extend(CM.Marker,{init:b,addressComponents:v,showInfo:k,hideInfo:o})})();CM.MarkerAdder=function(){function b(m){if(m.number!=0){this.config=m;this.map=CM.Map.map();this.markerIds=[];this.config.zoom=this.config.zoom||this.map.getZoom();if(this.config.defaultMarkers){this.postData={shape:"uk"};this.loadMarkers(this.config.defaultMarkers)}else{if(this.config.repopulate)this.config.repopulate=2;this.postData={number:m.number};this.postData.shape=m.shape&&m.shape=="uk"?"uk":!this.map.detectOverlap()||m.shape&&m.shape=="rectangle"||this.map.visibleCount<CM.SATURATION/3?"rectangle":
"punch";this.setBounds();this.setFilters();this.fetchMarkers()}}}function k(){if(this.postData.shape!="uk"){$.extend(this.postData,this.map.getBoundsObject(this.map.getBounds(),"n"));this.postData.shape=="punch"&&$.extend(this.postData,this.map.oldBoundsObject)}}function o(){this.postData.filters=CM.Filters.getFilters();this.postData.months=CM.Months.getMonths()}function v(){this.postData.excludeIds=this.markerIds.join(",")}function s(){var m=this;$.ajax({url:"/campsites/batch",data:m.postData,success:$.proxy(i,
m)})}function i(m){if(this.postData.shape=="uk"){m=CM.Filters.applyFilters(m,function(d){m.splice(d,1)});if(m.length<60){this.setFilters();this.config.repopulate=2}this.addMarkerBatch(m,1)}else this.config.singleLevel?this.addMarkerBatch(m,this.config.zoom):this.addLayeredMarkers(m);this.map.setVisibleCount();this.config.repopulate&&this.repopulate()}function n(){this.postData.number=CM.SATURATION-this.map.visibleCount;if(this.postData.number>0){if(this.postData.shape=="uk"){this.postData.shape="rectangle";
this.setBounds()}this.setExclusionList();this.config.repopulate--;this.fetchMarkers()}else this.map.garbageCollect()}function l(m){for(var d=m.length,g=this.map.getZoom(),h=g-6,p=0.5,r=0;r<h;r++)p+=1/Math.pow(9,r);for(h=d/p;g>6&&d;){p=Math.min(d,Math.max(1,Math.floor(h)));this.addMarkerBatch(m.splice(0,p),g);d-=p;g--;h/=2}m.length&&this.addMarkerBatch(m,this.map.getZoom());this.map.setVisibleCount()}function q(m,d){for(var g=0,h=m.length;g<h;g++)this.addMarker(m[g],d)}function u(m,d,g){var h=m.id;
g=g||this.map;if(!g.markers[h]){m=CM.newObj(CM.Marker,m,d);this.markerIds&&this.markerIds.push(h);g.markerManager.addMarker(m,d);g.markers[h]=m;g.markerCounter.push(h);return m}}return{init:b,fetchMarkers:s,loadMarkers:i,setBounds:k,setFilters:o,addMarkerBatch:q,addMarker:u,addLayeredMarkers:l,repopulate:n,setExclusionList:v}}();CM.Months=function(){function b(d,g){function h(p,r){return p==0?Math.pow(2,r)-1:Math.pow(2,r)-Math.pow(2,p)}return d==g?0:d<g?h(d,g):h(0,g)+h(d,12)}function k(){$.fn.monthSlider=function(g){function h(a){for(var e=g.labels,j='<div class="labels">',t=0,y=e.length;t<y;t++)j+='<span style="width:'+a.itemWidth+'px">'+e[t]+"</span>";j+='</div><div style="position:absolute;height:22px;top:0;left:0"><a href="#" title="Drag to set the earliest date you want to go camping" style="left: '+(a.itemWidth*g.start-
8)+'px;" class="start mark"></a><a href="#" title="Drag to set the latest date you want to go camping" style="left: '+(a.itemWidth*g.end-8)+'px;" class="end mark"></a><span class="earlyBar bar"></span><span class="midBar bar active"></span><span class="lateBar bar"></span></div>';return j}function p(a){var e=$.extend(a.data,{draggable:a.target});$(document).bind("mousemove.slider",e,$.throttle(40,w)).bind("mouseup.slider",e,r);a.preventDefault()}function r(a){$(document).unbind("mousemove.slider").unbind("mouseup.slider",
r);n.trigger("filterMap",[a.data.start,a.data.end]);_gaq.push(["_trackEvent","/monthed/start/"+a.data.start+"/end/"+a.data.end])}function w(a){var e=a.data;e.draggable.ondragstart=function(){return false};a=a.pageX-a.data.widgetPos;var j=Math.max(0,Math.min(12,Math.round(a*e.itemCount/e.width))),t=/(start|end)/.exec(e.draggable.className)[1],y=t=="start"?"end":"start";if(j!=e[y]){f(t,j);$(e.draggable).css("left",j*e.itemWidth-8).data({place:j});c(e)}else if(e[y]>e[t]){if(a>e[y]*e.itemWidth+8){j++;
f(t,j);$(e.draggable).css("left",j*e.itemWidth-8).data({place:j});c(e)}}else if(a<e[y]*e.itemWidth-8){j--;f(t,j);$(e.draggable).css("left",j*e.itemWidth-8).data({place:j});c(e)}}function c(a){function e(){for(j=0;j<3;j++)typeof arguments[j]=="number"?t[j].width(arguments[j]):t[j].css({left:arguments[j][0],width:arguments[j][1]-arguments[j][0]})}var j,t=[a.earlyBar,a.midBar,a.lateBar];if(a.start==a.end)e(0,0,0);else a.start<a.end?e([0,a.start*a.itemWidth],0,[a.end*a.itemWidth,a.width]):e(0,[a.end*
a.itemWidth,a.start*a.itemWidth],0)}function f(a,e){params[a]=e}g=$.extend({start:0,end:12,min:0,max:12,labels:"jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec".split(",")},g);return this.each(function(){var a=$(this),e=g.max-g.min,j=Math.floor((a.width()-32)/e);params={width:e*j,itemCount:e,itemWidth:j,end:parseInt(g.end,10),start:parseInt(g.start,10)};a.css({position:"relative",left:8,width:params.width});params.widgetPos=a.offset().left;g.labels.length!=params.itemCount&&Throw(new Exception("Not enough labels supplied"));
a.html(h(params));params.startMarker=$(".start",a[0]);params.endMarker=$(".end",a[0]);params.earlyBar=$(".earlyBar",a[0]);params.midBar=$(".midBar",a[0]);params.lateBar=$(".lateBar",a[0]);c(params);a.delegate(".start, .end","mousedown",params,p).delegate(".start, .end","click",function(){return false})})};for(var d=u.length;d--;)m[u[d]]=d;if(d=CM.URL.getMonths())$("#slider").monthSlider(o(d));else{q=$.cookie("months")||Math.pow(2,12)-1;$("#slider").monthSlider({start:$.cookie("monthStart")||0,end:$.cookie("monthEnd")||
12})}n=$("#months");n.bind("filterMap",function(g,h,p){v(h,p)});q=b($.cookie("monthStart")||0,$.cookie("monthEnd")||12)}function o(d){d=d.split("-");d=$.map(d,function(g){return m[g]});return d.length==1?{start:d[0],end:d[0]+1}:{start:d[0],end:d[1]+1}}function v(d,g){q=b(d,g);$.cookie("months",q,{expires:30});$.cookie("monthStart",d);$.cookie("monthEnd",g);CM.URL.setMonths(u[d%12],u[(g+11)%12]);i()}function s(d,g){var h;for(var p in d)if(d.hasOwnProperty(p)){h=d[p];q&h.months||g(p)}return d}function i(){l=
l||CM.Map.map();s(l.markers,$.proxy(l,"removeMarker"));CM.newObj(CM.MarkerAdder,{number:CM.SATURATION-l.setVisibleCount(),shape:"rectangle"})}var n,l,q,u="jan,feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec".split(","),m={};return{init:k,getMonths:function(){return q}}}();CM.Search=function(){function b(){$("#searchBox").val("")}function k(h){h.preventDefault();CM.Search.query=$("#searchBox").val().trim();CM.Search.query.length>1?o(CM.Search.query):s("Please enter a longer search term")}function o(h,p){g=p;CM.Search.query=h;$("#searchBox").val(h);d.execute(h+",uk")}function v(){s("No locations found for your search")}function s(h){$("#searchResults").removeClass("hidden").html(h)}function i(){$("#searchResults").addClass("hidden").html("")}function n(h){for(var p=
"",r=0,w=h.length;r<w;r++){for(var c=0,f=h[r].addressLines.length;c<f;c++)p+=h[r].addressLines[c];p+="<br />"}s(p)}function l(h,p){i();CM.URL.set("search",CM.Search.query);CM.Map.centerAt(h,p,CM.SEARCH_ZOOM)}function q(){var h;if(d.results.length==1){h=d.results[0];if(g){g({lat:h.lat,lng:h.lng});g=undefined}else l(h.lat,h.lng)}else if(d.results.length==0){v();g&&g()}else n(d.results)}function u(){m=new google.search.SearchControl;d=new google.search.LocalSearch;m.addSearcher(d);d.setSearchCompleteCallback(null,
q);$("#search").submit(k);$("#searchBox").focus(function(){$(this).select()})}var m,d,g;return{init:u,goToAddress:l,pre:google.load("search","1"),hideResults:i,doSearch:o,clear:b}}();CM.URL=function(){function b(){var c=window.location.hash.match(w.get.campsite);return $.isArray(c)&&c.splice(1,2)}function k(){var c=window.location.hash.match(w.get.area);return $.isArray(c)&&c.splice(1,2)}function o(){var c=window.location.hash.match(w.get.search);return $.isArray(c)&&decodeURIComponent(c[1])}function v(){var c=window.location.hash.match(w.get.town);return $.isArray(c)&&c[1]}function s(c,f){c="/"+c.toLowerCase()+"/"+encodeURIComponent(f.toLowerCase());g();window.location.hash=
l(["filters","months"],"or")?l("area")?window.location.hash.replace(w.replace.area,c):"!"+c+window.location.hash.substr(2):"!"+c;_gaq.push(["_trackPageView",window.location.href])}function i(c,f){if(c=="jan"&&f=="dec")window.location.hash=window.location.hash.replace(w.replace.months,"");else{g();c="/when/"+(c==f?c:c+"-"+f);if(l("months"))window.location.hash=window.location.hash.replace(w.replace.months,c);else window.location.hash+=c}}function n(c){if(c){c=/filters/+c;g();if(l("filters"))window.location.hash=
window.location.hash.replace(w.replace.filters,c);else window.location.hash+=c}else window.location.hash=window.location.hash.replace(w.replace.filters,"")}function l(c,f){if(typeof c=="string"){if(w.has[c].exec(window.location.hash)){w.has[c].lastIndex--;return w.has[c].exec(window.location.hash)?"exit":true}}else{for(var a=false,e=f=="or"?u:q,j=0,t=c.length;j<t;j++){f=l(c[j]);if(f=="exit")return false;a=e(a,f)}return a}}function q(c,f){return c&&f}function u(c,f){return c||f}function m(){var c=
window.location.hash.match(w.get.filters);return $.isArray(c)&&c[1]}function d(){var c=window.location.hash.match(w.get.months);return $.isArray(c)&&c[1]}function g(){if(!(window.location.hash&&window.location.hash.indexOf("!")==1))window.location.hash="!"}function h(){window.location.hash="!"}function p(){var c=window.location.hash;if(c&&(c.indexOf("!/")==1&&l("area,town,search,filters,months,campsite".split(","),"or")&&!(l("campsite")&&l("area,town,search,filters,months".split(","),"or"))||c=="#!")||
!c)return true;return c===""||c==="#"}function r(){}var w={get:{area:/(region|county|tourist)\/([a-z]+)/i,town:/\/town\/([a-z\-']+)/i,search:/\/search\/([^#\/]+)/i,campsite:/\/campsite\/([0-9]+)(?:\/([^#\/]*))?/i,months:/\/when\/([a-z]{3}(\-[a-z]{3})?)/i,filters:/\/filters\/(((\-|\+)[a-z]+)+)/i},has:{anyFilters:/\/(when|filters)\//,filters:/\/filters\/((\-|\+)[a-z]+)+(\/|$)/ig,months:/\/when\/[a-z]{3}(\-[a-z]{3})?(\/|$)/ig,area:/\/(region|county|tourist)\/[a-z]+(\/|$)/ig,town:/\/town\/[a-z\-']+(\/|$)/ig,
search:/\/search\/[^#\/]+(\/|$)/ig,campsite:/\/campsite\/[0-9]+(\/[^#\/]*)?(\/|$)/ig},replace:{area:/\/((?:region|county|tourist|town|search)\/[^#\/]+)/,months:/\/when\/[a-z\-]+/,filters:/\/filters\/[a-zA-Z\-\+]+/}};return{set:s,setMonths:i,setFilters:n,getFilters:m,getMonths:d,getArea:k,getSearch:o,getTown:v,getCampsite:b,clear:h,isValid:p,repair:r}}();

