function removeAfter(string, pattern) { var n = string.indexOf(pattern); return string.substring(0, n != -1 ? n : string.length); } function pageName(href) { if (href.indexOf(window.location.host) >= 0) { href = removeAfter(removeAfter(href, '?'), '#') hrefE = href.split('/') return hrefE[hrefE.length - 1] } return false } function updateScrollData() { history.state.scrollTop = $(document.body).scrollTop() history.replaceState(history.state) } function pageSpecific(location) { if (pageName(location) == 'contact') { initializeMap() } $(document).scroll(updateScrollData) } function actLink(ev) { var location = ev.currentTarget.href var page = pageName(location) if (page && page != pageName(window.location.href)) { loadDoc(location, function () { history.pushState({ loc: location }, document.title, location) }) return false } } function dynamiseLinks(el) { $("a", el).click(actLink) } function loadDoc(location, callback) { if (!callback) { callback = function () { return undefined } } var eventsLeft = 2 var html = '' var mainContainer = $("#mainContainer") var oldHeight = mainContainer.height() function events() { eventsLeft += -1 if (eventsLeft <= 0) { // In // Calculations mainContainer.html(html) mainContainer.height('auto') newHeight = mainContainer.height() mainContainer.height(oldHeight) // Transition mainContainer.animate({ height: newHeight, opacity: 1, }, 'fast', function () { mainContainer.height('auto') dynamiseLinks(mainContainer) pageSpecific(location) callback() }) } } // Out $(document).off('scroll', updateScrollData) $(document.body).animate({ scrollTop: $('.navbar-lower').height() }, 'fast') $.get(location + '?c', function (data) { html = data events() }) mainContainer.height(oldHeight) mainContainer.animate({ opacity: 0 }, 'fast', events) } function historyChange(ev) { loadDoc(ev.state.loc, function () { if (ev.state.scrollTop > $('.navbar-lower').height()) { $(document.body).animate({ scrollTop: ev.state.scrollTop }, 'fast') } }) } $(document).ready(function () { dynamiseLinks(document.body) var current = window.location.href pageSpecific(current) history.replaceState({ loc: current }, document.title, current) window.onpopstate = historyChange $('.navbar-fixed-top .navbar-toggle').click(function () { $(document.body).animate({ scrollTop: 0 }) }) }) function initializeMap() { var mapCanvas = document.getElementById('map-canvas'); mapCanvas.innerHTML = '' var polytechPos = new google.maps.LatLng(50.6074998, 3.1373338); var mapOptions = { center: polytechPos, zoom: 16, mapTypeId: google.maps.MapTypeId.ROADMAP } var map = new google.maps.Map(mapCanvas, mapOptions) var marker = new google.maps.Marker({ place: { location: polytechPos, query: "Polytech Lille" }, attribution: { source: "Coupe de Robotique des Écoles Primaires", webUrl: window.location.host }, map: map, title: "Polytech Lille" }) var infowindow = new google.maps.InfoWindow({ content: "Polytech Lille
Lieux des évènements de la Coupe de Robotique des Écoles Primaires" }) marker.addListener('click', function () { infowindow.open(map, this) }) }