var fIsSafari = /Safari\//i.test(navigator.userAgent) && !/Chrom\w+\//i.test(navigator.userAgent); function resizeMatching(oSpan, oSel) { var rc = oSpan.getBoundingClientRect(); if (!rc || !rc.width) return; oSel.style.width = rc.width + 'px'; oSel.style.height = rc.height + 'px'; } function addOption(oSel, sOpt) { var oOpt = document.createElement('option'), sText; if (sOpt instanceof Array) { oOpt.innerHTML = sOpt[0]; oOpt.valueHTML = sOpt[1]; } else if (sOpt.symbol) oOpt.innerHTML = oOpt.valueHTML = sOpt.symbol; else if ((sText = sOpt.text || sOpt.name)) { oOpt.innerHTML = sText; oOpt.valueHTML = sOpt.html || sText; } else if (sOpt.textValue) { oOpt.innerHTML = sOpt.textValue; oOpt.valueHTML = sOpt.htmlValue; } else if (sOpt.name) oOpt.innerHTML = oOpt.valueHTML = sOpt.name; else oOpt.innerHTML = oOpt.valueHTML = sOpt; oOpt.scriptObject = sOpt; oSel.add(oOpt, 0); return oOpt; } function addHiddenSelect(oSpan, asOptions, fnChange) { var oFrag; if (oSpan instanceof DocumentFragment) { oFrag = oSpan; oSpan = oFrag.firstElementChild; } var oSel = document.createElement('select'); if (asOptions instanceof Array) { for (var i = asOptions.length; --i >= 0; ) addOption(oSel, asOptions[i]); } else { for (var sOpt in asOptions) addOption(oSel, asOptions[sOpt]); } oSel.selectedIndex = -1; if (oSel.selectedIndex >= 0 || fIsSafari) { var oDummy = addOption(oSel, { text: 'wähle:', html: '' }); oDummy.disabled = oDummy.selected = true; } oSel.style.position = 'absolute'; oSel.style.opacity = 0; oSel.style.zIndex = 10; oSel.onchange = function(oEvt) { var sHTML = oSpan.innerHTML = oSel.options[oSel.selectedIndex].valueHTML; oSpan.style.verticalAlign = sHTML.indexOf('