//**********************************************
// weather.js
//**********************************************
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;

function weatherInit() {
	//** Init WeatherApp.
	WeatherApp.init();
}

//**********************************************
// Weather App.
//**********************************************
var weatherCounties;

var weatherCountyListOverlay;

WeatherApp = {
	init: function(){
		//** init overlay.
		Dom.setStyle('weatherCountyListOverlay', 'display', '');
		weatherCountyListOverlay = new YAHOO.widget.Overlay('weatherCountyListOverlay', {
			context:['weatherMore','tl','tl'], visible:false
		});
		weatherCountyListOverlay.render();
		//Dom.setStyle('weatherCountyListOverlay', 'opacity', 0.9);
		//** Event Control.
		Event.on('weatherMore', 'click', function(){
			weatherCountyListOverlay.show();
		});
		Event.on('weatherArea', 'click', function(){
			weatherCountyListOverlay.show();
		});
		Event.on('weatherCountyListOverlay', 'mouseleave', function(){
			weatherCountyListOverlay.hide();
		});
	
		var postData = 'function=getWeatherCounties';
		YAHOO.util.Connect.asyncRequest('POST', WeatherServlet, { success:WeatherApp.successHandler_LoadCounties, failure:WeatherApp.failureHandler }, postData);
	},
	
	successHandler_LoadCounties: function(o) {
		if(o.responseText !== undefined){
			if (o.responseText == '') return false;
			weatherCounties = eval('(' + o.responseText + ')');
			WeatherApp.fillCountyBlock(weatherCounties);
			Dom.get('weatherArea').innerHTML = weatherCounties[0].name;
			WeatherApp.changeCounty(weatherCounties[0].id);
		}
	},
	
	successHandler_LoadWeather: function(o) {
		if(o.responseText !== undefined){
			if (o.responseText == '') return false;
			var weather = eval('(' + o.responseText + ')');
			Dom.get('weatherTemperature').innerHTML = weather.temperature;
			Dom.get('weatherIcon').alt = weather.daySegment + weather.condition + weather.rainPossibility;
			Dom.get('weatherIcon').src = '/wps/themes/html/iMove/img/weather/' + weather.imageCode + '.png';
			Dom.setStyle('weatherBlock', 'visibility', '');
		}
	},
	
	failureHandler: function(o) {
		//alert('AJAX Connection Failure !!');
	},
	
	fillCountyBlock: function(weatherCounties) {
		for (var i = 0; i < weatherCounties.length; i++) {
			var baseEl = document.createElement('div');
			var aEl = document.createElement('a');
			aEl.id = 'countyIdx_' + i;
			aEl.href = 'javascript://';
			aEl.innerHTML = weatherCounties[i].name;
			Dom.setStyle(aEl, 'font-size', '12px');
			baseEl.appendChild(aEl);
			Event.on(aEl, 'click', function(e){
				var target = Event.getTarget(e);
				var countyIdx = target.id.substring(10);
				Dom.get('weatherArea').innerHTML = weatherCounties[countyIdx].name;
				WeatherApp.changeCounty(weatherCounties[countyIdx].id);
			});
			Dom.get('weatherCounties').appendChild(baseEl);
		}
	},
	
	changeCounty: function(countyId) {
		weatherCountyListOverlay.hide();
		var postData = 'function=getWeatherDay&countyId=' + countyId;
		YAHOO.util.Connect.asyncRequest('POST', WeatherServlet, { success:WeatherApp.successHandler_LoadWeather, failure:WeatherApp.failureHandler }, postData);
	}
};

YAHOO.util.Event.onDOMReady(weatherInit);