var Q_ctgry = {
     url    : 'Q_incld/xhr.php?mode=ctgry\u0026indx='
    ,g_knk  : ''
    ,g_indx : ''
    ,request : function() {
        var XHR;
        if(window.XMLHttpRequest) { // Mozilla, Safari, ...
            XHR = new XMLHttpRequest();
            if (XHR.overrideMimeType) XHR.overrideMimeType('text/xml');
        } else if(window.ActiveXObject) { // IE
            try { XHR = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                try { XHR = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
            }
        }
        if (!XHR) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        XHR.onreadystatechange = function() {
            try {
                if (XHR.readyState == 4) {
                    if (XHR.status == 200) {
                        var xml     =  XHR.responseXML;
                        var root    =  xml.getElementsByTagName('root')[0];
                        var ancstrs = root.getElementsByTagName('ancestor');
                        var uppr = '';
                        for(n=0; n<ancstrs.length; n++) {
                            if(n!=0) uppr += " &gt; ";
                            uppr += "<span style='font-weight:bold;";
                            if(n!=ancstrs.length-1) {
                                uppr += " color:#003366; cursor:pointer;'";
                                uppr += " onclick=\"document.getElementById('i_prnt').value=";
                                uppr += ancstrs[n].getElementsByTagName('index')[0].firstChild.nodeValue;
                                uppr += "; Q_ctgry.request();\"";
                            } else uppr += "'";
                            uppr += ">"+ancstrs[n].getElementsByTagName('name')[0].firstChild.nodeValue+"</span>";
                        }
                        document.getElementById('i_spn_ctgry').innerHTML = uppr;
                        var chldrn  = root.getElementsByTagName('child');
                        if(chldrn.length) {
                            var lwr = "&nbsp;&nbsp;<select";
                            lwr += " onchange=\"document.getElementById('i_prnt').value=this.options[this.selectedIndex].value; Q_ctgry.request();\">";
                            lwr += "<option value=''>sub directory</option>";
                            Q_ctgry.g_indx = parseInt(document.getElementById('i_indx').value);
                            for(n=0; n<chldrn.length; n++) {
                                var tmp = chldrn[n].getElementsByTagName('index')[0].firstChild.nodeValue;
                                if(Q_ctgry.g_knd=='ctgry' && Q_ctgry.g_indx==tmp) continue;
                                lwr += "<option value='"+tmp+"'>";
                                lwr += chldrn[n].getElementsByTagName('name')[0].firstChild.nodeValue;
                                lwr += "</option>";
                            }
                            lwr += "</select>";
                            document.getElementById('i_spn_child').innerHTML = lwr;
                        } else document.getElementById('i_spn_child').innerHTML = '';
                    } else alert('There was a problem with the request.');
                }
            } catch(e) { alert('Caught Exception: ' + e.description); }
        };
        XHR.open('GET',Q_ctgry.url+document.getElementById('i_prnt').value,true);
        XHR.send(null);
    }
    ,event_attach : function(objct,type,fnctn) {
        if(objct.addEventListener) { objct.addEventListener(type,fnctn,false); return true; } //Mozilla
        else if(objct.attachEvent) { var rtrn = objct.attachEvent('on'+type,fnctn); return rtrn; } //MSIE
        else objct.onclick = fnctn;
    }
    ,attach : function() {
        Q_ctgry.g_knd   = location.search.match(/g_knd=(ctgry|page)/i)[1];
        Q_ctgry.event_attach(window,'load',Q_ctgry.request);
    }
}
Q_ctgry.attach();

