/* charset-encoding="UTF-8" */

/*
  Copyright 2013 Persis GmbH
*/

/**
 * Bibliothek zur einheitlichen Definition von Popup-Fenstern in iPersis
 * [24.05.2007] lo: Seiten werden jetzt immer im "zurueck.frame" geöffnet. Benötigt dann auch "string.js" und "coding.js".
 * [17.03.2008] wb: popupWindow: QVGA und VGA eingefügt
 * [25.03.2009] kw: Parameter allowExternal hinzugefügt. Verhashter Parameter, der beim Aufruf von domainfremden Seiten 1 enthalten muss 
 *                  damit im zurueck.frame keine CrossSite Prüfung passiert (die den Aufruf verhindern würde).
 * [08.06.2010] lo: popupWindow() bekommt einen Default-Title
 * [14.06.2010] lo: makeWindowTitle() generiert einen kompatiblen Window-Title
 * [14.06.2010] lo: popupWindow(): aus dem Titel werden Sonderzeichen rausgenommen (ersetzt durch "_")
 * [17.06.2010] lo: popupWindow(): Ersetzung korrigiert
 * [07.07.2011] lo: Namespace-Deklaration für persis.require() ergänzt (persis.old_scripts.popup_js). 
 * [01.03.2013] la: getWndHandle ergänzt
 * [25.03.2013] lo: Abhängigkeiten manuell noch hier ergänzt, falls die Script-Datei direkt per <script>-Tag geladen wurde. 
 * [19.04.2013] la: Freie Fenstergröße im Parameter "size" über JSON-Objekt möglich
 * [08.06.2016] sts: Parameter noFrame ergänzt, um den zurück-Frame in popupWindow auszublenden
 */

/**
 * Namespace-Deklaration für persis.require()
 */
if(typeof persis != 'undefined') {
	persis.old_scripts = persis.old_scripts || {};
	persis.old_scripts.popup_js = true;
	
	persis.require('persis.old_scripts.coding_js');
	persis.require('persis.old_scripts.string_js');
}

/**
 * Macht aus dem angegebenen Titel einen Browser kompatiblen Window-Title.
 * @param {String} title
 * @returns {String}
 */
function makeWindowTitle(title) {
	if(!title)
		title = "popup" + Math.floor(Math.random() * 100000);
	else
		title = title.replace(/[^0-9a-zA-Z_]/g, "_");
	return title;
}

/**
 * Öffnet ein Popup-Fenster gemäß fest definierten Persis-Stilen
 */
function popupWindow(url, title, size, type, print, tool_url, allowExternal, getWndHandle, noFrame)
{   
	// Parameter tool_url wird für Vorschau benötigt
	
    // Defaults
    var width = 700;
    var height = 500;
    var left = 0;
    var top = 0;
    var wndprops = "status=yes,menubar=no,resizable=yes,scrollbars=no,toolbar=no";
    var tool_pos;
    
    // -------------- Window-Größen --------------
    /*
        Einige Fenstergrößen in iPersis:
          w x h
        300 x 200
        300 x 500
        600 x 400        
        700 x 500
        720 x 600
        800 x 480 
    */    
	
    if (typeof size == 'object') 
    {
        width = size.width;
        height = size.height;
    }
    else if (size.toUpperCase() == 'S')
    {
       width = 300;
       height = 500; 
    }
    else if(size.toUpperCase() == 'QVGA')
    {
       width = 320;
       height = 240; 
    }
    else if(size.toUpperCase() == 'SS')
    {
       width = 300;
       height = 100; 
    }
    else if(size.toUpperCase() == 'VGA')
    {
       width = 640;
       height = 480; 
    }
    else if(size.toUpperCase() == 'M')
    {
       width = 700;
       height = 500; 
    }
    else if(size.toUpperCase() == 'L')
    {
       width = 800;
       height = 600;         
    }  
    else if(size.toUpperCase() == 'WL')
    {
       width = 800;
       height = 500;         
    }  
    else if(size.toUpperCase() == 'XL')
    {
       width = 800;
       height = 600;         
    }
    else if(size.toUpperCase() == 'WXL')
    {
       width = 1000;
       height = 700;
    }
    else if(size.toUpperCase() == 'XXL')
    {
        width = screen.availWidth - 40;
        height = screen.availHeight - 80;
    }
    else if(size.toUpperCase() == 'DYN')
    {
        width = screen.availWidth * 0.85;
        height = screen.availHeight * 0.85;
    }
    
    left = (screen.availWidth/2) - (width/2);
    top = (screen.availHeight/2) - (height/2);
    //alert(size);

    // -------------- Window-Typen --------------
    if (type.toUpperCase() == 'DEFAULT')
    {    
        wndprops = 'status=yes,menubar=no,resizable=yes,scrollbars=yes,toolbar=no';  
    }
    else if (type.toUpperCase() == 'TOOLBAR')
    {
        wndprops = 'status=yes,menubar=no,resizable=yes,scrollbars=yes,toolbar=yes';  
    }
    else if (type.toUpperCase() == 'MENUBAR')
    {
        wndprops = 'status=yes,menubar=yes,resizable=yes,scrollbars=yes,toolbar=no';  
    }
    else if (type.toUpperCase() == 'FULL')
    {
        wndprops = 'status=yes,menubar=yes,resizable=yes,scrollbars=yes,toolbar=no';  
    }   

    // -------------- Window anzeigen --------------   
    // Einstellungen zusammenbauen
    var wnddef = wndprops + ',width=' + width + ',height=' + height + ',top=' + top + ',left=' + left;       
    //alert(wnddef);
    
    if(typeof print == 'undefined') {
        print = '1';
    }
    
    if(typeof getWndHandle == 'undefined') {
        getWndHandle = '';
    }    
	
    if(typeof allowExternal == 'undefined') {
        allowExternal = '';
    }
	
	// Variablen für Vorschau
	if(typeof tool_url == 'undefined') 
	{	tool_url = '';
		tool_pos = '';
        }
	else
	{	tool_pos = 'top';	}
	
	 // Fenster anzeigen
    var frame_url;
    // Der zurueck.frame wird nur dann automatisch verwendet, wenn die baseEncode- und die strReplaceAll-Funktion deklariert sind.

    if(typeof noFrame == 'undefined' && url.indexOf("zurueck.frame") < 0 && typeof(baseEncode) == "function" && typeof(strReplaceAll) == "function")
    	frame_url = "?fn=zurueck.frame&close=1&back=0&print=" + print + "&url=" + baseEncode(url) + "&tool_pos=" + tool_pos + "&tool_url=" + tool_url + "&allowExternal=" + allowExternal;
    else
    	frame_url = url;
	
    var neww = window.open(frame_url, makeWindowTitle(title), wnddef);
    if (neww == null)
    {
        alert(/* persis-id="26219" */  "Es kann kein Popup-Fenster geöffnet werden, da Ihr Browser dies blockiert. Bitte ändern Sie Ihre Sicherheitseinstellungen für diese Website!");  
        return null;
    }

    neww.focus();    
    
    // Fenster nicht standardmäßig zurückgeben, Mitarbeiterstammblatt hat dann leere Seite ?!    
    if (getWndHandle == '1')
        return neww;    
}


// -------------------- Hilfsfunktionen ----------------------

function popupsAllowed()
{
    var neww = window.open("", "f", "width=1,height=1");
    if (neww.closed != true)
    {
        neww.close();
        return true;
    }
    else
    {
        neww.close();
        return false;
    }     
}
