function XMLText()
{
    var res;
    res = document.createElement('input');
    $(res).attr('type', 'text');
    res.SetValue = function(newvalue)
    {
        this.value = newvalue;
    }
    
    res.GetValue = function ()
    {
        return this.value;
    }
    
    res.HTMLObject = res;
    
    return res;
}

function XMLTextArea()
{
    var res;
    res = document.createElement('textarea');    
    res.SetValue = function(newvalue)
    {
        this.value = newvalue;
    }
    
    res.GetValue = function ()
    {
        return this.value;
    }
    
    res.HTMLObject = res;
    
    return res;
}

function XMLLink(XMLField)
{
	var res;
    res = document.createElement('a');    
	res.innerHTML = GetSubElementValue(XMLField, "linktext", "Download");
	res.setAttribute('target', '_blank');
    res.SetValue = function(newvalue)
    {
        this.setAttribute('href', newvalue);
    }
    
    res.GetValue = function ()
    {
        return this.getAttribute('href');
    }
    
    res.HTMLObject = res;
    
    return res;
}

function XMLHidden()
{
    var res = document.createElement('input');
	$(res).attr('type', 'text');
	res.SetValue = function(newvalue)
		{
			this.value = newvalue;
		}
	res.GetValue = function ()
		{
			return this.value;
		}
	res.HTMLObject = res;
	return res;
}

function XMLButton(XMLField)
{
    var res = document.createElement('input');
	$(res).attr('type', 'button');
	if (XMLField != null)
	$(res).attr('value', GetSubElementValue(XMLField, 'caption', 'button'));
	res.SetValue = function(newvalue)
		{
			$(this).attr('value', newvalue);
		}
	res.GetValue = function ()
		{
			return $(this).attr('value');
		}
	res.HTMLObject = res;
	return res;
}

function XMLCheck()
{
    var res = document.createElement('input');
	$(res).attr('type', 'checkbox');
	res.SetValue = function(newvalue)
		{
			$(this).attr('checked', newvalue);
		}
	res.GetValue = function()
		{
			return $(this).attr('checked');
		}
	res.HTMLObject = res;
	return res;
}

function XMLEdit(XMLField)
{
    var res;
    var tagname = GetSubElementValue(XMLField, 'buttontype', 'input');
    res = document.createElement(tagname);
    res.HTMLObject = res;
    res.SetValue = function () {};
    res.GetValue = function () {};
    switch (tagname)
    {
        case 'img':
            res.setAttribute('src', GetSubElementValue(XMLField, 'src'));
            break;
        case 'input':
            res.setAttribute('type', 'button');
            res.setAttribute('value', GetSubElementValue(XMLField, 'edittext', 'Edit'));
            break;
    }
    return res;
}

function XMLUpdate(XMLField)
{
    var res;
    var tagname = GetSubElementValue(XMLField, 'buttontype', 'input');
    res = document.createElement(tagname);
    res.HTMLObject = res;
    res.SetValue = function () {};
    res.GetValue = function () {};
    switch (tagname)
    {
        case 'img':
            res.setAttribute('src', GetSubElementValue(XMLField, 'src'));
            break;
        case 'input':
            res.setAttribute('type', 'button');
            res.setAttribute('value', GetSubElementValue(XMLField, 'updatetext', 'Save'));
            break;
    }
    return res;
}

function XMLDelete(XMLField)
{
    var res;
    var tagname = GetSubElementValue(XMLField, 'buttontype', 'input');
    res = document.createElement(tagname);
    res.HTMLObject = res;
    res.SetValue = function () {};
    res.GetValue = function () {};
    switch (tagname)
    {
        case 'img':
            res.setAttribute('src', GetSubElementValue(XMLField, 'src'));
            break;
        case 'input':
            res.setAttribute('type', 'button');
            res.setAttribute('value', GetSubElementValue(XMLField, 'edittext', 'Save'));
            break;
    }
    return res;
}

function XMLCancel(XMLField)
{
    var res;
    var tagname = GetSubElementValue(XMLField, 'buttontype', 'input');
    res = document.createElement(tagname);
    res.HTMLObject = res;
    res.SetValue = function () {};
    res.GetValue = function () {};
    switch (tagname)
    {
        case 'img':
            res.setAttribute('src', GetSubElementValue(XMLField, 'src'));
            break;
        case 'input':
            res.setAttribute('type', 'button');
            res.setAttribute('value', GetSubElementValue(XMLField, 'updatetext', 'Save'));
            break;
    }
    return res;
}

function XMLSelect(XMLField)
{
	var res;
    res = document.createElement('select');
	res.ValueField = GetSubElementValue(XMLField.XMLField, 'valuefield', 'ID');
	res.DisplayField = GetSubElementValue(XMLField.XMLField, 'displayfield', '');
	
	if (typeof(XMLField.XMLDataSource) != 'undefined' && XMLField.XMLDataSource != null && res.DisplayField != '' && res.ValueField != "")
	{
		for (var i=0; i < XMLField.XMLDataSource.length; i++)
		{
			var row = XMLField.XMLDataSource[i];
			var op = document.createElement('option');
			op.value = row.getAttribute(res.ValueField);
			op.innerHTML = row.getAttribute(res.DisplayField);
			res.appendChild(op);
		}
	}
	
    res.SetValue = function(newvalue)
    {
        this.value = newvalue;
    }
    
    res.GetValue = function ()
    {
        return this.value;
    }
    
    res.HTMLObject = res;    
    return res;
}

function XMLValuedLabel(XMLField)
{
	var res;
    res = document.createElement('span');    
	res.ValueField = GetSubElementValue(XMLField.XMLField, 'valuefield', 'ID');
	res.DisplayField = GetSubElementValue(XMLField.XMLField, 'displayfield', '');
	res.DataSource = XMLField.XMLDataSource;
	res._Value = null;
	
	/* if (typeof(XMLField.XMLDataSource) != 'undefined' && XMLField.XMLDataSource != null && this.DisplayField != '' && this.ValueField != "")
	{
		for (var i=0; i < XMLField.XMLDataSource.length; i++)
		{
			var row = XMLField.XMLDataSource[i];
			var op = document.createElement('option');
			op.value = row.getAttribute(this.ValueField);
			op.innerHTML = row.getAttribute(this.DisplayField);
			res.appendChild(op);
		}
	} */
	
    res.SetValue = function(newvalue)
    {
        this._Value = newvalue;
		for (var i = 0; i < this.DataSource.length; i++)
			if (newvalue == this.DataSource[i].getAttribute(this.ValueField)) // Found
			{
				this.innerHTML = this.DataSource[i].getAttribute(this.DisplayField);
				break;
			}		
    }
    
    res.GetValue = function ()
    {
        return this._Value;
    }
    
    res.HTMLObject = res;    
    return res;
}
