/*
function htmlspecialchars(value) {
	value = value.replace(/</g, '&lt;');
	value = value.replace(/>/g, '&gt;');
	value = value.replace(/&/g, '&amp;');
	value = value.replace(/"/g, '&quot;');
	return value;
};*/


function joinEvent(eventId) {
	dojo.xhrPost({
		url: baseUrl + '/training/join/js/true/eventId/' + eventId +
			'/sportId/' + sportId + '/year/' + year + '/month/' + month + '/',
		load: joinEventCallback,
		error: ajaxError
	});
}
function joinEventCallback(data, ioArgs) {
	//dialogBox('info', 'Test', '<textarea style="height:120px;">' + data + '</textarea>' );
	eval(data);
	if(error) {
		dialogBox('error', 'Fehler', feedback);
	} else {
		displayEventTable();
	}
}

function scoutEvent(eventId) {
	var helperVars = '/sportId/' + sportId + '/year/' + year + '/month/' + month + '/';
	var scoutStatus = document.getElementById('scoutStatus');
	var scoutNotes = document.getElementById('scoutNotes');
	
	if(scoutStatus != null && scoutNotes != null) {
		helperVars += 'status/' + (scoutStatus.checked ? '0' : '1');
		helperVars += '/notes/' + scoutNotes.value + '/';
		hideScoutDialogBox();
	}
	
	dojo.xhrPost({
		url: baseUrl + '/training/scout/js/true/eventId/' + eventId + helperVars,
		load: scoutEventCallback,
		error: ajaxError
	});
}
function scoutEventCallback(data, ioArgs) {
	//alert(data);
	eval(data);
	displayEventTable();
}

function displayScoutDialogBox(eventId, scoutStatus, scoutNotes) {
	var scoutDialog = $('scoutDialog');
	var _checked = scoutStatus > 0 ? false : 'checked="checked"';
	var contents = '<h1><span>Scout-Infos setzen</span></h1>';
	contents += '<div class="contents"><input type="checkbox" id="scoutStatus" ' + _checked + '" onclick="$(\'scoutNotesLabel\').set(\'html\', $(\'scoutStatus\').checked ? \'Absagegrund\' : \'Bemerkungen\' )"/> <label for="scoutStatus" ' + _checked + '">Training absagen</label>';
	contents += '<p><span id="scoutNotesLabel"></span><br /><textarea id="scoutNotes">' + scoutNotes + '</textarea></p>';
	contents += '</div><div class="buttons"><button onclick="scoutEvent(' + eventId + ')" />SPEICHERN</button> <button onclick="hideScoutDialogBox()">ABBRECHEN</button>';
	contents += '</div>';
	scoutDialog.style.display = 'block';
	scoutDialog.set('html', contents);
	$('scoutNotesLabel').set('html', $('scoutStatus').checked ? 'Absagegrund' : 'Bemerkungen');
	scoutDialog.className = 'dialogBox scout';
	$('scoutDialog').set('styles', {
		'left' : $(document).getScroll().x + $(document).getSize().x / 2 - $('scoutDialog').getSize().x / 2,
		'top' : $(document).getScroll().y + $(document).getSize().y / 2 - $('scoutDialog').getSize().y / 2
	});
}

function hideScoutDialogBox() {
	var scoutDialog = document.getElementById('scoutDialog');
	scoutDialog.style.display = 'none';
	scoutDialog.innerHTML = '';
}

function save(eventId, eventIndex) {
	var xhr_url = baseUrl + '/training/';
	xhr_url += eventId > 0 ? 'update/' : 'insert/';
	xhr_url += 'js/true/';
	
	// Jahr und Monat, damit Controller weiss welche Daten aktualisiert werden müssen
	document.getElementById('year_' + eventIndex).value = year;
	document.getElementById('month_' + eventIndex).value = month;
	
	dojo.xhrPost({
		url: xhr_url,
		form: 'event_edit_' + eventIndex,
		load: saveCallback,
		error: ajaxError
	});
}
function saveCallback(data, ioArgs) {
	//alert(data);
	eval(data);
	if(error) {
		dialogBox('error', 'Fehler', feedback);
	} else {
		// Event Table neu zeichnen
		displayEventTable();
	}
}

function changeMonth(step) {
	if(step > 0) {
		month++;
		if(month > 12) {
			month = 1;
			year++;
		}
	} else if(step < 0) {
		month--;
		if(month < 1) {
			month = 12;
			year--;
		}
	}
	dojo.xhrPost({
		url: baseUrl + '/training/' + sportCode + '/month/' + month + '/year/' + year + '/js/true/',
		load: changeMonthCallback,
		error: ajaxError
	});
}
function changeMonthCallback(data, ioArgs) {
	//dialogBox('info', 'Test', '<textarea>' + data + '</textarea>' );
	eval(data);
	openedEvents = openedEventsUpdate;
	displayEventTable();
}

function getScoutsForEvent(eventId) {
	var result = '';
	var myself = false;
	var scouting = false;
	if(eventId > 0) {
		for(var i=0; i<eventScoutArray[eventId].length; i++) {
			result += i > 0 ? ', ' : 'Scout: ';
			myself = userId == eventScoutArray[eventId][i]['id'];
			result += '<span ';
			result += myself ? ' style="color:rgb(0,90,180);font-weight:bold;">' : '>';
			result += eventScoutArray[eventId][i]['firstname'] + ' ' + eventScoutArray[eventId][i]['familyname'];
			result += '</span>';
			if(myself && allowed['scout']) {
				result += ' (<a href="#here" onclick="scoutEvent(' + eventId + ')">Annulieren</a>)';
				scouting = true;
			}
		}
		result += i > 0 ? '. ' : 'Scout: keine/r. ';
		if(!scouting && allowed['scout']) {
			result += '<a href="#here" onclick="scoutEvent(' + eventId + ')">Ich möchte scouten</a>';
		}
	}
	return(result);
}

