home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
GameStar 2006 January
/
Gamestar_80_2006-01_dvd.iso
/
Utility
/
5-11_xp-2k_dd_ccc_wdm_enu_27345.exe
/
Data1.cab
/
_D85B6780E4D647218EC41FA0E4D58555
< prev
next >
Wrap
Text File
|
2003-09-15
|
16KB
|
657 lines
// Copyright (c) 2000-2003 Quadralay Corporation. All rights reserved.
//
function WWHBrowserUtilities_SearchReplace(ParamString,
ParamSearchString,
ParamReplaceString)
{
var ResultString;
var Index;
ResultString = ParamString;
if ((ParamSearchString.length > 0) &&
(ResultString.length > 0))
{
Index = 0;
while ((Index = ResultString.indexOf(ParamSearchString, Index)) != -1)
{
ResultString = ResultString.substring(0, Index) + ParamReplaceString + ResultString.substring(Index + ParamSearchString.length, ResultString.length);
Index += ParamReplaceString.length;
}
}
return ResultString;
}
function WWHBrowserUtilities_EscapeURLForJavaScriptAnchor(ParamURL)
{
var EscapedURL = ParamURL;
// Escape problematic characters
// \ " ' < >
//
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, "\\", "\\\\");
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, "\"", "\\u0022");
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, "'", "\\u0027");
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, "<", "\\u003c");
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, ">", "\\u003e");
return EscapedURL;
}
function WWHBrowser_Object()
{
this.mLocale = "en";
this.mPlatform = 0; // Shorthand for Unknown
this.mBrowser = 0; // Shorthand for Unknown
this.mCookiePath = "/";
this.mbCookiesEnabled = null;
this.mbSupportsFocus = false;
this.mbSupportsPopups = true;
this.mbSupportsFrameRenaming = true;
this.mbWindowIE40 = false; // Needed for special case handling
this.mbMacIE45 = false; // Needed for special case handling
this.mbMacIE50 = false; // Needed for special case handling
this.mbUnescapeHREFs = true; // Needed for special case handling
this.mbWindowsIE60 = false; // Needed for special case handling
this.mbUnsupported = false;
this.mbJavaCapable = false;
this.mbJavaEnabled = false;
this.fInitialize = WWHBrowser_Initialize;
this.fNormalizeURL = WWHBrowser_NormalizeURL;
this.fRestoreEscapedSpaces = WWHBrowser_RestoreEscapedSpaces;
this.fSetLocation = WWHBrowser_SetLocation;
this.fReplaceLocation = WWHBrowser_ReplaceLocation;
this.fReloadLocation = WWHBrowser_ReloadLocation;
this.fSetCookiePath = WWHBrowser_SetCookiePath;
this.fCookiesEnabled = WWHBrowser_CookiesEnabled;
this.fSetCookie = WWHBrowser_SetCookie;
this.fGetCookie = WWHBrowser_GetCookie;
this.fDeleteCookie = WWHBrowser_DeleteCookie;
this.fFocus = WWHBrowser_Focus;
// Initialize object
//
this.fInitialize();
}
function WWHBrowser_Initialize()
{
var Agent;
var MajorVersion = 0;
var VersionString;
var Version = 0.0;
// Reset locale to correct language value
//
if ((typeof(navigator.language) != "undefined") &&
(navigator.language != null))
{
this.mLocale = navigator.language;
}
else if ((typeof(navigator.userLanguage) != "undefined") &&
(navigator.userLanguage != null))
{
this.mLocale = navigator.userLanguage;
}
// Convert everything to lowercase
//
this.mLocale = this.mLocale.toLowerCase();
// Replace '-'s with '_'s
//
this.mLocale = WWHBrowserUtilities_SearchReplace(this.mLocale, "-", "_");
// Get browser info
//
Agent = navigator.userAgent.toLowerCase();
// Determine platform
//
if ((Agent.indexOf("win") != -1) ||
(Agent.indexOf("16bit") != -1))
{
this.mPlatform = 1; // Shorthand for Windows
}
else if (Agent.indexOf("mac") != -1)
{
this.mPlatform = 2; // Shorthand for Macintosh
}
// Determine browser
//
if ((Agent.indexOf("mozilla") != -1) &&
(Agent.indexOf("spoofer") == -1) &&
(Agent.indexOf("compatible") == -1))
{
MajorVersion = parseInt(navigator.appVersion)
if (MajorVersion >= 5)
{
this.mBrowser = 4; // Shorthand for Netscape 6.0
this.mbSupportsFocus = true;
// Netscape 6.0 is unsupported
//
if (navigator.userAgent.indexOf("m18") != -1)
{
this.mbUnsupported = true;
}
}
else if (MajorVersion >= 4)
{
this.mBrowser = 1; // Shorthand for Netscape
this.mbSupportsFrameRenaming = false;
}
}
else if (Agent.indexOf("msie") != -1)
{
MajorVersion = parseInt(navigator.appVersion)
if (MajorVersion >= 4)
{
this.mBrowser = 2; // Shorthand for IE
this.mbSupportsFocus = true;
// Additional info needed for popups
//
VersionString = navigator.appVersion.toLowerCase();
MSIEVersionString = VersionString.substring(VersionString.indexOf("msie") + 4);
Version = parseFloat(MSIEVersionString);
if ((Version >= 4.0) &&
(Version < 4.1))
{
if (this.mPlatform == 1) // Shorthand for Windows
{
this.mbWindowsIE40 = true;
}
}
else if ((Version >= 4.5) &&
(Version < 4.6))
{
if (this.mPlatform == 2) // Shorthand for Macintosh
{
this.mbMacIE45 = true;
}
}
else if ((Version >= 5.0) &&
(Version < 5.1))
{
if (this.mPlatform == 2) // Shorthand for Macintosh
{
this.mbMacIE50 = true;
}
}
else if (Version >= 6.0)
{
this.mbWindowsIE60 = true;
}
}
}
else if (Agent.indexOf("icab") != -1)
{
this.mBrowser = 3; // Shorthand for iCab
this.mbSupportsPopups = false;
}
// Safari may spoof as just about anything
//
if (Agent.indexOf("safari") != -1)
{
this.mBrowser = 5; // Shorthand for Safari
this.mbSupportsPopups = true;
this.mbSupportsFocus = false;
}
// Set mbUnescapeHREFs boolean
//
if ((this.mBrowser == 2) && // Shorthand for IE
(this.mPlatform == 1)) // Shorthand for Windows
{
if (MajorVersion >= 5)
{
this.mbUnescapeHREFs = false;
}
}
// Determine if platform can support Java
//
this.mbJavaCapable = false;
if (this.mBrowser == 1) // Shorthand for Netscape
{
if (this.mPlatform == 1) // Shorthand for Windows
{
this.mbJavaCapable = true; // Java works on NS for Windows
}
else if (this.mPlatform == 2) // Shorthand for Macintosh
{
this.mbJavaCapable = false; // Java doesn't work on NS for Macintosh
}
else
{
this.mbJavaCapable = true; // Java is slow on UNIX
}
}
else if (this.mBrowser == 2) // Shorthand for IE
{
if (this.mPlatform == 1) // Shorthand for Windows
{
this.mbJavaCapable = true; // Java works on IE for Windows
}
else if (this.mPlatform == 2) // Shorthand for Macintosh
{
this.mbJavaCapable = true; // May work
}
else
{
this.mbJavaCapable = false; // Java doesn't work on IE for UNIX
}
}
else if (this.mBrowser == 4) // Shorthand for Mozilla
{
if (this.mPlatform == 1) // Shorthand for Windows
{
this.mbJavaCapable = true; // May work
}
else if (this.mPlatform == 2) // Shorthand for Macintosh
{
this.mbJavaCapable = false; // Hangs in Mozilla 1.2.1
}
else
{
this.mbJavaCapable = true; // Java unreliable under UNIX (works?)
}
}
else
{
this.mbJavaCapable = true; // May work
}
// Determine if Java is enabled
//
if ((typeof(navigator) != "undefined") &&
(navigator != null))
{
this.mbJavaEnabled = navigator.javaEnabled();
}
}
function WWHBrowser_NormalizeURL(ParamURL)
{
var URL = ParamURL;
var Parts;
var MaxIndex;
var Index;
var DrivePattern;
var DrivePatternMatch;
// Unescape URL for most browsers
//
if (this.mbUnescapeHREFs)
{
URL = unescape(URL);
}
else // IE unescapes everything automatically, except &
{
URL = WWHBrowserUtilities_SearchReplace(URL, "%26", "&");
}
// Standardize protocol case
//
if (URL.indexOf(":") != -1)
{
Parts = URL.split(":");
URL = Parts[0].toLowerCase();
for (MaxIndex = Parts.length, Index = 1 ; Index < MaxIndex ; Index++)
{
URL += ":" + Parts[Index];
}
}
// Handle drive letters under Windows
//
if (this.mPlatform == 1) // Shorthand for Windows
{
DrivePattern = new RegExp("^file:[/]+([a-zA-Z])[:\|][/](.*)$", "i");
DrivePatternMatch = DrivePattern.exec(URL);
if (DrivePatternMatch != null)
{
URL = "file:///" + DrivePatternMatch[1] + ":/" + DrivePatternMatch[2];
}
}
return URL;
}
function WWHBrowser_RestoreEscapedSpaces(ParamURL)
{
// Workaround for stupid Netscape 4.x bug
//
var StringWithSpace = "x x";
var EscapedURL = ParamURL;
if (this.mbUnescapeHREFs)
{
EscapedURL = WWHBrowserUtilities_SearchReplace(EscapedURL, StringWithSpace.substring(1, 2), "%20");
}
return EscapedURL;
}
function WWHBrowser_SetLocation(ParamFrameReference,
ParamURL)
{
var EscapedURL;
EscapedURL = WWHBrowserUtilities_EscapeURLForJavaScriptAnchor(ParamURL);
setTimeout(ParamFrameReference + ".location = \"" + EscapedURL + "\";", 1);
}
function WWHBrowser_ReplaceLocation(ParamFrameReference,
ParamURL)
{
var EscapedURL;
EscapedURL = WWHBrowserUtilities_EscapeURLForJavaScriptAnchor(ParamURL);
setTimeout(ParamFrameReference + ".location.replace(\"" + EscapedURL + "\");", 1);
}
function WWHBrowser_ReloadLocation(ParamFrameReference)
{
var VarFrame;
VarFrame = eval(ParamFrameReference);
this.fReplaceLocation(ParamFrameReference, VarFrame.location.href);
}
function WWHBrowser_SetCookiePath(ParamURL)
{
var Pathname;
var WorkingURL;
var Parts;
var Index;
var Protocol = "";
// Initialize return value
//
Pathname = "/";
// Remove URL parameters
//
WorkingURL = ParamURL;
if (WorkingURL.indexOf("?") != -1)
{
Parts = WorkingURL.split("?");
WorkingURL = Parts[0];
}
// Remove last entry if path does not end with /
//
Index = WorkingURL.lastIndexOf("/");
if ((Index + 1) < WorkingURL.length)
{
WorkingURL = WorkingURL.substring(0, Index);
}
// Remove protocol
//
Index = -1;
if (WorkingURL.indexOf("http:/") == 0)
{
Index = WorkingURL.indexOf("/", 6);
Protocol = "http";
}
else if (WorkingURL.indexOf("ftp:/") == 0)
{
Index = WorkingURL.indexOf("/", 5);
Protocol = "ftp";
}
else if (WorkingURL.indexOf("file:///") == 0)
{
Index = 7;
Protocol = "file";
}
// Set base URL pathname
//
if (Index != -1)
{
Pathname = WorkingURL.substring(Index, WorkingURL.length);
// Clean up pathname
//
if (Protocol == "file")
{
if (this.mPlatform == 1) // Shorthand for Windows
{
if (this.mBrowser == 2) // Shorthand for IE
{
// file URLs must have slashes replaced with backslashes, except the first one
//
if (Pathname.length > 1)
{
Pathname = unescape(Pathname);
Pathname = WWHBrowserUtilities_SearchReplace(Pathname, "/", "\\");
if (Pathname.indexOf("\\") == 0)
{
Pathname = "/" + Pathname.substring(1, Pathname.length);
}
}
}
}
}
else
{
// Trim server info
//
Index = Pathname.indexOf("/", Index);
if (Index != -1)
{
Pathname = Pathname.substring(Index, Pathname.length);
}
else
{
Pathname = "/";
}
}
}
// Set cookie path
//
this.mCookiePath = Pathname;
}
function WWHBrowser_CookiesEnabled()
{
// Cache result
//
if (this.mbCookiesEnabled == null)
{
// Default to disabled
//
this.mbCookiesEnabled = false;
// Try setting a cookie
//
this.fSetCookie("WWHBrowser_CookiesEnabled", "True");
// Retrieve the cookie
//
if (this.fGetCookie("WWHBrowser_CookiesEnabled") != null)
{
// Delete the test cookie
//
this.fDeleteCookie("WWHBrowser_CookiesEnabled");
// Success!
//
this.mbCookiesEnabled = true;
}
}
return this.mbCookiesEnabled;
}
function WWHBrowser_SetCookie(ParamName,
ParamValue,
ParamExpiration)
{
var VarFormattedCookie;
var VarPath;
var VarExpirationDate;
// Format the cookie
//
VarFormattedCookie = escape(ParamName) + "=" + escape(ParamValue);
// Add path
//
VarFormattedCookie += "; path=" + this.mCookiePath;
// Add expiration day, if specified
//
if ((typeof(ParamExpiration) != "undefined") &&
(ParamExpiration != null) &&
(ParamExpiration != 0))
{
VarExpirationDate = new Date();
VarExpirationDate.setTime(VarExpirationDate.getTime() + (ParamExpiration * 1000 * 60 * 60 * 24));
VarFormattedCookie += "; expires=" + VarExpirationDate.toGMTString();
}
// Set the cookie for the specified document
//
document.cookie = VarFormattedCookie
}
function WWHBrowser_GetCookie(ParamName)
{
var VarValue;
var VarCookies;
var VarKey;
var VarStartIndex;
var VarEndIndex;
// Initialize return value
//
VarValue = null;
// Get document cookies
//
VarCookies = document.cookie;
// Parse out requested cookie
//
// Try first position
//
VarKey = escape(ParamName) + "=";
VarStartIndex = VarCookies.indexOf(VarKey);
if (VarStartIndex != 0)
{
// Try any other position
//
VarKey = "; " + escape(ParamName) + "=";
VarStartIndex = VarCookies.indexOf(VarKey);
}
// Match found?
//
if (VarStartIndex != -1)
{
// Advance past cookie key
//
VarStartIndex += VarKey.length;
// Find end
//
VarEndIndex = VarCookies.indexOf(";", VarStartIndex);
if (VarEndIndex == -1)
{
VarEndIndex = VarCookies.length;
}
VarValue = unescape(VarCookies.substring(VarStartIndex, VarEndIndex));
}
return VarValue;
}
function WWHBrowser_DeleteCookie(ParamName)
{
// Set cookie to expire yesterday
//
this.fSetCookie(ParamName, "", -1);
}
function WWHBrowser_Focus(ParamFrameReference,
ParamAnchorName)
{
var VarFrame;
var VarAnchor;
var VarMaxIndex;
var VarIndex;
if (this.mbSupportsFocus)
{
if (ParamFrameReference.length > 0)
{
// Access frame
//
VarFrame = eval(ParamFrameReference);
// Focus frame
//
VarFrame.focus();
// Focusing anchor?
//
if ((typeof(ParamAnchorName) != "undefined") &&
(ParamAnchorName != null) &&
(ParamAnchorName.length > 0))
{
// Focus anchor
//
VarAnchor = VarFrame.document.anchors[ParamAnchorName];
if ((typeof(VarAnchor) != "undefined") &&
(VarAnchor != null))
{
VarAnchor.focus();
}
else
{
VarAnchorArray = VarFrame.document.anchors;
for (VarMaxIndex = VarFrame.document.anchors.length, VarIndex = 0 ; VarIndex < VarMaxIndex ; VarIndex++)
{
if (VarFrame.document.anchors[VarIndex].name == ParamAnchorName)
{
VarFrame.document.anchors[VarIndex].focus();
// Exit loop
//
VarIndex = VarMaxIndex;
}
}
}
}
}
}
}