LocatorCtl = function() {
	this.register = function() {}		
	this.onload = function() {}
	
	this.locate = function() {
		$('user_message').hide();
		$('user_message').innerHTML = '';
		var zip = $('zipcode_newvalue').value.strip();
		if(zip == ''|| ! zip.match(/^\d+$/) || zip.length != 5) {
			$('user_message').innerHTML = "Sorry, that is not a valid zipcode.";
			$('user_message').show();			
		} else {
			var lr = function(res) {
				BFInstance.getController('LocatorCtl').locateRes(res);
			}
			zip =zip.replace(/^0+/, '');
			//alert(zip);
			var params = 'zipcode=' + zip;
			var uri = this.c.root_url + '/Locator';	
			$('zipcode_lookup').disabled = true;		
			$('zipcode_lookup').value = 'Looking...';					
			new Ajax.Request(uri, {method:'post', parameters:params, onSuccess:lr, onFailure:this.editErr});												
		}
	}
	
	this.locateRes = function(res) {
		$('zipcode_lookup').disabled = false;		
		$('zipcode_lookup').value = 'Lookup';					
		//alert(res.responseText);
		var resp_ob = eval('(' + res.responseText + ')');
		if(resp_ob.located) {
			var locations = resp_ob.locations;
			var opts = '';
			$('city_result').innerHTML = '';
			for(i = 0; i < locations.length; i++) {
				var loc = locations[i];
				//alert(loc.zipCode);
				//opts += '<option value="' + loc.zipCode + '">' + loc.city + ', ' + loc.state + '</option>';
				var opt = document.createElement('OPTION');
				opt.value = loc.zipCode;
				var text = document.createTextNode(loc.city + ', ' + loc.state);
				opt.appendChild(text);
				$('city_result').appendChild(opt);
			}
			//alert(opts);
			//test zip 93561
			//$('city_result').innerHTML = opts;
			$('save_located').show();
			BFInstance.getController('UserCtl').city = resp_ob.city + ',  ' + resp_ob.state;
			
		} else {			
			$('user_message').innerHTML = "We are unable to locate a city with that zipcode.";
			$('user_message').show();	
		}
	}

	this.save = function(res) {
		var option = $('city_result').options[ $('city_result').selectedIndex ];
		var zipcode = option.value;
		var city_state = option.innerHTML;
		var saved = function(res) {
			BFInstance.getController('LocatorCtl').saved(res, zipcode, city_state);
		}
		var params = 'action=save&zipcode=' + zipcode + '&city_state=' + escape(city_state);
		params += '&atco_session='	+ escape( this.getCookie('atco_session') );	
		var uri = this.c.root_url + '/Locator';	
		$('zipcode_save').disabled = true;
		$('zipcode_save').value = "Saving...";
		new Ajax.Request(uri, {method:'post', parameters:params, onSuccess:saved, onFailure:this.editErr});		
	}
	
	this.saved = function(res, zipcode, city_state) {		
		$('zipcode_save').disabled = false;
		$('zipcode_save').value = "Save";		
		$('save_located').hide();
		BFInstance.getController('UserCtl').unEditField('zipcode');
		$('zipcode_value').innerHTML = city_state;	
	}
	
	this.editErr = function(res) {
		$('err_message').show();
	}	
}