// global flag var isIE = false; // global request and XML document objects var req; var ddid; var kwaak; // targetid's var cell; // toggling cells var redirectionURL; // where should the dropdown go to var regionid; var city; var querystring = ''; var Filter = '&filter='; var QueryCounter = ''; var SaveQS; var XMLurl = '/modules/wtb_xml.cfm'; // retrieve XML document (reusable generic function); // parameter is URL string (relative or complete) to // an .xml file whose Content-Type is a valid XML // type, such as text/xml; XML source must be from // same domain as HTML file function loadXMLDoc(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { isIE = true; req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } // handle onreadystatechange event of req object function processReqChange() { // only if req shows "loaded" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { //alert('clearTopicList: ' + kwaak); clearTopicList(kwaak); buildTopicList(kwaak); //alert(kwaak + ' ' + cell) //alert('js: line 58') toggleOn(kwaak); //toggleOff(cell + '0'); //toggleOn(cell + '1'); //toggleOn(cell + '2'); ShowHideStuff(); } else { alert("There was a problem retrieving the XML data:\n" + '[' + redirectionURL + ']' + req.statusText); } } } //function ValidateEmail(s) { // return s.match('#JSStringFormat("^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$")#'); // } // invoked by "Category" select element change; // loads chosen XML document, clears Topics select // element, loads new items into Topics select element function loadDoc(elementId,targetid,cll,locurl) { // equalize W3C/IE event models to get event object redirectionURL = locurl; cell = cll; kwaak=targetid; // evt = (evt) ? evt : ((window.event) ? window.event : null); // if (evt) { // equalize W3C/IE models to get event target reference // var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); // if (elem) { try { var qs; // qs = elem.options[elem.selectedIndex].value; qs = document.getElementById(elementId).value; // ddid = elem.id; // alert('js: line 95, elem.id: ' + elem.id + ', selectedIndex: ' + elem.selectedIndex); filter = document.getElementById("productline").value; countryid = document.getElementById("countryid").value; regionid = document.getElementById("regionid").value; city = document.getElementById("city").value; //alert('js: line 104 countryid/ regionid/ city: ' + countryid + ' ' + regionid + ' ' + city); if (elementId == 'countryid') { countryid = document.getElementById('countryid').value; //alert('js: line 101, countryid: ' + countryid); querystring = ''; querystring = 'countryid' + '=' + countryid + Filter; } if (elementId == 'regionid') { regionid = qs; querystring = ''; querystring = 'countryid=' + countryid + '®ionid=' + regionid + Filter; } //if (elementId == 'city') { //city = qs; //querystring = ''; //querystring = 'countryid=' + countryid + '®ionid=' + regionid + '&city=' + city + '&filter=' + filter; //} //alert('js, line 123 querystring: ' + querystring); loadXMLDoc(XMLurl + '?' + querystring + '&2620560F21406457D252970FFBF447F1'); //document.getElementById('queryStringDiv').innerHTML = XMLurl + '?' + querystring + '&2620560F21406457D252970FFBF447F1'; } catch(e) { var msg = (typeof e == "string") ? e : ((e.message) ? e.message : "Unknown Error"); alert("Unable to get XML data...:\n" + '[' + redirectionURL + ']\n' + msg); return; } //} //} } // retrieve text of an XML document element, including // elements using namespaces function getElementTextNS(prefix, local, parentElem, index) { var result = ""; if (prefix && isIE) { // IE/Windows way of handling namespaces result = parentElem.getElementsByTagName(prefix + ":" + local)[index]; } else { // the namespace versions of this method // (getElementsByTagNameNS()) operate // differently in Safari and Mozilla, but both // return value with just local name, provided // there aren't conflicts with non-namespace element // names result = parentElem.getElementsByTagName(local)[index]; } if (result) { // get text, accounting for possible // whitespace (carriage return) text nodes if (result.childNodes.length > 1) { return result.childNodes[1].nodeValue; } else { return result.firstChild.nodeValue; } } else { return "n/a"; } } // empty Topics select list content function clearTopicList(targetid) { var select = document.getElementById(targetid); while (select.length > 0) { select.remove(0); } } // add item to select element the less // elegant, but compatible way. function appendToSelect(select, value, content) { var opt; opt = document.createElement("option"); opt.value = value; opt.appendChild(content); select.appendChild(opt); } // fill Topics select list with items from // the current XML document function buildTopicList(targetid) { var select = document.getElementById(targetid); var items = req.responseXML.getElementsByTagName("item"); // loop through elements, and add each nested // element to Topics select element // alert('wat nou weer' + redirectionURL); for (var i = 0; i < items.length; i++) { add = ''; pre = ''; if (targetid == 'citykont') { add = '&' + querystring; pre = redirectionURL + '?' + targetid + '='; } appendToSelect(select, pre + getElementTextNS("", "id", items[i], 0) + add, document.createTextNode(getElementTextNS("", "name", items[i], 0))); } // clear detail display document.getElementById("details").innerHTML = ""; } // display details retrieved from XML document function showDetail(evt) { evt = (evt) ? evt : ((window.event) ? window.event : null); var item, content, div; if (evt) { var select = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); if (select && select.options.length > 1) { // copy element text for // the selected item item = req.responseXML.getElementsByTagName("item")[select.value]; content = getElementTextNS("content", "encoded", item, 0); div = document.getElementById("details"); div.innerHTML = ""; // blast new HTML content into "details"
div.innerHTML = content; } } } // Switch for German postal code search... // function countrychoice(evt) { // evt = (evt) ? evt : ((window.event) ? window.event : null); // if (evt) { // // equalize W3C/IE models to get event target reference // var elem = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null); // if (elem) { // // qs = elem.options[elem.selectedIndex].value; // // if (qs == '78') { // // toggleOff('rr1,rr2,ss1,ss2,fx'); // toggleOn('pc1,pc2,pc3'); // document.forms[0].action = '/wheretobuy/postalcodesearchgermany.cfm?ac=1'; // // } else { // // toggleOff('rr1,rr2,ss1,ss2,pc1,pc2,pc3'); // loadDoc(evt,'regionid','rr','/modules/wtb_xml.cfm'); // toggle('rr0'); // } // // } // } // }