// JavaScript Document
/*
* Bizbook.js
* Created 8/28/2006 6:20:35 AM
* Modified 8/28/2006 6:20:40 AM
*/

/*  VARS
------------------------------------------------------------------------------------------------- */


/*  FUNCTIONS
------------------------------------------------------------------------------------------------- */

function loadup()
{
  // register the buttons
  var buttons =  document.getElementsByTagName('button');
  for (key in buttons)
  {
    if(buttons[key].id != '' && buttons[key].id != undefined) 
    {
      var thebtn = buttons[key];
      activate_object(thebtn);
    }    
  }
  
  //resize the dropdowns
  var ht = '6em';
  var sz = 7;
  var cat = document.getElementById('category');
  cat.style.height = ht;
  cat.size=sz;
  cat.multiple = 'multiple';
  
  var states = document.getElementById('states');
  states.style.height = ht;
  states.size=sz;
  states.multiple = 'multiple';
  
  reset_form();
  
}//end loadup

function reset_form()
{
  //reset the form
  var cat = document.getElementById('category');
  var states = document.getElementById('states');
  document.forms[0].reset();
  cat.options[0].selected = false;
  states.options[0].selected = false;
  
}//end reset form

function activate_object(btn)
{
  if (document.getElementById(btn.id).attachEvent)
  {
    document.getElementById(btn.id).attachEvent('onclick',windowevent);
    
  } else {
    document.getElementById(btn.id).onclick=windowevent;
    
  }
}// end activate object

function windowevent(event)
{
  var obj = event.target || event.srcElement || event;
  if(obj.id == 'btn_search')
  {
    if (document.getElementById('keywords').value != undefined)
    {
      var kwords = document.getElementById('keywords').value;
    } else {
      var kwords = document.forms[0].elements('keywords').value;
    }
    
    var cats = get_selected('category');
    var states = get_selected('states');
    if (
      (states == 0 || states == undefined || states == '') &&
      (cats == 0 || cats == undefined || cats == '') &&
      (kwords == '') 
      )
    {
      var msg = 'You must choose at least one state or at least one category, or submit a Keyword';
      make_error_message(msg);
      return;
    }
    if (kwords != '' && kwords.indexOf(' ')>0) kwords = make_keywords_string(kwords);
    
    var url = 'get_bizbook_data.php?keywords=' + kwords + '&cats=' + cats + '&states=' + states;    
    loadXML(url, callback_bizbook);
    
    var show = document.getElementById('show');
    var par = document.createElement('p');
    par.innerHTML = 'Searching ... ';
    
    clearout_div(show);    
    show.appendChild(par);    
    
  } else if (obj.id == 'btn_reset') {
    reset_form();
    
  } else {
    alert('id: ' + obj.id);
    
  }
  
}//end windowevent

function callback_bizbook(res)
{
  var thedata = res.getElementsByTagName('data')[0];
  var show = document.getElementById('show');
  
  clearout_div(show);
  
  if (thedata.childNodes.length > 0)
  {
    var msg = 'There are ' + thedata.childNodes.length + ' records.'
    var par = document.createElement('p');
    par.innerHTML = msg;
    show.appendChild(par); 
    
    var thetbl = make_table_from_attributes(thedata);        
    show.appendChild(thetbl);
    
  } else {
    var thediv = document.createElement('div');
    thediv.className = 'problem';
    thediv.innerHTML = 'There were no records returned';
    show.appendChild(thediv);
    
  }
  
  
}//end callback_bizbook

function clearout_div(thediv)
{
  
  while (thediv.hasChildNodes())
  {
    thediv.removeChild(thediv.lastChild);      
  }
  
}//end clearout div

function get_selected(id)
{
  var elem = document.getElementById(id).getElementsByTagName('option');
  var arr = new Array();
  var i = 0;
  for(key in elem)
  {
    if (elem[key].selected) arr.push(elem[key].value);
  }
  return arr;
  
}//end get selected

function make_table_from_attributes(res, bl_color)
{
  if (bl_color == undefined) bl_color = true;
  var tbl = document.createElement('table');
  var tr = tbl.insertRow(0);
  
  //make header
  var th = document.createElement('th');
  tr.appendChild(th);
  for(var i=0; i<res.childNodes[0].attributes.length; i++)
  {
    var th = document.createElement('th');
    th.innerHTML = res.childNodes[0].attributes[i].name.substring(0,1).toUpperCase() + 
      res.childNodes[0].attributes[i].name.substring(1,res.childNodes[0].attributes[i].name.length);
    tr.appendChild(th);
  }
  //tbl.appendChild(tr);
  
  //make data rows
  for(var i=0; i<res.childNodes.length; i++)
  {
    var tr = tbl.insertRow(i+1);
    tr.className = (bl_color && !(i%2))? 'color' : '';
    var td = tr.insertCell(0);
    td.innerHTML = (i+1) + '. ';
    var node = res.childNodes[i];
    for(var j=0; j<node.attributes.length; j++)
    {
      var td = tr.insertCell(j+1);
      td.innerHTML = node.attributes[j].value;
      //tr.appendChild(td);
    }
    //tbl.appendChild(tr);
  }
  return tbl;
  
}//end make_table_from_attributes

function make_error_message(msg, thediv)
{
  if(thediv == undefined) thediv = document.getElementById('show');
  
  var par = document.createElement('p');
  par.className = 'problem';
  par.innerHTML = msg;
  
  clearout_div(thediv);
  thediv.appendChild(par);
  
  return true;
  
}//end make error message

function make_keywords_string(str)
{
  str = str.split(' ');
  var tmp = '';
  for(var item in str)
  {
    tmp += str[item];
    if (Number(item) < str.length-1) tmp += ',';
  }
  return tmp;
  
}//end make keywords string