/* JavaScript */

var browse_resource = '';
var browse_speaker = '';
var browse_theme = '';
//var req;
//var req_handler;
//var search_type;

function setup_resource_browser() {
   setup_resource_types();
   setup_browse_types(); 
   write_results();
}

function setup_resource_types() {
  var t = document.getElementById('resource-tab');
  var tabs = t.getElementsByTagName('td');
  for (var i=0; i < tabs.length; i++) {
    var tab = tabs[i];
    tab.onclick = function () {
       unselect_tabs();
       this.className = 'active';
       navigator.browse_resource = this.getAttribute('type');     
       write_results();
    }
  }
}

function setup_browse_types() {
  var t = document.getElementById('browse-list');
  t.getElementsByTagName('div')[0].onclick = function () {
    unselect_browse();
    navigator.browse_speaker = '';
    navigator.browse_theme = '';
    write_results();
  }
  var items = t.getElementsByTagName('a');
  for (var i=0; i < items.length; i++) {	
     var a = items[i];
     a.onclick = function () {
       unselect_browse();
       this.className = 'selected';
       navigator.browse_speaker = this.getAttribute('speaker') ? this.getAttribute('speaker') : '';
       navigator.browse_theme = this.getAttribute('theme') ? this.getAttribute('theme') : '';
       write_results();
     }
  }
}


function unselect_browse() {
  var t = document.getElementById('browse-list');
  var links = t.getElementsByTagName('a');
  for (var i=0; i < links.length; i++) {
    var a = links[i];
    a.className = '';
  }
}


function unselect_tabs() {
  var t = document.getElementById('resource-tab');
  var tabs = t.getElementsByTagName('td');
  for (var i=0; i < tabs.length; i++) {
    var tab = tabs[i];
    tab.className = '';
  }
}


function get_results_tab() {
  return document.getElementById('results-tab');
}

function clear_results_tab() {
  var e = get_results_tab();
  e.innerHTML = '';
}

function write_results_tab(html) {
  var e = get_results_tab();
  e.innerHTML += html;
}

function write_results() {
  var browse_resource = navigator.browse_resource;
  var browse_speaker = navigator.browse_speaker;
  var browse_theme = navigator.browse_theme;
  if (typeof browse_resource == 'undefined') {
    browse_resource = '';
  }
  if (typeof browse_speaker == 'undefined') {
    browse_speaker = '';
  }
  if (typeof browse_theme == 'undefined') {
    browse_theme = '';
  }



  var url = 'results.asp?resource='+browse_resource+'&speaker='+browse_speaker+'&theme='+browse_theme;
  clear_results_tab();
  //write_results_tab('Resource Type: '+browse_resource+'<br>');
  //write_results_tab('Speaker: '+browse_speaker+'<br>');
  //write_results_tab('Theme: '+browse_theme+'<br>');  
  var d = loadXMLDoc(url, write_results_handler);
}

function write_results_handler(req) {
  write_results_tab(req.responseText);
}

function loadXMLDoc(url, handler) {
    var req;
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = function() {processReqChange(req, handler);}
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = function() {processReqChange(req, handler);}
            //req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange(req,handler) {
    if (req.readyState == 4) {
        // only if "OK"
        if (req.status == 200) {
            handler(req);
        } else {
            //alert("There was a problem retrieving the XML data:\n" +
            //    req.statusText);
            handler(req);
        }
    }

}

function nav_speaker() {
  var f = document.getElementById("speaker_nav");
  var s = f.speaker_id[f.speaker_id.selectedIndex];
  if(s.value) {
     document.location = 'speaker.asp?id='+s.value;
  }
}

function go_speaker(id) {
   document.location = 'speaker.asp?id='+id;
}

function go_title(id,view) {
   document.location = 'speaker_documents.asp?id='+id+'&view='+view;
}

function go_theme(id) {
   document.location = 'theme.asp?id='+id;
}

function go_keyword(id) {
   document.location = 'keyword.asp?id='+id;
}

function do_searches() {
   do_search(document.getElementById('find_speaker'),'speaker',2);
   do_search(document.getElementById('find_title'),'title',2);
   do_search(document.getElementById('find_keyword'),'keyword',1);
}

function do_search(obj,type,min_length) {
   if (!e) var e = window.event;
   var search = obj.value;
   //search_type = type;
   if (search.length >= min_length) {
      var url = 'search_results.asp?type='+type+'&search='+search
      loadXMLDoc(url,make_search_handler(type));
      set_elt_display(type+'_results','visible');
   } else { 
      set_elt_text(type+'_results','');
      set_elt_display(type+'_results','hidden');
   }
} 

function make_search_handler(search_type) {
   return function (req) {
      set_elt_text(search_type+'_results',req.responseText);
   }
}

function set_elt_display(id, value) {
   var elt = document.getElementById(id)
   elt.style.visibility = value;
}

function set_elt_text(id,html) {
   var elt = document.getElementById(id)
   elt.innerHTML = html;   
}
                
function handleEnter (event) {
   if (!event) var event = window.event;

   var field = this;
   var keyCode = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode;
      if (keyCode == 13) {
         var i;
         for (i = 0; i < field.form.elements.length; i++)
            if (field == field.form.elements[i])
               break;
         i = (i + 1) % field.form.elements.length;
         field.form.elements[i].focus();
         return false;
      } 
      else
      return true;
}      
