/* -*- java -*- */
/* (c) 2002, 2003 Slaven Rezic */
/* DO NOT EDIT. Created automatically from brb.js-tpl */

var force_mode = "";
var orig_action = "";

function redirect_form(frm) {
    var mode = "browse";
    if (force_mode != "") {
	mode = force_mode;
    } else {
	mode = get_mode();
// 	for(var i = 0; i < frm.mode.length; i++) {
// 	    if (frm.mode[i].checked) {
// 		if (frm.mode[i].value == "nquery") {
// 		    mode = "nquery";
// 		}
// 	    }
// 	}
    }
    if (mode == "nquery") {
	var w = window.open("","queryresult",'toolbar=no,width=350,height=350,resizable=yes,scrollbars=yes');
	w.document.open(); w.document.close(); // make window empty before raise
	if (has_focus(w)) w.focus();
	frm.target = "queryresult";
    } else {
	frm.target = "_self";
    }
    return true;
}

function force_browse_move_mode() {
  //XXX    force_mode = "browse";
    set_mode("browse", 0);
    return true;
}

function set_gui_browse_mode() {
    set_mode("browse", null);
//     var frm = document.forms.map;
//     for(var i = 0; i < frm.mode.length; i++) {
// 	if (frm.mode[i].value == "browse") {
// 	    frm.mode[i].checked = true;
// 	    break;
// 	}
//     }
    toggled_searchroute_mode();
}

function change_mode_or_zoomdir() {
    var frm = document.forms.map;
    var mode_or_zoomdir;
    for(var i = 0; i < frm.mode_or_zoomdir.length; i++) {
	if (frm.mode_or_zoomdir[i].checked) {
	    mode_or_zoomdir = frm.mode_or_zoomdir[i].value;
	}
    }
    if (mode_or_zoomdir == "nquery" || mode_or_zoomdir == "searchroute") {
	set_mode(mode_or_zoomdir, 0);
	toggled_searchroute_mode();
    } else {
	set_mode("browse", mode_or_zoomdir);
	set_gui_browse_mode();
    }
}

function get_mode() {
    var frm = document.forms.map;

    return frm.mode.value;

}

function get_zoomdir() {
    var frm = document.forms.map;

    return frm.zoomdir.value;

}

function set_mode(mode,zoomdir) {
    var frm = document.forms.map;
    // Set orig fields first
    frm.orig_mode.value    = get_mode();
    frm.orig_zoomdir.value = get_zoomdir();

    set_mode_no_orig_change(mode,zoomdir);
}

function set_mode_no_orig_change(mode,zoomdir) {
    var frm = document.forms.map;
    if (mode != null) {

        frm.mode.value = mode;

        if (mode != "searchroute") {
	    frm.coordset.value = "";
	}
    }
    if (zoomdir != null) {

        frm.zoomdir.value = zoomdir;

    }
}

function set_mode_radios(mode,zoomdir) {
    var frm = document.forms.map;
    if (mode == "browse") {
	mode = zoomdir;
    }
    for(var i = 0; i < frm.mode.length; i++) {
	if (frm.mode[i].value == mode) {
	    frm.mode[i].checked = true;
	} else {
	    frm.mode[i].checked = false;
	}
    }
}

function move_map(x,y) {
    var imgx;
    var imgy;
    if (x < 0) {
	imgx = 0;
    } else if (x > 0) {
	imgx = 549;
    } else {
	imgx = 275;
    }
    if (y < 0) {
	imgy = 0;
    } else if (y > 0) {
	imgy = 549;
    } else {
	imgy = 275;
    }
    var frm = document.forms.map;
    frm.imgxy.value = imgx+" "+imgy;
    set_mode("browse", 0);
    frm.target = "_self";
    frm.submit();
    return true;
}

function help(topic) {
    var url = "http://bbbike.de/mapserver/brb/help.html";
    var w = window.open(url + "#" + topic, "mapserver_brb_help",
			'toolbar=yes,width=500,height=350,resizable=yes,scrollbars=yes');
    if (has_focus(w)) w.focus();
    return false;
}

function help_category(cat) {
    var topic = cat;
    if (topic.indexOf("|") >= 0) {
	topic = topic.substr(0, topic.indexOf("|"));
    }
    return help(topic);
}


function has_focus(w) {
    return typeof( w.focus ) == "function" ||
	   typeof( w.focus ) == "object" ||
	   navigator.appName == "Netscape";
}

function change_map(map) {
    var frm = document.forms.map;
    var oldmap = frm.map.value;
    var rx = new RegExp("(-inner-b|-b|-p|-brb|-wide)\\.map$");
    var newmap;
    if (oldmap.match(rx)) {
	newmap = oldmap.replace(rx, "-" + map + ".map");
    } else {
	// Fallback for non-scoped mapfile
	rx = new RegExp("\\.map$");
	newmap = oldmap.replace(rx, "-" + map + ".map");
    }
    frm.map.value = newmap;
    set_mode("browse", 0);
    frm.target = "_self";
    frm.submit();
    return true;
}

function init() {
    if (document.getElementById) {
	var bbbikeurl_elem = document.getElementById("bbbikeurl");
	if (bbbikeurl_elem) {
	    var frm = document.forms.map;
	    if (frm.bbbikeurl.value != "" && frm.bbbikeurl.value != "[bbbikeurl]") {
		bbbikeurl_elem.href = frm.bbbikeurl.value;
	    }
	}
	var bbbikemail_elem = document.getElementById("bbbikemail");
	if (bbbikemail_elem) {
	    var frm = document.forms.map;
	    if (frm.bbbikemail.value != "" && frm.bbbikemail.value != "[bbbikemail]") {
		bbbikemail_elem.href = "mailto:" + frm.bbbikemail.value;
	    }
	}
    }

    var frm = document.forms.map;
    var orig_mode = null;
    var orig_zoomdir = null;
    if (frm.orig_mode.value != "" && frm.orig_mode.value != "[orig_mode]") {
	orig_mode = frm.orig_mode.value;
    }
    if (frm.orig_zoomdir.value != "" && frm.orig_zoomdir.value != "[orig_zoomdir]") {
	orig_zoomdir = frm.orig_zoomdir.value;
    }
    set_mode_radios(orig_mode, orig_zoomdir);
    set_mode_no_orig_change(orig_mode, orig_zoomdir);
    if (is_searchroute_set()) {
        set_setcoord_action();
    }
}

// XXX no --- this is not intuitive
function adjust_for_redraw() {
    // set_mode("browse", 0);
}

function is_searchroute_set() {
    var mode = get_mode();
    return mode == "searchroute";
//     var frm = document.forms["map"];
//     var val = false;
//     for(var i = 0; i < frm.mode.length; i++) {
// 	if (frm.mode[i].value == "searchroute") {
// 	    return frm.mode[i].checked; 
// 	}
//     }
//     return false;
}

function set_setcoord_action() {
    var frm = document.forms["map"];
    orig_action = frm.action;
    frm.action = '/cgi-bin/mapserver_setcoord.cgi';
    if (frm.startc.value == "[startc]" || frm.startc.value == "") {
        frm.coordset.value = "start";
    } else {
        frm.coordset.value = "ziel";
    }
}

function toggled_searchroute_mode() {
    var frm = document.forms["map"];
    var val = is_searchroute_set();
    if (!val) {
	if (orig_action != "") {
	    frm.action = orig_action;
	}
	frm.coordset.value = "";
    } else {
        set_setcoord_action();
    }
	    
}

