├── functions ├── .gitignore ├── settings.php ├── signals │ ├── main.php │ ├── main_sign.php │ ├── distant_sign.php │ ├── main_semaphore.php │ ├── distant_semaphore.php │ ├── speedlimit_zs3_sign.php │ ├── speedlimit_zs3v_sign.php │ ├── main_light.php │ ├── speedlimit_zs3_light.php │ ├── signal_light.php │ ├── speedlimit_zs3v_light.php │ ├── combined_light.php │ ├── ne1.php │ ├── ne2.php │ ├── speedlimit_zs3.php │ ├── speedlimit_zs3v.php │ ├── ETCS_markerboard.php │ ├── distant_light.php │ ├── BOStrabH_main.php │ ├── BOStrabH_distant.php │ ├── hl_distant.php │ ├── blockkennzeichen.php │ ├── speed_distant.php │ ├── speed.php │ └── hv_main_semaphore.php ├── lang.php └── overpass.php ├── .htaccess ├── po_parser ├── .gitignore ├── build │ └── .gitignore ├── tests │ └── pofiles │ │ ├── noblankline.po │ │ ├── previous_unstranslated.po │ │ ├── healthy.po │ │ ├── noheader.po │ │ ├── context.po │ │ └── multilines.po ├── phpunit.xml ├── .travis.yml ├── .scrutinizer.yml ├── composer.json └── license.txt ├── lang ├── de.mo └── en.mo ├── img ├── trains │ ├── Dosto.png │ ├── ICE1.png │ ├── ICE2.png │ ├── ICE3.png │ ├── ICET.png │ ├── BR101IC.png │ ├── ET2010.png │ ├── Eurostar.png │ ├── NET2012.png │ ├── GT8-100C2S.png │ ├── ICE3Velaro.png │ ├── GT8-100D2SM.png │ └── nWagenBR111.png ├── signals │ └── colors.php ├── arrow_asc.svg ├── arrow_desc.svg ├── ferry_map.svg ├── station_map.svg ├── station_last.svg ├── station.svg ├── station_first.svg ├── ferry_station_end.svg └── ferry_station_start.svg ├── flot ├── examples │ ├── .DS_Store │ ├── background.png │ ├── ajax │ │ ├── data-eu-gdp-growth-1.json │ │ ├── data-eu-gdp-growth-2.json │ │ ├── data-eu-gdp-growth-3.json │ │ ├── data-eu-gdp-growth-4.json │ │ ├── data-usa-gdp-growth.json │ │ ├── data-japan-gdp-growth.json │ │ ├── data-eu-gdp-growth-5.json │ │ └── data-eu-gdp-growth.json │ ├── navigate │ │ ├── arrow-up.gif │ │ ├── arrow-down.gif │ │ ├── arrow-left.gif │ │ └── arrow-right.gif │ ├── axes-time-zones │ │ ├── tz │ │ │ ├── southamerica │ │ │ ├── factory │ │ │ ├── yearistype.sh │ │ │ ├── pacificnew │ │ │ ├── systemv │ │ │ ├── etcetera │ │ │ └── leapseconds │ │ └── index.html │ ├── image │ │ ├── hs-2004-27-a-large-web.jpg │ │ └── index.html │ ├── shared │ │ └── jquery-ui │ │ │ └── jquery-ui.min.css │ ├── categories │ │ └── index.html │ ├── basic-usage │ │ └── index.html │ ├── examples.css │ ├── threshold │ │ └── index.html │ ├── symbols │ │ └── index.html │ ├── series-types │ │ └── index.html │ ├── basic-options │ │ └── index.html │ ├── resize │ │ └── index.html │ ├── annotating │ │ └── index.html │ ├── stacking │ │ └── index.html │ ├── axes-interacting │ │ └── index.html │ ├── realtime │ │ └── index.html │ ├── interacting │ │ └── index.html │ ├── index.html │ ├── tracking │ │ └── index.html │ └── zooming │ │ └── index.html ├── Makefile ├── LICENSE.txt ├── jquery.flot.symbol.min.js ├── jquery.flot.threshold.min.js ├── jquery.flot.crosshair.min.js ├── jquery.flot.fillbetween.min.js ├── jquery.flot.resize.min.js ├── jquery.flot.stack.min.js ├── jquery.flot.categories.min.js ├── jquery.flot.image.min.js ├── jquery.flot.symbol.js ├── jquery.colorhelpers.min.js ├── FAQ.md ├── jquery.flot.resize.js ├── CONTRIBUTING.md └── jquery.flot.canvas.min.js ├── leaflet └── images │ ├── layers.png │ ├── layers-2x.png │ ├── marker-icon.png │ ├── marker-icon-2x.png │ ├── marker-shadow.png │ └── railway_station.png ├── CHANGELOG.md ├── changelog.php ├── README.md ├── CONTRIBUTING.md ├── ajax ├── defaultTrain.php └── search.php └── index.php /functions/.gitignore: -------------------------------------------------------------------------------- 1 | /settings.php 2 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | AddType image/svg+xml svg svgz 2 | -------------------------------------------------------------------------------- /po_parser/.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | composer.phar 3 | composer.lock -------------------------------------------------------------------------------- /lang/de.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/lang/de.mo -------------------------------------------------------------------------------- /lang/en.mo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/lang/en.mo -------------------------------------------------------------------------------- /po_parser/build/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !logs 3 | !.gitignore 4 | !coverage-checker.php -------------------------------------------------------------------------------- /img/trains/Dosto.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/Dosto.png -------------------------------------------------------------------------------- /img/trains/ICE1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ICE1.png -------------------------------------------------------------------------------- /img/trains/ICE2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ICE2.png -------------------------------------------------------------------------------- /img/trains/ICE3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ICE3.png -------------------------------------------------------------------------------- /img/trains/ICET.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ICET.png -------------------------------------------------------------------------------- /po_parser/tests/pofiles/noblankline.po: -------------------------------------------------------------------------------- 1 | msgid "one" 2 | msgstr "uno" 3 | msgid "two" 4 | msgstr "dos" -------------------------------------------------------------------------------- /flot/examples/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/.DS_Store -------------------------------------------------------------------------------- /img/trains/BR101IC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/BR101IC.png -------------------------------------------------------------------------------- /img/trains/ET2010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ET2010.png -------------------------------------------------------------------------------- /img/trains/Eurostar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/Eurostar.png -------------------------------------------------------------------------------- /img/trains/NET2012.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/NET2012.png -------------------------------------------------------------------------------- /img/trains/GT8-100C2S.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/GT8-100C2S.png -------------------------------------------------------------------------------- /img/trains/ICE3Velaro.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/ICE3Velaro.png -------------------------------------------------------------------------------- /leaflet/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/layers.png -------------------------------------------------------------------------------- /flot/examples/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/background.png -------------------------------------------------------------------------------- /img/trains/GT8-100D2SM.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/GT8-100D2SM.png -------------------------------------------------------------------------------- /img/trains/nWagenBR111.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/img/trains/nWagenBR111.png -------------------------------------------------------------------------------- /leaflet/images/layers-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/layers-2x.png -------------------------------------------------------------------------------- /leaflet/images/marker-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/marker-icon.png -------------------------------------------------------------------------------- /leaflet/images/marker-icon-2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/marker-icon-2x.png -------------------------------------------------------------------------------- /leaflet/images/marker-shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/marker-shadow.png -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-1.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/navigate/arrow-up.gif -------------------------------------------------------------------------------- /leaflet/images/railway_station.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/leaflet/images/railway_station.png -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-down.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/navigate/arrow-down.gif -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-left.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/navigate/arrow-left.gif -------------------------------------------------------------------------------- /flot/examples/navigate/arrow-right.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/navigate/arrow-right.gif -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/southamerica: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/axes-time-zones/tz/southamerica -------------------------------------------------------------------------------- /flot/examples/image/hs-2004-27-a-large-web.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/sb12/OSMTrainRouteAnalysis/HEAD/flot/examples/image/hs-2004-27-a-large-web.jpg -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-2.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-3.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-4.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-usa-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "USA", 3 | "data": [[1999, 4.4], [2000, 3.7], [2001, 0.8], [2002, 1.6], [2003, 2.5], [2004, 3.6], [2005, 2.9], [2006, 2.8], [2007, 2.0], [2008, 1.1]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-japan-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Japan", 3 | "data": [[1999, -0.1], [2000, 2.9], [2001, 0.2], [2002, 0.3], [2003, 1.4], [2004, 2.7], [2005, 1.9], [2006, 2.0], [2007, 2.3], [2008, -0.7]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth-5.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] 4 | } 5 | -------------------------------------------------------------------------------- /flot/examples/ajax/data-eu-gdp-growth.json: -------------------------------------------------------------------------------- 1 | { 2 | "label": "Europe (EU27)", 3 | "data": [[1999, 3.0], [2000, 3.9], [2001, 2.0], [2002, 1.2], [2003, 1.3], [2004, 2.5], [2005, 2.0], [2006, 3.1], [2007, 2.9], [2008, 0.9]] 4 | } 5 | -------------------------------------------------------------------------------- /po_parser/phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ./tests 6 | 7 | 8 | -------------------------------------------------------------------------------- /po_parser/.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 5.3.3 5 | - 5.3 6 | - 5.4 7 | - 5.5 8 | 9 | before_script: 10 | - composer self-update 11 | - composer update --prefer-source; composer install --dev --prefer-source; 12 | 13 | script: 14 | - ./vendor/bin/phpunit --coverage-clover ./build/logs/clover.xml -------------------------------------------------------------------------------- /flot/Makefile: -------------------------------------------------------------------------------- 1 | # Makefile for generating minified files 2 | 3 | .PHONY: all 4 | 5 | # we cheat and process all .js files instead of an exhaustive list 6 | all: $(patsubst %.js,%.min.js,$(filter-out %.min.js,$(wildcard *.js))) 7 | 8 | %.min.js: %.js 9 | yui-compressor $< -o $@ 10 | 11 | test: 12 | ./node_modules/.bin/jshint *jquery.flot.js 13 | -------------------------------------------------------------------------------- /img/signals/colors.php: -------------------------------------------------------------------------------- 1 | 12 | -------------------------------------------------------------------------------- /img/arrow_asc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /img/arrow_desc.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 7 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/factory: -------------------------------------------------------------------------------- 1 | #
 2 | # This file is in the public domain, so clarified as of
 3 | # 2009-05-17 by Arthur David Olson.
 4 | 
 5 | # For companies who don't want to put time zone specification in
 6 | # their installation procedures.  When users run date, they'll get the message.
 7 | # Also useful for the "comp.sources" version.
 8 | 
 9 | # Zone	NAME	GMTOFF	RULES	FORMAT
10 | Zone	Factory	0	- "Local time zone must be set--see zic manual page"
11 | 


--------------------------------------------------------------------------------
/img/ferry_map.svg:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |  
4 | 	
5 | 	
6 |  
7 | 
8 | 


--------------------------------------------------------------------------------
/img/station_map.svg:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |  
4 | 	
5 | 	
6 |  
7 | 
8 | 


--------------------------------------------------------------------------------
/img/station_last.svg:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |  
4 | 	
5 | 	
6 | 	
7 |  
8 | 
9 | 


--------------------------------------------------------------------------------
/img/station.svg:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |  
4 | 	
5 | 	
6 | 	
7 |  
8 | 
9 | 


--------------------------------------------------------------------------------
/img/station_first.svg:
--------------------------------------------------------------------------------
1 | 
2 | 
3 |  
4 | 	
5 | 	
6 | 	
7 |  
8 | 
9 | 


--------------------------------------------------------------------------------
/po_parser/tests/pofiles/previous_unstranslated.po:
--------------------------------------------------------------------------------
 1 | msgid ""
 2 | msgstr ""
 3 | "Project-Id-Version: volga-volga.local\n"
 4 | "Report-Msgid-Bugs-To: pm@101media.ru\n"
 5 | "POT-Creation-Date: 2014-07-08 07:51+0400\n"
 6 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 7 | "Last-Translator: FULL NAME \n"
 8 | "MIME-Version: 1.0\n"
 9 | "Content-Type: text/plain; charset=UTF-8\n"
10 | "Content-Transfer-Encoding: 8bit\n"
11 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
12 | 
13 | #| msgid "this is a previous string"
14 | #| msgstr "this is a previous translation string"
15 | msgid "this is a string"
16 | msgstr "this is a translation"
17 | 


--------------------------------------------------------------------------------
/po_parser/.scrutinizer.yml:
--------------------------------------------------------------------------------
 1 | before_commands:
 2 |     - "composer install --prefer-source"
 3 | 
 4 | tools:
 5 |     php_code_coverage:
 6 |         enabled: true
 7 |     php_code_sniffer:
 8 |         enabled: true
 9 |         config:
10 |             standard: PSR2
11 |         filter:
12 |             paths: ["src/*", "tests/*"]
13 |     php_cpd:
14 |         enabled: true
15 |         excluded_dirs: ["build/*", "tests", "vendor"]
16 |     php_analyzer:
17 |         enabled: true
18 |         filter:
19 |             paths: ["src/*", "tests/*"]
20 |     php_mess_detector:
21 |         enabled: true
22 |         filter:
23 |             paths: ["src/*"]
24 |     php_pdepend:
25 |         enabled: true
26 |         excluded_dirs: ["build", "tests", "vendor"]
27 | 


--------------------------------------------------------------------------------
/img/ferry_station_end.svg:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |  
 4 | 	
 5 | 	
 6 | 	
 7 | 	
 8 | 	
 9 | 	
10 |  
11 | 
12 | 


--------------------------------------------------------------------------------
/po_parser/composer.json:
--------------------------------------------------------------------------------
 1 | {
 2 | 	"name"        : "sepia/po-parser",
 3 | 	"description" : "PO file parser for PHP.",
 4 | 	"version"     : "3.1.1",
 5 | 	"type"        : "library",
 6 | 	"keywords"    : ["i18n","i10n","po","gettext"],
 7 | 	"homepage"    : "https://github.com/raulferras/PHP-po-parser",
 8 | 	"license"     : "MIT",
 9 | 	"authors"     : [
10 | 				{
11 | 					"name": "Raúl Ferràs",
12 | 					"email": "raul.ferras@gmail.com",
13 | 					"role" : "developer"
14 | 				}
15 | 				],
16 | 	"support" : {
17 | 		"issues" : "https://github.com/raulferras/PHP-po-parser/issues"
18 | 	},
19 | 	"require-dev" : {
20 | 		"phpunit/phpunit": "3.7.*",
21 |         "squizlabs/php_codesniffer": "1.5.*"
22 | 	},
23 | 	"autoload" : {
24 | 		"psr-0" : {
25 | 			"Sepia": "src/"
26 | 		}
27 | 	}
28 | }


--------------------------------------------------------------------------------
/img/ferry_station_start.svg:
--------------------------------------------------------------------------------
 1 | 
 2 | 
 3 |  
 4 | 	
 5 | 	
 6 | 	
 7 | 	
 8 | 	
 9 | 	
10 | 	
11 |  
12 | 
13 | 


--------------------------------------------------------------------------------
/CHANGELOG.md:
--------------------------------------------------------------------------------
 1 | # Changelog
 2 | 
 3 | ## v0.1 - October 5, 2014
 4 | 
 5 | * Initial version as preview for railway mappers
 6 | 
 7 | ## v0.2 - October 18, 2014
 8 | 
 9 | * Better error handling
10 | * Additional trains and generic trains
11 | * Support of maxspeed in mph
12 | * New About page
13 | * Minor tweaks and bugfixes
14 | 
15 | ## v0.3 - January 23, 2015
16 | 
17 | * Search for routes by number, operator, network, origin and destination
18 | * Additional trains
19 | * Support of stop nodes that are not directly on the way of the route
20 | * Minor tweaks and bugfixes
21 | 
22 | ## v1.0 - June 6, 2015
23 | 
24 | * New user interface based on bootstrap
25 | * Improved selection of trains
26 | * Show route colors on front page
27 | * Select a default train for a route
28 | * Support for tourist trains and miniature trains
29 | * Additional trains
30 | * Lot's of minor tweaks and bugfixes


--------------------------------------------------------------------------------
/flot/examples/axes-time-zones/tz/yearistype.sh:
--------------------------------------------------------------------------------
 1 | #! /bin/sh
 2 | 
 3 | : 'This file is in the public domain, so clarified as of'
 4 | : '2006-07-17 by Arthur David Olson.'
 5 | 
 6 | case $#-$1 in
 7 | 	2-|2-0*|2-*[!0-9]*)
 8 | 		echo "$0: wild year - $1" >&2
 9 | 		exit 1 ;;
