src.dualinventive.com/mtinfo/dist/webroot/rc-4.05/html/javascript/rtstatus.js

366 lines
13 KiB
JavaScript

/** \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';
}