

//include(cmf-0.1.js);
cmf.form = new(function() {
	var t = this;

    /* error */
    t.error = new(function() {
        this.view = function(id, errorId, error) {
            if(cmf.getId(errorId)) {
                if(error) {
                    $('#'+ errorId).html(error).show();
                } else {
                    $('#'+ errorId).hide();
                }
            } else {
                var parent = $('#'+ id).parent();
                if(error) {
                    if(!$('.formError', parent).get(0)) {
                    	parent.prepend('<div class="formError">'+ error +'</div>')
                    } else {
                    	$('.formError', parent).html(error);
                    }
                } else {
                    $('.formError', parent).remove();
                }
            }
        }
        this.setValue = function(id, value) {
            cmf.getId(id).value = value;
        }
        this._color = new Array();
        this.color = function (id, error, color) {
            if(!cmf.getId(id)) return;
            if(this._color[id]==undefined) {
                this._color[id] = new Array();
                this._color[id]['color'] = cmf.getId(id).style.backgroundColor;
                this._color[id]['onfocus'] = cmf.getId(id).onfocus;
                eval("cmf.getId(id).onfocus = function(event) {"
                     +" this.style.backgroundColor = cmf.form.error._color['"+ id +"']['color'];"
                     +" if(cmf.form.error._color['"+ id +"']['onfocus']!=undefined) cmf.form.error._color['"+ id +"']['onfocus']();"
                     +" }");
            }
            if(error) {
                cmf.getId(id).style.backgroundColor = color;
            }
		}
	});


	/* select */
	t.select = new(function() {
		this.childDelete = function(selectObj) {
			while (selectObj.childNodes.length) {
				if (selectObj.firstChild.tagName == 'optgroup') {
					while (selectObj.firstChild.childNodes.length)
						selectObj.firstChild.removeChild(selectObj.firstChild.firstChild);
				}
				selectObj.removeChild(selectObj.firstChild);
			}
		}
		this.option = function(parent, text, value, selected, selected2) {
			parent.options.add(new Option(text,value,selected,selected2));
			return parent.lastChild;
		}
		this.optgroup = function (parent, text, value, selected, selected2) {
			var opt1 = new Option(text,value,selected,selected2);
			parent.appendChild(opt1);
			opt1.text = text;
			opt1.value = value;
			return opt1;
		}

		//заполнение селекта новыми данными
		this.newSelect = function(id) {
            var selectObj = cmf.getId(id);
            cmf.form.select.childDelete(selectObj);
            return selectObj;
		}
		this.newOptgroup = function(parent, name) {
            var optgroup= document.createElement('optgroup');
            optgroup.label = name;
            parent.appendChild(optgroup);
            return optgroup;
		}
	});


	/* text */
	t.text = new(function() {
		this.selectLabel = function(id) {
		    cmf.getId(id).focus();
		    cmf.getId(id).select();
		}

		this.onFocus = function(id, value) {
			if(id.value==value) id.value = '';
		}
		this.onBlur = function(id, value) {
			if(id.value=='') id.value = value;
		}
	});


	/* checkbox */
	t.checkbox = new(function() {
		this.prefix = function(form, prefix, value) {
			var elements = form.elements;
			for(i=0; i<elements.length; i++)
				if(elements[i].id.indexOf(prefix)!=-1)
					elements[i].checked = value;
		}
		this.select = function(id, checked) {
            if(cmf.getId(id)) cmf.getId(id).checked = checked;
		}
	});


	/* radio */
	t.radio = new(function() {
		this.select = function(id, checked) {
            if(cmf.getId(id)) cmf.getId(id).checked = checked;
		}
	});

})
