﻿//---------------------------- UI Manager -----------------------
onerror = logError;

function logError(msg,url,line)
{
    //new Ajax('/logError.aspx?error=' + escape(msg) + '&line=' + line + '&loc=' + escape(document.location.href) + '&browser=' + browser, {method: 'get'}).request();
	return;
};

function logErrorObject(e)
{
    logError(escape(e.name) + ": " + escape(e.message),null,e.lineNumber);
    
};

window.addEvent('domready', function() {

    getBrowserInfo();
    if ($('siteurl'))
    {
	    $('siteurl').focus();
        $('siteurl').addEvent('keypress', function(e){
        if (!e) var e = window.event;
        if (e.keyCode) code = e.keyCode;
        else if (e.which) code = e.which;

        if (code==13) {
            startJob();
        }
        });
        
    }
    //do not send signal for other browsers
    if (browser != 'Netscape Navigator')
    {
        return;
    }
    //send check if extension is installed
    try
    {
        var element = document.createElement("HasExtensionDataElement");
        document.documentElement.appendChild(element);
  
        var evt = document.createEvent("Events");
        evt.initEvent("HasExtensionSignalEvent", true, false);
        element.dispatchEvent(evt);
    }
    catch(e)
    {
    }

});

var UIManager = new Object();

UIManager.showMissingExtensionWarning = function()
{
    $('missing_extension').style.display = 'block';
};

UIManager.hideMissingExtensionWarning = function()
{
    try{
		$('missing_extension').style.display = 'none';
	}catch(e){}
};


UIManager.setProgress = function(perc)
{
    var maxWidth = parseInt($('progress').style.width.replace('px',''));
    $('progress_done').style.width = maxWidth * (perc / 100) + 'px';
    $('progress_done').style.width = maxWidth * (perc / 100) + 'px';
    $('progress_perc').innerHTML = Math.round(perc) + '%';


};

UIManager.changeUIOnStart = function(url)
{
    UIManager.hideMissingExtensionWarning();
    $('intro_text').style.display = 'none';
    $('progress').style.display = 'block';
    $('backlinks_items').innerHTML = "";
    $('toppages_items').innerHTML = "";
    $('anchors_items').innerHTML = "";
    $('siteurl').value = url;
    //$('query_container').style.marginTop = '200px';
};

UIManager.changeUIOnComplete = function()
{
    $('progress').style.display = 'none';
    $('progress_perc').innerHTML = '';
    //$('query_container').style.marginTop = '-20px';
};

UIManager.load = function(pagesData,linksData)
{

    if (pagesData && pagesData.length == 0)
    {
        //site is probably not indexed in yahoo
        $('messageDiv').style.display = 'block';
        $('messageDiv').innerHTML = 'No data for this website - probably not indexed in Yahoo';
        
        return;
    }

    if (pagesData)
    {
        TopPages.load(pagesData);
        TopPages.show();
    }
    if (linksData)
    {
        
        BackLinks.load(linksData);
        UIManager.updateAnchorCount();
        UIManager.updatePagerankChartData();
        UIManager.updateLinkTypeChartData();
        UIManager.updateTotals();
        
        BackLinks.show();
        PagerankChart.show();
        LinkTypeChart.show();
        Anchors.show();
        UIManager.showTotals();
        UIManager.changeUIOnComplete();
        if (!LD.hasExtension)
        {
            reportCompletedOverlay(true);
            $('missingData').style.display = 'block';
        }
    }
    
};

UIManager.updateBacklinkStrength = function()
{
    var item;
    
    for(i=0;i<BackLinks.data.length;i++)
    {
        item = BackLinks.data[i];
        if (item.pagerank == -1 || item.obl == 0)
        {
            BackLinks.data[i].strength = 0;
        }
        else
        {
            BackLinks.data[i].strength = Math.round(Math.pow((item.pagerank + 1),3)  * 4 / item.obl);
        }
        for(j=0;j<TopPages.data.length;j++)
        {
            if (TopPages.data[j].url == item.page)
            {
                TopPages.data[j].strength = TopPages.data[j].strength + BackLinks.data[i].strength;
            }
        }
        //TopPages.alldata[item.pageIndex].strength = TopPages.alldata[item.pageIndex].strength + BackLinks.data[i].strength;
    }
    TopPages.load(TopPages.data);
};