10 | esac
11 | 
12 | case $#-$2 in
13 | 	2-even)
14 | 		case $1 in
15 | 			*[24680])			exit 0 ;;
16 | 			*)				exit 1 ;;
17 | 		esac ;;
18 | 	2-nonpres|2-nonuspres)
19 | 		case $1 in
20 | 			*[02468][048]|*[13579][26])	exit 1 ;;
21 | 			*)				exit 0 ;;
22 | 		esac ;;
23 | 	2-odd)
24 | 		case $1 in
25 | 			*[13579])			exit 0 ;;
26 | 			*)				exit 1 ;;
27 | 		esac ;;
28 | 	2-uspres)
29 | 		case $1 in
30 | 			*[02468][048]|*[13579][26])	exit 0 ;;
31 | 			*)				exit 1 ;;
32 | 		esac ;;
33 | 	2-*)
34 | 		echo "$0: wild type - $2" >&2 ;;
35 | esac
36 | 
37 | echo "$0: usage is $0 year even|odd|uspres|nonpres|nonuspres" >&2
38 | exit 1
39 | 


--------------------------------------------------------------------------------
/changelog.php:
--------------------------------------------------------------------------------
 1 | ';?> 
 2 | 
 3 |   
 4 | 
 5 |     OSMTrainRouteAnalysis  
 6 | 
 7 |     http://osmtrainroutes.bplaced.net/  
 8 | 
 9 |      
