var Q_rank = {
     url : './Q_incld/xhr.php?mode=rank\u0026kind=uri\u0026indx='
    ,dvsn   : null
    ,uri    : null
    ,vstd   : null
    ,wbmrkd : null
    ,prcnt  : null
    ,rank   : null
    ,cut_strng : function(strng) {
        var cttd  = '';
        var wdth  = 40;
        var lngth = strng.length;
        var pntr  = 0;
        while(pntr<lngth) {
            if((pntr+wdth)<lngth) cttd += strng.substr(pntr,wdth)+'<br />';
            else cttd += strng.substr(pntr);
            pntr += wdth;
        }
        return cttd;
    }
    ,scrlld : function() {
        var arry = new Array(2);
        if(document.body.scrollLeft)                 arry[0] = document.body.scrollLeft;
        else if(document.documentElement.scrollLeft) arry[0] = document.documentElement.scrollLeft;
        if(document.body.scrollTop)                  arry[1] = document.body.scrollTop;
        else if(document.documentElement.scrollTop)  arry[1] = document.documentElement.scrollTop;
        return arry;
    }
    ,locate : function(objct,clntX,clntY,wdth,hght,dvtnX,dvtnY) {
        var scrlld_x = 0;
        var scrlld_y = 0;
        var arry = Q_rank.scrlld();
        if(typeof(arry[0])!='undefined') scrlld_x += arry[0];
        if(typeof(arry[1])!='undefined') scrlld_y += arry[1];
        var clntW = document.documentElement.clientWidth;
        var clntH = document.documentElement.clientHeight;
        if(clntX+440>clntW) Q_rank.dvsn.style.left = scrlld_x+clntX-(wdth+dvtnX)+'px';
        else                Q_rank.dvsn.style.left = scrlld_x+clntX       +dvtnX+'px';
        if(clntY+200>clntH) Q_rank.dvsn.style.top  = scrlld_y+clntH        -hght+'px';
        else                Q_rank.dvsn.style.top  = scrlld_y+clntY       +dvtnY+'px';
    }
    ,pplrty : function(rank) {
        var clr;
        switch(rank) {
            case '10': clr = "#0066FF"; break;
            case  '9': clr = "#009966"; break;
            case  '8': clr = "#00CC66"; break;
            case  '7': clr = "#00FF00"; break;
            case  '6': clr = "#99FF00"; break;
            case  '5': clr = "#FFFF00"; break;
            case  '4': clr = "#FFCC00"; break;
            case  '3': clr = "#FF9900"; break;
            case  '2': clr = "#FF6600"; break;
            case  '1': clr = "#FF0000"; break;
        }
        var html = '';
        html += "<table cellspacing='1' style='background-color:white; float:right; width:111px;'>\n";
        html += "<tr>\n";
        for(i=0; i<10; i++) {
            html += "<td style='background-color:";
            if(i<=(10-rank)) html += clr; else html += 'silver';
            html += "; padding:0px;'>";
            html += "<img src='http://qindex.info/Q_img/blank.gif' style='width:10px; height:10px;' />";
            html += "</td>\n";
        }
        html += "</tr>\n";
        html += "</table>\n";
        return html;
    }
    ,request : function(e,indx) {
        var clntX = e.clientX;
        var clntY = e.clientY;
        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 uri    = root.getElementsByTagName('uri'      )[0].firstChild.nodeValue;
                        var vstd   = root.getElementsByTagName('visited'  )[0].firstChild.nodeValue;
                        var wbmrkd = root.getElementsByTagName('webmarked')[0].firstChild.nodeValue;
                        var prcnt  = root.getElementsByTagName('percent'  )[0].firstChild.nodeValue;
                        var rank   = root.getElementsByTagName('rank'     )[0].firstChild.nodeValue;
                        Q_rank.uri.innerHTML    = Q_rank.cut_strng(uri);
                        Q_rank.vstd.innerHTML   = '<b>'+vstd+'</b> time(s) for last 4 weeks';
                        Q_rank.wbmrkd.innerHTML = '<b>'+wbmrkd+'</b> time(s)';
                        Q_rank.rank.innerHTML   = "<table style='font-family:arial;'><tr><td>within the upper <b>"
                                                +prcnt+"</b>%</td><td>"+Q_rank.pplrty(rank)+"</td></tr></table>";
                        Q_rank.locate(Q_rank.dvsn,clntX,clntY,400,200,20,15);
                        Q_rank.dvsn.style.visibility = 'visible';
                    } else alert('There was a problem with the request.');
                }
            } catch(e) { alert('Caught Exception: ' + e.description); }
        };
        XHR.open('GET',Q_rank.url+indx,true);
        XHR.send(null);
    }
    ,start : function() {
        Q_rank.dvsn = document.createElement('div');
        Q_rank.dvsn.style.zIndex = 100;
        Q_rank.dvsn.style.visibility = 'hidden';
        Q_rank.dvsn.style.position  = 'absolute';
        Q_rank.dvsn.style.left  = '0px';
        Q_rank.dvsn.style.top  = '0px';
        Q_rank.dvsn.style.width  = '400px';
        Q_rank.dvsn.style.backgroundColor = 'white';
        Q_rank.dvsn.style.padding = '10px';
            tbl = document.createElement('table');
            tbl.style.width = '100%';
            tbl.style.fontFamily = 'arial';
            tbl.style.fontSize = '12px';
            tbdy = document.createElement('tbody');
                tr1 = document.createElement('tr');
                    td1 = document.createElement('td');
                    td1.style.backgroundColor = '#D7E0E7';
                    td1.style.border = '1px solid #BEC8D4';
                    td1.style.padding = '5px';
                    td1.style.textAlign = 'center';
                    td1.style.fontWeight = 'bold';
                    td1.colSpan = '2';
                        txt1 = document.createTextNode("PAGE POPULARITY");
                        td1.appendChild(txt1);
                    tr1.appendChild(td1);
                tbdy.appendChild(tr1);

                tr2 = document.createElement('tr');
                    td2 = document.createElement('td');
                    td2.style.backgroundColor = '#DEE7ED';
                    td2.style.border = '1px solid #BEC8D4';
                    td2.style.padding = '3px';
                        txt2 = document.createTextNode("URL");
                        td2.appendChild(txt2);
                    tr2.appendChild(td2);
                    Q_rank.uri = document.createElement('td');
                    Q_rank.uri.style.backgroundColor = '#F1F9FE';
                    Q_rank.uri.style.border = '1px solid #BEC8D4';
                    Q_rank.uri.style.padding = '3px';
                    Q_rank.uri.style.fontFamily = 'courier new';
                    tr2.appendChild(Q_rank.uri);
                tbdy.appendChild(tr2);

                tr3 = document.createElement('tr');
                    td4 = document.createElement('td');
                    td4.style.backgroundColor = '#DEE7ED';
                    td4.style.border = '1px solid #BEC8D4';
                    td4.style.padding = '3px';
                        txt3 = document.createTextNode("Visited");
                        td4.appendChild(txt3);
                    tr3.appendChild(td4);
                    Q_rank.vstd = document.createElement('td');
                    Q_rank.vstd.style.backgroundColor = '#F1F9FE';
                    Q_rank.vstd.style.border = '1px solid #BEC8D4';
                    Q_rank.vstd.style.padding = '3px';
                    Q_rank.vstd.style.textAlign = 'center';
                    tr3.appendChild(Q_rank.vstd);
                tbdy.appendChild(tr3);

                tr4 = document.createElement('tr');
                    td6 = document.createElement('td');
                    td6.style.backgroundColor = '#DEE7ED';
                    td6.style.border = '1px solid #BEC8D4';
                    td6.style.padding = '3px';
                        txt4 = document.createTextNode("Webmarked");
                        td6.appendChild(txt4);
                    tr4.appendChild(td6);
                    Q_rank.wbmrkd = document.createElement('td');
                    Q_rank.wbmrkd.style.backgroundColor = '#F1F9FE';
                    Q_rank.wbmrkd.style.border = '1px solid #BEC8D4';
                    Q_rank.wbmrkd.style.padding = '3px';
                    Q_rank.wbmrkd.style.textAlign = 'center';
                    tr4.appendChild(Q_rank.wbmrkd);
                tbdy.appendChild(tr4);

                tr5 = document.createElement('tr');
                    td8 = document.createElement('td');
                    td8.style.backgroundColor = '#DEE7ED';
                    td8.style.border = '1px solid #BEC8D4';
                    td8.style.padding = '3px';
                        txt5 = document.createTextNode("Rank");
                        td8.appendChild(txt5);
                    tr5.appendChild(td8);
                    Q_rank.rank = document.createElement('td');
                    Q_rank.rank.style.backgroundColor = '#F1F9FE';
                    Q_rank.rank.style.border = '1px solid #BEC8D4';
                    Q_rank.rank.style.padding = '3px';
                    Q_rank.rank.style.textAlign = 'center';
                    tr5.appendChild(Q_rank.rank);
                tbdy.appendChild(tr5);

                tr6 = document.createElement('tr');
                    td10 = document.createElement('td');
                    td10.style.backgroundColor = '#D7E0E7';
                    td10.style.border = '1px solid #BEC8D4';
                    td10.style.padding = '5px';
                    td10.style.textAlign = 'center';
                    td10.colSpan = '2';
                        spn = document.createElement("span");
                        spn.style.cursor = 'pointer';
                        spn.style.color = '#003366';
                        Q_rank.event_attach(spn,'click',function() { Q_rank.dvsn.style.visibility='hidden'; });
                            txt6 = document.createTextNode("CLOSE");
                            spn.appendChild(txt6);
                        td10.appendChild(spn);
                    tr6.appendChild(td10);
                tbdy.appendChild(tr6);

            tbl.appendChild(tbdy);
            Q_rank.dvsn.appendChild(tbl);
        document.getElementsByTagName('body')[0].appendChild(Q_rank.dvsn);
    }
    ,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_rank.event_attach(window,'load',Q_rank.start);
    }
}
Q_rank.attach();