UIManager.updateAnchorCount = function()
{
    UIManager.totalUniqueAnchors = 0;
    anchorsData = new Array();
    for (i=0;i<BackLinks.data.length;i++)
    {
            if (BackLinks.data[i].anchor)
            {
                updated = false;
                for (j=0;j<anchorsData.length;j++)
                {
                    if (anchorsData[j].anchor == BackLinks.data[i].anchor)
                    {
                        updated = true;
                        anchorsData[j].count++;
                    }
                }
                if (!updated)
                {
                    obj = new Object();
                    obj.count=1;
                    obj.anchor = BackLinks.data[i].anchor;
                    anchorsData.push(obj);
                    UIManager.totalUniqueAnchors++;
                }

            }
    }
    

    
    Anchors.load(anchorsData);
    $('totals_uniqueanchors').innerHTML = UIManager.totalUniqueAnchors;
};

UIManager.updatePagerankChartData = function()
{
    prData = new Array();
    var pr;
    for (i=0;i<BackLinks.data.length;i++)
    {
            /*if (BackLinks.data[i].pagerank == -1)
            {
                pr = 'N/A';
            }
            else
            {*/
                pr = BackLinks.data[i].pagerank;
            //}
            updated = false;
            for (j=0;j<prData.length;j++)
            {
                if (prData[j].pagerank == pr)
                {
                    updated = true;
                    prData[j].count++;
                }
            }
            if (!updated)
            {
                obj = new Object();
                obj.count=1;
                obj.pagerank = pr;
                prData.push(obj);
            }
    }
    PagerankChart.load(prData);
};

UIManager.updateLinkTypeChartData = function()
{
    linkTypeData = new Array();
    for (i=0;i<BackLinks.data.length;i++)
    {
            updated = false;
            for (j=0;j<linkTypeData.length;j++)
            {
                if (linkTypeData[j].linktype == BackLinks.data[i].linktype)
                {
                    updated = true;
                    linkTypeData[j].count++;
                }
            }
            if (!updated)
            {
                obj = new Object();
                obj.count=1;
                obj.linktype = BackLinks.data[i].linktype;
                linkTypeData.push(obj);
            }
    }
    LinkTypeChart.load(linkTypeData);


};

UIManager.updateTotals = function()
{
    $('totals_backlinks').innerHTML = BackLinks.alldata.length;
};

UIManager.showTotals = function()
{
    $('totals').style.display = 'block';
};

