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

var bns_names_boys = new Array ('jack','sean','daniel','conor','james','ryan','adam','michael','alex','luke','dylan','cian','jamie','darragh','liam','aaron','oisin','thomas','patrick','eoin','john','cillian','matthew','evan','ben','david','charlie','harry','callum','shane','joshua','nathan','mark','fionn','jake','joseph','samuel','ronan','eoghan','kyle','noah','tadhg','robert','sam','ethan','aidan','cathal','finn','jayden','alexander','kevin','rory','ciaran','leon','william','max','cormac','andrew','jakub','rian','christopher','oliver','tom','alan','oscar','josh','peter','benjamin','brian','niall','scott','jason','dara','martin','rhys','killian','paul','stephen','lucas','anthony','tomas','dean','odhran','ross','bobby','senan','filip','ruairi','gavin','lee','oran','calum','hugh','lorcan','kacper','kian','patryk','shay','charles','christian','colm','szymon','jordan','darren','craig','ian','keith','kieran','padraig','karl','colin','connor','gary','richard','brandon','eric','brendan','edward','gerard','owen','barry','steven','jonathan','philip','shaun','dillon','donal','glen','simon','daragh','emmet','seamus','declan','diarmuid','cameron','neil','reece','daire','denis','emmanuel','leo','tristan','louis','jacob','billy'); // 145 names

var bns_names_girls = new Array ('sophie','ava','emma','sarah','grace','emily','katie','lucy','aoife','chloe','amy','lauren','kate','mia','leah','anna','ruby','ella','lily','ciara','caoimhe','hannah','holly','niamh','saoirse','molly','jessica','roisin','rachel','laura','julia','isabelle','megan','clodagh','rebecca','ellie','erin','eva','amelia','nicole','olivia','zoe','kayla','abbie','aisling','abigail','aine','ellen','aimee','sophia','tara','robyn','maja','caitlin','maria','eabha','katelyn','alannah','cara','faye','mary','aoibhe','aoibhinn','isabel','elizabeth','eve','orla','freya','sadhbh','isabella','zuzanna','charlotte','eimear','amber','layla','alice','zara','alexandra','aoibheann','oliwia','shauna','clara','sinead','isobel','brooke','natalia','kayleigh','maeve','maya','sara','orlaith','millie','ruth','shannon','hollie','madison','daisy','emilia','victoria','jennifer','taylor','jade','louise','claire','danielle','michelle','courtney','leanne','alison','lisa','michaela','siobhan','catherine','fiona','kelly','chelsea','gemma','grainne','rachael','nicola','emer','jane','karen','stephanie','alanna','nadine','elaine','natasha','sorcha','erica','andrea','cliona','hayley','julie','lorna','heather','kim','margaret','jodie','mairead','melissa','lauryn','aishling','georgia','kathleen','alana','casey','lara','abby','hazel','kellie','claudia','ailbhe','laoise','naomi','alex','alicia','alisha','jasmine','muireann','meabh'); // 161 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/ie/";

//bns_gender: 0-boys, 1-girls, 3 - not known, 4 - unisex name, show graph for girls (e.g., Alex)
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 1998 to 2009 in 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 1998 to 2009 in 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 1998 to 2009 in 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 1998 to 2009 in 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 1998 to 2009 in 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="Toggle genders - 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 Ireland's top100 lists from 1998 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_ireland_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+/,'').replace(/\s+$/,'');

    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+/,'').replace(/\s+$/,'');
      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();
  }


