var menuItems = ["Events", "Info", "Admin", "Profile", "Login", "Search"];
var chatOTimestamp = 0;
var chatOCache = [];
var smartBoxMaxZIndex = 1;

function inArray(array, value) {
	for (var i = 0; i < array.length; i++) {
		if (array[i] === value)
			return true;
	}
	
	return false;
}

function preNull(num) {
	if (num < 10) {
		return "0" + num;
	}
	
	return num;
}

function openMenu(item, e){
	closeMenus();
	$("#menuLink" + item).addClass("menu-link-hover");
	$("#menuItems" + item).show();

	cancelEvent(e);
}

function closeMenus(){
	for(var i = 0; i < menuItems.length; i++){
		var item = menuItems[i];

		$("#menuLink" + item).removeClass("menu-link-hover");
		$("#menuItems" + item).hide();
	}
}

function goTo(url, newWindow){
	if (newWindow) {
		window.open(url);
	} else {
		window.location.href = url;
	}
}

function setBodySize(){
	var height = $("#bodyContainer").height();
	var diff = screen.height - height - 295;

	if(diff > 0){
		$("#bodyContainer").css("min-height", height + diff);
	}
}

function cancelEvent(e) {
	var evt = e || window.event;
	
	if (evt.stopPropagation)
		evt.stopPropagation();

	evt.returnValue = false;
	evt.cancelBubble = true;
	
	return false;
}

function setAutoLogin(event) {
	var hAutoLogin = $("#autoLogin");
	var autoLoginText = $("#autoLoginText");

	if (hAutoLogin.val() == "1") {
		hAutoLogin.val("0");
		autoLoginText.html('<img src="../img/struct/deny.png" alt="nicht" style="width: 12px; height: 12px;" /> Automatisch einloggen');
	} else {
		hAutoLogin.val("1");
		autoLoginText.html('<img src="../img/struct/accept.png" alt="nicht" style="width: 12px; height: 12px;" /> Automatisch einloggen');
	}
	
	cancelEvent(event);
}

function selectNews(type, elem) {
	if (type == "all")
		$(".an-entry").show();
	else {
		$(".an-entry").hide();
		$("." + type + "-entry").show();
	}
	
	$(".news-link-selected").removeClass("news-link-selected");
	$(elem).addClass("news-link-selected");
}

function checkEntry(){
	var bus_0 = $("#bus_0");
	var bus_1 = $("#bus_1");
	var accomodation_0 = $("#accomodation_0");
	var accomodation_1 = $("#accomodation_1");
	var headlamp_0 = $("#headlamp_0");
	var headlamp_1 = $("#headlamp_1");

	if(bus_0.attr("id") && !bus_0.attr("checked") && !bus_1.attr("checked")){
		$("#entryMessage").html("Bitte Anreise ausw&auml;hlen.");
		$("#entryMessage").show();
		return false;
	}

	if(accomodation_0.attr("id") && !accomodation_0.attr("checked") && !accomodation_1.attr("checked")){
		$("#entryMessage").html("Bitte Unterkunft ausw&auml;hlen.");
		$("#entryMessage").show();
		return false;
	}

	if(headlamp_0.attr("id") && !headlamp_0.attr("checked") && !headlamp_1.attr("checked")){
		$("#entryMessage").html("Bitte Stirnlampe ausw&auml;hlen.");
		$("#entryMessage").show();
		return false;
	}

	$("#entryMessage").html("&nbsp;");
	$("#entryMessage").hide();
	return true;
}

function switchTo(button, content) {
	$("div.switch-buttons div.selected").removeClass("selected");
	$("div.switch-contents div.selected").removeClass("selected");
	button.addClass("selected");
	content.addClass("selected");
}

function enableEntry(id) {
	var row = $("#row_" + id)
	var entry = $("#entry_" + id + "_entry");
	var category = $("#entry_" + id + "_category");
	var sportident = $("#entry_" + id + "_sportident");
	var bus_1 = $("#entry_" + id + "_bus_1");
	var bus_0 = $("#entry_" + id + "_bus_0");
	var accomodation_1 = $("#entry_" + id + "_accomodation_1");
	var accomodation_0 = $("#entry_" + id + "_accomodation_0");
	var headlamp_1 = $("#entry_" + id + "_headlamp_1");
	var headlamp_0 = $("#entry_" + id + "_headlamp_0");
	var note = $("#entry_" + id + "_note");
		
	if (entry.attr("checked")) {
		row.addClass("entryTableSelected");

		category.val($("#entry_default_category").val());
		sportident.val($("#entry_default_sportident").val());
		
		category.attr("disabled", "");
		sportident.attr("readonly", "");
		bus_1.attr("disabled", "");
		bus_0.attr("disabled", "");
		accomodation_1.attr("disabled", "");
		accomodation_0.attr("disabled", "");
		headlamp_1.attr("disabled", "");
		headlamp_0.attr("disabled", "");
		note.attr("readonly", "");
	} else {
		row.removeClass("entryTableSelected");

		category.val("");
		sportident.val("");
		bus_1.attr("checked", false);
		bus_0.attr("checked", false);
		accomodation_1.attr("checked", false);
		accomodation_0.attr("checked", false);
		headlamp_1.attr("checked", false);
		headlamp_0.attr("checked", false);
		note.val("");
		
		category.attr("disabled", "disabled");
		sportident.attr("readonly", "readonly");
		bus_1.attr("disabled", "disabled");
		bus_0.attr("disabled", "disabled");
		accomodation_1.attr("disabled", "disabled");
		accomodation_0.attr("disabled", "disabled");
		headlamp_1.attr("disabled", "disabled");
		headlamp_0.attr("disabled", "disabled");
		note.attr("readonly", "readonly");
	}
}

