/* from "Clearing Default Text" at HTMLSource by Ross Shannon <http://www.yourhtmlsource.com/forms/clearingdefaulttext.html> */


/* Cross-browser event handling, by Scott Andrew */
function addEvent(element, eventType, lamdaFunction, useCapture) {

	if (element.addEventListener) {
		element.addEventListener(eventType, lamdaFunction, useCapture);
		return true;
		}
	else if (element.attachEvent) {
		var r = element.attachEvent('on' + eventType, lamdaFunction);
		return r;
		}
	else {
		return false;
		}
	}


/* Kills an event's propagation and default action */
function knackerEvent(eventObject) {
	
	if (eventObject && eventObject.stopPropagation) {
		eventObject.stopPropagation();
		}
	if (window.event && window.event.cancelBubble ) {
		window.event.cancelBubble = true;
		}
	if (eventObject && eventObject.preventDefault) {
		eventObject.preventDefault();
		}
	if (window.event) {
		window.event.returnValue = false;
		}
	}
	

/* Safari doesn't support canceling events in the standard way, so we must hard-code a return of false for it to work. */
function cancelEventSafari() {

	return false;
	}


/* Cross-browser style extraction, from the JavaScript & DHTML Cookbook <http://www.oreillynet.com/pub/a/javascript/excerpt/JSDHTMLCkbk_chap5/index5.html> */
function getElementStyle(elementID, CssStyleProperty) {

	var element = document.getElementById(elementID);
	
	if (element.currentStyle) {
		return element.currentStyle[toCamelCase(CssStyleProperty)];
		}
	else if (window.getComputedStyle) {
		var compStyle = window.getComputedStyle(element, '');
		return compStyle.getPropertyValue(CssStyleProperty);
		}
	else {
		return '';
		}
	}


addEvent(window, 'load', init, false);


function init() {

	var formInputs = document.getElementsByTagName('input');

	for (var i = 0; i < formInputs.length; i++) {
		var theInput = formInputs[i];
		
		if (theInput.type == 'text' && theInput.className.match(/\bcleardefault\b/)) {
			/* Add event handlers */
			addEvent(theInput, 'focus', clearDefaultText, false);
			addEvent(theInput, 'blur', replaceDefaultText, false);

			/* Save the current value */
			if (theInput.value != '') {
				theInput.defaultText = theInput.value;
				}
			}
		}
	}


function clearDefaultText(e) {

	var target = window.event ? window.event.srcElement : e ? e.target : null;

	if (!target) return;

	if (target.value == target.defaultText) {
		target.value = '';
		}
	}


function replaceDefaultText(e) {

	var target = window.event ? window.event.srcElement : e ? e.target : null;
	
	if (!target) return;
	
	if (target.value == '' && target.defaultText) {
		target.value = target.defaultText;
		}
	}