
var AddOnload = function( v ) {
	alert("AddOnLoad Entry");
	window.onloads.push( v );
	alert("AddOnLoad Exit");
}

var AddOnunload = function( v ) {
	alert("AddOnUnLoad Entry");
	window.onunloads.push( v );
	alert("AddOnUnLoad Exit");
}

function ShowCookie( name ) {
	var c = GetCookie( name );
	var sMsg = "ShowCookie:\n"+name+":        '"+c+"'";
	alert(sMsg);
	WriteLog("ShowCookie: Cookie=\""+name+"\": '"+c+"'");
}

function NewWindow( url ) {
	if ( ! window ) { alert( 'No Window Object!' ); return; }
	if ( ! url ) { alert( 'No URL!' ); return; }
	if ( ! window.open(url) ) { alert( 'No Open Method!' ); return; }
	return false;
}

var GetCookie = function( name ) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf( "; " + prefix );
	if( begin == -1 ) {
		begin = dc.indexOf( prefix );
		if( begin != 0 )
			return "";
	}
	else
		begin += 2;
	var end = document.cookie.indexOf( ";", begin );
	if( end == -1 )
		end = dc.length;
	return unescape( dc.substring( begin + prefix.length, end ) );
}

var SetCookie = function( name, value, expires, path, domain, secure ) {
	document.cookie= name + "=" + escape( value ) +
		( ( expires ) ? "; expires=" + expires.toGMTString() : "" ) +
		( ( path ) ? "; path=" + path : "" ) +
		( ( domain ) ? "; domain=" + domain : "" ) +
		( ( secure ) ? "; secure" : "" );
}

function ShowCookies() {
	var	oDoc	= window.document;
	var oPlace	= oDoc.getElementById('local-msg');
	if ( ! oPlace ) { return; }
	oPlace.innerText = document.cookie;
}

//
//
// These functions write logging messages from this script to a special
// "JavaScript Log" window.  They require that the documents "OnLoad"
// handler call "StartLog();" and that the documents "OnUnload" handler
// call "EndLog();".
//
//
//
//
function StartLog() {
	if (!gblDoLogging) return;
	alert("StartLog:\nEntry");
	var oDate = new Date();
	var sDateString = oDate.toString();
	oLogWindow = window.open( "", "LogWindow");
	if ((oLogWindow.document)&&(typeof oLogWindow=='object')) {
		oLogWindow.document.write("<HTML>\n<HEAD>\n");
		oLogWindow.document.write("<TITLE>JavaScript Log</TITLE>\n");
		oLogWindow.document.write("</HEAD>\n<BODY>\n");
		oLogWindow.document.write("<H1>JavaScript Log</H1>\n");
		oLogWindow.document.write("Start of Log at ["+sDateString+"].<BR>\n");
		oLogWindow.document.write("URL:         '" + document.URL + "'<BR>\n");
		oLogWindow.document.write("Title:       '" + document.title + "'<BR>\n");
		oLogWindow.document.write("<HR>\n");
		oLogWindow.document.write("<P><FONT SIZE=\"large\" COLOR=\"red\">\n");
//		oLogWindow.document.write("If you link to another page, you <B>MUST</B> close");
//		oLogWindow.document.write(" this log window before returning to the document");
//		oLogWindow.document.write(" that wrote it.  Otherwise, you will get a script");
//		oLogWindow.document.write(" error that cannot be avoided by the script itself.");
		oLogWindow.document.write("</P><P>");
		oLogWindow.document.write("Do <B>not</B> close this window while the document");
		oLogWindow.document.write(" that is writing it is still displayed.<BR>");
		oLogWindow.document.write(" Doing so will produce an \"Access denied\" error.");
		oLogWindow.document.write("</FONT><P>\n");
		oLogWindow.document.write("<HR>\n");
		oLogWindow.document.write("<PRE>\n");
	}
	else {
		alert("EndLog:\n'oLogWindow.document' is null or '"+typeof oLogWindow.document+"'");
	}
	alert("StartLog:\nExit");
}

function EndLog() {
	if (!gblDoLogging) return;
	if (!oLogWindow) {
		alert("Function EndLog:\nCannot close Log Window,\noLogWindow bject not defined.");
	}
	var oDate = new Date();
	var sDateString = oDate.toString();
	if ((oLogWindow.document)&&(typeof oLogWindow=='object')) {
		oLogWindow.document.write("</PRE>\n");
		oLogWindow.document.write("<HR>\nEnd of Log at ["+sDateString+"].\n");
		oLogWindow.document.write("</BODY>\n</HTML>\n");
		oLogWindow.document.close();
	}
	else {
		alert("EndLog:\n'oLogWindow.document' is null or '"+typeof oLogWindow.document+"'");
	}
}

