
/**
 * Verander de class attribute van de 'weather' en 'runway' divs
 */
function changeShow() {
	var weatherClass = new String($("#weather").attr('class'));
	if(weatherClass == "show"){
		$("#weather").removeClass("show");
		$("#runway").addClass("show");
	} else{
		$("#runway").removeClass("show");
		$("#weather").addClass("show");
	}
	
}

/**
 * Deze functie hoort te worden aangeroepen de eerste keer dat de pagina wordt geladen, terwijl we wachtne op de eerste echte user data.
 */
function setdummySPLData() {
	try{
		var dummySPL = {"time":"12:57", 
					"weather":{"windDirection":"noord","windSpeed":"vrij krachtig","visibility":"goed"}, 
					"runway":{"className":"buitenveldertbaan_l polderbaan_l oostbaan_l kaagbaan_t oostbaan_t","polderbaan":"landingsbaan","oostbaan":"startbaan","kaagbaan":"startbaan","buitenveldertbaan":"landingsbaan","time":"12:57"}};
		setSPL(dummySPL);
	} catch( err ){}
}

/**
 * load baangegevens en weergegevens uit de SPL service en set ze in de html
 */
function loadSPL() {
	//alert("loadSPL. service url  = " +splServiceUrl);
	try{
		$.getJSON(splServiceUrl,
			function(data){
				setSPL(data);
		}); 
	}catch( err ){}
}

/**
 * Zet de baangegevens en weergegevens
 */
function setSPL(data) {
	$("#runwayVisual").attr('class', data.runway.className);
	$("#runwayInformation").html(getRunwayInfoHtml(data));

	var weatherclassName = "direction_" + data.weather.windDirection;
	$("#weatherVisual").attr('class',weatherclassName);	
	//TODO: gebruik onderstaande regel wanneer de SPLService de corerecte data.weather.className teruggeeft.
	//$("#weatherVisual").addClass(data.weather.className);
	$("#weatherInformation").html(getWeatherInfoHtml(data));
}

/**
 * set de <dt> en <dd> elements in de runwayInformation dl, pluse de class van de startbanen
 */
function getRunwayInfoHtml(data) {
	var buffer = new StringBuffer();
	var begin = "<dt>";
	var middel = "</dt><dd>";
	var end = "</dd>";
	var middelAlternative = '</dt><dd class="takeoff">';
	
	buffer.append(begin).append("baangebruik").append(middel).append(data.time).append(end);
	if(data.runway.polderbaan != null){
		buffer.append(begin).append("Polderbaan")
		.append((data.runway.polderbaan != "startbaan") ?middel :middelAlternative)
		.append(data.runway.polderbaan).append(end);
	}
	if(data.runway.zwanenburgbaan != null){
		buffer.append(begin).append("Zwanenburgbaan")
		.append((data.runway.zwanenburgbaan != "startbaan") ?middel :middelAlternative)
		.append(data.runway.zwanenburgbaan).append(end);
	}
	if(data.runway.buitenveldertbaan != null){
		buffer.append(begin).append("Buitenveldertbaan")
		.append((data.runway.buitenveldertbaan != "startbaan") ?middel :middelAlternative)
		.append(data.runway.buitenveldertbaan).append(end);
	}
	if(data.runway.kaagbaan != null){
		buffer.append(begin).append("Kaagbaan")
		.append((data.runway.kaagbaan != "startbaan") ?middel :middelAlternative)
		.append(data.runway.kaagbaan).append(end);
	}
	if(data.runway.aalsmeerbaan != null){
		buffer.append(begin).append("Aalsmeerbaan")
		.append((data.runway.aalsmeerbaan != "startbaan") ?middel :middelAlternative)
		.append(data.runway.aalsmeerbaan).append(end);
	}	
	return buffer.toString();	 
}

 /**
  * set de <dt> en <dd> elements in de weatherInformation dl
  */
function getWeatherInfoHtml(data) {
	var buffer = new StringBuffer();
	var begin = "<dt>";
	var middel = "</dt><dd>";
	var end = "</dd>";
	buffer.append(begin).append("Schiphol Amsterdam").append(middel).append(data.time).append(end);
	buffer.append(begin).append("Windrichting").append(middel).append(data.weather.windDirection).append(end);
	buffer.append(begin).append("Windsnelheid").append(middel).append(data.weather.windSpeed).append(end);
	buffer.append(begin).append("Zicht").append(middel).append(data.weather.visibility).append(end);
	return buffer.toString();	 
}

