/**
 * Utility class.
 * this class contains a set of class methods.
 */
 
/* namespace */

var uk;
if (!uk) uk = {};
if (!uk.co) uk.co = {};
if (!uk.co.mfbaker) uk.co.mfbaker = {};
if (!uk.co.baughfarm) uk.co.baughfarm = {};

// This namespace was a mistake and needs to be removed
var co;
if (!co) co = {};
if (!co.uk) co.uk = {};
if (!co.uk.baughfarm) co.uk.baughfarm = {};

if (!co.uk.baughfarm.Utility) co.uk.baughfarm.Utility = {};

/* this variable has the typeof value "undefined" */
co.uk.baughfarm.Utility.undefined;

//alert('co.uk.baughfarm.Utility.undefined: '+co.uk.baughfarm.Utility.undefined);

// See Note 5
//co.uk.baughfarm.Utility.jotterNote5 = (self.event===co.uk.baughfarm.Utility.undefined);
co.uk.baughfarm.Utility.jotterNote5 = false;

/**
 * @author Mark Franklyn Baker
 * @version 0.1 Feb 21 2009
 * @param node - node that gets the new attribute
 * @param name - name of the attribute
 * @param value - value of the attribute
 * @type class-method
 */		 
co.uk.baughfarm.Utility.createAttribute = function (node, name, value) { 

    var attribute;
    
    attribute = document.createAttribute(name);
    attribute.nodeValue = value;
    node.attributes.setNamedItem(attribute);
    
    return attribute;
    
} // Utility.createAttribute

/**
 * assign an event handler to an input object.
 * this is a client specific method.
 * @see Note 5
 * @author Mark Franklyn Baker
 * @version 0.2 11 Jan 2009
 * @type class-method
 */
if (co.uk.baughfarm.Utility.jotterNote5) {
//alert('self.event '+(typeof (self.event))+' FireFox');
//	// @client FireFox
    co.uk.baughfarm.Utility.assignEventHandler = co.uk.baughfarm.Utility.createAttribute;
}
else {
//alert('self.event '+(typeof (self.event))+' InternetExplorer');
//	// @client InternetExplorer
    co.uk.baughfarm.Utility.assignEventHandler = function (inputField, eventString, handlerString) {
    	inputField[eventString] = new Function(handlerString);
   	}
}

/**
 * de-bug variable.
 * @author Mark Franklyn Baker
 * @version 16 Dec 2008
 * @type class-method
 */
co.uk.baughfarm.Utility.dbv = function (variable) {

    return "{type["+(typeof variable)+"] value["
    +(variable===null ? "null" :
     (variable===co.uk.baughfarm.Utility.undefined ? "undefined" :
      variable.toString()))
    +"]}"; 
}

/**
 * de-bug show variable.
 * @author Mark Franklyn Baker
 * @version 16 Dec 2008
 * @type class-method
 */
co.uk.baughfarm.Utility.dbsv = function (variable) {

    return (typeof variable)+':-'
    +(variable===null ? 'null' :
     (variable===co.uk.baughfarm.Utility.undefined ? 'undefined' :
      variable.toString()))
    +''; 
}

/**
 * de-bug keypress.
 * @author Mark Franklyn Baker
 * @version 16 Dec 2008
 * @type class-method
 
 onKeyPress
 return event.which==null ? event.keyCode : event.which;
 
 
 */
co.uk.baughfarm.Utility.onKeyMonitor = function (monitorElementID) {
    co.uk.baughfarm.Utility.onKeyMonitorElement = document.getElementById(monitorElementID);		
	document.body.onkeydown = co.uk.baughfarm.Utility.onKey;
	document.body.onkeyup = co.uk.baughfarm.Utility.onKey;
	document.body.onkeypress = co.uk.baughfarm.Utility.onKey;
}
 
co.uk.baughfarm.Utility.onKey = function (event) {

	var eventSource = "parameter";

	if (event===co.uk.baughfarm.Utility.undefined) {
		event = window.event;
		eventSource = "window";
	}

	//var utility = co.uk.baughfarm.Utility;
	
	var divElement;
	var textElement;
	
    // input checkbox
    divElement = document.createElement('div');
	textElement = document.createTextNode(
	'src: '+eventSource
    +' type['+event.type+']'
    +' keyCode['+event.keyCode+']'
    +' which['+event.which+']'
    +' charCode['+event.charCode+']'
    + (event.shiftKey ? ' shiftKey['+event.shiftKey+']' : '')
    + (event.ctrlKey ? ' ctrlKey['+event.ctrlKey+']' : '')
    + (event.altKey ? ' altKey['+event.altKey+']' : '')
    + (event.metaKey ? ' metaKey['+event.metaKey+']' : ''));
	
	divElement.appendChild(textElement);
	co.uk.baughfarm.Utility.onKeyMonitorElement.appendChild(divElement);

/*
if (event.type==='keydown') {
alert('event source: '+eventSource
    +'\nevent.type ['+co.uk.baughfarm.Utility.dbv(event.type)+']'
    +'\n---'
    +'\nevent.keyCode ['+co.uk.baughfarm.Utility.dbv(event.keyCode)+']'
    +'\nevent.which ['+co.uk.baughfarm.Utility.dbv(event.which)+']'
    +'\nevent.charCode ['+co.uk.baughfarm.Utility.dbv(event.charCode)+']'
    +'\n---'
    +'\nevent.shiftKey ['+co.uk.baughfarm.Utility.dbv(event.shiftKey)+']'
    +'\nevent.ctrlKey ['+co.uk.baughfarm.Utility.dbv(event.ctrlKey)+']'
    +'\nevent.altKey ['+co.uk.baughfarm.Utility.dbv(event.altKey)+']'
    +'\nevent.metaKey ['+co.uk.baughfarm.Utility.dbv(event.metaKey)+']'
);
}
*/
}