function getJoinedUsersForEvent(eventId) {
	var result = '';
	var myself = false;
	var registered = false;
	if(eventId > 0) {
		for(var i=0; i<eventUserArray[eventId].length; i++) {
			result += i > 0 ? ', ' : eventUserArray[eventId].length + ' Teilnehmer/innen angemeldet: ';
			myself = userId == eventUserArray[eventId][i]['id'];
			result += '<span ';
			result += myself ? ' style="color:rgb(0,160,0);font-weight:bold;">' : '>';
			result += eventUserArray[eventId][i]['firstname'] + ' ' + eventUserArray[eventId][i]['familyname'];
			result += '</span>';
			if(myself) {
				result += ' (<a href="#here" onclick="joinEvent(' + eventId + ')">Annulieren</a>)';
				registered = true;
			}
		}
		result += i > 0 ? '. ' : 'Noch niemand angemeldet. ';
		if(!registered) {
			result += '<a href="#here" onclick="joinEvent(' + eventId + ')">Ich möchte teilnehmen</a>';
		}
	}
	return(result);
}


/* ?? */
function getMinutesCount(time) {
	var minutes = 0;
	minutes += parseInt(time.substr(0,2)) * 60;
	minutes += parseInt(time.substr(3,2));
	return minutes;
}

function getTrackPool(eventIndex) {
	var element = document.getElementById('event_' + eventIndex + '_track_id');
	var sportDateRow = sportDate[eventList[eventIndex]['sportDate_id']];
	var trackPool = new Array();
	for(var t in trackList) {
		if( (trackList[t]['level_id'] >= sportDateRow['fk_minlevel_id']) && (trackList[t]['level_id'] <= sportDateRow['fk_maxlevel_id']) ) {
			if(trackList[t]['distance'] >= sportDateRow['mindistance'] && trackList[t]['distance'] <= sportDateRow['maxdistance']) {
				if(getMinutesCount(trackList[t]['duration']) >= getMinutesCount(sportDateRow['minduration']) && getMinutesCount(trackList[t]['duration']) <= getMinutesCount(sportDateRow['maxduration'])) {
					if(trackList[t]['departurePlace'] == '') {
						trackPool.push(trackList[t]['id']);
					}
				}
			}
		}
	}
	//alert("Grösse Streckenpool: " + trackPool.length);
	return trackPool;
}

function trackProposal(eventIndex) {
	var trackPool = getTrackPool(eventIndex);
	var trackId = trackPool[ Math.floor(Math.random() * trackPool.length) ];
	//alert(trackId);
	document.getElementById('event_' + eventIndex + '_track_id').value = trackId;
}

function joinMandatory(eventIndex, mandatory) {
	document.getElementById('deadline_' + eventIndex).style.display = mandatory ? 'block' : 'none';
	document.getElementById('deadline_date_' + eventIndex).value = document.getElementById('event_' + eventIndex + '_date').value;
	document.getElementById('deadline_time_' + eventIndex).value = document.getElementById('event_' + eventIndex + '_time').value;
}


function edit(eventIndex) {
	openedEvents[eventIndex] = true;
	var element = document.getElementById('event_' + eventIndex);
	element.className = 'opened';
	element.innerHTML = eventArray[eventIndex]['edited'];
}

function maximize(eventIndex) {
	openedEvents[eventIndex] = true;
	var element = document.getElementById('event_' + eventIndex);
	element.className = 'opened';
	element.innerHTML = eventArray[eventIndex]['opened'];
	document.getElementById('scouting_' + eventIndex).innerHTML = getScoutsForEvent(eventIdArray[eventIndex]);
	if(userId != null) {
		document.getElementById('registered_' + eventIndex).innerHTML = getJoinedUsersForEvent(eventIdArray[eventIndex]);
	}
}

function minimize(eventIndex) {
	openedEvents[eventIndex] = false;
	var element = document.getElementById('event_' + eventIndex);
	element.className = 'closed';
	element.innerHTML = eventArray[eventIndex]['closed'];
}

function elementHovered(element, hovered) {
	element.style.backgroundColor = hovered ? 'rgb(240,240,240)' : 'transparent';
}

function getEventTableRow(eventIndex) {
	return(eventArray[eventIndex]['closed']);
}

function displayEventTable() {
	var d = document.getElementById("eventDivision");
	var inhalt = '';
	inhalt += '<p>';
	inhalt += '<a style="display:block;float:right;" href="#here" onclick="changeMonth(1)">Nächster Monat</a>';
	inhalt += '<a style="display:block;" href="#here" onclick="changeMonth(-1)">Vorheriger Monat</a>';
	inhalt += '</p>';
	inhalt += '<p style="clear:right;">Klicke auf den Pfeil rechts, um einen Eintrag zu öffnen.</p>';
	inhalt += '<div class="header"><table><tr><td class="date">Datum</td><td class="description">Beschreibung</td><td class="level">Schwierigkeit</td><td>&nbsp;</td></tr></table></div>';
	for(var i=0; i<eventArray.length; i++) {
		className = eventArray[i]['departed'] ? 'departed' : 'closed';
		inhalt += '<div class="' + className + '" id="event_' + i + '">';
		inhalt += getEventTableRow(i);
		inhalt += '</div>';
	}
	inhalt += '</p>';
	d.innerHTML = inhalt;
	
	// Geöffnete Events
	for(i=0; i<eventArray.length; i++) {
		if(openedEvents[i]) {
			maximize(i);
		}
	}
}
