TextFieldStruct.prototype.constructor = TextFieldStruct;
function TextFieldStruct(class){
    if(!class) var class = "";
    this.fieldModels = new Array();
    this.class = class;
    this.instances = new Array();
}
TextFieldStruct.prototype.addModel = function(model){
    if(model.isInstance("TextFieldModel")){
        this.fieldModels[this.fieldModels.length] = model;
    }
};
TextFieldStruct.prototype.createStructure = function(textFieldsArray){
    if(!textFieldsArray) var textFieldsArray = new Array();
    var div = Utils.newElement("div", 
                        Array({name:"class", value:this.class}));
    var instancesFieldArray = new Array();
    for(var i=0; i< this.fieldModels.length; i++){
        var textField = (textFieldsArray.length <= i? new TextField() : textFieldsArray[i]);
        instancesFieldArray[instancesFieldArray.length] = textField;
        if(textField.isInstance("TextField")){
            div.appendChild(this.fieldModels[i].createElement(textField));
        }
    }
    var instance = new TextFieldStructInstance(instancesFieldArray, div);
    this.instances[this.instances.length] = instance;
    return div;
};

TextFieldStructInstance.prototype.constructor = TextFieldStructInstance;
function TextFieldStructInstance(textFieldsArray, layer){
    this.textFields = textFieldsArray;
    this.layer = layer;
}


TextFieldModel.prototype.constructor = TextFieldModel;
function TextFieldModel(name, label, fieldClass, divClass, labelClass){
    this.fieldClass = fieldClass;
    this.divClass = divClass;
    this.labelClass = labelClass;
    this.name = name;
    this.label = label;
}

TextFieldModel.prototype.createElement = function(textField){
    textField.divElement = Utils.newElement("div", 
                        Array({name:"class", value:this.divClass}));
    textField.labelElement = Utils.newElement("label", 
                        Array({name:"class", value:this.labelClass},
                        {name:"for", value:this.name}));
    textField.labelElement.appendChild(document.createTextNode(this.label));
    textField.fieldElement  = Utils.newElement("input", 
                        Array({name:"type", value:"text"},
                        {name:"class", value:this.fieldClass},
                        {name:"name", value:this.name},
                        {name:"value", value:textField.value}));
    
    textField.divElement.appendChild(textField.labelElement);
    textField.divElement.appendChild(textField.fieldElement);                 
    return textField.divElement;
};


TextField.prototype.constructor = TextField;
function TextField(value){
    if(!value) var value = "";
    this.value = value;
    this.divElement = null;
    this.labelElement = null;;
    this.fieldElement = null;
}