/**
 * Aanroep naar de Kwest inControl service. Kwest update dan de gegevens data.
 */
function addKwestEvent() {
	try{
		if(isFilled(sessionId) && isFilled(kwestCode) && isFilled(inControlUrl)){
			var jsonParam = "?jsoncallback=?"
			var params = {format: "json"}
			$.getJSON(inControlUrl +"/" +kwestCode +"/" +sessionId +jsonParam,
				params,	
				function(data){
					// do niets, de inControl % wordt geupdated. 
			 });
		}
	} catch( err ){
			//alert("call naar getJson failed: " +err);
	}
}


/**
 * Update controlbar gegevens van de gebruiker. Deze functie wordt aangeroepen wanneer de pagina wordt geladen. 
 * Hij moet de webservice aanroepen om de gebruikergegevens op te halen.
 */
function updateUserData() {
	try{
		if(isFilled(sessionId)){		
			updateUserDatatWithJSonCall(sessionId);
		}
		
		if(getURLParam('logoutAction') == 'true'){
		
			if(window.location.href.indexOf("/site") > 0) {
				window.location="/site/mijngegevens";
			} else {
				window.location="/mijngegevens";
			}
		}
		
	}catch( err ){
		//alert("call naar updateUserData() failed: " +err);
	}
}


/**
 * Aanroep naar de Kwest user data service en update gegevens.
 */
function updateUserDatatWithJSonCall(sessionId) {
	var jsonParam = "?jsoncallback=?"
	var params = {format: "json"}
	$.getJSON(userDataUrl +"/" +sessionId +jsonParam,
		params,	
		function(data){
			setUserData(data);
			changeLoginLinks(data);
    });
}


function changeLoginLinks(user) {
	if (user.firstName != null) {
		$("a#login").removeClass("show");
		$("a#logout").addClass("show");
		$("a#hyves").addClass("show");
	} else {
		$("a#login").addClass("show");
		$("a#logout").removeClass("show");
		$("a#hyves").removeClass("show");
	}
}

/**
 * Verander de user data op de webpagina.
 * 
 * @param user
 * @return
 */
function setUserData(user) {
	setInControl(user);
	// set visitekaart gegevens
	if(user != null){
		changeVisiteKaart.call($("#businesscardSelf"), user);
	}
}

/**
 * Zet inControl percentage
 * @param user
 * @return
 */
function setInControl(user) {
	if(user != null && user.incontrol != null) {
		$("#score").html(String(user.incontrol) +"%");
		if(	user.incontrol >= 20 && getCookie("alerted") == null && getCookie("ingelogd") == null){
			setCookie('alerted', getSessionId(), 60, '/', '', '' );
			alert("U bent nog niet ingelogd, als u uw punten wilt behouden moet u inloggen!");
			
		}
	}
}

/**
 * Update de visitekaart data
 * @param user
 * @return
 */
function changeVisiteKaart(user) {
	if(user.firstName != null){
		$("h2", this).html(String(user.firstName));
	}
	if(user.incontrol != null){
		$("p", this).html(String(user.incontrol) +"% in control");
	}
	var imgSrc = $("img", this).attr("src");
	if(user.photoUrl != null && imgSrc != String(user.photoUrl)){
		$("img", this).attr("src", String(user.photoUrl));
	}
	
	if(user.firstName != null){
		$("span", this).attr("class", (""));
	}
	
	
}

/**
 * get de Session ID aan de hand van de JSESSIONID cookie.
 */
function getSessionId(){
	return getCookie("JSESSIONID");
}


function isFilled(variable){
	return variable && variable.length > 0;
}

/*
 * StringBuffer: voor efficient concatenatie van Strings
 */
function StringBuffer() { 
	   this.buffer = []; 
	 } 

StringBuffer.prototype.append = function append(string) { 
	 this.buffer.push(string); 
	 return this; 
}; 

StringBuffer.prototype.toString = function toString() { 
	return this.buffer.join(""); 
};

function getURLParam(strParamName){
	  var strReturn = "";
	  var strHref = window.location.href;
	  if ( strHref.indexOf("?") > -1 ){
	    var strQueryString = strHref.substr(strHref.indexOf("?")).toLowerCase();
	    var aQueryString = strQueryString.split("&");
	    for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
	      if (
	aQueryString[iParam].indexOf(strParamName.toLowerCase() + "=") > -1 ){
	        var aParam = aQueryString[iParam].split("=");
	        strReturn = aParam[1];
	        break;
	      }
	    }
	  }
	  return unescape(strReturn);
	}