UIManager.hideTotals = function()
{
    $('totals').style.display = 'none';
};
//---------------------------- Base UI table data container -----------------------
var TableDataContainer = new Class({
    initialize: function(options){
        this.o = options;
        this.data = null;
        this.alldata = null;
    },
    
    load: function(data)
    {
        this.o.currentPage = 1;
        this.data = data;
        this.alldata = data;
        this.sort(this.o.currentSort,true);
    },
    
    refresh: function()
    {
        var output = '';
        if (!this.data)
        {
            output = 'no data';
        }
        else
        {
            start = (this.o.currentPage-1)*this.o.pageSize;
            for (i=start;i<start + this.o.pageSize;i++)
            {
                output = output + this.displayItem(this.data[i]);
            }
         
            this.createPaging();   
        }
        $(this.o.elemID + '_items').innerHTML = output;
    
    },
    
    displayItem: function(item)
    {
        alert('extend!!');
    },
    
    createPaging: function()
    {
       var output = '<a class="cursorhand" style="text-decoration:none;" onclick="' + this.o.classID + '.changePaging(1)"><div class="paging"><<</div></a>';
       if (this.o.currentPage > 1)
       {
        output += '<a class="cursorhand" style="text-decoration:none;" onclick="' + this.o.classID + '.changePaging(' + (this.o.currentPage - 1) + ')"><div class="paging"><</div></a>';
       }
       var pageCount = Math.floor(this.data.length / this.o.pageSize);
       if (this.data.length % this.o.pageSize > 0)
       {
         pageCount++;
       }
       var startPage = 1;
       var endPage = pageCount;
       if (pageCount > this.o.pagerSize)
       {
         if (this.o.currentPage > (this.o.pagerSize / 2) && this.o.currentPage < (pageCount - (this.o.pagerSize / 2)))
         {
            startPage = this.o.currentPage - (this.o.pagerSize / 2);
            endPage = this.o.currentPage + (this.o.pagerSize / 2);
         }
         else
         {
             if (this.o.currentPage <= (this.o.pagerSize / 2))
             {
                startPage = 1;
                endPage = this.o.pagerSize;
             }
             else
             {
                startPage = pageCount - this.o.pagerSize;
                endPage = pageCount;
             }
         
         }
       }
       for (i=startPage;i<=endPage;i++)
       {
         if (i == this.o.currentPage)
         {
            cur = '_current';
         }
         else
         {
            cur = '';
         }
         if (i > 99)
         {
            customStyle = 'style="font-size:8px;"';
         }         
         else
         {
            customStyle = '';
         }
         output += '<a class="cursorhand" style="text-decoration:none;" onclick="' + this.o.classID + '.changePaging(' + i + ')"><div ' + customStyle + ' class="paging' + cur + '">' + i + '</div></a>';
       }
       if (this.o.currentPage < pageCount)
       {
        output += '<a class="cursorhand" style="text-decoration:none;" onclick="' + this.o.classID + '.changePaging(' + (this.o.currentPage + 1) + ')"><div class="paging">></div></a>';
       }
       output += '<a class="cursorhand" style="text-decoration:none;" onclick="' + this.o.classID + '.changePaging(' + pageCount + ')"><div class="paging">>></div></a>';
       $(this.o.elemID + '_paging').innerHTML = output;
    },

    changePaging: function(i)
    {
        this.o.currentPage = i;
        this.createPaging();
        this.refresh();
    },
    
    sort: function(col,noflip)
    {
        if (!noflip)
        {
            if (col == this.o.currentSort)
            {
                this.o.currentSortDesc = !this.o.currentSortDesc;
            }
        }
        
        if (col == 'url')
        {
            this.data = this.data.sort(this.urlSort);
        }
        if (col == 'anchor')
        {
            this.data = this.data.sort(this.anchorSort);
        }
        if (col == 'linkcount')
        {
            this.data = this.data.sort(this.linkCountSort);
        }
        if (col == 'linktype')
        {
            this.data = this.data.sort(this.linkTypeSort);
        }
        if (col == 'obl')
        {
            this.data = this.data.sort(this.oblSort);
        }
        if (col == 'count')
        {
            this.data = this.data.sort(this.countSort);
        }
        if (col == 'pagerank')
        {
            this.data = this.data.sort(this.pagerankSort);
        }
        if (col == 'strength')
        {
            this.data = this.data.sort(this.strengthSort);
        }
        if (col == 'indexed')
        {
            this.data = this.data.sort(this.indexedSort);
        }
        
        if (this.o.currentSortDesc)
        {
            this.data = this.data.reverse();
        }
        
        
        
        this.refresh();
        this.o.currentSort = col;

    },
    
    urlSort: function (a,b)
    {
        return a.url>b.url?1:a.url<b.url?-1:0;
    },

    titleSort: function(a,b)
    {
        return a.title>b.title?1:a.title<b.title?-1:0;
    },
    
    anchorSort: function(a,b)
    {
        return a.anchor>b.anchor?1:a.anchor<b.anchor?-1:0;
    },
    
    countSort: function (a,b)
    {
        return a.count-b.count;
    },
    linkCountSort: function (a,b)
    {
        return a.linkcount-b.linkcount;
    },
    strengthSort: function (a,b)
    {
        return a.strength-b.strength;
    },
    pagerankSort: function (a,b)
    {
        return a.pagerank-b.pagerank;
    },
    linkTypeSort: function (a,b)
    {
        return a.linktype-b.linktype;
    },
    oblSort: function (a,b)
    {
        return a.obl-b.obl;
    },
    indexedSort: function (a,b)
    {
        if (a.indexed==b.indexed)
        {
            return 0;
        }
        if (a.indexed)
        {
            return 1;
        }
        if (b.indexed)
        {
            return -1;
        }
        return 0;
    },
    resetFilter: function()
    {
        this.data = this.alldata;
        this.sort(this.o.currentSort,true);
        $(this.o.elemID + '_resetfilter').style.display = 'none';
    },

    filter: function(col,vl,op)
    {
        $(this.o.elemID + '_resetfilter').style.display = 'inline';
        
        vl = escapeHTML(vl);
        if (vl == "true")
        {
            vl = true;
        }
        if (vl == "false")
        {
            vl = false;
        }
        if (!this.alldata)
        {
            return;
        }
        var newData = new Array();
        for (i=0;i<this.alldata.length;i++)
        {
            if (op == '=')
            {
                if (this.alldata[i][col] == vl)
                {
                    newData.push(this.alldata[i]);
                }
            }
        }
        this.data = newData;
        this.sort(this.o.currentSort,true);
    },
    
    show : function()
    {
        $(this.o.elemID + '_container').style.display = 'block';
    
    },
    
    hide : function()
    {
        $(this.o.elemID + '_container').style.display = 'none';
    }

});
//---------------------------- TopPages container -----------------------------

