From 4962678776ade2c9620a4048687f3d6f9d07e79f Mon Sep 17 00:00:00 2001 From: Pascal Neis Date: Sun, 15 May 2011 19:54:12 +0000 Subject: [PATCH] JS for the Index.html WebFrontend --- Docs/WebFrontend/Slides.js | 114 +++++++++++++++++++++++++++++++++++++ 1 file changed, 114 insertions(+) create mode 100644 Docs/WebFrontend/Slides.js diff --git a/Docs/WebFrontend/Slides.js b/Docs/WebFrontend/Slides.js new file mode 100644 index 000000000..eb7515646 --- /dev/null +++ b/Docs/WebFrontend/Slides.js @@ -0,0 +1,114 @@ +/* + * Open Source Routing Machine (OSRM) - Web (GUI) Interface + * Copyright (C) Pascal Neis, 2011 + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU AFFERO General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * or see http://www.gnu.org/licenses/agpl.txt. + */ + +/** + * Title: Slide.js + * Description: Fixme + * + * @author Pascal Neis, pascal@neis-one.org + * @version 0.1 2011-05-15 + */ + +var timerlen = 5; +var slideAniLen = 250; + +var timerID = new Array(); +var startTime = new Array(); +var obj = new Array(); +var endWidth = new Array(); +var moving = new Array(); +var dir = new Array(); + +function toggleSlide(objname){ + document.getElementById('panzoombar').style.top="25px"; + document.getElementById('panzoombar').style.display = "none"; + document.getElementById('slide').style.display = "none"; + if(document.getElementById(objname).style.display == "none"){ + // div is hidden, so let's slide right + slide_right(objname); + }else{ + // div is not hidden, so slide left + slide_left(objname); + } +} + +function slide_right(objname){ + if(moving[objname]){ return; } + if(document.getElementById(objname).style.display != "none"){ + return; // cannot slide right something that is already visible + } + moving[objname] = true; dir[objname] = "right"; startslide(objname); +} + +function slide_left(objname){ + if(moving[objname]){ return; } + if(document.getElementById(objname).style.display == "none"){ + return; // cannot slide left something that is already hidden + } + moving[objname] = true; dir[objname] = "left"; startslide(objname); +} + +function startslide(objname){ + obj[objname] = document.getElementById(objname); + endWidth[objname] = parseInt(obj[objname].style.width); + startTime[objname] = (new Date()).getTime(); + if(dir[objname] == "right"){ obj[objname].style.width = "1px"; } + obj[objname].style.display = "block"; + timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen); +} + +function slidetick(objname){ + var elapsed = (new Date()).getTime() - startTime[objname]; + if (elapsed > slideAniLen){ endSlide(objname); } + else { + var d = Math.round(elapsed / slideAniLen * endWidth[objname]); + if(dir[objname] == "left"){ d = endWidth[objname] - d; } + obj[objname].style.width = d + "px"; + } + return; +} + +function endSlide(objname){ + clearInterval(timerID[objname]); + + if(dir[objname] == "left"){ + obj[objname].style.display = "none"; + document.getElementById('panzoombar').style.left="25px"; + document.getElementById('panzoombar').style.display = ""; + document.getElementById('slide').style.left="5px"; + document.getElementById('slide').innerHTML = ">>"; + document.getElementById('slide').style.display = ""; + } + else{ + document.getElementById('panzoombar').style.left="400px"; + document.getElementById('panzoombar').style.display = "";document.getElementById('slide').style.left="365px"; + document.getElementById('slide').innerHTML = "<<"; + document.getElementById('slide').style.display = ""; + } + obj[objname].style.width = endWidth[objname] + "px"; + + delete(moving[objname]); + delete(timerID[objname]); + delete(startTime[objname]); + delete(endWidth[objname]); + delete(obj[objname]); + delete(dir[objname]); + return; +} \ No newline at end of file