/**
 * Converts all inputs to an input with label
 *
 */

autofiller = function()
{
	var _self = this;
	this.element 	= null;
	this.newElement = null;
	this.defaultValue = null;
	this.autoValue = null;
	this.className = null;
	this.defaultType = null;
	
	/**
	 * 
	 */
	this.setElement = function(element)
	{	
		this.element = element;
		this.newElement = element;
		this.defaultValue = element.value;
		this.element.onfocus = this.onfocus;
		this.element.onblur = this.onblur;
		this.className = element.className;
		this.defaultType = element.type;
		this.autoValue = this.getAutoValue() + "   ";
		this.setAutoValue();
		this.password2text();
	}
		
	/**
	 * 
	 */
	this.onfocus = function()
	{
		if(_self.element.value != "" && _self.element.value == _self.autoValue)
		{
			_self.element.value = "";
			
			if(_self.defaultType == 'password')
			{
				_self.text2password();
				setTimeout(function(){
					_self.element.focus();
				}, 10);
			}
		}
	}
	
	
	/**
	 * 
	 */
	this.onblur = function()
	{
		_self.setAutoValue();
		if(_self.element.value == "" || _self.autoValue == _self.element.value && _self.defaultType == 'password')
		{
			_self.password2text();
		}
	}
	
	/**
	 * *IE Fix
	 */
	
	this.textfield2passwordfield = function()
	{
		_self.newElement = document.createElement("input");
		_self.newElement.setAttribute("type", "password");

		_self.cloneAttributes();
		
		var parentNode = _self.element.parentNode;
		parentNode.replaceChild(_self.newElement, _self.element);
		_self.element = _self.newElement;

	}
	
	this.passwordfield2textfield = function()
	{
		_self.newElement = document.createElement("input");
		_self.newElement.setAttribute("type", "text");

		_self.cloneAttributes();
		
		var parentNode = _self.element.parentNode;
		parentNode.replaceChild(_self.newElement, _self.element);
		_self.element = _self.newElement;
	}
	
	/**
	 * 
	 */
	this.cloneAttributes = function()
	{
		_self.newElement.className 			= _self.element.className;
		_self.newElement.style.marginTop 	= _self.element.style.marginTop;
		_self.newElement.name 				= _self.element.name;
		_self.newElement.onblur 			= _self.onblur;
		_self.newElement.onfocus 			= _self.onfocus;
		_self.newElement.value 				= _self.element.value;
		
		if(_self.element.style.width)
		{
			_self.newElement.style.width = _self.element.style.width;
		}
		if(_self.element.style.border)
		{
			_self.newElement.style.border = _self.element.style.border;
		}
	}
	
	/**
	 * 
	 */
	this.password2text = function()
	{
		if(_self.element.type == "password")
		{
			try{
				_self.element.type = 'text';
			}catch(e)
			{
				_self.passwordfield2textfield();
			}
		}
	}
	
	/**
	 * 
	 */
	this.text2password = function()
	{
		if(_self.element.type == "text")
		{
			
			try{
				_self.element.type = 'password';
			}catch(e)
			{
				_self.textfield2passwordfield();
			}
		}
	}	
	
	/**
	 * 
	 */
	this.setAutoValue = function()
	{
		if(_self.element.value == "")
		{
			_self.element.value = _self.autoValue;
		}
	}
	
	/**
	 * 
	 */
	this.getAutoValue = function()
	{
		var rx = new RegExp(/auto\[(.*)\]/);
		var matched = rx.exec(_self.className);
		
		if(matched != null)
		{

			return matched[1];
			
		}else{
			return null;
		}
	}
	/**
	 * 
	 */
	this.init = function()
	{
		var fields = document.getElementsByTagName('input');
		var txtfields = document.getElementsByTagName('textarea'); 

		//fields.concat(txtfields);
		var rxPattern = new RegExp(/auto\[(.*)\]/);
		
		//Getting all Inputs with the class name default/
		for(var i=0;i<fields.length;i++)
		{
			if(fields[i].className.match(rxPattern))
			{
				var field = new autofiller();
				field.setElement(fields[i]);
			}
		}
		
		for(var i=0;i<txtfields.length;i++)
		{
			if(txtfields[i].className.match(rxPattern))
			{
				var field = new autofiller();
				field.setElement(txtfields[i]);
			}
		}
	}
}



/*auto\[(.*)\]*/
