function serializeFormElements(elements){
  var serialize="";
  for (var i=0;i<elements.length;i++){
    var element=elements[i];
    if (!element.disabled && element.name){
      var value=null;
      switch(element.type.toLowerCase()){
      case 'checkbox':
      case 'radio':
        if (element.checked)
          value=element.value;
        break;
      case 'select-one':
        if (element.selectedIndex>0)
          value=element.options[element.selectedIndex].value;
        else{
          if (element.options.length>0)
            value=element.options[0].value;
        }
        break;
      case 'select-multiple':
        var values, length = element.length;
        if (length>0){
          for (var j = 0, values = []; j < length; j++) {
            var opt = element.options[j];
            if (opt.selected){
              if (serialize.length>0) serialize+="&";
              serialize+=element.name+"="+encodeURIComponent(opt.value);
            }
          }
        }
        break;
      case 'button':
      case 'submit':
        break;
      default:
        value=element.value;
        break;
      }
      if (value){
        if (serialize.length>0) serialize+="&";
        serialize+=element.name+"="+encodeURIComponent(value);
      }
    }
  }
  return serialize;
}
