var exText;
function ExampleText() 
{
	this.initialize.apply(this, arguments);
}
ExampleText.prototype = {
	initialize: function()
	{
		var tags = ["input", "textarea"];
		this.elements = new Array();
		
		for ( var i=0; i<tags.length; i++ ) 
		{
			var possibilities = document.getElementsByTagName(tags[i]);
			var len = possibilities.length;
			for ( var e=0; e<len; e++ ) 
			{
				var element = possibilities[e];
				if ( (element.nodeName.toLowerCase() != "input" || (element.nodeName.toLowerCase() == "input" && element.type == "text")))
				{
					this.elements.push(element);
					var example_text = "";
					if ( example_text = element.getAttribute("example"))
					{
						example_text= ""+example_text;
						element.example_text = example_text;
						this.set_example(element);
					}
				}
			}
		}
		
		var forms = document.getElementsByTagName("form");
		for ( var i=0; i<forms.length; i++ ) 
		{
			addEvent(forms[i], "submit", this.submitHandler);
		}
		addEvent(element, "submit", this.submitHandler);
	},
	
	submitHandler: function(event)
	{
		var elements = getEventTarget(event);
		for ( var i=0; i<elements.length; i++ ) 
		{
		  exText.clear_example(elements[i]);
		}
	},
	
	focusHandler: function(event)
	{
		var element = getEventTarget(event);
		if ( element )
		{
		  exText.clear_example(element);
		}
	},

	blurHandler: function(event)
	{
		var element = getEventTarget(event);
		if ( element )
		{
		  exText.set_example(element);
		}
	},
	
	clear_example: function(element)
	{
		if ( element.using_example_text && element.value==element.example_text)
		{
	  		element.value = "";
	  		element.using_example_text = false;
	  		removeEvent(element, "focus", this.focusHandler);
			addEvent(element, "blur", this.blurHandler);
	  		removeClassName(element,"example-text");
		}
	},
	
	set_example: function(element)
	{
		if ( !element.value )
		{
			if ( !element.using_example_text )
			{
				element.value = element.example_text;
				element.using_example_text = true;
				removeEvent(element, "blur", this.blurHandler);
				addEvent(element, "focus", this.focusHandler);
				addClassName(element,"example-text");
			}
		}
	},
	
	resetExsamples:function(){
		var tags = ["input", "textarea"];
		var elements = new Array();
		for ( var i=0; i<tags.length; i++ ) 
		{
			var possibilities = document.getElementsByTagName(tags[i]);		
			var len = possibilities.length;
			for ( var e=0; e<len; e++ ) 
			{
				var element = possibilities[e];
				if ( (element.nodeName.toLowerCase() != "input" || (element.nodeName.toLowerCase() == "input" && element.type == "text")))
				{
					if ( example_text = element.getAttribute("example"))
					{
						this.clear_example(element);
						this.set_example(element);
					}
				}
			}
		}
	}
}

function onloadinit(){
	exText = new ExampleText();
}
addEvent(window,'load',onloadinit);

function setExamples(){
	exText.resetExsamples();
}

function addEvent(ele,evt,fn){
	if(ele.addEventListener) {
		ele.addEventListener(evt,fn, false);
	}
	else if(ele.attachEvent) {
		ele.attachEvent('on'+evt,fn);
	}
}
function removeEvent(ele,evt,fn){
	if(ele.removeEventListener) {
		ele.removeEventListener(evt,fn, false);
	}
	else if(ele.detachEvent) {
		ele.detachEvent('on'+evt,fn);
	}
}
function addClassName(element, className) {
	if (!element) return;
	element.className = className;
	return element;
}
function removeClassName(element, className) {
	if (!element) return;
	var reg = new RegExp(className, 'g');
	element.className = element.className.replace(reg,'');
	return element;
}
function getEventTarget(e){
	if(e && e.target){
		return e.target;
	}else if(window.event){
		return window.event.srcElement;
	}
}

