/**
 *	General operations on form fields and DOM nodes
 */
 var lmbFormUtil = {
     /**
      *	Returns form data in url encoded format
      */
     getFormData : function(form){
         var formData = "";
        for(var i = 0; i < form.elements.length; i++){
            var fld = form.elements[i];
            var name = fld.name;
            fld.id = fld.name;
            var value = "";
            switch(fld.type){
                case "text":
                case "password":
                case "textarea":
                case "hidden":
                    formData += name + "=" + escape(fld.value) + "&";
                    break;
                case "select-one":
                case "select-multiple":
                    for(var j = 0; j < fld.options.length; j++){
                        if(fld.options[j].selected){
                            var value = fld.options[j].value ? fld.options[j].value : "";
                            formData += name + "=" + escape(value) + "&";
                        }
                    }
                    break;
                case "radio":
                case "checkbox":
                    if(fld.checked){
                        formData += name + "=" + escape(fld.value) + "&";
                    }
                    break;
            }
        }
        return formData;
     },
     /**
      *	Removes style from list of class names.
      *	Used when user fixes the error and field doesn't need a
      *	validation style any more.
      */
     removeStyle : function(node, style){
         if(node.className){
             node.className = node.className.replace(style, "");
         }
         for(var i = 0; i < node.childNodes.length; i++){
             this.removeStyle(node.childNodes[i], style);
         }
     },

     appendOptionForValue : function(field, value){
         field.value = value;
         if((field.value != value) && (field.type == "select-one" || field.type == "select-multiple")){
            field.options[field.options.length] = new Option(value, value);
            field.value = value;
         }
     },

     getEmptyFields : function(form){
         var result = new Array();
         for(var i = 0; i < form.elements.length; i++){
            var fld = form.elements[i];
            var name = fld.name;
            switch(fld.type){
                case "text":
                case "password":
                case "textarea":
                    if(fld.value == ""){
                        result[result.length] = name;
                    }
                    break;
                case "select-one":
                case "select-multiple":
                    if(fld.selectedIndex < 0){
                        result[result.length] = name;
                    }
                    break;
                case "radio":
                case "checkbox":
                    var allOfThem = document.getElementsByName(name);
                    for(var j = 0; j < allOfThem.length; j++){
                        if(allOfThem.checked){
                            break;
                        }
                    }
                    if(j == allOfThem.length){
                        result[result.length] = name;
                    }
                    break;
            }
        }
        return result;
     }
 }