/*************************************************** * ofop.five javascript loader */ var OFOP_DOMAIN = 'www.musikhaus-foerg.de'; var OFOP_BASE_URI = '/'; var LIB = '/lib/'; var JSLIB = '/jslib/'; var APPS = '/apps/'; var APPDATA = '/appdata/'; /* * util/windows.js */ var _intCurrEmbWinNum = 0; var _maryEmbeddedWindows = new Array(0); var EMBEDDED_WINDOW_TOOLBAR_HEIGHT = 20; var EMBEDDED_WINDOW_STATUSBAR_HEIGHT = 15; /** OBJECT ******************************************** * */ function EmbeddedWindow(strName, intX, intY, intWidth, intHeight) { this.name = strName + _intCurrEmbWinNum; this.mobjContainer = createElement('iframe', intWidth, intHeight - EMBEDDED_WINDOW_TOOLBAR_HEIGHT - EMBEDDED_WINDOW_STATUSBAR_HEIGHT, intX, intY + EMBEDDED_WINDOW_TOOLBAR_HEIGHT); this.mobjContainer.style.background = 'rgb(255,255,255)'; this.mobjContainer.style.zIndex = _intCurrEmbWinNum + 1; this.mobjContainer.id = strName; this.mobjTitleBar = createElement('div', intWidth, EMBEDDED_WINDOW_TOOLBAR_HEIGHT, intX, intY); this.mobjTitleBar.style.background = 'rgb(0,0,200)'; this.mobjTitleBar.style.zIndex = _intCurrEmbWinNum + 2; this.mobjTitleBar.style.textAlign = 'right'; this.mobjCloseButton = createImageButton('javascript:closeEmbeddedWindow(\'' + this.name + '\');', JSLIB + 'util/images/close.png', 'Close'); this.mobjMaxButton = createImageButton('javascript:maximizeEmbeddedWindow(\'' + this.name + '\');', JSLIB + 'util/images/maximize.png', 'Maximize'); this.mobjTitleBar.appendChild(this.mobjMaxButton); this.mobjTitleBar.appendChild(this.mobjCloseButton); this.mobjSatusBar = createElement('div', intWidth, EMBEDDED_WINDOW_STATUSBAR_HEIGHT, intX, intY + intHeight - EMBEDDED_WINDOW_STATUSBAR_HEIGHT); this.mobjSatusBar.style.background = 'rgb(200,200,200)'; this.mobjSatusBar.style.zIndex = _intCurrEmbWinNum + 2; this.mobjSizeGrip = createElement('div', EMBEDDED_WINDOW_STATUSBAR_HEIGHT, EMBEDDED_WINDOW_STATUSBAR_HEIGHT, intX + intWidth - EMBEDDED_WINDOW_STATUSBAR_HEIGHT, intY + intHeight - EMBEDDED_WINDOW_STATUSBAR_HEIGHT); this.mobjSizeGrip.style.background = 'rgb(150,150,150)'; this.mobjSizeGrip.style.zIndex = _intCurrEmbWinNum + 3; this.mobjDragFrame = createElement('div', 0, 0, 0, 0); this.mobjDragFrame.style.border = '2px solid white'; this.mobjDragFrame.style.zIndex = _intCurrEmbWinNum + 2; this.mobjDragFrame.style.visibility = 'hidden'; gobjCurrDocument.getBody().appendChild(this.mobjTitleBar); gobjCurrDocument.getBody().appendChild(this.mobjContainer); gobjCurrDocument.getBody().appendChild(this.mobjSatusBar); gobjCurrDocument.getBody().appendChild(this.mobjSizeGrip); gobjCurrDocument.getBody().appendChild(this.mobjDragFrame); enableDrag(this.mobjTitleBar); enableDrag(this.mobjSizeGrip); addDragListenerObject(this); _maryEmbeddedWindows = pushArray(_maryEmbeddedWindows, this); _intCurrEmbWinNum++; } /****************************************************** */ EmbeddedWindow.prototype.setLocation = function(strUrl) { this.mobjContainer.src = strUrl; } /****************************************************** */ EmbeddedWindow.prototype.getLocation = function() { return this.mobjContainer.src; } /****************************************************** */ EmbeddedWindow.prototype.close = function() { gobjCurrDocument.getBody().removeChild(this.mobjSizeGrip); gobjCurrDocument.getBody().removeChild(this.mobjSatusBar); gobjCurrDocument.getBody().removeChild(this.mobjTitleBar); gobjCurrDocument.getBody().removeChild(this.mobjContainer); } /****************************************************** */ EmbeddedWindow.prototype.beginDrag = function(objDrag) { if( (objDrag == this.mobjTitleBar) || (objDrag == this.mobjSizeGrip) ) { this.mobjContainer.style.visibility = 'hidden'; this.mobjDragFrame.style.visibility = 'visible'; this.mobjDragFrame.style.left = this.mobjTitleBar.offsetLeft + 'px'; this.mobjDragFrame.style.top = this.mobjTitleBar.offsetTop + 'px'; this.mobjDragFrame.style.width = this.mobjContainer.style.width; this.mobjDragFrame.style.height = (this.mobjContainer.offsetHeight + this.mobjTitleBar.offsetHeight + this.mobjSizeGrip.offsetHeight) + 'px'; } } /****************************************************** */ EmbeddedWindow.prototype.endDrag = function(objDrag) { if( (objDrag == this.mobjTitleBar) || (objDrag == this.mobjSizeGrip) ) { this.mobjContainer.style.visibility = 'visible'; this.mobjDragFrame.style.visibility = 'hidden'; } } /****************************************************** */ EmbeddedWindow.prototype.onDrag = function(objDrag) { if( objDrag == this.mobjTitleBar ) { this.mobjContainer.style.left = objDrag.offsetLeft + 'px'; this.mobjContainer.style.top = (objDrag.offsetTop + objDrag.offsetHeight) + 'px'; this.mobjDragFrame.style.left = objDrag.offsetLeft + 'px'; this.mobjDragFrame.style.top = objDrag.offsetTop + 'px'; this.mobjSatusBar.style.left = objDrag.offsetLeft + 'px'; this.mobjSatusBar.style.top = (objDrag.offsetTop + objDrag.offsetHeight + this.mobjContainer.offsetHeight) + 'px'; this.mobjSizeGrip.style.left = (objDrag.offsetLeft + objDrag.offsetWidth - this.mobjSizeGrip.offsetWidth) + 'px'; this.mobjSizeGrip.style.top = (objDrag.offsetTop + objDrag.offsetHeight + this.mobjContainer.offsetHeight) + 'px'; } else if( objDrag == this.mobjSizeGrip ) { this.mobjContainer.style.width = (objDrag.offsetLeft + objDrag.offsetWidth - this.mobjContainer.offsetLeft) + 'px'; this.mobjContainer.style.height = (objDrag.offsetTop - this.mobjContainer.offsetTop) + 'px'; this.mobjDragFrame.style.width = this.mobjContainer.style.width; this.mobjDragFrame.style.height = (this.mobjContainer.offsetHeight + this.mobjTitleBar.offsetHeight + this.mobjSizeGrip.offsetHeight) + 'px'; this.mobjSatusBar.style.width = this.mobjContainer.style.width; this.mobjSatusBar.style.top = objDrag.offsetTop + 'px'; this.mobjTitleBar.style.width = this.mobjContainer.style.width; } } /****************************************************** * */ function closeEmbeddedWindow(strName) { for( var i=0 ; i < _maryEmbeddedWindows.length ; i++ ) { if( _maryEmbeddedWindows[i].name == strName ) { _maryEmbeddedWindows[i].close(); return; } } } /****************************************************** * */ function maximizeEmbeddedWindow(strName) { for( var i=0 ; i < _maryEmbeddedWindows.length ; i++ ) { if( _maryEmbeddedWindows[i].name == strName ) { window.document.location.href = OFOP_BASE_URI + 'apps/desktop/maximizedFrame.php?url=' + _maryEmbeddedWindows[i].getLocation(); return; } } } // /****************************************************** * */ /*public*/ var gobjCurrDocument = new CurrentDocument(); /** OBJECT ******************************************** * */ function CurrentDocument() { this.mobjBody = null; } /****************************************************** * */ CurrentDocument.prototype.getBody = function() { if( this.mobjBody == null ) this.mobjBody = getElementByTag('body'); return this.mobjBody; } /****************************************************** * */ function getDocument(vntElement) { var objElement = null; if( typeof vntElement == 'object' ) objElement = vntElement; else objElement = getElement(vntElement); if (objElement.contentDocument) return objElement.contentDocument; if (objElement.contentWindow) return IFrameObj.contentWindow.document; if (objElement.document) return objElement.document; } /****************************************************** * */ function getElement(strID) { return document.getElementById(strID); } /****************************************************** * */ function getElementByTag(strName) { var objElements = document.getElementsByTagName(strName); if( objElements != null ) return objElements.item(0); return null; } /****************************************************** * params 2-n are optional */ function createElement(strTagName, intWith, intHeight, intLeft, intTop) { var objResult = document.createElement(strTagName); objResult.style.padding = 0 + 'px'; objResult.style.margin = 0 + 'px'; objResult.style.border = 'none'; if( arguments.length > 1 ) objResult.style.width = intWith + 'px'; if( arguments.length > 2 ) objResult.style.height = intHeight + 'px'; if( arguments.length > 3 ) { objResult.style.position = 'absolute'; objResult.style.left = intLeft + 'px'; } if( arguments.length > 4 ) objResult.style.top = intTop + 'px'; return objResult; } /****************************************************** * */ function createText(strText) { return document.createTextNode(strText); } /****************************************************** * */ function addEvent(objSource, strEvent, objFunction) { strEvent = strEvent.toLowerCase(); if( objSource.addEventListener ) objSource.addEventListener(strEvent, objFunction, false); else objSource.attachEvent('on' + strEvent, objFunction); } /****************************************************** * */ function getEventTarget(objEvent) { if( objEvent == null ) { alert( 'getEventTarget: objEvent == null' ); return null; } if( objEvent.srcElement ) return objEvent.srcElement; else if( objEvent.target ) return objEvent.target; else return null; } /****************************************************** * */ function getMousePos(objEvent) { if( objEvent == null ) { alert( 'getMousePos: objEvent == null' ); return null; } //debugObject(objEvent); try { var objResult = new Rectangle(); if(objEvent.x) { objResult.left = objEvent.x; objResult.top = objEvent.y; } else { objResult.left = objEvent.pageX; objResult.top = objEvent.pageY; } return objResult; } catch( exception ) { return null; } } /****************************************************** * */ function getMouseButton(objEvent) { if( objEvent == null ) { alert( 'getMouseButton: objEvent == null' ); return -1; } var button = 1; if( objEvent.button ) { button=objEvent.button; } else { button=objEvent.which; } return button; } /** OBJECT ******************************************** * */ function Rectangle() { this.left = 0; this.top = 0; this.width = 0; this.height = 0; } /****************************************************** * */ function getAbsolutePosition(objElement) { var objPos = new Rectangle(); objPos.width = objElement.offsetWidth; objPos.height = objElement.offsetHeight; while( objElement != null ) { objPos.left += objElement.offsetLeft; objPos.top += objElement.offsetTop; objElement = objElement.offsetParent; } return objPos; } /****************************************************** * */ function getClientSize() { var objResult = new Rectangle(); if( typeof(window.innerWidth) == 'number' ) { // Not IE objResult.width = window.innerWidth; objResult.height = window.innerHeight; } else if( document.documentElement && document.documentElement.clientWidth ) { //IE 6+ in 'standards compliant mode' objResult.width = document.documentElement.clientWidth; objResult.height = document.documentElement.clientHeight; } else if( document.body && document.body.clientWidth ) { //IE 4 compatible objResult.width = document.body.clientWidth; objResult.height = document.body.clientHeight; } return objResult; } /****************************************************** * */ function debugObject(objCurr) { var strResult = ''; if( objCurr == null ) strResult = 'NULL'; else { for(var strCurr in objCurr) { strResult += strCurr + ' = ' + objCurr[strCurr] + "\n"; } } debugWin(strResult); } /****************************************************** * */ function debugWin(strText) { var strOptions = 'width=700,height=550,toolbar=0,scrollbars=1'; var objWin = window.open('', 'DebugWin', strOptions); objWin.document.write('
' + strText + ''); objWin.document.close(); objWin.moveTo(10, 10); objWin.focus(); } /****************************************************** * */ var BUTTON_BACKGROUND = 'rgb(150,150,150)'; var BUTTON_COLOR = 'rgb(255,255,255)'; var BUTTON_BORDER = '1px solid #aaaaaa'; var BUTTON_FONTWEIGHT = 'bold'; /****************************************************** * */ function createButton(strHref, strCaption) { var objResult = createElement('a'); objResult.style.background = BUTTON_BACKGROUND; objResult.style.color = BUTTON_COLOR; objResult.style.border = BUTTON_BORDER; objResult.style.fontWeight = BUTTON_FONTWEIGHT; objResult.href = strHref; objResult.appendChild( createText(strCaption) ); return objResult; } /****************************************************** * */ function createImageButton(strHref, strImage, strTitle) { var objResult = createElement('a'); objResult.href = strHref; //objResult.setAttribute('title', strTitle); objResult.title = strTitle; var objImage = createElement('img'); objImage.style.border = 'none'; objImage.src = strImage; //objImage.setAttribute('alt', strTitle); objImage.alt = strTitle; objResult.appendChild( objImage ); return objResult; } /****************************************************** * */ /*private*/ var _boolDragInitialized = false; var _objCurrDrag = null; var _intLastX = 0; var _intLastY = 0; var _maryListeningFunctions = new Array(0); var _maryListeningObjects = new Array(0); /****************************************************** * param 2 is optional */ function enableDrag(vntElement) { var objDrag = null; if( typeof vntElement == 'object' ) objDrag = vntElement; else objDrag = getElement(vntElement); if( objDrag == null ) { alert( 'No such Element: ' + vntElement ); return; } objDrag.style.cursor = 'move'; if( objDrag.style.position != 'absolute' ) { var objPos = getAbsolutePosition(objDrag); objDrag.style.position = 'absolute'; objDrag.style.left = objPos.left; objDrag.style.top = objPos.top; objDrag.style.width = objPos.width; objDrag.style.height = objPos.height; } addEvent(objDrag, 'MouseDown', _dragMouseDown); addEvent(objDrag, 'MouseUp', _dragMouseUp); if( ! _boolDragInitialized ) { addEvent( document, 'MouseMove', _dragMouseMove ); addEvent( document, 'MouseUp', _dragMouseUp ); _boolDragInitialized = true; } } /****************************************************** * */ function addDragListener(listenerFunction) { _maryListeningFunctions = pushArray(_maryListeningFunctions, listenerFunction); } /****************************************************** * * listenerObject must implement: * onDrag(objDraggedElement) * beginDrag(objDraggedElement) * endDrag(objDraggedElement) * */ function addDragListenerObject(listenerObject) { _maryListeningObjects = pushArray(_maryListeningObjects, listenerObject); } /****************************************************** * */ function _dragMouseDown(objEvent) { if( _objCurrDrag != null ) return; var objMousePos = getMousePos(objEvent); _intLastX = objMousePos.left; _intLastY = objMousePos.top; _objCurrDrag = getEventTarget(objEvent); if( _objCurrDrag == null ) return; for( var i=0 ; i < _maryListeningObjects.length ; i++ ) _maryListeningObjects[i].beginDrag(_objCurrDrag); hideChilds( _objCurrDrag, true ); } /****************************************************** * */ function _dragMouseUp(objEvent) { if( _objCurrDrag == null ) return; for( var i=0 ; i < _maryListeningObjects.length ; i++ ) _maryListeningObjects[i].endDrag(_objCurrDrag); hideChilds( _objCurrDrag, false ); _objCurrDrag = null; } /****************************************************** * */ function _dragMouseMove(objEvent) { if( _objCurrDrag == null ) return true; var objMousePos = getMousePos(objEvent); if( objMousePos == null ) { //alert( 'Cant get MousePosr' ); return; } //debugObject( objMousePos ); try { _objCurrDrag.style.left = (parseInt(_objCurrDrag.style.left) + (objMousePos.left - _intLastX)) + 'px'; _objCurrDrag.style.top = (parseInt(_objCurrDrag.style.top) + (objMousePos.top - _intLastY)) + 'px'; for( var i=0 ; i < _maryListeningFunctions.length ; i++ ) _maryListeningFunctions[i](_objCurrDrag); for( var i=0 ; i < _maryListeningObjects.length ; i++ ) _maryListeningObjects[i].onDrag(_objCurrDrag); } catch( exception ) { alert( exception ); } _intLastX = objMousePos.left; _intLastY = objMousePos.top; return false; } /****************************************************** * */ var WINDOW_OPTIONS_FIXED_DIALOG = 'menubar=0,directories=0,locationbar=0,toolbar=0,scrollbars=0,resizable=0,status=0'; var WINDOW_OPTIONS_RESIZE_DIALOG = 'menubar=0,directories=0,locationbar=0,toolbar=0,scrollbars=1,resizable=1,status=0'; var WINDOW_OPTIONS_STATUS_DIALOG = 'menubar=0,directories=0,locationbar=0,toolbar=0,scrollbars=1,resizable=1,status=1'; var WINDOW_OPTIONS_APP_WIN = 'menubar=0,directories=0,locationbar=1,toolbar=1,scrollbars=1,resizable=1,status=1'; var WINDOW_OPTIONS_DEFAULT = WINDOW_OPTIONS_APP_WIN; var WINDOW_TYPE_WINDOW = 1; var WINDOW_TYPE_DIALOG = 2; var WINDOW_TYPE_FIXED_DIALOG = 4; var WINDOW_TYPE_EMBEDDED = 3; var WINDOW_TYPE_DEFAULT = WINDOW_TYPE_EMBEDDED; /****************************************************** * */ function openWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight, intWinType) { var intWindowType = WINDOW_TYPE_DEFAULT; if( intWidth < 0 ) intWidth = getAvailableSize().width - intPosX + intWidth; if( intHeight < 0 ) intHeight = getAvailableSize().height - intPosY + intHeight; if( intWinType != null ) intWindowType = intWinType; if( intWindowType == WINDOW_TYPE_WINDOW ) openNewWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight, WINDOW_OPTIONS_DEFAULT); else if( intWindowType == WINDOW_TYPE_DIALOG ) openDialogWindow(strName, strURL, intWidth, intHeight, WINDOW_OPTIONS_DEFAULT); else if( intWindowType == WINDOW_TYPE_FIXED_DIALOG ) openDialogWindow(strName, strURL, intWidth, intHeight, WINDOW_OPTIONS_FIXED_DIALOG); else if( intWindowType == WINDOW_TYPE_EMBEDDED ) openEmbeddedWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight); else openNewWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight, WINDOW_OPTIONS_DEFAULT); } /****************************************************** * */ function openEmbeddedWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight) { var objWin = new EmbeddedWindow(strName, intPosX, intPosY, intWidth, intHeight); objWin.setLocation(strURL); } /****************************************************** * */ function openDialogWindow(strName, strURL, intWidth, intHeight, strOptions) { openNewWindow( strName, strURL, (screen.availWidth- intWidth)/ 2, (screen.availHeight - intHeight)/ 2, intWidth, intHeight, strOptions ); } /****************************************************** * */ function openNewWindow(strName, strURL, intPosX, intPosY, intWidth, intHeight, strOptions) { strOptions += ",width=" + intWidth + ",height=" + intHeight + ",left=" + intPosX + ",top=" + intPosY; var objWin = window.open(strURL, strName, strOptions); objWin.focus(); } /****************************************************** * */ function openImageWindow(strImageUrl, intWidth, intHeight) { if( typeof(GB_myShow) != 'undefined' ) { GB_myShow('', strImageUrl); return; } else if( typeof(GB_showImage) != 'undefined' ) { GB_showImage('', strImageUrl); return; } else if( typeof(Slimbox) != 'undefined' ) { Slimbox.open(strImageUrl, ""); return; } var objWin = window.open('', 'ImageWin', 'left=50,top=50,width=' + intWidth + ',height=' + intHeight + ',menubar=0,directories=0,locationbar=0,toolbar=0,scrollbars=1,resizable=1,status=0'); objWin.document.write('<' + '!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"' + '>'); objWin.document.write('<' + 'html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de"' + '>'); objWin.document.write('<' + 'head' + '><' + 'meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /' + '>'); objWin.document.write('<' + 'style type="text/css"' + '>'); objWin.document.write('html, body{ padding: 0px; margin: 0px; background-color: #aaaaaa; text-align: center;}'); objWin.document.write('img{ display: block; padding: 0px; margin: 0px;}'); objWin.document.write('<' + '/style>'); objWin.document.write('<' + 'script type="text/javascript"' + '>'); objWin.document.write('var img = new Image();'); objWin.document.write('function getSize(){'); objWin.document.write('img.onload = fit;'); objWin.document.write('img.src = "' + strImageUrl + '";'); objWin.document.write('}'); objWin.document.write('function fit(){'); objWin.document.write('window.resizeBy(img.width-document.documentElement.clientWidth, img.height-document.documentElement.clientHeight);'); objWin.document.write('}'); objWin.document.write('<' + '/script' + '><' + '/head' + '>'); objWin.document.write('<' + 'body onload="getSize()">'); objWin.document.write('<' + 'img src="' + strImageUrl + '" alt="" /' + '>'); objWin.document.write('<' + '/body' + '>'); objWin.document.write('<' + '/html' + '>'); objWin.document.close(); objWin.focus(); } /****************************************************** * */ function getAvailableSize() { var objResult = new Rectangle(); if( window.innerHeight ) { objResult.height = window.innerHeight; objResult.width = window.innerWidth; } else if( document.documentElement.clientHeight ) { objResult.height = document.documentElement.clientHeight; objResult.width = document.documentElement.clientWidth; } else if( document.body.clientHeight ) { objResult.height = document.body.clientHeight; objResult.width = document.body.clientWidth; } return objResult; }