
  var whereHTTP;
  var whatHTTP;
  var postcodesXML;
  var subcatsXML;
  var whatWords = '';
  var whereWords = '';
  var regionId = '';
  var subcatId = '';

  function Find()
  {
// as whatwords may be blank if category selected use the raw findwhat value in this test
     if (document.getElementById("findWhat").value == '')
     {
			document.getElementById("findWhat").value = "please enter search term here";
			return;
     }

     if (document.getElementById("findWhat").value == 'please enter search term here')
     {
			document.getElementById("findWhat").value = "";
			return;
     }

/*
     var locString = 'search2.php?words=' + escape(whereWords);
     if (whatWords != '')
     {
          locString += ' ' + escape(whatWords);
     }
     locString += '&match=any' + '&mloc_id=' + regionId + '&cat_id=' + subcatId;
     location = locString;
*/

     var locString = 'search2.php?words=';
     var addSpace = '';

     if (whatWords != '')
     {
        locString += escape(whatWords);
     	addSpace = ' ';
     }

     if (whereWords != '')
     {
        locString += addSpace + escape(whereWords);
     }

     locString += '&match=any' + '&mloc_id=' + regionId + '&cat_id=' + subcatId;
//     location = locString;
     location.href = basehref+"/"+locString;
  }

  function ValidNumber(thestring)
  {
    for (i = 0; i < thestring.length; i++) 
    {
        ch = thestring.substring(i, i+1);
        if (ch < "0" || ch > "9")
        {
          return false;
        }
    }
    return true;
  }

var closeWhatDiv = false;

  function CloseWhat()
  {
    closeWhatDiv = true;

    setTimeout('DoCloseWhat()',100);
  }

  function DoCloseWhat()
  {
    if (closeWhatDiv)
    {
      document.getElementById("whatDiv").style.display = 'none';
//      document.getElementById("whatText").style.display = '';
    }
    closeWhatDiv = false;
   
  }

  function KeepWhatFocus()
  {
    closeWhatDiv = false;
  }

