  var companies;  


  function AjaxRequest(u, cb) {
    this.callback = cb;
    this.url = u;
  }

  AjaxRequest.prototype.send = function() {
    this.request = (window.XMLHttpRequest ? new XMLHttpRequest() : (window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : null));
    var that = this;
    this.request.onreadystatechange = function() {
      that.callback(that);
    }
    this.request.open("GET", this.url, true);
    this.request.send(null);
  }

  function getCompanyCategories(type, listbox) {
    var url = '/produceplay/servlet/jsoncompany?method=getCompanyCategories&type=' + type;
    var req = new AjaxRequest(url, fillCompanyCategories);
    req.listbox = listbox;
    req.send();
  }

  function searchCompanies(keywords, type) {
    var url='';
    if (!keywords || keywords == '') {
      url = '/produceplay/servlet/jsoncompany?method=getCompanies&type='+type;
    } else {
      url = '/produceplay/servlet/jsoncompany?method=searchCompanies&name='+keywords+'&keywords='+keywords+'&type='+type;
    }
    var req = new AjaxRequest(url, searchResultsCompanies);
    req.send();
  }

  function fillCompanyCategories(response) {
    var req = response.request;
    if (req.readyState == 4) {
      if (req.status == 200) {
        var resultText = req.responseText;
        var result = eval('(' + resultText + ')');

        var lb = document.getElementById(response.listbox);
        if (lb) {
          lb.options.length = 0;
          for (var i = 0; i < result.categories.length; i++) {
            lb.options[i] = new Option(result.categories[i], result.categories[i]);
          }
        }
      }
    }
  }

  function searchResultsCompanies(response) {
    var req = response.request;
    if (req.readyState == 4) {
      if (req.status == 200) {

        var resultText = req.responseText;
        var result = eval('(' + resultText + ')');

        //alert(resultText);

        var searchResultsContent = '';
        if (result != null) {
            searchResultsContent = '';
          searchResultsContent += '<ul>';

                   
          companies = new Array();
          for (var i=0; i<result.companies.length; i++) {
            var company = result.companies[i];
            var key = company.id;
            companies[key] = company;
            var name = company.name;
//            var location = company.location;
            var cityname = company.city;
            var summary = company.summary;
            searchResultsContent += '<li class="exhibitorlist"><a href="#" onclick="showCompany(' + key + ');return false;">';
            searchResultsContent += name;
            searchResultsContent += '</a> - ' + cityname + '<br />'+summary+'</li>';
          }
          searchResultsContent += '</ul>';
        } else {
          searchResultsContent = '<span style="font-size: 1.1em; color: #c00000; font-weight: bold;">Error loading search results.</span>';
        }

        var searchResultDiv = document.getElementById("searchResultsCompanies");
        searchResultDiv.innerHTML = searchResultsContent;
      }
    }
  }

  var companyDetailContent = '';  

  function showCompany(key) {
    if (companyDetailContent == '') {
      companyDetailContent  = document.getElementById("companydetail").innerHTML;
    }
    var company = companies[key];
    var x = companyDetailContent;
    var cityname = company.city;

    x = x.replace(/@COMPANYNAME@/g, company.name);
    x = x.replace(/@SUMMARY@/g, company.summary);
    x = x.replace(/@DESCRIPTION@/g, company.description);
    x = x.replace(/@KEYWORDS@/g, company.keywords);
    x = x.replace(/@LOCATION@/g, company.location);
    x = x.replace(/@CITY@/g, cityname);
    x = x.replace(/@PHONE@/g, company.phone);
    x = x.replace(/@FAX@/g, company.fax);
    x = x.replace(/@INFOMAIL@/g, company.infoMail);
    x = x.replace(/@WEBSITE@/g, company.website);
    x = x.replace(/@LOGO@/g, company.logo);

    document.getElementById("companydetail").innerHTML = x;
    document.getElementById("companydetail").style.display = 'block';
    document.getElementById("companysearch").style.display = 'none';
    document.getElementById("searchResultsCompanies").style.display = 'none';
  }

  function showSearch() {
    document.getElementById("companydetail").style.display = 'none';
    document.getElementById("companysearch").style.display = 'block';
    document.getElementById("searchResultsCompanies").style.display = 'block';
  }
       
