in pytheas-core/src/main/resources/js/form2js/js2form.js [107:192]
function getFields(rootNode, useIdIfEmptyName, delimiter, arrayIndexes, shouldClean)
{
if (arguments.length < 4) arrayIndexes = {};
var result = {},
currNode = rootNode.firstChild,
name, nameNormalized,
subFieldName,
i, j, l,
options;
while (currNode)
{
name = '';
if (currNode.name && currNode.name != '')
{
name = currNode.name;
}
else if (useIdIfEmptyName && currNode.id && currNode.id != '')
{
name = currNode.id;
}
if (name == '')
{
var subFields = getFields(currNode, useIdIfEmptyName, delimiter, arrayIndexes, shouldClean);
for (subFieldName in subFields)
{
if (typeof result[subFieldName] == 'undefined')
{
result[subFieldName] = subFields[subFieldName];
}
else
{
for (i = 0; i < subFields[subFieldName].length; i++)
{
result[subFieldName].push(subFields[subFieldName][i]);
}
}
}
}
else
{
if (/SELECT/i.test(currNode.nodeName))
{
for(j = 0, options = currNode.getElementsByTagName('option'), l = options.length; j < l; j++)
{
if (shouldClean)
{
options[j].selected = false;
}
nameNormalized = normalizeName(name, delimiter, arrayIndexes);
result[nameNormalized] = currNode;
}
}
else if (/INPUT/i.test(currNode.nodeName) && /CHECKBOX|RADIO/i.test(currNode.type))
{
if(shouldClean)
{
currNode.checked = false;
}
nameNormalized = normalizeName(name, delimiter, arrayIndexes);
nameNormalized = nameNormalized.replace(_arrayItemRegexp, '[]');
if (!result[nameNormalized]) result[nameNormalized] = [];
result[nameNormalized].push(currNode);
}
else
{
if (shouldClean)
{
currNode.value = '';
}
nameNormalized = normalizeName(name, delimiter, arrayIndexes);
result[nameNormalized] = currNode;
}
}
currNode = currNode.nextSibling;
}
return result;
}