var TopPagesContainer = TableDataContainer.extend({
    initialize: function(options)
    {
        this.parent(options);
    },
    displayItem: function(item)
    {
        var output;
        if (item)
        {
            shortenedurl = cutString(item.url.replace(LD.siteUrl,''),30);
            output = '<div class="urlcell"><a href="' + item.url + '" target="_blank" title="' + item.url + '">' + shortenedurl + '</a></div>';
            if (item.linkcount)
            {
                output += '<div class="linkcountcell"><a onclick="BackLinks.filter(\'page\',\'' + item.url + '\',\'=\');">' + item.linkcount + '</a></div>';
            }
            else
            {
                output += '<div class="linkcountcell">0</div>';
            }
            output += '<div class="strengthcell">' + item.strength + '</div>';
            output +=  '<br class="clear" />';
        
        }
        else
        {
            output = '';
        }
        return output;
    
    }


});
var TopPages = new TopPagesContainer({classID:'TopPages',elemID: 'toppages', currentPage : 1, pageSize : 10, pagerSize : 8, currentSort: 'linkcount', currentSortDesc: true});

//-------------------------- Backlinks Container --------------------------------
var BackLinksContainer = TableDataContainer.extend({
    initialize: function(options)
    {
        this.parent(options);
    },
    load: function(data)
    {
        this.data = data;
        UIManager.updateBacklinkStrength();
        this.parent(this.data);
    },
    getLinkTypeDesc: function(id)
    {
        var linktype;
        switch(id)
        {
            case -1:
                linktype = 'N/A';
                break;
            case 0:
                linktype = 'missing';
                break;
            case 1:
                linktype = 'good';
                break;
            case 2:
                linktype = 'nofollow';
                break;
        }
        return linktype;
    },
    displayItem: function(item)
    {
        var output = '';
        
        var pr;
        var anchor;
        if (item)
        {
        
        
            output = '<div class="urllongercell"><a href="' + item.url + '" target="_blank" title="' + item.url + '">' + cutString(item.url,35) + '</a></div>';
            if (item.pagerank == -1)
            {
                pr = 'N/A';
            }
            else
            {
                pr = item.pagerank;
            }            
            output += '<div class="pagerankcell">' + pr + '</div>';
            if (item.anchor == null)
            {
                anchor = 'N/A';
            }
            else
            {
                anchor = item.anchor;
            }
            output += '<div class="anchorcell" title="' + anchor + '">' + cutString(anchor,20) + '</div>';
            
            output += '<div class="linktypecell">' + this.getLinkTypeDesc(item.linktype) + '</div>';
            output += '<div class="oblcell">' + item.obl + '</div>';
            output += '<div class="strengthcell">' + item.strength + '</div>';
            output +=  '<br class="clear" />';
        }
        
        return output;
    
    }
 

});
var BackLinks = new BackLinksContainer({classID:'BackLinks',elemID: 'backlinks', currentPage : 1, pageSize : 10,  pagerSize : 10 ,currentSort: 'pagerank', currentSortDesc: true});


//-------------------------- Anchors Container --------------------------------
var AnchorsContainer = TableDataContainer.extend({
    initialize: function(options)
    {
        this.parent(options);
    },
    displayItem: function(item)
    {
        var output = '';
        if (item)
        {
        
        
            output += '<div class="anchorlongercell" title="' + item.anchor + '">' + cutString(item.anchor,50) + '</div>';
            output += '<div class="linkcountcell"><a onclick="BackLinks.filter(\'anchor\',\'' + item.anchor + '\',\'=\');">' + item.count + '</a></div>';
            output +=  '<br class="clear" />';
        }
        
        return output;
    
    }
 

});
var Anchors = new AnchorsContainer({classID:'Anchors',elemID: 'anchors', currentPage : 1, pageSize : 10, pagerSize : 6, currentSort: 'count', currentSortDesc: true});

//-------------------------- Pagerank Chart --------------------------------

var PagerankChart = new Object();

