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