Ero sivun ”Järjestelmäviesti:Common.js” versioiden välillä
Järvi-meriwikistä
Rivi 1: | Rivi 1: | ||
− | var queryApi = '/w/api.php'; // 'http://' + window.location.hostname + '/w/api.php'; | + | var queryApi = 'https://www.jarviwiki.fi/w/api.php'; // 'http://' + window.location.hostname + '/w/api.php'; |
var jwMapSiteStyleCache = {}; | var jwMapSiteStyleCache = {}; | ||
Nykyinen versio 16. maaliskuuta 2021 kello 11.48
var queryApi = 'https://www.jarviwiki.fi/w/api.php'; // 'http://' + window.location.hostname + '/w/api.php';
var jwMapSiteStyleCache = {};
var epsg4326;
var mapProjStr = "3857";
var projectTo;
var currentPopup = null;
var orgMapHeight;
var orgZindex;
//var jwLayerSelector;
function jwMakeMap(jwMapId) {
var locate = false;
var tools = 'info_drag';
var toolsArr = tools.split('_');
map = jwMakeMapNew(jwMapId);
jwAddMapNavigation(map);
jwAddMapTools(map, toolsArr);
//jwAddControlFullscreen(map);
jwAddMapLayerSwitcher(map);
//jwStyleControls(jwMapId);
return map;
}
function jwMakeMapNew(jwMapId) {
epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
projectTo = new OpenLayers.Projection("EPSG:" + mapProjStr); // Map proj
jQuery('#' + jwMapId + '_container').append('<div id="' + jwMapId + '" style="height: 100%; background-color: #ffffff; "></div>');
var target = document.getElementById(jwMapId);
//map object
var options = {
projection: "EPSG:" + mapProjStr,
units: "m",
controls: [
//new OpenLayers.Control.Zoom(),
//new OpenLayers.Control.ZoomBox(),
//new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }),
//new OpenLayers.Control.LayerSwitcher({'ascending': false }),
new OpenLayers.Control.Attribution(),
jwLayerSelector = new OpenLayers.Control.SelectFeature([])
//new OpenLayers.Control.Fullscreen()
]
};
var map = new OpenLayers.Map( jwMapId, options );
map.selector = jwLayerSelector;
return map;
}
function jwAddMapNavigation(map) {
map.addControl(new OpenLayers.Control.Zoom());
map.addControl(new OpenLayers.Control.PanPanel());
}
function jwAddMapLayerSwitcher(map) {
//map.addControl(new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }));
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending': false }));
}
function jwAddMapTools(map, toolsArr) {
if (toolsArr == undefined) { toolsArr = new Array('0info', 'drag'); }
var btnArr = new Array();
var context = {
getZIndex: function(feature) {
return (feature.geometry instanceof OpenLayers.Geometry.Point) ? 1 : 0;
}
}
var style = OpenLayers.Util.applyDefaults({
graphicWidth: 26,
graphicHeight: 32,
graphicYOffset: -32,
graphicOpacity: 1,
graphicZIndex: "${getZIndex}",
externalGraphic: '/w/images/7/7b/Pm_havaintopaikka.png',
}, OpenLayers.Feature.Vector.style['default']);
var temporarystyle = OpenLayers.Util.applyDefaults({}, OpenLayers.Feature.Vector.style['temporary']);
var styleMap = new OpenLayers.StyleMap({
"default": new OpenLayers.Style(style, {context: context}),
"temporary": new OpenLayers.Style(temporarystyle, {context: context})
});
var shapeLayer = new OpenLayers.Layer.Vector( "User shapes", { styleMap: styleMap, 'displayInLayerSwitcher': false } );
map.addLayer( shapeLayer );
//map.setLayerIndex(shapeLayer, 10000);
shapeLayer.addOptions({ popuppable: false, zIndex: 1000 }, false);
doLayers(map);
var SinglePoint = OpenLayers.Class(OpenLayers.Handler.Point, {});
var Path = OpenLayers.Class(OpenLayers.Handler.Path, {
addPoint: function(pixel) {
var r = true;
if (this.control.layer.features.length > 0) {
if (typeof this.control.layer.features[0].geometry.components !== 'undefined') {
if (this.control.layer.features[0].geometry.components[0].components.length > 10) {
r = confirm("Olet aloittamassa uuden viivan piirtämistä, jolloin vanha alue tai viiva poistetaan. Haluatko jatkaa?");
}
}
} else {
OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
}
if (r) {
this.control.layer.removeFeatures(this.control.layer.features);
OpenLayers.Handler.Path.prototype.addPoint.apply(this, arguments);
clearDrawings();
}
}
});
var Polygon = OpenLayers.Class(OpenLayers.Handler.Polygon, {
addPoint: function(pixel) {
var r = true;
if (this.control.layer.features.length > 0) {
if (typeof this.control.layer.features[0].geometry.components !== 'undefined') {
if (this.control.layer.features[0].geometry.components[0].components.length > 10) {
r = confirm("Olet aloittamassa uuden alueen piirtämistä, jolloin vanha alue poistetaan. Haluatko jatkaa?");
}
}
} else {
OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
}
if (r) {
this.control.layer.removeFeatures(this.control.layer.features);
OpenLayers.Handler.Polygon.prototype.addPoint.apply(this, arguments);
clearDrawings();
}
}
});
var drawControls = {
info: map.selector,
drag: new OpenLayers.Control.Navigation(),
point: new OpenLayers.Control.DrawFeature(shapeLayer, SinglePoint),
line: new OpenLayers.Control.DrawFeature(shapeLayer, Path),
polygon: new OpenLayers.Control.DrawFeature(shapeLayer, Polygon),
edit: new OpenLayers.Control.ModifyFeature(shapeLayer, OpenLayers.Handler.Modify),
del: new OpenLayers.Control.SelectFeature(shapeLayer, { hover: true, highlightOnly: true } ),
del2: new OpenLayers.Control.SelectFeature(shapeLayer, { onSelect: deleteOnSelect } )
};
drawControls['point'].handler.callbacks.done = function(data) {
var r = true;
if (this.layer.features.length > 0) {
if (typeof this.layer.features[0].geometry.components !== 'undefined') {
if (this.layer.features[0].geometry.components[0].components.length > 10) {
r = confirm("Olet merkitsemässä karttaan uutta paikkaa, jolloin äsken piirtämäsi alue tai viiva poistetaan. Haluatko jatkaa?");
}
}
}
if (r) {
this.layer.removeFeatures(this.layer.features);
this.drawFeature(data);
saveDrawings();
}
}
drawControls['polygon'].handler.callbacks.done = function(data) {
this.drawFeature(data);
saveDrawings();
}
drawControls['line'].handler.callbacks.done = function(data) {
this.drawFeature(data);
saveDrawings();
}
for(var key in drawControls) {
map.addControl(drawControls[key]);
}
var drawPanel = new OpenLayers.Control.Panel({
displayClass: 'olControlDrawEdit',
createControlMarkup: function(control) {
var button = document.createElement('div');
var bg = document.createElement('div');
bg.className = 'olButtonBg';
button.appendChild(bg);
var icon = document.createElement('div');
icon.className = 'olButtonIcon';
button.appendChild(icon);
return button;
}
});
var defaultTool = -1;
var i = -1;
for (e in toolsArr) {
i++;
tool = toolsArr[e];
if (tool.charAt(0) == '0') {
t = tool.replace("0", "");
defaultTool = i;
} else {
t = tool;
}
if (t == 'drag') {
var dragPanBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlDragPanBtn ',
title: 'Drag the map',
control: [drawControls.drag],
trigger: function() { toggleControl(dragPanBtn); }
});
drawPanel.addControls([ dragPanBtn ] );
btnArr.push(dragPanBtn);
} else if (t == 'info') {
var infoBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlInfoBtn ',
title: 'Select from map',
control: [drawControls.info],
trigger: function() { toggleControl(infoBtn); }
});
drawPanel.addControls([ infoBtn ] );
btnArr.push(infoBtn);
} else if (t == 'point') {
var pointBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlPointBtn ',
title: 'Draw a single point on the map',
control: [drawControls.point],
trigger: function() { toggleControl(pointBtn); }
});
drawPanel.addControls([ pointBtn ] );
btnArr.push(pointBtn);
} else if (t == 'path') {
var lineBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlLineBtn ',
title: 'Draw a line on the map',
control: [drawControls.line],
trigger: function() { toggleControl(lineBtn); }
});
drawPanel.addControls([ lineBtn ] );
btnArr.push(lineBtn);
} else if (t == 'polygon') {
var polygonBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlPolygonBtn ',
title: 'Draw a polygon on the map',
control: [drawControls.polygon],
trigger: function() { toggleControl(polygonBtn); }
});
drawPanel.addControls([ polygonBtn ] );
btnArr.push(polygonBtn);
} else if (t == 'edit') {
var editBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlEditBtn ',
title: 'Edit user added shapes on map',
control: [drawControls.edit],
trigger: function() { toggleControl(editBtn); }
});
drawPanel.addControls([ editBtn ] );
btnArr.push(editBtn);
} else if (t == 'delete') {
var deleteBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_BUTTON,
displayClass: 'olControlDeleteBtn ',
title: 'Delete user added shapes from the map',
control: [drawControls.del, drawControls.del2],
trigger: function() { toggleControl(deleteBtn); }
});
drawPanel.addControls([ deleteBtn ] );
btnArr.push(deleteBtn);
}
}
map.addControl( drawPanel );
if (defaultTool < 0) {
toggleControl(btnArr[0]);
} else {
toggleControl(btnArr[defaultTool]);
}
function toggleControl(btn) {
for (a in btnArr) {
btnArr[a].deactivate();
}
for (key in drawControls) {
drawControls[key].deactivate();
}
btn.activate();
for (k in btn.control) {
btn.control[k].activate();
}
}
function deleteOnSelect(f) {
shapeLayer.removeFeatures( [f] );
//saveDrawings();
}
//shapeLayer.events.register("featureadded", shapeLayer, saveDrawings );
shapeLayer.events.register("beforefeaturemodified", shapeLayer, clearDrawings);
shapeLayer.events.register("afterfeaturemodified", shapeLayer, saveDrawings);
shapeLayer.events.register("featureadded", shapeLayer, saveDrawings);
//drawControls['polygon'].events.register("featureadded", ' ' , saveDrawings);
//map.events.register("zoomend", map, saveDrawings);
loadDrawings();
function loadDrawings() {
var parent = jQuery(map.div).parents('.jwCoordsFromMap').first();
var wkt = parent.find('.jwWKT').first().val();
if (wkt != undefined) {
if (wkt != '') {
var in_options = {
'internalProjection': projectTo,
'externalProjection': epsg4326
};
var loadFormat = new OpenLayers.Format.WKT(in_options);
var wktFeatures = loadFormat.read(wkt);
shapeLayer.addFeatures(wktFeatures);
map.zoomToExtent(shapeLayer.getDataExtent());
}
}
}
function clearDrawings(x) {
jQuery('.jwCoordsFromMap .jwMuni').val('');
jQuery('.jwCoordsFromMap .jwWKT').val('');
jQuery('.jwCoordsFromMap .jwLat').val('');
jQuery('.jwCoordsFromMap .jwLon').val('');
jQuery('.jwCoordsFromMap .jwCoords').val('');
jQuery('.jwCoordsFromMap .jwZoom').val('');
jQuery('.jwCoordsFromMap .jwAreaVal').val('');
jQuery('.jwCoordsFromMap .jwAreaUnit').val('');
}
function saveDrawings(x) {
var out_options = {
'internalProjection': projectTo,
'externalProjection': epsg4326
};
var saveFormat = new OpenLayers.Format.WKT(out_options);
var wkt = "";
wkt += saveFormat.write(shapeLayer.features, true);
var Rargs = '';
var verticesArr = shapeLayer.features[0].geometry.getVertices();
for (v in verticesArr) {
point = new OpenLayers.Geometry.Point(verticesArr[v].x, verticesArr[v].y ).transform(projectTo, epsg4326);
Rargs += ' ' + point.x + ' ' + point.y;
}
var centerLonLat = shapeLayer.getDataExtent().getCenterLonLat().transform(projectTo, epsg4326);
Rargs += ' ' + centerLonLat.lon + ' ' + centerLonLat.lat;
Rargs = Rargs.trim();
//var searchStr = 'lon=' + centerLonLat.lon + '&lat=' + centerLonLat.lat;
var searchStr = 'Rargs=' + Rargs;
lastCalled = new Date();
jQuery.ajax({
type: 'POST',
url: '/common/jwCoordinateIn.php',
data: searchStr,
success: success,
called: lastCalled,
dataType: 'json'
});
var parent = jQuery(map.div).parents('.jwCoordsFromMap').first();
if (shapeLayer.features[0].geometry.getArea() > 0) {
var area = shapeLayer.features[0].geometry.getGeodesicArea(projectTo) / 10000;
area = Math.round(area*100)/100;
parent.find('.jwAreaVal').first().val(area);
parent.find('.jwAreaUnit').first().val('ha');
}
parent.find('.jwWKT').first().val(wkt);
parent.find('.jwLat').first().val(centerLonLat.lat);
parent.find('.jwLon').first().val(centerLonLat.lon);
parent.find('.jwCoords').first().val(centerLonLat.lat + ', ' + centerLonLat.lon);
parent.find('.jwZoom').first().val(map.getZoom());
parent.find('.jwAreaVal').first().val(area);
parent.find('.jwAreaUnit').first().val('ha');
function success(request) {
if (this.called == lastCalled) {
jQuery('.jwMuni').val(request.kunta);
}
}
}
}
function jwMakeMapX(jwMapId) {
epsg4326 = new OpenLayers.Projection("EPSG:4326"); //WGS 1984 projection
projectTo = new OpenLayers.Projection("EPSG:" + mapProjStr); // Map proj
jQuery('#' + jwMapId + '_container').append('<div id="' + jwMapId + '" style="height: 100%; background-color: #ffffff; "></div>');
var target = document.getElementById(jwMapId);
//map object
var options = {
projection: "EPSG:" + mapProjStr,
units: "m",
controls: [
new OpenLayers.Control.Zoom(),
new OpenLayers.Control.ZoomBox(),
//new OpenLayers.Control.LayerSwitcher({'div': 'olLayerSwitcherContainer', 'ascending': false }),
new OpenLayers.Control.LayerSwitcher({'ascending': false }),
new OpenLayers.Control.Attribution(),
jwLayerSelector = new OpenLayers.Control.SelectFeature([])
//new OpenLayers.Control.Fullscreen()
]
};
var map = new OpenLayers.Map( jwMapId, options );
map.selector = jwLayerSelector;
return map;
}
function jwStyleControls(jwMapId) {
jQuery('#' + jwMapId + ' .maximizeDiv').append('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
jQuery('#' + jwMapId + ' .minimizeDiv').append('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
jQuery('#' + jwMapId + ' .olControlZoomIn').html('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
jQuery('#' + jwMapId + ' .olControlZoomOut').html('<div class="olButtonBg"></div><div class="olButtonIcon"></div>');
}
var closecallback = function(e) {
this.hide();
OpenLayers.Event.stop(e);
this.map.selector.unselectAll();
}
function doLayers(map) {
map.selector.deactivate();
map.selector.setLayer(map.getLayersBy("popuppable", true));
map.selector.activate();
var zLayers = map.getLayersBy("zIndex", new RegExp("[0-9]"));
var lrOptions;
zLayers.sort(function(a, b){return a.options.zIndex - b.options.zIndex});
for (var i in zLayers) {
lrOptions = zLayers[i].getOptions();
zLayers[i].setZIndex(lrOptions.zIndex);
map.setLayerIndex(zLayers[i], lrOptions.zIndex);
}
}
function jwAddSeaAreas(options) {
var searchStr = 'action=ask&query=[[Luokka:Merialue]]' + options.query;
searchStr += '&format=json';
function gotIt(siteReq) {
if (siteReq.query.results != undefined) {
var alueetArr = new Array();
for (i in siteReq.query.results) {
alueetArr.push(siteReq.query.results[i].fulltext);
}
jwAddBalticDivisions(options.map, options.lang, alueetArr, options.zoomTo, options.popup, options.zIndex);
}
}
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
success: gotIt,
dataType: 'jsonp',
cache: false
});
}
function jwAddMuni(options) {
var map = options.map;
var searchStr = 'action=ask&query=[[Luokka:Kunta]][[Koordinaatit::%2B]]' + options.query; //.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('|?Koordinaatit|?KoordPohj');
searchStr += '&format=json';
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
success: gotIt,
dataType: 'jsonp',
cache: false
});
function gotIt(siteReq) {
if (siteReq.query.results != undefined) {
first = true;
for (i in siteReq.query.results) {
if (first) {
first = false;
var sites = new OpenLayers.Layer.Vector('Kunnat', {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(sites);
sites.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
doLayers(map);
}
site = siteReq.query.results[i];
title = site.fulltext;
uri = site.fullurl;
coordP = site.printouts.Koordinaatit[0].lat;
coordE = site.printouts.Koordinaatit[0].lon;
popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
addJwMarker(sites, '', ll, popupContent, 'kunta', null, null, options.size);
if (options.zoomTo) {
if (options.zoom == undefined) {
map.zoomToExtent(sites.getDataExtent());
} else {
map.setCenter(sites.getDataExtent().getCenterLonLat(), options.zoom);
}
}
}
}
}
}
function jwAddAnyPages(options) {
if (options.popup == undefined) { options.popup = true; }
var map = options.map;
var searchStr = 'action=ask&query=[[Koordinaatit::%2B]]' + decodeURI(options.query);
searchStr += ('|?Koordinaatit|?Ylläpito|?Luokka|limit=1000');
searchStr += '&format=json';
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
success: gotPages,
dataType: 'jsonp',
cache: false,
options: options
});
//console.log(searchStr);
function gotPages(siteReq) {
if (!!siteReq.query.results) {
var sites = new OpenLayers.Layer.Vector(options.layerName, {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(sites);
sites.addOptions({ popuppable: this.options.popup, zIndex: this.options.zIndex }, false);
doLayers(map);
for (i in siteReq.query.results) {
site = siteReq.query.results[i];
title = site.fulltext;
uri = site.fullurl;
coordP = site.printouts.Koordinaatit[0].lat;
coordE = site.printouts.Koordinaatit[0].lon;
cats = site.printouts.Luokka;
if (!options.type) {
types = '*';
for (c in cats) {
types += cats[c].fulltext.replace('Luokka:', '');
}
//console.log(title);
//console.log(types);
if (types.indexOf('Havaintopaikka')>0) { type = 'obsSite'; }
else if (types.indexOf('Tapahtuma')>0) { type = 'event'; }
else if (types.indexOf('Valokuva')>0) { type = 'photo'; }
else if (types.indexOf('Järvi')>0) { type = 'lake'; }
else if (types.indexOf('Merialue')>0) { type = 'merialue'; }
else if (types.indexOf('Kunta')>0) { type = 'kunta'; }
else { type = ''; }
this.options.type = type;
//console.log(type);
}
popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
//console.log(site.printouts);
addJwMarker(sites, site.printouts["Ylläpito"][0], ll, popupContent, this.options.type, null, null, this.options.size);
if (this.options.zoomTo) {
if (this.options.zoom == undefined) {
map.zoomToExtent(sites.getDataExtent());
} else {
map.setCenter(sites.getDataExtent().getCenterLonLat(), this.options.zoom);
}
}
}
}
}
}
function jwAddSites(map, query, z, size, lang, zoomTo, zoom) {
var searchStr = 'action=ask&query=[[Luokka:Paikka]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('|?Koordinaatit|?Ylläpito|?KoordPohj|limit=1000');
searchStr += '&format=json';
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
size: size,
lang: lang,
success: gotSites,
dataType: 'jsonp',
zoomTo: zoomTo,
zoom: zoom,
cache: false
});
function gotSites(siteReq) {
if (siteReq.query.results != undefined) {
var sites = new OpenLayers.Layer.Vector(JwSiteLabels('sites', lang), {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(sites);
sites.data = new Object();
sites.data.z = z;
sites.data.popup = true;
sites.addOptions({ popuppable: true, zIndex: z }, false);
doLayers(map);
var zi=0;
for (i in siteReq.query.results) {
site = siteReq.query.results[i];
title = site.fulltext;
uri = site.fullurl;
coordP = site.printouts.Koordinaatit[0].lat;
coordE = site.printouts.Koordinaatit[0].lon;
catSearchStr = 'action=query&titles=' + title + '&prop=categories&format=json';
function gotCats(catsReq) {
if (catsReq.query.pages != undefined) {
for (var cats in catsReq.query.pages) if (catsReq.query.pages.hasOwnProperty(cats)) break;
var catPhoto = false;
var catEvent = false;
var catObs = false;
var catAlg = false;
for (var ci in catsReq.query.pages[cats].categories) {
cat = catsReq.query.pages[cats].categories[ci].title;
if (cat == 'Luokka:Valokuva') { catPhoto = true; }
else if (cat == 'Luokka:Tapahtumapaikka') { catEvent = true; }
else if (cat == 'Luokka:Havaintopaikka') { catObs = true; }
else if (cat == 'Luokka:Valtakunnallinen leväseuranta' ) { catAlg = true; }
if (catAlg) { type = 'algMon'; }
else if (catObs) { type = 'obsSite'; }
else if (catEvent) { type = 'event'; }
else if (catPhoto) { type = 'photo'; }
else { type = ''; }
}
}
//console.log(type);
popupContent = '<a href="' + this.siteUri + '"><h3><span class="smaller">' + this.siteNameArr[0] + '</span><br />' + this.siteNameArr[1] + '</h3></a><hr>';
ll = new OpenLayers.LonLat( this.siteLon, this.siteLat ).transform(epsg4326, projectTo);
addJwMarker(sites, this.siteStatus, ll, popupContent, type, null, null, size);
if (this.zoomTo) {
if (this.zoom == undefined) {
map.zoomToExtent(sites.getDataExtent());
} else {
map.setCenter(sites.getDataExtent().getCenterLonLat(), this.zoom);
}
}
}
jQuery.ajax({
type: 'GET',
url: queryApi,
data: catSearchStr,
success: gotCats,
dataType: 'jsonp',
cache: false,
siteName: title,
siteNameArr: title.split('/'),
siteUri: uri,
siteLat: coordP,
siteLon: coordE,
siteStatus: site.printouts["Ylläpito"][0],
siteOrder: zi,
zoomTo: this.zoomTo,
zoom: this.zoom
});
zi++;
}
}
}
}
function jwAddLayerWKT(map, options) {
if (options.zIndex == undefined) { options.zIndex = 15; }
if (!!options.lang) { lang = options.lang; } else { lang = 'fi'; }
if (!!options.layerName) { layerName = options.layerName; } else { layerName = 'Layer'; }
var in_options = { 'internalProjection': projectTo, 'externalProjection': epsg4326 };
var WKTlayer = new OpenLayers.Layer.Vector(layerName, lang, {
eventListeners:{
'featureselected': function(evt) {
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt) {
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(WKTlayer);
WKTlayer.addOptions({ popuppable: false, zIndex: options.zIndex }, false);
doLayers(map);
var loadFormat = new OpenLayers.Format.WKT(in_options);
var wktFeatures = loadFormat.read(options.WKT);
//popupContent = 'Just testing';
//wktFeatures[0].data.popupContent = popupContent;
WKTlayer.addFeatures(wktFeatures);
if (options.zoomTo) { map.zoomToExtent(WKTlayer.getDataExtent()); }
}
function jwAddWKTlr(map, options, lang) {
// { WKT: {{{WKT|}}}, zIndex: 15, iconSize: '27x34', zoomTo: true });
if (options.zIndex == undefined) { options.zIndex = 15; }
var in_options = { 'internalProjection': projectTo, 'externalProjection': epsg4326 };
var searchStr = 'action=ask&query=' + options.query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('|?WKT|?Kunta|?Pinta-ala');
searchStr += '&format=json';
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
size: options.iconSize,
lang: lang,
zoomTo: options.zoomTo,
success: gotIt,
dataType: 'jsonp',
cache: false
});
function gotIt(request) {
if (request.query.results != undefined) {
var WKTlr = new OpenLayers.Layer.Vector(JwSiteLabels('lakes', lang), {
eventListeners:{
'featureselected': function(evt) {
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt) {
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(WKTlr);
WKTlr.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
doLayers(map);
var loadFormat = new OpenLayers.Format.WKT(in_options);
for (i in request.query.results) {
page = request.query.results[i];
WKT = page.printouts.WKT[0];
}
//console.log(page.printouts);
var wktFeatures = loadFormat.read(WKT);
popupContent = 'Just testing';
if (page.printouts['Pinta-ala'].length > 0) {
popupContent += 'Pinta-ala: ' + page.printouts['Pinta-ala'][0].value + ' ' + page.printouts['Pinta-ala'][0].unit;
}
var kunnatArr = new Array();
for (k in page.printouts.Kunta) {
kunta = page.printouts.Kunta[k];
kunnatArr.push('<a href="' + kunta.fullurl + '">' + kunta.fulltext + '</a>');
}
if (kunnatArr.length > 0) {
popupContent += 'Kunta: ' + kunnatArr.join(', ');
}
wktFeatures[0].data.popupContent = popupContent;
WKTlr.addFeatures(wktFeatures);
if (options.zoomTo) { map.zoomToExtent(WKTlr.getDataExtent()); }
}
}
}
function jwAddLakesNew(options) {
jwAddLakes(options.map, options.query, options.zIndex, options.size, options.lang, options.zoomTo);
}
function jwAddLakes(map, query, z, size, lang, zoomTo) {
var searchStr = 'action=ask&query=[[Luokka:J%C3%A4rvi]][[Koordinaatit::%2B]]' + query.split("&#39;").join("%27"); //.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('|?Koordinaatit|?KoordPohj|?Pinta-ala|?Kunta|sort=Pinta-ala|order=desc|limit=1000');
searchStr += '&format=json';
//console.log(searchStr);
jQuery.ajax({
type: 'POST',
url: queryApi,
data: searchStr,
size: size,
lang: lang,
zoomTo: zoomTo,
success: gotLakes,
dataType: 'jsonp',
cache: false
});
function gotLakes(siteReq) {
console.log(siteReq);
if (siteReq.query.results != undefined) {
var lakes = new OpenLayers.Layer.Vector(JwSiteLabels('lakes', lang), {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(lakes);
lakes.addOptions({ popuppable: true, zIndex: z }, false);
doLayers(map);
var zi=0;
for (i in siteReq.query.results) {
site = siteReq.query.results[i];
title = site.fulltext;
titleArr = title.split('/'),
uri = site.fullurl;
coordP = site.printouts.Koordinaatit[0].lat;
coordE = site.printouts.Koordinaatit[0].lon;
popupContent = '<a href="' + uri + '"><h3>' + title + '</h3></a><hr>';
popupContent += '<p>Pinta-ala: ' + site.printouts['Pinta-ala'][0].value + ' ' + site.printouts['Pinta-ala'][0].unit + '</p>';
popupContent += '<p>Kunta: ';
var kunnat = new Array();
for (k in site.printouts['Kunta']) {
kunta = site.printouts['Kunta'][k];
kunnat.push('<a href="' + kunta.fullurl + '">' + kunta.fulltext + '</a>');
}
popupContent += kunnat.join(', ') + '</p>';
+ site.printouts['Kunta'][0].fulltext;
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
addJwMarker(lakes, '', ll, popupContent, 'lake', null, null, size);
if (zoomTo) {
//map.setCenter(lakes.getDataExtent().getCenterLonLat(), 15);
map.zoomToExtent(lakes.getDataExtent());
}
}
}
}
}
function jwAddAnyObs(options) {
var map = options.map;
var today = new Date();
var oneWeekAgo = new Date();
var tenDaysAgo = new Date();
oneWeekAgo.setDate(today.getDate() - 7);
tenDaysAgo.setDate(today.getDate() - 10);
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + encodeURI(options.query);
searchStr += encodeURI('|?SiteID|?Havainto|?Tyyppi|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
type = 'algal';
function gotObservations(obsReq) {
if (!!obsReq.query.results && obsReq.query.meta.count > 0) {
var obsArray = new Array();
for (var i in obsReq.query.results) {
obsArray.push(obsReq.query.results[i]);
}
obsReq.query.results = obsArray;
}
if (!!obsReq.query.results) {
if (obsReq.query.meta.count > 0) {
var observations = new OpenLayers.Layer.Vector( options.layerName, {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(observations);
observations.addOptions({ popuppable: true, zIndex: options.zIndex }, false);
doLayers(map);
var obsObj = new Object();
var siteIDsArr = new Array();
for (var i in obsReq.query.results) {
observation = obsReq.query.results[i];
siteID = observation.printouts.SiteID[0];
title = observation.fulltext;
if (title.indexOf('S Arkisto:') == 0) {
siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
} else {
title = title.substr(0, title.indexOf('#'));
}
obsObj[siteID] = { title: title, observation: observation, sort: parseFloat(observation.printouts["Päivämäärä"][0]) };
}
function doMarkers() {
var obsArr = new Array();
for (var o in obsObj) {
obsArr.push(obsObj[o]);
}
obsArr.sort(function(a,b) { return a.sort-b.sort; });
for (var i in obsArr) {
if ( obsArr[i].title != '-') {
observation = obsArr[i].observation;
title = obsArr[i].title;
titleArr = title.split('/');
uri = '/wiki/' + title;
coordP = observation.printouts.Koordinaatit[0].lat;
coordE = observation.printouts.Koordinaatit[0].lon;
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
maintainer = observation.printouts["Ylläpito"][0];
popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
switch (type) {
case 'temp':
val2 = observation.printouts['Pintaveden lämpötila'][0].value;
if (val2 < 10) {
val = 1;
} else if (val2 < 15) {
val = 2;
} else if (val2 < 20) {
val = 3;
} else {
val = 4;
}
popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, options.size);
break;
case 'ice':
val = observation.printouts.Jäätilanne[0];
if (val == 3) {
if (observation.printouts['Jään paksuus'].length > 0) {
val2 = observation.printouts['Jään paksuus'][0].value;
popupContent += '<p>' + JwSiteLabels('ice3', options.lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice3', options.lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice'+val, options.lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, options.size);
break;
case 'algal':
if (observation.printouts.Levätilanne[0] != undefined) {
val = observation.printouts.Levätilanne[0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('algal' + val, options.lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, options.size);
} else { console.log(popupContent); }
break;
case 'jellys':
if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
val = observation.printouts["Meduusojen runsaus"][0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('jellys' + val, options.lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, options.size);
} else { console.log(popupContent); }
break;
}
}
}
}
function gotSiteIDs(IDsReq) {
//console.log(IDsReq);
if (!!IDsReq.query.pages) {
for (var id in IDsReq.query.pages) {
if ( typeof IDsReq.query.pages[id].title === "undefined" ) {
obsObj[id].title = '-';
} else {
obsObj[id].title = IDsReq.query.pages[id].title;
}
}
}
IDblocks--;
if (IDblocks == 0) {
doMarkers();
}
}
var IDblocks = 0;
if (siteIDsArr.length > 0) {
for (b=0; b < siteIDsArr.length; b+=50) {
IDblocks++;
searchSiteID = 'action=query&pageids=' + siteIDsArr.slice(b, b+50).join(encodeURI('|')) + '&format=json';
jQuery.ajax({
type: 'POST',
cache: false,
url: queryApi,
data: searchSiteID,
dataType: 'jsonp',
success: gotSiteIDs
});
}
} else {
doMarkers();
}
}
}
}
jQuery.ajax({
type: 'GET',
cache: false,
url: queryApi,
data: searchStr,
dataType: 'jsonp',
success: gotObservations,
obsType: type
});
}
function jwAddObs(map, type, query, z, size, lang) {
var today = new Date();
var oneWeekAgo = new Date();
var tenDaysAgo = new Date();
oneWeekAgo.setDate(today.getDate() - 7);
tenDaysAgo.setDate(today.getDate() - 10);
switch (type) {
case 'temp':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += '[[Pintaveden l%C3%A4mp%c3%b6tila::%2B]]';
//searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
//searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::<' + today.yyyymmdd() + ']]';
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Pintaveden lämpötila|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=2000');
searchStr += '&format=json';
break;
case 'ice':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Jäätilanne]]');
//searchStr += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Jäätilanne|?Jään paksuus|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
break;
case 'algal':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
//searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=2000');
searchStr += '&format=json';
break;
case 'algalW':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
//searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
type = 'algal';
break;
case 'jellys':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]][[SiteID::%21-]]' + query;
searchStr += encodeURI('[[Tyyppi::Meduusat]]');
//searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Meduusojen runsaus|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
type = 'jellys';
break;
}
function gotObservations(obsReq) {
if (!!obsReq.query.results && obsReq.query.meta.count > 0) {
var obsArray = new Array();
for (var i in obsReq.query.results) {
obsArray.push(obsReq.query.results[i]);
}
obsReq.query.results = obsArray;
}
if (!!obsReq.query.results) {
if (obsReq.query.meta.count > 0) {
var observations = new OpenLayers.Layer.Vector( JwSiteLabels(type, lang), {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(observations);
observations.addOptions({ popuppable: true, zIndex: z }, false);
doLayers(map);
var obsObj = new Object();
var siteIDsArr = new Array();
for (var i in obsReq.query.results) {
observation = obsReq.query.results[i];
siteID = observation.printouts.SiteID[0];
title = observation.fulltext;
if (title.indexOf('S Arkisto:') == 0) {
siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
} else {
title = title.substr(0, title.indexOf('#'));
}
obsObj[siteID] = { title: title, observation: observation, sort: parseFloat(observation.printouts["Päivämäärä"][0]) };
}
function doMarkers() {
var obsArr = new Array();
for (var o in obsObj) {
obsArr.push(obsObj[o]);
}
obsArr.sort(function(a,b) { return a.sort-b.sort; });
//console.log(obsArr);
for (var i in obsArr) {
observation = obsArr[i].observation;
title = obsArr[i].title;
titleArr = title.split('/');
uri = '/wiki/' + title;
coordP = observation.printouts.Koordinaatit[0].lat;
coordE = observation.printouts.Koordinaatit[0].lon;
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
maintainer = observation.printouts["Ylläpito"][0];
popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
switch (type) {
case 'temp':
val2 = observation.printouts['Pintaveden lämpötila'][0].value;
if (val2 < 10) {
val = 1;
} else if (val2 < 15) {
val = 2;
} else if (val2 < 20) {
val = 3;
} else {
val = 4;
}
popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, size);
break;
case 'ice':
val = observation.printouts.Jäätilanne[0];
if (val == 3) {
if (observation.printouts['Jään paksuus'].length > 0) {
val2 = observation.printouts['Jään paksuus'][0].value;
popupContent += '<p>' + JwSiteLabels('ice3', lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice3', lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice'+val, lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, size);
break;
case 'algal':
if (observation.printouts.Levätilanne[0] != undefined) {
val = observation.printouts.Levätilanne[0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('algal' + val, lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, size);
} else { console.log(popupContent); }
break;
case 'jellys':
if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
val = observation.printouts["Meduusojen runsaus"][0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('jellys' + val, lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, size);
} else { console.log(popupContent); }
break;
}
}
}
function gotSiteIDs(IDsReq) {
if (!!IDsReq.query.pages) {
for (var id in IDsReq.query.pages) {
obsObj[id].title = IDsReq.query.pages[id].title;
}
}
IDblocks--;
if (IDblocks == 0) {
doMarkers();
}
}
var IDblocks = 0;
if (siteIDsArr.length > 0) {
for (b=0; b < siteIDsArr.length; b+=50) {
IDblocks++;
searchSiteID = 'action=query&pageids=' + siteIDsArr.slice(b, b+50).join(encodeURI('|')) + '&format=json';
jQuery.ajax({
type: 'POST',
cache: false,
url: queryApi,
data: searchSiteID,
dataType: 'jsonp',
success: gotSiteIDs
});
}
} else {
doMarkers();
}
}
}
}
jQuery.ajax({
url: queryApi,
type: 'POST',
data: searchStr,
dataType: 'jsonp',
success: gotObservations,
obsType: type
});
}
function jwAddObservations(map, type, query, z, size, lang) {
var today = new Date();
var oneWeekAgo = new Date();
var tenDaysAgo = new Date();
oneWeekAgo.setDate(today.getDate() - 7);
tenDaysAgo.setDate(today.getDate() - 10);
switch (type) {
case 'temp':
query += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
break;
case 'ice':
query += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
break;
case 'algal':
query += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
break;
case 'algalW':
break;
case 'jellys':
break;
}
jwAddObs( map, type, query, z, size, lang);
}
function jwAddObservationsOLD(map, type, query, z, size, lang) {
var today = new Date();
var oneWeekAgo = new Date();
var tenDaysAgo = new Date();
oneWeekAgo.setDate(today.getDate() - 7);
tenDaysAgo.setDate(today.getDate() - 10);
switch (type) {
case 'temp':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += '[[Pintaveden l%C3%A4mp%c3%b6tila::%2B]]';
searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::>' + oneWeekAgo.yyyymmdd() + ']]';
//searchStr += '[[P%C3%A4iv%C3%A4m%C3%A4%C3%A4r%C3%A4::<' + today.yyyymmdd() + ']]';
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Pintaveden lämpötila|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
break;
case 'ice':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Jäätilanne]]');
searchStr += encodeURI('[[Päivämäärä::>' + tenDaysAgo.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Jäätilanne|?Jään paksuus|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
break;
case 'algal':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query; //.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
break;
case 'algalW':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query.replace('ä', '%C3%A4').replace(' ', '%20');
searchStr += encodeURI('[[Tyyppi::Levätilanne]][[Leväryhmä::Sinilevä]]');
//searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Levätilanne|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
type = 'algal';
break;
case 'jellys':
var searchStr = 'action=ask&query=[[Havainto::%2B]][[Koordinaatit::%2B]]' + query;
searchStr += encodeURI('[[Tyyppi::Meduusat]]');
//searchStr += encodeURI('[[Päivämäärä::>' + oneWeekAgo.yyyymmdd() + ']][[Päivämäärä::<' + today.yyyymmdd() + ']]');
searchStr += encodeURI('|?SiteID|?Havainto|?Koordinaatit|?Päivämäärä|?Meduusojen runsaus|?Ylläpito');
searchStr += encodeURI('|sort=Päivämäärä|order=ascending|limit=1000');
searchStr += '&format=json';
type = 'jellys';
break;
}
function gotObservations(obsReq) {
if (obsReq.query.results != undefined) {
if (obsReq.query.meta.count > 0) {
var observations = new OpenLayers.Layer.Vector( JwSiteLabels(type, lang), {
eventListeners:{
'featureselected': function(evt){
var popup = new OpenLayers.Popup.FramedCloud("popup", evt.feature.geometry.getBounds().getCenterLonLat(), null, evt.feature.data.popupContent, null, true, closecallback );
evt.feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
map.removePopup(evt.feature.popup);
evt.feature.popup.destroy();
evt.feature.popup = null;
}
}
});
map.addLayer(observations);
observations.addOptions({ popuppable: true, zIndex: z }, false);
doLayers(map);
siteIDsArr = new Array();
for (var i in obsReq.query.results) {
siteIDsArr.push(obsReq.query.results[i].printouts.SiteID[0]);
}
searchSiteID = 'action=query&pageids=' + siteIDsArr.join('|') + '&format=json';
for (var i in obsReq.query.results) {
observation = obsReq.query.results[i];
title = observation.fulltext;
if (title.indexOf('S Arkisto:') == 0) {
function gotSiteID(siteReq) {
for (var s in siteReq.query.pages) {
site = siteReq.query.pages[s];
doObsMarker(this.obs, site.title);
//console.log(site.title);
break;
}
}
searchSiteID = 'action=query&pageids=' + observation.printouts.SiteID[0] + '&format=json';
jQuery.ajax({
type: 'GET',
cache: false,
url: queryApi,
data: searchSiteID,
dataType: 'jsonp',
success: gotSiteID,
obs: observation
});
} else {
doObsMarker(observation, title.replace('S Arkisto:', '').substr(0, title.indexOf('#')));
}
function doObsMarker(observation, title) {
// }
//title = title.replace('S Arkisto:', '');
//console.log(title);
//title = title.substr(0, title.indexOf('#'));
//console.log(title);
titleArr = title.split('/');
//uri = observation.fullurl.replace('S_Arkisto:', '');
//uri = uri.substr(0, uri.indexOf('#'));
uri = '//www.jarviwiki.fi/wiki/' + title;
coordP = observation.printouts.Koordinaatit[0].lat;
coordE = observation.printouts.Koordinaatit[0].lon;
ll = new OpenLayers.LonLat( coordE, coordP ).transform(epsg4326, projectTo);
obsDate = new Date(toDateFromSecsSince1970(observation.printouts.Päivämäärä[0]));
maintainer = observation.printouts["Ylläpito"][0];
popupContent = '<a href="' + uri + '"><h3><span class="smaller">' + titleArr[0] + '</span><br />' + titleArr[1] + '</h3></a><hr>';
switch (type) {
case 'temp':
val2 = observation.printouts['Pintaveden lämpötila'][0].value;
if (val2 < 10) {
val = 1;
} else if (val2 < 15) {
val = 2;
} else if (val2 < 20) {
val = 3;
} else {
val = 4;
}
popupContent += '<p><b>' + val2 + ' °C</b> (' + obsDate.inRelationToToday() + ')</p>';
addJwMarker(observations, maintainer, ll, popupContent, 'temp', val, val2, size);
break;
case 'ice':
val = observation.printouts.Jäätilanne[0];
if (val == 3) {
if (observation.printouts['Jään paksuus'].length > 0) {
val2 = observation.printouts['Jään paksuus'][0].value;
popupContent += '<p>' + JwSiteLabels('ice3', lang) + ': ' + val2 + ' cm (' + obsDate.inRelationToToday() + ')</p>';
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice3', lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
} else {
val2 = -1;
popupContent += '<p>' + JwSiteLabels('ice'+val, lang) + ' (' + obsDate.inRelationToToday() + ')</p>';
}
addJwMarker(observations, maintainer, ll, popupContent, 'ice', val, val2, size);
break;
case 'algal':
if (observation.printouts.Levätilanne[0] != undefined) {
val = observation.printouts.Levätilanne[0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('algal' + val, lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'algal', val, val2, size);
} else { console.log(popupContent); }
break;
case 'jellys':
if (observation.printouts["Meduusojen runsaus"][0] != undefined) {
val = observation.printouts["Meduusojen runsaus"][0];
val2 = -1;
popupContent += '<p><b>' + JwSiteLabels('jellys' + val, lang) + '</b>';
popupContent += ' (' + obsDate.inRelationToToday() + ')</p>';;
addJwMarker(observations, maintainer, ll, popupContent, 'jellys', val, val2, size);
} else { console.log(popupContent); }
break;
}
}
}
}
}
}
jQuery.ajax({
type: 'GET',
cache: false,
url: queryApi,
data: searchStr,
dataType: 'jsonp',
success: gotObservations,
obsType: type
});
}
function addJwMarker(layer, iconStat, ll, popupContentHTML, type, iconVal, iconVal2, size) {
var map = layer.Map;
var pm_val = '';
var feature = new OpenLayers.Feature(layer, ll);
feature.lonlat = ll;
var pm_size = '_' + size;
var sizeArr = size.split('x');
var iconw = sizeArr[0];
var iconh = sizeArr[1];
var iconhOffset;
if (iconw == iconh) {
iconhOffset = -iconh/2;
} else {
iconhOffset = -iconh;
}
if (!iconStat) { iconStat = ''; }
switch (iconStat.substr(0, 3).toLowerCase()) {
case "tav":
statStr = "";
popupContentHTML += '<p style="white-space: nowrap;">' + JwSiteLabels('manByUsr', lang) + '</p>';
break;
case "kok":
statStr = "kokenut";
popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByExd', lang) + '</p>';
break;
case "asi":
statStr = "asiantuntija";
popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByExp', lang) + '</p>';
break;
case "vir":
statStr = "viranomainen";
popupContentHTML += '<p style="white-space:nowrap;">' + JwSiteLabels('manByAuth', lang) + '</p>';
break;
default:
statStr = "";
}
pm_type = '_' + statStr;
switch (type) {
case 'lake':
base = 'jarvi';
break;
case 'merialue':
base = 'merialue';
break;
case 'algMon':
if (size == '19x19') {
base = 'leg';
} else {
base = 'havaintopaikka';
}
break;
case 'photo':
base = 'valokuva';
break;
case 'event':
base = 'tapahtuma';
break;
case 'obsSite':
base = 'havaintopaikka';
break;
case 'temp':
base = 'temp' + iconVal.toString();
if (iconw > 25) {
pm_val = Math.round(iconVal2).toString() + '%B0';
} else {
pm_val = Math.round(iconVal2).toString();
}
break;
case 'ice':
base = 'ice' + iconVal.toString();
if (iconVal == 3) {
if (iconVal2 > 0) {
pm_val = Math.round(iconVal2).toString();
}
} else {
pmVal = '';
}
break;
case 'algal':
base = 'algal' + iconVal.toString();
pmVal = '';
break;
case 'jellys':
base = 'jellys' + iconVal.toString();
pmVal = '';
break;
default:
if (!type) { base = 'kohde'; } else { base = type; }
break;
}
pm_base = 'pm_' + base;
var point = new OpenLayers.Geometry.Point(ll.lon,ll.lat);
var marker = new OpenLayers.Feature.Vector(
point,
{ labelText: 'Testing' },
{ externalGraphic: '//www.jarviwiki.fi/dynpm/pm.php?&base=' + pm_base + '&text=' + pm_val + '&type=' + pm_type + '&size=' + pm_size,
graphicWidth: iconw,
graphicHeight: iconh,
//graphicXOffset: iconw/2,
graphicYOffset: iconhOffset,
fillOpacity: 1
}
);
marker.data.popupContent = popupContentHTML;
layer.addFeatures([marker]);
}
function jwAddBaseMap(map, type, lang) {
var layer;
switch (type) {
case 'mmlPerus':
layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlPerus', lang), "http://tiles.kartat.kapsi.fi/peruskartta?", {layers: 'peruskartta'}, {projection: 'EPSG:900913', attribution: JwMapLabels('mmlAttr', lang) });
map.addLayer( layer );
break;
case 'mmlOrto':
layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlOrto', lang), "http://tiles.kartat.kapsi.fi/ortokuva?", {layers: 'ortokuva'}, {projection: 'EPSG:900913', minScale:40000, maxScale:5000, attribution: JwMapLabels('mmlAttr', lang) });
map.addLayer( layer );
break;
case 'mmlTausta':
layer = new OpenLayers.Layer.WMS(JwMapLabels('mmlTausta', lang), "http://tiles.kartat.kapsi.fi/taustakartta?", {layers: 'taustakartta'}, {projection: 'EPSG:900913', attribution: JwMapLabels('mmlAttr', lang) });
map.addLayer( layer );
break;
case 'osm':
layer = new OpenLayers.Layer.OSM(JwMapLabels('osm', lang), null, {sphericalMercator: true, projection: projectTo, transitionEffect: "resize", attribution: JwMapLabels('osmAttr', lang) });
map.addLayer( layer );
break;
case 'google':
layer = new OpenLayers.Layer.Google(JwMapLabels('google', lang), null, {sphericalMercator: true, projection: projectTo, attribution: JwMapLabels('googleAttr', lang) });
map.addLayer( layer );
break;
}
return layer;
}
function jwAddSeaBasin(map, lang, page, zoomTo, popup, z) {
var searchStr = 'action=ask&query=[[Luokka:Merialue]][[Alue::' + page + ']]';
searchStr += encodeURI('|limit=1000');
searchStr += '&format=json';
function gotRequest(request) {
var alueetArr = new Array();
if (request.query.results != undefined) {
for (var i in request.query.results) {
alueetArr.push(request.query.results[i].fulltext);
}
}
jwAddBalticDivisions(map, lang, alueetArr, zoomTo, popup, z);
}
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
success: gotRequest,
dataType: 'jsonp',
cache: false
});
}
function jwAddBalticDivisions(map, lang, alueetArr, zoomTo, popup, z) {
var divs = alueetArr.length;
if (zoomTo === undefined) { zoomTo = false; }
if (popup === undefined) { popup = true; }
if (z === undefined) { z = 10; }
var merialueet = new OpenLayers.Layer.Vector("Alueet",{
attribution: '<a href="http://helcom.fi/baltic-sea-trends/data-maps/">HELCOM</a>',
styleMap: new OpenLayers.StyleMap({
"default": new OpenLayers.Style({
fillColor: "#79a68f",
fillOpacity: 0.4,
strokeColor: "#09738b",
strokeWidth: 0.5
}),
"select": new OpenLayers.Style({
fillColor: "#79a68f",
fillOpacity: 0.6,
strokeColor: "#09738b",
strokeWidth: 0.5
})
}),
eventListeners:{
'featureselected': function(evt){
var feature = evt.feature;
var popupCont = '<a href="' + feature.data.pageUrl + '"><h3>' + feature.attributes.labelText + '</h3></a>';
var popup = new OpenLayers.Popup.FramedCloud("popup",
evt.feature.geometry.getBounds().getCenterLonLat(),
null,
popupCont,
null,
true,
null
);
popup.autoSize = true;
popup.maxSize = new OpenLayers.Size(400,800);
popup.fixedRelativePosition = true;
feature.popup = popup;
map.addPopup(popup);
},
'featureunselected':function(evt){
var feature = evt.feature;
map.removePopup(feature.popup);
feature.popup.destroy();
feature.popup = null;
}
}
});
function gotWKT(request) {
var WKTstr;
var title;
for (var page in request.query.pages) {
if (request.query.pages[page].revisions != undefined) {
WKTstr = request.query.pages[page].revisions[0]['*'].replace(/\<[\/]*includeonly\>/g, '');
var titleArr = request.query.pages[page].title.split('/');
title = titleArr[1];
var wkt = new OpenLayers.Format.WKT( { internalProjection: projectTo, externalProjection: epsg4326 } );
var feature = wkt.read(WKTstr);
feature.attributes.labelText = title;
feature.data.pageUrl = 'http://www.jarviwiki.fi/wiki/' + title;
merialueet.addFeatures(feature);
}
break;
}
divs--;
if ((divs < 1) && zoomTo) {
map.zoomToExtent(merialueet.getDataExtent());
}
}
for (var i in alueetArr) {
var searchStr = 'action=query&titles=';
searchStr += encodeURI('S_Data:Meri/' + alueetArr[i] + '/WKT');
searchStr += '&prop=revisions&rvlimit=1&rvprop=content&format=json';
jQuery.ajax({
type: 'GET',
url: queryApi,
data: searchStr,
success: gotWKT,
dataType: 'jsonp',
cache: true
});
}
map.addLayer(merialueet);
merialueet.data = new Object();
merialueet.data.z = z;
merialueet.data.popup = popup;
merialueet.addOptions({ popuppable: true, zIndex: z }, popup);
doLayers(map);
}
function jwAddKmlLayerX(map, type, queryFor, z, visibility, lang) {
var layer;
var url;
var name;
switch (type) {
case 'levävahtiSinilevä':
name = 'Levävahti';
url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=sinileva';
break;
case 'levävahtiRakkolevä':
name = 'Levävahti';
url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=rakkoleva';
break;
}
layer = new OpenLayers.Layer.Vector(name, {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: url,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true,
maxDepth: 2,
'internalProjection': projectTo,
'externalProjection': epsg4326
})
})
})
//Add a selector control to the kmllayer with popup functions
var controls = {
selector: new OpenLayers.Control.SelectFeature(layer, { onSelect: createPopup, onUnselect: destroyPopup })
};
function createPopup(feature) {
//console.log('asdf');
feature.popup = new OpenLayers.Popup.FramedCloud("pop",
feature.geometry.getBounds().getCenterLonLat(),
null,
'<div class="markerContent">'+feature.attributes.description+'</div>',
null,
true,
function() { controls['selector'].unselectAll(); }
);
//feature.popup.closeOnMove = true;
map.addPopup(feature.popup);
}
function destroyPopup(feature) {
feature.popup.destroy();
feature.popup = null;
}
map.addControl(controls['selector']);
controls['selector'].activate();
//map.setLayerIndex(layer, z);
layer.events.fallThrough = true;
map.addLayer(layer);
layer.events.fallThrough = true;
layer.setVisibility(visibility);
}
function jwAddKmlLayer(map, type, queryFor, z, visibility, lang) {
var layer;
var url;
var name;
switch (type) {
case 'levävahtiSinilevä':
name = 'Levävahti';
url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=sinileva';
break;
case 'levävahtiRakkolevä':
name = 'Levävahti';
url = 'http://www.jarviwiki.fi/kml/levavahti.php?type=rakkoleva';
break;
}
layer = new OpenLayers.Layer.Vector(name, {
strategies: [new OpenLayers.Strategy.Fixed()],
protocol: new OpenLayers.Protocol.HTTP({
url: url,
format: new OpenLayers.Format.KML({
extractStyles: true,
extractAttributes: true,
maxDepth: 2,
'internalProjection': projectTo,
'externalProjection': epsg4326
})
})
})
//map.setLayerIndex(layer, z);
map.addLayer(layer);
layer.setVisibility(visibility);
layer.events.fallThrough = true;
}
function jwAddExternalLayer(map, type, queryFor, z, visibility, lang, addToLr) {
if (addToLr == undefined) { addToLr = ''; }
var layer;
var queryArr;
if ( typeof queryFor === 'string' ) {
queryArr = new Array(queryFor);
} else {
queryArr = queryFor;
}
var queryStr = '';
var queryStr2 = '';
var queryStrLike = '';
var queryStrLike2 = '';
var queryStrVpd = '';
var queryStrJnum = '';
var queryStrShed = '';
var queryStrBasin = '';
var queryStrVpd2 = '';
var queryStrJnum2 = '';
var queryStrShed2 = '';
var queryStrBasin2 = '';
if (queryArr.length == 0) {
queryStrBasin = "PaajakoTunnus+LIKE+%27%25%27";
queryStrBasin2 = "PaajakoTunnus LIKE '%'";
//queryStrLike = "VPD2jarvi+LIKE+%27%25%27";
//queryStrLike2 = "VPD2jarvi LIKE '%'";
} else {
for (i=0; i < queryArr.length; i++) {
queryStr += '+OR+XXX+%3D+%27' + queryArr[i] + '%27';
queryStr2 += " OR XXX = '" + queryArr[i] + "'";
queryStrLike += '+OR+XXX+LIKE+%27' + queryArr[i] + '%25%27';
queryStrLike2 += " OR XXX LIKE '" + queryArr[i] + "%'";
queryStrVpd += '+OR+VPDTunnus+LIKE+%27' + queryArr[i] + '%25%27';
queryStrJnum += '+OR+JarviTunnus+%3D+%27' + queryArr[i] + '%27';
//queryStrShed += '+OR+Jako3Tunnus+%3D+%27' + queryArr[i].substring(0,6) + '%27';
queryStrShed += '+OR+Jako3Tunnus+LIKE+%27' + queryArr[i] + '%25%27';
queryStrBasin += '+OR+PaajakoTunnus+%3D+%27' + queryArr[i].substring(0,6) + '%27';
queryStrVpd2 += " OR VPDTunnus LIKE '" + queryArr[i] + "%'";
queryStrJnum2 += " OR JarviTunnus = '" + queryArr[i] + "'";
//queryStrShed2 += " OR Jako3Tunnus = '" + queryArr[i].substring(0,6) + "'";
queryStrShed2 += " OR Jako3Tunnus LIKE '" + queryArr[i] + "%'";
queryStrBasin2 += " OR PaajakoTunnus = '" + queryArr[i].substring(0,6) + "'";
}
queryStr = queryStr.substring(4);
queryStr2 = queryStr2.substring(4);
queryStrLike = queryStrLike.substring(4);
queryStrLike2 = queryStrLike2.substring(4);
queryStrVpd = queryStrVpd.substring(4);
queryStrJnum = queryStrJnum.substring(4); //encodeURI(queryStrJnum.substring(4));
queryStrShed = queryStrShed.substring(4); //encodeURI(queryStrShed.substring(4));
queryStrBasin = queryStrBasin.substring(4); //encodeURI(queryStrBasin.substring(4));
queryStrVpd2 = queryStrVpd2.substring(4);
queryStrJnum2 = queryStrJnum2.substring(4);
queryStrShed2 = queryStrShed2.substring(4);
queryStrBasin2 = queryStrBasin2.substring(4);
}
switch (type) {
case 'hyvinkaa':
//queryStr = queryStr.split('XXX').join('VPDTunnus');
//queryStr2 = queryStr2.split('XXX').join('VPDTunnus');
//jQuery.ajax({
// type: 'GET',
// url: 'http://kartta.hyvinkaa.fi/ows/ows.ashx',
// data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
// success: function(request) {
// if (request.count != 0) {
//var epsg4326; var mapProjStr = "3857"; var projectTo;
layer = new OpenLayers.Layer.ArcGIS93Rest(
'Hyvinkää',
'http://kartta.hyvinkaa.fi/ows/ows.ashx',
{ layers: 'show:0', version: '1.1.1', crs: '3879', transparent: true},
{ isBaseLayer: false, opacity: 0.5, attribution: 'Attribution' }
);
// layer.setLayerFilter(3, queryStr2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
// }
// },
// dataType: 'jsonp'
//});
break;
case 'iQwtr':
queryStr = queryStrLike.split('XXX').join('VPD2jarvi');
queryStr2 = queryStrLike2.split('XXX').join('VPD2jarvi');
//console.log('http://paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/0/query' + '?&where=' + queryStr + '&returnCountOnly=true&f=pjson');
jQuery.ajax({
type: 'POST',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/0/query',
data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
success: function(request) {
//console.log(request);
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
'iQwtr-sameusluokka',
'//paikkatieto.ymparisto.fi/arcgis/rest/services/iQwtr/VPD2Jarvi_statistics/MapServer/export',
{ layers: 'show:0', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
);
//console.log(queryStr2);
layer.setLayerFilter(0, queryStr2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
break;
case 'vpdRannikko':
queryStr = queryStr.split('XXX').join('VPDTunnus');
queryStr2 = queryStr2.split('XXX').join('VPDTunnus');
jQuery.ajax({
type: 'POST',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/3/query',
data: '&where=' + queryStr + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('vpdRannikko', lang) + addToLr,
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/export',
{ layers: 'show:3', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(3, queryStr2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
break;
case 'riverBasin':
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/5/query',
data: '&where=' + queryStrBasin + '&returnCountOnly=false&f=pjson&outFields=Nimi',
success: function(request) {
//console.log(request);
//console.log('//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/5/query' + '&where=' + queryStrBasin + '&returnCountOnly=false&f=pjson&outFields=Nimi');
if (queryArr.length == 1) {
lrName = request.features[0].attributes.Nimi;
} else {
lrName = JwMapLabels('riverBasin', lang);
}
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
lrName,
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/export',
{ layers: 'show:5', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
);
console.log(queryStrBasin2);
//layer.setLayerFilter(5, queryStrBasin2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
break;
case 'lakeBorder':
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/2/query',
data: '&where=' + queryStrVpd + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('lakeBorder', lang),
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_AlueidenHallintaJaRajoitukset1/MapServer/export',
{ layers: 'show:2', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(2, queryStrVpd2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
break;
case 'lakeBorder2':
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/SYKE/' + 'SYKE_Rantaviiva/MapServer/3/query',
data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('lakeBorder', lang),
'//paikkatieto.ymparisto.fi/arcgis/rest/services/SYKE/' + 'SYKE_Rantaviiva/MapServer/export',
{ layers: 'show:3', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.5, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(3, queryStrJnum2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
break;
case 'depthPlot':
////////////////// Syvyyskäyrät
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/3/query',
data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('depthPlot', lang),
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/export',
{ layers: "show:3", version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(3, queryStrJnum2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
/////////////////////
break;
case 'deepestPoint':
/////////////// Syvin kohta
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/1/query',
data: '&where=' + queryStrJnum + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('deepestPoint', lang),
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Korkeus/MapServer/export',
{ layers: "show:1", version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 1.0, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(1, queryStrJnum2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
/////////////////////
break;
case 'watershed':
//console.log(queryStrShed);
//console.log(queryStrShed2);
///////////////////// Vesistöalue
jQuery.ajax({
type: 'GET',
url: '//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/4/query',
data: '&where=' + queryStrShed + '&returnCountOnly=true&f=pjson',
success: function(request) {
if (request.count != 0) {
layer = new OpenLayers.Layer.ArcGIS93Rest(
JwMapLabels('watershed', lang),
'//paikkatieto.ymparisto.fi/arcgis/rest/services/INSPIRE/' + 'SYKE_Hydrografia/MapServer/export',
{ layers: 'show:4', version: '1.3.0', crs: mapProjStr, transparent: true},
{ isBaseLayer: false, opacity: 0.8, attribution: JwMapLabels('yhaAttr', lang) }
);
layer.setLayerFilter(4, queryStrShed2);
map.addLayer(layer);
map.setLayerIndex(layer, z);
layer.setVisibility(visibility);
}
},
dataType: 'jsonp'
});
/////////////////////
break;
}
return layer;
}
function jwAddControlDragPan(map) {
}
function jwAddControlDragPanX(map) {
var dragPanBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_TOGGLE,
displayClass: 'olControlDragPanBtn ',
title: 'Drag the map',
eventListeners: {
'activate' : dragPanActivate,
'deactivate': dragPanDeactivate
}
});
var dragPanPanel = new OpenLayers.Control.Panel({
displayClass: 'olControlDragPan',
createControlMarkup: function(control) {
var button = document.createElement('div');
var bg = document.createElement('div');
bg.className = 'olButtonBg';
button.appendChild(bg);
var icon = document.createElement('div');
icon.className = 'olButtonIcon';
button.appendChild(icon);
return button;
}
});
dragPanPanel.addControls([ dragPanBtn ]);
var dragPan = new OpenLayers.Control.Navigation({ autoActivate: false });
map.addControl(dragPan);
map.addControl( dragPanPanel );
function dragPanActivate() { dragPan.activate(); }
function dragPanDeactivate() { dragPan.deactivate(); }
}
function jwAddControlFullscreen(map, locate) {
if (locate == undefined) { locate = 0; }
var fullscreenBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_TOGGLE,
displayClass: 'olControlFullscreenBtn ',
title: 'Fullscreen',
eventListeners: {
'activate' : enterFullscreen,
'deactivate': exitFullscreen
}
});
var geolocateBtn = new OpenLayers.Control.Button({
type: OpenLayers.Control.TYPE_TOGGLE,
displayClass: 'olControlGeolocateBtn ',
title: 'Show my location',
eventListeners: {
'activate' : startGeolocator,
'deactivate': endGeolocator
}
});
var fullscreenPanel = new OpenLayers.Control.Panel({
displayClass: 'olControlFullscreen',
createControlMarkup: function(control) {
var button = document.createElement('div');
var bg = document.createElement('div');
bg.className = 'olButtonBg';
button.appendChild(bg);
var icon = document.createElement('div');
icon.className = 'olButtonIcon';
button.appendChild(icon);
return button;
}
});
fullscreenPanel.addControls( [geolocateBtn, fullscreenBtn] );
map.addControl(fullscreenPanel);
function fullscreenToggle() {
if (jQuery(map.div).css('position') == 'fixed') {
exitFullscreen();
} else {
enterFullscreen();
}
}
function enterFullscreen() {
orgMapHeight = jQuery(map.div).height();
orgZindex = jQuery(map.div).css("zIndex");
jQuery(map.div).css({
position: 'fixed',
top: 0,
left: 0,
bottom: 0,
right: 0,
zIndex: 100000,
height: jQuery(window).height()
});
//dragPanBtn.activate();
map.updateSize();
document.body.style.overflow = 'hidden';
}
function exitFullscreen() {
jQuery(map.div).css({
position: 'static',
zIndex: orgZindex,
height: orgMapHeight.toString() + 'px'
});
//dragPanBtn.deactivate();
map.updateSize();
document.body.style.overflow = 'auto';
}
jQuery(document).keyup(function(e) {
if (e.keyCode == 27) { // esc
fullscreenBtn.deactivate();
exitFullscreen();
} else if (e.keyCode == 70) { // f
//fullscreenToggle();
}
});
//Geolocator
var style = {
fillColor: '#000',
fillOpacity: 0.2,
strokeWidth: 0
};
var geolocator = new OpenLayers.Layer.Vector('', {'displayInLayerSwitcher': false} );
map.addLayer( geolocator );
var pulsate = function(feature) {
var point = feature.geometry.getCentroid(),
bounds = feature.geometry.getBounds(),
radius = Math.abs((bounds.right - bounds.left)/2),
count = 0,
grow = 'up';
var resize = function(){
if (count>16) {
clearInterval(window.resizeInterval);
}
var interval = radius * 0.03;
var ratio = interval/radius;
switch(count) {
case 4:
case 12:
grow = 'down'; break;
case 8:
grow = 'up'; break;
}
if (grow!=='up') {
ratio = - Math.abs(ratio);
}
feature.geometry.resize(1+ratio, point);
geolocator.drawFeature(feature);
count++;
};
window.resizeInterval = window.setInterval(resize, 50, point, radius);
};
var geolocate = new OpenLayers.Control.Geolocate({
bind: false,
geolocationOptions: {
enableHighAccuracy: true,
maximumAge: 0,
timeout: 7000
}
});
map.addControl(geolocate);
var firstGeolocation = true;
geolocate.events.register("locationupdated",geolocate,function(e) {
geolocator.removeAllFeatures();
var circle = new OpenLayers.Feature.Vector(
OpenLayers.Geometry.Polygon.createRegularPolygon(
new OpenLayers.Geometry.Point(e.point.x, e.point.y),
e.position.coords.accuracy/2,
40,
0
),
{},
style
);
geolocator.addFeatures([
new OpenLayers.Feature.Vector(
e.point,
{},
{
externalGraphic: '//www.jarviwiki.fi/dynpm/ol/jw_ol_geolocator_24px.png',
graphicWidth: 24,
graphicHeight: 24,
graphicXOffset: -12,
graphicYOffset: -12
//graphicName: 'cross',
//strokeColor: '#990000',
//fillColor: '#990000',
//strokeWidth: 2,
//fillOpacity: 1,
//pointRadius: 10
}
),
circle
]);
if (firstGeolocation) {
//map.zoomToExtent(geolocator .getDataExtent());
map.panTo(geolocator.getDataExtent().getCenterLonLat());
pulsate(circle);
firstGeolocation = false;
this.bind = true;
}
});
geolocate.events.register("locationfailed",this,function() {
OpenLayers.Console.log('Location detection failed');
});
function startGeolocator() {
geolocator.removeAllFeatures();
geolocate.deactivate();
geolocate.watch = true;
firstGeolocation = true;
geolocate.activate();
};
function endGeolocator() {
geolocator.removeAllFeatures();
geolocate.deactivate();
geolocate.watch = false;
//firstGeolocation = true;
//geolocate.activate();
};
if (locate == 1) {
//startGeolocator();
geolocateBtn.activate();
}
}
function firstDayOfWeek (year, week) {
// Jan 1 of 'year'
var d = new Date(year, 0, 1),
offset = d.getTimezoneOffset();
// ISO: week 1 is the one with the year's first Thursday
// so nearest Thursday: current date + 4 - current day number
// Sunday is converted from 0 to 7
d.setDate(d.getDate() + 4 - (d.getDay() || 7));
// 7 days * (week - overlapping first week)
d.setTime(d.getTime() + 7 * 24 * 60 * 60 * 1000
* (week + (year == d.getFullYear() ? -1 : 0 )));
// daylight savings fix
d.setTime(d.getTime()
+ (d.getTimezoneOffset() - offset) * 60 * 1000);
// back to Monday (from Thursday)
d.setDate(d.getDate() - 3);
return d;
}
function toDateFromSecsSince1970(s) {
var t = new Date(1970, 0, 1);
t.setMinutes(-t.getTimezoneOffset());
t.setSeconds(s);
return t;
}
Date.prototype.getDaysSinceZero = function () {
var aggregateMonths = [0, // January
31, // February
31 + 28, // March
31 + 28 + 31, // April
31 + 28 + 31 + 30, // May
31 + 28 + 31 + 30 + 31, // June
31 + 28 + 31 + 30 + 31 + 30, // July
31 + 28 + 31 + 30 + 31 + 30 + 31, // August
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, // September
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, // October
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, // November
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, // December
];
return (this.getFullYear()*365.25 + aggregateMonths[this.getMonth()] + this.getDate());
}
Date.prototype.inRelationToToday = function(lang) {
var today = new Date();
var days = Math.round(today.getDaysSinceZero() - this.getDaysSinceZero());
if (days == 0) {
return labels( 'today', lang);
} else if (days == 1) {
return labels( 'yesterday', lang);
} else if (days < 11) {
return days + ' ' + labels( 'daysAgo', lang);
} else {
if (lang=='fi') {
return this.getDate() + '.' + (this.getMonth()+1) + '.' + this.getFullYear();
} else {
return this.toLocaleDateString();
}
}
function labels(id, lang) {
var labs = {
fi: { today: 'Tänään', yesterday: 'Eilen', daysAgo: 'päivää sitten' },
sv: { today: 'Idag', yesterday: 'Igår', daysAgo: 'dagar sedan' },
en: { today: 'Today', yesterday: 'Yesterday', daysAgo: 'days ago' }
};
lang = lang && (lang in labs) ? lang : 'fi';
return labs[lang][id];
}
};
Date.prototype.getWeekNumber = function(){
var d = new Date(+this);
d.setHours(0,0,0);
d.setDate(d.getDate()+4-(d.getDay()||7));
return Math.ceil((((d-new Date(d.getFullYear(),0,1))/8.64e7)+1)/7);
};
Date.prototype.yyyymmdd = function() {
var yyyy = this.getFullYear().toString();
var mm = (this.getMonth()+1).toString(); // getMonth() is zero-based
var dd = this.getDate().toString();
return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
};
Date.prototype.getDayOfYear = function () {
var aggregateMonths = [0, // January
31, // February
31 + 28, // March
31 + 28 + 31, // April
31 + 28 + 31 + 30, // May
31 + 28 + 31 + 30 + 31, // June
31 + 28 + 31 + 30 + 31 + 30, // July
31 + 28 + 31 + 30 + 31 + 30 + 31, // August
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31, // September
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30, // October
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31, // November
31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30, // December
];
return (aggregateMonths[this.getMonth()] + this.getDate());
}
Date.prototype.getMonthName = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names[this.getMonth()];
};
Date.prototype.getMonthNameShort = function(lang) {
lang = lang && (lang in Date.locale) ? lang : 'en';
return Date.locale[lang].month_names_short[this.getMonth()];
};
Date.locale = {
fi: {
month_names: ['Tammikuu', 'Helmikuu', 'Maaliskuu', 'Huhtikuu', 'Toukokuu', 'Kesäkuu', 'Heinäkuu', 'Elokuu', 'Syyskuu', 'Lokakuu', 'Marraskuu', 'Joulukuu'],
month_names_short: ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko', 'Kesä', 'Heinä', 'Elo', 'Syys', 'Loka', 'Marras', 'Joulu']
},
sv: {
month_names: ['Januari', 'Februari', 'Mars', 'April', 'Maj', 'Juni', 'Juli', 'Augusti', 'September', 'Oktober', 'November', 'December'],
month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']
},
en: {
month_names: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'],
month_names_short: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
}
};
function JwMapLabels(labelId, lang) {
var labels = {
fi: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMapin tekijät</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'MML Taustakartta', mmlPerus: 'MML Peruskartta', mmlOrto: 'MML Ortokuvat', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/avoindata_lisenssi_versio1_20120501">Maanmittauslaitos</a>', lakeBorder: 'Järvi', watershed: 'Vesistöalue', depthPlot: 'Syvyyskäyrät', deepestPoint: 'Syvin kohta', riverBasin: 'Päävesistöt', vpdRannikko: 'Merialue' },
sv: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMap bidragare</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'LMV Baskarta', mmlPerus: 'LMV Grundkarta', mmlOrto: 'LMV Ortofoton', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/sv/Licens_till_avgiftsfria_datamaterial_version1_20120501">Lantmäteriverket</a>', lakeBorder: 'Sjön', watershed: 'Vattendragsområdet', depthPlot: 'Djupkonturerna', deepestPoint: 'Djupaste punkten', riverBasin: 'Huvudavrinningsområden', vpdRannikko: 'Sjöområdet' },
en: { yhaAttr: '© <a href="http://wwwp2.ymparisto.fi/kayttoehdot.html">Ympäristöhallinnon paikkatietoaineistot</a>', osm: 'OpenStreetMap', osmAttr: '© <a href="http://openstreetmap.org/">OpenStreetMap contributors</a>', google: 'Google Maps', googleAttr: '© <a href="https://www.google.com/intl/fi_fi/help/terms_maps.html">Google</a>', mmlTausta: 'NLS Basemap', mmlPerus: 'NLS Basic map', mmlOrto: 'NLS Orthophotos', mmlAttr: '© <a href="http://www.maanmittauslaitos.fi/en/NLS_open_data_licence_version1_20120501">National Land Survey of Finland</a>', lakeBorder: 'The lake', watershed: 'Watershed', depthPlot: 'Depth plot', deepestPoint: 'Deepest point', riverBasin: 'Main river basins', vpdRannikko: 'Sea area' }
};
lang = lang && (lang in labels) ? lang : 'en';
return labels[lang][labelId];
}
function JwSiteLabels(labelId, lang) {
var labels = {
fi: { lakes: 'Järvet', sites: 'Paikat', curObs: 'Tuoreet havainnot', temp: 'Pintaveden lämpötila', ice: 'Jäätilanne', ice0: 'Ei jäätä', ice1: 'Jäätymässä', ice2: 'Pysyvä jääpeite alkoi', ice3: 'Pysyvä jääpeite', ice4: 'Jäänlähtö', ice5: 'Jäätön kausi alkoi', algal: 'Levätilanne', algal0: 'Ei levää', algal1: 'Hieman levää', algal2: 'Runsaasti levää', algal3: 'Erittäin runsaasti levää', jellys0: 'Ei meduusoja', jellys1: 'Vähän meduusoja', jellys2: 'Paljon meduusoja', manByUsr: 'Ylläpito: Tavallinen käyttäjä', manByExd: 'Ylläpito: Kokenut käyttäjä', manByExp: 'Ylläpito: Asiantuntija', manByAuth: 'Ylläpito: Viranomainen'},
sv: { lakes: 'Sjöar', sites: 'Platser', curObs: 'Aktuella observationer', temp: 'Ytvattentemperatur', ice: 'Issituationen', ice0: 'Ingen is', ice1: 'Isläggning på gång', ice2: 'Isläggningen', ice3: 'Istäcke', ice4: 'Islossning', ice5: 'Början av isfria säsongen', algal: 'Algsituationen', algal0: 'Inga alger', algal1: 'Lite alger', algal2: 'Rikligt med alger', algal3: 'Ytterst rikligt med alger', manByUsr: 'Upprätthållning: Vanlig användare', manByExd: 'Upprätthållning: Erfaren användare', manByExp: 'Upprätthållning: Expert', manByAuth: 'Upprätthållning: Myndighet'},
en: { lakes: 'Lakes', sites: 'Sites', curObs: 'Current observations', temp: 'Water temperature', ice: 'Ice conditions', ice0: 'No ice cover', ice1: 'Freezing', ice2: 'Beginning oc ice covered season', ice3: 'Permanent ice cover', ice4: 'Ice break-up', ice5: 'Beginning of ice-free season', algal: 'Algal blooms', algal0: 'No algae', algal1: 'Some algae', algal2: 'Abundant with algae', algal3: 'Very abundant with algae', manByUsr: 'Managed by: Ordinary user', manByExd: 'Managed by: Experienced user', manByExp: 'Managed by: Expert', manByAuth: 'Managed by: Authority' }
};
lang = lang && (lang in labels) ? lang : 'en';
return labels[lang][labelId];
}
function hslToRgb(h, s, l){
/**
* Converts an HSL color value to RGB. Conversion formula
* adapted from //en.wikipedia.org/wiki/HSL_color_space.
* Assumes h, s, and l are contained in the set [0, 1] and
* returns r, g, and b in the set [0, 255].
*
* @param Number h The hue
* @param Number s The saturation
* @param Number l The lightness
* @return Array The RGB representation
*/
var r, g, b;
if(s == 0){
r = g = b = l; // achromatic
}else{
function hue2rgb(p, q, t){
if(t < 0) t += 1;
if(t > 1) t -= 1;
if(t < 1/6) return p + (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
var jwResize = function() {
jQuery('.autosize').each(function() {
jQuery ( this ).width(jQuery ( this ).parents('.autoresizer').width() - 12 );
});
}
jQuery(window).resize( function() {
jwResize();
});
jQuery(document).ready(function() {
jwResize();
});