PagerankChart.load = function(data)
{
 
    var prs = '';
    var counts = '';
    var links = '';
    /*for (i=0;i<data.length;i++)
    {
        prs = prs + data[i].pagerank + ',';
        counts = counts + data[i].count + ',';
    }
    */
    var is;
    var maxCount = 0;
    
    for (i=-1;i<10;i++)
    {
        is = false;
        
        for(j=0;j<data.length;j++)
        {
            
           
            if (data[j].pagerank == i)
            {
                is = true;
                if (i < 0)
                {
                    prs = prs + 'N/A,';
                    links = links + 'javascript:setPagerankFilter(-1),';
                }
                else
                {
                    prs = prs + i + ',';
                    links = links + 'javascript:setPagerankFilter(' + i + '),';
                }
                
                counts = counts + data[j].count + ',';
                if (data[j].count > maxCount)
                {
                    maxCount = data[j].count;
                }
            }
        }
        if (!is)
        {
            if (i < 0)
            {
                prs = prs + 'N/A,';
                //links = links + 'javascript:alert(\'N/A\'),';
                links = links + 'javascript:setPagerankFilter(-1),';
            }
            else
            {
                prs = prs + i + ',';
                links = links + 'javascript:setPagerankFilter(' + i + '),';
            }
            counts = counts + '0,';
        }
        
    }
    prs = prs.substring(0,prs.length-1);
    counts = counts.substring(0,counts.length-1);
    links = links.substring(0,links.length-1);

   var so = new SWFObject("/_SWF/open-flash-chart.swf", "ofc", "300", "200", "9", "#FFFFFF");

    so.addVariable("variables","true");

    so.addVariable("title","Pagerank Distribution,{font-size: 20;}");
    so.addVariable("colours","#d01f3c,#356aa0,#C79810,#73880A,#D15600,#6BBA70");
    so.addVariable("values",counts);
    so.addVariable("links",links);
   //so.addVariable("values",'12,32,41,12,41,51,51');

    //so.addVariable("pie","90,#000000,#000000,false,1");
     //so.addVariable("pie_labels",prs);
    so.addVariable("y_axis_colour","#909090");
    so.addVariable("y_grid_colour","#ADB5C7");
    so.addVariable("y_max",maxCount);
    so.addVariable("bar","80,#123456,number of links with pagerank,10");
    so.addVariable("x_labels",prs);
    //so.addVariable("x_axis_3d",12);

    so.addParam("allowScriptAccess", "always" );//"sameDomain");
    //so.addParam("onmouseout", "onrollout2();" );
    so.write("pagerankChart");
};

PagerankChart.show = function()
{
    $('pagerankChart').style.display = 'block';
};

PagerankChart.hide = function()
{
    $('pagerankChart').style.display = 'none';
};

function setPagerankFilter(pr)
{
    BackLinks.filter('pagerank',pr,'=');
};

//-------------------------- LinkType Chart --------------------------------

var LinkTypeChart = new Object();

LinkTypeChart.load = function(data)
{
 
    var linktypes = '';
    var counts = '';
    var links = '';
    var is;
    var maxCount = 0;
    
    for (i=0;i<data.length;i++)
    {
                 linktypes = linktypes + BackLinks.getLinkTypeDesc(data[i].linktype) + ',';
                 counts = counts + data[i].count + ',';
                 links = links + 'javascript:setLinkTypeFilter(' + data[i].linktype + '),';
    }
    linktypes = linktypes.substring(0,linktypes.length-1);
    counts = counts.substring(0,counts.length-1);
    links = links.substring(0,links.length-1);

   var so = new SWFObject("/_SWF/open-flash-chart.swf", "ofc", "300", "200", "9", "#FFFFFF");

    so.addVariable("variables","true");

    so.addVariable("title","Link Types,{font-size: 20;}");
    so.addVariable("colours","#d01f3c,#356aa0,#C79810,#73880A,#D15600,#6BBA70");
    so.addVariable("values",counts);
    so.addVariable("links",links);
   //so.addVariable("values",'12,32,41,12,41,51,51');

    so.addVariable("pie","90,#000000,#000000,false,1");
    so.addVariable("pie_labels",linktypes);
    //so.addVariable("y_axis_colour","#909090");
    //so.addVariable("y_grid_colour","#ADB5C7");
    //so.addVariable("y_max",maxCount);
    //so.addVariable("bar","80,#123456,number of links with pagerank,10");
    //so.addVariable("x_labels",prs);
    //so.addVariable("x_axis_3d",12);

    so.addParam("allowScriptAccess", "always" );//"sameDomain");
    //so.addParam("onmouseout", "onrollout2();" );
    so.write("linkTypeChart");
};

LinkTypeChart.show = function()
{
    $('linkTypeChart').style.display = 'block';
};

LinkTypeChart.hide = function()
{
    $('linkTypeChart').style.display = 'none';
};

