//
//(c)BabyNameStats.com
//

var bns_names_boys = new Array ('jack','matthew','daniel','james','ryan','adam','charlie','ethan','thomas','jamie','dylan','harry','conor','aaron','callum','joshua','oliver','sean','ben','luke','jake','michael','lucas','eoin','nathan','shea','lewis','oisin','patrick','noah','alex','john','jay','rhys','samuel','ronan','liam','jayden','joseph','william','alexander','darragh','rory','david','corey','alfie','jude','eoghan','benjamin','cameron','caleb','jacob','max','andrew','joel','tyler','aidan','finn','josh','christopher','aodhan','ciaran','isaac','kyle','odhran','riley','reuben','cormac','logan','sam','carter','peter','ruairi','caolan','mark','shane','tiernan','fionn','leo','reece','ross','connor','cillian','niall','owen','dara','stephen','oran','cody','scott','leon','oscar','evan','lorcan','mason','shay','tom','charles','robert','cian','kevin','jason','jordan','brandon','lee','tiarnan','curtis','dean','darren','martin','timothy','craig','padraig','declan','steven','jonathan','anthony','philip','stuart','brendan','brian','conall','bradley','cathal','paul','marc','simon','daire','morgan','gary','taylor','gareth','gerard','richard','louis','pearse','bailey','calum','robbie','ewan','kai','marcus','harvey','zach','ashton','blake'); // 146 names

var bns_names_girls = new Array ('katie','sophie','grace','lucy','erin','emma','emily','eva','anna','chloe','jessica','aoife','ellie','hannah','sarah','amy','olivia','ella','niamh','aimee','mia','ruby','cara','ava','leah','holly','molly','lily','caitlin','megan','rebecca','lauren','rachel','abigail','charlotte','caoimhe','zara','evie','nicole','sophia','brooke','isabella','eimear','mya','abbie','faith','ellen','ciara','clodagh','madison','maria','annie','eve','amber','kayla','hollie','orlaith','amelia','cora','beth','laura','poppy','scarlett','zoe','alexandra','isla','aine','kate','naomi','bethany','freya','paige','orla','summer','victoria','casey','jasmine','mollie','phoebe','alice','julia','shannon','clara','connie','faye','heidi','kayleigh','lexi','sara','aoibheann','daisy','darcy','tara','alex','cassie','elizabeth','taylor','cliodhna','alana','courtney','jodie','kara','miley','kirsty','natasha','shauna','samantha','chelsea','robyn','danielle','bronagh','sinead','louise','maeve','clare','shania','rhiannon','gemma','lauryn','jane','jennifer','catherine','roisin','lisa','natalie','lydia','melissa','orlagh','grainne','rebekah','katelyn','georgia','nicola','claire','sian','aisling','jade','rachael','jordan','morgan','mary','ruth','kathryn','carla','emer','kaitlyn','alanna','lara','jenna','alicia','kerry','meabh','katherine','abby','stephanie','saoirse','elle','nadine','rhianna','kaitlin','caitlyn','kirsten','abi','alisha','chantelle','lois','lucie','rihanna','leona','sienna','eabha'); // 171 names

var bns_current_name ='Ava';
var bns_is_girl_name = 1;
var bns_is_unisex_name = 0;
var bns_prev_sel_object = null;
var bns_suggest_token = 0;
var bns_scroll_timestamp = 0;
var bns_dontScroll = 0;



function bns_next_picture()
{
var new_pos = 0;
var current_name = bns_current_name.toLowerCase();

if (bns_is_girl_name == 0) //boys
  {
  var boy_names=bns_names_boys;
  var boys_count=boy_names.length-1;
  for (i=0;i <= boys_count; i=i+1) 
    {
    if (current_name == boy_names[i])
      {
      if (i != boys_count) {new_pos=i+1;}
      break;
      }
    }
  bns_req_picture(boy_names[new_pos],0);
  }

else //girls
  {
  var girl_names=bns_names_girls;
  var girls_count=girl_names.length-1;
  for (i=0;i <= girls_count; i=i+1) 
    {
    if (current_name == girl_names[i])
      {
      if (i != girls_count) {new_pos=i+1;}
      break;
      }
    }
  bns_req_picture(girl_names[new_pos],1);
  }
}



