/**
* Form Object Selector v 1.2
*
* (c) 2007 MJ Bytes Ltd
* http://www.mjbytes.com
*
* Language: Javascript
* @Last Revision: 28/May/2007
* 
*/

function FormSelector(frm)
{
	if (document.getElementById(frm))
	{
		this.frm = document.getElementById(frm);
		this.init();
	}
	else return false;
}

FormSelector.prototype =
{
	init: function()
	{
		this.spans = this.frm.getElementsByTagName('span');
		this.inputs = this.frm.getElementsByTagName('input');
		this.areas = this.frm.getElementsByTagName('textarea');
		this.snum = this.spans.length;
		this.inum = this.inputs.length;
		this.anum = this.areas.length;
	},
	
	isText: function(i)
	{
		return 'text' == this.inputs[i].getAttribute('type');
	},
	
	isSelect: function(i)
	{
		return 'select' == this.inputs[i].getAttribute('type');
	},
	
	isRadio: function(i)
	{
		return 'radio' == this.inputs[i].getAttribute('type');
	},

	isHidden: function(i)
	{
		return 'hidden' == this.inputs[i].getAttribute('type');
	},
	
	isSuitable: function(i)
	{
		return (this.isText(i) || this.isSelect(i));
	},
	
	setLabelSize: function(w,h)
	{
		for (var i = 0; i < this.snum; i++)
		{
			this.spans[i].style.width = w + 'px';
			this.spans[i].style.height = h + 'px';
		}
	},
	
	setBgr: function(bgr)
	{
		for (var i = 0; i < this.inum; i++)
		{
			if (this.isSuitable(i))
				this.inputs[i].style.backgroundColor = bgr;
		}
	},
	
	setBorder: function(b)
	{
		for (var i = 0; i < this.inum; i++)
		{
			if (this.isSuitable(i))
				this.inputs[i].style.border = '1px solid #' + b;
		}
		
		for (var i = 0; i < this.anum; i++)
			this.areas[i].style.border = '1px solid #' + b;
	},
	
	setSize: function(w,h)
	{
		for (var i = 0; i < this.inum; i++)
		{
			if (this.isSuitable(i))
			{
				this.inputs[i].style.width = w + 'px';
				this.inputs[i].style.height = h + 'px';
			}
		}
	},
	
	setAreaSize: function(w,h)
	{
		for (var i = 0; i < this.anum; i++)
		{
			this.areas[i].style.width = w + 'px';
			this.areas[i].style.height = h + 'px';
		}
	},
	
	getRadios: function(gname)
	{
		var j = new Object();
		j.number = 0;
		
		for (var i = 0; i < this.inum; i++)
		{
			if (gname == this.inputs[i].getAttribute('name'))
			{
				if (this.inputs[i].checked)
					j.value = this.inputs[i].value;
					
				j.number++;
			}
		}

		return j;
	},
	
	getWindowSize: function()
	{
		var area = new Object;
		
		area.width = window.innerWidth || document.body.offsetWidth;
		area.height = window.innerHeight || document.body.offsetHeight;
		
		return area;
	},
	
	createXML: function()
	{
		var xml = '<?xml version="1.0" encoding="UTF-8"?>';
		xml += '<xform>';
		
		for (i = 0; i < this.inum; i++)
		{
			if (this.isSuitable(i) || this.isHidden(i))
			{
				xml += '<' + this.inputs[i].id + '>' + encodeURI(this.inputs[i].value) + '</' + this.inputs[i].id + '>\n';
			}
			else if (this.isRadio(i))
			{
				name = this.inputs[i].name;
				radios = this.getRadios(name);
				
				xml += '<' + name + '>' + encodeURI(radios.value) + '</' + name + '>\n';
				i += radios.number - 1;
			}
		}

		return xml;		
	},
	
	sendXForm: function()
	{},
	
	disableSubmit: function()
	{
		if (this.inputs) this.inputs.submit.disabled = true;
	},
	
	createModalDialog: function(msg)
	{
		var el = document.createElement('div');
		var top = '<div class="bubblemsg"><img src="./images/icons/icon_warning_form.png" height="14" alt="Warning" />Warning</div>';
		var mst = '<div style="padding: 10px">' + msg + '</div>';
		var btn = '<div><input type="button" value="Close" onclick="x = getElementById(\'msgwindow\'); if (x) x.style.visibility = \'hidden\'"/></div>';

		el.id = 'msgwindow';
		el.className = 'msgwindow';
		el.style.paddingBottom = "20px";
		el.innerHTML =  top + mst + '<br />' + btn;
				
		wnd = this.getWindowSize();

		el.style.left = (wnd.width - 400) / 2 + 'px';
		el.style.top = (wnd.height - el.offsetHeight) / 2 + 'px';
		document.body.appendChild(el);									
	}
}