﻿
function doLocationSearchKeyDown(){

    if ($F('txtLocationSearch').length > 2 ) {
        if( /\d/.test($F('txtLocationSearch')) && !IsOutCode($F('txtLocationSearch')) ) {
            doPostcodeSearch();
        } else {
            doLocationSearch();
        }
    }
    return false;
}

function IsOutCode(text) {
    if ( parseInt(text.substr(0,1)) >= 0 ) {
        return true;
    } else {
        return false;
    }
}

function doPostcodeSearch()
{
    updateProgress('Looking up postcode');
    
    $('locations-searchintro').style.display = 'none';
    $('locations-search').innerHTML = '';
    var oPostcode = new PostcodeAPI();
    var oSearchResult = oPostcode.readByPostcode($F('txtLocationSearch'));
    if(oSearchResult != null && oSearchResult.easting > 0 && oSearchResult.northing > 0){
        OSsetCenter(map, oSearchResult.easting, oSearchResult.northing, 3);
        return false;
    } else {
        $('locations-search').innerHTML = '<li>No matching postcode found</li>';
        $('locations-searchintro').style.display = "block";
    }
    
   window.setTimeout("updateProgress('');", 500);
}

function doLocationSearch()
{
    updateProgress('Looking up location');
    
    if($F('txtLocationSearch').length > 0){
        $('locations-searchintro').style.display = 'none';
        $('locations-search').innerHTML = '';
        var oLocation = new LocationsAPI();
        var oSearchResults = oLocation.readByName($F('txtLocationSearch'));
        var iResultCount = oSearchResults.length;
        var locationsearch = $('locations-search');
        
        var locTemplate = new Template('<li id="locations-search#{locationID}"><a href="#" onclick="return doLocationAdd(#{locationID},\'#{name}\',#{centroidX},#{centroidY},#{hierarchyLevel});" title="add this location"><img src="http://static.zubed.com/images/icons/add.gif" /><span>#{name} (#{hierarchyDesc})</span></a></li> ');
            
        if(iResultCount > 0){
            for(var i = 0; i < iResultCount; i++) {
                locationsearch.innerHTML += locTemplate.evaluate(oSearchResults[i]);
            }      
        } else {
            locationsearch.innerHTML = '<li>No matching locations found</li>';
        }
        $('locations-searchintro').style.display = "block";
    }
    
    window.setTimeout("updateProgress('');", 500);
}

function doLocationAdd(iLocationID, sLocation, X, Y, level)
{
    $('txtLocationSearch').value = sLocation;
    $('locations-searchintro').style.display = 'none';
    $('locations-search').innerHTML = '';
    OSsetCenter(map, X, Y, ((level==1) ? 1 : 3));
    return false;
}

function doLocationRemove(iLocationID)
{
    $('location' + iLocationID).remove();
    searchLocations = searchLocations.without(iLocationID);
    return false;
}  