function bns_prev_picture()
{
var current_name = bns_current_name.toLowerCase();

if (bns_is_girl_name == 0) //boys
  {
  var boy_names=bns_names_boys;
  var boys_count=boy_names.length-1;
  var new_pos = boys_count;
  for (i=0; i <= boys_count; i=i+1) 
    {
    if (current_name == boy_names[i])
      {
      if (i != 0) {new_pos=i-1;}
      break;
      }
    }
  bns_req_picture(boy_names[new_pos],0);
  }

else //girls
  {
  var girl_names=bns_names_girls;
  var girls_count=girl_names.length-1;
  var new_pos = girls_count;
  for (i=0;i <= girls_count; i=i+1) 
    {
    if (current_name == girl_names[i])
      {
      if (i != 0) {new_pos=i-1;}
      break;
      }
    }
  bns_req_picture(girl_names[new_pos],1);
  }
}



function bns_req_picture(bns_name,bns_gender) 
{
var bns_name_graph = document.getElementById("bns_name_graph");
bns_name=bns_name.toLowerCase(); 
bns_name=bns_name.replace(/[^a-z]/g,"");
var bns_found_boy_name=0;
var bns_found_girl_name=0;
var img_path="name_graphs/img/ni/";

//bns_gender: 0-boys, 1-girls, 3 - not known, 4 - unisex name, show graph for girls (e.g., Alex, Taylor, Morgan, Jordan)
if (bns_gender==3)
  {
  var bns_submit_b1 = document.getElementById("bns_submit_b1");
  var bns_submit_b2 = document.getElementById("bns_submit_b2");
  var boys_count = bns_names_boys.length-1;
  var girls_count = bns_names_girls.length-1;

  bns_is_unisex_name=0;

  for (i=0;i <= boys_count; i=i+1) 
    {
    if (bns_name == bns_names_boys[i])
      {
      bns_name_graph.src = img_path + "boys/" + bns_name + ".png";
      bns_name_graph.alt = "Rank of baby boy name "+ bns_name.toUpperCase() +" from 1999 to 2009 in Northern Ireland";
      bns_current_name = bns_name;
      bns_is_girl_name=0;
      bns_found_boy_name=1;
      break;
      }
    }

  for (i=0;i <= girls_count; i=i+1) 
    {
    if (bns_name == bns_names_girls[i])
      {
      bns_found_girl_name=1;
      if (bns_found_boy_name==0)
        {
        bns_name_graph.src = img_path + "girls/" + bns_name + ".png";
        bns_name_graph.alt = "Rank of baby girl name "+ bns_name.toUpperCase() +" from 1999 to 2009 in Northern Ireland";
        bns_current_name = bns_name;
        bns_is_girl_name=1;
        }
      else
        {
        //insert second search button for girl names:
        if (bns_submit_b2) 
          {
          bns_submit_b2.src="img/s3.png";
          bns_submit_b2.title='Show graph for the girl name '+ bns_name.toUpperCase() ;
          if (bns_submit_b1) {bns_submit_b1.title= 'Show graph for the boy name ' + bns_name.toUpperCase() ;}
          bns_is_unisex_name=1;
          }
        }
      break;
      }
    }
  //if name was not found:
  if ((bns_found_boy_name==0) && (bns_found_girl_name==0)) 
    {
    //var error_path="";
    bns_name_graph.src = img_path + "notfound.png";
    bns_name_graph.alt = "The name "+ bns_name.toUpperCase() +" was not found";
    if (bns_submit_b2) {bns_submit_b2.title="Name not found";}
    }
  else //name is found
     {
     var bns_name_suggest = document.getElementById("bns_name_suggest");
     if (bns_name_suggest) {bns_name_suggest.innerHTML = "";}
     if (bns_is_unisex_name == 0) {bns_reset_submit_buttons();}
     }

  }

else //bns_gender != 3
  {
  var bns_name_input = document.getElementById("bns_name_input");
  if (bns_name_input) { bns_name_input.value = bns_name.slice(0,1).toUpperCase() + bns_name.slice(1);} //capitalize name

  if (bns_gender==1)
    {
    bns_name_graph.src = img_path + "girls/" + bns_name + ".png";
    bns_name_graph.alt = "Rank of baby girl name "+ bns_name.toUpperCase() +" from 1999 to 2009 in Northern Ireland";
    bns_current_name = bns_name;
    bns_is_girl_name=1;
    bns_reset_submit_buttons();
    }

  if (bns_gender==0)
    {
    bns_name_graph.src = img_path + "boys/" + bns_name + ".png";
    bns_name_graph.alt = "Rank of baby boy name "+ bns_name.toUpperCase() +" from 1999 to 2009 in Northern Ireland";
    bns_current_name = bns_name;
    bns_is_girl_name=0;
    bns_reset_submit_buttons();
    }

  if (bns_gender==4)
    {
    bns_name_graph.src = img_path + "girls/" + bns_name + ".png";
    bns_name_graph.alt = "Rank of baby girl name "+ bns_name.toUpperCase() +" from 1999 to 2009 in Northern Ireland";
    bns_current_name = bns_name;
    bns_is_girl_name=1;
    }

  }



// highlight names:

if (bns_prev_sel_object) 
  {
  bns_prev_sel_object.style.fontWeight = "";
  bns_prev_sel_object.style.color = "";
  //bns_prev_sel_object.className = bns_prev_sel_object.className.replace(/\b\sbns_hb|g\b/,'');
  }

var bns_new_sel_object = document.getElementById( bns_is_girl_name + "_" + bns_name.toLowerCase());

if (bns_new_sel_object) 
  {
  if (bns_is_girl_name == 1)
    {
    bns_new_sel_object.style.color = "red";
    //bns_new_sel_object.className +=" bns_hg";
    }
  else
    {
    bns_new_sel_object.style.color = "blue";
    //bns_new_sel_object.className +=" bns_hb";
    }
  bns_new_sel_object.style.fontWeight = "bold";
  bns_prev_sel_object = bns_new_sel_object;
  }
else
  {
  bns_prev_sel_object = null;
  }

}



