/*members debug, isString, isZeroLengthString, lang, length, namespace,     si*/
if(!YAHOO)
{
	YAHOO = {};
}
/**
 * The whole application depends on this namespace.
 * 
 * Note one common bug is to leave a final comma at the end of a list of objects
 * within an object. This throws an obscure error in IE with no indication what the problem is.
 * The debugger did at least find the correct line where the error occurred.
 */
if(!YAHOO.si)
{
	YAHOO.namespace("si");
}
/**
 * Returns true if the object passed is a String and
 * has a length of 0. We need this function because testing
 * a string against 2 double quotes doesn't behave the way you'd expect.
 * @param str The value you want to check for
 */
YAHOO.si.isZeroLengthString = function(str)
{
	return YAHOO.lang.isString(str) && str.length ===0;	
};
/*
 * From here we can stop the logger displaying error messages.
 * This doesn't stop the YAHOO.si.Controller.jsErrorPanel displaying
 * We use the YAHOO logger for debugging only.  The jsErrorPanel is for
 * public display of error messages.
 */
if(!YAHOO.si.debug)
{
    YAHOO.si.debug = false;
}
/**
* fn <Function> The function to execute 
* obj <Object> An object to be passed along when the event fires 
* override <boolean|Object> If true, the obj passed in becomes the execution scope of the listener.
*  if an object, that object becomes the the execution scope. 
* 
* fire then passes 3 arguments to the handler
* The type of event 
* All of the arguments fire() was executed with as an array 
* The custom object (if any) that was passed into the subscribe() method 
*/	