var closeWhereDiv = false;

  function CloseWhere()
  {
    closeWhereDiv = true;

    setTimeout('DoCloseWhere()',100);
  }

  function DoCloseWhere()
  {
    if (closeWhereDiv)
    {
      document.getElementById("whereDiv").style.display = 'none';
//      document.getElementById("whereText").style.display = '';
    }
    closeWhereDiv = false;
   
  }

  function KeepWhereFocus()
  {
    closeWhereDiv = false;
  }

  function ModWhat()
  {
     if (subcatsXML == null)
     {
	GetWhat();
     }

     whatWords = document.getElementById("findWhat").value;

     if (document.getElementById("findWhat").value.length > 2)
     {
        var temp = document.getElementById("whatList");  // delete all the options first
        for (var m=temp.options.length-1;m>=0;m--)
        {
          temp.options[m]=null;
        }

        if (subcatsXML == null)
        {
           return;
        }

        var rows = subcatsXML[0].getElementsByTagName("row");
        var subcatMatch = whatWords.toLowerCase();
        var matchCount = 0;

        for (var i = 0; i < rows.length; i++)
        {
          var subcatNode = rows[i];
          var subcatName = subcatNode.getElementsByTagName("name")[0].childNodes[0].nodeValue;

          if (subcatName.toLowerCase().indexOf(subcatMatch) > -1)
          {
            matchCount++;
            var subcatid = subcatNode.getElementsByTagName("id")[0].childNodes[0].nodeValue;
            temp.options[temp.options.length] = new Option(subcatName, subcatid);
          }
        }
        if (matchCount > 0)
        {
//           document.getElementById("whatText").style.display = 'none';
           document.getElementById("whatDiv").style.display = 'block';
           if (matchCount > 12)
           {
		temp.size = 12;
	   }
	   else
	   {
		temp.size = matchCount;
	   }
        }
        else
        {
           document.getElementById("whatDiv").style.display = 'none';
//           document.getElementById("whatText").style.display = '';
        }
      }
      else
      {
         document.getElementById("whatDiv").style.display = 'none';
//         document.getElementById("whatText").style.display = '';
      }
  }

  function ModWhere()
  {
     whereWords = document.getElementById("findWhere").value;

     if (document.getElementById("findWhere").value.length > 2)
     {
/*	if (document.getElementById("findWhere").value.length == 3)
     	{
*/
                  GetWhere();
                  if(ValidNumber(whereWords))
                  {
	      whereHTTP.open("GET","getwhere.php?fieldName=postcode&locString='" + document.getElementById("findWhere").value + "'", true);
                  }
                  else
                  {
	      whereHTTP.open("GET","getwhere.php?fieldName=locality&locString='" + document.getElementById("findWhere").value + "'", true);
                  }
                  whereHTTP.send();
/*	}
	else
	{
                    // reduce list
  	      document.getElementById("whereDiv").style.display = 'none';
//                    document.getElementById("whereText").style.display = '';

	      var temp = document.getElementById("whereList");  // delete all the options first
	      for (var m=temp.options.length-1;m>=0;m--)
	      {
	         temp.options[m]=null;
                    }

                    var rows = postcodesXML[0].getElementsByTagName("row");
                    var whereMatch = whereWords.toLowerCase();
                    var matchCount = 0;
      
                    for (var i = 0; i < rows.length; i++)
                    {
                        var localityNode = rows[i];
                        var locality = localityNode.getElementsByTagName("locality")[0].childNodes[0].nodeValue;
                        if (locality.toLowerCase().indexOf(whereMatch) > -1)
                        {
                            matchCount++;
		var postcode = localityNode.getElementsByTagName("postcode")[0].childNodes[0].nodeValue;
		var regionid = localityNode.getElementsByTagName("regionid")[0].childNodes[0].nodeValue;

		temp.options[temp.options.length] = new Option(locality + '    ' + postcode, regionid);
                        }
                    }
                    if (matchCount > 0)
                    {
//	          document.getElementById("whereText").style.display = 'none';
	          document.getElementById("whereDiv").style.display = 'block';
                    }
	}
*/
     }
     else
     {
	document.getElementById("whereDiv").style.display = 'none';
//              document.getElementById("whereText").style.display = '';
     }
  }

  function GetWhere()
  {    
    if (window.XMLHttpRequest)
    {
      // code for IE7+, Firefox, Chrome, Opera, Safari
      whereHTTP = new XMLHttpRequest();
    }
    else
    {
      // code for IE6, IE5
      whereHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    }
    whereHTTP.onreadystatechange=ReadyWhere;
  }

  function ReadyWhere()
  {
   if (whereHTTP.readyState == 4 && whereHTTP.status == 200)
   {
      var postcode;
      var locality;
      var regionid;

      var temp = document.getElementById("whereList");  // delete all the options first
      for (var m=temp.options.length-1;m>=0;m--)
      {
         temp.options[m]=null;
      }

      postcodesXML = whereHTTP.responseXML.getElementsByTagName("postcodes");
      var rows = postcodesXML[0].getElementsByTagName("row");
      
      for (var i = 0; i < rows.length; i++)
      {
        var localityNode = rows[i];
        var locality = localityNode.getElementsByTagName("locality")[0].childNodes[0].nodeValue;
        var postcode = localityNode.getElementsByTagName("postcode")[0].childNodes[0].nodeValue;
        var regionid = localityNode.getElementsByTagName("regionid")[0].childNodes[0].nodeValue;

        temp.options[temp.options.length] = new Option(locality + '    ' + postcode, regionid);
      }
      if (rows.length > 0)
      { 
         if (rows.length > 12)
         {
	   temp.size = 12;
	 }
	 else
	 {
	  temp.size = rows.length;
	 }
//        document.getElementById("whereText").style.display = 'none';
        document.getElementById("whereDiv").style.display = 'block';
      }
      else
      {
//        document.getElementById("whereText").style.display = '';
        document.getElementById("whereDiv").style.display = 'none';
      }
    }
  }

  function GetWhat()
  {    
    if (whatHTTP == null)
    {
	if (window.XMLHttpRequest)
	{
      // code for IE7+, Firefox, Chrome, Opera, Safari
	      whatHTTP = new XMLHttpRequest();
    	}
    	else
    	{
      // code for IE6, IE5
	      whatHTTP = new ActiveXObject("Microsoft.XMLHTTP");
    	}
    	whatHTTP.onreadystatechange=ReadyWhat;
    	whatHTTP.open("GET", "getwhat.php", true);
    	whatHTTP.send();
     }	
  }

  function ReadyWhat()
  {
    if (whatHTTP.readyState == 4 && whatHTTP.status == 200)
    {
      subcatsXML = whatHTTP.responseXML.getElementsByTagName("subcats");
    }
  }

  function CategorySelected()
  {
        whatWords = '';
        var combo = document.getElementById("whatList");
        document.getElementById("findWhat").value = combo.options[combo.selectedIndex].text;
        subcatId = document.getElementById("whatList").value;
        document.getElementById("whatDiv").style.display = 'none';
//        document.getElementById("whatText").style.display = '';
  }

  function LocationSelected()
  {
        whereWords = '';
        var combo = document.getElementById("whereList");
        document.getElementById("findWhere").value = combo.options[combo.selectedIndex].text;
        regionId = document.getElementById("whereList").value;
        document.getElementById("whereDiv").style.display = 'none';
//        document.getElementById("whereText").style.display = '';
  }

