var ExampleText = Class.create();

ExampleText.prototype = {
	initialize: function()
	{
		var tags = ["input", "textarea"];
		this.elements = new Array();
		this.onfocus_listener = this.onfocus.bindAsEventListener(this);
		this.onblur_listener = this.onblur.bindAsEventListener(this);
		this.onsubmit_listener = this.onsubmit.bindAsEventListener(this);

		for ( var i=0; i<tags.length; i++ ) 
		{
			var possibilities = document.getElementsByTagName(tags[i]);			
			for ( var e=0; e<possibilities.length; e++ ) 
			{
				var element = possibilities[e];
				if ( (element.nodeName.toLowerCase() != "input" || (element.nodeName.toLowerCase() == "input" && element.type == "text")))
				{
					this.elements.push(element)
				}
			}
		}
		for ( var i=0; i<this.elements.length; i++ ) 
		{
			var element = this.elements[i];
			var example_text = "";
			if ( example_text = element.getAttribute("example"))
			{
				//Set the text
				example_text= "example: "+example_text;
				element.example_text = example_text;
				this.set_example(element);
			}
		}
		//Check all the forms
		var forms = document.getElementsByTagName("form");
		for ( var i=0; i<forms.length; i++ ) 
		{
		  Event.observe(forms[i], "submit", this.onsubmit_listener);
		}
	},
	
	onsubmit: function(event)
	{
		var form = Event.element(event);	  
		
		var elements = form.elements;
		for ( var i=0; i<elements.length; i++ ) 
		{
		  this.clear_example(elements[i])
		}
	},
	
	onfocus: function(event)
	{
		var element = Event.element(event);
		if ( element )
		{
		  this.clear_example(element)
		}
	},

	onblur: function(event)
	{
		var element = Event.element(event);
		if ( element )
		{
		  this.set_example(element)
		}
	},
	
	clear_example: function(element)
	{
	  if ( element.using_example_text )
	  {
  		element.value = "";
  		element.using_example_text = false;
  		Event.stopObserving(element, "focus", this.onfocus_listener);
			Event.observe(element, "blur", this.onblur_listener);
  		Element.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;
    		Event.stopObserving(element, "blur", this.onblur_listener);
  			Event.observe(element, "focus", this.onfocus_listener);
    		Element.addClassName(element,"example-text");
    	}
    }
	}
}
Event.observe(window,"load",function(){new ExampleText();})