
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////\\
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////\\
 //\\                                                                       //\\
 //\\  apfPPPWin - Funktion zur Generierung von Popup-Fenstern              //\\
 //\\  Version 1.02 - 28. Dez. 2002                                         //\\
 //\\                                                                       //\\
 //\\  (C) altoplan, Harkortstraße 123, 22765 Hamburg                       //\\
 //\\      eMail: js@altoplan.de                                            //\\
 //\\                                                                       //\\
 //\\                                                                       //\\
 //\\                                                                       //\\
 //\\  Beispiel für Aufruf des Programms aus dem BODY-Bereich von HTML:     //\\
 //\\                                                                       //\\
 //\\  <A HREF="http://www.website.de"                                      //\\
 //\\     onclick="return apfPPPWin(this.href,'pos2 Name=abc')">            //\\
 //\\                                                                       //\\
 //\\  oder:                                                                //\\
 //\\                                                                       //\\
 //\\  <A HREF="datei.html"                                                 //\\
 //\\     onclick="return apfPPPWin(this.href,'pos5 width=80%')">           //\\
 //\\                                                                       //\\
 //\\                                                                       //\\
 //\\                                                                       //\\
 //\\  Im HEAD-Bereich sind folgende Ergänzungen notwendig:                 //\\
 //\\                                                                       //\\
 //\\  <SCRIPT TYPE="text/javascript" SRC="pppwin.js"></SCRIPT>             //\\
 //\\  <SCRIPT TYPE="text/javascript">                                      //\\
 //\\    <!--                                                               //\\
 //\\      var gvPPPWin = new Array();                                      //\\
 //\\    //-->                                                              //\\
 //\\  </SCRIPT>                                                            //\\
 //\\                                                                       //\\
 //\\                                                                       //\\
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////\\
 //\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\/////////////////////////////////////\\



function apfArr2ChEl(argArr,argEl,argSub)
{
	for (var i=0; i < argArr.length; i++)
	{
		if (argArr[i][argSub] == argEl)
			return true;
	}
}

function apfArgVal(argArg,argLength)
{
	lvStart = argLength;
	lvValue = argArg.substr(lvStart,100);
	if (argArg.indexOf("name=") == -1)
		return parseInt(lvValue);
	else
		return lvValue;
}

