var obj; var field_0; var field_1; var field_2; var field_loading; function fillSelect(host, obj, fk_value, form) { this.obj = obj; this.field_0 = form.country_id; this.field_1 = form.state_id; this.field_2 = form.region_id; resetSelect(obj); // check if object exisits. if (typeof obj != 'object') return false; if (fk_value > 0) { form.country_id.disabled=true; form.state_id.disabled=true; form.region_id.disabled=true; } if (obj.name == "state_id") { resetSelect(form.region_id); if (fk_value > 0) { form.state_id.options[1] = new Option(showText(LANG_JS_LOADING), -1); form.state_id.options[1].selected=true; this.field_loading = form.state_id; } url = host + '/location.php?country_id=' + fk_value; if (fk_value > 0) loadResult(url, ''); } if (obj.name == "region_id") { if (fk_value > 0) { form.region_id.options[1] = new Option(showText(LANG_JS_LOADING), -1); form.region_id.options[1].selected=true; this.field_loading = form.region_id; } url = host + '/location.php?state_id=' + fk_value; if (fk_value > 0) loadResult(url, ''); } } function fillSelectSearchPage(host, obj, fk_value, form) { this.obj = obj; this.field_0 = form.search_country; this.field_1 = form.search_state; this.field_2 = form.search_region; resetSelect(obj); // check if object exisits. if (typeof obj != 'object') return false; if (fk_value > 0) { form.search_country.disabled=true; form.search_state.disabled=true; form.search_region.disabled=true; } if (obj.name == "search_state") { resetSelect(form.search_region); if (fk_value > 0) { form.search_state.options[1] = new Option(showText(LANG_JS_LOADING), -1); form.search_state.options[1].selected=true; this.field_loading = form.search_state; } url = host + '/location.php?country_id=' + fk_value + '&searchpage=1'; if (fk_value > 0) loadResult(url, ''); } if (obj.name == "search_region") { if (fk_value > 0) { form.search_region.options[1] = new Option(showText(LANG_JS_LOADING), -1); form.search_region.options[1].selected=true; this.field_loading = form.search_region; } url = host + '/location.php?state_id=' + fk_value + '&searchpage=1'; if (fk_value > 0) loadResult(url, ''); } } function resetSelect(obj) { while (obj.options.length>1) { deleteIndex=obj.options.length-1; obj.options[deleteIndex]=null; } } 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) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } function processReqChange() { // only if req shows "complete" if (req.readyState == 4) { // only if "OK" if (req.status == 200) { // ...processing statements go here response = req.responseXML.documentElement; if (response) { var result = new Array(); for (i=0; i < response.getElementsByTagName('id').length; i++) { result[i] = {'id': response.getElementsByTagName('id')[i].firstChild.data, 'name': response.getElementsByTagName('name')[i].firstChild.data, 'obj_name': response.getElementsByTagName('obj_name')[i].firstChild.data}; } loadResult('',result); unlockLocation(); } } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } function loadResult(url, result) { if (result != '') { // Response mode for (i=0; i < result.length; i++) { document.getElementById(result[i].obj_name).options[document.getElementById(result[i].obj_name).options.length] = new Option(result[i].name,result[i].id); } } else if (url != '') { // Input mode return (loadXMLDoc(url)); } } function unlockLocation() { if (this.field_loading) { this.field_loading.options[1]=null; this.field_loading.options[0].selected=true; } this.field_0.disabled=false; this.field_1.disabled=false; this.field_2.disabled=false; }