function bns_reset_submit_buttons()
{
var bns_submit_b1 = document.getElementById("bns_submit_b1");
var bns_submit_b2 = document.getElementById("bns_submit_b2");

if (bns_submit_b1) {bns_submit_b1.title='Show graph';}

if (bns_submit_b2)
  {
  bns_submit_b2.src="img/s2.png";
  var switch_gender_text="boy";
  if (bns_is_girl_name == 0) {switch_gender_text="girl";}
  
  //get current year's rank:
  var bns_name_rank = "";
  var current_name_el = document.getElementById( bns_is_girl_name + "_" + bns_current_name.toLowerCase());
  if (current_name_el) 
    {
    bns_name_rank = current_name_el.getAttribute("bns_gender_rank").slice(2);
    if (bns_name_rank) 
      {
      bns_name_rank = ' ('+ bns_name_rank +')';
      }
    else
      {
      bns_name_rank = '';
      }
    }
  
  
  bns_submit_b2.title="Switch to a "+ switch_gender_text +" name with similar rank" + bns_name_rank;
  }

var bns_name_suggest = document.getElementById("bns_name_suggest");
if (bns_name_suggest) {bns_name_suggest.innerHTML = "";}
bns_is_unisex_name=0;
}



function bns_switch_g()
{
var current_name = bns_current_name.toLowerCase();

if (bns_is_unisex_name == 1)
  {
  bns_req_picture(current_name,4);
  return;
  }

var boys_count=bns_names_boys.length-1;
var girls_count=bns_names_girls.length-1;

if (bns_is_girl_name==0) //switch to girl names
  {
  for (i=0;i <= boys_count; i=i+1) 
    {
    if (current_name == bns_names_boys[i])
      {
      if (i <= girls_count)
        {
        bns_req_picture(bns_names_girls[i],1);
        }
      else
        {
        bns_req_picture(bns_names_girls[girls_count],1);
        }
      break;
      }
    }
  }

else //switch to boy names
  {
  for (i=0;i <= girls_count; i=i+1) 
    {
    if (current_name == bns_names_girls[i])
      {
      if (i <= boys_count)
        {
        bns_req_picture(bns_names_boys[i],0);
        }
      else
        {
        bns_req_picture(bns_names_boys[boys_count],0);
        }
      break;
      }
    }
  }

}




