// JavaScript Document
// tagFunctions.js
// Search Bubbler prototype

function writeTagSpans(tagnames) {
   tagspans = "";
   for ( var i = 0 , len = 0; i < tagnames.length ; i++ ) {
        //tagspans += "<span id='tt" + i + "' class='nameSpan' style='font-size:" + (10+2*((tagnames.length-1-i)/4)) + "px' onmouseover='this.style.cursor='hand''>" + tagnames[i] + "</span>";
        len += tagnames[i].tagname.length * (12+2*((tagnames.length-tagnames[i].count-1)/4));
        if (len > 400) {
          tagspans += "<br />";
          len = 0;
          }
        tagspans += "<span id='tt" + i + "' class='nameSpan' style='border:2px solid #c6c3de;font-size:" + (12+2*((tagnames.length-tagnames[i].count-1)/4)) + "px' onmouseover='this.style.cursor='hand''>" + tagnames[i].tagname + "</span>";
        //alert (len)
        
        }
    //   document.write( "<span id='d" + i + "' class='nameSpan' style='border:1px solid #ffffee;display:block'>" + names[i] + "</span>" );
    
    return tagspans; 
}

function createTagDraggables(tagnames) {
  for ( var i = 0 ; i < tagnames.length ; i++ ) {
    //dndMgr.registerDraggable( new CustomDraggable($('tt'+i), tagnames[i]) );
    dndMgr.registerDraggable( new CustomDraggable($('tt'+i), tagnames[i].tagname) );
    }
}

function uniqueTags(arrNewTags, ttext){
  var cleantext = ttext.replace(/[.\,-:?!>\)\|]+ /g, " ");

  cleantext = cleantext.replace(/\<[\/a-zA-Z ]+\>/g, " ");
  cleantext = cleantext.replace(/\&gt[\/a-zA-Z ]+lt\;/g, " ");
  cleantext = cleantext.replace(/\b[0-9]+\b/g, " ");
  cleantext = cleantext.replace(/ [A-Z,a-z,\,\(\&\>\<] /g, " ");
  var arrTags = cleantext.split(/[\s\,\-\_\:\?\!\(\)\"\<\>\|\'\/\;]+/).sort();
  var commonwords = " . .. ... & a about absolutely all also amp an and any are as ask at available be become been best br browse but by can com different directory do everything feature features featured find first for found free from get good have has his he here hers how http if in inc include includes including info information into is it its just know large least links like list many may more most much new no not now of on once one online only or other our out over page pages provide real related results same search see send she site sites some specific summary that than the their then there these they this through to top type under use very was we web welcome what when where which who why wikipedia will with me url yahoo yes you your A Also An And Are As At But By For From Has How If In Into Is It Its Of On Or That The Then There This To What When Where Will With Me You Your ";
  var j, len;
  var n = arrNewTags.length;
  var lasttag = "";

  for(var i=0, len=arrTags.length; i<len; i++) {
    cleantext = arrTags[i];

    j = cleantext.length;
    
    if (cleantext.charAt(0) == '&')
      continue;
    if (j == 1)
      continue;
    if (cleantext.charAt(j-1) == '.') {
      cleantext = cleantext.slice(0,j-1);
      } 
    if (cleantext.charAt(0) >= 'A' && cleantext.charAt(0) <= 'Z') {
      cleantext = cleantext.toLowerCase();
      }
    if (cleantext == lasttag)
      continue;
    lasttag = cleantext;
    if (commonwords.indexOf(" " + cleantext + " ") >= 0) {
      continue;
      }
    if (cleantext.indexOf(".com" ) >= 0) {
      continue;
      }
    if (cleantext.indexOf("&gt" ) >= 0) {
      continue;
      }
     
    for (j=0; j < n; j++)  {
      if (arrNewTags[j].tagname == cleantext) {
        arrNewTags[j].count += 1;
        break;
        }
      }
    if (j >= n) {
        arrNewTags[n] = {
        tagname: cleantext,
        count: 1
        }
      n++;
      }   
    }
}
function sortTagName(a, b) {
  if (a.tagname == b.tagname)
    return 0;
  if (a.tagname < b.tagname)
    return -1;
  return 1;
}
function sortTagCount(a, b) {
  return (b.count - a.count);
}

// N = no of tags to return in an array
// full array of tagnames
function topNTags(N,  arrTags) {
  var topN = new Array();
  var querytags = document.getElementById('strquery').value.split(" ");
  var len = querytags.length
  
  arrTags.sort(sortTagCount);
  if (N > arrTags.length) 
      N = arrTags.length;
  for (var i=0, j = 0; i < N && j < arrTags.length; j++ ) {
    var k =0
    for (; k < len; k++) {
      if (arrTags[j].tagname == querytags[k]) 
        break;
        }
    if (k >= len) {
      //topN[i] = arrTags[j].tagname;
      topN[i] = {
        tagname: arrTags[j].tagname,
        count: i
        }
      i++;
      }
    }
    
  topN = topN.sort(sortTagName)
    
  return topN;  
}
