function initRetailerSearch()
{
  registerEvent(getNode('retailerSearch'), 'submit', searchRetailer);
  registerEvent(getNode('searchButton'), 'focus', function () {getNode('searchButton').blur();});
} // end func initRetailerSearch


function searchRetailer(e)
{
  var lang      = document.location.pathname.substr(1, 2);
  var countryId = getNode('countryId').value;
  var zipCode   = getNode('zipCode').value;
  var checks    = document.getElementsByName('category[]');

  for (var i = 0, j = checks.length, params = ''; i < j; ++i) {
    if (checks[i].checked)
      params += '&category[]=' + parseInt(checks[i].value);
  }

  if (getNode('retailers'))
    getNode('retailers').className += ' opaque';
  document.body.className = 'wait';

  AjaxRequest.get(
    {
      'url':                '/retailerSearch.php?lang=' + lang + '&zipCode=' + zipCode + '&countryId=' + countryId + params,
      'generateUniqueUrl':  false,
      'onSuccess':          processRetailerSearchResult
    }
  );

  if (e && e.preventDefault)
    e.preventDefault();

  return false;
} // end func searchRetailer


function processRetailerSearchResult(request)
{
  try {
    eval('var result = ' + request.xmlHttpRequest.responseText);
  } catch (e) {
    alert(e);
    return false;
  }

  if (result.error) {
    with (getNode('errorMessage')) {
      style.display = 'block';
      innerHTML     = result.error;
    }
  } else {
    getNode('retailer').innerHTML = '';
    with (getNode('errorMessage')) {
      style.display = 'none';
      innerHTML     = '';
    }

    var premium = sprintf(
      '<img alt="%s" src="/img/retailer/icon.premium.red.gif" title="%s" width="25" height="19" />',
      result.icons.premium,
      result.icons.premium
    );

    var premium_tebo = sprintf(
      '<img alt="%s" src="/img/retailer/icon.premium_tebo.red.gif" title="%s" width="25" height="19" />',
      result.icons.premium_tebo,
      result.icons.premium_tebo
    );

    // result
    var out = ''; //'<h3>' + result.heading + ':</h3>';
    out += '<table cellpadding="0" cellspacing="0" class="retailers" id="retailers">';
    out += sprintf(
      '<thead><th> </th><th class="matrix"><img alt="%s" src="/img/retailer/icon.premium.gif" title="%s" width="25" height="19" /><img alt="%s" src="/img/retailer/icon.premium_tebo.gif" title="%s" width="25" height="19" />%s</th></thead><tbody>',
      result.icons.premium,
      result.icons.premium,
      result.icons.premium_tebo,
      result.icons.premium_tebo,
      result.legend
    );
    for (var i = 0, j = result.items.length; i < j; ++i) {
      out += sprintf(
        '<tr class="retailer%s" id="retailer_%d"><td class="name">%s<br />%s %s</td><td class="matrix">%s%s%s</td></tr>',
        (result.items[i].premium || result.items[i].premium_tebo) ? ' premium' : '',
        result.items[i].id,
        result.items[i].company,
        result.items[i].zipcode,
        result.items[i].city,
        result.items[i].premium      ? premium      : '<img alt="" src="/img/blind.gif" width="25" height="19" />',
        result.items[i].premium_tebo ? premium_tebo : '<img alt="" src="/img/blind.gif" width="25" height="19" />',
        result.items[i].categories
      );
    }
    out += '</tbody></table>';

    // legend
/*
    out += '<table cellpadding="0" cellspacing="0" id="retailerLegend"><tbody>';
    out += '<tr><th>' + premium + '</th><td>' + result.icons.premium + '</td>'
    out += '<th>' + premium_tebo + '</th><td>' + result.icons.premium_tebo + '</td></tr>'
    out += '</tbody></table>';
*/
    out += '<p>' + result.footnote + '</p>';


    getNode('contentLeft').innerHTML = out;
    getNode('retailers').zipCode = getNode('zipCode').value;

    document.body.className = '';
//    tbl.zipCode = getNode('zipCode').value;

    initResults();

    if (result.showroom == '' || result.showroom == null) {
      getNode('nextShowroom').innerHTML = '';
    } else {
      getNode('nextShowroom').innerHTML = '<a href="' + result.showroom + '">» ' + result.showroomLabel + '</a>';
    }
    getNode('googleMaps').innerHTML = '';
  }
} // end func processRetailerSearchResult


