/** \file html\javascript\rtstatus.js * \brief ZKL webinterface realtime status javascript functions. * \author Rob Schalken, Core|Vision * \version 1.0 * \date 17-10-2008 * * This file contains the realtime status javascript functions */ /* * Global variables */ var ExtendedMenu = 0; var ExtendedPhase = 0; var ExtendedInfo = 1; /** * Content div sizes * */ function ContentSize() { // Remove scroll bars document.documentElement.style.overflow = 'hidden'; document.body.scroll = "no"; // menu rt info available? iframe_height = 0; try { if (ExtendedInfo) { iframe_height = parseInt(getElement('iframe_info').height); } } catch (e) {} // Resize divs try { getElement('map').style.top = parseInt(getElement('header').offsetHeight) + 'px'; getElement('map').style.height = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height + 'px'; getElement('content').style.height = getElement('map').style.height; } catch (e) {} try { getElement('extended_menu').style.height = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height + 'px'; } catch (e) {} try { getElement('arrow_info_hide').style.top = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height - 16 + 'px'; getElement('arrow_info_show').style.top = getElement('arrow_info_hide').style.top; try { getElement('arrow_info_hide_span').style.top = parseInt(ScreenHeight()) - parseInt(getElement('header').offsetHeight) - iframe_height - 16 + 'px'; getElement('arrow_info_show_span').style.top = getElement('arrow_info_hide').style.top; } catch (e) {} } catch (e) {} // Rebuild mapview control try { mapviewcontrol.forceRedraw(); } catch(e) {} } /** * Initialize extended menu and rt status * */ function Menu_rt_init(id, dir, debug) { // Debug enabled? DebugEnabled = debug; // Clear global variable ExtendedMenu = 0; // Write Cookie (needed for help file) write_cookie('extended_menu_' + id + '=' + ExtendedMenu); // Write openlayers image path if (dir.length) { OpenLayers.ImgPath = dir; } } /** * extended view menu * */ function Extend_Menu(direction, id) { if ((direction == 'show') && (!ExtendedMenu)) { // Hide hyperlink getElement('arrow_right_href').style.visibility = 'hidden'; // Show/hide arrows & menu getElement('arrow_right').style.visibility = 'hidden'; getElement('arrow_left').style.left = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10) + 'px'; getElement('arrow_left').style.visibility = 'visible'; getElement('arrow_left_bg').width = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10); getElement('arrow_left_bg').style.visibility = 'visible'; getElement('extended_menu').style.left = '-' + (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px'; try { getElement('arrow_left_span').style.left = ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10) + 'px'; getElement('arrow_left_span').style.visibility = 'visible'; } catch(e) {} // Skip first if (ExtendedPhase) { // Reinit extended zoom Extend_Zoom(1, (parseInt(getElement('extended_menu').offsetWidth)/10)); } // Handle timer if (ExtendedPhase < 10) { // Increment var ExtendedPhase++; // Recall function var func_extend = function() {Extend_Menu(direction,id);}; setTimeout(func_extend, 2); } else { // Reset var ExtendedPhase = 0; // Set global var ExtendedMenu = 1; // Show hyperlinks getElement('arrow_left_href').style.visibility = 'visible'; getElement('arrow_left_bg_href').style.visibility = 'visible'; } } else if ((direction == 'hide') && (ExtendedMenu)) { // Hide hyperlink getElement('arrow_left_href').style.visibility = 'hidden'; getElement('arrow_left_bg_href').style.visibility = 'hidden'; // Show/hide arrows & menu getElement('arrow_left').style.left = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px'; getElement('arrow_left_bg').width = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))); getElement('extended_menu').style.left = '-' + (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10)) + 'px'; try { getElement('arrow_left_span').style.left = (parseInt(getElement('extended_menu').offsetWidth) - (ExtendedPhase * (parseInt(getElement('extended_menu').offsetWidth)/10))) + 'px'; } catch(e) {} // Skip first if (ExtendedPhase) { // Reinit extended zoom Extend_Zoom(0, (parseInt(getElement('extended_menu').offsetWidth)/10)); } // Handle timer if (ExtendedPhase < 10) { // Increment var ExtendedPhase++; // Recall function var func_extend = function() {Extend_Menu(direction,id);}; setTimeout(func_extend, 5); } else { // Show/hide arrows getElement('arrow_left_bg').style.visibility = 'hidden'; getElement('arrow_left').style.visibility = 'hidden'; getElement('arrow_right').style.visibility = 'visible'; try { getElement('arrow_left_span').style.visibility = 'hidden'; } catch(e) {} // Reset var ExtendedPhase = 0; // Clear global var ExtendedMenu = 0; // Show hyperlink getElement('arrow_right_href').style.visibility = 'visible'; } } // Write Cookie (needed for help file) write_cookie('extended_menu_' + id + '=' + ExtendedMenu); } /** * extended info menu * */ function Extend_Info(direction) { if ((direction == 'show') && (!ExtendedInfo)) { // Show/hide arrows & hyperlinks getElement('info_show_href').style.visibility = 'hidden'; getElement('arrow_info_show').style.visibility = 'hidden'; try { getElement('arrow_info_show_span').style.visibility = 'hidden'; } catch (e) { } getElement('arrow_info_hide').style.visibility = 'visible'; getElement('info_hide_href').style.visibility = 'visible'; try { getElement('arrow_info_hide_span').style.visibility = 'visible'; } catch (e) { } // Show iframe info => second line rt status getElement('iframe_info').style.display = ''; // Set global var ExtendedInfo = 1; } else if ((direction == 'hide') && (ExtendedInfo)) { // Show/hide arrows & hyperlinks getElement('info_hide_href').style.visibility = 'hidden'; getElement('arrow_info_hide').style.visibility = 'hidden'; try { getElement('arrow_info_hide_span').style.visibility = 'hidden'; } catch (e) { } getElement('arrow_info_show').style.visibility = 'visible'; getElement('info_show_href').style.visibility = 'visible'; try { getElement('arrow_info_show_span').style.visibility = 'visible'; } catch (e) { } // Hide iframe info => second line rt status getElement('iframe_info').style.display = 'none'; // Clear global var ExtendedInfo = 0; } } /** * extended zoom control * */ function Extend_Zoom(direction, offset) { // offset defined? if(typeof(offset) == 'undefined') { offset = parseInt(getElement('extended_menu').offsetWidth); } if (direction) { try { getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left) + offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left) + offset + 'px'; getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left) + offset + 'px'; } catch (e) { /* Silent Exception */ } } else { try { getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panup').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panleft').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_panright').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_pandown').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomin').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_zoomout').style.left) - offset + 'px'; getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers.Control.PanZoomBar_2_OpenLayers.Map_7').style.left) - offset + 'px'; getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left = parseInt(getElement('OpenLayers_Control_PanZoomBar_ZoombarOpenLayers.Map_7').style.left) - offset + 'px'; } catch (e) { /* Silent Exception */ } } } /* * Get position of element in the DOM */ function getPos(el) { var x,w,y,h; var result; if (el.getBoundingClientRect) { var rect = el.getBoundingClientRect(); x = rect.left; w = rect.right - rect.left; y = rect.top; h = rect.bottom - rect.top; } else if (document.getBoxObjectFor) { var bo = document.getBoxObjectFor(el); x = bo.x; w = bo.width; y = bo.y; h = bo.height; } result = {x:x,y:y,w:w,h:h}; return result; } /* * Parse data coming from the rtstatus_datapump and pass it to the mapview */ function Comet_DataParser() { //DbgPrint ("Comet_DataParser()"); MyItemArray = Array(); MyItemArray[0] = ZKL_Status; HideNetworkError(); mapview_UpdateItems(MyItemArray); } /* * Handle a network error */ function Comet_NetworkError() { ShowNetworkError(); } /* * Show a network error */ function ShowNetworkError() { var mapdiv_rect = getPos(getElement('map')); Yoffs = getScrollY(); Xoffs = getScrollX(); getElement('errordiv').style.top = (mapdiv_rect.y+Yoffs)+"px"; getElement('errordiv').style.left = (mapdiv_rect.x+Xoffs)+"px"; getElement('errordiv').style.width = mapdiv_rect.w+"px"; getElement('errordiv').style.height = mapdiv_rect.h+"px"; getElement('errordiv').style.visibility = 'visible'; } /* * Hide a network error */ function HideNetworkError() { getElement('errordiv').style.visibility = 'hidden'; } /* * Show waiting message */ function ShowWaitingMessage() { var mapdiv_rect = getPos(getElement('map')); Yoffs = getScrollY(); Xoffs = getScrollX(); getElement('messagediv').style.top = (mapdiv_rect.y+Yoffs)+"px"; getElement('messagediv').style.left = (mapdiv_rect.x+Xoffs)+"px"; getElement('messagediv').style.width = mapdiv_rect.w+"px"; getElement('messagediv').style.height = mapdiv_rect.h+"px"; getElement('messagediv').style.visibility = 'visible'; } /* * Hide waiting message */ function HideWaitingMessage() { getElement('messagediv').style.visibility = 'hidden'; }