/***************************/
String.prototype.rgb2hex = function(asArray){

	if(!this.match(/^rgb/i)){return false;}

	var re = new RegExp('rgb\\((\\d{1,}),(\\d{1,}),(\\d{1,})\\)', "ig");
	var colors = re.exec(this.replace(new RegExp("\\s", "g"), ""));
	//var colors = re.exec(String.prototype.stripWhitespace.call(this));
	var r= parseInt(colors[1], 10).toString(16);
	var g= parseInt(colors[2], 10).toString(16);
	var b= parseInt(colors[3], 10).toString(16);

	r = (r.length<2) ? r+r : r;
	g = (g.length<2) ? g+g : g;
	b = (b.length<2) ? b+b : b;

	if(asArray){
		return [r,g,b];
	} else {
		return '#'+r+''+g+''+b;
	}
};
/***************************/
//add points with fade tooltips to the map
var Class_mapBaltic = Class.create({
	initialize : function(points){
		this.points = points;
		this.initPoints();
	},

	initPoints : function(){
		var i;
		var inject = '<div id="map_tooltip" style="display:none;position:absolute; z-index:100;"><img src="/img/map_toolltip.png"></div>';
			inject += '<img src="/img/map_baltic.png" border="0" alt="map">';
		for(i in this.points){
			inject += '<div id="map_point_'+i+'" style="cursor:pointer;position:absolute; top:'+this.points[i][0]+'px; left:'+this.points[i][1]+'px;"';
			inject += 'onMouseOver="mapBaltic.showMapTooltip('+i+');" onMouseOut="mapBaltic.hideMapTooltip('+i+');"><img src="/img/map_blue_circle.png"/></div>';
		};
		$('map_baltic').update(inject);
	},

	showMapTooltip : function(i){
		this.toggleTooltip(i, 1);
	},

	hideMapTooltip : function(i){
		this.toggleTooltip(i, 0);
	},

	toggleTooltip : function(i, show){
		var x = this.points[i] ? this.points[i][2] : 0;
		var y = this.points[i] ? this.points[i][3] : 0;
		if(x && y){
			$('map_tooltip').setStyle({
			  'left': x+'px',
			  'top': y+'px'
			});
			$$('div#map_tooltip img').first().src = '/img/map_toolltip_'+this.points[i][4]+'.png';
			$$('div#map_point_'+i+' img').first().src = '/img/map_blue_circle'+(show ? '_hover' : '')+'.png';
			if(show) $('map_tooltip').appear({ duration: 0.2 });
			else $('map_tooltip').hide();
		}
	}

});

//[point_top, point_left, tooltip_top, tooltip_left, tooltip_img]
var points = {
	0: [22, 136, 117, 1, 'keila'],
	1: [88, 140, 121, 66, 'parnu'],
	2: [88, 183, 158, 66, 'viljandi'],
	3: [88, 226, 207, 66, 'tartu'],
	4: [153, 176, 152, 131, 'valmiera'],
	5: [170, 172, 153, 148, 'cesis'],
	6: [185, 155, 131, 163, 'sigulda'],
	7: [237, 126, 103, 215, 'bauska'],
	8: [219, 106, 82, 197, 'jelgava'],
	9: [197, 86, 63, 174, 'tukums']
};

/***************************/
var Class_weatherWidget = Class.create({
	initialize : function(){
		this.elem = $('weather_city') ? $('weather_city') : '';
		if(!this.elem) return false;
		this.onChange();
		this.getForecast();
	},

	onChange : function(){
		var o = this;
		$('weather_city').observe('change', function(e) {
			o.getForecast();
		});
	},

	getForecast : function(){
		var params = 'city='+$('weather_city').options[$('weather_city').selectedIndex].value;

		new Ajax.Request('/windguru/getforecast.php', {
			method: 'post',
			parameters: params,
			requestHeaders: {Accept: 'application/json'},
			onComplete: function (resp, oJson) {
				var json = resp.responseText.evalJSON(true);

				if(json.error == 1){
					alert(json.error_descr);
				}
				else {
					$('weather_widget').update(json.data);
					$$('div#weather_widget .wgfcst table.forecast-ram').first().setStyle({'border' : '1px solid #FFFFFF'});
					var clr, new_clr;
					$$('div#weather_widget .wgfcst table.forecast td').each(function(o){
						clr = o.getStyle('background-color').rgb2hex();

						switch(clr){
							case '#e0e0e0' : new_clr = '#dcf0fe'; break;
							case '#c2c2c2' : new_clr = '#baddf8'; break;
						}
						if(new_clr) o.setStyle({'background':new_clr});
						new_clr = clr = '';

					});

					var i=0;
					$$('div#weather_widget .wgfcst table.forecast tr').each(function(o){
						i++;
						if(i<3){
							o.setStyle({'background':'#baddf8'});
						}	
					});
				}
			}
		});
	}

});
/***************************/
/*
window.onload = function(){
	var weather = new Class_weatherWidget();
}
*/
function show(el){
	if(el) el.setStyle({display: 'block'});
}

function hide_opacity(el){
	if(el) {
		YAHOO.util.Dom.setStyle(el, "opacity", "0");
		//if(YAHOO.util.Dom.getStyle(el, "opacity") == '1') el.setStyle("opacity", "0");
	}
}

function show_opacity(el){
	if(el) {
		YAHOO.util.Dom.setStyle(el, "opacity", "1");
		if(YAHOO.util.Dom.getStyle(el, "opacity") == '0') el.setStyle("opacity", "1");
	}

}

function checkEmail(o) {
	var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	return (!filter.test(o.value) ? false : true);
}

function show_fade(el){
	show(el);
	hide_opacity(el);
	fadeInAnim = new YAHOO.util.Anim(el, { opacity: {to: 1} }, 0.3 );			
	fadeInAnim.animate();	
}

function hide(el){
	if(el) el.setStyle({display: 'none'});
}

function hide_fade(el){	
	fadeInAnim = new YAHOO.util.Anim(el, { opacity: {to: 0} }, 0.3 );
	fadeInAnim.onComplete.subscribe(function() { hide(el); });	
	fadeInAnim.animate();	
}

function checkDate(o) {
	var filter = /^([0-9]{2})\-([0-9]{2})\-([0-9]{4})$/;
	return (!filter.test(o) ? false : true);
}

function isChecked(id){
	if($(id)) return $(id).checked == true ? 1 : 0;
}

function toogle_check(id){
	if($(id)) $(id).checked = isChecked(id) ? false : true;
}

function toogle_radio(id){
	if($(id) && !$(id).checked) $(id).checked = true;
}

function showHide(id){
	if($(id))
		 if($(id).getStyle('display') == 'none')
			$(id).setStyle({display: ''});
		 else $(id).setStyle({display: 'none'});
}


