// fill rank spans with the relevant word
function ranks()
{
  $("span.rank-5").html("<img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' />");
  $("span.rank-4").html("<img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' />");
  $("span.rank-3").html("<img src='img/star.png' /><img src='img/star.png' /><img src='img/star.png' />");
  $("span.rank-2").html("<img src='img/star.png' /><img src='img/star.png' />");
  $("span.rank-1").html("<img src='img/star.png' />");
  $("span.rank-0").html("<img src='img/grey-dash.gif' />");
}

function show_score(value, domain, hash)
{
  // create score box
  $("table#value-results").after("<div id='score'></div>");
  
  var price_breaks = new Array(25, 100 , 250, 500, 750, 1000, 2500, 5000, 7500, 10000, 25000, 50000, 75000, 100000, 500000, 1000000);
  var bottom = 0;

  var i = 0;  
  while(value > price_breaks[i])
  {
    bottom = price_breaks[i]+"";
    i++;  
  }
  
  // format top with commas
  var top = price_breaks[i]+"";
  
  if(top.length >= 4) 
  {
    var back = top.length - 3;
    top = top.substr(0, back)+","+top.substr(back);
  }
  
  if(bottom.length >= 4) 
  {
    var back = bottom.length - 3;
    bottom = bottom.substr(0, back)+","+bottom.substr(back);
  }
  
  if(bottom.length >= 8) 
  {
    var back = bottom.length - 7;
    bottom = bottom.substr(0, back)+","+bottom.substr(back);
  }
  
  if(bottom == "1,000,000") $("div#score").html("Estimated Domain Value: Over &pound;"+bottom); 
  else $("div#score").html("Estimated Domain Value: &pound;"+bottom+" - &pound;"+top);
  
  // save it
  $.get("words.php?save="+domain+"&val="+value+"&hash="+hash);
}