10 |     Changelog of OSMTrainRouteAnalysis
11 |     
12 | 
19 |     
20 |       <?php echo $changelogi["heading"];?>
21 |       http://osmtrainroutes.bplaced.net/#about
22 |       
23 |       
25 | 		
29 | 				
  • 30 | 33 | 34 | ]]> 35 |
    36 |
    37 | 41 | 42 |
    43 |
    -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | OSMTrainRouteAnalysis 2 | ===================== 3 | 4 | Analysis of Train Routes Based on OpenStreetMap Data 5 | 6 | **osmtrainroutes.bplaced.net** 7 | Copyright © 2014 sb12 osm.mapper999@gmail.com 8 | 9 | This program is free software: you can redistribute it and/or modify 10 | it under the terms of the GNU General Public License as published by 11 | the Free Software Foundation, either version 3 of the License, or 12 | (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | GNU General Public License for more details. 18 | 19 | You should have received a copy of the GNU General Public License 20 | along with this program. If not, see . 21 | 22 | **License:** See *LICENSE.md* for further information. 23 | 24 | **Contributing:** I'm happy about contributions, please see *CONTRIBUTING.md* for further information. 25 | -------------------------------------------------------------------------------- /po_parser/tests/pofiles/healthy.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: \n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-09-25 15:55+0100\n" 6 | "PO-Revision-Date: \n" 7 | "Last-Translator: Raúl Ferràs \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 13 | "X-Poedit-SourceCharset: UTF-8\n" 14 | "X-Poedit-KeywordsList: __;_e;_n;_t\n" 15 | "X-Textdomain-Support: yes\n" 16 | "X-Poedit-Basepath: .\n" 17 | "X-Generator: Poedit 1.5.7\n" 18 | "X-Poedit-SearchPath-0: .\n" 19 | "X-Poedit-SearchPath-1: ../..\n" 20 | "X-Poedit-SearchPath-2: ../../../modules\n" 21 | 22 | #: ../../classes/dddddd.php:33 23 | msgid "Lo sentimos, ha ocurrido un error..." 24 | msgstr "Ho sentim, s'ha produït un error" 25 | 26 | #: ../../classes/xxxxx.php:96 ../../classes/controller/iiiiiii.php:107 27 | #: ../../classes/controller/yyyyyyy/zzzzzz.php:288 28 | msgid "Debes indicar un nombre." 29 | msgstr "Has d'indicar un nom." 30 | -------------------------------------------------------------------------------- /flot/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2007-2014 IOLA and Ole Laursen 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /po_parser/tests/pofiles/noheader.po: -------------------------------------------------------------------------------- 1 | #: tmp/cache/00/78/1d67cd3f64c5469c21cb05e6fd0a.php:32 2 | #: tmp/cache/07/0a/9136032d279c7c9bb536e108fced.php:58 3 | #: tmp/cache/0b/da/a019bff51aa8a932ec179398dc43.php:65 4 | #: tmp/cache/18/41/43e62ed075451a77574351278bf2.php:58 5 | #: tmp/cache/1d/81/2af439d1ee9aac469ff66b2173d0.php:58 6 | #: tmp/cache/32/46/d22400dcca2bfe7f4e4afd39fd01.php:65 7 | #: tmp/cache/32/da/138149be12bf58b7fa8b621abcf4.php:35 8 | #: tmp/cache/35/77/88dcd5f3a90a7842ea85959569c9.php:58 9 | #: tmp/cache/69/1c/68c94bb5f661f65ef796afc069a9.php:58 10 | #: tmp/cache/95/14/b34e21f518a52d77109ed535cb5f.php:59 11 | #: tmp/cache/9e/6d/48f3a91d014c76613583be955d63.php:58 12 | #: tmp/cache/ac/e0/356f9dc6499cc1b18453093a79f3.php:58 13 | #: tmp/cache/b1/10/16e1bfb77387f1ca7d0ff4c67a64.php:57 14 | #: tmp/cache/fe/91/b339a580bcf69b609d15988a1b42.php:58 15 | msgid "Membership" 16 | msgstr "" 17 | 18 | #: tmp/cache/00/78/1d67cd3f64c5469c21cb05e6fd0a.php:45 19 | #: tmp/cache/18/05/1489b493d73a1596584807221eb9.php:40 20 | #: tmp/cache/27/73/8503d0d9f20aabc08a6372c67dba.php:49 21 | #: tmp/cache/7a/e7/9b68911bacf2b1ef75790f07bff8.php:23 22 | msgid "New membership type" 23 | msgstr "" 24 | -------------------------------------------------------------------------------- /flot/jquery.flot.symbol.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution guidelines 2 | 3 | I'm happy about any pull requests and bug reports. As this is a one man project at the moment it can take some time until bug reports or pull requests are answered. 4 | 5 | 6 | ## Coding Guidelines 7 | 8 | * Open and close curly braces on an empty line. 9 | * One space before and after = etc 10 | * Use tabs for intends 11 | * space after : but not before 12 | * use comments to explain what you are doing 13 | 14 | ## Adding trains 15 | 16 | As there are many different trains in the world it is not possible for me to provide all of them. 17 | 18 | If you think a specific train is missing, feel free to add it to the list in /functions/train_details 19 | 20 | You don't necessarily need to add a picture of the train, you can just use one of the default ones in /img/trains. 21 | 22 | If you provide a picture, please be aware of the following guidelines for train pictures: 23 | 24 | * view from the side 25 | * scale: 1px ^= 10cm 26 | * size: height: 50px, no whitespace on bottom and on sides 27 | * format: preferably svg, other common formats are ok as well, no animations 28 | * only upload pictures that are made by yourself or where you have the appropriate copyright. -------------------------------------------------------------------------------- /functions/settings.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/pacificnew: -------------------------------------------------------------------------------- 1 | #
     2 | # This file is in the public domain, so clarified as of
     3 | # 2009-05-17 by Arthur David Olson.
     4 | 
     5 | # From Arthur David Olson (1989-04-05):
     6 | # On 1989-04-05, the U. S. House of Representatives passed (238-154) a bill
     7 | # establishing "Pacific Presidential Election Time"; it was not acted on
     8 | # by the Senate or signed into law by the President.
     9 | # You might want to change the "PE" (Presidential Election) below to
    10 | # "Q" (Quadrennial) to maintain three-character zone abbreviations.
    11 | # If you're really conservative, you might want to change it to "D".
    12 | # Avoid "L" (Leap Year), which won't be true in 2100.
    13 | 
    14 | # If Presidential Election Time is ever established, replace "XXXX" below
    15 | # with the year the law takes effect and uncomment the "##" lines.
    16 | 
    17 | # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    18 | ## Rule	Twilite	XXXX	max	-	Apr	Sun>=1	2:00	1:00	D
    19 | ## Rule	Twilite	XXXX	max	uspres	Oct	lastSun	2:00	1:00	PE
    20 | ## Rule	Twilite	XXXX	max	uspres	Nov	Sun>=7	2:00	0	S
    21 | ## Rule	Twilite	XXXX	max	nonpres	Oct	lastSun	2:00	0	S
    22 | 
    23 | # Zone	NAME			GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    24 | ## Zone	America/Los_Angeles-PET	-8:00	US		P%sT	XXXX
    25 | ##				-8:00	Twilite		P%sT
    26 | 
    27 | # For now...
    28 | Link	America/Los_Angeles	US/Pacific-New	##
    29 | 
    
    
    --------------------------------------------------------------------------------
    /ajax/defaultTrain.php:
    --------------------------------------------------------------------------------
     1 | .
    20 |     
    21 |     */
    22 | 
    23 | $id=$_GET["id"];
    24 | $train=$_GET["train"];
    25 | $route=$_GET["route"];
    26 | $service=$_GET["service"];
    27 | 
    28 | // load settings
    29 | include "../functions/settings.php";
    30 | 
    31 | // load needed functions
    32 | include "../functions/lang.php";
    33 | include "../functions/start.php";
    34 | include "../functions/train.php";
    35 | 
    36 | if(Train::setDefaultTrain($train, $id, $service, $route))
    37 | {
    38 | 	echo "true";
    39 | }
    40 | else
    41 | {
    42 | 	echo "false";
    43 | }
    44 | ?>
    
    
    --------------------------------------------------------------------------------
    /ajax/search.php:
    --------------------------------------------------------------------------------
     1 | .
    20 |     
    21 |     */
    22 | 
    23 | // load settings
    24 | include "../functions/settings.php";
    25 | 
    26 | // load needed functions
    27 | include "../functions/overpass.php";
    28 | include "../functions/search.php";
    29 | include "../functions/start.php";
    30 | include "../functions/getData.php";
    31 | include "../functions/lang.php";
    32 | include "../po_parser/src/Sepia/PoParser.php";
    33 | //FIXME: add possibility to change language
    34 | 
    35 | // define path to home directory 
    36 | define("PATH", "../");
    37 | 
    38 | Lang::defineLanguage();
    39 | 
    40 | $search = new Search();
    41 | 
    42 | if( $search->getData() )
    43 | {
    44 | 	$search->loadXML();
    45 | 	$search->sortResult("ref");
    46 | }
    47 | $search->showResult();
    48 | ?>
    
    
    --------------------------------------------------------------------------------
    /po_parser/license.txt:
    --------------------------------------------------------------------------------
     1 | The MIT License (MIT)
     2 | 
     3 | Copyright (c) 2012 Raúl Ferràs raul.ferras@gmail.com
     4 | All rights reserved.
     5 | 
     6 | Redistribution and use in source and binary forms, with or without
     7 | modification, are permitted provided that the following conditions
     8 | are met:
     9 | 1. Redistributions of source code must retain the above copyright
    10 |    notice, this list of conditions and the following disclaimer.
    11 | 2. Redistributions in binary form must reproduce the above copyright
    12 |    notice, this list of conditions and the following disclaimer in the
    13 |    documentation and/or other materials provided with the distribution.
    14 | 3. Neither the name of copyright holders nor the names of its
    15 |    contributors may be used to endorse or promote products derived
    16 |    from this software without specific prior written permission.
    17 | 
    18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
    19 | ''AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
    20 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    21 | PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL COPYRIGHT HOLDERS OR CONTRIBUTORS
    22 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
    23 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
    24 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
    25 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
    26 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
    27 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    28 | POSSIBILITY OF SUCH DAMAGE.
    29 | 
    
    
    --------------------------------------------------------------------------------
    /flot/examples/axes-time-zones/tz/systemv:
    --------------------------------------------------------------------------------
     1 | # 
     2 | # This file is in the public domain, so clarified as of
     3 | # 2009-05-17 by Arthur David Olson.
     4 | 
     5 | # Old rules, should the need arise.
     6 | # No attempt is made to handle Newfoundland, since it cannot be expressed
     7 | # using the System V "TZ" scheme (half-hour offset), or anything outside
     8 | # North America (no support for non-standard DST start/end dates), nor
     9 | # the changes in the DST rules in the US after 1976 (which occurred after
    10 | # the old rules were written).
    11 | #
    12 | # If you need the old rules, uncomment ## lines.
    13 | # Compile this *without* leap second correction for true conformance.
    14 | 
    15 | # Rule	NAME	FROM	TO	TYPE	IN	ON	AT	SAVE	LETTER/S
    16 | Rule	SystemV	min	1973	-	Apr	lastSun	2:00	1:00	D
    17 | Rule	SystemV	min	1973	-	Oct	lastSun	2:00	0	S
    18 | Rule	SystemV	1974	only	-	Jan	6	2:00	1:00	D
    19 | Rule	SystemV	1974	only	-	Nov	lastSun	2:00	0	S
    20 | Rule	SystemV	1975	only	-	Feb	23	2:00	1:00	D
    21 | Rule	SystemV	1975	only	-	Oct	lastSun	2:00	0	S
    22 | Rule	SystemV	1976	max	-	Apr	lastSun	2:00	1:00	D
    23 | Rule	SystemV	1976	max	-	Oct	lastSun	2:00	0	S
    24 | 
    25 | # Zone	NAME		GMTOFF	RULES/SAVE	FORMAT	[UNTIL]
    26 | ## Zone	SystemV/AST4ADT	-4:00	SystemV		A%sT
    27 | ## Zone	SystemV/EST5EDT	-5:00	SystemV		E%sT
    28 | ## Zone	SystemV/CST6CDT	-6:00	SystemV		C%sT
    29 | ## Zone	SystemV/MST7MDT	-7:00	SystemV		M%sT
    30 | ## Zone	SystemV/PST8PDT	-8:00	SystemV		P%sT
    31 | ## Zone	SystemV/YST9YDT	-9:00	SystemV		Y%sT
    32 | ## Zone	SystemV/AST4	-4:00	-		AST
    33 | ## Zone	SystemV/EST5	-5:00	-		EST
    34 | ## Zone	SystemV/CST6	-6:00	-		CST
    35 | ## Zone	SystemV/MST7	-7:00	-		MST
    36 | ## Zone	SystemV/PST8	-8:00	-		PST
    37 | ## Zone	SystemV/YST9	-9:00	-		YST
    38 | ## Zone	SystemV/HST10	-10:00	-		HST
    39 | 
    
    
    --------------------------------------------------------------------------------
    /flot/examples/shared/jquery-ui/jquery-ui.min.css:
    --------------------------------------------------------------------------------
    1 | /*! jQuery UI - v1.10.0 - 2013-01-26
    2 | * http://jqueryui.com
    3 | * Includes: jquery.ui.core.css, jquery.ui.resizable.css
    4 | * Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */
    5 | 
    6 | .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}
    
    
    --------------------------------------------------------------------------------
    /flot/jquery.flot.threshold.min.js:
    --------------------------------------------------------------------------------
    1 | /* Javascript plotting library for jQuery, version 0.8.3.
    2 | 
    3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
    4 | Licensed under the MIT license.
    5 | 
    6 | */
    7 | (function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery);
    
    
    --------------------------------------------------------------------------------
    /flot/examples/categories/index.html:
    --------------------------------------------------------------------------------
     1 | 
     2 | 
     3 | 
     4 | 	
     5 | 	Flot Examples: Categories
     6 | 	
     7 | 	
     8 | 	
     9 | 	
    10 | 	
    11 | 	
    37 | 
    38 | 
    39 | 
    40 | 	
    43 | 
    44 | 	
    45 | 46 |
    47 |
    48 |
    49 | 50 |

    With the categories plugin you can plot categories/textual data easily.

    51 | 52 |
    53 | 54 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /flot/examples/basic-usage/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Basic Usage 6 | 7 | 8 | 9 | 10 | 33 | 34 | 35 | 36 | 39 | 40 |
    41 | 42 |
    43 |
    44 |
    45 | 46 |

    You don't have to do much to get an attractive plot. Create a placeholder, make sure it has dimensions (so Flot knows at what size to draw the plot), then call the plot function with your data.

    47 | 48 |

    The axes are automatically scaled.

    49 | 50 |
    51 | 52 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /po_parser/tests/pofiles/context.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: \n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-09-25 15:55+0100\n" 6 | "PO-Revision-Date: \n" 7 | "Last-Translator: Raúl Ferràs \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 13 | "X-Poedit-SourceCharset: UTF-8\n" 14 | "X-Poedit-KeywordsList: __;_e;_n;_t\n" 15 | "X-Textdomain-Support: yes\n" 16 | "X-Poedit-Basepath: .\n" 17 | "X-Generator: Poedit 1.5.7\n" 18 | 19 | #: wp-admin/custom-background.php:305 20 | msgctxt "Background Attachment" 21 | msgid "Attachment" 22 | msgstr "Adjunto" 23 | 24 | #: wp-admin/includes/schema.php:369 25 | msgctxt "start of week" 26 | msgid "1" 27 | msgstr "1" 28 | 29 | #: wp-admin/includes/screen.php:956 30 | msgctxt "Welcome panel" 31 | msgid "Welcome" 32 | msgstr "Hola" 33 | 34 | #: wp-admin/includes/schema.php:355 35 | msgctxt "default GMT offset or timezone string" 36 | msgid "0" 37 | msgstr "0" 38 | 39 | #: wp-admin/includes/template.php:662 40 | #, fuzzy 41 | msgid "%1$s-%2$s" 42 | msgstr "%1$s-%2$s" 43 | 44 | #: wp-admin/custom-header.php:506 45 | msgid "Images should be at least %1$d pixels wide." 46 | msgstr "Las imágenes deben ser de al menos %1$d pixels de ancho." 47 | 48 | #: wp-admin/custom-header.php:515 49 | msgid "Suggested height is %1$d pixels." 50 | msgstr "La altura sugerida es de %1$d pixels." 51 | 52 | #: wp-admin/custom-header.php:509 53 | msgid "Images should be at least %1$d pixels tall." 54 | msgstr "Las imágenes deben ser de al menos %1$d pixels de altura." 55 | 56 | #: wp-admin/install.php:177 57 | msgctxt "Howdy" 58 | msgid "Welcome" 59 | msgstr "Hola" 60 | -------------------------------------------------------------------------------- /functions/signals/main.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | tags = $tags; 46 | if(isset($tags["railway:signal:combined:states"])) 47 | { 48 | $tags["railway:signal:main:states"] = $tags["railway:signal:combined:states"]; 49 | } 50 | 51 | if(isset($tags["railway:signal:main:states"])) 52 | { 53 | $this->states = Signals::signalStates($tags["railway:signal:main:states"],"",false); 54 | } 55 | } 56 | 57 | /** 58 | * return possible speeds the signal can show 59 | * @return Array(int) 60 | */ 61 | public function possibleSpeeds() 62 | { 63 | $speed_array[]=0; 64 | $speed_array[]=-1; 65 | return $speed_array; 66 | } 67 | } 68 | ?> -------------------------------------------------------------------------------- /functions/signals/main_sign.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 62 | 63 | 64 | 65 | '; 66 | $height = 40; 67 | return array($image, $height); 68 | } 69 | } -------------------------------------------------------------------------------- /functions/signals/distant_sign.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 62 | 63 | 64 | 65 | '; 66 | $height = 30; 67 | return array($image, $height); 68 | } 69 | } -------------------------------------------------------------------------------- /flot/jquery.flot.crosshair.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2?.5:0;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.floor(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.floor(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /flot/examples/examples.css: -------------------------------------------------------------------------------- 1 | * { padding: 0; margin: 0; vertical-align: top; } 2 | 3 | body { 4 | background: url(background.png) repeat-x; 5 | font: 18px/1.5em "proxima-nova", Helvetica, Arial, sans-serif; 6 | } 7 | 8 | a { color: #069; } 9 | a:hover { color: #28b; } 10 | 11 | h2 { 12 | margin-top: 15px; 13 | font: normal 32px "omnes-pro", Helvetica, Arial, sans-serif; 14 | } 15 | 16 | h3 { 17 | margin-left: 30px; 18 | font: normal 26px "omnes-pro", Helvetica, Arial, sans-serif; 19 | color: #666; 20 | } 21 | 22 | p { 23 | margin-top: 10px; 24 | } 25 | 26 | button { 27 | font-size: 18px; 28 | padding: 1px 7px; 29 | } 30 | 31 | input { 32 | font-size: 18px; 33 | } 34 | 35 | input[type=checkbox] { 36 | margin: 7px; 37 | } 38 | 39 | #header { 40 | position: relative; 41 | width: 900px; 42 | margin: auto; 43 | } 44 | 45 | #header h2 { 46 | margin-left: 10px; 47 | vertical-align: middle; 48 | font-size: 42px; 49 | font-weight: bold; 50 | text-decoration: none; 51 | color: #000; 52 | } 53 | 54 | #content { 55 | width: 880px; 56 | margin: 0 auto; 57 | padding: 10px; 58 | } 59 | 60 | #footer { 61 | margin-top: 25px; 62 | margin-bottom: 10px; 63 | text-align: center; 64 | font-size: 12px; 65 | color: #999; 66 | } 67 | 68 | .demo-container { 69 | box-sizing: border-box; 70 | width: 850px; 71 | height: 450px; 72 | padding: 20px 15px 15px 15px; 73 | margin: 15px auto 30px auto; 74 | border: 1px solid #ddd; 75 | background: #fff; 76 | background: linear-gradient(#f6f6f6 0, #fff 50px); 77 | background: -o-linear-gradient(#f6f6f6 0, #fff 50px); 78 | background: -ms-linear-gradient(#f6f6f6 0, #fff 50px); 79 | background: -moz-linear-gradient(#f6f6f6 0, #fff 50px); 80 | background: -webkit-linear-gradient(#f6f6f6 0, #fff 50px); 81 | box-shadow: 0 3px 10px rgba(0,0,0,0.15); 82 | -o-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 83 | -ms-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 84 | -moz-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 85 | -webkit-box-shadow: 0 3px 10px rgba(0,0,0,0.1); 86 | } 87 | 88 | .demo-placeholder { 89 | width: 100%; 90 | height: 100%; 91 | font-size: 14px; 92 | line-height: 1.2em; 93 | } 94 | 95 | .legend table { 96 | border-spacing: 5px; 97 | } -------------------------------------------------------------------------------- /functions/signals/main_semaphore.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | '; 69 | $height = 70; 70 | return array($image, $height); 71 | } 72 | } -------------------------------------------------------------------------------- /functions/signals/distant_semaphore.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | '; 69 | $height = 50; 70 | return array($image, $height); 71 | } 72 | } -------------------------------------------------------------------------------- /flot/jquery.flot.fillbetween.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery); -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3_sign.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 67 | '; 68 | $path = Signal_path::getPath($speed); 69 | if(isset($path)) 70 | { 71 | $image .= ' 72 | '; 73 | 74 | } 75 | $image .= ' 76 | '; 77 | $height = 40; 78 | return array($image, $height); 79 | } 80 | } -------------------------------------------------------------------------------- /flot/examples/threshold/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Thresholds 6 | 7 | 8 | 9 | 10 | 11 | 48 | 49 | 50 | 51 | 54 | 55 |
    56 | 57 |
    58 |
    59 |
    60 | 61 |

    With the threshold plugin, you can apply a specific color to the part of a data series below a threshold. This is can be useful for highlighting negative values, e.g. when displaying net results or what's in stock.

    62 | 63 |

    64 | 65 | 66 | 67 |

    68 | 69 |
    70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /flot/examples/symbols/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Symbols 6 | 7 | 8 | 9 | 10 | 11 | 54 | 55 | 56 | 57 | 60 | 61 |
    62 | 63 |
    64 |
    65 |
    66 | 67 |

    Points can be marked in several ways, with circles being the built-in default. For other point types, you can define a callback function to draw the symbol. Some common symbols are available in the symbol plugin.

    68 | 69 |
    70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /flot/jquery.flot.stack.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m 2 | 3 | 4 | 5 | Flot Examples: Image Plots 6 | 7 | 8 | 9 | 10 | 11 | 43 | 44 | 45 | 46 | 49 | 50 |
    51 | 52 |
    53 |
    54 |
    55 | 56 |

    The Cat's Eye Nebula (picture from Hubble).

    57 | 58 |

    With the image plugin, you can plot static images against a set of axes. This is for useful for adding ticks to complex prerendered visualizations. Instead of inputting data points, you specify the images and where their two opposite corners are supposed to be in plot space.

    59 | 60 |

    Images represent a little further complication because you need to make sure they are loaded before you can use them (Flot skips incomplete images). The plugin comes with a couple of helpers for doing that.

    61 | 62 |
    63 | 64 | 67 | 68 | 69 | 70 | -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3v_sign.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 67 | '; 68 | $path = Signal_path::getPath($speed); 69 | if(isset($path)) 70 | { 71 | $image .= ' 72 | '; 73 | 74 | } 75 | $image .= ' 76 | '; 77 | $height = 33; 78 | return array($image, $height); 79 | } 80 | } -------------------------------------------------------------------------------- /functions/signals/main_light.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 'red', 68 | 'colour' => $colour_red, 69 | 'cx' => 20, 70 | 'cy' => 20, 71 | 'r' => $r_main, 72 | ); 73 | $lights[] = Array( 74 | 'id' => 'green', 75 | 'colour' => $colour_green, 76 | 'cx' => 20, 77 | 'cy' => 40, 78 | 'r' => $r_main, 79 | ); 80 | 81 | return Signal_Light::generateImage($position,60,$geometry,$lights); 82 | } 83 | } -------------------------------------------------------------------------------- /flot/examples/series-types/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Series Types 6 | 7 | 8 | 9 | 10 | 68 | 69 | 70 | 71 | 74 | 75 |
    76 | 77 |
    78 |
    79 |
    80 | 81 |

    Flot supports lines, points, filled areas, bars and any combinations of these, in the same plot and even on the same data series.

    82 | 83 |
    84 | 85 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3_light.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 77 | '; 78 | $image .= Signal_matrix::getMatrix($speed, $speed_array, "&st"); 79 | 80 | $image .= ' 81 | '; 82 | $height = 18; 83 | return array($image, $height); 84 | } 85 | } -------------------------------------------------------------------------------- /functions/signals/signal_light.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 43 | 44 | 45 | 46 | '; 47 | foreach($lights as $light) 48 | { 49 | if(isset($light["id"])) 50 | { 51 | $image .= ' 52 | 53 | '; 54 | } 55 | if(isset($light["cx"])) 56 | { 57 | $cx = $light["cx"]; 58 | } 59 | if(isset($light["cy"])) 60 | { 61 | $cy = $light["cy"]; 62 | } 63 | if(isset($light["r"])) 64 | { 65 | $r = $light["r"]; 66 | } 67 | $class = ""; 68 | if(isset($light["class"])) 69 | { 70 | $class = " class=\"".$light["class"]."\""; 71 | } 72 | if(isset($light["colour"])) 73 | { 74 | $colour = $light["colour"]; 75 | } 76 | $image .= ' 77 | 78 | '; 79 | if(isset($light["id"])) 80 | { 81 | $image .= ' 82 | 83 | '; 84 | } 85 | } 86 | $image .= ' 87 | '; 88 | return array($image, $height); 89 | } 90 | } -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3v_light.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 74 | '; 75 | $image .= Signal_matrix::getMatrix($speed, $speed_array, "&stv"); 76 | 77 | $image .= ' 78 | '; 79 | $height = 18; 80 | return array($image, $height); 81 | } 82 | } -------------------------------------------------------------------------------- /flot/jquery.flot.categories.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;i. 20 | 21 | */ 22 | ?> 23 | 'red', 68 | 'colour' => $colour_red, 69 | 'cx' => 20, 70 | 'cy' => 15, 71 | 'r' => $r_main, 72 | ); 73 | $lights[] = Array( 74 | 'id' => 'yellow', 75 | 'colour' => $colour_yellow, 76 | 'cx' => 20, 77 | 'cy' => 30, 78 | 'r' => $r_main, 79 | ); 80 | $lights[] = Array( 81 | 'id' => 'green', 82 | 'colour' => $colour_green, 83 | 'cx' => 20, 84 | 'cy' => 45, 85 | 'r' => $r_main, 86 | ); 87 | 88 | return Signal_Light::generateImage($position,60,$geometry,$lights); 89 | } 90 | } -------------------------------------------------------------------------------- /functions/signals/ne1.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | state_main = ""; 75 | } 76 | 77 | 78 | /** 79 | * generate image 80 | * @param $tags array tags of the signal 81 | */ 82 | public static function generateImage($height) 83 | { 84 | $image = ' 85 | 86 | 87 | 88 | 89 | '; 90 | $height = 20; 91 | return array($image, $height); 92 | } 93 | } -------------------------------------------------------------------------------- /flot/jquery.flot.image.min.js: -------------------------------------------------------------------------------- 1 | /* Javascript plotting library for jQuery, version 0.8.3. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | */ 7 | (function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery); -------------------------------------------------------------------------------- /flot/examples/basic-options/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Basic Options 6 | 7 | 8 | 9 | 10 | 67 | 68 | 69 | 70 | 73 | 74 |
    75 | 76 |
    77 |
    78 |
    79 | 80 |

    There are plenty of options you can set to control the precise looks of your plot. You can control the ticks on the axes, the legend, the graph type, etc.

    81 | 82 |

    Flot goes to great lengths to provide sensible defaults so that you don't have to customize much for a good-looking result.

    83 | 84 |
    85 | 86 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /flot/examples/resize/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Resizing 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 50 | 51 | 52 | 53 | 56 | 57 |
    58 | 59 |
    60 |
    61 |
    62 | 63 |

    64 | 65 |

    Sometimes it makes more sense to just let the plot take up the available space. In that case, we need to redraw the plot each time the placeholder changes its size. If you include the resize plugin, this is handled automatically.

    66 | 67 |

    Drag the bottom and right sides of the plot to resize it.

    68 | 69 |
    70 | 71 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /flot/jquery.flot.symbol.js: -------------------------------------------------------------------------------- 1 | /* Flot plugin that adds some extra symbols for plotting points. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | The symbols are accessed as strings through the standard symbol options: 7 | 8 | series: { 9 | points: { 10 | symbol: "square" // or "diamond", "triangle", "cross" 11 | } 12 | } 13 | 14 | */ 15 | 16 | (function ($) { 17 | function processRawData(plot, series, datapoints) { 18 | // we normalize the area of each symbol so it is approximately the 19 | // same as a circle of the given radius 20 | 21 | var handlers = { 22 | square: function (ctx, x, y, radius, shadow) { 23 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 24 | var size = radius * Math.sqrt(Math.PI) / 2; 25 | ctx.rect(x - size, y - size, size + size, size + size); 26 | }, 27 | diamond: function (ctx, x, y, radius, shadow) { 28 | // pi * r^2 = 2s^2 => s = r * sqrt(pi/2) 29 | var size = radius * Math.sqrt(Math.PI / 2); 30 | ctx.moveTo(x - size, y); 31 | ctx.lineTo(x, y - size); 32 | ctx.lineTo(x + size, y); 33 | ctx.lineTo(x, y + size); 34 | ctx.lineTo(x - size, y); 35 | }, 36 | triangle: function (ctx, x, y, radius, shadow) { 37 | // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3)) 38 | var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3)); 39 | var height = size * Math.sin(Math.PI / 3); 40 | ctx.moveTo(x - size/2, y + height/2); 41 | ctx.lineTo(x + size/2, y + height/2); 42 | if (!shadow) { 43 | ctx.lineTo(x, y - height/2); 44 | ctx.lineTo(x - size/2, y + height/2); 45 | } 46 | }, 47 | cross: function (ctx, x, y, radius, shadow) { 48 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2 49 | var size = radius * Math.sqrt(Math.PI) / 2; 50 | ctx.moveTo(x - size, y - size); 51 | ctx.lineTo(x + size, y + size); 52 | ctx.moveTo(x - size, y + size); 53 | ctx.lineTo(x + size, y - size); 54 | } 55 | }; 56 | 57 | var s = series.points.symbol; 58 | if (handlers[s]) 59 | series.points.symbol = handlers[s]; 60 | } 61 | 62 | function init(plot) { 63 | plot.hooks.processDatapoints.push(processRawData); 64 | } 65 | 66 | $.plot.plugins.push({ 67 | init: init, 68 | name: 'symbols', 69 | version: '1.0' 70 | }); 71 | })(jQuery); 72 | -------------------------------------------------------------------------------- /functions/signals/ne2.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | state_main = ""; 75 | } 76 | 77 | /** 78 | * generate image 79 | * @param $tags array tags of the signal 80 | */ 81 | public static function generateImage($height) 82 | { 83 | $image = ' 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | '; 95 | $height = 30; 96 | return array($image, $height); 97 | } 98 | } -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 0 ) 67 | { 68 | $speed = $tags["railway:signal:speed_limit:speed"]; 69 | } 70 | } 71 | } 72 | return $speed; 73 | } 74 | 75 | 76 | /** 77 | * returns description of the signals 78 | * @return description for signal 79 | */ 80 | public function showDescription($description,$type) 81 | { 82 | return parent::showDescription(Lang::l_("German Zs3"),$type); 83 | } 84 | 85 | 86 | /** 87 | * generate image 88 | * @param $tags array tags of the signal 89 | */ 90 | public static function generateImage() 91 | { 92 | return; // not needed 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /functions/signals/speedlimit_zs3v.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 0 ) 65 | { 66 | $speed_distant = $tags["railway:signal:speed_limit_distant:speed"]; 67 | } 68 | } 69 | return $speed_distant; 70 | } 71 | 72 | 73 | /** 74 | * returns description of the signals 75 | * @return description for signal 76 | */ 77 | public function showDescription($description, $type) 78 | { 79 | return parent::showDescription(Lang::l_("German Zs3v"), $type); 80 | } 81 | 82 | 83 | /** 84 | * generate image 85 | * @param $tags array tags of the signal 86 | */ 87 | public static function generateImage() 88 | { 89 | return; // not needed 90 | } 91 | } 92 | -------------------------------------------------------------------------------- /functions/signals/ETCS_markerboard.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 85 | 86 | 87 | 88 | 89 | 90 | '; 91 | $height = 20; 92 | return array($image, $height); 93 | } 94 | } 95 | -------------------------------------------------------------------------------- /po_parser/tests/pofiles/multilines.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: \n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2013-09-25 15:55+0100\n" 6 | "PO-Revision-Date: \n" 7 | "Last-Translator: Raúl Ferràs \n" 8 | "Language-Team: \n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 13 | "X-Poedit-SourceCharset: UTF-8\n" 14 | "X-Poedit-KeywordsList: __;_e;_n;_t\n" 15 | "X-Textdomain-Support: yes\n" 16 | "X-Poedit-Basepath: .\n" 17 | "X-Generator: Poedit 1.5.7\n" 18 | "X-Poedit-SearchPath-0: .\n" 19 | "X-Poedit-SearchPath-1: ../..\n" 20 | "X-Poedit-SearchPath-2: ../../../modules\n" 21 | 22 | # @ default 23 | #: ../../classes/dddddd.php:33 24 | msgid "Lo sentimos, ha ocurrido un error..." 25 | msgstr "Ho sentim, s'ha produït un error" 26 | 27 | #: ../../classes/xxxxx.php:96 ../../classes/controller/iiiiiii.php:107 28 | #: ../../classes/controller/yyyyyyy/zzzzzz.php:288 29 | msgid "Debes indicar un nombre." 30 | msgstr "Has d'indicar un nom." 31 | 32 | #: ../../classes/ccccc.php:100 ../../classes/cccc.php:104 33 | #: ../../classes/controller/cccc/mmmmm.php:295 34 | #: ../../classes/controller/cccc/mmmmm.php:513 35 | msgid "Ya existe otro usuari con este mismo nombre." 36 | msgstr "Ja existeix un altre usuari amb aquest nom." 37 | 38 | #: ../../classes/ccccc.php:108 ../../classes/controller/cccc/mmmmm.php:305 39 | #: ../../classes/controller/ccccc/mmmmm.php:518 40 | msgid "Debes indicar una dirección web!" 41 | msgstr "Has d'indicar una direcció web!" 42 | 43 | # @ default 44 | #: ../../classes/uuuuuuu.php:175 45 | #, fuzzy 46 | msgid "El archivo supera el tamaño máximo permitido: %size%MB" 47 | msgstr "" 48 | "El fitxer {file} es massa gran, el tamany máxim de fitxer es {sizeLimit}." 49 | 50 | #: ../../classes/controller/ccccc.php:361 51 | msgid "" 52 | "%user% acaba de responder tu comentario.
    Consulta que te ha " 53 | "dicho %link%aquí." 54 | msgstr "" 55 | "%user% acaba de respondre el teu comentari.
    Consulta que t'ha " 56 | "dit %link%aquí." 57 | 58 | #: ../../classes/controller/eeee.php:786 59 | msgid "" 60 | "Atención, para finalizar el proceso debes iniciar sesión con tu usuario " 61 | ".
    No sufras, hemos guardado los datos introducidos, una vez " 62 | "te autentifiques te redirigiremos al paso final." 63 | msgstr "" 64 | "Atenció, per finalitzar el procés has de iniciar sessió amb el teu usuari " 65 | ".
    No pateixis, hem desat les teves dades, un cop " 66 | "t'autentifiquis finalitzarem el procés." 67 | 68 | # @ default 69 | #~ msgid "Arrastra imagenes aquí para subirlas." 70 | #~ msgstr "Arrossega les teves imatges aquí per pujarles." 71 | 72 | # @ default 73 | #~ msgid "" 74 | #~ "El archivo {file} es demasiado pequeño, el tamaño mínimo de archivo es " 75 | #~ "{minSizeLimit}." 76 | #~ msgstr "" 77 | #~ "El fitxer {file} es massa petit, el tamany mínim de fitxer es " 78 | #~ "{minSizeLimit}." 79 | -------------------------------------------------------------------------------- /functions/signals/distant_light.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 'yellow', 68 | 'colour' => $colour_yellow, 69 | 'cx' => 20, 70 | 'cy' => 20, 71 | 'r' => $r_main, 72 | ); 73 | $lights[] = Array( 74 | 'id' => 'green', 75 | 'colour' => $colour_green, 76 | 'cx' => 20, 77 | 'cy' => 40, 78 | 'r' => $r_main, 79 | ); 80 | 81 | return Signal_Light::generateImage($position,60,$geometry,$lights); 82 | } 83 | $image = ' 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | '; 97 | $height = 60; 98 | return array($image, $height); 99 | } 100 | } -------------------------------------------------------------------------------- /flot/jquery.colorhelpers.min.js: -------------------------------------------------------------------------------- 1 | (function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery); -------------------------------------------------------------------------------- /flot/examples/annotating/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Adding Annotations 6 | 7 | 8 | 9 | 10 | 65 | 66 | 67 | 68 | 71 | 72 |
    73 | 74 |
    75 |
    76 |
    77 | 78 |

    Flot has support for simple background decorations such as lines and rectangles. They can be useful for marking up certain areas. You can easily add any HTML you need with standard DOM manipulation, e.g. for labels. For drawing custom shapes there is also direct access to the canvas.

    79 | 80 |
    81 | 82 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /functions/signals/BOStrabH_main.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 'h2', 82 | 'colour' => $colour_h2, 83 | 'cx' => 20, 84 | 'cy' => 9, 85 | 'r' => $r_main, 86 | ); 87 | $geometry = "12,1 28,1 28,49 12,49"; 88 | $height = 50; 89 | $move = 16; 90 | } 91 | } 92 | $lights[] = Array( 93 | 'id' => 'h0', 94 | 'colour' => $colour_h0, 95 | 'cx' => 20, 96 | 'cy' => 9+$move, 97 | 'r' => $r_main, 98 | ); 99 | $lights[] = Array( 100 | 'id' => 'h1', 101 | 'colour' => $colour_h1, 102 | 'cx' => 20, 103 | 'cy' => 25+$move, 104 | 'r' => $r_main, 105 | ); 106 | 107 | return Signal_Light::generateImage($position,$height,$geometry,$lights); 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /flot/examples/stacking/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Stacking 6 | 7 | 8 | 9 | 10 | 11 | 74 | 75 | 76 | 77 | 80 | 81 |
    82 | 83 |
    84 |
    85 |
    86 | 87 |

    With the stack plugin, you can have Flot stack the series. This is useful if you wish to display both a total and the constituents it is made of. The only requirement is that you provide the input sorted on x.

    88 | 89 |

    90 | 91 | 92 |

    93 | 94 |

    95 | 96 | 97 | 98 |

    99 | 100 |
    101 | 102 | 105 | 106 | 107 | 108 | -------------------------------------------------------------------------------- /flot/examples/axes-interacting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Interacting with axes 6 | 7 | 8 | 9 | 10 | 71 | 72 | 73 | 74 | 77 | 78 |
    79 | 80 |
    81 |
    82 |
    83 | 84 |

    With multiple axes, you sometimes need to interact with them. A simple way to do this is to draw the plot, deduce the axis placements and insert a couple of divs on top to catch events.

    85 | 86 |

    Try clicking an axis.

    87 | 88 |

    89 | 90 |
    91 | 92 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /functions/signals/BOStrabH_distant.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 'v0_1', 80 | 'colour' => $colour_v0_1, 81 | 'cx' => 16, 82 | 'cy' => 15, 83 | 'r' => $r_main, 84 | ); 85 | $lights[] = Array( 86 | 'id' => 'v0_2', 87 | 'colour' => $colour_v0_2, 88 | 'cx' => 24, 89 | 'cy' => 7, 90 | 'r' => $r_main, 91 | ); 92 | $lights[] = Array( 93 | 'id' => 'v1_1', 94 | 'colour' => $colour_v1_1, 95 | 'cx' => 16, 96 | 'cy' => 23, 97 | 'r' => $r_main, 98 | ); 99 | $lights[] = Array( 100 | 'id' => 'v1_2', 101 | 'colour' => $colour_v1_2, 102 | 'cx' => 24, 103 | 'cy' => 15, 104 | 'r' => $r_main, 105 | ); 106 | 107 | return Signal_Light::generateImage($position,36,$geometry,$lights); 108 | } 109 | } 110 | } 111 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/etcetera: -------------------------------------------------------------------------------- 1 | #
     2 | # This file is in the public domain, so clarified as of
     3 | # 2009-05-17 by Arthur David Olson.
     4 | 
     5 | # These entries are mostly present for historical reasons, so that
     6 | # people in areas not otherwise covered by the tz files could "zic -l"
     7 | # to a time zone that was right for their area.  These days, the
     8 | # tz files cover almost all the inhabited world, and the only practical
     9 | # need now for the entries that are not on UTC are for ships at sea
    10 | # that cannot use POSIX TZ settings.
    11 | 
    12 | Zone	Etc/GMT		0	-	GMT
    13 | Zone	Etc/UTC		0	-	UTC
    14 | Zone	Etc/UCT		0	-	UCT
    15 | 
    16 | # The following link uses older naming conventions,
    17 | # but it belongs here, not in the file `backward',
    18 | # as functions like gmtime load the "GMT" file to handle leap seconds properly.
    19 | # We want this to work even on installations that omit the other older names.
    20 | Link	Etc/GMT				GMT
    21 | 
    22 | Link	Etc/UTC				Etc/Universal
    23 | Link	Etc/UTC				Etc/Zulu
    24 | 
    25 | Link	Etc/GMT				Etc/Greenwich
    26 | Link	Etc/GMT				Etc/GMT-0
    27 | Link	Etc/GMT				Etc/GMT+0
    28 | Link	Etc/GMT				Etc/GMT0
    29 | 
    30 | # We use POSIX-style signs in the Zone names and the output abbreviations,
    31 | # even though this is the opposite of what many people expect.
    32 | # POSIX has positive signs west of Greenwich, but many people expect
    33 | # positive signs east of Greenwich.  For example, TZ='Etc/GMT+4' uses
    34 | # the abbreviation "GMT+4" and corresponds to 4 hours behind UTC
    35 | # (i.e. west of Greenwich) even though many people would expect it to
    36 | # mean 4 hours ahead of UTC (i.e. east of Greenwich).
    37 | #
    38 | # In the draft 5 of POSIX 1003.1-200x, the angle bracket notation allows for
    39 | # TZ='+4'; if you want time zone abbreviations conforming to
    40 | # ISO 8601 you can use TZ='<-0400>+4'.  Thus the commonly-expected
    41 | # offset is kept within the angle bracket (and is used for display)
    42 | # while the POSIX sign is kept outside the angle bracket (and is used
    43 | # for calculation).
    44 | #
    45 | # Do not use a TZ setting like TZ='GMT+4', which is four hours behind
    46 | # GMT but uses the completely misleading abbreviation "GMT".
    47 | 
    48 | # Earlier incarnations of this package were not POSIX-compliant,
    49 | # and had lines such as
    50 | #		Zone	GMT-12		-12	-	GMT-1200
    51 | # We did not want things to change quietly if someone accustomed to the old
    52 | # way does a
    53 | #		zic -l GMT-12
    54 | # so we moved the names into the Etc subdirectory.
    55 | 
    56 | Zone	Etc/GMT-14	14	-	GMT-14	# 14 hours ahead of GMT
    57 | Zone	Etc/GMT-13	13	-	GMT-13
    58 | Zone	Etc/GMT-12	12	-	GMT-12
    59 | Zone	Etc/GMT-11	11	-	GMT-11
    60 | Zone	Etc/GMT-10	10	-	GMT-10
    61 | Zone	Etc/GMT-9	9	-	GMT-9
    62 | Zone	Etc/GMT-8	8	-	GMT-8
    63 | Zone	Etc/GMT-7	7	-	GMT-7
    64 | Zone	Etc/GMT-6	6	-	GMT-6
    65 | Zone	Etc/GMT-5	5	-	GMT-5
    66 | Zone	Etc/GMT-4	4	-	GMT-4
    67 | Zone	Etc/GMT-3	3	-	GMT-3
    68 | Zone	Etc/GMT-2	2	-	GMT-2
    69 | Zone	Etc/GMT-1	1	-	GMT-1
    70 | Zone	Etc/GMT+1	-1	-	GMT+1
    71 | Zone	Etc/GMT+2	-2	-	GMT+2
    72 | Zone	Etc/GMT+3	-3	-	GMT+3
    73 | Zone	Etc/GMT+4	-4	-	GMT+4
    74 | Zone	Etc/GMT+5	-5	-	GMT+5
    75 | Zone	Etc/GMT+6	-6	-	GMT+6
    76 | Zone	Etc/GMT+7	-7	-	GMT+7
    77 | Zone	Etc/GMT+8	-8	-	GMT+8
    78 | Zone	Etc/GMT+9	-9	-	GMT+9
    79 | Zone	Etc/GMT+10	-10	-	GMT+10
    80 | Zone	Etc/GMT+11	-11	-	GMT+11
    81 | Zone	Etc/GMT+12	-12	-	GMT+12
    82 | 
    
    
    --------------------------------------------------------------------------------
    /functions/lang.php:
    --------------------------------------------------------------------------------
      1 | .
     20 |     
     21 |     */
     22 | ?>
     23 | parse($filePath[$lang]);
     65 | 		
     66 | 		// convert array to $l_ array
     67 | 		foreach ( $po_output as $po_o )
     68 | 		{
     69 | 			if ( isset($po_o["msgid"]) && isset($po_o["msgstr"]) )
     70 | 			{
     71 | 				Lang::$lang_output[$po_o["msgid"][0]] = "";
     72 | 				foreach ( $po_o["msgstr"] as $msg_str )
     73 | 				{
     74 | 					Lang::$lang_output[$po_o["msgid"][0]] .= $msg_str;
     75 | 				}
     76 | 			}
     77 | 		}
     78 | 	}
     79 | 	
     80 | 	/**
     81 | 	 * get Language String
     82 | 	 * 
     83 | 	 * @param String $msgid 
     84 | 	 * @return String language string
     85 | 	 */
     86 | 	public static function l_($msgid)
     87 | 	{
     88 | 		if ( isset(Lang::$lang_output[$msgid]) )
     89 | 		{
     90 | 			return Lang::$lang_output[$msgid];
     91 | 		}
     92 | 		else
     93 | 		{
     94 | 			return $msgid;
     95 | 		}
     96 | 	}
     97 | 	
     98 | 	/**
     99 | 	 * get default browser language
    100 | 	 * 
    101 | 	 * @return String language
    102 | 	 */
    103 | 	private static function getLanguage()
    104 | 	{
    105 | 		/* code adapted from http://www.paulund.co.uk/auto-detect-browser-language-in-php */
    106 | 		$supportedLangs = array("en", "de");
    107 | 		
    108 | 		$languages = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
    109 | 
    110 | 		foreach ( $languages as $lang )
    111 | 		{
    112 | 			foreach ( $supportedLangs as $slang )
    113 | 			{
    114 | 				if ( strstr($lang, $slang) )
    115 | 				{
    116 | 					// Set the page locale to the first supported language found
    117 | 					return $slang;
    118 | 				}
    119 | 			}
    120 | 		}
    121 | 		//language not supported -> set to default english language
    122 | 		return "en";
    123 | 	}
    124 | }
    125 | ?>
    
    
    --------------------------------------------------------------------------------
    /flot/examples/realtime/index.html:
    --------------------------------------------------------------------------------
      1 | 
      2 | 
      3 | 
      4 | 	
      5 | 	Flot Examples: Real-time updates
      6 | 	
      7 | 	
      8 | 	
      9 | 	
     10 | 	
     98 | 
     99 | 
    100 | 
    101 | 	
    104 | 
    105 | 	
    106 | 107 |
    108 |
    109 |
    110 | 111 |

    You can update a chart periodically to get a real-time effect by using a timer to insert the new data in the plot and redraw it.

    112 | 113 |

    Time between updates: milliseconds

    114 | 115 |
    116 | 117 | 120 | 121 | 122 | 123 | -------------------------------------------------------------------------------- /flot/FAQ.md: -------------------------------------------------------------------------------- 1 | ## Frequently asked questions ## 2 | 3 | #### How much data can Flot cope with? #### 4 | 5 | Flot will happily draw everything you send to it so the answer 6 | depends on the browser. The excanvas emulation used for IE (built with 7 | VML) makes IE by far the slowest browser so be sure to test with that 8 | if IE users are in your target group (for large plots in IE, you can 9 | also check out Flashcanvas which may be faster). 10 | 11 | 1000 points is not a problem, but as soon as you start having more 12 | points than the pixel width, you should probably start thinking about 13 | downsampling/aggregation as this is near the resolution limit of the 14 | chart anyway. If you downsample server-side, you also save bandwidth. 15 | 16 | 17 | #### Flot isn't working when I'm using JSON data as source! #### 18 | 19 | Actually, Flot loves JSON data, you just got the format wrong. 20 | Double check that you're not inputting strings instead of numbers, 21 | like [["0", "-2.13"], ["5", "4.3"]]. This is most common mistake, and 22 | the error might not show up immediately because Javascript can do some 23 | conversion automatically. 24 | 25 | 26 | #### Can I export the graph? #### 27 | 28 | You can grab the image rendered by the canvas element used by Flot 29 | as a PNG or JPEG (remember to set a background). Note that it won't 30 | include anything not drawn in the canvas (such as the legend). And it 31 | doesn't work with excanvas which uses VML, but you could try 32 | Flashcanvas. 33 | 34 | 35 | #### The bars are all tiny in time mode? #### 36 | 37 | It's not really possible to determine the bar width automatically. 38 | So you have to set the width with the barWidth option which is NOT in 39 | pixels, but in the units of the x axis (or the y axis for horizontal 40 | bars). For time mode that's milliseconds so the default value of 1 41 | makes the bars 1 millisecond wide. 42 | 43 | 44 | #### Can I use Flot with libraries like Mootools or Prototype? #### 45 | 46 | Yes, Flot supports it out of the box and it's easy! Just use jQuery 47 | instead of $, e.g. call jQuery.plot instead of $.plot and use 48 | jQuery(something) instead of $(something). As a convenience, you can 49 | put in a DOM element for the graph placeholder where the examples and 50 | the API documentation are using jQuery objects. 51 | 52 | Depending on how you include jQuery, you may have to add one line of 53 | code to prevent jQuery from overwriting functions from the other 54 | libraries, see the documentation in jQuery ("Using jQuery with other 55 | libraries") for details. 56 | 57 | 58 | #### Flot doesn't work with [insert name of Javascript UI framework]! #### 59 | 60 | Flot is using standard HTML to make charts. If this is not working, 61 | it's probably because the framework you're using is doing something 62 | weird with the DOM or with the CSS that is interfering with Flot. 63 | 64 | A common problem is that there's display:none on a container until the 65 | user does something. Many tab widgets work this way, and there's 66 | nothing wrong with it - you just can't call Flot inside a display:none 67 | container as explained in the README so you need to hold off the Flot 68 | call until the container is actually displayed (or use 69 | visibility:hidden instead of display:none or move the container 70 | off-screen). 71 | 72 | If you find there's a specific thing we can do to Flot to help, feel 73 | free to submit a bug report. Otherwise, you're welcome to ask for help 74 | on the forum/mailing list, but please don't submit a bug report to 75 | Flot. 76 | -------------------------------------------------------------------------------- /flot/jquery.flot.resize.js: -------------------------------------------------------------------------------- 1 | /* Flot plugin for automatically redrawing plots as the placeholder resizes. 2 | 3 | Copyright (c) 2007-2014 IOLA and Ole Laursen. 4 | Licensed under the MIT license. 5 | 6 | It works by listening for changes on the placeholder div (through the jQuery 7 | resize event plugin) - if the size changes, it will redraw the plot. 8 | 9 | There are no options. If you need to disable the plugin for some plots, you 10 | can just fix the size of their placeholders. 11 | 12 | */ 13 | 14 | /* Inline dependency: 15 | * jQuery resize event - v1.1 - 3/14/2010 16 | * http://benalman.com/projects/jquery-resize-plugin/ 17 | * 18 | * Copyright (c) 2010 "Cowboy" Ben Alman 19 | * Dual licensed under the MIT and GPL licenses. 20 | * http://benalman.com/about/license/ 21 | */ 22 | (function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this); 23 | 24 | (function ($) { 25 | var options = { }; // no options 26 | 27 | function init(plot) { 28 | function onResize() { 29 | var placeholder = plot.getPlaceholder(); 30 | 31 | // somebody might have hidden us and we can't plot 32 | // when we don't have the dimensions 33 | if (placeholder.width() == 0 || placeholder.height() == 0) 34 | return; 35 | 36 | plot.resize(); 37 | plot.setupGrid(); 38 | plot.draw(); 39 | } 40 | 41 | function bindEvents(plot, eventHolder) { 42 | plot.getPlaceholder().resize(onResize); 43 | } 44 | 45 | function shutdown(plot, eventHolder) { 46 | plot.getPlaceholder().unbind("resize", onResize); 47 | } 48 | 49 | plot.hooks.bindEvents.push(bindEvents); 50 | plot.hooks.shutdown.push(shutdown); 51 | } 52 | 53 | $.plot.plugins.push({ 54 | init: init, 55 | options: options, 56 | name: 'resize', 57 | version: '1.0' 58 | }); 59 | })(jQuery); 60 | -------------------------------------------------------------------------------- /functions/signals/hl_distant.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | 95 | 96 | 97 | 98 | '; 99 | if($show_gelb1) 100 | { 101 | $image .= ' 102 | 103 | 104 | 105 | 106 | '; 107 | } 108 | if($show_gruen) 109 | { 110 | $image .= ' 111 | 112 | 113 | 114 | 115 | 116 | '; 117 | } 118 | $image .= ' 119 | '; 120 | $height = 55; 121 | return array($image, $height); 122 | } 123 | } -------------------------------------------------------------------------------- /flot/CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ## Contributing to Flot ## 2 | 3 | We welcome all contributions, but following these guidelines results in less 4 | work for us, and a faster and better response. 5 | 6 | ### Issues ### 7 | 8 | Issues are not a way to ask general questions about Flot. If you see unexpected 9 | behavior but are not 100% certain that it is a bug, please try posting to the 10 | [forum](http://groups.google.com/group/flot-graphs) first, and confirm that 11 | what you see is really a Flot problem before creating a new issue for it. When 12 | reporting a bug, please include a working demonstration of the problem, if 13 | possible, or at least a clear description of the options you're using and the 14 | environment (browser and version, jQuery version, other libraries) that you're 15 | running under. 16 | 17 | If you have suggestions for new features, or changes to existing ones, we'd 18 | love to hear them! Please submit each suggestion as a separate new issue. 19 | 20 | If you would like to work on an existing issue, please make sure it is not 21 | already assigned to someone else. If an issue is assigned to someone, that 22 | person has already started working on it. So, pick unassigned issues to prevent 23 | duplicated effort. 24 | 25 | ### Pull Requests ### 26 | 27 | To make merging as easy as possible, please keep these rules in mind: 28 | 29 | 1. Submit new features or architectural changes to the *<version>-work* 30 | branch for the next major release. Submit bug fixes to the master branch. 31 | 32 | 2. Divide larger changes into a series of small, logical commits with 33 | descriptive messages. 34 | 35 | 3. Rebase, if necessary, before submitting your pull request, to reduce the 36 | work we need to do to merge it. 37 | 38 | 4. Format your code according to the style guidelines below. 39 | 40 | ### Flot Style Guidelines ### 41 | 42 | Flot follows the [jQuery Core Style Guidelines](http://docs.jquery.com/JQuery_Core_Style_Guidelines), 43 | with the following updates and exceptions: 44 | 45 | #### Spacing #### 46 | 47 | Use four-space indents, no tabs. Do not add horizontal space around parameter 48 | lists, loop definitions, or array/object indices. For example: 49 | 50 | ```js 51 | for ( var i = 0; i < data.length; i++ ) { // This block is wrong! 52 | if ( data[ i ] > 1 ) { 53 | data[ i ] = 2; 54 | } 55 | } 56 | 57 | for (var i = 0; i < data.length; i++) { // This block is correct! 58 | if (data[i] > 1) { 59 | data[i] = 2; 60 | } 61 | } 62 | ``` 63 | 64 | #### Comments #### 65 | 66 | Use [jsDoc](http://usejsdoc.org) comments for all file and function headers. 67 | Use // for all inline and block comments, regardless of length. 68 | 69 | All // comment blocks should have an empty line above *and* below them. For 70 | example: 71 | 72 | ```js 73 | var a = 5; 74 | 75 | // We're going to loop here 76 | // TODO: Make this loop faster, better, stronger! 77 | 78 | for (var x = 0; x < 10; x++) {} 79 | ``` 80 | 81 | #### Wrapping #### 82 | 83 | Block comments should be wrapped at 80 characters. 84 | 85 | Code should attempt to wrap at 80 characters, but may run longer if wrapping 86 | would hurt readability more than having to scroll horizontally. This is a 87 | judgement call made on a situational basis. 88 | 89 | Statements containing complex logic should not be wrapped arbitrarily if they 90 | do not exceed 80 characters. For example: 91 | 92 | ```js 93 | if (a == 1 && // This block is wrong! 94 | b == 2 && 95 | c == 3) {} 96 | 97 | if (a == 1 && b == 2 && c == 3) {} // This block is correct! 98 | ``` 99 | -------------------------------------------------------------------------------- /flot/examples/interacting/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Interactivity 6 | 7 | 8 | 9 | 10 | 87 | 88 | 89 | 92 | 93 |
    94 | 95 |
    96 |
    97 |
    98 | 99 |

    One of the goals of Flot is to support user interactions. Try pointing and clicking on the points.

    100 | 101 |

    102 | 103 | 104 | 105 |

    106 | 107 |

    A tooltip is easy to build with a bit of jQuery code and the data returned from the plot.

    108 | 109 |

    110 | 111 |
    112 | 113 | 116 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /flot/examples/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples 6 | 7 | 15 | 16 | 17 | 27 | 28 | 29 | 30 | 33 | 34 |
    35 | 36 |

    Here are some examples for Flot, the Javascript charting library for jQuery:

    37 | 38 |

    Basic Usage

    39 | 40 | 46 | 47 |

    Interactivity

    48 | 49 | 56 | 57 |

    Additional Features

    58 | 59 | 72 | 73 |
    74 | 75 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/tz/leapseconds: -------------------------------------------------------------------------------- 1 | #
      2 | # This file is in the public domain, so clarified as of
      3 | # 2009-05-17 by Arthur David Olson.
      4 | 
      5 | # Allowance for leapseconds added to each timezone file.
      6 | 
      7 | # The International Earth Rotation Service periodically uses leap seconds
      8 | # to keep UTC to within 0.9 s of UT1
      9 | # (which measures the true angular orientation of the earth in space); see
     10 | # Terry J Quinn, The BIPM and the accurate measure of time,
     11 | # Proc IEEE 79, 7 (July 1991), 894-905.
     12 | # There were no leap seconds before 1972, because the official mechanism
     13 | # accounting for the discrepancy between atomic time and the earth's rotation
     14 | # did not exist until the early 1970s.
     15 | 
     16 | # The correction (+ or -) is made at the given time, so lines
     17 | # will typically look like:
     18 | #	Leap	YEAR	MON	DAY	23:59:60	+	R/S
     19 | # or
     20 | #	Leap	YEAR	MON	DAY	23:59:59	-	R/S
     21 | 
     22 | # If the leapsecond is Rolling (R) the given time is local time
     23 | # If the leapsecond is Stationary (S) the given time is UTC
     24 | 
     25 | # Leap	YEAR	MONTH	DAY	HH:MM:SS	CORR	R/S
     26 | Leap	1972	Jun	30	23:59:60	+	S
     27 | Leap	1972	Dec	31	23:59:60	+	S
     28 | Leap	1973	Dec	31	23:59:60	+	S
     29 | Leap	1974	Dec	31	23:59:60	+	S
     30 | Leap	1975	Dec	31	23:59:60	+	S
     31 | Leap	1976	Dec	31	23:59:60	+	S
     32 | Leap	1977	Dec	31	23:59:60	+	S
     33 | Leap	1978	Dec	31	23:59:60	+	S
     34 | Leap	1979	Dec	31	23:59:60	+	S
     35 | Leap	1981	Jun	30	23:59:60	+	S
     36 | Leap	1982	Jun	30	23:59:60	+	S
     37 | Leap	1983	Jun	30	23:59:60	+	S
     38 | Leap	1985	Jun	30	23:59:60	+	S
     39 | Leap	1987	Dec	31	23:59:60	+	S
     40 | Leap	1989	Dec	31	23:59:60	+	S
     41 | Leap	1990	Dec	31	23:59:60	+	S
     42 | Leap	1992	Jun	30	23:59:60	+	S
     43 | Leap	1993	Jun	30	23:59:60	+	S
     44 | Leap	1994	Jun	30	23:59:60	+	S
     45 | Leap	1995	Dec	31	23:59:60	+	S
     46 | Leap	1997	Jun	30	23:59:60	+	S
     47 | Leap	1998	Dec	31	23:59:60	+	S
     48 | Leap	2005	Dec	31	23:59:60	+	S
     49 | Leap	2008	Dec	31	23:59:60	+	S
     50 | Leap	2012	Jun	30	23:59:60	+	S
     51 | 
     52 | # INTERNATIONAL EARTH ROTATION AND REFERENCE SYSTEMS SERVICE (IERS)
     53 | #
     54 | # SERVICE INTERNATIONAL DE LA ROTATION TERRESTRE ET DES SYSTEMES DE REFERENCE
     55 | #
     56 | #
     57 | # SERVICE DE LA ROTATION TERRESTRE
     58 | # OBSERVATOIRE DE PARIS
     59 | # 61, Av. de l'Observatoire 75014 PARIS (France)
     60 | # Tel.      : 33 (0) 1 40 51 22 26
     61 | # FAX       : 33 (0) 1 40 51 22 91
     62 | # e-mail    : (E-Mail Removed)
     63 | # http://hpiers.obspm.fr/eop-pc
     64 | #
     65 | # Paris, 5 January 2012
     66 | #
     67 | #
     68 | # Bulletin C 43
     69 | #
     70 | # To authorities responsible
     71 | # for the measurement and
     72 | # distribution of time
     73 | #
     74 | #
     75 | # UTC TIME STEP
     76 | # on the 1st of July 2012
     77 | #
     78 | #
     79 | # A positive leap second will be introduced at the end of June 2012.
     80 | # The sequence of dates of the UTC second markers will be:
     81 | #
     82 | #                          2012 June 30,     23h 59m 59s
     83 | #                          2012 June 30,     23h 59m 60s
     84 | #                          2012 July  1,      0h  0m  0s
     85 | #
     86 | # The difference between UTC and the International Atomic Time TAI is:
     87 | #
     88 | # from 2009 January 1, 0h UTC, to 2012 July 1  0h UTC  : UTC-TAI = - 34s
     89 | # from 2012 July 1,    0h UTC, until further notice    : UTC-TAI = - 35s
     90 | #
     91 | # Leap seconds can be introduced in UTC at the end of the months of December
     92 | # or June, depending on the evolution of UT1-TAI. Bulletin C is mailed every
     93 | # six months, either to announce a time step in UTC or to confirm that there
     94 | # will be no time step at the next possible date.
     95 | #
     96 | #
     97 | # Daniel GAMBIS
     98 | # Head
     99 | # Earth Orientation Center of IERS
    100 | # Observatoire de Paris, France
    101 | 
    
    
    --------------------------------------------------------------------------------
    /index.php:
    --------------------------------------------------------------------------------
      1 | .
     20 |     
     21 |     */
     22 | ?>
     23 | 
     50 | 
     51 | 
     52 | 
     53 | 
     54 |  
     55 | 
     56 | 
     57 | 
     58 | 
     59 | 
     60 | 
     61 | 
     62 | 
     63 | 
     64 | 
     65 | 
     66 |  
     67 | 
     68 | 
     69 | 
     70 | 
     71 | 
     72 |  
     73 | 
     74 | 
     75 | 
     76 | 
     77 | 
     78 | 
     79 | 
     80 | 
     81 | 
     82 |  get route 
     84 | if ( isset( $_GET["id"] ) || isset( $_POST["id"] ) ) 
     85 | {
     86 | 	$route = new Route();
     87 | 	
     88 | 	// get data
     89 | 	$route -> getData();
     90 | 	$route -> train =  new Train();
     91 | 	$route -> loadXml();
     92 | 	$route -> loadRelationWays();
     93 | 	$route -> calculateSpeed();
     94 | 	$route -> sortStops();
     95 | 	$route -> output();
     96 | 	showAbout();
     97 | }
     98 | // route is not defined -> possibility to show route
     99 | else 
    100 | {
    101 | 	start();
    102 | 	Search::showSearchResult();
    103 | 	showAbout();
    104 | }
    105 | 	?>
    106 | 
    107 | 
    
    
    --------------------------------------------------------------------------------
    /functions/signals/blockkennzeichen.php:
    --------------------------------------------------------------------------------
      1 | .
     20 |     
     21 |     */
     22 | ?>
     23 | state_main = "";
     73 | 	}
     74 | 	
     75 | 	/**
     76 | 	 * generate image
     77 | 	 * @param $tags array tags of the signal
     78 | 	 */
     79 | 	public static function generateImage($height)
     80 | 	{
     81 | 		$ref = "";
     82 | 		if( isset($_GET["ref"]) )
     83 | 		{
     84 | 			$ref = $_GET["ref"];
     85 | 		}
     86 | 		$show_ref = "";
     87 | 		$font_size = 20;
     88 | 		$y = 27;
     89 | 		if ( strlen($ref) <= 5 && $ref > 0 && !strstr($ref, " ") ) // number with 5 digits or less and no spaces
     90 | 		{
     91 | 			$show_ref = $ref;
     92 | 			if ( strlen($ref) == 5 )
     93 | 			{
     94 | 				$font_size = 12;
     95 | 				$y = 25;
     96 | 			}
     97 | 			elseif ( strlen($ref) == 4 )
     98 | 			{
     99 | 				$font_size = 13;
    100 | 				$y = 25;
    101 | 			}
    102 | 		}
    103 | 		else
    104 | 		{
    105 | 			$refs = explode(" ", $ref);
    106 | 			if( count($refs) == 2 && $refs[0] > 0 && $refs[1] > 0 && strlen ( $refs[0] ) <= 4 && strlen ( $refs[1] ) <= 4 ) // 2 numbers with space in between with 4 digits or less each
    107 | 			{
    108 | 				$show_ref = '' . $refs[0] . '' . $refs[1] . '';
    109 | 			}
    110 | 		}
    111 | 		$image = '
    112 | 			
    113 | 				
    114 |     		
    115 |     			' . $show_ref . '
    116 | 			';
    117 | 		$height = 40;
    118 | 		return array($image, $height);
    119 | 	}
    120 | }
    
    
    --------------------------------------------------------------------------------
    /functions/signals/speed_distant.php:
    --------------------------------------------------------------------------------
      1 | .
     20 |     
     21 |     */
     22 | ?>
     23 | tags = $tags;
     52 | 	}
     53 | 
     54 | 	/**
     55 | 	 * return possible speeds the signal can show
     56 | 	 * @return Array(int)
     57 | 	 */
     58 | 	public function possibleSpeedsDistant()
     59 | 	{
     60 | 		if(isset($this->tags["railway:signal:speed_limit_distant:speed"]))
     61 | 		{
     62 | 			$speed_array = Signals::signalStates($this->tags["railway:signal:speed_limit_distant:speed"],"",false);
     63 | 			$speed_array = str_replace("off", -1, $speed_array);
     64 | 		}
     65 | 		else
     66 | 		{
     67 | 			$speed_array[]=-1;
     68 | 		}
     69 | 		$this->states = $speed_array;
     70 | 		return $speed_array;
     71 | 	}
     72 | 	
     73 | 	public function setSpeedDistant($signal_speed)
     74 | 	{
     75 | 		$this->speed_distant = $signal_speed;
     76 | 	}
     77 | 
     78 | 	public function getStateDistant()
     79 | 	{
     80 | 		$this->state_distant = "";
     81 | 	}
     82 | 
     83 | 	/**
     84 | 	 * set shown speed for signal
     85 | 	 */
     86 | 	public function getSpeedDistant()
     87 | 	{
     88 | 		if(!$this->states) //Call function in case there is no main signal that called it.
     89 | 		{
     90 | 			$this->possibleSpeedsDistant();	
     91 | 		}
     92 | 		if(in_array($this->speed_distant, $this->states))
     93 | 		{
     94 | 			$this->speed_distant = $this->speed_distant;
     95 | 		}
     96 | 		else
     97 | 		{
     98 | 			$this->speed_distant = "off";
     99 | 		}
    100 | 	}
    101 | 	
    102 | 
    103 | 	/**
    104 | 	 * returns description of the signals
    105 | 	 * @return description for signal
    106 | 	 */
    107 | 	public function showDescription($signal,$type)
    108 | 	{
    109 | 		if( isset($this->tags["railway:signal:distant"]) || isset($this->tags["railway:signal:combined"]) )
    110 | 		{
    111 | 			$description = Lang::l_(" with ");
    112 | 		}
    113 | 		else
    114 | 		{
    115 | 			$description = "";
    116 | 		}
    117 | 		$description .= $signal;
    118 | 		$description .= Lang::l_(" Distant Speed Signal");
    119 | 		if($this->states)
    120 | 		{
    121 | 			$description .= " (";
    122 | 			foreach($this->states as $speed)
    123 | 			{
    124 | 				$speed = str_replace(-1, "off", $speed);
    125 | 				if($speed == $this->speed_distant)
    126 | 				{
    127 | 					$speed = "" . $speed . "";
    128 | 				}
    129 | 				$description .= $speed . ", ";
    130 | 			}
    131 | 			$description = substr($description,0, strlen($description)-2);
    132 | 			$description .= ")";
    133 | 		}
    134 | 		else 
    135 | 		{
    136 | 			$description .= " (".Lang::l_("unknown speeds").")";
    137 | 		}
    138 | 		
    139 | 		return $description;
    140 | 	}
    141 | }
    142 | ?>
    
    
    --------------------------------------------------------------------------------
    /flot/jquery.flot.canvas.min.js:
    --------------------------------------------------------------------------------
    1 | /* Javascript plotting library for jQuery, version 0.8.3.
    2 | 
    3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
    4 | Licensed under the MIT license.
    5 | 
    6 | */
    7 | (function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
     
    ").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
    |\r\n|\r/g,"\n").split("\n");for(var i=0;i. 20 | 21 | */ 22 | ?> 23 | 24 | everything is ok 65 | { 66 | if( $status_code == 400 ) // 400 Bad Request -> syntax error 67 | { 68 | self::$error = Lang::l_("Invalid Overpass API query."); 69 | //log error to send a correct query next time: 70 | $msg = "Invalid Overpass API request. Query: " . $query; 71 | log_error($msg); 72 | } 73 | elseif( $status_code == 429 ) // 429 Too Many Requests -> too many requests from same ip 74 | { 75 | self::$error = Lang::l_("Too many requests to Overpass API at the same time."); 76 | } 77 | elseif( $status_code == 504 ) // 504 Gateway Timeout -> too much load on server 78 | { 79 | self::$error = Lang::l_("Overpass API currently overcrowded."); 80 | } 81 | else 82 | { 83 | self::$error = Lang::l_("Unknown Error."); 84 | //log error to show a proper error message next time: 85 | $msg = "Unknown Error when requesting overpass api: " . $http_response_header[0] . " | URI: " . $link; 86 | log_error($msg); 87 | } 88 | return false; 89 | } 90 | } 91 | else 92 | { 93 | self::$error = Lang::l_("Connection failed."); 94 | return false; 95 | } 96 | 97 | if( !$content ) 98 | { 99 | self::$error = Lang::l_("Empty result."); 100 | return false; 101 | } 102 | 103 | self::$result = $content; 104 | return true; 105 | } 106 | 107 | 108 | /** 109 | * extracts the status code from the http_response_header 110 | * @param String $http_response_code 111 | * @return int status code 112 | */ 113 | static function getStatusCode($http_response_code) 114 | { 115 | $matches = array(); 116 | preg_match('#HTTP/\d+\.\d+ (\d+)#', $http_response_code, $matches); 117 | return $matches[1]; 118 | } 119 | } 120 | -------------------------------------------------------------------------------- /flot/examples/tracking/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Tracking 6 | 7 | 8 | 9 | 10 | 11 | 109 | 110 | 111 | 112 | 115 | 116 |
    117 | 118 |
    119 |
    120 |
    121 | 122 |

    You can add crosshairs that'll track the mouse position, either on both axes or as here on only one.

    123 | 124 |

    If you combine it with listening on hover events, you can use it to track the intersection on the curves by interpolating the data points (look at the legend).

    125 | 126 |

    127 | 128 |
    129 | 130 | 133 | 134 | 135 | 136 | -------------------------------------------------------------------------------- /functions/signals/speed.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | tags = $tags; 64 | } 65 | 66 | /** 67 | * return possible speeds the signal can show 68 | * @return Array(int) 69 | */ 70 | public function possibleSpeedsMain($speed) 71 | { 72 | return $this->possibleSpeeds(); 73 | } 74 | 75 | public function getStateMain() 76 | { 77 | $this->state_main = ""; 78 | } 79 | 80 | /** 81 | * return possible speeds the signal can show 82 | * @return Array(int) 83 | */ 84 | public function possibleSpeeds() 85 | { 86 | if(isset($this->tags["railway:signal:speed_limit:speed"])) 87 | { 88 | $speed_array = Signals::signalStates($this->tags["railway:signal:speed_limit:speed"],"",false); 89 | $speed_array = str_replace("off", -1, $speed_array); 90 | } 91 | else 92 | { 93 | $speed_array[]=-1; 94 | } 95 | $this->states = $speed_array; 96 | return $speed_array; 97 | } 98 | 99 | /** 100 | * set Speed for signal 101 | * @var speed speed of signal 102 | */ 103 | public function setSpeedMain($speed) 104 | { 105 | $this->speed_main = $speed; 106 | } 107 | 108 | /** 109 | * set shown speed for signal 110 | */ 111 | public function getSpeed() 112 | { 113 | if(in_array($this->speed_main, $this->states)) 114 | { 115 | $this->speed = $this->speed_main; 116 | } 117 | else 118 | { 119 | $this->speed = "off"; 120 | } 121 | } 122 | 123 | 124 | /** 125 | * returns description of the signals 126 | * @return description for signal 127 | */ 128 | public function showDescription($signal,$type) 129 | { 130 | if( isset($this->tags["railway:signal:main"]) || isset($this->tags["railway:signal:combined"]) ) 131 | { 132 | $description = Lang::l_(" with "); 133 | } 134 | else 135 | { 136 | $description = ""; 137 | } 138 | $description .= $signal; 139 | $description .= Lang::l_(" Speed Signal"); 140 | if($this->states) 141 | { 142 | $description .= " ("; 143 | foreach($this->states as $speed) 144 | { 145 | $speed = str_replace(-1, "off", $speed); 146 | if($speed == $this->speed) 147 | { 148 | $speed = "" . $speed . ""; 149 | } 150 | $description .= $speed . ", "; 151 | } 152 | $description = substr($description,0, strlen($description)-2); // remove commata 153 | $description .= ")"; 154 | } 155 | 156 | return $description; 157 | } 158 | } 159 | ?> -------------------------------------------------------------------------------- /flot/examples/axes-time-zones/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Time zones 6 | 7 | 8 | 9 | 10 | 11 | 12 | 83 | 84 | 85 | 86 | 89 | 90 |
    91 | 92 |

    UTC

    93 |
    94 |
    95 |
    96 | 97 |

    Browser

    98 |
    99 |
    100 |
    101 | 102 |

    Chicago

    103 |
    104 |
    105 |
    106 | 107 |
    108 | 109 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /functions/signals/hv_main_semaphore.php: -------------------------------------------------------------------------------- 1 | . 20 | 21 | */ 22 | ?> 23 | '; 62 | $rotate_hp1 = $rotate_hp2_light = ""; 63 | $light_hp2 = ''; 64 | $rotate_hp2 = ' transform="rotate(-90 9 57)"'; 65 | if( isset ( $_GET["state_main"] ) && ( $_GET["state_main"] == "hp1" || $_GET["state_main"] == "hp2" ) ) 66 | { 67 | $rotate_hp1 = ' transform="rotate(-45 9 22)"'; 68 | $light_hp1 = ''; 69 | } 70 | if( isset ( $_GET["state_main"] ) && $_GET["state_main"] == "hp2") 71 | { 72 | $rotate_hp2 = ' transform="rotate(-45 9 57)"'; 73 | $rotate_hp2_light = ' transform="rotate(-45 9 57)"'; 74 | $light_hp2 = ''; 75 | } 76 | 77 | $image = ' 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | ' . $light_hp1 . ' 87 | 88 | '; 89 | if( isset($_GET["railway:signal:main:states"]) && strpos( $_GET["railway:signal:main:states"], "hp2" )) 90 | { 91 | $image .= ' 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | ' . $light_hp2 . ' 100 | 101 | '; 102 | } 103 | $image .= ' 104 | '; 105 | $height = 70; 106 | return array($image, $height); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /flot/examples/zooming/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Flot Examples: Selection and zooming 6 | 7 | 8 | 9 | 10 | 11 | 121 | 122 | 123 | 124 | 127 | 128 |
    129 | 130 |
    131 |
    132 |
    133 |
    134 | 135 |

    Selection support makes it easy to construct flexible zooming schemes. With a few lines of code, the small overview plot to the right has been connected to the large plot. Try selecting a rectangle on either of them.

    136 | 137 |
    138 | 139 | 142 | 143 | 144 | 145 | --------------------------------------------------------------------------------