// JavaScript Document
/* 
 * @autor: Cep
 * @website: http://cep.la
 * @date: 12/05/07
 * Free to use, but please leve this header.
*/

function textHandler(){
	this.elements = new Array();
	//this.styles = this.getDefaultStyles();
	this.init = function($elements){
		this.elements = $elements;
		for(i in this.elements){
			var element = this.elements[i];
			var input = document.getElementById(element.input);
			var text = element.text.trim();
			if(input && text){
				input.value = text;
				input.init_value = text;
				input.init_bg = input.backgroundColor = "undefined" ? "" :  input.backgroundColor;
				this.addEventListener(input, "onfocus", this.onFocus);
				this.addEventListener(input, "onblur", this.onBlur);
			}
		}
	}
	
	this.validate = function(){
		var count = 0;
		for(i in this.elements){
			var element = this.elements[i];
			var input = document.getElementById(element.input);
			var text = element.text.trim();
			var length = element.min_length;
			length == "undefined" ? length = -1 : null; 
			if(input && text)
				if(input.value.trim() == text || input.value.trim() == "" || input.value.trim().length < length)
					count++;
				else if(element.email && !input.value.email())
					count++;
		}
		return !Boolean(count);
	}
	
	this.getElements = function(){
		return this.elements;
	}
	
	/***********************************************************************************************/
	/* Private
	/***********************************************************************************************/
	
	this.getDefaultStyles = function (){
		var styles = new Object();
		styles.background = new Object();
		styles.background.focus = "#FFFFCC";
		styles.background.blur = "";
		return styles;
	}
	
	this.onFocus = function(e){
		if(this.style) this.style.backgroundColor = "#FFFFCC";
		if(this.value.toLowerCase().trim() == this.init_value.toLowerCase()) this.value = "";
	}
	this.onBlur = function(e){
		if(this.style) this.style.backgroundColor = this.init_bg;
		if(this.value.trim() == "" || this.value.toLowerCase().trim() == this.init_value.toLowerCase()) this.value = this.init_value;
	}
	this.addEventListener = function($target, $event, $func){
		if($target) $target[$event] = $func;
	}
	
}