var StoreLocator = new Class({
	markers: new Array,
	Latitude: 0,
	Longitude: 0,
	initialize: function() {
		this.pcode = null;				
	},
	load: function() {
		$('results').set('html', 'Loading');
		$('submit').setProperty('disabled', 'true');
		this.Latitude = this.Longitude = 0;
		var jsonRequest = new Request.JSON({url: "/sync/dealers.json", 
		onFailure: function() {
			stores.failed();
		},
		onComplete: function(jsonObj) {
			if ($chk(jsonObj.dealers[0])) {
				stores.parseJSON(jsonObj.dealers);
			} else {
				stores.failed();
			}
		},
		onException: function() {
			alert('Exception');
		}
		}).send("country="+country+"&pcode="+stores.pcode);
	},
	parseJSON: function(elements) {
		$('results').set('html', '');
		$('submit').removeProperty('disabled');
		stores.markers.each(function(element) {
			map.removeOverlay(element);
		});	
		elements.each(function(element){
			stores.mapInsert(element);
			stores.divInsert(element);
		});
				
		map.setCenter(new GLatLng((this.Latitude/elements.length), (this.Longitude/elements.length)), 8);
	},
	mapInsert: function(element) {
		stores.Latitude += parseFloat(element.Latitude);
		stores.Longitude += parseFloat(element.Longitude);
		stores.markers[stores.markers.length] = new GMarker(new GLatLng(element.Latitude, element.Longitude));
		map.addOverlay(stores.markers[stores.markers.length-1]);
	},
	divInsert: function(element) {
		var html = "<h2 style=\"padding:1em 0 0 0;margin:0;\">"+element.name+"</h2>";
		html = $chk(element.address1) ? html+element.address1+"<br>" : html;
		html = $chk(element.address2) ? html+element.address2+"<br>" : html;
		html = html+element.city+", "+element.province_code+"<br>";
		html = html+element.PostalCode+"<br>";
		html = $chk(element.phone) ? html+element.phone+"<br>" : html;
		html = $chk(element.website) ? html+element.website+"<br>" : html;
		html = $chk(element.email) ? html+element.email+"<br>" : html;
		html = $chk(element.distance) ? html+"Distance : "+element.distance+" "+(country=='us'?'miles':(lang=='en'?'kilometres':'kilomètres'))+"<br>" : html;
				
		var div = new Element('div', {'class': 'brand', 'html': html});
		div.inject($('results'));

	},
	failed: function() {
		$('results').set('html', 'Failed');
		$('submit').removeProperty('disabled');
	}
});

var stores;
window.addEvent('domready', function() {
	stores = new StoreLocator();
	$('resellersForm').addEvent('submit', function(e) {
		e.stop();
		if ($chk($('map'))) {
			stores.pcode = $('pcode').get('value');
			stores.load();
		}
	});
	$('RslCountrySlct').addEvent('change', function() { 
		if ($chk(this.get('value')!='--')) loc.change(this.get('value'));
	});
});
