function form_to_queryparam (form_id, fields, additionals) {
var form = document.getElementById(form_id);
var param = [];
for (var add_name in additionals) {
param.push(add_name + '=' + encodeURIComponent(additionals[ add_name ]));
}
for (var field_idx in fields) {
var elem = form[ fields[ field_idx ] ];
var value;
// encode text inputs
if (elem.type == 'text') {
value = elem.value;
}
// encode checkboxes
else if (elem.type == 'checkbox') {
if (elem.checked) {
value = elem.value;
}
else {
value = '';
}
}
// encode select boxes
else if (elem.options) {
for (var option_idx in elem.options) {
var opt = elem.options[ option_idx ];
if (!opt.selected)
continue;
param.push(elem.name + '=' + encodeURIComponent(opt.value));
}
continue;
}
param.push(elem.name + '=' + encodeURIComponent(value));
}
return param.join('&');
}