﻿var proxyUrl = "proxy.ashx?";

var ajaxUtilities = {

    sendGetRequest: function (url, useProxy, callback, errorHandler) {
        this._send(url, "GET", null, useProxy, callback, errorHandler);
    },

    sendPostRequest: function (url, parameters, useProxy, callback, errorHandler) {
        this._send(url, "POST", parameters, useProxy, callback, errorHandler);
    },

    _send: function (url, requestType, parameters, useProxy, callback, errorHandler) {
        var requestUrl = (useProxy) ? proxyUrl + url : url;
        var paramStr = null;
        if (requestType == "POST")
            paramStr = dojo.toJson(parameters);

        $.ajax({
            type: requestType,
            url: requestUrl,
            data: paramStr,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: callback,
            error: errorHandler
        });
    }
};

var googleGeocoder = {
    _geocodeUrl: "http://maps.google.com/maps/api/geocode/json",

    findAddressByCityState: function (address, city, state, callback, errorHandler) {
        var fullAddr = address + "," + city + "," + state;
        this._send(fullAddr, callback, errorHandler);
    },

    findAddressByZip: function (address, zip, callback, errorHandler) {
        var fullAddr = address + "," + zip;
        this._send(fullAddr, callback, errorHandler);
    },

    findAddress: function (address, callback, errorHandler) {
        // assumes address contains city/state and/or zip
        this._send(address, callback, errorHandler);
    },

    _send: function (fullAddress, callback, errorHandler) {
        var url = this._geocodeUrl + "?address=" + fullAddress + "&sensor=false";
        ajaxUtilities.sendGetRequest(url, true, callback, errorHandler);
    }
};

