function openwindow (Adresse) {
Fenster1 = window.open(Adresse, '', "width=500,height=500,left=100,top=100,scrollbars=yes,resizable=yes");
Fenster1.focus();
}
var msgObj = {};
msgObj.tooltipHandleWms = '';
msgObj.tooltipLayerVisible = '';
msgObj.tooltipLayerQuerylayer = '';
msgObj.tooltipLayerContextMenu = '';
msgObj.tooltipWmsContextMenu = '';
msgObj.tooltipRemoveWms = '';
msgObj.tooltipMoveSelectionUp = '';
msgObj.tooltipMoveSelectionDown = '';
msgObj.tooltipMetadata = '';
if (typeof(localizetree) === 'undefined')localizetree = 'false';
function localizeTree () {
var treefolderTitleArray = [];
var map = Mapbender.modules[mod_treeGDE_map];
if (map === null) {
return;
}
for(var i = 0; i < map.wms.length; i++) {
var currentWms = map.wms[i];
treefolderTitleArray.push({
title : currentWms.objLayer.length > 0 ?
currentWms.objLayer[0].gui_layer_title :
currentWms.wms_title,
layer : []
});
for (var j = 0; j < currentWms.objLayer.length; j++) {
var currentLayer = currentWms.objLayer[j];
treefolderTitleArray[treefolderTitleArray.length-1].layer.push({
title : currentLayer.gui_layer_title
});
}
}
var req = new Mapbender.Ajax.Request({
url: "../php/mod_treefolder2_l10n.php",
method: "translateServiceData",
parameters: {
data: treefolderTitleArray
},
callback: function (obj, success, message) {
var translatedTitleArray = obj;
for (var i = 0; i < translatedTitleArray.length; i++) {
var currentWms = map.wms[i];
currentWms.wms_currentTitle = translatedTitleArray[i].title;
for(var j = 0; j < currentWms.objLayer.length; j++) {
var currentLayer = currentWms.objLayer[j];
if (translatedTitleArray[i].layer.length > j) {
currentLayer.layer_currentTitle = translatedTitleArray[i].layer[j].title;
}
}
}
reloadTree();
}
});
req.send();
}
/*
eventInit.register(function () {
localizeTree();
});
*/
if (localizetree == 'true') {
eventLocalize.register(function () {
localizeTree();
});
}
var jst_container = "document.getElementById('treeContainer')";
var jst_image_folder = imagedir;
var jst_display_root = false;
var defaultTarget = 'examplemain';
var lock=false;
var lock_update=false;
var lock_check=false;
var selectedMap=-1;
var selectedWMS=-1;
var selectedLayer=-1;
var initialized=false;
var errors = 0;
var state=Array();
var treeState = "";
get("mb_user_gui"));
$t = array("s");
$res = db_prep_query($sql, $v, $t);
//init tree converting arrays
$nr = array(); //array for nested sets numbers
$str = array(); //array for js array elements
$categories = array(); //array for wms folders
$path = array(); //stack for actual path elements
$rights = array(); //stack for rights of open elements
//build javascript data array for jsTree
while($row = db_fetch_array($res)){
//push javascript array elements to a single array with lefts and rights
$left = "['folder_".$row['id']."', ['".$row['my_layer_title']."', 'javascript:_foo()'],[";
$right = "]],";
array_push($nr, $row['lft']);
array_push($str, $left);
array_push($nr, $row['rgt']);
array_push($str, $right);
//finish all nodes that have no further childs
while(count($rights) > 0 && $rights[count($rights)-1]<$row['lft']){
array_pop($rights);
array_pop($path);
}
//set path for each wms that is referenced in this folder
array_push($rights, $row['rgt']);
array_push($path, "folder_".$row['id']);
if($row['wms_id']!=""){
foreach(explode(",",$row['wms_id']) as $wms){
array_push($categories, "'wms_".$wms."':\"root_id|".implode("|", $path)."\"");
}
}
}
//if we have a configured structure output it
if(count($str)>0){
//order js array elements
array_multisort($nr, $str);
//output javascript vars
$arrNodesStr = "[['root_id', ['Layer','javascript:_foo()'],[".implode("",$str)."]]];";
$arrNodesStr = str_replace(array("[]", ",]"),array("","]"),$arrNodesStr);
echo "var arrNodesStr = \"".$arrNodesStr."\";\n";
echo "var categories = {".implode(",", $categories)."};\n";
}
else{
//if there is no structure take default
?>
var arrNodesStr = "[['root_id', ['Layer','javascript:_foo()']]];";
var categories = {};
var arrNodes = eval(arrNodesStr);
function _foo(){selectedMap=-1;selectedWMS=-1;selectedLayer=-1}
// some defaults
if (typeof(reverse) === 'undefined')reverse = 'false';
if (typeof(switchwms) === 'undefined')switchwms = 'true';
if (typeof(ficheckbox) === 'undefined')ficheckbox = 'false';
if (typeof(metadatalink) === 'undefined')metadatalink = 'false';
if (typeof(wmsbuttons) === 'undefined')wmsbuttons = 'false';
if (typeof(showstatus) === 'undefined')showstatus = 'false';
if (typeof(alerterror) === 'undefined')alerterror = 'false';
if (typeof(openfolder) === 'undefined')openfolder = 'false';
if (typeof(handlesublayer) === 'undefined')handlesublayer = 'false';
if (typeof(enlargetreewidth) === 'undefined') enlargetreewidth = 'false';
if (typeof(menu) === 'undefined')menu = '';
if (typeof(redirectToMetadataUrl) !== 'undefined' && redirectToMetadataUrl == "false") {
redirectToMetadataUrl = false;
}
else {
redirectToMetadataUrl = true;
}
var defaultMetadataUrl = '../php/mod_showMetadata.php?resource=layer&layout=tabs&';
if (redirectToMetadataUrl) {
defaultMetadataUrl += 'redirectToMetadataUrl=1';
}
else {
defaultMetadataUrl += 'redirectToMetadataUrl=0';
}
//menu elements
var menu_move_up = ['menu_move_up', [' ','javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];move_up(ids[0],ids[1],ids[2]);',,'move_up.png']];
var menu_move_down = ['menu_move_down', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];move_down(ids[0],ids[1],ids[2]);',,'move_down.png']];
var menu_delete = ['menu_delete', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];remove_wms(ids[0],ids[1],ids[2]);',,'delete_wms.png']];
var menu_opacity_up = ['menu_opacity_up', [' ','javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];opacity_up(ids[0],ids[1],ids[2]);',,'move_up.png']];
var menu_opacity_down = ['menu_opacity_down', [' ','javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];opacity_down(ids[0],ids[1],ids[2]);',,'move_down.png']];
var menu_metalink = ['menu_metalink', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];openwindow(defaultMetadataUrl + "&id="+parent.mb_mapObj[ids[0]].wms[ids[1]].objLayer[ids[2]].layer_uid);',,'info.png']];
var menu_zoom = ['menu_zoom', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];zoomToLayer(ids[0],ids[1],ids[2]);',,'zoom.png']];
var menu_hide = ['menu_hide', [' ', 'javascript:hideMenu()',,'hide.png']];
var menu_style = ['menu_style', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];openStyleDialog(ids[0],ids[1],ids[2])',,'palette.png']];
var menu_legend = ['menu_legend', [' ', 'javascript:var sd = "{@strData}";var ids=eval(sd.substr(0, sd.length-6))[1][7];openLegendHtml(ids[0],ids[1],ids[2])',,'legend_tree.png']];
//var menu_wms_switch = ['menu_zoom', [' ', 'javascript:var sd = "{@strData}";eval(eval(sd.substr(0, sd.length-6))[1][1]);openwindow(defaultMetadataUrl + "&id="+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_uid);',,'info.png']];
//var menu_layer_switch = ['menu_zoom', ['Zjjj ', 'javascript:var sd = "{@strData}";eval(eval(sd.substr(0, sd.length-6))[1][1]);openwindow(defaultMetadataUrl + "&id="+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_uid);',,'info.png']];
//var menu_info_switch = ['menu_zoom', ['Zmn ', 'javascript:var sd = "{@strData}";eval(eval(sd.substr(0, sd.length-6))[1][1]);openwindow(defaultMetadataUrl + "&id="+parent.mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_uid);',,'info.png']];
//parent.eventMapRequestFailed.register(function(t){imgerror(t)});
eventAfterLoadWMS.register(reloadTree);
Mapbender.events.init.register(function () {
$("#" + mod_treeGDE_map).mapbender().events.afterMoveWms.register(reloadTree);
});
eventInit.register(loadTree);
if(showstatus=='true'||alerterror=='true'){
eventAfterMapRequest.register(init_mapcheck);
init_mapcheck();
}
eventAfterMapRequest.register(updateScale);
eventAfterMapRequest.register(updateCheckState);
/*
if (enlargetreewidth) {
eventAfterInit.register(function(){
var initialWidth = parseInt($('#treeGDE').css("width"));
$('#treeGDE').bind("mouseenter", function(){
$(this).css({
'width': initialWidth + enlargetreewidth,
'zIndex': '300'
});
$(this).mousewheel();
});
$('#treeGDE').bind("mouseleave", function(){
$(this).css({
'width': initialWidth,
'zIndex': '3'
});
});
});
}
*/
if(wmsbuttons != "true")
jst_highlight = false;
function select(i,ii,iii){
//ignore if selected
if(selectedMap==i && selectedWMS==ii && selectedLayer==iii)return;
if(selectedMap==-1 && selectedWMS==-1 && selectedLayer==-1){
selectedMap=i;
selectedWMS=ii;
selectedLayer=iii;
return;
}
//scalehints
var scale = parseInt(mb_getScale(mod_treeGDE_map));
if(scale < parseInt(mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_minscale) && parseInt(mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_minscale) != 0){
if(selectedLayer==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+ mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
}
else if(scale > parseInt( mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_maxscale) && parseInt( mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].gui_layer_maxscale) != 0){
if(selectedLayer==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '#999999');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+ mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '#999999');
}
else{
if(selectedLayer==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id, '');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ mb_mapObj[selectedMap].wms[selectedWMS].wms_id+"|"+ mb_mapObj[selectedMap].wms[selectedWMS].objLayer[selectedLayer].layer_id, '');
}
selectedMap=i;
selectedWMS=ii;
selectedLayer=iii;
}
function updateScale(){
if(!initialized)return;
myMapObj = getMapObjByName(mod_treeGDE_map);
if(myMapObj){
var scale = parseInt( myMapObj.getScale());
for(var ii=0; ii< myMapObj.wms.length; ii++){
for(var iii=1; iii< myMapObj.wms[ii].objLayer.length; iii++){
if(scale < parseInt( myMapObj.wms[ii].objLayer[iii].gui_layer_minscale) && parseInt( myMapObj.wms[ii].objLayer[iii].gui_layer_minscale) != 0){
if(iii==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id, '#999999');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id+"|"+ myMapObj.wms[ii].objLayer[iii].layer_id, '#999999');
}
else if(scale > parseInt( myMapObj.wms[ii].objLayer[iii].gui_layer_maxscale) && parseInt( myMapObj.wms[ii].objLayer[iii].gui_layer_maxscale) != 0){
if(iii==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id, '#999999');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id+"|"+ myMapObj.wms[ii].objLayer[iii].layer_id, '#999999');
}
else{
if(iii==0)
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id, '');
else
setNodeColor(arrNodes[0][0]+"|wms_"+ myMapObj.wms[ii].wms_id+"|"+ myMapObj.wms[ii].objLayer[iii].layer_id, '');
}
}
}
}
}
function updateCheckState(){
if(!initialized||lock_check)return;
lock_check=true;
var map = getMapObjByName(mod_treeGDE_map);
for(var i=0; i< mb_mapObj.length; i++){
var scale = parseInt( map.getScale());
if( mb_mapObj[i].elementName == mod_treeGDE_map){
for(var ii=0; ii< mb_mapObj[i].wms.length; ii++){
for(var iii=1; iii< mb_mapObj[i].wms[ii].objLayer.length; iii++){
if(! mb_mapObj[i].wms[ii].objLayer[iii].has_childs){
path = arrNodes[0][0]+"|wms_"+ mb_mapObj[i].wms[ii].wms_id+"|"+ mb_mapObj[i].wms[ii].objLayer[iii].layer_id;
checkNode(path, 0, mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_visible==='1'||mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_visible===1, false);
if(ficheckbox == 'true')
checkNode(path, 1, mb_mapObj[i].wms[ii].objLayer[iii].gui_layer_querylayer=='1', false);
}
}
}
}
}
lock_check=false;
}
function operaLoad(){
initArray();
renderTree();
setTimeout('initWmsCheckboxen();updateScale();',100);
}
function loadTree(){
if(wmsbuttons=='true'){
var div = document.createElement("div");
div.innerHTML = '';
document.getElementById("treeGDE").appendChild(div);
}
var div = document.createElement("div");
div.id = "treeContainer"
document.getElementById("treeGDE").appendChild(div);
if(window.opera){
setTimeout('operaLoad()',200);
return;
}
initArray();
renderTree();
initWmsCheckboxen();
updateScale();
}
function reloadTree(){
if(!initialized) return;
selectedMap=-1;
selectedWMS=-1;
selectedLayer=-1;
initialized=false;
arrNodes = eval(arrNodesStr)
initArray();
if(showstatus=='true'||alerterror=='true')
init_mapcheck();
renderTree();
if(window.opera)
setTimeout('initWmsCheckboxen();updateScale();',100);
else{
initWmsCheckboxen();
updateScale();
}
}
function imgerror(t){
var map= getMapObjIndexByName(mod_treeGDE_map);
var wms=Number(t.id.substr(4));
t.onerror=null;
t.onabort=null;
if(state[wms]!=-1 && alerterror=='true'){
state[wms]=-1;
if(confirm(' ' +
mb_mapObj[map].wms[wms].objLayer[0].layer_currentTitle +
'\n')) {
window.open(t.src,"");
}
}
state[wms]=-1;
errors++;
if(showstatus=='true')
setNodeImage(arrNodes[0][0]+"|wms_"+ mb_mapObj[map].wms[wms].wms_id, "error_folder.png");
}
function checkComplete(wms, map, img, first){
var ind= getMapObjIndexByName(mod_treeGDE_map);
if (mb_mapObj[ind].wms[wms].mapURL == false ||
!mb_mapObj[ind].getDomElement().ownerDocument.getElementById(map) ||
mb_mapObj[ind].getDomElement().ownerDocument.getElementById(map).complete) {
if(state[wms]!=-1){
for(var i=1;i< mb_mapObj[ind].wms[wms].objLayer.length;i++){
if(mb_mapObj[ind].wms[wms].objLayer[i].gui_layer_visible===1||mb_mapObj[ind].wms[wms].objLayer[i].gui_layer_visible==="1"){
state[wms]=1;
if(showstatus=='true')
setNodeImage(img);
//Removes the previous Maprequest image from dom
var prevlastRequestDiv = $("#"+mod_treeGDE_map+"_maps > div:last").prev().attr("id");
var prevWmsgid=prevlastRequestDiv+"_map_"+wms;
var $prevWmsgid=$("#"+prevWmsgid);
$prevWmsgid.remove();
break;
}
}
}
}
else{
if(first){
state[wms]=0;
// frames[mod_treeGDE_map].document.getElementById(map).onerror=imgerror;
// frames[mod_treeGDE_map].document.getElementById(map).onabort=imgerror;
if(showstatus=='true')
setNodeImage(img, "loading_folder.gif");
}
if(state[wms]!=-1)
setTimeout('checkComplete('+wms+', "'+map+'", "'+img+'");',100);
}
}
// mb_registerWmsLoadErrorFunctions("window.frames['treeGDE'].imgerror();");
function init_mapcheck(){
if(!initialized)return;
errors = 0;
var ind = getMapObjIndexByName(mod_treeGDE_map);
if(! mb_mapObj[ind]||!initialized){
setTimeout("init_mapcheck();",100);
return;
}
for(var wms=0;wms< mb_mapObj[ind].wms.length;wms++){
var lastRequestDiv = $("#"+mod_treeGDE_map+"_maps > div:last" ).attr("id");
var wmsimgid=lastRequestDiv+"_map_"+wms;
if( mb_mapObj[ind].getDomElement().ownerDocument.getElementById(wmsimgid)){
checkComplete(wms, wmsimgid, arrNodes[0][0]+'|wms_'+ mb_mapObj[ind].wms[wms].wms_id, true);
}
}
}
function local_handleSelectedLayer(mapObj,wms_id,layername,type,status){
if(lock_update||lock_check)return;
var ind = getMapObjIndexByName(mapObj);
for(var i=0; i< mb_mapObj[ind].wms.length; i++){
if( mb_mapObj[ind].wms[i].wms_id == wms_id){
mb_mapObj[ind].wms[i].handleLayer(layername, type, status);
break;
}
}
}
function zoomToLayer(j,k,l){
if(!j&&!k&&!l){
j=selectedMap;
k=selectedWMS;
l=selectedLayer;
}
var my= mb_mapObj[j].wms[k].objLayer[l].layer_epsg;
for (var i=0; i < my.length;i++) {
if(my[i]["epsg"]== mb_mapObj[j].epsg){
mb_calculateExtent(mod_treeGDE_map,my[i]["minx"],my[i]["miny"],my[i]["maxx"],my[i]["maxy"]);
var arrayExt = mb_mapObj[j].extent.toString().split(",");
mb_repaint(mod_treeGDE_map,arrayExt[0],arrayExt[1],arrayExt[2],arrayExt[3]);
//mb_repaint(mod_treeGDE_map,my[i]["minx"],my[i]["miny"],my[i]["maxx"],my[i]["maxy"]);
break;
}
}
}
function openLegendHtml(j,k,l){
if(!j && !k&& !l){
j=selectedMap;
k=selectedWMS;
l=selectedLayer;
}
var my= mb_mapObj[j].wms[k].objLayer[l];
var legendWindow = window.open("../metadata/"+my.layer_name+".html", '', "width=800,height=800,left=100,top=100,scrollbars=yes,resizable=no");
legendWindow.focus();
}
function openStyleDialog(j,k,l){
if(!j && !k&& !l){
j=selectedMap;
k=selectedWMS;
l=selectedLayer;
}
var my= mb_mapObj[j].wms[k].objLayer[l];
var dialogHtml = "";
if(my.layer_style.length > 1) {
$("