var COOKIE_NAME = 'ssib_cookie';

var reportIds = new Array();
var reports_saved = 0;
var isSaving = false;
var max_cls = 0;
var activeClasses = 0;

var schoolId = -1;

var isHasCookie = false;


$(document).ready(function()
{

	if ($.cookie(COOKIE_NAME) != null)
	{
		isHasCookie = true;

		schoolId = $.cookie(COOKIE_NAME);
	}

	if (isHasCookie)
	{
		$(".logout").animate({ width: 'toggle', easing: 'easeOutCubic' }, 600);

		$(".logout").click(function()
		{
			signOut();
		});
	}
	else if (tilmeldActive == true)
	{
		$(".tilmeld").animate({ width: 'toggle', easing: 'easeOutCubic' }, 600);
	}
	else if (infoActive == true)
	{
		$(".info").animate({ width: 'toggle', easing: 'easeOutCubic' }, 600);
	}
	else
	{
		$(".login").animate({ width: 'toggle', easing: 'easeOutCubic' }, 600);

		$("#btnLogin").click(function()
		{
			signIn($(".login #user").val(), $(".login #pass").val());
		});

		$("#btnForgot").click(function()
		{
			$(".login-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200, function()
			{
				$(".forgot-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200);
			});
		});

		$("#btnBack").click(function()
		{
			$(".forgot-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200, function()
			{
				$(".login-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200);
			});
		});

		$("#btnSendPass").click(function()
		{
			requestUserInfo($(".login #email").val());
		});

		$(".logout").click(function()
		{
			signOut();
		});

		/*
		$("#btnForgot").click(function() {
		$("#login_container .login").hide();
		$("#login_container .glemtpassword").show();
		});

            $("#btnLoginBack").click(function() {
		$("#login_container .glemtpassword").hide();
		$("#login_container .login").show();
		});

            $("#btnForgotSend").click(function() {
		requestUserInfo($("#glemtpass").val());
		});
		*/
	}

});

function initInrap()
{
	if ($.cookie(COOKIE_NAME) == null)
	{
		document.location.href = "/";
		return false;
	}

	schoolId = $.cookie(COOKIE_NAME);

	$("#btnSaveAll").click(function()
	{
		if (!isSaving)
		{
			reports_saved = 0;
			saveReports();
		}
	});

	$("#btnAddClass").click(function()
	{
		$(this).hide();
		addReport(schoolId);
	});

	getSchoolReports(schoolId);
}

function initProfil()
{
	if ($.cookie(COOKIE_NAME) == null)
	{
		document.location.href = "/";
		return false;
	}

	schoolId = $.cookie(COOKIE_NAME);

	$("#btnSave").click(function()
	{
		if (Number($("#classes").val()) < activeClasses)
			alert("Det samlede antal klasser må ikke være mindre end antallet af tilføjede klasser. Slet nogle tilføjede klasser og prøv igen.");
		else
			updateSchool(schoolId);
	});

	getSchool(schoolId);
}

function initTilmeld()
{
	$("#btnRegister").click(function()
	{
		$("#btnRegister").hide();
		registerSchool();
	}
            );

	$("#name").keyup(function()
	{
		$("#username").val(removeSpaces($("#name").val()) + removeSpaces($("#zipcode").val()));
	});

	$("#zipcode").keyup(function()
	{
		$("#username").val(removeSpaces($("#name").val()) + removeSpaces($("#zipcode").val()));
	});
}

function removeSpaces(string)
{
	return string.split(' ').join('');
}

// Ajax
function signOut()
{
	schoolId = -1;

	$.cookie(COOKIE_NAME, "", { path: '/', expires: -1 });

	document.location.href = "/";
}

function signIn(user, pass)
{
	Proxy.invoke("SignIn", { user: user, pass: pass }, false, onLoginResult, onLoginError);
}

function onLoginResult(result)
{

	if (result != -1)
	{

		$.cookie(COOKIE_NAME, result.toString(), { path: '/', expires: 1 });
		document.location.href = "/aktivitetsugen/tilfoej-klasser.aspx";
		return false;
	}
	else
	{
		alert("Brugeren/kode findes ikke");
	}
}

function onLoginError(result)
{
	//alert(result);
	alert("Fejl i login eller brugernavn. Hvis du har glemt dit password, så klik i øverste højre hjørne");
}

function requestUserInfo(email)
{
	Proxy.invoke("RequestUserInfo", { email: email }, false, onUserInfoResult, onError);
}

function onUserInfoResult(result)
{
	if (result == -1)
	{
		alert("Fejl under afsendelse af mail");
	}
	else if (result == -2)
	{
		alert("Den indtastede email er ikke registreret");
	}
	else
	{
		alert("Mail med brugerinformation er afsendt til den indtastede email");

		$(".forgot-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200, function()
		{
			$(".login-inner").animate({ height: 'toggle', easing: 'easeOutCubic' }, 200);
		});
	}
}

function getSchoolReports(school_id)
{
	Proxy.invoke("GetSchoolReports", { sch: school_id }, false, onReportResult, onError);
}

function addReport(school_id)
{
	Proxy.invoke("AddReport", { sch: school_id }, false, onReportResult, onError);
}

function saveReports()
{
	isSaving = true;
	var isEmpty = false;

	for (var i = 0; i < reportIds.length; i++)
	{
		var cls = $(":text[name='report" + reportIds[i] + "cls']").val();
		var mon = $(":text[name='report" + reportIds[i] + "mon']").val();
		var tue = $(":text[name='report" + reportIds[i] + "tue']").val();
		var wed = $(":text[name='report" + reportIds[i] + "wed']").val();
		var thu = $(":text[name='report" + reportIds[i] + "thu']").val();
		var fri = $(":text[name='report" + reportIds[i] + "fri']").val();

		if (cls == "")
		{
			isEmpty = true;
		}

		saveReport(reportIds[i], cls, mon, tue, wed, thu, fri);
	}

	if (isEmpty)
	{
		alert("Det er vigtigt, at du sletter de inaktive linier, da de ellers tæller i den samlede statistik.");
	}
}

function saveReportsAndAddOne()
{
	isSaving = true;

	if (reportIds.length > 0)
	{
		for (var i = 0; i < reportIds.length; i++)
		{
			var cls = $(":text[name='report" + reportIds[i] + "cls']").val();
			var mon = $(":text[name='report" + reportIds[i] + "mon']").val();
			var tue = $(":text[name='report" + reportIds[i] + "tue']").val();
			var wed = $(":text[name='report" + reportIds[i] + "wed']").val();
			var thu = $(":text[name='report" + reportIds[i] + "thu']").val();
			var fri = $(":text[name='report" + reportIds[i] + "fri']").val();

			saveReportAlt(reportIds[i], cls, mon, tue, wed, thu, fri);
		}
	}
	else
	{
		addReport(schoolId);
	}
}

function saveReport(id, cls, mon, tue, wed, thu, fri)
{
	Proxy.invoke("SaveReport", { id: id, cls: cls, mon: mon, tue: tue, wed: wed, thu: thu, fri: fri }, false, onSaveResult, onError);
}

function saveReportAlt(id, cls, mon, tue, wed, thu, fri)
{
	Proxy.invoke("SaveReport", { id: id, cls: cls, mon: mon, tue: tue, wed: wed, thu: thu, fri: fri }, false, onSaveAltResult, onError);
}

function onSaveResult(result)
{
	reports_saved = reports_saved + 1;

	if (reports_saved == reportIds.length)
	{
		isSaving = false;
		reports_saved = 0;
		alert("Klasserne er gemt");//alert("Indrapporteringen er gemt");
		getSchoolReports(schoolId);
	}
}

function onSaveAltResult(result)
{
	reports_saved = reports_saved + 1;

	if (reports_saved == reportIds.length)
	{
		isSaving = false;
		reports_saved = 0;
		addReport(schoolId);
	}
}

function deleteReport(id)
{
	Proxy.invoke("DeleteReport", { id: id, schoolid: schoolId }, false, onReportResult, onError);
}

function onReportResult(res)
{

	var result = $.xml2json(res);

	reportIds = new Array();

	$("#report_textfields").empty();

	max_cls = Number(result.ClassesMax);
	
	if (result.Reports.ClassReport != undefined)
	{
		if (result.Reports.ClassReport.length > 0)
		{
			for (var i = 0; i < result.Reports.ClassReport.length; i++)
			{
				reportIds.push(result.Reports.ClassReport[i].ID);

				var rep = result.Reports.ClassReport[i];

				createReportHTML("#report_textfields", rep.ID, rep.ClassName, rep.Monday, rep.Tuesday, rep.Wednesday, rep.Thursday, rep.Friday);
			}
		}
		else
		{
			reportIds.push(result.Reports.ClassReport.ID);

			var rep = result.Reports.ClassReport;

			createReportHTML("#report_textfields", rep.ID, rep.ClassName, rep.Monday, rep.Tuesday, rep.Wednesday, rep.Thursday, rep.Friday);
		}

		addReportStats();
	}
	if (result.Week > 200)
	{
		$(":text").attr("disabled", "disabled");
		alert("Indrapporteringen af klasser er lukket");
	}
	else
	{
		$("#btnSaveAll").fadeIn();

		if (reportIds.length < max_cls)
		{
			$("#btnAddClass").fadeIn();
		}
	}
}

function createReportHTML(selector, id, name, mon, tue, wed, thu, fri)
{
	$(selector).append("<div class='report' id='report" + id + "'>" +
    "<input name='report" + id + "cls' value='" + name + "' type='text' style='width:81px;' class='textfields'/><input name='report" + id + "mon' value='" + mon + "' type='text' style='width:63px;' class='textfields'/><input name='report" + id + "tue' value='" + tue + "' type='text' style='width:71px;' class='textfields'/><input name='report" + id + "wed' value='" + wed + "' type='text' style='width:66px;' class='textfields'/><input name='report" + id + "thu' value='" + thu + "' type='text' style='width:72px;' class='textfields'/><input name='report" + id + "fri' value='" + fri + "' type='text' style='width:62px;' class='textfields'/><input name='sam' value='" + (Number(mon) + Number(tue) + Number(wed) + Number(thu) + Number(fri)) + "' disabled='disabled' type='text' style='width:112px; margin:0 0 0 0;' class='textfields'/><img src='/images/template/indrapportering/icon_delete.gif' style='position:relative; left: 4px; top: 6px; cursor: pointer;' title='slet linie' onclick='if(confirm(\"Vil du slette denne linie?\")){deleteReport(" + id + ");}' />" +
    "</div>");
}

function addReportStats()
{
	var mon = 0;
	var tue = 0;
	var wed = 0;
	var thu = 0;
	var fri = 0;

	for (var i = 0; i < reportIds.length; i++)
	{
		mon = Number(mon) + Number($(":text[name='report" + reportIds[i] + "mon']").val());
		tue = Number(tue) + Number($(":text[name='report" + reportIds[i] + "tue']").val());
		wed = Number(wed) + Number($(":text[name='report" + reportIds[i] + "wed']").val());
		thu = Number(thu) + Number($(":text[name='report" + reportIds[i] + "thu']").val());
		fri = Number(fri) + Number($(":text[name='report" + reportIds[i] + "fri']").val());
	}

	mon = mon / reportIds.length;
	tue = tue / reportIds.length;
	wed = wed / reportIds.length;
	thu = thu / reportIds.length;
	fri = fri / reportIds.length;

	$("#avg_mon").text(Math.round(mon * 100) / 100);
	$("#avg_tue").text(Math.round(tue * 100) / 100);
	$("#avg_wed").text(Math.round(wed * 100) / 100);
	$("#avg_thu").text(Math.round(thu * 100) / 100);
	$("#avg_fri").text(Math.round(fri * 100) / 100);
	$("#week_avg").text(Math.round((Number(mon + tue + wed + thu + fri) / 5) * 100) / 100);
	$("#percent_pertition").text((Math.round((reportIds.length * 100 / max_cls) * 100) / 100) + '%');
}

function registerSchool()
{
	if ($("#name").val() != "" && $("#username").val() != "" && $("#tpassword").val() != "" && $("#password_confirm").val() != "" && 
		$("#street").val() != "" && $("#zipcode").val() != "" && $("#city").val() != "" &&
		$("#classes").val() != "" && $("#contact").val() != "" && $("#contact_email").val() != "" && 
		$("#contact_phone").val() != "")
	{
		if (validateEmail($("#contact_email").val()))
		{
			if ($("#tpassword").val() != $("#password_confirm").val())
			{
				$("#btnRegister").show();
				alert("Husk at udfylde begge password felter ens");
			}
			else
			{
				Proxy.invoke("RegisterSchool", { name: $("#name").val(), username: $("#username").val(), password: $("#tpassword").val(), street: $("#street").val(), zipcode: $("#zipcode").val(), city: $("#city").val(), phone: $("#phone").val(), email: $("#sch_email").val(), classes: $("#classes").val(), contact: $("#contact").val(), contact_email: $("#contact_email").val(), contact_phone: $("#contact_phone").val() }, false, onRegisterResult, onError);
			}
		}
		else
		{
			$("#btnRegister").show();
			alert("Ugyldig email");
		}
	}
	else
	{
		$("#btnRegister").show();
		alert("Husk at udfylde alle felterne");
	}
}

function onRegisterResult(result)
{

	if (result != -1)
	{

		$.cookie(COOKIE_NAME, result.toString(), { path: '/', expires: 1 });
		$("#btnRegister").hide();
		$("#btnClasses").fadeIn();

		$("#statusMsg").fadeIn();
		$("#statusMsg").text("Din skole er nu oprettet, og mail med de indtastede oplysninger er sendt til din mail. Du kan nu begynde at tilmelde klasser");

		$("#btnClasses").click(function()
		{
			document.location.href = "/aktivitetsugen/tilfoej-klasser.aspx";
			return false;
		});

	}
	else
	{
		$("#btnRegister").show();
		alert("Skolen eksisterer allerede");
	}
}

function updateSchool(id)
{
	if (
		$("#street").val() == "" ||
		$("#city").val() == "" ||
		$("#classes").val() == "" ||
		$("#contact").val() == "" ||
		$("#contact_email").val() == "" ||
		$("#contact_phone").val() == "")
	{
		alert("Husk at udfylde alle felterne");
		return;
	}

	if (!$("#contact_email").val().match(/^[0-9a-zA-Z_\-\.]+@[0-9a-zA-Z_\-\.]+?\.[0-9a-zA-Z]{2,4}$/))
	{
		alert("Mail, Kontaktperson skal indeholde en gyldig e-mail adresse");
		return;
	}

	Proxy.invoke("UpdateSchool", { id: id, street: $("#street").val(), zipcode: $("#zipcode").val(), city: $("#city").val(), phone: $("#phone").val(), classes: $("#classes").val(), contact: $("#contact").val(), contact_email: $("#contact_email").val(), contact_phone: $("#contact_phone").val() }, false, onUpdateResult, onError);
}

function onUpdateResult(result)
{

	if (result != -1)
	{

		alert("Skolen er nu gemt");
	}
	else
	{
		alert("Skolen eksisterer ikke");
	}
}

function getSchool(id)
{
	Proxy.invoke("GetSchool", { id: id }, false, onGetResult, onError);
}

function onGetResult(res)
{

	var result = $.xml2json(res);

	if (result.Name != undefined)
	{
		$("#name").val(result.Name);
		$("#street").val(result.Street);
		$("#zipcode").val(result.Zipcode);
		$("#city").val(result.City);
		$("#phone").val(result.Phone);
		$("#school_email").val(result.Email);
		$("#contact").val(result.Contact);
		$("#contact_email").val(result.ContactEmail);
		$("#contact_phone").val(result.ContactPhone);
		$("#classes").val(result.ClassesMax);
		$("#username").val(result.Username);
		$("#tpassword").val(result.Password);
		
		activeClasses = result.AddedClasses;
	}
	
}

function onError(result)
{
	alert("error\n" + result);
}

function validateEmail(email)
{
	if (email.indexOf("@") != -1)
		return true;
	else
		return false;
}
