﻿var mTownsRequest;
var mTownsListener;

//Towns Provider ------------------------------------------------
function TownsProvider(oListener)
{
	mTownsListener = oListener;
    this.JobsURL = "/handlers/TownSuggest.ashx?t=";
}

TownsProvider.prototype.validate = function(town)
{
    TownsProvider.prototype.makeRequest(this.JobsURL + town.toLowerCase());
}

TownsProvider.prototype.makeRequest = function (query)
{
	try
	{
		TownsProvider.prototype.createRequest();
		if(mTownsRequest != null)
		{
			mTownsRequest.open("GET", query, true);	
			mTownsRequest.onreadystatechange = TownsProvider.prototype.townsRecieved;
			mTownsRequest.send(null);
		}
	}catch(ex)
	{}
}

TownsProvider.prototype.townsRecieved = function()
{
    if(mTownsRequest.readyState == 4)//4 = request complete
    {
		if(mTownsRequest.status == 200)//Sucessful request
		{
			if(mTownsRequest.responseText.length > 0)
			{
				mTownsListener.recieveResponse(mTownsRequest.responseText);
			}
        }
        else
        {
			throw "TOWNREQUESTERROR"
        }
    }
}

TownsProvider.prototype.createRequest = function ()
{
    //Attempt to create a HTTP request object
    try
    {
        //Try a generic request object
        mTownsRequest = new XMLHttpRequest();
    }
    catch(tryMicrosoft)
    {
        //Otherwise try an MS specific object
        try
        {
            mTownsRequest = new ActiveXObject("Microsoft.XMLHTTP");
        }
        catch(failed)
        {
            mTownsRequest = null;
        }
    }
}
//Towns Provider ------------------------------------------------