 var beenSorted = false;

/* 
 * Toggling rows on / off (by a-z letter)
 */
 function toggle_letter(ob, letter)
 {
  if(jQuery('#toggler').attr('checked')) return select_letter(ob, letter);
  jqob = jQuery(ob);
  if(jqob.is('.on')){
   jQuery('#exhibitor_list tr.selected_event.letter_'+letter).css('display','none').removeClass('selected_letter');
   jqob.removeClass('on').addClass('off');
   return;
  }
  if(jqob.is('.off')){
   jQuery('#exhibitor_list tr.selected_event.letter_'+letter).addClass('selected_letter').show();
   jqob.removeClass('off').addClass('on');
   return;
  }
  alert('dunno');
  return;
 }

 function select_letter(ob, letter)
 {
  jQuery('.letter_cell.on').removeClass('on').addClass('off');
  jQuery(ob).removeClass('off').addClass('on');
  jQuery('#exhibitor_list tr.selected_letter.selected_event').css('display','none').removeClass('selected_letter');
  jQuery('#exhibitor_list tr.letter_'+letter+'.selected_event').addClass('selected_letter').show();
 }

 function select_all_letters(remove,add)
 {
  if( typeof(remove) == 'undefined' ) remove='off';
  if( typeof(add)    == 'undefined' ) add='on';
  jQuery('.letter_cell').removeClass(remove).addClass(add);
  jQuery('#exbtr_list_body tr').addClass('selected_letter');
  jQuery('#exbtr_list_body tr.selected_event.selected_letter').show();
 }

 function deselect_all_letters()
 {
  jQuery('.letter_cell').removeClass('on').addClass('off');
  var visRows = jQuery('#exhibitor_list tr.selected_letter');
  visRows.removeClass('selected_letter');
  visRows.css('display','none');
 }

 function mouseOverNumber(td, letter, value)
 {
  var cell = jQuery(td);
  cell.addClass('clickable');
  if( value ){
   var myval = jQuery('#exbtr_list_body tr.selected_event').size();
   cell.text(myval);
  }
  else {
   var myval = jQuery('#exbtr_list_body tr.selected_event.letter_'+letter).size();
   cell.text(myval);
  }
 }

 function mouseOutNumber(td, letter)
 {
  var cell = jQuery(td);
  cell.removeClass('clickable');
  cell.text(letter);
 }

/*
 * Floating highlighted exhibitors to the top 
 */
 function float_enhanced_to_top()
 {
  /*
   * Having this clashes with column sorting (if both are wanted..?)
   * As it is just a (for now, minor) optimisation, I have removed it.
   if( beenSorted ) return;
   */
  

  var $table = jQuery('#exhibitors');
  var rows = $table.find('tbody > tr').get();
  jQuery.each(rows, function(index,row){
    row.sortKey = jQuery(row).is('.sorttotop');
  });
  rows.sort(function(a, b) {
    if (a.sortKey && !b.sortKey) return -1;
    if (!a.sortKey && b.sortKey) return 1;
    return 0;
  });
  jQuery.each(rows, function(index, row) {
     $table.children('tbody').append(row);
     row.sortKey = null;
  });
  beenSorted = true;
 }
 var canSee = 'table-row';
 if(navigator.appName.indexOf("Microsoft") > -1)
  canSee = 'block'

 function show(letter, hideall)
 {
  if(hideall) {
   alert('HIDE ALL!');
   hide_all_exhibitors();
  }
  atozname = 'atoz_'+letter;
  var exbtrlistDiv = document.getElementById('exhibitor_list');
  var trs          = exbtrlistDiv.getElementsByTagName("tr");
  for (var i=0; i<trs.length; i++) {
   if (document.getElementById) { // this is the way the standards work
    if (trs[i].id.indexOf(atozname+'') == 0) {
     trs[i].style.display = canSee;
    }
   }
  }
 }

 function hide(letter)
 {
  atozname = 'atoz_'+letter;
  var exbtrlistDiv = document.getElementById('exhibitor_list');
  var trs          = exbtrlistDiv.getElementsByTagName("tr");
  for (var i=0; i<trs.length; i++) {
   if (document.getElementById) { // this is the way the standards work
    if (trs[i].id.indexOf(atozname+'') == 0) {
     trs[i].style.display = 'none';
    }
   }
  }
 }

 function show_all_exhibitors()
 {
  var exbtrlistDiv = document.getElementById('exhibitor_list');
  var trs          = exbtrlistDiv.getElementsByTagName("tr");
  for (var i=0; i<trs.length; i++)
   if (trs[i].id.indexOf('atoz_') == 0) trs[i].style.display = canSee;
 }

 function hide_all_exhibitors()
 {
  var exbtrlistDiv = document.getElementById('exhibitor_list');
  var trs          = exbtrlistDiv.getElementsByTagName("tr");
  for (var i=0; i<trs.length; i++)
   if (trs[i].id.indexOf('atoz_') == 0) trs[i].style.display = "none";
 }


/*
 * Category and Supercategory selectors
 */
 function show_category(selector)
 {
  jQuery('#product_search_error').hide();
  var scid = selector.value;
  jQuery('#filter_supcategory').val(scid);
  jQuery('.category_selector_div').hide();
  if( scid > 0 ) {
   jQuery('#category_selector_div_'+scid).show();
   jQuery('#go_button_div').show();
  }
  else {
   jQuery('#go_button_div').hide()
   if( jQuery('#current_supercat_selection').val != scid ) {
    jQuery('#filter_category').attr({value:''});
    submit_form(selector.form);
   }
  }
 }

 function submit_form(form)
 {
  form.submit();
 }


 function select_category(selector)
 {
  jQuery('#product_search_error').hide();
  var catid = selector.value;
  if( catid < 1 ) return select_supercategory(selector);

  jQuery('#filter_category').val(catid);
  jQuery('#go_button_div').hide();
  submit_form(selector.form);
 }

 function select_supercategory(button)
 {
  jQuery('#product_search_error').hide();
  jQuery('#filter_category').attr({value:''});
  if( jQuery('#filter_supcategory').val() > 0 ){
   submit_form(button.form);
  }
  else {
   alert('Aplogies, a javascript error occured.');
   jQuery('#product_search_error').text('Please select a product group').show()
  }
  return false;
 }
