var WEBAPI_URL = 'http://www.efficiencyvermont.com/stella/custom-content/marketplace2/webapi.cfm'; function AjaxReq () { this.req = null; this.invoke = invoke; this.on_ready_state_change = on_ready_state_change; this.oncomplete = null; function invoke(method, params) { var url = WEBAPI_URL + "?invoke=" + method; if (params != null) { for (var name in params) url += '&' + name + '=' + escape(params[name]); } this.req = (window.XMLHttpRequest)? new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP"); //alert(url); this.req.open("GET", url, true); var objctx = this; this.req.onreadystatechange = function () {objctx.on_ready_state_change();}; this.req.send(null); } function on_ready_state_change() { if (this.req.readyState == 4) { //alert(this.req.status); if (this.req.status == 200) { if (this.on_complete) this.on_complete(this.req.responseText); } } } } function AjaxCtl (id) { this.baseCtor = AjaxReq; this.baseCtor(); this.id = id; this.handlers = new Array(); this.on_complete = on_complete; this.check_all = check_all; this.check_values = check_values; this.get_checked_value = get_checked_value; function add_event_handler(obj) { this.listeners.push(obj); } function on_complete(text) { //alert(text); var el = document.getElementById(this.id); if (!el) return; el.innerHTML = text; if (this.on_update_complete) this.on_update_complete(); for (var i = 0; i < this.handlers.length; i++) { if (this.handler[i].on_update_complete) this.handler[i].on_update_complete(); } } function check_all(b) { var el = document.getElementById(this.id); if (!el) return; var inputs = el.getElementsByTagName('INPUT'); for (var i = 0; i < inputs.length; i++) { if (typeof inputs[i].checked == 'undefined') continue; inputs[i].checked = b; } } function check_values(a) { var el = document.getElementById(this.id); if (!el) return; var h = new Array(); for (var i = 0; i < a.length; i++) h[a[i]] = true; var inputs = el.getElementsByTagName('INPUT'); for (var i = 0; i < inputs.length; i++) { if (typeof inputs[i].checked == 'undefined') continue; inputs[i].checked = h[inputs[i].value]?1:0; } } function get_checked_value() { var el = document.getElementById(this.id); if (!el) return; var inputs = el.getElementsByTagName('INPUT'); for (var i = 0; i < inputs.length; i++) { if (inputs[i].checked){ return inputs[i].value; } } } } function CatCtl(id) { this.baseCtor = AjaxCtl; this.baseCtor(id); this.update = update; this.on_update_complete = on_update_complete; this.on_change = on_change; function update(type) { var params = new Array(); if (type) params['type'] = type; this.invoke('catctl', params); } function on_update_complete(text) { this.on_change(); } function on_change() { var cat = this.get_checked_value(); g_diagCtl.update(cat); g_specCtl.update(cat); } } function DiagCtl(id) { this.baseCtor = AjaxCtl; this.baseCtor(id); this.update = update; function update(cat) { var params = new Array(); if (cat) params['cat'] = cat; this.invoke('diagctl', params); } } function SpecCtl(id) { this.baseCtor = AjaxCtl; this.baseCtor(id); this.update = update; function update(cat) { var params = new Array(); if (cat) params['cat'] = cat; this.invoke('specctl', params); } } var g_catCtl = new CatCtl('catctl'); var g_diagCtl = new DiagCtl('diagctl'); var g_specCtl = new SpecCtl('specctl');