/*
----------------------------------------------------------
these functions are duplicated in pCurrentOffersResult.js
*/

		function coParseResponse(jsonObj) {
			var regionInfo = new Object;

			regionInfo.validZip = (jsonObj.valid == "true");
			regionInfo.multiRegion = (jsonObj.multiRegion == "true");
			regionInfo.counties = new Object;			// maps county id -> county {code, description, region_id)

			if (regionInfo.validZip) {
				for (var i = 0; i < jsonObj.counties.length; i++) {

					console.log(regionInfo.counties[jsonObj.counties[i].county.code]);
					//console.log(jsonObj.counties[i].county.code + " " + jsonObj.counties[i].region.code);
					if (typeof(regionInfo.counties[jsonObj.counties[i].county.code]) == "undefined") {
						regionInfo.counties[jsonObj.counties[i].county.code] = new Object;
						regionInfo.counties[jsonObj.counties[i].county.code].code = jsonObj.counties[i].county.code;
						regionInfo.counties[jsonObj.counties[i].county.code].description = jsonObj.counties[i].county.description;
						regionInfo.counties[jsonObj.counties[i].county.code].regions = new Object;

					}
					console.log(jsonObj.counties[i].county.code + " " + jsonObj.counties[i].region.code);
					//regionInfo.counties[jsonObj.counties[i].county.code].regions[jsonObj.counties[i].region.code] = new Object;
					regionInfo.counties[jsonObj.counties[i].county.code].regions[jsonObj.counties[i].region.code] = new Object;
					regionInfo.counties[jsonObj.counties[i].county.code].regions[jsonObj.counties[i].region.code].code = jsonObj.counties[i].region.code;
					regionInfo.counties[jsonObj.counties[i].county.code].regions[jsonObj.counties[i].region.code].description = jsonObj.counties[i].region.description;

					// add region id to our region set
					//regionInfo.regions[jsonObj.counties[i].region.code] = jsonObj.counties[i].region.code;
				}
			}

			return regionInfo;

		}


		// make ajax call
		function coDoLookup(form) {
			css.removeClassName(form, 'showCounty');
			css.removeClassName(form, 'invalidZip');

			css.addClassName(form, 'loading');

			var request = new Request.JSON({
					url: BASE_CONTEXT + '/tools/geoservice/ziptoregion.do?forward=json&zip='+ form.zipCode.value,
					onSuccess: function(jsonObj) {
						css.removeClassName(form, 'loading');
						var regionInfo = coParseResponse(jsonObj);
						form.regionInfo = regionInfo; 	// graft data onto our form
						coUpdateForm(form, regionInfo);
					},
					onComplete: function() {
						css.removeClassName(form, 'loading');
					}
				}).send();

		}

		function coUpdateForm(form, regionInfo) {
			selectObj = form.county;
			selectObj.length = 0;

			if (regionInfo.validZip) {

				for (var county_id in regionInfo.counties) {
					//console.log(code);
					var option = document.createElement("option");
					option.text = regionInfo.counties[county_id].description;
					option.value = county_id;
					selectObj.options.add(option);
				}

				// update region input with proper ids
				var selectedCountyId = selectObj.options[selectObj.selectedIndex].value;
				var regionIdSet = regionInfo.counties[selectedCountyId].regions;
				form.region.value = getRegionString(regionIdSet);


				// single region, no more user intervention needed
				if (regionInfo.multiRegion == false) {
					form.submit();
				} else if (selectObj.length > 1) {
					// if we have more than 1 county, show the county stuff
					css.addClassName(form, 'showCounty');
				} else {
					form.submit();
				}
			} else {
				css.addClassName(form, 'invalidZip');
			}
		}

		function updateRegionId(form, countyId) {
			var regionIdSet = form.regionInfo.counties[countyId].regions;
			form.region.value = getRegionString(regionIdSet);
		}

		// comma-separated list of region codes
		function getRegionString(regionIdSet) {
			var regionList = "";

			for (var regionID in regionIdSet) {
				regionList += regionID + ",";
			}

			// remove trailing ","
			regionList = regionList.substring(0, regionList.length - 1);

			return regionList;
		}

		// this gets called from the form onsubmit.
		function coValidate(form) {
			coDoLookup(form);
			return false;
		}
/*
----------------------------------------------------------
*/

