/**
*
Window Function Library
* @file window.js
* @author
* (C) 1999‒2011 Thomas Lahn <window.js@PointedEars.de>
*
* @partof PointedEars' JavaScript Extensions (JSX)
*
* JSX is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* JSX is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with JSX. If not, see .
*/
/*
* Refer window.htm file for general documentation.
*
* This document contains JavaScriptDoc. Refer
* http://pointedears.de/scripts/JSDoc/
* for details.
*/
var windowVersion = "1.29.2009052620";
var windowCopyright = "Copyright \xA9 1999-2009";
var windowAuthor = "Thomas Lahn";
var windowEmail = "window.js@PointedEars.de";
var windowPath = "http://pointedears.de/scripts/";
// var windowDocURL = windowPath + "window.htm";
/* Script exceptions */
/**
* @param Msg : string
* @type boolean
* @return false
*/
function windowException(Msg)
{
alert(
"window.js "
+ windowVersion
+ "\n"
+ windowCopyright
+ " "
+ windowAuthor
+ " <"
+ windowEmail
+ ">\n\n"
+ Msg);
return false;
}
/**
* @param sFunctionName : string
* @param iArg : number
* @return boolean
*/
function EInvalidArgNum(sFunctionName, iArg)
{
// if (arguments.length < 2) iArg = "?";
return windowException(
sFunctionName
+ ": The user script did not pass the required number of arguments ("
+ iArg
+ ").\nRefer documentation in script file for correct function call.");
}
/* Script features */
/**
* @param sCaption : string
* @type boolean
* @return true
*/
function setStatus(sCaption)
{
window.status = sCaption;
return true;
}
/**
* @type boolean
* @return true
*/
function resetStatus()
{
window.status = window.defaultStatus;
return true;
}
var sLinkOutMsg_de =
"Dieser Link ist offline nicht verfügbar.\n\n"
+ "Wenn Sie mit dem Internet verbunden sind, steht Ihnen die Seite online"
+ " zur Verfügung.\n\n"
+ "Möchten Sie jetzt eine Verbindung zu dieser Seite herstellen?";
var sLinkOutMsg_us =
"This link is not available offline.\n\n"
+ "If you are connected to the Internet, the website is available online.\n\n"
+ "Do you wish to connect to this website now?';";
var sLinkOutMsg = sLinkOutMsg_de;
/**
* @param sURL : string
* @param sLink : string
* @param bShowURL : boolean
* @param aTarget : number|string
* @param iWidth : number
* @param iHeight : number
* @param sOptions : string
* @type boolean
* @return false
*/
function linkOut(sURL, sLink, bShowURL, aTarget, iWidth, iHeight, sOptions)
{
if (arguments.length < 1)
{
EInvalidArgNum("linkOut", 1);
return false;
}
var arg = sLinkOutMsg;
/*
* version 1.05.2000.3 update, formerly bShowURL as 2nd argument;
* fixed problem with websites created earlier
*/
if (arguments.length < 3)
{
bShowURL = true;
}
var oldArg;
if ((sURL != "" && bShowURL == true)
|| (arguments.length >= 2 && sLink != ""))
{
oldArg = arg;
arg = "\n\n" + oldArg;
}
if (sURL != "" && bShowURL)
{
oldArg = arg;
arg = sURL + oldArg;
}
if (arguments.length >= 2 && sLink != "")
{
if (sURL != "" && bShowURL)
{
oldArg = arg;
arg = sLink + "\n" + oldArg;
}
else
{
oldArg = arg;
arg = sLink + oldArg;
}
}
if (window.confirm(arg))
{
var oTarget = document;
if (arguments.length >= 4
&& aTarget != ""
&& aTarget.toLowerCase() != "_self")
{
/*
* version 1.05.2000.3 update, formerly neither empty strings
* nor "_self" supported
*/
if (isNaN(aTarget))
{
if (aTarget.toLowerCase() == "_new"
|| aTarget.toLowerCase() == "_blank")
{
popUp(sURL, iWidth, iHeight, sOptions);
return false;
}
oTarget = parent.frames[aTarget].document;
/* and below: v1.09.2000.3 bugfix */
}
else
{
oTarget = parent.frames[aTarget].document;
}
}
oTarget.location = "";
oTarget.location.href = sURL;
}
/* version 1.15.2000.11 update */
return false;
}
/**
* @param sURL : string
* @param iWidth : number
* @param iHeight : number
* @param sOptions : string
* @type boolean
* @return false
*/
function popUp(sURL, iWidth, iHeight, sOptions)
{
var sFeatures = "height=" + iHeight + ",width=" + iWidth;
if (arguments.length > 3)
{
sFeatures += "," + sOptions;
}
var wndChild = window.open(sURL, null, sFeatures);
return false;
}
/*
* OpenChildWin(...) call redirected to popUp(...) for compatibility to
* previous versions
*/
var OpenChildWin = popUp;
/**
* @param sURL : string
* @param targetFrame : number|string
* @return Window
*/
function LoadFrame(sURL, targetFrame)
{
if (arguments.length < 2)
{
/* Raise exception if required arguments are missing */
return EInvalidArgNum("LoadFrame", 2);
}
if (isNaN(targetFrame))
{
if (parent.eval(targetFrame))
{
parent.eval(targetFrame).location.href = sURL;
return sURL;
}
return targetFrame;
}
if (parent.frames[targetFrame])
{
parent.frames[targetFrame].location.href = sURL;
return sURL;
}
return targetFrame;
}
var sEnlargeImgTitle_en = "Click to close window";
var sEnlargeImgTitle_de = "Klicken, um Fenster zu schliessen";
var sEnlargeImgTitle = sEnlargeImgTitle_en;
/**
* @param sImageURL : string
* @param sCaption : string
* @param iWidth : number
* @param iHeight : number
* @param bCenter : boolean
* @type boolean
* @return false
*/
function enlargeImg(sImageURL, sCaption, iWidth, iHeight, bCenter)
{
var ident = enlargeImg;
var argnum = ident.arguments.length;
if (sImageURL.charAt(0) != "/")
{
/*
* Version 1.17.2002.2 bugfix:
* Calculates absolute image file paths of relative ones
* Fixes bug with Mozilla 0.9.7 and above (includes Netscape 6.1+)
* that generated pages have no path except about:blank which causes
* relative paths for their resources to fail
*/
/* Windows local path */
var iPathEnd = window.location.pathname.lastIndexOf('\\');
if (iPathEnd < 0)
{
iPathEnd = window.location.pathname.lastIndexOf('/');
}
/* URL */
if (iPathEnd > -1)
{
/* Extend filename to full path */
sImageURL = window.location.pathname.substring(0, iPathEnd)
+ "/" + sImageURL;
}
}
if (argnum < 1)
{
return (EInvalidArgNum("Level 2: enlargeImg", 1));
}
/* preset also window position and size in the case the temporary script below fails */
var sOptions =
"toolbar=no,location=no,menubar=no,scrollbars=yes,resizable=yes"
+ ((argnum > 2) && !isNaN(iWidth)) ? (",width=" + iWidth + 12) : ""
+ ((argnum > 3) && !isNaN(iHeight)) ? (",height=" + iHeight + 32) : ""
+ ",left="
+ parseInt(screen.width / 2 - (argnum > 2
&& !isNaN(iWidth) ? iWidth / 2 : 0))
+ ",top="
+ parseInt(screen.height / 2 - (argnum > 3
&& !isNaN(iHeight) ? iHeight / 2 : 0));
var w = window.open("", "wndZoom", sOptions);
if (w)
{
var d = w.document;
if (d)
{
d.open("text/html");
var s = [
'',
'',
' ',
' ',
' ',
' ' + ((argnum > 1 && sCaption != "") ? sCaption : sImageURL)
+ '<\/title>',
/*
* temporary script and updated inline code to fix
* BUG_Enlarge:ALWAYS_FIT-TO-IMAGE
*/
'