function apfPPPWin(argURL,argProp)
{

// Variablen zum Einstellen ###############################################

	var lvMarginX = 10;		// Abstand vom linken oder rechten Rand des Bildschirms in Pixeln
	var lvMarginY = 10;		// Abstand vom oberen oder unteren Rand des Bildschirms in Pixeln
	var lvBorderX = 10;		// Breite des rechten und linken Randes des Browserfensters in Pixeln
	var lvBorderY = 10;		// Breite des oberen und unteren Randes des Browserfensters in Pixeln

// Standard-Einstellungen #################################################

	var lvName = "wPPPWin";		// Name des Popup-Fensters (Voreinstellung: "wPPPWin")
	var lvWidth = 600;				// Breite des Popup-Fensters (Voreinstellung: 600)
	var lvHeight = 400;				// Höhe des Popup-Fensters (Voreinstellung: 400)
	var lvPos = "pos5";				// Position des Popup-Fensters (Voreinstellung: "pos5")
	var lvMen = 0;						// Option für Menüzeile (Voreinstellung: 0)
	var lvToo = 0;						// Option für Toolbar, NS: Navigations-Symbolleiste, IE: Standardschaltflächen (Voreinstellung: 0)
	var lvLoc = 0;						// Option für Adressleiste, Ns: Adressen-Symbolleiste, IE: Adressleiste  (Voreinstellung: 0)
	var lvSta = 0;						// Option für Statuszeile (Voreinstellung: 1)
	var lvDep = 0;						// Option für 'dependent'; schließt das Popup-Fenster, wenn das Hauptfenster geschlossen wird. (Voreinstellung: 0)
	var lvRes = 0;						// Option für 'resizable'; gibt dem Benutzer die Möglichkeit, die Größe des Popup-Fensters zu ändern (Voreinstellung: 0)
	var lvScr = 0;						// Option für Scroll-Balken  (Voreinstellung: 0)
	var lvSizeChk = 1;				// Option für Größen-Kontrolle des Popup-Fensters; verhindert Fenster, die größer als der Bildschirm sind (Voreinstellung: 1)


// Prep ###################################################################
	var lvFull, lvLeft, lvTop, lvTit;

	if (argURL == null)
		apfError("err1");
	if (argProp != null)
	{
		var lvProp = argProp.split(" ");
		for (i=0; i < lvProp.length; i++)
		{
			if (lvProp[i].indexOf("=") != -1)
			{
				var lvTemp = lvProp[i].toLowerCase();
				if (lvTemp.indexOf("name=") != -1)
					var lvName = apfArgVal(lvTemp,5);
				else if (lvTemp.indexOf("maxwidth=") != -1)
					var lvMaxWidth = apfArgVal(lvTemp,9);
				else if (lvTemp.indexOf("maxheight=") != -1)
					var lvMaxHeight = apfArgVal(lvProp[i],10);
				else if (lvTemp.indexOf("width=") != -1)
				{
					var lvWidth = apfArgVal(lvTemp,6);
					var lvStrLen = lvTemp.length;
					if (lvTemp.substr(lvStrLen-1,1) == "%")
					{
						if (lvWidth > 0 && lvWidth <= 100)
							lvWidth = screen.availWidth * lvWidth / 100;
						else
							apfError("err2");
					}
				}
				else if (lvTemp.indexOf("height=") != -1)
				{
					var lvHeight = apfArgVal(lvProp[i],7);
					var lvStrLen = lvTemp.length;
					if (lvTemp.substr(lvStrLen-1,1) == "%")
					{
						if (lvHeight > 0 && lvHeight <= 100)
							lvHeight = screen.availHeight * lvHeight / 100;
						else
							apfError("err2");
					}
				}
				else if (lvTemp.indexOf("left=") != -1)
					var lvLeft = apfArgVal(lvProp[i],5);
				else if (lvTemp.indexOf("top=") != -1)
					var lvTop = apfArgVal(lvProp[i],4);
				else
					apfError("err3",lvTemp);
			}
			else
			{
				var lvArg = lvProp[i].toLowerCase();
				if (lvArg == "full") lvFull = 1;
				if (lvArg == "pos1") lvPos = "pos1";
				else if (lvArg == "pos2") lvPos = "pos2";
				else if (lvArg == "pos3") lvPos = "pos3";
				else if (lvArg == "pos4") lvPos = "pos4";
				else if (lvArg == "pos5") lvPos = "pos5";
				else if (lvArg == "pos6") lvPos = "pos6";
				else if (lvArg == "pos7") lvPos = "pos7";
				else if (lvArg == "pos8") lvPos = "pos8";
				else if (lvArg == "pos9") lvPos = "pos9";
				if (lvArg == "men" || lvArg == "menu" || lvArg == "menue" || lvArg == "menubar" || lvArg == "menuebar") lvMen = 1;
				if (lvArg == "too" || lvArg == "tool" || lvArg == "tools" || lvArg == "toolbar") lvToo = 1;
				if (lvArg == "loc" || lvArg == "location" || lvArg == "locationbar") lvLoc = 1;
				if (lvArg == "sta" || lvArg == "status" || lvArg == "statusbar") lvSta = 1;
				if (lvArg == "dep" || lvArg == "dependent") lvDep = 1;
				if (lvArg == "res" || lvArg == "resize" || lvArg == "resizable") lvRes = 1;
				if (lvArg == "scr" || lvArg == "scroll" || lvArg == "scrolling" || lvArg == "scrollbar" || lvArg == "scrollbars") lvScr = 1;
				if (lvArg == "size-check") lvSizeChk = 1;
			}
		}
	}
	

// Additional Height ###################################################################
	var lvAddHeight = 31;
	if (lvMen == 1)
		(gvIE) ? lvAddHeight += 55 : lvAddHeight += 21;
	if (lvToo == 1)
		(gvIE) ? lvAddHeight += 32 : (gvNS4) ? lvAddHeight += 19 : lvAddHeight += 44;
	if (lvLoc == 1)
		(gvIE) ? lvAddHeight += 26 : (gvNS4) ? lvAddHeight += 24 : lvAddHeight += 43;
	if (lvSta == 1)
		(gvIE) ? lvAddHeight += 20 : (gvNS4) ? lvAddHeight += 18 : lvAddHeight += 16;


// Size #####################################################################
	if (lvFull == 1)
	{
		var lvWidth = screen.availWidth - lvBorderX;
		var lvHeight = screen.availHeight - lvAddHeight;
		var lvPos = "pos0";
	}


// Size Check #############################################################

	if (lvWidth > lvMaxWidth)
		lvWidth = lvMaxWidth;
	if(lvHeight > lvMaxHeight)
		lvHeight = lvMaxHeight;

	if (lvSizeChk == 1)
	{
		if (lvWidth > screen.availWidth - lvBorderX)
			lvWidth = screen.availWidth - lvBorderX;
		if (lvHeight > screen.availheight - lvAddHeight)
			lvHeight = screen.availheight - lvAddHeight;
	}

// Position ###############################################################
	if (lvPos == "pos0")
	{
		var lvAnchorX = 0;
		var lvAnchorY = 0;
	}

	else if (lvPos == "pos1")
	{
		var lvAnchorX = lvMarginX;
		var lvAnchorY = lvMarginY;
	}

	else if (lvPos == "pos2")
	{
	 	var lvAnchorX = (screen.availWidth - lvWidth - lvBorderX) / 2;
		var lvAnchorY = lvMarginY;
	}

	else if (lvPos == "pos3")
	{
		var lvAnchorX = screen.availWidth - lvWidth - lvMarginX - lvBorderX;
		var lvAnchorY = lvMarginY;
	}

	else if (lvPos == "pos4")
	{
		var lvAnchorX = lvMarginX;
	 	var lvAnchorY = (screen.availHeight - lvHeight - lvAddHeight) / 2;
	}

	else if (lvPos == "pos5")
	{
	 	var lvAnchorX = (screen.availWidth - lvWidth - lvBorderX) / 2;
	 	var lvAnchorY = (screen.availHeight - lvHeight - lvAddHeight) / 2;
	}

	else if (lvPos == "pos6")
	{
		var lvAnchorX = screen.availWidth - lvWidth - lvMarginX - lvBorderX;
	 	var lvAnchorY = (screen.availHeight - lvHeight - lvAddHeight) / 2;
	}

	else if (lvPos == "pos7")
	{
		var lvAnchorX = lvMarginX;
		var lvAnchorY = screen.availHeight - lvHeight - lvAddHeight - lvBorderY;
	}

	else if (lvPos == "pos8")
	{
	 	var lvAnchorX = (screen.availWidth - lvWidth - lvBorderX) / 2;
		var lvAnchorY = screen.availHeight - lvHeight - lvAddHeight - lvBorderY;
	}

	else if (lvPos == "pos9")
	{
		var lvAnchorX = screen.availWidth - lvWidth - lvMarginX - lvBorderX;
		var lvAnchorY = screen.availHeight - lvHeight - lvAddHeight - lvBorderY;
	}

	else
	{
		if (lvLeft != null)
			var lvAnchorX = lvLeft;
		if (lvTop != null)
			var lvAnchorY = lvTop;
	}

// Properties 2 #############################################################
 	var lvProperties = "width=" + lvWidth + ",height=" + lvHeight + ",left=" + lvAnchorX + ",top=" + lvAnchorY;
	if (lvMen == 1)
		lvProperties += ",menubar=yes";
	if (lvToo == 1)
		lvProperties += ",toolbar=yes";
	if (lvLoc == 1)
		lvProperties += ",location=yes";
	if (lvSta == 1)
		lvProperties += ",status=yes";
	if (lvDep == 1)
		lvProperties += ",dependent=yes";
	if (lvRes == 1)
		lvProperties += ",resizable=yes";
	if (lvScr == 1)
		lvProperties += ",scrollbars=yes";

// Action #####################################################################
	if (apfArr2ChEl(gvPPPWin,lvName,0))
	{
		for (var i=0; i < gvPPPWin.length; i++)
		{
			if (gvPPPWin[i][0] == lvName)
			{
				if (gvPPPWin[i][2].closed == false && gvPPPWin[i][1] == argURL)
				{
					gvPPPWin[i][2].focus();
				}
				else
				{
					gvPPPWin[i][1] = argURL;
					gvPPPWin[i][2] = top.window.open(argURL,lvName,lvProperties);
					gvPPPWin[i][2].focus();
				}
			}
		}
	}
	else
	{
		var i = gvPPPWin.length;
		gvPPPWin[i] = new Array();
		gvPPPWin[i][0] = lvName;
		gvPPPWin[i][1] = argURL;
		gvPPPWin[i][2] = top.window.open(argURL,lvName,lvProperties);
		gvPPPWin[i][2].focus();
	}
	return false;
}

function apfError(argErr,argText)
{
	if (argErr == "err1")
		alert("Fehler im Programm-Aufruf! - Angabe der URL fehlt.");
	else if (argErr == "err2")
		alert("Fehler im Argument! - %-Angabe bei 'width' und 'height' muss zwischen 0 und 100 liegen.");
	else if (argErr == "err3")
		alert("Fehler im Argument! - Die Angabe vor dem Gleichheitszeichen ist nicht korrekt: " + argText);
}