Web.Components.Documents = function () {
	this.Objetos = Web.Library.Instances.create('Objects');
	
	this.setTitle  = function (valor) { document.title = valor; }
	this.setStatus = function (valor) { window.status = valor; }
	
	this.AppendStrScript = function (texto, isSrc) {
		this.Objetos.AppendStrScript(texto, isSrc);
	}
	
	this.AppendScript = function (texto) {
		this.Objetos.AppendJS(texto);
	}
	
	this.AppendStrCSS = function (texto, isSrc) {
		this.Objetos.AppendStrCss(texto, isSrc);
	}
	
	this.AppendCSS = function (texto, isSrc) {
		this.Objetos.AppendCSS(texto, isSrc);
	}
	
	this.newForm = function (ID, Attributos, Append) {
		return this.Objetos.create('FORM', ID, Attributos, Append);
	}
	
	this.newTable = function (ID, Attributos, Append) {
		return this.Objetos.create('TABLE', ID, Attributos, Append);
	}
	
	this.newTBody = function (ID, Attributos, Append) {
		return this.Objetos.create('TBODY', ID, Attributos, Append);
	}
	
	this.newTR = function (ID, Attributos, Append) {
		return this.Objetos.create('TR', ID, Attributos, Append);
	}
	
	this.newTD = function (ID, Attributos, Append) {
		return this.Objetos.create('TD', ID, Attributos, Append);
	}
	
	this.newTH = function (ID, Attributos, Append) {
		return this.Objetos.create('TH', ID, Attributos, Append);
	}
	
	this.newSelect = function (ID, Attributos, Append) {
		return this.Objetos.create('SELECT', ID, Attributos, Append);
	}
	
	this.newSelectGroup = function (ID, Attributos, Append) {
		return this.Objetos.create('OPTGROUP', ID, Attributos, Append);
	}
	
	this.newSelectItem = function (ID, Attributos, Append) {
		return this.Objetos.create('OPTION', ID, Attributos, Append);
	}
	
	this.newInput = function (ID, Tipo, Attributos, Append, Force) {
		return this.Objetos.create('INPUT', ID, Attributos, Append, (Tipo != null) ? Tipo : 'text', Force);
	}
	
	this.newTextArea = function (ID, Attributos, Append) {
		return this.Objetos.create('TEXTAREA', ID, Attributos, Append);
	}
	
	this.newButton = function (ID, Tipo, Attributos, Append) {
		if (Attributos == null) Attributos = {};		
		Attributos['value'] = (Attributos['value'] != null) ? Attributos['value'] : (Tipo.substring(0,1).toUpperCase() + Tipo.substring(1).toLowerCase());
		Attributos['innerHTML'] = (Attributos['innerHTML'] != null) ? Attributos['innerHTML'] : Attributos['value'];
		
		var Obj = this.Objetos.create('BUTTON', ID, Attributos, Append, null);
		switch (Tipo.toLowerCase()) {
			case 'submit':
					this.Objetos.register(Obj, 'click', function () { 
															if (this['form']['Validation'].Valida(this['form'])) {
																this['form'].submit();
															}
														});
				break;
				
			case 'reset':
					this.Objetos.register(Obj, 'click', function () { 
															this['form']['Validation'].doPostBack(this['form']);
															return false;
														});
					Obj.onclick = function () { return false; }
				break;
		}
		
		return Obj;
	}
	
	this.newBlock = function (ID, Attributos, Append) {
		return this.Objetos.create('DIV', ID, Attributos, Append);
	}
	
	this.newHolder = function (ID, Attributos, Append) {
		return this.Objetos.create('SPAN', ID, Attributos, Append);
	}
	
	this.newList = function (ID, Attributos, Append) {
		return this.Objetos.create('UL', ID, Attributos, Append);
	}
	
	this.newLabel = function (ID, Attributos, Append) {
		return this.Objetos.create('LABEL', ID, Attributos, Append);
	}
	
	this.newListItem = function (ID, Attributos, Append) {
		return this.Objetos.create('LI', ID, Attributos, Append);
	}
	
	this.AddEvent = function (strObj, strEvent, strFunc) {
		this.Objetos.register(this.Objetos.findObj(strObj), strEvent, strFunc);
	}
	
	this.RemoveEvent = function (strObj, strEvent, strFunc) {
		this.Objetos.unregister(this.Objetos.findObj(strObj), strEvent, strFunc);
	}
	
	this.getForm = function (valor) {
		var Forms = this.Objetos.getDocument().forms;
		if (typeof Forms == 'undefined') return this.newForm(valor);

		return ((typeof Forms[valor] == 'undefined') ? ((typeof this.Objetos.findObj(valor, 'FORM') == 'undefined') ? this.newForm(valor) : this.Objetos.findObj(valor, 'FORM')) : Forms[valor]);
	}
}