function checkEntryForm() {
	var success = true;
	
	$(".table-row-information").hide();
	
	$("form :checkbox").each(function(index, Element) {
		var checkbox = $(Element);
		
		if (checkbox.attr("checked")) {
			var id = checkbox.val();
			var category = $("#entry_" + id + "_category");
			var bus_1 = $("#entry_" + id + "_bus_1");
			var bus_0 = $("#entry_" + id + "_bus_0");
			var accomodation_1 = $("#entry_" + id + "_accomodation_1");
			var accomodation_0 = $("#entry_" + id + "_accomodation_0");
			var headlamp_1 = $("#entry_" + id + "_headlamp_1");
			var headlamp_0 = $("#entry_" + id + "_headlamp_0");
			var rowInfo = $("#entry_" + id + "_rowInfo");
			var rowInfoText = $("#entry_" + id + "_rowInfoText");

			//check category
			if (!category.val()) {
				category.focus();
				rowInfoText.html("Kategorie w&auml;hlen.");
				rowInfo.show();
				success = false;
				return;
			}
			
			//check bus
			if (bus_1.val() && !bus_1.attr("checked") && !bus_0.attr("checked")) {
				bus_1.focus();
				rowInfoText.html("Anreise w&auml;hlen.");
				rowInfo.show();
				success = false;
				return;
			}
			
			//check accommodation
			if (accomodation_1.val() && !accomodation_1.attr("checked") && !accomodation_0.attr("checked")) {
				accomodation_1.focus();
				rowInfoText.html("Unterkunft w&auml;hlen.");
				rowInfo.show();
				success = false;
				return;
			}
			
			//check headlamp
			if (headlamp_1.val() && !headlamp_1.attr("checked") && !headlamp_0.attr("checked")) {
				headlamp_1.focus();
				rowInfoText.html("Stirnlampe w&auml;hlen.");
				rowInfo.show();
				success = false;
				return;
			}
		}
	});
	
	return success;
}

function sendChatO() {
	var message = $("#message").css("background-image", "url(../img/struct/simple-loading.gif)");
	
	if (message.val()) {
		$.ajax({
			data: {message: message.val()},
			type: "POST",
			url: "../services/put-chat-o.php",
			success: function() {
				message.css("background-image", "none");
				refreshChatO();
			}
		});
		
		$("#message").val("");
		$("#message").focus();
	}
	
	return false;
}

function refreshChatO() {
	$.ajax({
		url: "../services/get-chat-o.php?ts=" + chatOTimestamp,
		dataType: "json",
		success: function(data, textStatus, jqXHR) {
			var chatOMessages = $("#chatOMessages");
			var chatOOnlineUsers = $("#chatOOnlineUsers");
			var messages = data.messages;
			var onlineUsers = data.onlineUsers;
			
			if (data.timestamp > chatOTimestamp) {
				chatOTimestamp = data.timestamp;
			}
			
			if (messages && messages.length) {
				for (var i = 0; i < messages.length; i++) {
					var message = messages[i];
					
					//console.warn("message.id: " + message.id);
					
					if (!inArray(chatOCache, message.id)) {
						var date = new Date(message.date);
						var chatOMessage = document.createElement("div");
						var chatODate = document.createElement("span");
						var chatOUser = document.createElement("span");
						var chatOMsg = document.createElement("span");
						
						chatOMessage.className = "chatOMessage";
						chatODate.className = "grey monospace";
						chatODate.innerHTML = preNull(date.getDate()) + "." + preNull(date.getMonth() + 1) + ".|" + preNull(date.getHours()) + ":" + preNull(date.getMinutes()) + "&nbsp;";
						chatOUser.className = "bold";
						chatOUser.style.color = "#" + message.color;
						chatOUser.innerHTML = message.user;
						chatOMsg.innerHTML = message.message;

						chatOMessage.appendChild(chatODate);
						if (message.user) { chatOMessage.appendChild(document.createTextNode("<")); }
						chatOMessage.appendChild(chatOUser);
						if (message.user) { chatOMessage.appendChild(document.createTextNode("> ")); }
						chatOMessage.appendChild(chatOMsg);
						
						chatOMessages.prepend(chatOMessage);
						delete message, date, chatOMessage, chatODate, chatOUser;
						
						chatOCache.push(message.id);
					}
				}
			}

			if (onlineUsers && onlineUsers.length) {
				var html = "";
				
				chatOOnlineUsers.empty();
				
				for (var i = 0; i < onlineUsers.length; i++) {
					if (html) {
						html += ", ";
					}
					
					html += onlineUsers[i];
				}
				
				chatOOnlineUsers.html(html);
			}

			delete chatOMessages, chatOOnlineUsers, data, messages, onlineUsers, html;
		},
		error: function(jqXHR, textStatus, errorThrown) {
			if (console && console.log) {
				console.log("error textStatus: " + textStatus);
			}
		},
		complete: function (jqXHR, textStatus) {
			jqXHR.onreadystatechange = null;
			jqXHR.abort = null;
			jqXHR = null;
		}
	});
}

function startChatO() {
	refreshChatO();
	window.setTimeout(function() { startChatO(); }, 1000);
}

function enterChatO() {
	$.ajax({
		url: "../services/enter-chat-o.php"
	});
}

function leaveChatO() {
	$.ajax({
		url: "../services/leave-chat-o.php"
	});
}
