/*
	Copyright (C) 2008 - Juan Ferrer Toribio

	This program is free software; you can redistribute it and/or
	modify it under the terms of the GNU Lesser General Public
	License as published by the Free Software Foundation; either
	version 2.1 of the License, or (at your option) any later version.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
	Lesser General Public License for more details.

	You should have received a copy of the GNU Lesser General Public
	License along with this program; if not, write to the Free
	Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
	02111-1307 USA.
*/

var VnAccount = new Class
({
	Extends: VnModule,

	activate: function ()
	{
		var db = this.db;
		var n;
		var vbox;
		var entry;
		var model;
		var frame;
		var table;
		var tbody;
		var tr;
		var td;
		
		// Account Info

		vbox = new HtkVBox ();
		this.setChild (vbox);
		
		model = new DbModel (db);
		model.setSql ('SELECT id, name, password FROM user_view');
		model.setUpdatable ('user_view');

		n = 0;
		form = new DbForm (model);
		form.setRow (0);

		frame = new HtkFrame (TEXT_Account);
		vbox.add (frame, true);

		table = document.createElement ('table');
		table.cellSpacing = 8;
		frame.setChild (table);

		tbody = document.createElement ('tbody');
		table.appendChild (tbody);

		tr = document.createElement ('tr');
		tbody.appendChild (tr);
		
		td = document.createElement ('td');
		td.style.textAlign = 'right';
		td.style.width = '200px';
		td.appendChild (document.createTextNode (TEXT_Number + ':'));
		tr.appendChild (td);

		td = document.createElement ('td');
		tr.appendChild (td);

		entry = new HtkLabel ();
		form.bindParam (entry, n++);
		td.appendChild (entry.getNode ());

		tr = document.createElement ('tr');
		tbody.appendChild (tr);
		
		td = document.createElement ('td');
		td.style.textAlign = 'right';
		td.appendChild (document.createTextNode (TEXT_UserName + ':'));
		tr.appendChild (td);

		td = document.createElement ('td');
		tr.appendChild (td);

		entry = new HtkText ();
		entry.setEditable (true);
		form.bindParam (entry, n++);
		td.appendChild (entry.getNode ());

		tr = document.createElement ('tr');
		tbody.appendChild (tr);
		
		td = document.createElement ('td');
		td.style.textAlign = 'right';
		td.appendChild (document.createTextNode (TEXT_Password + ':'));
		tr.appendChild (td);

		td = document.createElement ('td');
		tr.appendChild (td);

		entry = new HtkPasswords ();
		entry.setEditable (true);
		form.bindParam (entry, n++);
		td.appendChild (entry.getNode ());
	}
});


var HtkPasswords = new Class
({
	Extends: HtkEntry,

	initialize: function ()
	{
		var txt;
		var passOr;
		var passRp;
		var obj = this;

		this.parent ('div');
		
		passOr = document.createElement ('input');
		passOr.type = 'password';
		passOr.style.width = '80px';
		passOr.style.marginRight = '10px';
		passOr.addEventListener ('change',
			function () { obj.passCheckAndChange (); }, false);
		this.node.appendChild (passOr);

		passRp = passOr.cloneNode (true);
		passRp.addEventListener ('change',
			function () { obj.passCheckAndChange (); }, false);
		this.node.appendChild (passRp);
		
		txt = document.createElement ('span');
		this.node.appendChild (txt);		
		
		this.txt = txt;
		this.passOr = passOr;
		this.passRp = passRp;
	},

	passCheckAndChange: function ()
	{
		var passRp = this.passRp.value;
		var passOr = this.passOr.value;

		removeChilds (this.txt);
	
		if (passRp != '' && passOr != '')
		{
			var txt;

			if (passRp === passOr)
			{
				txt = TEXT_PasswordsMatch;
				this.txt.style.color = 'green';
				this.realValue = passRp;
				this.signalEmit ('changed');
			}
			else
			{
				txt = TEXT_PasswordsDoesntMatch;
				this.txt.style.color = 'red';
			}

			this.txt.appendChild (document.createTextNode (txt));
		}
	},
	
	setRealValue: function (value)
	{
		this.passOr.value = 'password';
	},
	
	setEditable: function (editable) {}
});