function initResults()
{
  var node = getNode('retailers');
  if (!node)
    return;

  var rows = node.getElementsByTagName('TR');
  for (var i = 0, j = rows.length; i < j; ++i) {
    registerEvent(rows[i], 'click', openRetailer);
    rows[i].style.cursor = 'pointer';
    if (document.body.currentStyle) {
      registerEvent(rows[i], 'mouseover', function (e) {window.event ? getContainerWith(window.event.srcElement, 'TR', 'retailer').style.backgroundColor = '#444444' : e.currentTarget.style.backgroundColor = '#444444';});
      registerEvent(rows[i], 'mouseout',  function (e) {window.event ? getContainerWith(window.event.srcElement, 'TR', 'retailer').style.backgroundColor = 'transparent' : e.currentTarget.style.backgroundColor = 'transparent';});
    }
  }
  node.selected = null;

  var links = node.getElementsByTagName('A');
  for (i = links.length - 1; i >= 0; --i)
    links[i].parentNode.replaceChild(document.createTextNode(links[i].innerText ? links[i].innerText : links[i].text), links[i]);
} // end func initResults


function openRetailer(e)
{
  var evtSrc  = window.event ? getContainerWith(window.event.srcElement, 'TR', 'retailer') : e.currentTarget;
  if (evtSrc.parentNode.parentNode.selected) {
    if (evtSrc.parentNode.parentNode.selected == evtSrc)
      return;
    removeClassName(evtSrc.parentNode.parentNode.selected, 'selected');
  }

  var id      = evtSrc.id.substr(9, evtSrc.id.length - 1)
  var lang    = document.location.pathname.substr(1, 2);
  var zipCode = getNode('retailers').zipCode;
  var countryId = getNode('countryId').value;

  evtSrc.className = 'selected ' + evtSrc.className;
  evtSrc.parentNode.parentNode.selected = evtSrc;

  AjaxRequest.get(
    {
      'url':                '/retailerSearch.php?id=' + id + '&lang=' + lang + '&zipCode=' + zipCode + '&countryId=' + countryId,
      'generateUniqueUrl':  false,
      'onSuccess':          processRetailerLoaderResult
    }
  );
} // end func openRetailer


function processRetailerLoaderResult(request)
{
  try {
    eval('var result = ' + request.xmlHttpRequest.responseText);
  } catch (e) {
    alert(e);
    return false;
  }

  // address
  var out = '<h3>' + result.company + (result.name ? '<br />' + result.name : '') + '</h3>';
  out += '<p>' + result.street + '<br />' + result.zipcode + ' ' + result.city + '</p>';

  // details
  var details = new Array();
  if (result.phone)
    details[details.length] = result.phoneLabel + ': ' + result.phone;
  if (result.fax)
    details[details.length] = result.faxLabel + ': ' + result.fax;
  if (result.homepage)
    details[details.length] = result.homepageLabel + ': <a href="http://' + result.homepage + '" target="_blank">' + result.homepage + '</a>';
  if (result.email)
    details[details.length] = result.emailLabel + ': <a href="mailto:' + result.email + '">' + result.email + '</a>';
  if (details.length)
    out += '<p>' + details.join('<br />') + '</p>';

  // matrix
  matrix = '';
  if (result.premium) {
    matrix += sprintf(
      '<img alt="%s" src="/img/retailer/icon.premium.gif" title="%s" width="25" height="19" />',
      result.premiumLabel,
      result.premiumLabel
    );
  }
  if (result.premium_tebo) {
    matrix += sprintf(
      '<img alt="%s" src="/img/retailer/icon.premium_tebo.gif" title="%s" width="25" height="19" />',
      result.premiumTeboLabel,
      result.premiumTeboLabel
    );
  }
  if (result.categories)
    matrix += result.categories;
  if (matrix)
    out += '<p class="matrix">' + matrix + '</p>';

  // distance
//  out += '<p>' + result.distanceLabel + ': ' + result.approx + ' ' + result.distance + ' km</p>';

  getNode('retailer').innerHTML = out;
  getNode('googleMaps').innerHTML = '<a href="http://maps.google.de/maps?f=q&amp;source=s_q&hl=de&amp;geocode=&amp;q=' + result.googleMaps + '">» ' + result.googleMapsLabel + '</a>';

  setTargets(getNode('retailer'));
} // end func processRetailerLoaderResult
1

function toggleCategory3()
{
  if (getNode('countryId').value == 'de') {
    getNode('category_3_wrapper').style.display = '';
    getNode('fh-intro-de').style.display = '';
    getNode('fh-intro-at').style.display = 'none';
  } else {
    getNode('category_3_wrapper').style.display = 'none';
    getNode('fh-intro-de').style.display = 'none';
    getNode('fh-intro-at').style.display = '';
  }
}


//registerEvent(window, 'load', initResults);
registerEvent(
  window,
  'load',
  function()
  {
    initRetailerSearch();
    getNode('zipCode').focus();
//    registerEvent(getNode('countryId'), 'change', toggleCategory3);
  }
);
