/*!
 * Zonneradar generic functions
 *
 * Copyright (c) Lab1111 Amsterdam for Wieckse Zonneradar
 * By Remko Posthuma
 *
 * http://lab1111.com
*/


/* SETTINGS */
var initDone	= false;
var timer 		= 0;
var scrollTo	= 0;
var initPath	= '';
var ZoomCenterLeft				= new Array(0.007,		0.00039,	0.0019,	0.0009,	0.00045, 	0.00045); //REPOSITION MARKER CORRECTION
var ZoomCenterTop				= new Array(0.00048,	0.00028,	0.00139,0.00069,0.00034,	0.00029); //REPOSITION MARKER CORRECTION
var SolarText					= new Array('','Zeer zonnig','Zonnig','Half zonnig','Beetje zonnig','Zwak zonnetje','Geen zon','Geen zon');
var nl_scroller;
var nl_tabs;
var nl_autoscroll;
var TerraceShowing	= false;
var TerraceCenter;
var socialType;

var naam_s;
var email_s;
var naam_f;
var email_f;

var scroll		= 	new Object();
scroll.start	= 	true;
scroll.interval	=	9000;
scroll.id		= 	null;
scroll.hover	=	false;

function startApp() {

	log("Starting Wiecske Zonneradar "+version+"");

/* DO IE AND FONT FIXES */
	$('div').ifixpng();
	$('div#goto_home img').ifixpng();
	$('#graph_fg').ifixpng();
	$('#terras_graph_fg').ifixpng();

	$('#pane_terras_save a img').ifixpng();
	
//	$('#terras_graph').ifixpng();
	
	
	Cufon.replace('h2', { fontFamily: 'DekodisplayBold' });
	Cufon.replace('h4', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#sub_menu a', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#pane_terras_save a', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#share h3', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#promo a', { fontFamily: 'Myriad Pro' });

	$("#search_holder").hide();
	$("#loader_small").hide();

/* INIT GOOGLE MAPS */
	initializeMaps();

/* INIT SLIDER */
	$('#zonneradar_slider').slider({
		animate: true,
		min: 7,
		max: 19,
		value: 7,
		orientation: 'vertical'
	});
	$('#zonneradar_slider').bind('slidechange',zoomMap);

	$('#search').val(InitSearchText);
	$('#search').focus(clearSearch);
	$('#zonneradar').cornerz({ radius: 10, borderWidth:0, background:'#FFFFFF',corners: 'bl br',fixIE:true })
	$('input[safari]:checkbox').checkbox({cls:'jquery-safari-checkbox'});

/* DO SERVICE CALLS */
	startSession('startSessionFinish');
};

function startSessionFinish(result)
{
	$('#preloader_foreground').animate({top: '390px'},1000,'easeOutBounce');

	log("SESSION STARTED: " +result.Value.SessionId);
	log(result);
	$.cookie("SessionId", result.Value.SessionId+"");

	Session.SessionId			= result.Value.SessionId;
	Session.IsDay				= result.Value.DayOrNight;
//	Session.IsDay				= true;
	Session.Sunrise				= result.Value.Weather.Sunrise;
	Session.Sunset				= result.Value.Weather.Sunset;
	Session.UpdateTime			= dateToTime(result.Value.Weather.Date);
	
	Session.Weather				= new Object();
	Session.Weather				= result.Value.Weather;
	
	Session.Variables			= new Object();
	Session.Variables			= convertVariablesToObject(result.Value.Variables);
	
	Session.HighestSolarTerrace = new Object();
	Session.HighestSolarTerrace	= result.Value.Weather.HighestSolarTerrace;	
	
	updateNL();
	updateActualWeatherInfo();
	
	genForecastTable(result.Value.WeatherOnline);

/* CHECK LAST MARKER STATE */
	if (Session.Variables.MarkersChecked==undefined) Session.Variables.MarkersChecked=false;
	if (Session.Variables.FavoriteGuid!=undefined) getFavoriteTerrace()
	if (!initDone)
	{	
		log('--ONLY ONCE');
		initDone					= true;
//		setFavoriteTerrace('c5840eed-5728-4dab-91f4-97b548dbd135');
//		showTerrace('c5840eed-5728-4dab-91f4-97b548dbd135');
//		setVariable('displayResult','UitlegDone',false);

		getTerraces('createMarkers');		// LOAD TERRACES ON DISPLAY MARKERS
		loadOverlay('overlayLoaded');
	}
}

function doNext()
{

	$('input[name=checkmarker]').attr('checked',false)
	log('DO NEXT');
	log(Session.Variables.MarkersChecked);

	$('input[name=checkmarker]').attr('checked',Session.Variables.MarkersChecked);
	$('input[name=checkmarker]').bind('click', function() {
		if ($('input[name=checkmarker]').attr('disabled')==true) return;
		stat	= true;
		if (this.checked) stat = false;
		showMarkers(stat);
		log(stat);
		Session.Variables.MarkersChecked	= stat;
		setVariable('hideLoader','MarkersChecked',stat);
	});
	
	showMarkers(Session.Variables.MarkersChecked);
	updateZoomDisplay();
	

/* > IE 6 FIXES */
	if(isIE6()==false) 
	{
		$("#terras_tabs li a").css('background-image','url(./images/bg_tabs_terras.png)');
		$("#nl_tabs li a").css('background-image','url(./images/bg_tabs_nederland.png)');
	}
/* INFO PANES */
	$("#terras_panes").scrollable({size: 1}).navigator({ 
	    navi: "#terras_tabs", 
	    naviItem: 'a', 
		activeClass: 'current'
	});
	
	$("#nl_panes").scrollable({size: 1}).navigator({ 
	    navi: "#nl_tabs", 
	    naviItem: 'a', 
		activeClass: 'current'
	});

/*	$("#nl_panes").scrollable({size: 1}).circular().navigator({ 
	    navi: "#nl_tabs", 
	    naviItem: 'a', 
		activeClass: 'current'
	}).autoscroll({
		interval: 5000
	});
*/
	nl_scroller 	= $("#nl_panes").data("scrollable");
	nl_scroller.getNaviButtons().hover(function() { scroll.hover=true});
	nl_scroller.getNaviButtons().click(function() { clearInterval(scroll.id);});

	$('#preloader_foreground').animate({top: '190px'},1000,'easeOutBounce',hidePreloader);
	
	setInterval(doUpdateInterval, UPDATEINTERVAL);
	scroll.id 	= setInterval(scrollIt, scroll.interval);
	
//	showTerrace('5021eb55-8e18-4e47-84af-88fab7566019');

	hideLoader();
}

function scrollIt()
{
	log("SCROLL NL PANE");
	if (scroll.hover == false)
	{
		if ((nl_scroller.getIndex()+1)==nl_scroller.getSize())
		{
			nl_scroller.seekTo(0);
		} else {
			nl_scroller.next();
		}
	} else {
		scroll.hover = false;
	}
	
}

function updateNL(Name)
{
	log("UPDATE NL:" +Name);
	log(Session.Weather);
	if(Name!=undefined)
	{
		$("#nl_header h1").empty();
		$("#nl_header h1").html(Name);
	}
	
	$("#nl_min_sun_today h1").empty();
	$("#nl_min_sun_today h1").html(Session.Weather.SunMinutes.SunMinutesTotal);
	$("#nl_min_to_go h1").empty();
	$("#nl_min_to_go h1").html(Session.Weather.SunMinutes.SunMinutesLeft);
	$("#nl_min_past h1").empty();
	$("#nl_min_past h1").html(Session.Weather.SunMinutes.SunMinutesNow);
	$("#nl_header_featured_terrace h1").empty();
	$("#nl_header_featured_terrace h1").html(Session.HighestSolarTerrace.Name + ", " + Session.HighestSolarTerrace.City);
	$("#nl_header_featured_terrace h3").empty();
	$("#nl_header_featured_terrace h3").html(dateToTime(Session.HighestSolarTerrace.LastUpdate)+' Zonnigste terras van Nederland');

	$("#nl_ft_min_to_go h1").html(Session.HighestSolarTerrace.SunMinutesLeft);
	$("#nl_ft_min_past h1").html(Session.HighestSolarTerrace.SunMinutesNow);
	
	if (Session.HighestSolarTerrace.ImageUrl.length <= 0) {
		$('#nl_featured_terrace_picture img').attr('src','images/terrassen/placeholder_med.jpg');
	} else {
		$('#nl_featured_terrace_picture img').attr('src','images/terrassen/'+Session.HighestSolarTerrace.ImageUrl+'_med.jpg');
	}	
	
	$('#update_time h4').empty()
	$('#update_time h4').append(Session.UpdateTime);
	
	nlWeather	= getActualWeatherObject(Session.HighestSolarTerrace.CalculatedSolar,Session.HighestSolarTerrace.ActualLunarPhaseSegment);

	$('#nl_actual_weather h3').html(nlWeather.Text+'<br />'+fixString(Session.HighestSolarTerrace.ActualThTempC) +'°');
	$('#sun_icon_nl').attr('src',nlWeather.Image);


	Cufon.replace('#nl_panes h3', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#nl_panes h1', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#update_time h4', { fontFamily: 'Myriad Pro' });

//SUN ICON
	$('#sun_icon_nl').ifixpng();

	genGoogleGraphTop(Session.Weather.SunMinutes,		'#nl_graph_top');
	genGoogleGraphBottom(Session.Weather.SunMinutes,	'#nl_graph_bottom');

	hideLoader();
	
}
function updateNLWeather(result)
{
	cZoom	= parseInt($('#zonneradar_slider').slider('value'));
	log('UPDATE NL WEATHER, ZOOM LEVEL: '+cZoom);
	log(result);

	Session.Weather				= result.Value;
	Session.HighestSolarTerrace	= result.Value.HighestSolarTerrace;
	if (cZoom==7)
	{
		var Name = "Nederland";
	} else {
		var Name=""; 
		if (result.Value.ProvinceName==null) 	result.Value.ProvinceName="";
		if (result.Value.CityName==null) 		result.Value.CityName="";
		
		if (result.Value.CityName.length>0 && result.Value.ProvinceName.length>0)
		{
			Name = (result.Value.CityName+', '+result.Value.ProvinceName);
		} else if (result.Value.CityName.length<=0 && result.Value.ProvinceName.length>0) {
			Name = (result.Value.ProvinceName);
		} else if (result.Value.CityName.length>0 && result.Value.ProvinceName.length<=0) {
			Name = (result.Value.CityName);
		}
	}
	ts= Session.Weather.SunMinutes.SunPercentage;

	$('#nl_sunValue').empty();
	$('#nl_sunValue').html(ts+"%");

	$('#nl_sunValue1').addClass('sunValueOff');
	$('#nl_sunValue2').addClass('sunValueOff');
	$('#nl_sunValue3').addClass('sunValueOff');
	$('#nl_sunValue4').addClass('sunValueOff');
	
	if (ts>25) $('#nl_sunValue1').attr('class','sunValueOn');
	if (ts>50) $('#nl_sunValue2').attr('class','sunValueOn');
	if (ts>75) $('#nl_sunValue3').attr('class','sunValueOn');
	if (ts>90) $('#nl_sunValue3').attr('class','sunValueOn');
	updateNL(Name);
	hideLoader();
}
function doUpdateNLWeather()
{
	log('--UPDATE NL --');
	var nePoint = map.getBounds().getNorthEast();
	var neLat = nePoint.lat();
	var neLon = nePoint.lng();
	
	var swPoint = map.getBounds().getSouthWest();
	var swLat = swPoint.lat();
	var swLon = swPoint.lng();

	getActualWeather('updateNLWeather',neLat,neLon,swLat,swLon);
}

function updateTerrace()
{
	log('UPDATE TERRACE:' + Session.CurrentTerrace.Name);
	log(result);
	Session.CurrentTerraceShown	= true;
	
	log('-- CURRENT TERRACE')
	log(Session.CurrentTerrace);
	$('#terras_data_website').show();
	if(Session.CurrentTerrace.Homepage.length<=0) $('#terras_data_website').hide();
	
	$('#terras_header h1').empty();
	$('#terras_header h1').html(Session.CurrentTerrace.Name+", "+Session.CurrentTerrace.City);
	$('#terras_header h4').html(dateToTime(Session.CurrentTerrace.LastUpdate));

	if (Session.CurrentTerrace.ImageUrl.length <= 0) {
		$('#terras_data_picture').attr('src','images/terrassen/placeholder_lo.jpg');
		$('#terras_picture').attr('src','images/terrassen/placeholder_med.jpg');
	} else {
		$('#terras_data_picture').attr('src','images/terrassen/'+Session.CurrentTerrace.ImageUrl+'_lo.jpg');
		$('#terras_picture').attr('src','images/terrassen/'+Session.CurrentTerrace.ImageUrl+'_med.jpg');
	}


	$('#terras_data_name').empty();
	$('#terras_data_name').html(Session.CurrentTerrace.Name);
	
	$('#terras_data_adres').empty();
	$('#terras_data_adres').html(Session.CurrentTerrace.Street+ ' '+ Session.CurrentTerrace.HouseNumber +' '+Session.CurrentTerrace.HouseNumberExt);

	$('#terras_data_plaats').empty();
	$('#terras_data_plaats').html(Session.CurrentTerrace.Zipcode + "  " +Session.CurrentTerrace.City);

	$('#terras_info_holder').empty();
	$('#terras_info_holder').html(Session.CurrentTerrace.PromoText);

	$('#terras_actual_weather h3').empty();

	$('#temp_avg h1').empty();
	$('#temp_gvl h1').empty();
	$('#wind h1').empty();
	$('#humi h1').empty();

	$('#terrace_update_time').empty();
	
	if(Session.CurrentTerrace.WeatherStationId==null)
	{
		$('#temp_avg').hide();
		$('#temp_gvl').hide();
		$('#wind').hide();
		$('#humi').hide();
		$('#terrace_update_time').html(dateToTime(Session.Weather.Sunset));
	} else {
		$('#temp_avg').show();
		$('#temp_gvl').show();
		$('#wind').show();
		$('#humi').show();
		$('#temp_avg h1').html(fixString(Session.CurrentTerrace.ActualThTempC));
		$('#temp_gvl h1').html(fixString(Session.CurrentTerrace.ActualWindChillC));
		$('#wind h1').html(""+Math.round( 
			Session.CurrentTerrace.ActualWindSpeedMs) + ""+ 
			translateWind(Session.CurrentTerrace.ActualWind0DirEn+'')
		);
		$('#humi h1').html(fixString(Session.CurrentTerrace.ActualTh0HumRel));
		$('#terrace_update_time').html(timeToSmallTime(fixString(Session.CurrentTerrace.ActualSunsetStandardLocal)));
	}
	Cufon.replace('#terras_header h1', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#terras_header h2', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#terras_data_holder span', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#terrace_update h4', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#terrace_update h3 span', { fontFamily: 'Myriad Pro' });

//SUN ICON
	$('#terras_graph_holder').ifixpng();
	$('#sun_icon_terras').ifixpng();
	
	hideLoader();
}
function updateTerraceWeatherInfo(result)
{
	log('UPDATE TERRACE WEATHER INFO');
	log(result);
	genGoogleGraphTop(result.Value.SunMinutes,		'#terras_graph_top');
	genGoogleGraphBottom(result.Value.SunMinutes,	'#terras_graph_bottom');
	
	
	$('#terrace_temp h1').empty();
	$('#terrace_temp h1').html(result.Value.SunMinutes.SunMinutesLeft);

	
	$('#terras_min_sun_today h1').empty();
	$('#terras_min_sun_today h1').html(result.Value.SunMinutes.SunMinutesTotal);

	$('#terras_min_to_go h1').empty();
	$('#terras_min_to_go h1').html(result.Value.SunMinutes.SunMinutesLeft);

	$('#terras_min_past h1').empty();
	$('#terras_min_past h1').html(result.Value.SunMinutes.SunMinutesNow);


	ts= result.Value.SunMinutes.SunPercentage;
	$('#terras_sun_values #sunValue').empty();
	$('#terras_sun_values #sunValue').html(ts+'%');
	
	$('#terras_sun_values #sunValue1').addClass('sunValueOff');
	$('#terras_sun_values #sunValue2').addClass('sunValueOff');
	$('#terras_sun_values #sunValue3').addClass('sunValueOff');
	$('#terras_sun_values #sunValue4').addClass('sunValueOff');
	
	if (ts>25) $('#terras_sun_values #sunValue1').attr('class','sunValueOn');
	if (ts>50) $('#terras_sun_values #sunValue2').attr('class','sunValueOn');
	if (ts>75) $('#terras_sun_values #sunValue3').attr('class','sunValueOn');
	if (ts>90) $('#terras_sun_values #sunValue3').attr('class','sunValueOn');

	terraceWeather	= getActualWeatherObject(result.Value.NearestTerrace.CalculatedSolar, result.Value.NearestTerrace.ActualLunarPhaseSegment);
//alert(terraceWeather.Image);
//	Level	= getSolarLevel(result.AverageSolar);
// alert(terraceWeather.Text);
	$('#sun_icon_terras').attr('src','./'+terraceWeather.Image);
	$('#terras_actual_weather h3').html(terraceWeather.Text+'<br />'+fixString(Session.CurrentTerrace.ActualThTempC) +'°');
	
	
	Cufon.replace('#terras_panes h3', { fontFamily: 'Myriad Pro' });
	Cufon.replace('#terras_panes h1', { fontFamily: 'Myriad Pro' });

	$('#terras_actual_weather').ifixpng();
	$('#sun_icon_terras').ifixpng();
//sun_icon_terras
	
	TerraceShowing	= false;
}

function updateActualWeatherInfo()
{
//	Level=()Session.Weather.AverageSolar
	
//	Level	= 0;
	$('#actual_weather_info h4').empty();
	$('#actual_weather_info h1').empty();

		
	if (Session.IsDay)
	{
		$('#actual_weather_info h1').html('Zonsituatie');
	} else {
		$('#actual_weather_info h1').html('&nbsp;');
	}
	weatherObj	= getActualWeatherObject(Session.Weather.CalculatedSolar,Session.Weather.HighestSolarTerrace.ActualLunarPhaseSegment);
	$('#actual_weather_info h4').html(rObj.Text);
	$('#actual_sun_icon').attr('src',weatherObj.Image);
	$('#actual_weather_info img').ifixpng();
	hideLoader();
}
function getActualWeatherObject(tSolar,tLunar)
{
	rObj		= new Object();
//	alert(tSolar);
	if (Session.IsDay)
	{
		rObj.Level	= getSolarLevel(tSolar);
		rObj.Text	= SolarText[rObj.Level];
		rObj.Image	= 'images/weather_symbols/sun_'+rObj.Level+'.png';
	} else {
		if (tLunar==null) tLunar=0;
		rObj.Level	= tLunar;
		rObj.Text	= 'Nacht';
		rObj.Image	= 'images/weather_symbols/moon_'+rObj.Level+'.png';
	}
	return(rObj);
}

function doUpdateInterval()
{
	startSession('startSessionFinish');
	loadOverlay('overlayLoaded');
}

function saveCurrentTerrace()
{
	setFavoriteTerrace(Session.CurrentTerrace.TerraceId);
}

function getFavoriteTerrace(guid)
{
	getTerrace('updateFavoriteTerrace',Session.Variables.FavoriteGuid);
}
function setFavoriteTerrace(guid)
{
	log('SET FAVORITE TERRACE: '+guid)
	Session.Variables.FavoriteGuid		= guid;
	setVariable('setFavoriteDone', 'FavoriteGuid', guid)
	getTerrace('updateFavoriteTerrace',Session.Variables.FavoriteGuid);
}

function setFavoriteDone()
{
	log('VAR FavoriteGuid SET');
	hideLoader();
}

function updateFavoriteTerrace(result)
{
	log(result);
	name 			= result.Value.Name;
	city 			= result.Value.City;
	guid 			= result.Value.TerraceId;
	
	$('div#favorite_location').fadeIn(500);
	$('div#favorite_location h4').empty();
	$('div#favorite_location h4').html('<a href="#/terras/'+guid+'" onclick="SWFAddress.setValue(this.rel); this.blur(); return false;" rel="/terras/'+guid+'">'+name+', '+city+'&nbsp;<img src="images/blt_black.gif"></a>');
	Cufon.replace('div#favorite_location h4', { fontFamily: 'Myriad Pro' });
}


function hidePreloader()
{
	setTimeout(doHidePreloader,250);
}

function doHidePreloader()
{
	$("#preloader").fadeOut(500);
}

function variableSet(result)
{
	log("VARIABLE SET:");
	log(result);
}
function overlayLoaded(result)
{
	log(result);
	if (result.Value[0]==undefined)
	{
		delete Session.PicturePointer	;
		Session.isDay		= false;
		alert('OVERLAY NOT LOADED');
	} else {
		Session.PicturePointer	= result.Value[0].PicturePointer;
	}
	log('OVERLAY LOADED:' + Session.PicturePointer);
	displayOverlay();
}

function displayOverlay()
{
	if (Session.IsDay)
	{
		log('DISPLAY DAY');
		overlayWide.setImage(Session.PicturePointer);
		overlayWide.show();
		overlayNight.hide();
	}	else { 
		log('DISPLAY NIGHT');
		overlayWide.hide();
		overlayNight.show();
	}
	hideLoader();
	
}

/* SEARCH FUNCTIONS */

function searchTerrace(keyWord)
{
	searchKey		= keyWord;
	$('#search_list').empty();
	$('#search_list').append('<div id="search_list_item">Op zoek naar: '+searchKey+'</div>')
	if(keyWord.length <= 2) {
		hideSearch();
	} else {
		showSearch();
		clearTimeout(search_timeout);
		search_timeout = setTimeout(function() {
			search_timeout = undefined;
			doSearch('searchFinish', keyWord);
		}, 750);
	}
}

function searchFinish(result)  
{
	var txt='';
	$('#search_list').empty();
	log(result);
	$.each(result.Value.Terraces, function(i,Value)
	{
		tClass ='search_hoverit';
		if (Value.WeatherStationId != null) tClass = 'search_hoverit_ws'
	
		picture = Value.ImageUrl+'_lo';
		if (Value.ImageUrl.length==0) picture = 'placeholder_lo';
		txt				+='<div id="search_list_item" class="'+tClass+'" onclick="hideSearch();SWFAddress.setValue('+"'/terras/"+Value.TerraceId;
		txt				+="'"+');return false;">';
		txt				+='<img src="images/terrassen/'+picture+'.jpg" />';
		txt				+='<span id="search_info_holder">';
		txt				+='<h5>'+Value.Name+"</h5>\n";
		txt				+='<h6>'+Value.Street+' '+Value.HouseNumber+' '+Value.HouseNumberExt+"</h6>\n";
		txt				+='<h6>'+Value.Zipcode+' '+Value.City+"</h6>\n";
		txt				+='</span>';
		txt				+='</div>';
	});
	if (txt.length==0) txt = '<div id="search_list_item">niets gevonden</div>';
	$('#search_list').append(txt);
	$(".search_hoverit").hover( function() {
		$(this).css('background-color', '#f5f5f5');
	}, function() {
		$(this).css('background-color', '');
	});
	$(".search_hoverit_ws").hover( function() {
		$(this).css('background-color', '#ffc600');
	}, function() {
		$(this).css('background-color', '');
	});
	$('#sp-search-spinner').fadeOut(500);
	hideLoader();
}

/* GENERIC INTERFACE FUNCTIONS */
function clearSearch(){
	if (InitSearchText	== $('#search').val()) $('#search').val("");
	if (search_timeout != undefined) {
		clearTimeout(search_timeout);
	}

}

function hideSearch()
{
	if ($('#search_result').is(':visible'))
	{
		$('#sp-search-spinner').fadeOut(500);
		$('#search_holder').fadeOut(500);
	}
}

function showSearch()
{
	if ($('#search_result').not(':visible'))
	{
		$('#sp-search-spinner').fadeIn(500);
		$('#search_holder').fadeIn(500);
	}
}



function gotoHome()
{
	$('#zonneradar_slider').slider('option', 'value', 7);
	zoomMap();
}


function genForecastTable(result)
{
	txt		= '<table border="0" cellpadding="0" cellspacing="0">';
	tItem=0;
	var ts	=100;
	$.each(result, function(i,Value)
	{
		if(tItem==0)	ts= Value.SunDuration;
		WeatherForecast[tItem]				= new Object();
		WeatherForecast[tItem].date			= dateToDay(Value.Date)
		WeatherForecast[tItem].max 			= Value.MaxTemperature+'°';
		WeatherForecast[tItem].min 			= Value.MinTemperature+'°';
		WeatherForecast[tItem].rain			= Value.PrecipitationProbability+'%';
		WeatherForecast[tItem].sunhours		= Value.SunDuration+'%';
		WeatherForecast[tItem].wind			= Value.WindPower;
		tItem++;
	});
	txt		+=	displayRow("",	"date", "th","");
	txt		+=	displayRow("kans op zon",	"sunhours","td"," yellow");
	txt		+=	displayRow("neerslagkans","rain","td","");
	txt		+=	displayRow("max.temp",	"max","td","");
	txt		+=	displayRow("min.temp",	"min","td","");
//	txt		+=	displayRow("windsterkte",		"wind","td","");
	txt		+=	"</table>";
	$('div#forecastWeerOnline').empty();
	$('div#forecastWeerOnline').append(txt);
	$('table').ifixpng();
	
	$('#sun_change h1').empty();
	$('#sun_change h1').html(WeatherForecast[0].sunhours);
	
	$('#rain_change h1').empty();
	$('#rain_change h1').html(WeatherForecast[0].rain);

	$('#temp_max h1').empty();
	$('#temp_max h1').html(WeatherForecast[0].max);
	
	$('#temp_min h1').empty();
	$('#temp_min h1').html(WeatherForecast[0].min);

	
	$('#nl_sun_values #sunValue1').addClass('sunValueOff');
	$('#nl_sun_values #sunValue2').addClass('sunValueOff');
	$('#nl_sun_values #sunValue3').addClass('sunValueOff');
	$('#nl_sun_values #sunValue4').addClass('sunValueOff');
}

function tilesLoaded()
{
//	$('div#loader').fadeOut(500);
}

function displayRow(title,field, type, cls)
{
	tItems	= 6;
	tRow		= "<tr><"+type+' class="forecast_left">'+title+"</"+type+">";
	for(t=0;t<=tItems-1;t++)
	{
		if (t%2 == 0)
		{
			tRow		+= "<"+type+' class="forecast_even'+cls+'">'+WeatherForecast[t][field]+"</"+type+">";
		} else {
			tRow		+= "<"+type+' class="forecast_odd'+cls+'">'+WeatherForecast[t][field]+"</"+type+">";
		}
	}
	tRow 	+= "</tr>";
	return(tRow);
}

function genGoogleGraphBottom(sData,selector){
	
	graphExist=false;
	if ($(selector).attr('class')=='hasGChart') graphExist=true;;
	log('GENERATE CHART SELECTOR:'+ selector + 'Exists: '+graphExist);

	var SunData		= new Array([],[],[],[],[],[]);
	var barHeight	= 20;
	$.each(sData.SunValues.Series, function(i,tItem)
	{
		myStack 	= defineTreshold(tItem);
		for(var t=0;t<6;t++) SunData[t].push(Math.round(myStack[t]*barHeight));
	})
	if(graphExist)
	{
		options = {series: [
					$.gchart.series('1', SunData[0], '#3C0100'), 
					$.gchart.series('2', SunData[1], '#7E0B03'), 
					$.gchart.series('3', SunData[2], '#B74F12')
				]};
		$(selector).gchart('change',options);
	} else {
		bgColor		= 'transparent';
		if (isIE6()) bgColor= '#0b1521';
		$(selector).gchart({type: 'barVert', 
			series: [	
					$.gchart.series('1', SunData[0], '#3C0100'), 
					$.gchart.series('2', SunData[1], '#7E0B03'), 
					$.gchart.series('3', SunData[2], '#B74F12')
				],
			width:250, height:40, margins:0,legend:'',
			onLoad:graphLoaded,
			barWidth: 2, barSpacing: 0, 
			backgroundColor:bgColor,
			chart:'transparent'
		});
	}
}
function genGoogleGraphTop(sData,selector){
	
	graphExist=false;
	if ($(selector).attr('class')=='hasGChart') graphExist=true;;
	log('GENERATE CHART SELECTOR:'+ selector + 'Exists: '+graphExist);

	var SunData		= new Array([],[],[],[],[],[]);
	var barHeight	= 20;
	$.each(sData.SunValues.Series, function(i,tItem)
	{
		myStack 	= defineTreshold(tItem);
		for(var t=0;t<6;t++) SunData[t].push(Math.round(myStack[t]*barHeight));
	})
	if(graphExist)
	{
		options = {series: [
					$.gchart.series('1', SunData[3], '#CF7913'),
					$.gchart.series('2', SunData[4], '#FFCC00'),
					$.gchart.series('3', SunData[5], '#FFFF00')
				]};
		$(selector).gchart('change',options);
	} else {
		bgColor		= 'transparent';
		if (isIE6()) bgColor= '#0b1521';
		$(selector).gchart({type: 'barVert', 
			series: [	
					$.gchart.series('1', SunData[3], '#CF7913'),
					$.gchart.series('2', SunData[4], '#FFCC00'),
					$.gchart.series('3', SunData[5], '#FFFF00')
				],
			width:250, height:45, margins:0,legend:'',
			onLoad:graphLoaded,
			barWidth: 2, barSpacing: 0, 
			backgroundColor:bgColor,
			chart:'transparent'
		});
	}
}

function graphLoaded()
{
	log('GRAPH LOADED')
//	$('#google_graph').ifixpng();
	
}

function defineTreshold(SunVal)
{
	var SunStack	= [0,0,0,0,0,0]
	if (SunVal>1000) SunVal=1000;
	if (SunVal<0) SunVal=1000;
	if  (SunVal<=1000 &&  SunVal>=833) 
	{
		var top		= (SunVal-833)/100;
		SunStack	= [1.67,1.67,1.67,1.67,1.67,top];
	} else if(SunVal<=833 &&  SunVal>=666) {
		var top		= (SunVal-666)/100;
		SunStack	= [1.67,1.67,1.67,1.67,top,0];
	} else if(SunVal<=666 &&  SunVal>=500) {
		var top		= (SunVal-500)/100;
		SunStack	= [1.67,1.67,1.67,top,0 , 0];
	} else if(SunVal<=500 &&  SunVal>=333) {
		var top		= (SunVal-333)/100;
		SunStack	= [1.67,1.67,top ,0, 0, 0];
	} else if(SunVal<=333 &&  SunVal>=166) {
		var top		= (SunVal-166)/100;
		SunStack	= [1.67,top ,0 ,0, 0, 0];
	} else if(SunVal<=166) {
		var top		= (SunVal)/100;
		SunStack	= [top,0 ,0 ,0, 0, 0];
	}
	return(SunStack)
}

function dateToDay(dt)
{
	days		= Array('Zo','Ma','Di','Wo','Do','Vr','Za');
	sTime		= dt.split('T');
	sDate		= sTime[0].split('-');
	tDate		= new Date();
	tDate.setYear(sDate[0]);
	tDate.setMonth(sDate[1]-1);
	tDate.setDate(sDate[2]);

	return (days[tDate.getDay()]);
}
function isIE6()
{
	var ie6=false;
	if($.browser.msie==true && $.browser.version < 7 ) ie6=true;
	return ie6;
}
function dateToTime(dt)
{
	pTimeStamp				= dt.split('T');
	pTime					= pTimeStamp[1].split(':');
	return (pTime[0]+':'+pTime[1]);
}
function timeToSmallTime(dt)
{
	pTime					= pTimeStamp[1].split(':');
	return (pTime[0]+':'+pTime[1]);
}

function gotoWieckse()
{
	window.location = "http://www.wieckse.nl/";
}

function showLoader()
{
	if (TimerLoader != undefined)
	{
		clearTimeout(TimerLoader);
		TimerLoader	= undefined;
	}
	TimerLoader		= setTimeout(doShowLoader,400);
	
	clearTimeout(TimerLoaderBU);
	TimerLoaderBU	= setTimeout(hideLoader,5000);
//	$('div#loader_small').fadeIn(500)
}
function doShowLoader()
{
	clearTimeout(TimerLoader);
	TimerLoader	= undefined;
	$('div#loader_small').fadeIn(500)
}

function hideLoader()
{
	if (TimerLoader != undefined)
	{
		clearTimeout(TimerLoader);
		TimerLoader	= undefined;
	}
	$('div#loader_small').fadeOut(500)
}

function loadPanelHtml(fName)
{
	$("div#panels_content").empty();
	$("div#panels_content").fadeIn(500).load(fName,'',loadPanelHtmlFinished);
}

function loadPanelHtmlFinished(data)
{
	$('div#panels_content_holder_scroll').animate({scrollTop: scrollTo}, 2000);
	Cufon.replace('h6', { fontFamily: 'DekodisplayBold' });
	Cufon.replace('h5', { fontFamily: 'DekodisplayBold' });
//	Cufon.replace('h3', { fontFamily: 'Myriad Pro' });
}

function showPanel(fName,scrollTo)
{
	$("div#panels").fadeIn(500);
	loadPanelHtml(fName);
}

function closePanel()
{
	$("div#panels").fadeOut(500);
}

function convertVariablesToObject(obj)
{
	result	= new Object();
	$.each(obj, function(i,Item)
	{
		if(Item.Value=='true') Item.Value=true;
		if(Item.Value=='false') Item.Value=false;
		result[Item.Name]= Item.Value
	});	
	log(result);
	return(result);
}


function safDone(result)
{
	log("SAF SEND: ");
	$('#infowindow_terrace_sendafriend').empty();
	$('#infowindow_terrace_sendafriend').append('<br><br><br><br><br><br><br><h4>Bericht is verzonden</h4');
	hideLoader();
	log(result);
}

function checkForm()
{
	var error		=	 0;

	naam_s		= 	$("input:#fldNameSender").val();
	email_s		= 	$("input:#fldEmailSender").val();
	naam_f		=	$("input:#fldNameReceiver").val();
	email_f		=	$("input:#fldEmailReceiver").val();
	var errormsg		=	"";
	if (! isValidField(naam_s))
	{
		error++;
		errormsg	+= "Jouw naam is niet juist<br> ";
	}	
	if (! isValidEmail(email_s))
	{
		error++;
		errormsg	+= "Jouw e-mailadres is niet juist<br> ";
	}	
	if (! isValidField(naam_f))
	{
		error++;
		errormsg	+= "Naam ontvanger is niet juist<br> ";
	}	
	if (! isValidEmail(email_f))
	{
		error++;
		errormsg	+= "E-mailadres ontvanger is niet juist<br> ";
	}	
	$('#error').empty();
	$('#error').append(errormsg);

	if (error==0) 
	{
		$('#preview').fadeIn(500);

		$('#preview_from').empty();
		$('#preview_from').html(naam_s);
		
		$('#preview_to').empty();
		$('#preview_to').html(naam_f);
		
		$('#preview_name').empty();
		$('#preview_name').html(naam_f);

		$('#preview_sender').empty();
		$('#preview_sender').html(naam_s);

		$('#preview_terrace').empty();
		$('#preview_terrace').html(currentGuid());
		
	} else {
		return false;
	}
}
function doSAF(){
//	alert("DO THE SEND");
	doSendAFriend('safDone',naam_f,email_f,naam_s,email_s,currentGuid());
}

function isValidField(str)
{
	ret= true;
	if (str.length<=0) ret= false;
	return ret;
}
function isValidEmail(str) {
   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);
}
function getSolarLevel(solar)
{
	if (solar==null) solar=0;
	if (solar.length==0) solar=0;
	
	level 	= 1;
	tresh	= 166
	if(parseInt(solar)<(tresh*5)){
		level 	= 2;
	}
	if(parseInt(solar)<(tresh*4)){
		level 	= 3;
	}
	if(parseInt(solar)<(tresh*3)){
		level 	= 4;
	}
	if(parseInt(solar)<(tresh*2)){
		level 	= 5;
	}
	if(parseInt(solar)<tresh){
		level = 6;
	}
	if(parseInt(solar)==0) 	{ 
		level 	= 7;
	}
	return level;
}

function showTerrace(guid)
{

	getTerrace('zoomToTerrace',guid);
}
function zoomToTerrace(result)
{
	log("UPDATE ZOOM TO TERRACE:" + result.Value.Name);
	log(result);
	Session.CurrentTerraceShown	= false;
	Session.CurrentTerrace		= result.Value;
	updateTerrace();
	if (result.Value.ZoomLevel==null) result.Value.ZoomLevel=0;
	TerraceShowing	= true;
	zoomMapTo(result.Value.Latitude, result.Value.Longitude, result.Value.ZoomLevel, result.Value.TerraceId);
	hideLoader();
}
function updateZoomDisplay()
{
	tZoom	= parseInt($('#zonneradar_slider').slider('value'));

	log('----ZOOM IT');	
	hideSearch();
	if (TerraceShowing)
	{
		$("#panel_terras").show();
//		$("#panel_terras").fadeIn(500);
		$("#panel_nl").fadeOut(500);
	} else {
		$("#panel_terras").fadeOut(500);
		$("#panel_nl").fadeIn(500);
		clearTimeout(TimerNLUpdate);
		TimerNLUpdate	= setTimeout(doUpdateNLWeather,TimerNLUpdateTimeOut);
	}
	
	if (tZoom==7) 
	{
		map.disableDragging(); 
		tCenter	= map.getCenter();
		if (tCenter!=centerWide) map.setCenter(centerWide, 7);
		$("#goto_home").fadeOut(500);
		$("#actual_weather_info").fadeIn(500);
		$('input[name=checkmarker]').attr('disabled',false);
		if ($('input[name=checkmarker]').attr('checked') != Session.Variables.MarkersChecked)
		{
			$('input[name=checkmarker]').attr('checked',Session.Variables.MarkersChecked);
			showMarkers(Session.Variables.MarkersChecked);
		}
	} else {
		map.enableDragging(); 
		$("#goto_home").fadeIn(500);
		$("#actual_weather_info").fadeOut(500);
		$("#actual_weather_info").fadeOut(500);
		if ($('input[name=checkmarker]').attr('checked')==false)
		{
			$('input[name=checkmarker]').attr('checked',true);
			showMarkers(true);
		}			
		
		$('input[name=checkmarker]').attr('disabled',true);
/*		if (nl_scroller !=undefined) 
		{
			nl_scroller.stop();
		}
*/		
	}
}
function toggleAnimation()
{
	if (AnimRunning){
		stopAnimation();
	} else {
		loadOverlayAnimation();
	}
}

function openWebsite(url)
{
	window_options = "menubar=1,resizable=1,width=1024,height=550,scrollbars=yes";
	window.open ('http://'+url, "website",window_options); 
}

function postToSocialMedia(smedia,type)
{
	socialType		= type;
	window_options = "menubar=1,resizable=1,width=1024,height=550,scrollbars=yes";
	
	if (smedia=='twitter')
	{
		txt="%23Zonneradar geeft aan: er zijn "+Session.Weather.SunMinutes.SunMinutesTotal+
		" %23zonneminuten vandaag - Vind je terras in de zon, ga naar http://zonneradar.nl";
		window.open ("http://twitter.com/home?status="+txt,
				"window",window_options); 
	} else if (smedia=='hyves') {
		txt="Als de zon ook maar even schijnt, zijn we er snel bij om een plekje in de zon te zoeken. Waar dan ook. Op een zonovergoten terras of iedere andere zonnige plek waar je heerlijk van een Wieckse kan genieten. Vind je plek in de zon en geniet maximaal van jouw zonneminuten, ga naar zonneradar.nl ";
		window.open ("http://www.hyves.nl/profilemanage/add/tips/?name=www.zonneradar.nl&text="+txt+"&type=12&rating=5&pageid=AAX1F7AE3WO4W4SOC", 
				"window",window_options); 
	} else if (smedia=='facebook') {
		window.open ("http://www.facebook.com/sharer.php?u=http%3A%2F%2Fwww.zonneradar.nl",
				"window",window_options); 
	} else if (smedia=='email') {
			showPanel("sendafriend.html");
	} else if (smedia=='embed') {
		if(type=='tr') 
		{
			showPanel("widget_terras_op_jouw_site.html");
		} else if(type=='ft') {
			showPanel("widget_terras_op_jouw_site.html");
		} else {
			showPanel("widget_op_jouw_site.html");
		}
	} else{
		alert(smedia+' is not implemented yet');
	}
	
}
function translateWind(st)
{
	if(st==null) st="";
	st = st.replace(/S/g, 'Z');	
	st = st.replace(/E/g, 'O');
	return st;	
}
function fixString(st)
{
	if (st==null) 		st="-";
	if (st==undefined) 	st="-";
	return st;
}

SWFAddress.onChange = function() {  
	log('SWF ADDRESS:' + SWFAddress.getPathNames() + " :: "+ SWFAddress.getPath());
	var path 	= SWFAddress.getPathNames();
	if (initPath.length==0)	initPath = SWFAddress.getPath();
	if (path[0]=='popup')
	{
		if (path[2] != undefined)
		{
			scrollTo = path[2];
		} else{
			scrollTo = 0;
		}
		showPanel(path[1]+".html");
	} 
	if (path[0]=='zoom')
	{
		SWFAddress.setValue("zoom");
		if (path[1]=='nederland') gotoHome();
		if (path[1]=='in') zoomMapIn();
		if (path[1]=='out') zoomMapOut();
	}
	if (path[0]=='share')
	{
		postToSocialMedia(path[1],path[2],path[3]);
	}	
	if (path[0]=='terras')
	{
		if (path[1]=='zonnigste')
		{
			showTerrace(Session.Weather.HighestSolarTerrace.TerraceId);
		} else if (path[1]=='huidig') {
			// Session.CurrentTerrace.Homepage
			openWebsite(Session.CurrentTerrace.Homepage);
//			showTerrace(Session.CurrentTerrace.TerraceId);
		} else {
			if(getMarkerIdFromGuid(path[3])!=-1) 
			{
				showTerrace(path[3]); //DON'T LOAD IF MARKER IS NOT ON MAP
			} else if (getMarkerIdFromGuid(path[1])!=-1) {
				showTerrace(path[1]); //DON'T LOAD IF MARKER IS NOT ON MAP
			} 
		}
		SWFAddress.setValue("");
	}
	if (path[0]=='GoToWieckse')
	{
		gotoWieckse();
	}
}
function currentGuid()
{
	if (socialType=='tr') 
	{
		Guid	= Session.CurrentTerrace.TerraceId;
	} else {
		Guid	= Session.HighestSolarTerrace.TerraceId;
	}
	return Guid
}

function doSend()
{
	if ($('input[name=option1]:checked').val()=='option1')
	{
		var email	 		= "info@zonneradar.nl"; 
		var subject 		= "Ik heb een vraag"; 
	} else if ($('input[name=option1]:checked').val()=='option2'){
		var email	 		= "info@zonneradar.nl"; 
		var subject 		= "Ik wil mijn mening geven"; 
		
	} else{
		var email	 		= "info@zonneradar.nl"; 
		var subject 		= "Ik wil mijn terras ook op zonneradar.nl"; 
	}
	var body_message	= "";
	var mailto_link 	= 'mailto:'+email+'?subject='+subject+'&body='+body_message;
	win = window.open(mailto_link,'emailWindow');
	if (win && win.open &&!win.closed) win.close();
}


function displayResult(res)
{
	log(res);
}
function log(txt){
//		if (DEBUG) alert(txt);
	if (window.console != undefined) {
		if (DEBUG) console.log(txt);
	}
}