function WriteLog( sLine ) {
	if (!gblDoLogging) return;
	if (!oLogWindow) {
		alert("Function WriteLog:\nCannot write log line,\noLogWindow object not defined.");
	}
	var oDate = new Date();
	var sDateString = oDate.toString();
	if ((oLogWindow.document)&&(typeof oLogWindow=='object')) {
		oLogWindow.document.write(sDateString+": "+sLine+"\n");
	}
	else {
		alert("WriteLog:\n'oLogWindow.document' is null or '"+typeof oLogWindow.document+"'");
	}
}

function ShowLinks(  ) {
	var nLinksCount = document.links.length;
	var p;
	var i;
	var linkThis;
	var oShowWindow;
	var oShowDoc;
	
	oShowWindow = window.open( "", "ShowLinks" );
	oShowDoc = oShowWindow.document;
	p = document.links;
	
	oShowDoc.write( "<HTML>\n" );
	oShowDoc.write( "<HEAD>\n" );
	oShowDoc.write( "<TITLE>Show Links</TITLE>\n" );
	oShowDoc.write( "</HEAD>\n" );
	oShowDoc.write( "<BODY>\n" );
	oShowDoc.write( "Links Count = (" + nLinksCount + ").<BR>\n" );
	
	oShowDoc.write( "<TABLE BORDER=\"1\">\n" );
	oShowDoc.write( "<CAPTION>Table of Links</CAPTION>\n" );
	oShowDoc.write( "<THEAD>\n" );
	oShowDoc.write( "<TR>\n" );
	oShowDoc.write( "<TH></TH>\n" );
	oShowDoc.write( "<TH>Link ID</TH>\n" );
	oShowDoc.write( "<TH>Link CLASS</TH>\n" );
	oShowDoc.write( "<TH>HTML</TH>\n" );
	oShowDoc.write( "</TR>\n" );
	for (i in p) {
		oShowDoc.write( "<TR>" );
		oShowDoc.write( "<TD>"+i+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].id+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].className+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].outerText+"</TD>" );
		oShowDoc.write( "</TR>\n" );
	}
	oShowDoc.write( "</TBODY>\n" );
	oShowDoc.write( "</TABLE>\n" );
	oShowDoc.write( "</BODY>\n</HTML>\n" );
	oShowWindow.close;
}

function ShowAnchors(  ) {
	var nAnchorsCount = document.anchors.length;
	var p;
	var i;
	var linkThis;
	var oShowWindow;
	var oShowDoc;
	
	oShowWindow = window.open( "", "ShowAnchors" );
	oShowDoc = oShowWindow.document;
	p = document.anchors;
	
	oShowDoc.write( "<HTML>\n" );
	oShowDoc.write( "<HEAD>\n" );
	oShowDoc.write( "<TITLE>Show Anchors</TITLE>\n" );
	oShowDoc.write( "</HEAD>\n" );
	oShowDoc.write( "<BODY>\n" );
	oShowDoc.write( "Anchors Count = (" + nAnchorsCount + ").<BR>\n" );
	
	oShowDoc.write( "<TABLE BORDER=\"1\">\n" );
	oShowDoc.write( "<CAPTION>Table of Anchors</CAPTION>\n" );
	oShowDoc.write( "<THEAD>\n" );
	oShowDoc.write( "<TR>\n" );
	oShowDoc.write( "<TH>#</TH>\n" );
	oShowDoc.write( "<TH>Anchor.name</TH>\n" );
	oShowDoc.write( "<TH>Anchor.text</TH>\n" );
	oShowDoc.write( "<TH>Anchor.x</TH>\n" );
	oShowDoc.write( "<TH>Anchor.y</TH>\n" );
	oShowDoc.write( "</TR>\n" );
	for (i in p) {
		oShowDoc.write( "<TR>" );
		oShowDoc.write( "<TD>"+i+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].name+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].text+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].x+"</TD>" );
		oShowDoc.write( "<TD>"+p[i].y+"</TD>" );
		oShowDoc.write( "</TR>\n" );
	}
	oShowDoc.write( "</TBODY>\n" );
	oShowDoc.write( "</TABLE>\n" );
	oShowDoc.write( "</BODY>\n</HTML>\n" );
	oShowWindow.close;
}

ShowCookies();