function bns_hook_event(element, eventName, callback)
{
if (typeof(element) == "string")
  {
  element = document.getElementById(element);
  }

if(element == null)
  {
  return;
  }

if(element.addEventListener)
  {
  if(eventName == 'mousewheel')
    {
    element.addEventListener('DOMMouseScroll', callback, false);
    }
  element.addEventListener(eventName, callback, false);
  }
else if(element.attachEvent)
  {
  element.attachEvent("on" + eventName, callback);
  }
}



function bns_cancel_event(e)
{
e = e ? e : window.event;

if (e.stopPropagation) {e.stopPropagation();}
if (e.preventDefault)  {e.preventDefault();}

e.cancelBubble = true;
e.cancel = true;
e.returnValue = false;

return false;
}





function bns_scroll_graph(e)
{
if (!bns_dontScroll) 
  {
  e = e ? e : window.event;
  var real_delta = e.detail ? e.detail * -1 : e.wheelDelta / 40;
  if (real_delta < 0)
    {
    bns_next_picture();
    }
  else 
    {
    bns_prev_picture();
    }
  bns_dontScroll = 1;
  }

bns_scroll_timestamp = new Date().getTime();
setTimeout("bns_scroll_graph_clear('"+bns_scroll_timestamp+"')", 90);
bns_cancel_event(e);
}





function bns_scroll_graph_clear(this_timestamp) 
{
if (this_timestamp==bns_scroll_timestamp)
  {
  bns_dontScroll = 0;
  }
}




//suggest baby names if input chars > 2:

function bns_suggest_names(oInput)
{
var search_text = oInput.value.toLowerCase();
search_text= search_text.replace(/[^a-z]/g,"");

if (search_text.length<2) return -1;

bns_suggest_token = new Date().getTime();

setTimeout("do_bns_suggest_names('"+bns_suggest_token+"', '"+ search_text +"')", 100);
}



function do_bns_suggest_names(this_suggest_token, searchtext)
{

if (this_suggest_token != bns_suggest_token) return -1;

var suggestString = "";
var boy_names=bns_names_boys;
var girl_names=bns_names_girls;
var maxI = boy_names.length >= girl_names.length ? boy_names.length : girl_names.length;

for (i=0; i<maxI; i++)
  {
  if (boy_names[i] && boy_names[i].toLowerCase().indexOf(searchtext.toLowerCase())==0) 
    {
    if (suggestString) suggestString += " ";
    suggestString += "<span style='color:blue; cursor: pointer;' onclick='bns_req_picture(\""+boy_names[i]+"\",0)'>"+boy_names[i]+"</span>";
    }
  if (girl_names[i] && girl_names[i].toLowerCase().indexOf(searchtext.toLowerCase())==0)
    {
    if (suggestString) suggestString += " ";
    suggestString += "<span style='color:red; cursor: pointer;' onclick='bns_req_picture(\""+girl_names[i]+"\",1)'>"+girl_names[i]+"</span>";
    }
  }
  
if (!suggestString) suggestString = "<i style='font-size:10px;'>No names starting with <b>"+ searchtext.slice(0,1).toUpperCase() + searchtext.slice(1) +"</b> were found in Northern Ireland's top100 lists from 1999 to 2009</i>";

var bns_name_suggest = document.getElementById("bns_name_suggest");

if (bns_name_suggest)
  {
  bns_name_suggest.innerHTML = suggestString;
  }
}





