$("document").ready(function() {
	if ($.cookie('loc_longitude') && $.cookie('loc_latitude')) {
		getWeather();
	} else {
		$.getJSON("http://www.geoplugin.net/json.gp?callback=?", function(data) {
			eval(data);
		});
	}
});

function geoPlugin(data) {
	$.cookie('loc_latitude', data.geoplugin_latitude, {expires: 7});	
	$.cookie('loc_longitude', data.geoplugin_longitude, {expires: 7});
	$.cookie('loc_country', data.geoplugin_countryName, {expires: 7});
	$.cookie('loc_region', data.geoplugin_region, {expires: 7});
	$.cookie('loc_city', data.geoplugin_city, {expires: 7});
	$.cookie('loc_country_code', data.geoplugin_countryCode, {expires: 7});
	getWeather();
}

function getWeather() {
	var latitude = $.cookie('loc_latitude');
	var longitude = $.cookie('loc_longitude');
	
	var loc_conditions = $.cookie('loc_conditions');
	var loc_conditions_img = $.cookie('loc_conditions_img');
	var loc_temp = $.cookie('loc_temp');
	var loc_humidity = $.cookie('loc_humidity');
	
	if (loc_conditions && loc_conditions_img) {
		setConditions(loc_conditions, loc_conditions_img, loc_temp, loc_humidity);
	} else {
		var url = "http://ws.geonames.org/findNearByWeatherJSON?lat=" + latitude + "&lng=" + longitude + "&callback=?";
		$.getJSON(url, function(data) {
			var clouds = data.weatherObservation.clouds;
			var weather = data.weatherObservation.weatherCondition;
			var temp = data.weatherObservation.temperature;
			var humidity = data.weatherObservation.humidity;
			
			var conditions_img = getConditions(clouds, weather);
			
			var conditions = '';
			if (weather == 'n/a') {
				if (clouds == 'n/a') {
					conditions = 'fine';
				} else {
					conditions = clouds;
				}
			} else {
				conditions = weather;
			}
			
			$.cookie('loc_conditions', conditions);	
			$.cookie('loc_conditions_img', conditions_img);	
			$.cookie('loc_temp', temp);	
			$.cookie('loc_humidity', humidity);	
			setConditions(conditions, conditions_img, temp, humidity);
		});
	}
}

function getConditions(clouds, weather) {
	if (weather == 'n/a') {
		switch (clouds) {
			case 'n/a':
				return 'sunny.png';
			case 'clear sky':
				return 'sunny.png';
			case 'few clouds':
				return 'partly_cloudy.png';
			case 'scattered clouds':
				return 'partly_cloudy.png';
			case 'broken clouds':
				return 'partly_cloudy.png';
			default:
				return 'cloudy.png';
		}
	} else {
		weather = weather.replace('light ', 'Kevés ').replace('heavy ', 'Sok ').replace(' in vicinity', '');
		switch(weather) {
			case 'drizzle':
				return 'rain.png';
			case 'rain':
				return 'rain.png';
			case 'snow':
				return 'snow.png';
			case 'snow grains':
				return 'sleet.png';
			case 'ice crystals':
				return 'icy.png';
			case 'ice pellets':
				return 'icy.png';
			case 'hail':
				return 'sleet.png';
			case 'small hail':
				return 'sleet.png';
			case 'snow pellets':
				return 'sleet.png';
			case 'unknown precipitation':
				return 'rain.png';
			case 'mist':
				return 'mist.png';
			case 'fog':
				return 'fog.png';
			case 'smoke':
				return 'smoke.png';
			case 'volcanic ash':
				return 'smoke.png';
			case 'sand':
				return 'dust.png';
			case 'haze':
				return 'haze.png';
			case 'spray':
				return 'rain.png';
			case 'widespread dust':
				return 'dust.png';
			case 'squall':
				return 'flurries.png';
			case 'sandstorm':
				return 'dust.png';
			case 'duststorm':
				return 'dust.png';
			case 'well developed dust':
				return 'dust.png';
			case 'sand whirls':
				return 'dust.png';
			case 'funnel cloud':
				return 'flurries.png';
			case 'tornado':
				return 'storm.png';
			case 'waterspout':
				return 'storm.png';
			case 'showers':
				return 'storm.png';
			case 'thunderstorm':
				return 'thunderstorm.png';
			default:
				if (weather.indexOf("rain")) {
					return 'rain.png';
				} else if (weather.indexOf("snow")) {
					return 'snow.png';
				} else if (weather.indexOf("thunder")) {
					return 'thunderstorm.png';
				} else if (weather.indexOf("dust")) {
					return 'dust.png';
				} else {
					return 'sunny.png';
				}
		}
	}
}

function setConditions(conditions, conditions_img, temp, humidity) {
	var country = $.cookie('loc_country');
	var region = $.cookie('loc_region');
	var city = $.cookie('loc_city');
	var loc_country_code = $.cookie('loc_country_code');
	if (loc_country_code == 'US') {
		temp = parseInt(temp) + 32;
		temp_type = "F";
	} else {
		temp_type = "C";
	}

	conditions = conditions
		.replace('clear sky','Tiszta')
		.replace('few clouds','Kevés felhő')
		.replace('scattered clouds','Elszórtan felhős')
		.replace('broken clouds','Foltokban felhős')
		.replace('drizzle','Szitálás')
		.replace('rain','Eső')
		.replace('snow','Havazás')
		.replace('snow grains','')
		.replace('ice crystals','')
		.replace('ice pellets','')
		.replace('hail','Jégeső')
		.replace('small hail','')
		.replace('snow pellets','')
		.replace('unknown precipitation','Csapadékos')
		.replace('mist','')
		.replace('fog','Köd')
		.replace('smoke','Füst')
		.replace('volcanic ash','')
		.replace('sand','')
		.replace('haze','')
		.replace('spray','')
		.replace('widespread dust','')
		.replace('squall','Erős szél')
		.replace('sandstorm','Homokvihar')
		.replace('duststorm','Porvihar')
		.replace('well developed dust','')
		.replace('sand whirls','')
		.replace('funnel cloud','')
		.replace('tornado','Tornádó')
		.replace('waterspout','Felhőszakadás')
		.replace('showers','Zivatar')
		.replace('thunderstorm','Viharos')
		.replace('fine','Tiszta')
		.replace('light','Kevés')
		.replace('heavy','Sok')
		.replace('overcast','Felhős');

	$("#weather_widget").append("<img id='weather_img' src='http://teszt.csrhungary.eu/wp-content/themes/csrhungary/images/weather_icon/" + conditions_img + "' />");
	$("#weather_widget").append("<div id='weather_conditions'><p id='weather_country'>" + city + "</p><p id='weather_temp'>Hőmérséklet: " + temp + "&deg; " + temp_type + "</p><p id='weather_hum'>Páratartalom: " + humidity + "%</p><p id='weather_cond'>" + conditions.substr(0, 1).toUpperCase() + conditions.substr(1) + "</p></div>");
}
