// JavaScript Document

ClassName = {
	add: function (obj, clsName) {
		if(!ClassName.exists(obj,clsName)) obj.className+=obj.className?' '+clsName:clsName;
	},
	remove: function (obj, clsName) {
		obj.className=obj.className.replace(obj.className.match(' '+clsName)?' '+clsName:clsName,'');
	},
	exists: function (obj, clsName) {
		return new RegExp('\\b'+clsName+'\\b').test(obj.className);
	}
};

Hint = {
	cls_name: "hint_display",
	attr_name: "hintvalue",
	show: function (inputObj) {
		if (inputObj.target) inputObj = inputObj.target;
		else if (inputObj.srcElement) inputObj = inputObj.srcElement;
		if (inputObj.value.length == 0) {
			ClassName.add(inputObj, Hint.cls_name);
			inputObj.value = inputObj.getAttribute(Hint.attr_name);
		}
	},
	hide: function (inputObj) {
		if (inputObj.target) inputObj = inputObj.target;
		else if (inputObj.srcElement) inputObj = inputObj.srcElement;
		if (ClassName.exists(inputObj, Hint.cls_name)) {
			if (inputObj.getAttribute(Hint.attr_name) == null) {
				inputObj.setAttribute(Hint.attr_name, inputObj.value);
			}
			inputObj.value = "";
		}
		ClassName.remove(inputObj, Hint.cls_name);
	},
	submit: function () {
		tags = document.getElementsByTagName("INPUT");
		//submit: function (formObj) {
		//tags = formObj.getElementsByTagName("INPUT");
		for (var i = 0; i < tags.length; i++) {
			if (ClassName.exists(tags[i], Hint.cls_name)) tags[i].value = "";
		}
	},
	listen: function(element, evtName, funcPtr) {
		if (typeof element == 'string')
			element = document.getElementById(element);
		if (element.addEventListener) {
			element.addEventListener(evtName, funcPtr, false);
		} else if (element.attachEvent) {
			element.attachEvent('on'+evtName, funcPtr);
		} else return false;
		return true;
	},
	init: function(parentObj) {
		//if (parentObj == null) parentObj = document;
		parentObj = document;
		var tags = parentObj.getElementsByTagName("INPUT");
		for (var i = 0; i < tags.length; i++) {
			if (tags[i].getAttribute(Hint.attr_name) != null) {
				hintval = tags[i].getAttribute(Hint.attr_name);
				if (tags[i].value == hintval || tags[i].value == "") {tags[i].value=hintval;ClassName.add(tags[i], Hint.cls_name);}
				else ClassName.remove(tags[i], this.cls_name);
				// Now add the events
				if (!Hint.listen(tags[i], 'blur', Hint.show) ||
					!Hint.listen(tags[i], 'focus', Hint.hide)) {
					// if we can't add the events, no hints.
					tags[i].value="";
					ClassName.remove(tags[i], Hint.cls_name);
				}
			}
		}
		for(j=0; j<document.forms.length; j++) {
			Hint.listen(document.forms[j], 'submit', Hint.submit);
		}
	}
};
Hint.listen(window, 'load', Hint.init);

// Just for verification
Hint.listen(window, 'load', function() {
	for(j=0; j<document.forms.length; j++) {
		//Hint.listen(document.forms[j], 'submit', function() {alert('Hint text is gone and the form is ready for submission.');});
		//  uncomment to get popup alert
	}
});

// end search Input hint