function nbInit($s){ function nBind(callback, prop){ for (var selector in $s){ selector = prop || selector; //change selector to passed if it var items = document.querySelectorAll(selector); items = items.length ? items : [document.getElementById(selector)]; items = items[0] ? items : document.getElementsByName(selector); for (var i=0,item=items[i];i option item.value = key; } if (typeof value === "boolean" && item.type !== 'checkbox'){ //boolean means visibility, except checkbox if (value){ item.style.display = "originalDisplay" in item ? item.originalDisplay : ""; } else { item.originalDisplay = item.style.display; item.style.display = "none"; } return; } if (item.type === 'radio' && !keyExists){ //radiogroup set if (item.value === value){ //only item with right value to set item.checked = true; } return; } if (item.type === 'checkbox' && !keyExists){ //checkbox setting by boolean item.checked = !!value; return; } if (item.children.length && typeof value === "object"){ //recursive fill item.copy = item.copy || item.cloneNode(true); //original node var originalChildren = item.copy.children; var i = 0; var isArray = Array.isArray(value); //different logic for array and objects if (!isArray){ // if first key in array find as class name in one of subnodes var classFound = false; for (var key in value){ if (item.getElementsByClassName(key).length){ classFound = true; break; } } if (classFound){ for (var key in value){ var classSubnodes = item.getElementsByClassName(key); for (var i=0;i