var XSucheParams = new Object(); var waitTimer = null; var waitElem = null; var lastTimestamp = null; function initXSuche() { var form = document.psucheForm; if( form ) { var i; for( i = 0; i < form.elements.length; i++ ) { var elem = form.elements[i]; /* wenn elem ist eine checkbox oder radiobox, dann nur beachten, wenn sie gecheckt ist. sonst immer */ var doit = !elem.type || (elem.type != "checkbox" && elem.type != "radio") || elem.checked; if( doit ) { if( XSucheParams[elem.name] ) { /* schon da, dann array */ if( typeof(XSucheParams[elem.name]) == "object" ) { XSucheParams[elem.name].push(elem.value); } else { var oldValue = XSucheParams[elem.name]; XSucheParams[elem.name] = new Array(oldValue, elem.value); } } else { XSucheParams[elem.name] = elem.value; } } if( elem.type == "checkbox" || elem.type == "radio" ) { elem.onclick = sendXSuche; } else if( elem.type == "text" ) { elem.onkeyup = waitAndSendXSuche; } else { elem.onchange = sendXSuche; } } } } function waitAndSendXSuche(event) { if( event == null ) event = window.event; if( waitTimer ) { window.clearTimeout(waitTimer); waitTimer = null; } waitElem = event.target || event.srcElement; // Übergabe eines Events geht im IE nicht. waitTimer = window.setTimeout("sendXSuche(null,waitElem)", 1000); } function sendXSuche(event,elem) { if( event == null ) event = window.event; var form = document.psucheForm; if( form ) { if( elem == null ) elem = event.target || event.srcElement; if( elem.type == "checkbox" || elem.type == "radio" ) { /* hier kann es mehrere geben */ XSucheParams[elem.name] = ""; var elems = document.getElementsByName(elem.name); var i; for( i = 0; i < elems.length; i++ ) { elem = elems[i]; if( elem.checked ) { /* same thing as above */ if( XSucheParams[elem.name] ) { /* schon da, dann array */ if( typeof(XSucheParams[elem.name]) == "object" ) { XSucheParams[elem.name].push(elem.value); } else { var oldValue = XSucheParams[elem.name]; XSucheParams[elem.name] = new Array(oldValue, elem.value); } } else { XSucheParams[elem.name] = elem.value; } } } } else { XSucheParams[elem.name] = elem.value; } var url = "/cgi-bin/produktsuche2/xSuche.pl"; var t = new Date().getTime(); XSucheParams['timestamp'] = t; jQuery.getJSON(url, XSucheParams, evalXSucheResult); } } function evalXSucheResult(param) { if( param ) { if( lastTimestamp = null || lastTimestamp < param.timestamp ) { lastTimestamp = param.timestamp; var button = document.getElementById('psucheFormButton'); button.value = button.title = param.count == 0 ? 'Keine Treffer' : '' + param.count + ' Treffer anzeigen'; /* var div = document.getElementById('psucheFormAjaxTreffer'); if( div ) div.innerHTML = "" + param.count + " Treffer"; */ } } }