CINXE.COM
Map/App
<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]--> <!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> <head id="head"><link rel="stylesheet" type="text/css" href="/Templates/Version2/CSS/sfproject-v2.min.css" /><link rel="stylesheet" type="text/css" href="/Templates/Version2/CSS/universal.less" /><link rel="stylesheet" type="text/css" href="/Templates/Version2/CSS/controls.less" /><link rel="stylesheet" type="text/css" href="/Templates/Version2/CSS/formatting.css" /><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" /> <meta name="HandheldFriendly" content="True" /> <meta http-equiv="cleartype" content="on" /> <meta name="application-name" content="Website applicationname shown above taskbar preview" /> <meta name="msapplication-tooltip" content="Additional tooltip text" /> <meta name="msapplication-window" content="width=1024;height=768" /> <meta name="msapplication-starturl" content="./" /> <meta name="msapplication-navbutton-color" content="#E72C53" /> <meta name="msapplication-TileColor" content="#E72C53" /> <meta name="msapplication-TileImage" content='/Templates/Version2/Icons/apple-touch-icon-144x144-precomposed.png' /> <link rel="shortcut icon" href='/Templates/Version2/Icons/favicon.ico?v=2' /> <link rel="shortcut icon" href='/Templates/Version2/Icons/apple-touch-icon-144x144-precomposed.png' /> <link rel="apple-touch-icon-precomposed" sizes="144x144" href='/Templates/Version2/Icons/apple-touch-icon-144x144-precomposed.png' /> <link rel="apple-touch-icon-precomposed" sizes="114x114" href='/Templates/Version2/Icons/apple-touch-icon-114x114-precomposed.png' /> <link rel="apple-touch-icon-precomposed" sizes="72x72" href='/Templates/Version2/Icons/apple-touch-icon-72x72-precomposed.png' /> <link rel="apple-touch-icon-precomposed" href='/Templates/Version2/Icons/apple-touch-icon-57x57-precomposed.png' /> <link rel='gbfs' type='application/json' href='https://gbfs.bcycle.com/bcycle_boulder/gbfs.json' /> <!--[if lt IE 9]> <script type="text/javascript" src="Scripts/script.top.min.js" async="async"></script> <![endif]--> <title> Map/App </title><link href="https://fonts.googleapis.com/css?family=Open+Sans+Condensed:700" rel="stylesheet" type="text/css" /><script type="text/javascript">window.NREUM||(NREUM={}),__nr_require=function(t,e,n){function r(n){if(!e[n]){var o=e[n]={exports:{}};t[n][0].call(o.exports,function(e){var o=t[n][1][e];return r(o?o:e)},o,o.exports)}return e[n].exports}if("function"==typeof __nr_require)return __nr_require;for(var o=0;o<n.length;o++)r(n[o]);return r}({QJf3ax:[function(t,e){function n(t){function e(e,n,a){t&&t(e,n,a),a||(a={});for(var c=s(e),f=c.length,u=i(a,o,r),d=0;f>d;d++)c[d].apply(u,n);return u}function a(t,e){f[t]=s(t).concat(e)}function s(t){return f[t]||[]}function c(){return n(e)}var f={};return{on:a,emit:e,create:c,listeners:s,_events:f}}function r(){return{}}var o="nr@context",i=t("gos");e.exports=n()},{gos:"7eSDFh"}],ee:[function(t,e){e.exports=t("QJf3ax")},{}],3:[function(t){function e(t){try{i.console&&console.log(t)}catch(e){}}var n,r=t("ee"),o=t(1),i={};try{n=localStorage.getItem("__nr_flags").split(","),console&&"function"==typeof console.log&&(i.console=!0,-1!==n.indexOf("dev")&&(i.dev=!0),-1!==n.indexOf("nr_dev")&&(i.nrDev=!0))}catch(a){}i.nrDev&&r.on("internal-error",function(t){e(t.stack)}),i.dev&&r.on("fn-err",function(t,n,r){e(r.stack)}),i.dev&&(e("NR AGENT IN DEVELOPMENT MODE"),e("flags: "+o(i,function(t){return t}).join(", ")))},{1:22,ee:"QJf3ax"}],4:[function(t){function e(t,e,n,i,s){try{c?c-=1:r("err",[s||new UncaughtException(t,e,n)])}catch(f){try{r("ierr",[f,(new Date).getTime(),!0])}catch(u){}}return"function"==typeof a?a.apply(this,o(arguments)):!1}function UncaughtException(t,e,n){this.message=t||"Uncaught error with no additional information",this.sourceURL=e,this.line=n}function n(t){r("err",[t,(new Date).getTime()])}var r=t("handle"),o=t(6),i=t("ee"),a=window.onerror,s=!1,c=0;t("loader").features.err=!0,t(4),window.onerror=e;try{throw new Error}catch(f){"stack"in f&&(t(1),t(5),"addEventListener"in window&&t(2),window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&t(3),s=!0)}i.on("fn-start",function(){s&&(c+=1)}),i.on("fn-err",function(t,e,r){s&&(this.thrown=!0,n(r))}),i.on("fn-end",function(){s&&!this.thrown&&c>0&&(c-=1)}),i.on("internal-error",function(t){r("ierr",[t,(new Date).getTime(),!0])})},{1:9,2:6,3:10,4:3,5:8,6:23,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],5:[function(t){function e(){}if(window.performance&&window.performance.timing&&window.performance.getEntriesByType){var n=t("ee"),r=t("handle"),o=t(1);t("loader").features.stn=!0,t(2),n.on("fn-start",function(t){var e=t[0];e instanceof Event&&(this.bstStart=Date.now())}),n.on("fn-end",function(t,e){var n=t[0];n instanceof Event&&r("bst",[n,e,this.bstStart,Date.now()])}),o.on("fn-start",function(t,e,n){this.bstStart=Date.now(),this.bstType=n}),o.on("fn-end",function(t,e){r("bstTimer",[e,this.bstStart,Date.now(),this.bstType])}),n.on("pushState-start",function(){this.time=Date.now(),this.startPath=location.pathname+location.hash}),n.on("pushState-end",function(){r("bstHist",[location.pathname+location.hash,this.startPath,this.time])}),"addEventListener"in window.performance&&(window.performance.addEventListener("webkitresourcetimingbufferfull",function(){r("bstResource",[window.performance.getEntriesByType("resource")]),window.performance.webkitClearResourceTimings()},!1),window.performance.addEventListener("resourcetimingbufferfull",function(){r("bstResource",[window.performance.getEntriesByType("resource")]),window.performance.clearResourceTimings()},!1)),document.addEventListener("scroll",e,!1),document.addEventListener("keypress",e,!1),document.addEventListener("click",e,!1)}},{1:9,2:7,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],6:[function(t,e){function n(t){i.inPlace(t,["addEventListener","removeEventListener"],"-",r)}function r(t){return t[1]}var o=(t(1),t("ee").create()),i=t(2)(o),a=t("gos");if(e.exports=o,n(window),"getPrototypeOf"in Object){for(var s=document;s&&!s.hasOwnProperty("addEventListener");)s=Object.getPrototypeOf(s);s&&n(s);for(var c=XMLHttpRequest.prototype;c&&!c.hasOwnProperty("addEventListener");)c=Object.getPrototypeOf(c);c&&n(c)}else XMLHttpRequest.prototype.hasOwnProperty("addEventListener")&&n(XMLHttpRequest.prototype);o.on("addEventListener-start",function(t){if(t[1]){var e=t[1];"function"==typeof e?this.wrapped=t[1]=a(e,"nr@wrapped",function(){return i(e,"fn-",null,e.name||"anonymous")}):"function"==typeof e.handleEvent&&i.inPlace(e,["handleEvent"],"fn-")}}),o.on("removeEventListener-start",function(t){var e=this.wrapped;e&&(t[1]=e)})},{1:23,2:24,ee:"QJf3ax",gos:"7eSDFh"}],7:[function(t,e){var n=(t(2),t("ee").create()),r=t(1)(n);e.exports=n,r.inPlace(window.history,["pushState"],"-")},{1:24,2:23,ee:"QJf3ax"}],8:[function(t,e){var n=(t(2),t("ee").create()),r=t(1)(n);e.exports=n,r.inPlace(window,["requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","msRequestAnimationFrame"],"raf-"),n.on("raf-start",function(t){t[0]=r(t[0],"fn-")})},{1:24,2:23,ee:"QJf3ax"}],9:[function(t,e){function n(t,e,n){var r=t[0];"string"==typeof r&&(r=new Function(r)),t[0]=o(r,"fn-",null,n)}var r=(t(2),t("ee").create()),o=t(1)(r);e.exports=r,o.inPlace(window,["setTimeout","setInterval","setImmediate"],"setTimer-"),r.on("setTimer-start",n)},{1:24,2:23,ee:"QJf3ax"}],10:[function(t,e){function n(){f.inPlace(this,p,"fn-")}function r(t,e){f.inPlace(e,["onreadystatechange"],"fn-")}function o(t,e){return e}function i(t,e){for(var n in t)e[n]=t[n];return e}var a=t("ee").create(),s=t(1),c=t(2),f=c(a),u=c(s),d=window.XMLHttpRequest,p=["onload","onerror","onabort","onloadstart","onloadend","onprogress","ontimeout"];e.exports=a,window.XMLHttpRequest=function(t){var e=new d(t);try{a.emit("new-xhr",[],e),u.inPlace(e,["addEventListener","removeEventListener"],"-",function(t,e){return e}),e.addEventListener("readystatechange",n,!1)}catch(r){try{a.emit("internal-error",[r])}catch(o){}}return e},i(d,XMLHttpRequest),XMLHttpRequest.prototype=d.prototype,f.inPlace(XMLHttpRequest.prototype,["open","send"],"-xhr-",o),a.on("send-xhr-start",r),a.on("open-xhr-start",r)},{1:6,2:24,ee:"QJf3ax"}],11:[function(t){function e(t){if("string"==typeof t&&t.length)return t.length;if("object"!=typeof t)return void 0;if("undefined"!=typeof ArrayBuffer&&t instanceof ArrayBuffer&&t.byteLength)return t.byteLength;if("undefined"!=typeof Blob&&t instanceof Blob&&t.size)return t.size;if("undefined"!=typeof FormData&&t instanceof FormData)return void 0;try{return JSON.stringify(t).length}catch(e){return void 0}}function n(t){var n=this.params,r=this.metrics;if(!this.ended){this.ended=!0;for(var i=0;c>i;i++)t.removeEventListener(s[i],this.listener,!1);if(!n.aborted){if(r.duration=(new Date).getTime()-this.startTime,4===t.readyState){n.status=t.status;var a=t.responseType,f="arraybuffer"===a||"blob"===a||"json"===a?t.response:t.responseText,u=e(f);if(u&&(r.rxSize=u),this.sameOrigin){var d=t.getResponseHeader("X-NewRelic-App-Data");d&&(n.cat=d.split(", ").pop())}}else n.status=0;r.cbTime=this.cbTime,o("xhr",[n,r,this.startTime])}}}function r(t,e){var n=i(e),r=t.params;r.host=n.hostname+":"+n.port,r.pathname=n.pathname,t.sameOrigin=n.sameOrigin}if(window.XMLHttpRequest&&XMLHttpRequest.prototype&&XMLHttpRequest.prototype.addEventListener&&!/CriOS/.test(navigator.userAgent)){t("loader").features.xhr=!0;var o=t("handle"),i=t(2),a=t("ee"),s=["load","error","abort","timeout"],c=s.length,f=t(1);t(4),t(3),a.on("new-xhr",function(){this.totalCbs=0,this.called=0,this.cbTime=0,this.end=n,this.ended=!1,this.xhrGuids={}}),a.on("open-xhr-start",function(t){this.params={method:t[0]},r(this,t[1]),this.metrics={}}),a.on("open-xhr-end",function(t,e){"loader_config"in NREUM&&"xpid"in NREUM.loader_config&&this.sameOrigin&&e.setRequestHeader("X-NewRelic-ID",NREUM.loader_config.xpid)}),a.on("send-xhr-start",function(t,n){var r=this.metrics,o=t[0],i=this;if(r&&o){var f=e(o);f&&(r.txSize=f)}this.startTime=(new Date).getTime(),this.listener=function(t){try{"abort"===t.type&&(i.params.aborted=!0),("load"!==t.type||i.called===i.totalCbs&&(i.onloadCalled||"function"!=typeof n.onload))&&i.end(n)}catch(e){try{a.emit("internal-error",[e])}catch(r){}}};for(var u=0;c>u;u++)n.addEventListener(s[u],this.listener,!1)}),a.on("xhr-cb-time",function(t,e,n){this.cbTime+=t,e?this.onloadCalled=!0:this.called+=1,this.called!==this.totalCbs||!this.onloadCalled&&"function"==typeof n.onload||this.end(n)}),a.on("xhr-load-added",function(t,e){var n=""+f(t)+!!e;this.xhrGuids&&!this.xhrGuids[n]&&(this.xhrGuids[n]=!0,this.totalCbs+=1)}),a.on("xhr-load-removed",function(t,e){var n=""+f(t)+!!e;this.xhrGuids&&this.xhrGuids[n]&&(delete this.xhrGuids[n],this.totalCbs-=1)}),a.on("addEventListener-end",function(t,e){e instanceof XMLHttpRequest&&"load"===t[0]&&a.emit("xhr-load-added",[t[1],t[2]],e)}),a.on("removeEventListener-end",function(t,e){e instanceof XMLHttpRequest&&"load"===t[0]&&a.emit("xhr-load-removed",[t[1],t[2]],e)}),a.on("fn-start",function(t,e,n){e instanceof XMLHttpRequest&&("onload"===n&&(this.onload=!0),("load"===(t[0]&&t[0].type)||this.onload)&&(this.xhrCbStart=(new Date).getTime()))}),a.on("fn-end",function(t,e){this.xhrCbStart&&a.emit("xhr-cb-time",[(new Date).getTime()-this.xhrCbStart,this.onload,e],e)})}},{1:"XL7HBI",2:12,3:10,4:6,ee:"QJf3ax",handle:"D5DuLP",loader:"G9z0Bl"}],12:[function(t,e){e.exports=function(t){var e=document.createElement("a"),n=window.location,r={};e.href=t,r.port=e.port;var o=e.href.split("://");return!r.port&&o[1]&&(r.port=o[1].split("/")[0].split("@").pop().split(":")[1]),r.port&&"0"!==r.port||(r.port="https"===o[0]?"443":"80"),r.hostname=e.hostname||n.hostname,r.pathname=e.pathname,r.protocol=o[0],"/"!==r.pathname.charAt(0)&&(r.pathname="/"+r.pathname),r.sameOrigin=!e.hostname||e.hostname===document.domain&&e.port===n.port&&e.protocol===n.protocol,r}},{}],13:[function(t,e){function n(t){return function(){r(t,[(new Date).getTime()].concat(i(arguments)))}}var r=t("handle"),o=t(1),i=t(2);"undefined"==typeof window.newrelic&&(newrelic=window.NREUM);var a=["setPageViewName","addPageAction","setCustomAttribute","finished","addToTrace","inlineHit","noticeError"];o(a,function(t,e){window.NREUM[e]=n("api-"+e)}),e.exports=window.NREUM},{1:22,2:23,handle:"D5DuLP"}],gos:[function(t,e){e.exports=t("7eSDFh")},{}],"7eSDFh":[function(t,e){function n(t,e,n){if(r.call(t,e))return t[e];var o=n();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(t,e,{value:o,writable:!0,enumerable:!1}),o}catch(i){}return t[e]=o,o}var r=Object.prototype.hasOwnProperty;e.exports=n},{}],D5DuLP:[function(t,e){function n(t,e,n){return r.listeners(t).length?r.emit(t,e,n):(o[t]||(o[t]=[]),void o[t].push(e))}var r=t("ee").create(),o={};e.exports=n,n.ee=r,r.q=o},{ee:"QJf3ax"}],handle:[function(t,e){e.exports=t("D5DuLP")},{}],XL7HBI:[function(t,e){function n(t){var e=typeof t;return!t||"object"!==e&&"function"!==e?-1:t===window?0:i(t,o,function(){return r++})}var r=1,o="nr@id",i=t("gos");e.exports=n},{gos:"7eSDFh"}],id:[function(t,e){e.exports=t("XL7HBI")},{}],loader:[function(t,e){e.exports=t("G9z0Bl")},{}],G9z0Bl:[function(t,e){function n(){var t=l.info=NREUM.info;if(t&&t.licenseKey&&t.applicationID&&f&&f.body){s(h,function(e,n){e in t||(t[e]=n)}),l.proto="https"===p.split(":")[0]||t.sslForHttp?"https://":"http://",a("mark",["onload",i()]);var e=f.createElement("script");e.src=l.proto+t.agent,f.body.appendChild(e)}}function r(){"complete"===f.readyState&&o()}function o(){a("mark",["domContent",i()])}function i(){return(new Date).getTime()}var a=t("handle"),s=t(1),c=(t(2),window),f=c.document,u="addEventListener",d="attachEvent",p=(""+location).split("?")[0],h={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",agent:"js-agent.newrelic.com/nr-593.min.js"},l=e.exports={offset:i(),origin:p,features:{}};f[u]?(f[u]("DOMContentLoaded",o,!1),c[u]("load",n,!1)):(f[d]("onreadystatechange",r),c[d]("onload",n)),a("mark",["firstbyte",i()])},{1:22,2:13,handle:"D5DuLP"}],22:[function(t,e){function n(t,e){var n=[],o="",i=0;for(o in t)r.call(t,o)&&(n[i]=e(o,t[o]),i+=1);return n}var r=Object.prototype.hasOwnProperty;e.exports=n},{}],23:[function(t,e){function n(t,e,n){e||(e=0),"undefined"==typeof n&&(n=t?t.length:0);for(var r=-1,o=n-e||0,i=Array(0>o?0:o);++r<o;)i[r]=t[e+r];return i}e.exports=n},{}],24:[function(t,e){function n(t){return!(t&&"function"==typeof t&&t.apply&&!t[i])}var r=t("ee"),o=t(1),i="nr@wrapper",a=Object.prototype.hasOwnProperty;e.exports=function(t){function e(t,e,r,a){function nrWrapper(){var n,i,s,f;try{i=this,n=o(arguments),s=r&&r(n,i)||{}}catch(d){u([d,"",[n,i,a],s])}c(e+"start",[n,i,a],s);try{return f=t.apply(i,n)}catch(p){throw c(e+"err",[n,i,p],s),p}finally{c(e+"end",[n,i,f],s)}}return n(t)?t:(e||(e=""),nrWrapper[i]=!0,f(t,nrWrapper),nrWrapper)}function s(t,r,o,i){o||(o="");var a,s,c,f="-"===o.charAt(0);for(c=0;c<r.length;c++)s=r[c],a=t[s],n(a)||(t[s]=e(a,f?s+o:o,i,s,t))}function c(e,n,r){try{t.emit(e,n,r)}catch(o){u([o,e,n,r])}}function f(t,e){if(Object.defineProperty&&Object.keys)try{var n=Object.keys(t);return n.forEach(function(n){Object.defineProperty(e,n,{get:function(){return t[n]},set:function(e){return t[n]=e,e}})}),e}catch(r){u([r])}for(var o in t)a.call(t,o)&&(e[o]=t[o]);return e}function u(e){try{t.emit("internal-error",e)}catch(n){}}return t||(t=r),e.inPlace=s,e.flag=i,e}},{1:23,ee:"QJf3ax"}]},{},["G9z0Bl",4,11,5]); ;NREUM.info={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net",licenseKey:"0ed874c0a9",applicationID:"8001046",sa:1,agent:"js-agent.newrelic.com/nr-593.min.js"} </script><meta name="Generator" content="Sitefinity 14.2.7928.0 DX" /><link rel="canonical" href="https://boulder.bcycle.com/map-app" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><script type="text/javascript"> (function() {var _rdDeviceWidth = (window.innerWidth > 0) ? window.innerWidth : screen.width;var _rdDeviceHeight = (window.innerHeight > 0) ? window.innerHeight : screen.height;var _rdOrientation = (window.width > window.height) ? 'landscape' : 'portrait';})(); </script><link href="/Telerik.Web.UI.WebResource.axd?d=PMrIT5dOWaVYIcpFWUE4nJ3Fri7dOSu9kA63cjDuGqT4mRKaaNuRMDOESwKF7nMvQ1q2kLriMIbQgLLQOt1TW7kzjDrNleX2LRShRm5WLO7Es15kByp0Yoz2R2TdAYcs0&t=638628207619626917&compress=0&_TSM_CombinedScripts_=%3b%3bTelerik.Sitefinity.Resources%2c+Version%3d14.2.7928.0%2c+Culture%3dneutral%2c+PublicKeyToken%3db28c218413bdf563%3aen%3a815e77d4-6502-4f71-95ce-2082a39605d4%3a7a90d6a" type="text/css" rel="stylesheet" /><link href="/Sitefinity/Public/ResponsiveDesign/layout_transformations.css?pageDataId=74ee4b99-c929-6398-bf9b-ff0100d70bc4&pageSiteNode=6DEE4B99-C929-6398-BF9B-FF0100D70BC4/4ce43699-c929-6398-bf9b-ff0100d70bc4/SitefinitySiteMap" type="text/css" rel="stylesheet" /><link href="/Templates/Version2/App_Themes/Boulder/global/font-awesome.min.css?v=637314993631243309" type="text/css" rel="stylesheet" /><link href="/Templates/Version2/App_Themes/Boulder/global/boulder.less?v=637641305308468486" type="text/css" rel="stylesheet" /><style type="text/css" media="all">.ctct-form-header { font-family: "Avalon", Arial, sans-serif !important; } .ctct-form-embed.form_1 .ctct-form-defaults { background-color: #eee !important; border-radius: 5px; margin:-10px 20px 0 0; padding: 0px; font: 16px "Avalon", Arial, sans-serif; max-width: 370px; } #email_address_1 {width:100%;} #email_address_field_1 {margin-bottom:20px;} .ctct-form-footer {display:none;} #gdpr_text {display: none;}</style></head> <!-- ========================================================================== --> <!-- upd: 11/05/2013 | Based on Twitter Bootstrap v3.1.1 --> <!-- ========================================================================== --> <!-- TODO: Change paths /Sitefinity/WebsiteTemplates/twbs appropiately --> <!-- ========================================================================== --> <body class="standard"> <!--[if lt IE 7]> <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a>.</p> <![endif]--> <form method="post" action="./map-app" id="aspnetForm"> <div class="aspNetHidden"> <input type="hidden" name="ctl10_TSM" id="ctl10_TSM" value="" /> <input type="hidden" name="ctl11_TSSM" id="ctl11_TSSM" value="" /> <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> <input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="7mZ6840I5Y2GriBG4ZbhuY/M8Drh1NrFMChtCntA+VddbQR+RgJMoa7sz+i70k4be8lWs1MsEu2uK4TvEQ1DrHC0SPKIRyXXE0zUFLfW7Fg=" /> </div> <script type="text/javascript"> //<![CDATA[ var theForm = document.forms['aspnetForm']; if (!theForm) { theForm = document.aspnetForm; } function __doPostBack(eventTarget, eventArgument) { if (!theForm.onsubmit || (theForm.onsubmit() != false)) { theForm.__EVENTTARGET.value = eventTarget; theForm.__EVENTARGUMENT.value = eventArgument; theForm.submit(); } } //]]> </script> <script src="/WebResource.axd?d=pynGkmcFUV13He1Qd6_TZB-efXbeHHpHcRwy0WL2Y3MrTqdXqzyG8SYEdmIT9rgG7oRKBR0iZUpEYCAZLULGSw2&t=638628207619783110" type="text/javascript"></script> <script src="/Scripts/Modernizr-2.6.2.min.js?v=20230928084128" type="text/javascript"></script> <script type="text/javascript"> //<![CDATA[ var __cultureInfo = {"name":"en","numberFormat":{"CurrencyDecimalDigits":2,"CurrencyDecimalSeparator":".","IsReadOnly":true,"CurrencyGroupSizes":[3],"NumberGroupSizes":[3],"PercentGroupSizes":[3],"CurrencyGroupSeparator":",","CurrencySymbol":"$","NaNSymbol":"NaN","CurrencyNegativePattern":0,"NumberNegativePattern":1,"PercentPositivePattern":0,"PercentNegativePattern":0,"NegativeInfinitySymbol":"-∞","NegativeSign":"-","NumberDecimalDigits":2,"NumberDecimalSeparator":".","NumberGroupSeparator":",","CurrencyPositivePattern":0,"PositiveInfinitySymbol":"∞","PositiveSign":"+","PercentDecimalDigits":2,"PercentDecimalSeparator":".","PercentGroupSeparator":",","PercentSymbol":"%","PerMilleSymbol":"‰","NativeDigits":["0","1","2","3","4","5","6","7","8","9"],"DigitSubstitution":1},"dateTimeFormat":{"AMDesignator":"AM","Calendar":{"MinSupportedDateTime":"\/Date(-62135596800000)\/","MaxSupportedDateTime":"\/Date(253402300799999)\/","AlgorithmType":1,"CalendarType":1,"Eras":[1],"TwoDigitYearMax":2029,"IsReadOnly":true},"DateSeparator":"/","FirstDayOfWeek":0,"CalendarWeekRule":0,"FullDateTimePattern":"dddd, MMMM d, yyyy h:mm:ss tt","LongDatePattern":"dddd, MMMM d, yyyy","LongTimePattern":"h:mm:ss tt","MonthDayPattern":"MMMM d","PMDesignator":"PM","RFC1123Pattern":"ddd, dd MMM yyyy HH\u0027:\u0027mm\u0027:\u0027ss \u0027GMT\u0027","ShortDatePattern":"M/d/yyyy","ShortTimePattern":"h:mm tt","SortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd\u0027T\u0027HH\u0027:\u0027mm\u0027:\u0027ss","TimeSeparator":":","UniversalSortableDateTimePattern":"yyyy\u0027-\u0027MM\u0027-\u0027dd HH\u0027:\u0027mm\u0027:\u0027ss\u0027Z\u0027","YearMonthPattern":"MMMM yyyy","AbbreviatedDayNames":["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],"ShortestDayNames":["Su","Mo","Tu","We","Th","Fr","Sa"],"DayNames":["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],"AbbreviatedMonthNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthNames":["January","February","March","April","May","June","July","August","September","October","November","December",""],"IsReadOnly":true,"NativeCalendarName":"Gregorian Calendar","AbbreviatedMonthGenitiveNames":["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec",""],"MonthGenitiveNames":["January","February","March","April","May","June","July","August","September","October","November","December",""]},"eras":[1,"A.D.",null,0]};//]]> </script> <script src="/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl10_TSM&compress=0&_TSM_CombinedScripts_=%3b%3bSystem.Web.Extensions%2c+Version%3d4.0.0.0%2c+Culture%3dneutral%2c+PublicKeyToken%3d31bf3856ad364e35%3aen%3a95047a2c-8908-49e3-b68e-d249be89f134%3aea597d4b%3ab25378d2" type="text/javascript"></script> <script src="/ScriptResource.axd?d=oBrf1f-DLFBYf_XnAiQIemFvTT5j0-6swwU1K_WqZPQUUjvsg0sAalWyRQSmaj4f66Qsp2wsHnYHZkMsTZVln1dr8SlhL1-THz6Yf9juJOLHlTiX8sEX2QRJESXHX2MNQrgUGjp22pa5N6BblxiPmlWRJqhJOLo88UHg09sWo8K08_GsDZZIlPrw-hetNnko0&t=ffffffffce9a2c45" type="text/javascript"></script> <script src="/Telerik.Web.UI.WebResource.axd?_TSM_HiddenField_=ctl10_TSM&compress=0&_TSM_CombinedScripts_=%3b%3bTelerik.Sitefinity.Resources%3aen%3a815e77d4-6502-4f71-95ce-2082a39605d4%3ab162b7a1%3acebd0c19%3ae31db516%3a96a5d23e%3acdc748f6%3a2a008f55" type="text/javascript"></script> <script src="Scripts/moment-with-locales-en-es.min.js" type="text/javascript"></script> <script src="Scripts/moment-timezone-with-data.min.js" type="text/javascript"></script> <script src="/Frontend-Assembly/Telerik.Sitefinity.Frontend.Search/Mvc/Scripts/SearchBox/Search-box.min.js?v=MTQuMi43OTI4LjA%3d" type="text/javascript"></script> <div class="aspNetHidden"> <input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value="11873571" /> </div><script type="text/javascript"> //<![CDATA[ Sys.WebForms.PageRequestManager._initialize('ctl00$ctl10', 'aspnetForm', [], [], [], 90, 'ctl00'); //]]> </script> <input type="hidden" name="ctl00$ctl10" id="ctl10" /> <script type="text/javascript"> //<![CDATA[ Sys.Application.setServerId("ctl10", "ctl00$ctl10"); Sys.Application._enableHistoryInScriptManager(); //]]> </script> <iframe id="__historyFrame" src="/ScriptResource.axd?d=PU6-LcU4B_-lRVNpfP06jrM6lYdSrtRW9wLlfdZYeYGNFmpYyhCAhI5Jciqefl4shFPMLXEzQ_mGoYmO9i0MEQ2" style="display:none;"> </iframe> <a accesskey="s" href="#cpw_main" id="sfSkip" class="sr-only"> Skip To The Main Content</a> <!-- ============================================================================== --> <div id="PublicWrapper" class="sfPublicWrapper container"> <!-- ============================================================================== --> <div id="NavBg"> <nav id="NavWrapper" role="region" class=""> <div class='sfContentBlock'><div class="brandHeader"><a href="/"><img src="https://cdn01.bcycle.com/libraries/docs/librariesprovider35/default-document-library/bcycle_boulder_dark.svg?sfvrsn=71e731c5_2" data-displaymode="Original" alt="boulder-bcycle" title="boulder-bcycle" style="max-width:170px"></a></div> </div><div class='sfContentBlock'><div class="socialIcons"><a href="/contact-2020" aria-label="contact"><em class="fa fa-envelope" style="color: #fff;"></em></a> </div> </div> <nav class="navbar navbar-default" role="navigation"> <div class="container-fluid"> <div class="navbar-header"> <button type="button" class="navbar-toggle btn-default" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> </div> <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> <ul id="cph_nav_T408A1B62004_ctl00_ctl00_navigationUl" class="nav navbar-nav"> <li><a href="/login" class="mobileOnly">Login</a></li> <li class='active dropdown'> <a href="SfCtrlPresentation/#" class="dropdown-toggle" data-toggle="dropdown">About<span class='caret'></span></a> <ul id="cph_nav_T408A1B62004_ctl00_ctl00_ctl00_ctl00_childNodesContainer" class="dropdown-menu" role="menu"> <li class='active '> <a href="/map-app" class="dropdown-toggle" data-toggle="">Map/App<span class=''></span></a> </li> <li class=''> <a href="/ebikes" class="dropdown-toggle" data-toggle="">Ebikes<span class=''></span></a> </li> </ul> </li> <li class=''> <a href="/nav/start-riding" class="dropdown-toggle" data-toggle="">Start Riding<span class=''></span></a> </li> <li class='dropdown'> <a href="SfCtrlPresentation/#" class="dropdown-toggle" data-toggle="dropdown">Community<span class='caret'></span></a> <ul id="cph_nav_T408A1B62004_ctl00_ctl00_ctl00_ctl02_childNodesContainer" class="dropdown-menu" role="menu"> <li class=''> <a href="/nav/community/cu" class="dropdown-toggle" data-toggle="">CU Boulder Discounts<span class=''></span></a> </li> <li class=''> <a href="/nav/community/start-riding-test" class="dropdown-toggle" data-toggle="">DEI PROGRAMS<span class=''></span></a> </li> </ul> </li> <li class=''> <a href="/nav/contact" class="dropdown-toggle" data-toggle="">Contact<span class=''></span></a> </li> </ul> </div> </div> </nav> <div id="LoginForm" class="city-signin noMobile"> <div class="row form-group"> <div class="loginLabel label sr-only">Email</div> <input name="loginUserName" type="text" id="loginUserName" class="text-box form-control" tabindex="0" placeholder="Email" /> <a id="ForgotPasswordLink" class="password-recovery-button pswdRecovery" href="https://www.bcycle.com/password-request?CurrentProgramId=54">Forgot Password?</a> </div> <div class="row form-group"> <div class="loginLabel label sr-only">Password</div> <input name="loginPassword" type="password" id="loginPassword" class="text-box form-control" tabindex="0" placeholder="Password" /> <input name="loginSubmit" type="button" id="loginSubmit" class="login-button btn btn-default" onclick="loginClicked();" tabindex="0" value="Login" /> </div> <div id="connectionError"></div> <div id="loginError"></div> <a id="JoinNowImageLink" class="login-image flt-left" href="nav/start-riding"></a> </div> <script> $(document).ready(function () { $('#loginPassword').keydown(function (args) { if (args.keyCode == 13) { $('#loginSubmit').trigger("click"); } }); $('#loginError').hide(); }); async function postData(url = '', data = {}) { const request = new Request(url, { method: 'POST', // *GET, POST, PUT, DELETE, etc. mode: 'same-origin', // no-cors, *cors, same-origin cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached credentials: 'include', // include, *same-origin, omit headers: { 'Content-Type': 'application/json' }, redirect: 'follow', // manual, *follow, error referrerPolicy: 'same-origin', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url body: JSON.stringify(data) // body data type must match "Content-Type" header }); // Default options are marked with * const response = await fetch(request); return response.status === 203 ? response.json() : { Message: null, SuccessRedirectUrl: response.url }; // parses JSON response into native JavaScript objects } function loginClicked() { $('#loginSubmit').prop('disabled', true); $('#loginError').hide(); postData("/api/Authenticate", { Language: navigator.language || navigator.browserLanguage, UserName: $('#loginUserName').val(), Password: $('#loginPassword').val() }) .then(data => { $('#loginSubmit').prop('disabled', false); if (data.Message != null) { $('#loginError').empty().append(data.Message).show(); } else { window.location.href = data.SuccessRedirectUrl; } console.log("Authenticate Result", data); }); return false; } </script> </nav> <div class="clearfix"></div> </div> <!-- ============================================================================== --> <div id="MainBg"> <section id="MainWrapper" role="region" class=""> </section> <div class="clearfix"></div> </div> <!-- ============================================================================== --> <div id="MainBg2"> <section id="MainWrapper2" role="region" class=""> <div class="sf_cols"> <div class="sf_colsOut sf_1col_1_100"> <div id="cph_main2_C018_Col00" class="sf_colsIn sf_1col_1in_100"><div class="sfimageWrp"> <img id="cph_main2_C020_ctl00_ctl00_imageItem" title="app graphic" src="https://cdn01.bcycle.com/libraries/images/librariesprovider35/default-album/app-graphic.jpg?sfvrsn=c8b930c5_0" alt="Introducing the new BCycle app—Checkout bikes, manage your account, or get directions" /> </div><div class="sf_cols"> <div class="sf_colsOut sf_2cols_1_67"> <div id="cph_main2_C027_Col00" class="sf_colsIn sf_2cols_1in_67"><div class="sf_cols"> <div class="sf_colsOut sf_2cols_1_50"> <div id="cph_main2_C029_Col00" class="sf_colsIn sf_2cols_1in_50"><div class='sfContentBlock'><center></center> <h3 style="text-align: center;"><strong><h>Get the app:</h><br> </strong></h3> </div> </div> </div> <div class="sf_colsOut sf_2cols_2_50"> <div id="cph_main2_C029_Col01" class="sf_colsIn sf_2cols_2in_50"><div class='sfContentBlock'><a href="https://itunes.apple.com/us/app/b-cycle/id371185597?mt=8" title="" class="" target=""><img title="app-store" style="width: 50%; float: left;" alt="app-store" src="https://cdn01.bcycle.com/libraries/images/librariesprovider35/default-album/app-store.jpg?sfvrsn=ff8e54c5_0" displaymode="Original"></a> <a href="https://play.google.com/store/apps/details?id=com.bcycle&hl=en" title="" class="" target=""><img title="google-play" style="width: 50%; float: left;" alt="google-play" src="https://cdn01.bcycle.com/libraries/images/librariesprovider35/default-album/google-play.jpg?sfvrsn=748154c5_0" displaymode="Original"></a> </div> </div> </div> </div> </div> </div> <div class="sf_colsOut sf_2cols_2_33"> <div id="cph_main2_C027_Col01" class="sf_colsIn sf_2cols_2in_33"> </div> </div> </div> </div> </div> </div><div class="sf_cols"> <div class="sf_colsOut sf_1col_1_100"> <div id="cph_main2_C001_Col00" class="sf_colsIn sf_1col_1in_100"><div class='sfContentBlock'><hr /> </div><link href="/CSS/KioskMapMVC.css" rel="stylesheet" type="text/css" /> <script type= "text/javascript" src = "https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyD-GOMKVGV2IoCQLtIAAmJ-AgoQZjKUE8I"></script> <script type="text/javascript"> $(function() { $('#infoIcon').on("click", function() { infoIconClicked(); }); const filterBikeRoutesCB = $('#filterShowBikeRoutesCheckBox'); if (filterBikeRoutesCB) { filterBikeRoutesCB.on("click", function() { if (filterBikeRoutesCB.is(':checked')) { bikeLayer.setMap(map); } else { bikeLayer.setMap(null); } }); } initialize(); }); let basepoint; const markers = new Array(); const kioskpoints = new Array(); let map; let geocoder; let bounds; let ib; let geofenceLayer; const bikeLayer = new google.maps.BicyclingLayer(); google.maps.LatLng.prototype.distanceFrom = function(newLatLng) { const R = 6371000; // meters const lat1 = this.lat(); const lon1 = this.lng(); const lat2 = newLatLng.lat(); const lon2 = newLatLng.lng(); const dLat = (lat2 - lat1) * Math.PI / 180; const dLon = (lon2 - lon1) * Math.PI / 180; const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) * Math.sin(dLon / 2) * Math.sin(dLon / 2); const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); const d = R * c; return d; }; // Call this function when the page has been loaded function initialize() { const myOptions = { zoom: 14, mapTypeId: google.maps.MapTypeId.ROADMAP, scaleControl: false, scrollwheel: true, mapTypeControl: false, navigationControl: true, navigationControlOptions: { style: google.maps.NavigationControlStyle.ZOOM_PAN } } map = new google.maps.Map($('#googlemap')[0], myOptions); ib = new google.maps.InfoWindow({ maxWidth: 500 }); const ne = new google.maps.LatLng(40.041007, -105.239291); const sw = new google.maps.LatLng(39.994699, 0.0); bounds = new google.maps.LatLngBounds(sw, ne); geofenceLayer = new google.maps.Data({ map: map }); geofenceLayer.setStyle({ clickable: false, fillColor: 'purple', fillOpacity: 0.1, strokeColor: 'purple', strokeOpacity: 0.4, strokeWeight: 1 }); const center = new google.maps.LatLng(40.019220, -105.268195); map.setCenter(center); LoadKiosks(map, "Classic", true, true, false); } function findKiosk(lat, lon) { basepoint = new google.maps.LatLng(lat, lon); markers.sort(compareDistance); map.setCenter(markers[0].getPosition()); map.setZoom(15); google.maps.event.trigger(markers [0], "mouseover"); } function searchmapnew(address) { geocoder = new google.maps.Geocoder(); if (geocoder) { geocoder.geocode( { 'address': address,'bounds': bounds }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { var point = results[0].geometry.location; basepoint = point; markers.sort(compareDistance); map.setCenter(markers[0].getPosition()); map.setZoom(15); google.maps.event.trigger(markers [0], "mouseover"); } else { alert('We were unable to find that location'); } }); } } function compareDistance(LatLonA, LatLonB) { return basepoint.distanceFrom(LatLonA.getPosition()) - basepoint.distanceFrom(LatLonB.getPosition()); } function createMarker(point, html, icon, back, hasTrikes, label) { const marker = new google.maps.Marker({ position: point, icon: icon, label: label }); const boxText = "<div class='markerContent " + back + "' style='overflow: hidden; white-space: nowrap'>" + html + "</div>"; // only open the info box when you click on the marker google.maps.event.addListener(marker, "click", function(e) { ib.setContent(boxText); ib.open(map,marker); map.panTo(marker.getPosition()); }); // Assign the category marker.HasTrikes = hasTrikes; return marker; } function LoadFinished() { $("#loadingIcon").hide(); $("#loadingTitle").hide(); } function LoadFreeBikes(map) { $("#loadingIcon").attr("title", "Loading system bikes..."); $("#loadingTitle").text("Loading system bikes..."); privatePortalClient .getMapBikes(54) .then((bikeList) => { bikeList.forEach(b => { const markerHtml = `<div class='mvcMarkerTitle'><h3>${b.bikeVisibleId}</h3></div>`; const icon = CreateMarkerIcon(null, false); const back = 'markerAvailable'; const point = new google.maps.LatLng(b.latitude, b.longitude); const marker = new createMarker(point, markerHtml, icon, back, false, null); markers.push(marker); marker.setMap(map); }); LoadFinished(); }); } function LoadKiosks(map, systemType, hasEbikes, showGeofences, needsFreeBikes) { $("#loadingIcon").attr("title", "Loading system kiosks..."); $("#loadingTitle").text("Loading system kiosks..."); privatePortalClient .getMapKiosks(54) .then((kioskList) => { kioskList.forEach(k => { const isAvailable = k.kioskStatusId !== 'Unavailable'; const kioskStatus = isAvailable ? k.kioskStatusId.enumToString() : `<div class=closed>${k.kioskStatusId}</div>`; const eventText = k.isEventBased && k.eventStart ? `<div class='mvcMarkerEvent'>Event Here ${moment.tz(k.eventStart, 'UTC').tz(k.ianaTimeZone).format("L")} - ${moment.tz(k.eventEnd, 'UTC').tz(k.ianaTimeZone).format("L")}</div>` : ""; const electricBlock = hasEbikes ? `<div><img src='/Graphics/KioskMapMVC/electric-bike-row.png'><div class='numberOfBikesAvail'>${k.electricBikesAvailable}</div></div>` : ""; let kioskSummary = ""; if (k.kioskTypeId !== 5) { switch (systemType) { case "Classic": kioskSummary = `<div class='imageContainer'>` + `<div><img src='/Graphics/KioskMapMVC/classic-bike-row.png'><div class='numberOfBikesAvail'>${k.classicBikesAvailable}</div></div>` + electricBlock + `</div>` + `<div class='mvcMarkerAddress'><bold>${k.docksAvailable}</bold> Docks open for parking</div>`; break; case "Dash": kioskSummary = `<div class='imageContainer'>` + `<div><img src='/Graphics/KioskMapMVC/dash-bike-row.png'><div class='numberOfBikesAvail'>${k.smartBikesAvailable}</div></div>` + `</div>`; break; default: kioskSummary = `<div class='imageContainer'>` + `<div><img src='/Graphics/KioskMapMVC/classic-bike-row.png'><div class='numberOfBikesAvail'>${k.classicBikesAvailable}</div></div>` + `<div><img src='/Graphics/KioskMapMVC/dash-bike-row.png'><div class='numberOfBikesAvail'>${k.smartBikesAvailable}</div></div>` + electricBlock + `</div>` + `<div class='mvcMarkerAddress'><bold>${k.docksAvailable}</bold> Docks open for parking</div>`; break; } } const rfidTagline = [5, 6].find(t => t === k.kioskTypeId) ? "<div class='mvcMarkerAddress' style='padding-top:8px;'>Purchase a membership here with a swipe of your credit card!</div>" : ""; const markerHtml = `<div class='mvcMarkerTitle'><h3>${k.name}</h3></div>` + `<div class='mvcMarkerAddress'>${k.addressStreet}</div>` + `<div class='mvcMarkerStatus'><h5>${kioskStatus}</h5><div class='mvcMarkerPublicText'>${k.publicText}</div>${eventText}</div>` + kioskSummary + rfidTagline; let icon = CreateMarkerIcon(k.bikesAvailable, true, k.kioskTypeId, k.electricBikesAvailable > 0); let label = CreateMarkerLabel(k.bikesAvailable); let back = 'markerAvailable'; const connectionStatus = k.kioskConnectionStatusId.toLowerCase(); if (k.kioskTypeId !== 7 && ["disconnected", "unresponsive"].find((v) => v === connectionStatus)) { icon = CreateMarkerIcon(null, true, k.kioskTypeId); label = CreateMarkerLabel(null); back = 'markerUnavail'; } else if (!isAvailable) { icon = CreateMarkerIcon(null, true, k.kioskTypeId); back = 'markerUnavail'; } const point = new google.maps.LatLng(k.latitude, k.longitude); kioskpoints.push(point); const marker = new createMarker(point, markerHtml, icon, back, false, label); markers.push(marker); marker.setMap(map); if (showGeofences && k.kioskGeofence) { geofenceLayer.addGeoJson({ type: "Feature", geometry: JSON.parse(k.kioskGeofence) }); } }); if (needsFreeBikes) { LoadFreeBikes(map); } else { LoadFinished(); } }); } function SetServiceArea(map) { map.data.addGeoJson({ "type": "Feature", "geometry": null }); map.data.setStyle({ clickable: false, fillColor: 'transparent', strokeColor: 'purple', strokeOpacity: 0.4 }); } function CreateMarkerLabel(bikeCount) { let label = {}; if (bikeCount !== null) { label = { text: bikeCount.toString(), color: "white", fontSize: "11px", fontFamily: "Droid Sans, sans-serif" }; } else { label = { text: "X", color: "white", fontSize: "11px", fontFamily: "Droid Sans, sans-serif" }; } return label; } function CreateMarkerIcon(bikeCount, isKiosk, kioskTypeId, hasElectricBikes) { let markerIconType, labelLocation; if(isKiosk) { if (kioskTypeId === 3 || kioskTypeId === 4 || kioskTypeId === 7) { labelLocation = new google.maps.Point(14,14); markerIconType = hasElectricBikes ? '/Graphics/KioskMapMVC/electric-pin.png' : '/Graphics/KioskMapMVC/bluePin.png'; } else if (kioskTypeId === 5){ markerIconType = '/Graphics/KioskMapMVC/kiosk_icon.png'; } else if (kioskTypeId === 6){ markerIconType = hasElectricBikes ? '/Graphics/KioskMapMVC/electric-pin-station.png' : '/Graphics/KioskMapMVC/geofence_and_kiosk.png'; labelLocation = new google.maps.Point(15,15); } else { labelLocation = new google.maps.Point(14,14); markerIconType = hasElectricBikes ? '/Graphics/KioskMapMVC/electric-pin.png' : '/Graphics/KioskMapMVC/bluePin.png'; if (bikeCount === 0 || bikeCount === null) { markerIconType = '/Graphics/KioskMapMVC/greyPin.png'; } } } else { markerIconType = '/Graphics/KioskMapMVC/bikePin.png'; } const icon = { url: markerIconType, labelOrigin: labelLocation }; return icon; } function isHighDensity(){ return ((window.matchMedia && (window.matchMedia('only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)').matches || window.matchMedia('only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)').matches)) || (window.devicePixelRatio && window.devicePixelRatio > 1.3)); } function infoIconClicked() { let mapKey; const hasType5Kiosks = false; const hasType6Kiosks = false; const hasType7Kiosks = false; const hasElectricBikes = true; const hasFreeBikes = false; const hasDashKiosksOrFreeBikes = hasType5Kiosks || hasType6Kiosks || hasType7Kiosks || hasFreeBikes; const whichIconsToShow = { showFreeBikeIcons : hasFreeBikes, showType5KioskIcon : hasType5Kiosks, showType6KioskIcon : hasType6Kiosks, showType7Kioskicon : hasType7Kiosks, showElectricBikesIcon : hasElectricBikes }; if (hasDashKiosksOrFreeBikes) { mapKey = mapKeyValues(whichIconsToShow); } else { mapKey = classicSystemMapKeyValues(whichIconsToShow); } displayMapKeyModal(mapKey); } function mapKeyValues(whichIconsToShow) { //always show these icons const retVal = { Title: 'Map Key', Items: [ { icon: '/Graphics/KioskMapMVC/bluePin-key.png', text: 'Station with available bikes' }, { icon: '/Graphics/KioskMapMVC/greyPin-key.png', text: 'Station with no bikes' } ] }; //show this icon after the classic kiosk icons if (whichIconsToShow.showElectricBikesIcon) { retVal.Items.push({ icon: '/Graphics/KioskMapMVC/electric-pin-key.png', text: 'Station with available electric bikes' }); } //show this icon after kiosk icons and after electric bike icon if (whichIconsToShow.showType5KioskIcon || whichIconsToShow.showType6KioskIcon) { retVal.Items.push({ icon: '/Graphics/KioskMapMVC/kiosk-key.png', text: 'Kiosk where you can purchase a membership with a swipe of your credit card' }); } //show this icon after the previous icons if (whichIconsToShow.showType6KioskIcon || whichIconsToShow.showType7Kioskicon) { retVal.Items.push({ icon: '/Graphics/KioskMapMVC/geofence-key.png', text: 'Checkout & lock bikes within this designated area' }); } //show free bikes icons in first and last place if(whichIconsToShow.showFreeBikeIcons){ retVal.Items.splice(0, 0, { icon: '/Graphics/KioskMapMVC/bikePin-key.png', text: 'Single bike that can be locked up anywhere' }); retVal.Items.push({ icon: '/Graphics/KioskMapMVC/boundary-key.png', text: 'Ride anywhere within this area. If you lock a bike outside the service area, you will be charged a fee' }); } return retVal; } function classicSystemMapKeyValues(whichIconsToShow) { const retVal = { Title: 'Map Key', Items: [ { icon: '/Graphics/KioskMapMVC/bluePin-key.png', text: 'Station with bikes & docks. Purchase a membership here with a swipe of your credit card' }, { icon: '/Graphics/KioskMapMVC/greyPin-key.png', text: 'Station with no bikes' }] }; if (whichIconsToShow.showElectricBikesIcon) { retVal.Items.splice(1, 0, { icon: '/Graphics/KioskMapMVC/electric-pin-key.png', text: 'Station with available electric bikes' }); } return retVal; } function displayMapKeyModal(values) { if (values.IsHidden) { return; } $('#legendModal .title span').html(values.Title); $('#legendModal .description span').html(values.Description); const $modalItems = $('#modalItems'); $modalItems.html(''); $.each(values.Items, function(ind, item) { $modalItems.append('<li class=".title modal-item"><img class="modal-icon" src="' + item.icon + '" /><span>' + item.text + '</span></li>'); }); var offset = $('#home_gmap').offset().top + 70; $(".modal-dialog").removeAttr('style').css("margin", offset.toString() + "px auto"); $('#legendModal').modal('show'); } </script> <div id="home_gmap"> <div id="map-wrapper"> <div id="googlemap"> <div class="loader"> Loading map... </div> </div> <img id="infoIcon" class="onmap-button info-btn" src="/Graphics/KioskMapMVC/info.png" alt="Map information icon" /> <img id="loadingIcon" alt="Loading animation" class="onmap-button loading-icon" src="/Graphics/loading.gif" title="Loading map..." /> <span id="loadingTitle" class="onmap-button loading-title">Loading map...</span> <div class="map-search"> </div> </div> <div class="modal fade" id="legendModal" tabindex="-1" role="dialog" aria-labelledby="legendModalLabel"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button> <div style="text-align: center;"> <h4 style="color: #780000; display: inline; font-size: 20px;" class="title"><span></span></h4> </div> </div> <div class="modal-body"> <div class="description"> <span></span> </div> <br /> <ol id="modalItems"></ol> </div> <div class="modal-footer"></div> </div> </div> </div> </div> </div> </div> </div> </section> <div class="clearfix"></div> </div> <!-- ============================================================================== --> <div id="FooterBg"> <footer id="FooterWrapper" role="region" class=""> <div class="sf_cols"> <div class="sf_colsOut sf_3cols_1_33" style="width: 25%;"> <div id="cph_footer_TEA231B18021_Col00" class="sf_colsIn sf_3cols_1in_33"><div class='sfContentBlock'><ul> <li><a href="https://boulder.bcycle.com/contact-2020" title="" class="" target="">Contact Us</a></li> <li><a href="/docs/librariesprovider19/default-document-library/terms-conditions.pdf?sfvrsn=8">Terms & Conditions and Privacy Policy</a></li> </ul> </div> </div> </div> <div class="sf_colsOut sf_3cols_2_34" style="width: 25%;"> <div id="cph_footer_TEA231B18021_Col01" class="sf_colsIn sf_3cols_2in_34"><div class='sfContentBlock'><p> <a href="/other-cities">See all <strong>BCycle Cities</strong></a> </p> </div> </div> </div> <div class="sf_colsOut sf_3cols_3_33" style="width: 50%;"> <div id="cph_footer_TEA231B18021_Col02" class="sf_colsIn sf_3cols_3in_33"> <link href="/Frontend-Assembly/Telerik.Sitefinity.Frontend.Search/assets/dist/css/sf-search-box.min.css" rel="stylesheet" type="text/css" /> <div> <input type="text" title="Search input" placeholder="Search" id="786376a4-658e-44ce-87ac-3aa7a4a0babf" value="" /> <button type="button" id="295b63e2-fbbc-4bce-890a-2cd56e722ee6" >Search</button> <input type="hidden" data-sf-role="resultsUrl" value="/search-results" /> <input type="hidden" data-sf-role="indexCatalogue" value="general" /> <input type="hidden" data-sf-role="disableSuggestions" value='false' /> <input type="hidden" data-sf-role="minSuggestionLength" value="3" /> <input type="hidden" data-sf-role="suggestionFields" value="Title,Content" /> <input type="hidden" data-sf-role="language" value="en" /> <input type="hidden" data-sf-role="siteId" value="4ce43699-c929-6398-bf9b-ff0100d70bc4" /> <input type="hidden" data-sf-role="suggestionsRoute" value="/restapi/search/suggestions" /> <input type="hidden" data-sf-role="searchTextBoxId" value='#786376a4-658e-44ce-87ac-3aa7a4a0babf' /> <input type="hidden" data-sf-role="searchButtonId" value='#295b63e2-fbbc-4bce-890a-2cd56e722ee6' /> <input type="hidden" data-sf-role="scoringSettings" value='' /> </div> <div class='sfContentBlock'><!-- Begin Constant Contact Active Forms --> <script> var _ctct_m = "322a9ab18ab9b141ee963f025c23b505"; </script> <script id="signupScript" src="//static.ctctcdn.com/js/signup-form-widget/current/signup-form-widget.min.js" async="" defer=""></script> <!-- End Constant Contact Active Forms --> </div> </div> </div> </div> </footer> <div class="clearfix"></div> </div> <!-- ============================================================================== --> <div id="FooterBg2"> <footer id="FooterWrapper2" role="region" class=""> <div class='sfContentBlock'><div class="subMessage">©BCycle, LLC. All rights reserved. BCycle and the BCycle logo are trademarks of BCycle, LLC.</div> </div><div class="sf_cols"> <div class="sf_colsOut sf_2cols_1_67"> <div id="cph_footer2_T408A1B62010_Col00" class="sf_colsIn sf_2cols_1in_67"> </div> </div> <div class="sf_colsOut sf_2cols_2_33"> <div id="cph_footer2_T408A1B62010_Col01" class="sf_colsIn sf_2cols_2in_33"> </div> </div> </div> </footer> <div class="clearfix"></div> </div> </div> <!-- ============================================================================== --> <!-- no content below - scriptwrapper is purely for js or css widgets in sitefinity --> <!-- ============================================================================== --> <div id="ScriptWrapper" title="Only place scripts and styles in this region"> <script type="text/javascript" src="Scripts/script.bottom.min.js" defer="defer" async="async"></script> <span>More than one Google Analytics scripts are registered. Please verify your pages and templates.</span> <script src="/Scripts/BCycle.Portal.SFClient.js"></script> <script src="/Scripts/BCycle.Portal.SFClient.Private.js"></script> <script src="/Scripts/Global.js"></script> <script> $(document).ready(function () { // bootstrap.min.js must be loaded AFTER jquery $.getScript("/Scripts/bootstrap.min.js", function (data, textStatus, jqxhr) {}); }); </script> <!-- ========================================================================== --> </div> <script type="text/javascript"> //<![CDATA[ window.__TsmHiddenField = $get('ctl10_TSM');//]]> </script> <script> (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-40439288-1', 'auto'); ga('send', 'pageview'); </script> <script type="text/javascript"> //<![CDATA[ ;(function() { function loadHandler() { var hf = $get('ctl11_TSSM'); if (!hf._RSSM_init) { hf._RSSM_init = true; hf.value = ''; } hf.value += ';Telerik.Sitefinity.Resources, Version=14.2.7928.0, Culture=neutral, PublicKeyToken=b28c218413bdf563:en:815e77d4-6502-4f71-95ce-2082a39605d4:7a90d6a'; Sys.Application.remove_load(loadHandler); }; Sys.Application.add_load(loadHandler); })();//]]> </script> </form> </body> </html>