/*
 * Zonneradar Service functions
 *
 * Copyright (c) Lab1111 Amsterdam for Wieckse Zonneradar
 * By Remko Posthuma
 *
 * http://lab1111.com
*/

/*
HTTP GET: /Initialize/
HTTP GET: /Initialize/{sessionId}
HTTP GET: /ActualWeather/?neLat={startLatitude}&neLon={startLongitude}&swLat={endLatitude}&swLon={swLongitude}
HTTP GET: /CurrentHighestSolarTerrace/
HTTP GET: /DayOrNight/
HTTP GET: /DayOrNight/{terraceId}/
HTTP GET: /StartSession/
HTTP GET: /GetSessionVariables/{sessionId}/
HTTP GET: /SetSessionVariable/{sessionId}/{varName}/?value={varValue}
HTTP GET: /GetSessionVariable/{sessionId}/{varName}/
HTTP GET: /EndSession/{sessionId}/
HTTP GET: /CalculateCorrection/{solarRadiation}/
HTTP GET: /CalculateCorrection/{solarRadiation}/{date}
HTTP GET: /GetEmbedCode/{terraceId}/
HTTP GET: /GetLastWeatherUpdate/
HTTP GET: /GetTerrace/{terraceId}/
HTTP GET: /GetTerraces/
HTTP GET: /IpAddress/{ipAddress}/
HTTP GET: /OverlayPicture/{source}/{actual}/{resolution}
HTTP GET: /search/?q={searchKey} – NOTE the “?q=” we need it to ensure proper search key passing
HTTP GET: /SendAFriend/?FriendName={friendName}&FriendEmail={friendEmail}&UserName={userName}&UserEmail={userEmail}&TerraceId={terraceId}
HTTP GET: /ServerTime/
HTTP GET: /Version/
HTTP GET: /WeatherOnline/
*/

var local					= true;
var url						= 'proxy.php';
var url						= 'http://wwzr.virtual-affairs.nl/PublicServiceJson.svc';
var url						= SERVICE_URL;
var json					= '{"request":null}';
var search_timeout 			= undefined;
var search_timeout_time 	= 750;

var AfterLoadData;
var ServiceMethod;
var ServiceParams;
var ServiceUrl;
var Session					= new Object();
var SessionVariables		= new Array("FavoriteGuid", "UitlegDone","MarkersChecked" );

/* LOADER FUNCTIONS */
function startSession(func)
{
	ServiceMethod	= 'Initialize';
	ServiceParams	= '';
	if ($.cookie("SessionId")!=null) ServiceParams	= ''+$.cookie("SessionId")+'';
	AfterLoadData	= "startSessionFinish";
	ServiceUrl		= generateUrl(ServiceMethod,ServiceParams,AfterLoadData);
	loadJSON(ServiceUrl);
}


function setVariable(func, varname, value)
{
// /SetSessionVariable/{sessionId}/{varName}/?value={varValue}
	ServiceMethod		= 'SetSessionVariable';
	ServiceParams		= '/'+Session.SessionId+'/'+varname+'/?value='+value;
	AfterLoadData		= func;
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams,AfterLoadData);
	loadJSON(ServiceUrl);
}

function doSearch(func,q)
{
	ServiceMethod		= 'search';
	ServiceParams		= '/?q='+q;
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData		= func;
	
	loadJSON(ServiceUrl);
}

function getTerraces(func)
{
	ServiceMethod		= 'GetTerraces';
	ServiceParams		= '/?slat=0&slon=0&elat=100&elon=100';
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData		= func;
	
	loadJSON(ServiceUrl);
}

function getTerrace(func,guid)
{
	ServiceMethod		= 'GetTerrace';
	ServiceParams		= '/'+guid+'/';
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData		= func;

	loadJSON(ServiceUrl);
}

function getActualWeather(func,neLat,neLon,swLat,swLon)
{
	ServiceMethod		= 'ActualWeather';
	ServiceParams		= '/?neLat='+neLat+'&neLon='+neLon+'&swLat='+swLat+'&swLon='+swLon;
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData		= func;
	
	loadJSON(ServiceUrl);
}
function doSendAFriend(func,fName,fEmail,uName,uEmail,guid)
{
	
	ServiceMethod		= 'SendAFriend';
	ServiceParams		= '/?FriendName='+fName+'&FriendEmail='+fEmail+'&UserName='+uName+'&UserEmail='+uEmail+'&TerraceId='+guid;
	ServiceUrl			= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData		= func;
	
	loadJSON(ServiceUrl);
} 
function getForecast(func)
{
	$.ajax({ type: "GET",
		url: "xml/zonneradar_verwachting.xml",
		dataType: "xml",
		processData: true,
		success: function(xml) { eval(func)(xml); },
		error:AjaxFailed
	});

}
function getWeather(func)
{
	$.ajax({ type: "GET",
		url: "xml/zonminuten.xml",
		dataType: "xml",
		processData: true,
		success: function(xml) { eval(func)(xml); },
		error:AjaxFailed
	});

}
function getWeather(func)
{
	$.ajax({ type: "GET",
		url: "xml/zonminuten.xml",
		dataType: "xml",
		processData: true,
		success: function(xml) { eval(func)(xml); },
		error:AjaxFailed
	});

}


function loadOverlay(func,actual){
	log("LOAD OVERLAY");
	showLoader();
// /OverlayPicture/{source}/{actual}/{resolution}
	if(actual == undefined) actual="0";
	ServiceMethod	= 'OverlayPicture';
	ServiceParams	= '/4/'+actual+'/low';
	ServiceUrl		= generateUrl(ServiceMethod,ServiceParams);
	AfterLoadData	= func;
	
	loadJSON(ServiceUrl);
}


/* GENERIC LOAD FUNCTIONS */
function loadJSON(json)
{
	log("LOADING JSON GET:" + ServiceUrl);

	ServiceUrl	= ServiceUrl;
	showLoader();
	
	$.ajax({  
		type:'GET',
		dataType: 'jsonp',
		url:ServiceUrl,
		jsonpCallback:	AfterLoadData,
		success:AjaxSucceeded, 
		error:AjaxFailed
	});
//		contentType:"application/json",  
}
function loadJSONPost(json)
{
	log("LOADING JSON POST:" + ServiceUrl);
	$.getJSON(ServiceUrl,"TEST",
	    function(data){
	        alert('HALLO');
	  	}
	 );
	  	
	
/*	
	$.ajax({  
		type:'POST',
		dataType: 'jsonp',
		data: '"mijn value"', 
		processData: false,
		contentType: 'application/json', 
		url:ServiceUrl,
		jsonpCallback:	AfterLoadData,
		success:AjaxSucceeded, 
		error:AjaxFailed
	});
*/
//		contentType:"application/json",  
}


function generateUrl(m,p)
{
//	return(url+'/'+m+'/'+p+'?m='+c);
	var ac= new Date().getTime();

	if (p.indexOf('?')>=0){
//		return(url+'/'+m+p+'&m=?');
		return(url+'/'+m+p+'&ac='+ac+'&m=?');
	} else {
//		return(url+'/'+m+'/'+p+'?m=?');
		return(url+'/'+m+'/'+p+'?ac='+ac+'&m=?');
	}
}

function AjaxSucceeded(result) {
	log('DATA LOAD OK:' + ServiceUrl);
//	log(result);
//	AfterLoadData(result);
}

function AjaxFailed(result) {
	log('DATA LOAD FAILED:' + ServiceUrl);
//	log(result);
}
