var banner_messages = [];
var banner_numitems = 0;
var banner_nowitem;
var banner_timer;
var banner_duration = 3000; // default in ms
var banner_fadestep;
var banner_fadedir;
var banner_fadesteps = 8;
var banner_increment = 100; // ms

function SetOpacity(element, percent) {
	element.style.opacity = percent / 100;
	element.style.filter = "alpha(opacity=" + percent + ")"; // for IE
}

function GetBanner() {
  var xhr;
  var jsondata;
  var messages;
  var html;
  var today = new Date();
  var messagefrom = new Date();
  var messageuntil = new Date();
  var mindate = new Date("Jan 1 1970"); // IE requires full date
  var maxdate = new Date("Jan 1 2070"); // IE requires full date
  var i;
  
  if (window.XMLHttpRequest) {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    xhr = new XMLHttpRequest();
  } else {
    // code for IE6, IE5
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
  }
  xhr.open("get", "data/banner.json", false);
  xhr.send(null);

  jsondata = JSON.parse(xhr.responseText);
  if (jsondata.duration_ms) {banner_duration = jsondata.duration_ms;}
  if (!jsondata.messages) {return;}
  messages = jsondata.messages;
  
  html = "";
  banner_numitems = 0;
  for (i = 0; i < messages.length; i++) {
		messagefrom.setTime(mindate);
		if (messages[i].from) {messagefrom.setTime(Date.parse(messages[i].from));}
		messageuntil.setTime(maxdate);
		if (messages[i].until) {messageuntil.setTime(Date.parse(messages[i].until));}
		if ((messagefrom <= today) && (today <= messageuntil)) {
			html += "<div class='message' style='display:none'>" + messages[i].text + "</div>";
			banner_numitems += 1;
		}
  }
  document.getElementById('barea').innerHTML = html;
  banner_messages = document.getElementById('barea').childNodes;
	banner_nowitem = 0;
}

function FadeMessage() {
	window.clearTimeout(banner_timer);
	banner_fadestep += banner_fadedir;
	if (banner_fadestep >= banner_fadesteps) {
		banner_fadedir = -1;
		SetOpacity(banner_messages[banner_nowitem], 100);
		banner_timer = window.setTimeout(FadeMessage, banner_duration);
	} else if (banner_fadestep <= 0) {
		banner_fadedir = +1;
		banner_messages[banner_nowitem].style.display = "none";
		banner_nowitem = (banner_nowitem + 1) % banner_numitems;
		SetOpacity(banner_messages[banner_nowitem], 0);
		banner_messages[banner_nowitem].style.display = "block";
		banner_timer = window.setTimeout(FadeMessage, banner_increment);
	} else {
		banner_messages[banner_nowitem].style.opacity = banner_fadestep / banner_fadesteps;
		SetOpacity(banner_messages[banner_nowitem], (100 * banner_fadestep / banner_fadesteps));
		banner_timer = window.setTimeout(FadeMessage, banner_increment);
	}
}

function RenderBanner() {
	if (banner_numitems < 1) {return;}
	banner_messages[banner_nowitem].style.display = "none"; // in case of resize
	banner_fadestep = 0;
	banner_fadedir = +1;
	SetOpacity(banner_messages[banner_nowitem], 0);
	banner_messages[banner_nowitem].style.display = "block";
	FadeMessage();
}


