

function formatWithComma(number)
{
  var formattedNumberString = to3Symb((number%1000).toString());
  var x = parseInt(number/1000);
  while(x > 0)
  {
    formattedNumberString = to3Symb((x%1000).toString()) + ',' + formattedNumberString;
    x = parseInt(x/1000);
  }
  return clearFirstNull(formattedNumberString);
}


  function to3Symb(str)
  {
    while (str.length<3)
    {
      str='0'+str;
    }
    return str;
  }

  function clearFirstNull(str)
  {
    while (str.indexOf("0") == 0)
    {
      str = str.substring(1);
    }
    return str;
  }

  var toolshost= "rybaleov.com";

  var qs = new Querystring()
  var q = qs.get("q");
  if (!q) q = "Keyword";
  $("#q").attr("value", q);

  var start = qs.get("start");
  if (!start)
  {
    start = "0";
  }
  else if ((start % 8) != 0)
  {
    start = "0";
  }

  var Counter1 = 0, ItemsCount = 0;

  var src1 = "http://ajax.googleapis.com/ajax/services/search/web?rsz=large&q=" + q + "&v=1.0&start=" + start + "&callback=?";

  var LinksCountDistribution = new Array();
  var LinksUrlDistribution = new Array();
  var LinksVisibleUrlDistribution = new Array();
  var LinksPageRankDistribution = new Array();
  var LinksAlexaDistribution = new Array();

  // var src1 = "http://ajax.googleapis.com/ajax/services/search/images?v=1.0&q=" + q + "&rsz=large&callback=?";


  function CreateList()
  {

    $("<p/>").appendTo("#stats").append("<div class='Position'>Position</div><div class='Url'>Url</div><div class='PageRank'>PageRank</div><div class='AlexaRank'>Alexa Rank</div><div class='Count'>G Backlinks</div><div class='YahooBacklinks'>Y Backlinks</div>");

    var gbar = null;

    //var labels = new Array();
    var dataset = new Array();

    for (i = 0; i < ItemsCount; i++)
    {
      dataset[i] = [LinksVisibleUrlDistribution[i].replace('www.', '').substring(0, 13), parseInt(LinksCountDistribution[i])]; //
      //labels[i] = LinksVisibleUrlDistribution[i];
      var colors = ['#32709a', '#3e7ba4', '#4c86af', '#5a93ba', '#68a0c6', '#77add2', '#87bbdf', '#96c8eb'];

      //var thumbSrc = "http://images.websnapr.com/?size=t&url="+LinksUrlDistribution[i];
      //<div class='Thumb'><img src='" + thumbSrc + "'>

      //$("<p/>").appendTo("#stats").append("<div class='Position'>#" + (parseInt(start) + i + 1) + "</div></div><div class='Url'>"+LinksUrlDistribution[i]+"</div><div class='PageRank'></div><div class='Count'>"+LinksCountDistribution[i]+"</div>");

      var Value =
      '<div class=\'Position\'>#' + (parseInt(start) + i + 1) + '</div>'+
      '<div class=\'Url\'>'+LinksUrlDistribution[i]+'</div>'+
      "<div class='PageRank'></div>"+
      "<div class='AlexaRank'></div>"+
      "<div class='Count'>"+LinksCountDistribution[i]+"</div>"+
      "<div class='YahooBacklinks'></div>";

      $("<p/>").appendTo("#stats").append(Value);

    }

    // setup the graph /////////////////////////////////////////////////////////
	var myChart = new JSChart('distribution', 'bar');
	myChart.setDataArray(dataset);
	myChart.colorizeBars(colors);
	myChart.setTitle('The count of backlinks in google by keyword: "'+q+'"');
	myChart.setTitleColor('#8E8E8E');
	myChart.setAxisNameX('');
	myChart.setAxisNameY('');
	myChart.setAxisColor('#C4C4C4');
	myChart.setAxisNameFontSize(16);
	myChart.setAxisNameColor('#999');
	myChart.setAxisValuesColor('#777');
	myChart.setAxisColor('#B5B5B5');
	myChart.setAxisWidth(1);
	myChart.setBarValuesColor('#2F6D99');
	myChart.setBarOpacity(0.5);
	myChart.setAxisPaddingTop(60);
	myChart.setAxisPaddingBottom(40);
	myChart.setAxisPaddingLeft(45);
	myChart.setTitleFontSize(11);
	myChart.setBarBorderWidth(0);
	myChart.setBarSpacingRatio(50);
	myChart.setBarOpacity(0.9);
	//myChart.setFlagRadius(6);
	//myChart.setTooltip(['North America', 'U.S.A and Canada']);
	//myChart.setTooltipPosition('nw');
	//myChart.setTooltipOffset(3);

	myChart.setSize(730, 321);
	myChart.setBackgroundImage('./images/chart_bg.jpg');
	myChart.draw();

    ////////////////////////////////////////////////////////////////////////////

    if ((parseInt(start)-8)>=0)
    {
      $("<a/>").attr("href", "./index.html?q="+q+"&start="+(parseInt(start)-8)).append("Previous page").appendTo("#pages");
    }

    $("<a/>").attr("href", "./index.html?q="+q+"&start="+(parseInt(start)+8)).append("Next page").appendTo("#pages");

      for (i=0; i<ItemsCount;i++)
      {
        // PR
        $.getJSON("http://"+toolshost+"/pr.php?url="+escape(LinksUrlDistribution[i])+"&c=?",
          function(data)
          {
            var Index = -1;
            for (j=0; j<ItemsCount;j++)
            {
              if (LinksUrlDistribution[j] == data.siteName)
              {
                //alert(LinksUrlDistribution[j] +'   '+ data.siteName);
          	Index=j;
              }
            }
            if (Index>-1)
            {
          	  LinksPageRankDistribution[Index] = data.pageRank;
                  if (data.pageRank)
                  {
                    $('#stats p:eq('+(Index+1)+') div.PageRank').append(""+data.pageRank+"<br><img src='http://www.pageranktool.net/images/pr"+data.pageRank+".png'>");
                  }
                  else
                  {
                    $('#stats p:eq('+(Index+1)+') div.PageRank').append(""+(0)+"<br><img src='http://www.pageranktool.net/images/pr"+(0)+".png'>");
                  }
            }
          });

        // Alexa
        $.getJSON("http://"+toolshost+"/alexa.php?url="+escape(LinksUrlDistribution[i])+"&c=?",
          function(data)
          {
            var Index = -1;
            for (j=0; j<ItemsCount;j++)
            {
              if (LinksUrlDistribution[j] == data.siteName)
              {
          	Index=j;
              }
            }
            if (Index>-1)
            {
              LinksAlexaDistribution[Index] = data.alexaRank;
              $('#stats p:eq('+(Index+1)+') div.AlexaRank').append('<a href="http://www.alexa.com/data/details/traffic_details?q=&url='+data.siteName+'">'+formatWithComma(data.alexaRank)+'</a>');
              //
            }
          });

        //

        getYahooBacklinks(escape(LinksUrlDistribution[i]), i);
      }

    }

    function getYahooBacklinks(url, i)
    {
        $.getJSON("http://api.search.yahoo.com/SiteExplorerService/V1/inlinkData?appid=YahooDemo&query="+url+"&results=1&output=json&callback=?",
        function(data)
        {
            $('#stats p:eq('+(i+1)+') div.YahooBacklinks').append(''+formatWithComma(data.ResultSet.totalResultsAvailable)+'');
        });
    }

    /////////
      function doJson(data)
      {


        if (data.responseData.results && data.responseData.results.length > 0)
        {
        	ItemsCount = data.responseData.results.length;

          var results = data.responseData.results;

          $.each(data.responseData.results,
            function(i,item)
            {

              $.getJSON(
              "http://ajax.googleapis.com/ajax/services/search/web?rsz=large&q=link%3A" + escape(item.unescapedUrl) + "&v=1.0&callback=?",
              function(data)
              {
                if (data.responseData.cursor.estimatedResultCount)
                  LinksCountDistribution[i] = data.responseData.cursor.estimatedResultCount;
                else
                  LinksCountDistribution[i] = 0;

                LinksUrlDistribution[i] = item.unescapedUrl;
                LinksVisibleUrlDistribution[i] = item.visibleUrl;

                Counter1++;
                if ((Counter1 == ItemsCount)) CreateList();
              });

              //$("#images").append("<li><img src=\""+item.unescapedUrl+"\"></li>");
              //$("#images").append("<li>" + i + ") "+ item.title+" "+escape(item.unescapedUrl)  + "</li>");
            });

        }

      }


    $.getJSON(src1, doJson);