$("document").ready(function()
{
  // show form
  $("form#domain-value").css({display:"block"});
  
  // steal form submit
  $("form#domain-value").submit(function()
  {
    // remove http:// and www.
		var prefix = new RegExp("http://(www\.)?");
		
    // get domain name
    var domain = $("input#domain-name").val().toLowerCase().replace(prefix, "");

    // split at tld
    var split_domain = domain.split(".", 3);

    // make sure tld was specified
    if(split_domain.length > 1)
    {
      // get security hash
      var hash = $("input#hash").val();
      
      // domain value in GPB
      var total_value = 0;
      
      // remove existing results table
      $("table#value-results").remove();	    $("div#score").remove();
      
      // add results table
      $(this).append("<table id='value-results' class='cv-table'></table>");

      // tld
      // regex for .co.* domains (country)
      var local_domains = new RegExp("co\.[a-z]+");
      
      var tld = split_domain[1];
      if(split_domain.length == 3) tld+="."+split_domain[2];
      $("table#value-results").html("<tr><td style='width:300px;'>Extension (."+tld+")</td><td id='tld-cell'></td></tr>");
      
      if(tld == "com")
      {
        $("td#tld-cell").html("<span class='rank-5'></span>");
        total_value+=10;
      }
      else if(tld == "net" || tld == "org")
      {
        $("td#tld-cell").html("<span class='rank-4'></span>");
        total_value+=8;
      }
      else if(tld.match(local_domains))
      {
        $("td#tld-cell").html("<span class='rank-3'></span>");
        total_value+=5;
      }
      else
      {
        $("td#tld-cell").html("<span class='rank-2'></span>");
        total_value+=3;
      }
      ranks();
      
      // find words
      $("table#value-results").append("<tr><td>Words</td><td id='word-count-cell'><img src='img/ajax-load-black.gif' /></td></tr>");
      $.getJSON("words.php?d="+split_domain[0]+"&hash="+hash, function(data)
      {
        if(data.length)
        {
          $("td#word-count-cell").html(data[0]+"");
        
          // calcualte word to crap ratio
          var no_spaces = new RegExp(" ", "g");
          var ratio = Math.round((data[0].replace(no_spaces, "").length / split_domain[0].length) * 100) / 100;
        
          // ratio out of 5
          ratio = Math.round(ratio * 5);
        
          // ratio of
          if(ratio < 0.5) total_value = total_value / 3;
          else total_value = total_value * 2;
          //total_value = total_value * ratio * 2;

          //var ratio = data[0].length / split_domain[0].length;
          $("table#value-results").append("<tr><td>Word Ratio</td><td id='word-ratio-cell'><span class='rank-"+ratio+"'></span></td></tr>");
        }
        else
        {
          $("td#word-count-cell").html("<img src='img/grey-dash.gif' />");
          $("table#value-results").append("<tr><td>Word Ratio</td><td id='word-ratio-cell'><span class='rank-0'></span></td></tr>");
          total_value = total_value * 0.4;
        }
        ranks();
        
        // domain length
        $("table#value-results").append("<tr><td>Length</td><td id='length-cell'></td></tr>");
        if(split_domain[0].length < 6) $("td#length-cell").html("<span class='rank-5'></span>");
        else if(split_domain[0].length < 9) $("td#length-cell").html("<span class='rank-4'></span>");
        else if(split_domain[0].length < 12) $("td#length-cell").html("<span class='rank-3'></span>");
        else if(split_domain[0].length < 15) $("td#length-cell").html("<span class='rank-2'></span>");
        else $("td#length-cell").html("<span class='rank-1'></span>");
        
        // value
        total_value = total_value * (10 / split_domain[0].length);
        
        // how many numbers/hyphens
        var bad_chars = new RegExp("[0-9\-]");
        var split = split_domain[0];
        var found = split.search(bad_chars);
        var found_count = 0;
        
        while(found >= 0)
        {
          found_count++;
          
          // split string
          split = split.substr(found+1);
          
          found = split.search(bad_chars);
        }
        
        // convert it into a rank
        bad_char_rank = Math.round((5 - found_count));
        
        // value
        if(bad_char_rank == 5) total_value = total_value * 2;
        else total_value = total_value / 2;
        
        $("table#value-results").append("<tr><td>Numbers &amp; hyphens</td><td id='bad-chars-cell'><span class='rank-"+bad_char_rank+"'></span></td></tr>");
        ranks();
        
        // get backlink count
        // loading image
        $("table#value-results").append("<tr><td>Back Links</td><td id='back-links-cell'><img src='img/ajax-load-black.gif' /></td></tr>");
        
        $.get("words.php?back-links="+domain+"&hash="+hash, function(data)
        {
          // number of back links
          // get rank
          if(data >      1000000) link_rank = 5;
          else if(data > 100000) link_rank = 4;
          else if(data > 10000) link_rank = 3;
          else if(data > 1000) link_rank = 2;
          else if(data > 100) link_rank = 1;
          else link_rank = 0;
          
          // value
          if(link_rank > 1) total_value = total_value * Math.sqrt(Math.sqrt(data)); //link_rank * link_rank * link_rank;
          //else if(link_rank == 0) total_value = total_value * 4;
          
          //var link_rank = Math.min(Math.round(data / 50), 5);
          $("td#back-links-cell").html("<span class='rank-"+link_rank+"'></span>");
          ranks();
          
          // desireability
          // loading image
          $("table#value-results").append("<tr><td>Site Content</td><td id='pages-cell'><img src='img/ajax-load-black.gif' /></td></tr>");
          
          $.get("words.php?pages="+domain+"&hash="+hash, function(data)
          {
            // fill cell
            // desire rank
            if(data >      1000000) var page_rank = 5;
            else if(data > 50000) var page_rank = 4;
            else if(data > 5000) var page_rank = 3;
            else if(data > 100) var page_rank = 2;
            else if(data > 1) var page_rank = 1;
            else page_rank = 0;

            // value
            if(page_rank > 1) total_value = total_value * Math.sqrt(Math.sqrt(data)); //page_rank * page_rank * page_rank;
            else if(page_rank == 1) total_value = total_value * 2;
            else total_value = total_value / 2;
            
            $("td#pages-cell").html("<span class='rank-"+page_rank+"'></span>");
            ranks();
            
            // domain age
            $("table#value-results").append("<tr><td>Domain Age</td><td id='age-cell'><img src='img/ajax-load-black.gif' /></td></tr>");
            $.get("words.php?whois="+domain+"&hash="+hash, function(data)
            {
              eval(data);

              var age = "";
              if(years == 1) age+= years+" year";
              else if(years > 1) age+= years+" years";
              
              if(months > 0)
              {
                if(age.length) age+=", ";
                if(months == 1) age+= months+" month";
                else if(months > 1) age+= months+" months";
              }
              
              if(years >= 2) total_value = total_value * 2;
              else if(years == 0) total_value * 0.75;
              //if(years) total_value = total_value * Math.sqrt(((years*12)+months)/12);
              //else total_value = total_value * 0.75;
              
              if(!age.length) age = "N/A";

              $("td#age-cell").html(age);

              show_score(total_value, domain, hash);
              
            });
          });

        });
        
      });
    }
    else alert("Please enter a valid domain name, eg: google.com");
    
    return false;
  });
});