/* CAMPUSonline - Javascript KB.:globalwinmanagement ------------------------------------------------------------------------------------- $Revision: $ -------------------------------------------------------------------------------------*/ // TH: 16.10.2007 function openInDetailFrame( pHref ) { if (opener == null) { window.location.href = pHref; } else { var vTarget = opener; while (vTarget.opener != null) {vTarget = vTarget.opener;} if(vTarget.name=='detail' ) {vTarget.location.href = pHref; vTarget.focus(); } else {vTarget.parent.frames['detail'].location.href = pHref; vTarget.parent.frames['detail'].focus(); } } } var GLOBALLOVSucheArr = new Array(); //windowexists? function GLOBALwindowExists (pWinName) { if (typeof(navigator[pWinName]) == 'undefined' || navigator[pWinName] == null || navigator[pWinName].closed) { return false; } else { return true; } } //windowcloser function GLOBALcloseWindow (pWinName) { if (GLOBALwindowExists(pWinName)) navigator[pWinName].close(); } //windowfocusser function GLOBALfocusWindow (pWinName) { if (GLOBALwindowExists(pWinName)) navigator[pWinName].focus(); } //windowopener function GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar) { var pLocationbar="NO"; var pResizable="YES"; var pScrollbars="YES"; var pStatusbar="YES"; var pToolbar="NO"; var vTop; var vMenubar; var vWinName; var vLeft; /** * MGö, 10.06.2005 * Safari Problem bei Nicht-Existenz von Parametern * wird 'undefined' verursacht. */ vMenubar = (typeof(pMenubar) == 'undefined'|| pMenubar == null || pMenubar == "") ? "YES" : pMenubar; vWinName = (typeof(pWinName) == 'undefined' || pWinName == null || pWinName == "") ? 'COWindow' + new Date().getTime() : pWinName; vTop = (typeof(pTop) == 'undefined' || pTop == null || pTop == "") ? 0 : pTop; vLeft = (typeof(pLeft) == 'undefined' || pLeft == null || pLeft == "") ? 20 : pLeft; var vNewOptions = "height=" + pHeight + ",width=" + pWidth + ",left=" + vLeft + ",top=" + vTop + ",location=" + pLocationbar + ",menubar=" + vMenubar + ",resizable=" + pResizable + ",scrollbars=" + pScrollbars + ",status=" + pStatusbar + ",toolbar=" + pToolbar; /* zoni: IE9 macht Probleme, FF braucht mehr Speicher var pNewWindow = open ( "" , vWinName , vNewOptions); //Folgender try catch Block == IE-Hack try { if( self.Prototype && Prototype.Browser && Prototype.Browser.IE9 ) { } else { pNewWindow.document.write("
Fensterinhalt wird geladen ...
"); pNewWindow.focus(); } } catch(exc) { pNewWindow.close(); } */ pNewWindow = open ( pUrl , vWinName , vNewOptions); pNewWindow.focus(); //neues Fenster an das navigator Objekt hängen navigator[vWinName] = pNewWindow; if (navigator[vWinName].opener == null) navigator[vWinName].opener = self; } //different sizes function GLOBALfullScreenWindow (pUrl,pWinName,pMenubar) { var pHeight = screen.height; var pWidth = screen.width; var pLeft = 0; var pTop = 0; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function GLOBALsmallWindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var pHeight = 30 * GLOBALSizeMult; var pWidth = 40 * GLOBALSizeMult; var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width; if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function GLOBALformsWindow (pUrl,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var vMenubar = (typeof(pMenubar) == 'undefined' || pMenubar == null || pMenubar == "") ? "NO" : pMenubar; //var pHeight = 768; // haui old //var pWidth = 1024; // haui old var pHeight = 1024; // haui new var pWidth = 1280; // haui new var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; var vTime = new Date(); /** Es sollen verschiedene WebFormsAnwendungen gleichzeitig gestartet werden können, daher muß das HTML-Fenster jedes Mal anders heißen. MHa, 15.09.2004 **/ var vWinName = 'WebFormWindow' + vTime.getTime(); GLOBALopenWindow (pUrl,vWinName,pHeight,pWidth,pLeft,pTop,vMenubar); } function GLOBALwindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var vPos = 0; var pHeight = 45 * GLOBALSizeMult; var pWidth = 60 * GLOBALSizeMult; var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width; if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function GLOBALtinyWindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var pHeight = 24 * GLOBALSizeMult; var pWidth = 32 * GLOBALSizeMult; var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width;if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function GLOBALnarrowWindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var pHeight = 60 * GLOBALSizeMult; var pWidth = 45 * GLOBALSizeMult; var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width; if (vPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function GLOBALsmallNarrowWindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var pHeight = 40 * GLOBALSizeMult; var pWidth = 30 * GLOBALSizeMult; var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width;if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); } function openVkWindow(pUrl){ var winName = "SVI"; var menuBar = "YES"; var pTop = 20; var pLeft = 20; var pHeight = 48 * GLOBALSizeMult; var pWidth = 50 * GLOBALSizeMult; if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width; GLOBALopenWindow (pUrl,winName,pHeight,pWidth,pLeft,pTop,menuBar); } function GLOBALvkWindow (corg, cpers, cstud, cextpers){ if (cstud == null) cstud = 0; if (cpers == null) cpers = 0; if (corg == null) corg = ''; var vExtPers = (typeof(cextpers) == 'undefined' || cextpers == null || cextpers == "") ? 0 : cextpers; var url= "visitenkarte.show_vcard?corg=" + corg + "&cperson_nr=" + cpers + "&cst_person_nr=" +cstud+"&cext_person_nr="+vExtPers; openVkWindow(url); } function GLOBALvkEditWindow (corg, cpers){ if (corg == null) corg = ''; if (cpers == null) cpers = 0; var url= "visitenkarte.person_vcard_edit?corg=" + corg + "&cperson_nr=" + cpers + "&cwinmode=VCARD"; openVkWindow(url); } /** * @author MGoe * @date 05.04.06 * * Ruft die Visitenkarte mittels künstlichen Personen-Identifizierungsschlüssel * auf. * */ function GLOBALVcardWindow(pPersonenId, pPersonenGruppe){ if (pPersonenId == null) pPersonenId = ''; if (pPersonenGruppe == null) pPersonenGruppe = ''; var url= "visitenkarte.show_vcard?pPersonenId=" + pPersonenId + "&pPersonenGruppe=" +pPersonenGruppe; openVkWindow(url); } function GLOBALwideWindow (pUrl,pWinName,pMenubar,pPosLevel) { var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var vPos = 0; var pHeight = 45 * GLOBALSizeMult; var pWidth = 75 * GLOBALSizeMult; /* 1050 px */ var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pHeight>screen.height) pHeight=screen.height; if (pWidth>screen.width) pWidth=screen.width; if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); }; function GLOBALveryWideWindow (pUrl,pWinName,pMenubar,pPosLevel) { // Breite 90%; Höhe 75% var vWindowWidth = screen.width; var vWindowHeight = screen.height; var vPosLevel = (typeof(pPosLevel) == 'undefined' || pPosLevel == null || pPosLevel == "") ? 0 : pPosLevel; var vPos = 0; var pHeight = Math.floor(0.75 * vWindowHeight); var pWidth = Math.floor(0.90 * vWindowWidth); var pLeft = parseInt(0 + (30 * vPosLevel)); var pTop = parseInt(0 + (30 * vPosLevel)); if (pLeft > Math.floor(0.10 * vWindowWidth)) pLeft = Math.floor(0.10 * vWindowWidth); if (pTop > Math.floor(0.25 * vWindowHeight)) pTop = Math.floor(0.25 * vWindowHeight); if (pPosLevel==-1) { if (is.ie) { pLeft = ( top.screenLeft + Math.ceil((top.document.body.clientWidth - pWidth)/2)); pTop = ( top.screenTop + Math.ceil((top.document.body.clientHeight - pHeight)/2)); } else { pLeft = ( top.screenX + Math.ceil(( top.outerWidth - pWidth )/2)); pTop = ( top.screenY + Math.ceil(( top.outerHeight - pHeight )/2)); }; }; GLOBALopenWindow (pUrl,pWinName,pHeight,pWidth,pLeft,pTop ,pMenubar); }; /** * MGö, 13.12 Globales Email-Masken Window * Öffnet entweder ein Browser-Fenster oder den Standard-Mail-Client * 1.Variante: nur MailId ist nicht NULL es wird darauffolgend zu einer bestehenden Instanz * die erforderliche Email-Maske aufgerufen, hier kann mit dem Parameter pRcptListReadOnly festgelegt werden ob Email-Adressen noch entfernt werden dürfen(default => "N"). * 2.Variante: nur pUrl ist nicht NULL somit wird die übergebene URL im Email-Fenster * aufgeführt(z.B. es wird in der übergebenen Prozedur eine Instanz erstellt) * 3.Variante: pMail und pUrl sind NULL aber einer oder mehrere der anderen Parameter * werden übergeben. Auf Grund der übergebenen Parameter wird eine * Instanz nur mit einem Empfänger erzeugt(wird von genEmailLink verwendet */ function GLOBALEmailWindow (pMailId, pUrl, pRcptAdress, pRcptName, pSubject, pBody, pRcptListReadOnly, pRcptListLink,pClient){ var vUrl = ""; var vWinName = "emailWin"; var vArgLen = GLOBALEmailWindow.arguments.length; var vClient = "TGO"; if (vArgLen == 9) vClient = pClient; if (vClient == "" || vClient == "TGO") { if (pUrl == "" || pMailId == "") { vUrl = "wbMail.callMask?pRecipientAdress="+encodeURI(pRcptAdress)+"&pRecipientName="+encodeURI(pRcptName); vUrl = vUrl + "&pSubject=" + encodeURI(pSubject) + "&pBody=" + encodeURI(pBody); vWinName = "emailWin"; } if (pUrl != "") vUrl = pUrl; if (pMailId != "") { vUrl = "wbMail.callMask?pMailId="+pMailId; if (pRcptListReadOnly == "J") vUrl = vUrl + "&pRcptListReadOnly=J"; if (pRcptListLink == "N") vUrl = vUrl + "&pRcptListLink=N"; } GLOBALwindow (vUrl,vWinName,'NO',0); } if (vClient == "OWN") { vUrl = pRcptAdress; if (pSubject != "" || pBody != "") { vUrl = vUrl + '?subject=' + encodeURI( pSubject )+ '&body=' + encodeURI(pBody); } window.location.href = 'mailto:'+ vUrl ; } } /** * * Passback/callback Methode für LOV-Auswahlisten für generelle Suchtypen * * @param pIndex Index vom Idem dass ausgewählt wird * @param pSuchTyp Co-Suchtypen, bezeich_suche_bereich von co_such_bereiche * @param pApplLOVContext Context legt Passback-Routine fest, die zu verwenden ist * * @author MGö * @date 09.05.07 * */ function generalSearchLOVPassBack(pIndex, pSuchTyp, pApplLOVContext) { if (window.opener == null || window.opener.closed) return; if ( typeof opener.GLOBALLOVSucheArr != "undefined" && typeof opener.GLOBALLOVSucheArr[pSuchTyp] != "undefined" && typeof opener.GLOBALLOVSucheArr[pSuchTyp][pApplLOVContext] != "undefined") //eval ob auch fct existiert? { // .arity funktioniert nicht extension mozilla var vArgLen = eval("opener." + opener.GLOBALLOVSucheArr[pSuchTyp][pApplLOVContext]["FCT"] + ".length"); var vArgData = ""; for (i=0; i<=vArgLen && i<8; i++) if (i == 0) vArgData = "\""+GLOBALLOVResultArr[pIndex][i].replace(/'/,"\\'")+"\""; else vArgData += ",\""+GLOBALLOVResultArr[pIndex][i].replace(/'/,"\\'")+"\""; eval("opener." + opener.GLOBALLOVSucheArr[pSuchTyp][pApplLOVContext]["FCT"]+"(" + vArgData +")"); } } /** * * Initialisiert ein neues LOV-Auswahlfenster, in Folge kann mittels GLOBALSearchLOVWindow * ein solches Fenster geoeffnet werden, diese Methode muss zwingend, bevor das Fenster * geoeffnet wird, aufgerufen werden. * * @param pSuchTyp Co-Suchtypen, bezeich_suche_bereich von co_such_bereiche * Dzt. unterstützt PERSON, RAUM, ORG * @param pApplContext Context legt Passback-Routine fest, die zu verwenden ist, * d.h. eine Suche kann mehrfach verwendet werden, für unterschiedliche * Zwecke, es muss dafür nur jeweils ein eigener Context festgelegt werden * @param pPassbackMethode JS-Methode die bei einer Auswahl die benötigten Daten entgegen nimmt * @param pSuchBegriff erzwingt eine sofortige Suche mit dem festgelegten Kriterium * @param pPersonGruppe Bei Personensuche soll auf die gewünschte Gruppe eingeschränkt werden, * standardmäßig erfolgt eine Suche nach Studierenden(nur authentifiziert) und Bediensteten * * @author MGö * @date 14.05.07 * */ function initSearchLOV(pSuchTyp, pApplContext, pPassbackMethode, pSuchBegriff, pPersonGruppe) { var vSuchTyp = pSuchTyp.toUpperCase(); var vCtx = (typeof(pApplContext) == "undefined" || pApplContext == null || pApplContext== "") ? vSuchTyp : pApplContext.toUpperCase(); var vSCrit = (typeof(pSuchBegriff) == "undefined" || pSuchBegriff == null) ? "" : pSuchBegriff; var vPersGrp = (typeof(pPersonGruppe) == "undefined" || pPersonGruppe == null) ? "" : pPersonGruppe; //Neuer Context f. Appl registrieren if (typeof GLOBALLOVSucheArr[vSuchTyp] == "undefined") GLOBALLOVSucheArr[vSuchTyp] = new Array(); GLOBALLOVSucheArr[vSuchTyp][vCtx] = new Array(); GLOBALLOVSucheArr[vSuchTyp][vCtx]["FCT"] = pPassbackMethode; GLOBALLOVSucheArr[vSuchTyp][vCtx]["PGRP"] = vPersGrp; GLOBALLOVSucheArr[vSuchTyp][vCtx]["CRIT"] = pSuchBegriff; } /** * * Generelles Fenster zum Öffnen von generellen Suchen im LOV-Auswahlmodus, nur erlaubt nachdem * initSearchLOV() bereits aufgerufen wurde * * * @author MGö * @date 09.05.07 * */ function GLOBALSearchLOVWindow(pSuchTyp, pApplContext, pPosLevel) { var vUrl = "wbSuche.callLOVSuche"; var vSuchTyp = pSuchTyp.toUpperCase(); var vCtx = (typeof(pApplContext) == "undefined" || pApplContext == null || pApplContext== "") ? vSuchTyp : pApplContext.toUpperCase(); var vWinName = "winSuchLOV_" + vSuchTyp + "_" + vCtx; if ( typeof GLOBALLOVSucheArr[vSuchTyp] != "undefined" && typeof GLOBALLOVSucheArr[vSuchTyp][vCtx] != "undefined") { vUrl += "?pSuchTyp=" + vSuchTyp + "&pPersonGruppe=" + GLOBALLOVSucheArr[vSuchTyp][vCtx]["PGRP"] + "&pApplLOVContext=" + vCtx + "&pSuchBegriff=" + GLOBALLOVSucheArr[vSuchTyp][vCtx]["CRIT"]; //Fenster öffnen GLOBALwindow (vUrl, vWinName, 'NO', pPosLevel); } }