function bns_tbl_init()
{
var bns_top_table = document.getElementById("bns_ni_tbl");

if (bns_top_table) 
  {
  var names_boys_temp = new Array();
  var names_girls_temp = new Array();
  var temp_index_b = new Array();
  var temp_index_g = new Array();

  var bns_top_table_tds = bns_top_table.getElementsByTagName("td");

  var i=0, len=bns_top_table_tds.length, bns_top_table_td_array = new Array();

  while (i<len)
    {
    bns_top_table_td_array[i]=bns_top_table_tds[i];
    i++;
    }


  var i=0,j=0,i_div=0, bns_el=null, bns_gender_id = 0, tbl_name='', td_cont='';

  while (bns_el = bns_top_table_td_array[i++])
    {
    i_div = (i%3);
    if ((i_div)==1) { j=j+1; continue;}

    td_cont=bns_el.innerHTML;
    tbl_name = td_cont.substring(0, td_cont.indexOf("<")).toLowerCase().replace(/^\s+|\s+$/g,'');

    if (tbl_name == '') {continue;}

    bns_el.style.cursor = "pointer";
    bns_gender_id = (i_div) ? 0 : 1 ;
    bns_el.id = bns_gender_id + '_'+ tbl_name;
    bns_el.setAttribute("bns_gender_rank", bns_gender_id + '_' + j);

    bns_el.onclick = function ()
      {
      var td_cont=this.innerHTML;
      var bns_name = td_cont.substring(0, td_cont.indexOf("<")).toLowerCase().replace(/^\s+|\s+$/g,'');
      var bns_gender_rank=this.getAttribute("bns_gender_rank");
      var gender = bns_gender_rank.slice(0,1);
      if ((bns_gender_rank.slice(2)) > 45) { window.scrollTo(0,0); }
      bns_req_picture(bns_name , gender);
      }

    //build new name list and index with current year's top names:

    if (i_div)
      {
      names_boys_temp[j-1]= tbl_name;
      temp_index_b[tbl_name]=tbl_name;
      }
    else
      {
      names_girls_temp[j-1]= tbl_name;
      temp_index_g[tbl_name]=tbl_name;
      }


    }//end while



  //build new name list, additional names:

  var new_name=null;
  var tdObject=null;
  var i=0;

  while (new_name = bns_names_boys[i++]) 
    {
    tdObject = temp_index_b[new_name];
    if (!tdObject)
      {
      names_boys_temp[names_boys_temp.length] = new_name;
      }
    }

  i=0;

  while (new_name = bns_names_girls[i++])
    {
    tdObject = temp_index_g[new_name];
    if (!tdObject)
      {
      names_girls_temp[names_girls_temp.length] = new_name;
      }
    }


  bns_names_boys = names_boys_temp;
  bns_names_girls = names_girls_temp;


  } //end if (bns_top_table) 



//init. name and gender from img url
var bns_name_graph = document.getElementById("bns_name_graph");
if (bns_name_graph) 
  {
  var init_name = bns_name_graph.src.match(/[^\/]+(?=\.png)/);

  if (init_name) 
    {
    bns_current_name=init_name[0];

    if (bns_name_graph.src.match(/boys/)) 
      {
      bns_is_girl_name = 0;
      }
    else
      {
      bns_is_girl_name = 1;
      }
    }
  }




bns_hook_event('bns_graph_nav', 'mousewheel', bns_scroll_graph);

}





window.onload = function() 
  {
  bns_tbl_init();
  }