//  GetWhat();
function KeyPressWhat(e)
{
   var key=e.keyCode || e.which;
   if (key==13)
   {
     if (document.getElementById("findWhere").value == '')
     {
        document.getElementById("findWhere").focus();
     }
     else
     {
        document.getElementById("whatDiv").style.display = 'none';
//        document.getElementById("whatText").style.display = '';
        Find();
     }
   }
}

function KeyPressWhere(e)
{
   var key=e.keyCode || e.which;
   if (key==13)
   {
     if (document.getElementById("findWhat").value == '')
     {
        document.getElementById("findWhat").focus();
     }
     else
     {
        document.getElementById("whereDiv").style.display = 'none';
//        document.getElementById("whereText").style.display = '';
        Find();
     }
   }
}


function ChangeWhat()
{
   whatWords = '';
   var combo = document.getElementById("whatList");
   document.getElementById("findWhat").value = combo.options[combo.selectedIndex].text;
   subcatId = document.getElementById("whatList").value;
}

function ChangeWhere()
{
   whereWords = '';
   var combo = document.getElementById("whereList");
   document.getElementById("findWhere").value = combo.options[combo.selectedIndex].text;
   regionId = document.getElementById("whereList").value;
}

function checkArrows (e)
{
   var keyCode=e.keyCode || e.which;
/*  var keyCode =
    document.layers ? evt.which :
    document.all ? event.keyCode :
    document.getElementById ? evt.keyCode : 0;
*/
  var r = '';
  if (keyCode == 39)
  {
    r += 'arrow right';
  }
  else if (keyCode == 40)
  {
    r += 'arrow down';
    if (document.getElementById("whatDiv").style.display == 'block')
    {
    	document.getElementById("whatList").focus();
    }
  }
  else if (keyCode == 38)
  {
    r += 'arrow up';
  }
  else if (keyCode == 37)
  {
    r += 'arrow left';
  }
  else
  if (keyCode==13)
  {
  	Find();
  }

//  r += ' ' + keyCode;
//  alert(r);
//  return true;
}
function CheckWhereArrows (e)
{
   var keyCode=e.keyCode || e.which;
  var r = '';
  if (keyCode == 39)
  {
    r += 'arrow right';
  }
  else if (keyCode == 40)
  {
    r += 'arrow down';
    if (document.getElementById("whereDiv").style.display == 'block')
    {
    	document.getElementById("whereList").focus();
    }
  }
  else if (keyCode == 38)
  {
    r += 'arrow up';
  }
  else if (keyCode == 37)
  {
    r += 'arrow left';
  }
  else
  if (keyCode==13)
  {
     if (document.getElementById("findWhat").value == '')
     {
        document.getElementById("findWhat").focus();
     }
     else
     {
        Find();
     }
  }

}