function setLinkTypeFilter(linktype)
{
    BackLinks.filter('linktype',linktype,'=');
};


//------------------------------ IndexedPages part ---------------------
UIManager.loadIndexPages = function(indexPagesData)
{
    if (indexPagesData)
    {
        LD.hasExtension = true;
        IndexedPages.load(indexPagesData);
        UIManager.changeUIOnComplete();
        IndexedPages.show();
        IndexPagesChart.load(indexPagesData);
        IndexPagesChart.show();
        $('explanation').style.display='block';
    }

}




//---------------------------- IndexedPages container -----------------------------

var IndexedPagesContainer = TableDataContainer.extend({
    initialize: function(options)
    {
        this.parent(options);
    },
    displayItem: function(item)
    {
        var output;
        if (item)
        {
            shortenedurl = cutString(cutDomain(item.url),130);
            if (shortenedurl == '')
            {
                shortenedurl = item.url;
            }
            output = '<div class="urllongestcell"><a href="' + item.url + '" target="_blank" title="' + item.url + '">' + shortenedurl + '</a></div>';
            if (item.indexed)
            {
                output += '<div class="indexedcell">yes</div>';
            }
            else
            {
                output += '<div class="indexedcell">no</div>';
            }
            output +=  '<br class="clear" />';
        
        }
        else
        {
            output = '';
        }
        return output;
    
    }


});
var IndexedPages = new IndexedPagesContainer({classID:'IndexedPages',elemID: 'indexedpages', currentPage : 1, pageSize : 20, pagerSize : 8, currentSort: 'url', currentSortDesc: false});



//-------------------------- LinkType Chart --------------------------------

var IndexPagesChart = new Object();

IndexPagesChart.load = function(data)
{
 
    var is;
    var maxCount = 0;
    var indexedPagesCount = 0;
        
    for (i=0;i<data.length;i++)
    {
             if (data[i].indexed)
             {
                indexedPagesCount++;
             }
    }

    var so = new SWFObject("/_SWF/open-flash-chart.swf", "ofc", "300", "200", "9", "#FFFFFF");

    so.addVariable("variables","true");

    so.addVariable("title","Ratio of well-indexed pages,{font-size: 20;}");
    so.addVariable("colours","#d01f3c,#356aa0,#C79810,#73880A,#D15600,#6BBA70");
    so.addVariable("values",indexedPagesCount + ',' + (data.length-indexedPagesCount));
    so.addVariable("links","javascript:setIndexedPagesFilter(true),javascript:setIndexedPagesFilter(false)");
   //so.addVariable("values",'12,32,41,12,41,51,51');

    so.addVariable("pie","90,#000000,#000000,false,1");
    so.addVariable("pie_labels","yes, no");
    //so.addVariable("y_axis_colour","#909090");
    //so.addVariable("y_grid_colour","#ADB5C7");
    //so.addVariable("y_max",maxCount);
    //so.addVariable("bar","80,#123456,number of links with pagerank,10");
    //so.addVariable("x_labels",prs);
    //so.addVariable("x_axis_3d",12);

    so.addParam("allowScriptAccess", "always" );//"sameDomain");
    //so.addParam("onmouseout", "onrollout2();" );
    so.write("indexedPagesChart");
};

IndexPagesChart.show = function()
{
    $('indexedPagesChart').style.display = 'block';
};

IndexPagesChart.hide = function()
{
    $('indexedPagesChart').style.display = 'none';
};

function setIndexedPagesFilter(bool)
{
    IndexedPages.filter('indexed',bool,'=');
};
















//------------------------------- CSV Manager ---------------------------

var CSVManager = new Object();


CSVManager.exportPages = function()
{
    CSVManager.exportData("url,linkcount",TopPages.data);
};

CSVManager.exportBacklinks = function()
{
    CSVManager.exportData("url,pagerank,anchor,linktype,obl",BackLinks.data);
};

CSVManager.exportAnchors = function()
{
    CSVManager.exportData("anchor,count",Anchors.data);
};

CSVManager.exportIndexedPages = function()
{
    CSVManager.exportData("url,indexed",IndexedPages.data);
};

CSVManager.exportData = function(header,data)
{
          if (!firefoxAddon(true)) return;
          var element = document.createElement("CSVDataElement");
          element.setAttribute("header", header);
          element.setAttribute("data", Json.toString(data));
          document.documentElement.appendChild(element);

          var evt = document.createEvent("Events");
          evt.initEvent("CSVEvent", true, false);
          element.dispatchEvent(evt);
};