Suagencia.Classes.FieldInstruction = Class.create({
		initialize: function( field , message ) {
			this.field = $(field);
			this.message = message.toString();
			this.field.observe( "focus" , this._onFocus.bind( this ) );
			this.field.observe( "blur" , this._onBlur.bind( this ) );			
			this._onBlur();
		},
		_onFocus: function() {
			if( this.field.value == "" || this.field.value == this.message )
			{
				this.field.value = "";
				this.field.removeClassName( "show-field-instructions" );
			}
		},
		_onBlur: function() {
			if( this.field.value == "" || this.field.value == this.message )
			{
				this.field.value = this.message;
				this.field.addClassName( "show-field-instructions" );
			}
		}
	});

Suagencia.Classes.ComboBox = Class.create( {
		initialize: function( id , vOptions ) {
			var defaultOptions = new Hash({'comboClass':'suagencia_comboBox','optionsClass':'suagencia_comboOptions'});
			if( vOptions )
				{ this.Options = defaultOptions.merge( vOptions ) }
			else
				{ this.Options = defaultOptions.clone( vOptions ) }

			this.originalCombo = $(id);
			vElement = this.originalCombo.select("option");

			var vValues = vElement.collect( function (v) {return v.innerHTML } );
			this.originalCombo.setStyle({"display":"none"})
			var vInput = new Element( "input",  {"type":"text","id":(this.Options.get("comboClass") + "_" + id) , "name":(this.Options.get("comboClass") + "_" + id) , "value":vValues[ this.originalCombo.selectedIndex] , "class":this.Options.get("comboClass")} );
			var vList = new Element( "div", {"id":(this.Options.get("optionsClass") + "_" + id ),"class":this.Options.get("optionsClass")});
			this.originalCombo.insert({"before":vInput});
			document.getElementsByTagName('body')[0].appendChild(vList);

			this.ComboList = new Autocompleter.Combo(this.Options.get("comboClass")+ "_" + id, this.Options.get("optionsClass") + "_" + id, vValues , {afterUpdateElement:this.Atualiza.bind( this )});
	 
		},
		Atualiza: function( a, b, c ) {
			this.originalCombo.selectedIndex = c;
		}
	});

Suagencia.Forms = {	
	config: function (event , vDOM) {
		var vCampos;
		var vCombos;
		if( vDOM ) {
			vCampos = $(vDOM).select("[suag:message]");
			vCombos = $(vDOM).select("select[suag:objeto=ComboBox]");
		} else {
			vCampos = $$("[suag:message]");
			vCombos = $$("select[suag:objeto=ComboBox]");
		}	
			
		vCampos.each( function( obj ) {
			new Suagencia.Classes.FieldInstruction( obj , obj.readAttribute("suag:message") );
		});

		vCombos.each( function( obj ) {
			if (obj.readAttribute("suag:Options"))
				{new Suagencia.Classes.ComboBox( obj.id , $H(obj.readAttribute("suag:Options").evalJSON()) );	} 
			else
				{new Suagencia.Classes.ComboBox( obj.id );}
		});

	}
}

