<?php
# $Id: mod_key.php 2413 2008-04-23 16:21:04Z christoph $
# http://www.mapbender.org/index.php/mod_key.php
# Copyright (C) 2002 CCGIS 
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

require_once(dirname(__FILE__)."/../php/mb_validateSession.php");
echo "var mod_key_map = '".$e_target[0]."';";

$sql = "SELECT e_id,e_element FROM gui_element WHERE (e_element = 'body' or e_element = 'iframe') AND fkey_gui_id = $1 AND e_public = 1";
$v = array($gui_id);
$t = array('s');
$res = db_prep_query($sql, $v, $t);
$cnt = 0;
while($row = db_fetch_array($res)){
	$ids[$cnt] = $row["e_id"];
	$elements[$cnt] = $row["e_element"];
	$cnt++;
}

echo "var mb_key_elements = new Array(";
for($i=0; $i < count($elements); $i++){
	if($i > 0){
		echo ",";
	}
	echo "'".$elements[$i]."'";
}
echo ");";
echo "var mb_key_ids = new Array(";
for($i=0; $i < count($ids); $i++){
	if($i > 0){ echo ",";}
	echo "'".$ids[$i]."'";
}
echo ");";
?>
if(ie){
   mb_registerInitFunctions('mod_key_init()'); 
}
function mod_key_init(){
	for(var i=0; i<mb_key_elements.length; i++){
		if(mb_key_elements[i] == "body"){
			document.getElementById(mb_key_ids[i]).onkeydown = mod_key_Keyhandler;
		}
		else{
			window.frames[mb_key_ids[i]].document.getElementsByTagName("body")[0].onkeydown = new Function("mod_key_Keyhandler('" +mb_key_ids[i] + "');");
		} 
	}  
}
function mod_key_Keyhandler(frameName){
	if(frameName){
		var code = eval("window.frames['"+frameName+"'].event.keyCode");
		focus();
	}
	else{
		var code = event.keyCode;
	}
	if(code == 187 || code == 107){
		zoom(mod_key_map,true, '2.0');
	}
	if(code == 189 || code == 109){
		zoom(mod_key_map,false, '2.0');
	}
	if(code == 32 || code == 13){
		setMapRequest(mod_key_map);
	}
	if(code == 37){
		mb_panMap(mod_key_map,"W");
	}
	if(code == 38){
		mb_panMap(mod_key_map,"N");
	}
	if(code == 39){
		mb_panMap(mod_key_map,"E");
	}
	if(code == 40){
		mb_panMap(mod_key_map,"S");
	}
}