/////////////////////

var StatisticsGrapper = new StatisticsGrapperClass();
var DuplicateChecker = new DuplicateCheckerClass(true);
var PlayerFinder = new PlayerFinderClass();
var MatchFinder = new MatchFinderClass();
var MatchTournamentAssociator = new MatchTournamentAssociatorClass();
var TrainingGenerator = new TrainingGeneratorClass();
var DateConverter = new DateConverterClass();

///////////////////////////////////////

MatchTournamentAssociator.associate(SoccerLife);

$(function() {
	$( "#maincont" ).show();
	$( "#tabs" ).tabs({ fx: { opacity: 'toggle', duration: 'fast' } });
	$( ".collapsible" ).accordion({
		collapsible : true,
		autoHeight: false,
		navigation: true,
		active: false
	});
	
	$( ".collapsible-active" ).accordion({
		collapsible : true,
		autoHeight: false,
		navigation: true
	});
	
	$( ".draggable" ).draggable();
	$( ".resizable" ).resizable();
	
	/////////////////////////////////////////////////////
	// statistics top scorer
	$( "#topscorer-currentseason, #topscorer-allseasons" ).each( function() {
		// get scoresDateConverter
		var scores = [];
		if (this.id === "topscorer-currentseason") {
			StatisticsGrapper.grapGoals(SoccerLife, 
					PlayerFinder.findPlayers(SoccerLife), scores);
		}
		else if(this.id === "topscorer-allseasons") {
			StatisticsGrapper.grapGoals(SoccerLife.getCurrentSeason(), 
					PlayerFinder.findPlayers(SoccerLife.getCurrentSeason()), scores);
		}
		else {
			throw "InvalidArgument";
		}
		scores.sort(function(a,b){
			return b.goals - a.goals;
		});
		
		// fill list
		var html = "<table>";
		for (var i=0;i<scores.length;++i) 
		{
			var player = scores[i].player;
			var goals = scores[i].goals;
			html += "<tr><td>" + player.getName() + "</td><td>" + goals + "</td></tr>" ;
		}
		html += "</table>";
		$(this).html(html);
	});
	
	$( "#topactivity-currentseason, #topactivity-allseasons" ).each( function() {
		// get scores
		var scores = [];
		if (this.id === "topactivity-currentseason") {
			StatisticsGrapper.grapDeployments(SoccerLife, PlayerFinder.findPlayers(SoccerLife), scores);
		}
		else if(this.id === "topactivity-allseasons") {
			StatisticsGrapper.grapDeployments(SoccerLife.getCurrentSeason(), PlayerFinder.findPlayers(SoccerLife.getCurrentSeason()), scores);
		}
		else {
			throw "InvalidArgumenDateConvertert";
		}
		scores.sort(function(a,b){
			return b.deployments - a.deployments;
		});
		
		// fill list
		var html = "<table>";
		for (var i=0;i<scores.length;++i) 
		{
			var player = scores[i].player;
			var deployments = scores[i].deployments;
			html += "<tr><td>" + player.getName() + "</td><td>" + deployments + "</td></tr>" ;
		}
		html += "</table>";
		$(this).html(html);
	});
	
	//////////////////////////////////////////////////
	// match schedule
	$( "#matchschedule-currentseason, #matchschedule-allseasons" ).each( function() {
		// get matches
		var matches;
		if (this.id == "matchschedule-currentseason")
		{
			matches = MatchFinder.findMatches(SoccerLife.getCurrentSeason());
		}
		else if (this.id == "matchschedule-allseasons")
		{
			matches = MatchFinder.findMatches(SoccerLife);
		}
		else 
		{
			throw "InvalidArgument"
		}
		matches.sort(function(a,b){
			return a.getDate().valueOf() - b.getDate().valueOf();
		});
		
		// fill list
		var html = "<table>";
		for (var i=0;i<matches.length;++i) 
		{
			var match = matches[i];
			var tournament = match.getTournament();
			var comment = match.getComment();
			var result = match.getResult();
			html += "<tr><td>" 
				+ DateConverter.getShortDateTime(match.getDate()) + "</td><td>" 
				+ match.getHome().getName() + "</td><td>" 
				+ match.getGuest().getName() + "</td><td>" 
				+ (result ? (result[0] + ":" + result[1]) : "") + "</td><td>" 
				+ (comment ? "<a class='lok-tiptip' href='#' title='<b><i>Kommentar</b></i><br/ >" + comment + "'>Kommentar</a>" : "" ) + "</td></tr>" ;
		}
		html += "</table>";
		$(this).html(html); 
		$(".lok-tiptip", this).tipTip({defaultPosition:"top", delay: 100, fadeIn : 50, fadeOut : 50});
	});
	
	///////////////////////////////////////////////////
	// news schedule
	$( "#news-calendar" ).each(function (){
		var appointments = MatchFinder.findMatches(SoccerLife);
//		var meetings = MeetingFinder.findMeetings(SoccerLife); // TODO
		var training = TrainingGenerator.getNextTraining( );//matches);
		appointments.push(training);
		appointments.sort(function(a,b){
			return a.getDate().valueOf() - b.getDate().valueOf();
		});
		
		var html = "<table>";
		for (var i=0;i<appointments.length;++i) 
		{
			var anAppointment = appointments[i];
			if (anAppointment instanceof TrainingClass) {
				html += "<tr><td>" + DateConverter.getShortDateTime(anAppointment.getDate()) + "</td><td>Training</td></tr>";
			}
		}
		html += "</table>";
		$(this).html(html);
	});
});
