Managing multiple onLoad events in JavaScript
It is possible to add multiple function calls within the standard onload event within the body tag, however there comes a time when we may want to use the window.onload call within our webpages. This will clash with our onload calls already defined within the body tag.
This article written by Robert Dominy, demonstrates the use of a separate script that adds each function to an array which will subsequently execute each onload function in turn. Without it we have no way to guarantee that all our required functions are called.
onLoad eventSafe onLoad event
JavaScript Source
Copy the following and paste into the HEAD section of your page.
<script language="JavaScript">
// Browser Detection
isMac = (navigator.appVersion.indexOf("Mac")!=-1) ? true : false;
NS4 = (document.layers) ? true : false;
IEmac = ((document.all)&&(isMac)) ? true : false;
IE4plus = (document.all) ? true : false;
IE4 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 4.")!=-1)) ? true : false;
IE5 = ((document.all)&&(navigator.appVersion.indexOf("MSIE 5.")!=-1)) ? true : false;
ver4 = (NS4 || IE4plus) ? true : false;
NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape')!=-1)?true:false;
// Body onload utility (supports multiple onload functions)
var gSafeOnload = new Array();
function SafeAddOnload(f)
{
if (IEmac && IE4) // IE 4.5 blows out on testing window.onload
{
window.onload = SafeOnload;
gSafeOnload[gSafeOnload.length] = f;
}
else if (window.onload)
{
if (window.onload != SafeOnload)
{
gSafeOnload[0] = window.onload;
window.onload = SafeOnload;
}
gSafeOnload[gSafeOnload.length] = f;
}
else
window.onload = f;
}
function SafeOnload()
{
for (var i=0;i<gSafeOnload.length;i++)
gSafeOnload[i]();
}
// Call the following with your function as the argument
SafeAddOnload(yourfunctioname);
Visual Thesaurus

Don't get stuck for a word again with this nifty online thesaurus, has a really neat front-end too.
Check it out here
New look, New Hosting and New framework.

Its all brand new, I have finally moved my website to a faster hosting service and now use a faster publishing framework, called Movabletype.
I chose it over a number of different frameworks mainly due to the fact that it precompiles and caches the pages hence making them quicker to load. Also the templating system is highly decoupled from the backend logic, making it easier to maintain and produce cleaner mark-up.
I may decide to use Postnuke again however I think i'll wait until it incorporates a cache and templating system.
CSS Browser Support

Netscape's developers site "DevEdge" has republished Eric Meyers' Mastergrid, a table showing a number of Web browsers and how well they support the Cascade Style Sheet standard. (However there is still no update to include the most important/recent browsers such as IE6, Mozilla and Netscape 7+, Opera 7+ and Safari.
View here
The DOM and JavaScript

This short and concise article from Fabian Guisset of Mozilla explains exactly how we use Javascript to modify and manipulate the browsers' Document Object Model.
Check out the article here
Axis - Apache's web service framework

Once there was Apache SOAP which is an implementation of the SOAP submission to W3C. It also supersedes, the IBM SOAP4J implementation.
Now there is Apache AXIS which is also an implementation of the SOAP submission to W3C. However Axis supersedes Apache SOAP in functionality, performance, and interoperability and, in particular, has passed Sun's JAX-RPC and SAAJ compliance tests.
Axis provides a high level Java API for working with web services, and can also be used to create web services.
Java Enterprise Best Practices

onjava.com looks at excerpts from the O'Reilly book "Java Enterprise Best Practices".
Servlet Best Practices, Part 1
Servlets have dominated the recent server-side Java landscape and have become the standard way to interface Java to the Web. This chapter, the first of three book excerpts from Java Enterprise Best Practices, discusses effective servlet-based development and deployment.
Servlet Best Practices, Part 2
In part two of three in this series of book excerpts on servlet best practices from Java Enterprise Best Practices, learn about caching with servlets.
Servlet Best Practices, Part 3
In this final excerpt on servlets from Java Enterprise Best Practices, we present how to effectively send files for download. Getting it right across Web browsers takes a bit of work, but with this tip you'll have it right in no time.
Peaceful expression

Brushstroke.tv is the site of 'Melanie Goux' a motion graphic designer from Atlanta, Georgia, US.
Visit the poster of peace competition and express your feelings about the current war. The deadline for entry is 17 April, 2003. And don't forget to read the rules before you submit your entry.
What's the difference between Struts 1.0 and 1.1?

To check out the differences of Struts 1.0.2 over 1.1 click here!
