﻿// <reference name="MicrosoftAjax.js" />
// <reference path="http://localhost:23305/records.asmx" />

function LoginControlPositie(toonTReDS) {
	var logincontrol = document.getElementById("logincontrol");
	if (logincontrol && toonTReDS)
		logincontrol.style.top = logincontrol.offsetTop + 121;
}

function Huidigepagina() {
	return huidigepagina;
}

var huidigepagina;
function StuurAjaxRequest(requestwaarde) {
	var ajaxManager = $find(_ajaxManager);
	if (ajaxManager != null) {
		var ganaarpagina = requestwaarde.indexOf("ganaarpagina:");
		if (ganaarpagina != -1) {
			var requestPaginaId = requestwaarde.substr(requestwaarde.indexOf(":") + 1);
			if (huidigepagina != requestPaginaId)
				huidigepagina = requestPaginaId;
		}
		ajaxManager.ajaxRequest(requestwaarde);
		var hoofdmenu = $find(_hoofdmenu);
		if (hoofdmenu != undefined) {
			var items = hoofdmenu.get_items();
			for (var i = 0; i < items.get_count(); i++) {
				if (items.getItem(i).get_value() == parseInt(huidigepagina)) {
					items.getItem(i).set_selected(true);
					break;
				}
			}
		}
		return false;
	}
	return true;
}

function MainMenuItemClicking(sender, args) {
	args.set_cancel(true);
	StuurAjaxRequest('ganaarpagina:' + args.get_item().get_value());
}

function MainMenuLoad(sender, args) {
	var hoofdmenu = $find(_hoofdmenu);
	if (hoofdmenu != undefined) {
		var mainMenuItem = hoofdmenu.findItemByValue(_huidigePagina);
		if (mainMenuItem != undefined)
			mainMenuItem.set_selected(true);
	}
}

function RadAjaxLoadingPanelMasterShowing(sender, args) {
	$telerik.$(args.get_loadingElement()).show("slow");
}

function RadAjaxLoadingPanelMasterHiding(sender, args) {
	$telerik.$(args.get_loadingElement()).hide("slow");
}

//Wordt aangeroepen vanuit Silverlight
var alarmmoduleinfo;
function OpenAlarmpaneel(alarmmodule) {
	alarmmoduleinfo = alarmmodule;
	var videocontent = document.getElementById(alarmmodule.VideoContentClientID);
	//Toon de module als er alarmmeldingen zijn en video alleen dan weegegeven mag worden
	if (alarmmodule.VideoBijAlarm && videocontent != null)
		$("#" + alarmmodule.VideoContentClientID).slideDown("fast").attr("display", "block");
	var dockpanel = $find(alarmmodule.DockpanelClientID);
	if (dockpanel != null)
		dockpanel.set_collapsed(false);
	PortalWebService.HaalModuleAlarminfo(alarmmodule.ModuleID, toonAlarmInfo);
}

//Wordt aangeroepen vanuit Silverlight
//Geef alleen een melding als er geen downloadinstellingen worden weergegeven
function AlarmMelding(bericht) {
	if ($("#downloadinstellingenDiv").attr("display") != "block")
		alert(bericht);
}

function ZetAutoSliderBereik() {
	ZetTijdschaalmenu(0);
	var maxtijd = voorlooptijd > nalooptijd ? voorlooptijd : nalooptijd;
	sliderbereik = (Math.abs(maxtijd / 10) * 10) + 120;
	ZetSliderbereik(sliderbereik);
}

var alarmdatumtijd;
var voorlooptijd;
var nalooptijd;
var alarmID;
var cameras;
var verbergvideo;
var alarmID;
var sliderbereik;
function toonAlarmInfo(arg) {
	if (arg.Alarminfo != null) {
		alarmID = arg.Alarminfo.ID;
		alarmdatumtijd = arg.Alarminfo.TimeStamp;
		voorlooptijd = arg.Voorlooptijd;
		nalooptijd = arg.Nalooptijd;
		cameras = arg.Cameras;
		verbergvideo = arg.Verbergvideo;
		alarmID = arg.Alarminfo.ID;

		//Reageer alleen op de eerste alarmmelding om te voorkomen dat door de gebruiker aangepaste tijden
		//worden overschreven, de alarmmeldingen zullen wel worden gegeven (afhankelijk van de sensorinstellingen)
		if ($("#downloadinstellingenDiv").attr("display") != "block") {
			$("#downloadinstellingenDiv").slideDown("fast").attr("display", "block");
			$("#alarminfoDiv").html(String.format("<b>{0}</b> van <b>{1}</b> is {2} op {3}",
			arg.Alarminfo.Sensorwebnaam, arg.Alarmbron, arg.Alarminfo.StatusString.toLowerCase(), arg.Alarminfo.TimeStampString));

			ZetAutoSliderBereik();
			$(".RadSliderOpname").slider({
				min: -sliderbereik,
				max: sliderbereik,
				step: 10,
				range: true,
				values: [-arg.Voorlooptijd, arg.Nalooptijd],
				slide: OpnameSliderValueChange
			});
			ZetOpnametijden(-arg.Voorlooptijd, arg.Nalooptijd);
		}
	}
}

function VerwijderAlarmmelding() {
	if (confirm("Wilt u de alarmmelding verwijderen?"))
		PortalWebService.VerwijderAlarmmelding(alarmID, UpdateAlarmInfo);
}

function UpdateAlarmInfo() {
	if (verbergvideo)
		$(String.format("#{0}", alarmmoduleinfo.VideoContentClientID)).slideUp("fast").attr("display", "none");
	else $("#downloadinstellingenDiv").slideUp("fast").attr("display", "none");
}

function UnbindOverzichtMouseHover() {
	$(".SerVisionDownloadsoverzichtmodule tbody tr").unbind('mouseenter mouseleave');
}

var achtergrondkleur;
function BindOverzichtMouseHover() {
	$(".SerVisionDownloadsoverzichtmodule tbody tr").hover(
		function() { achtergrondkleur = $(this).css("background-color"); $(this).css("background-color", "#CCF3FF"); },
		function() { $(this).css("background-color", achtergrondkleur); }
	);
}

//Wordt aangeroepen vanuit Silverlight
function VideoResultaatInfo(infovandaag, infohistorie) {
	//Het downloadoverzicht in de SerVisionmodule bevat alleen de downloads van vandaag
	//De laaste kolom met verwijderknoppen wordt verwijderd
	if (infovandaag == "")
		$(".SerVisionDownloadsoverzicht").hide();
	else if ($(".SerVisionDownloadsoverzicht").html() != infovandaag) {
		$(".SerVisionDownloadsoverzicht").show().html(infovandaag);
		$(".SerVisionDownloadsoverzicht td[id=verwijder],th[id=verwijder]").remove();
		if ($(".SerVisionDownloadsoverzicht tr").length == 1) {
			var melding = "<div style='border:1px solid #9CB6C5;padding:2px;background-color:#C2DCF0'>Geen videofragmenten aanwezig voor vandaag</div>";
			$(".SerVisionDownloadsoverzicht").html(melding);
		}
	}
	//Het downloadoverzicht in de SerVisiondownloadsmodules bevat alle downloads
	//De annuleerknop wordt hieruit verwijderd en de misluktknop wordt door tekst vervangen
	//De cameranaam wordt vervangen door een downloadlink
	if ($(".SerVisionDownloadsoverzichtmodule").html() != infohistorie) {
		$(".SerVisionDownloadsoverzichtmodule").html(infohistorie);
		BindOverzichtMouseHover();
		$(".SerVisionDownloadsoverzichtmodule span a[onclick*=annuleer]").parent("span").css("display", "none");
		$(".SerVisionDownloadsoverzichtmodule a[onclick*=herstart]").parent().html("Mislukt");
		$(".SerVisionDownloadsoverzichtmodule tr").each(function(index) {
			var downloadinfo = $(this).children("td[id=download]").html();
			if (downloadinfo) {
				var bestand = downloadinfo.substring(downloadinfo.indexOf("videobestand:") + 14);
				var bestand = bestand.substring(0, bestand.indexOf("'"));
				var downloadnaam = $(this).children("td[id=camera]").attr("class");
				if (downloadnaam != "") {
					var bestand = bestand.substring(0, bestand.lastIndexOf("/") + 1) + "dl/" + downloadnaam + bestand.substring(bestand.lastIndexOf("/"));
					var camera = $(this).children("td[id=camera]").text();
					$(this).children("td[id=camera]").html(String.format("<a href=\"{0}\" title=\"Download het videofragment voor camera '{1}'\">{1}</a>", bestand, camera));
				}
			}
		});
	}
}

//Wordt aangeroepen vanuit Silverlight
function MarkeerVideoInforegel(recordingId) {
	$(String.format(".SerVisionDownloadsoverzicht [class^={0}]", recordingId)).css("background-color", "#5CFF21");
	alert("Er is al een videofragement beschikbaar voor de gevraagde starttijd, opnameduur en camera. Het fragment is gemarkeerd in het overzicht.");
}

function paginaScrollpositie() {
	var xScroll, yScroll;
	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
		xScroll = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop) {
		yScroll = document.documentElement.scrollTop;
		xScroll = document.documentElement.scrollLeft;
	} else if (document.body) {// all other Explorers 
		yScroll = document.body.scrollTop;
		xScroll = document.body.scrollLeft;
	}
	return new Array(xScroll, yScroll)
}

function SpeelVideofragment(info) {
	//Verberg de SerVisionvideo en ga verder als de animatie is voltooid
	$("#servisionvideodiv").slideUp("fast", function() { SpeelVideo(info); });
}

function StopVideo() {
	$('object,embed', '#videospeler').each(function() {
		try { this.controls.stop(); } catch (e) { }
		return false;
	});
}

function VideoStatusVeranderd() {
	//1=gestopt, 2=gepauzeerd 3=video speelt
	var status = $('object,embed', '#videospeler')[0].playstate;
	if (status == 2 || status == 3)
		$("#volschermweergaveoptie").fadeIn("fast");
	if (status == 1)
		$("#volschermweergaveoptie").fadeOut("fast");
}

function SpeelVideo(info) {
	//Positioneer het dialoogvenster
	var paginaScroll = paginaScrollpositie();
	var startpositie = $('#resultaatdiv').offset();
	var yOffsetDialoogvenster = startpositie.top - paginaScroll[1];
	$("#DownloadsVideospeler").dialog("option", "position", [paginaScroll[0] + startpositie.left - 10, yOffsetDialoogvenster]);
	//Toon de live camerabeelden opnieuw na sluiten van het dialoogvenster
	$("#DownloadsVideospeler").dialog({ close: function(event, ui) { $("#servisionvideodiv").slideDown("slow"); }, beforeclose: StopVideo });
	//Titel en video-informatie
	$('#DownloadsVideospeler').dialog({ title: String.format("Videobron: {0}, camera: {1}", info.devicenaam.toLowerCase(), info.cameranaam.toLowerCase()) });
	$('#recordinfoDevicenaam').html(info.devicenaam);
	$('#recordinfoCameranaam').html(info.cameranaam);
	$('#recordinfoAanvraagdatum').html(info.aanmaakdatum);
	$('#recordinfoStart').html(info.start);
	$('#recordinfoLengte').html(String.format("{0} (uu:mm:ss)", info.lengte));
	$('#unitklokafwijking').html(info.unitklokafwijking);
	$('#recordinfoOpmerking').html(info.opmerking);
	//Tabel-stijl
	$('#videoinfotabel').css("width", "408px");
	$('#videoinfotabel').css("margin-left", "10px");
	$('#videoinfotabel').css("border", "1px solid silver");
	$('#videoinfotabel').css("border-bottom", "0px solid silver");
	//Tabelkolommen - eerste kolom
	$('#videoinfotabel td:even').css("border-right", "1px solid silver");
	$('#videoinfotabel td:even').css("background-color", "#EDDFC9");
	$('#videoinfotabel td:even').css("width", "110px");
	//Tabelkolommen - tweede kolom
	$('#videoinfotabel td:odd').css("background-color", "#F9F9F9");
	//Tabelkolommen - eerste en tweede kolom
	$('#videoinfotabel td').css("border-bottom", "1px solid silver");
	$('#videoinfotabel td').css("padding", "2px");
	//Div - videospeler
	$('#DownloadsVideospeler div:first').css("border", "1px solid silver");
	$('#DownloadsVideospeler div:first').css("margin-top", "5px");
	//De videospeler
	$('#videospeler').media({
		width: 320,
		height: 310,
		autoplay: true,
		src: info.videobestand,
		caption: false,
		id: "SerVisionMediaPlayer"
	});
	$("#DownloadsVideospeler").dialog("open");
}

//Wordt aangeroepen vanuit de servisionmodule aan de serverkant
function SerVisionAlarm(moduleID, TReDSdeviceID, alarmdockpanelClientID, TReDSAlarmdeviceID, videoBijAlarm, videoContentClientID, isOverzichtsmodule) {
	var This = this;

	var maakAlarmmodule = function() {
		if (This.maakAlarmmodule(moduleID, TReDSdeviceID, alarmdockpanelClientID, TReDSAlarmdeviceID, videoBijAlarm, videoContentClientID, isOverzichtsmodule))
			return;
		setTimeout(maakAlarmmodule, 500);
	};
	maakAlarmmodule(moduleID, TReDSdeviceID, alarmdockpanelClientID, TReDSAlarmdeviceID, videoBijAlarm, videoContentClientID, isOverzichtsmodule);

	if (Sys) {
		this.aspAjaxUnloader = function() {
			This.unload();
			Sys.WebForms.PageRequestManager.getInstance().remove_pageLoading(This.aspAjaxUnloader);
		}
		Sys.WebForms.PageRequestManager.getInstance().add_pageLoading(this.aspAjaxUnloader);
	}
}

SerVisionAlarm.prototype = {
	alarmmodule: null,
	unload: function() {
		if (window.TReDS && this.alarmmodule) {
			window.TReDS.VerwijderSerVisionAlarmModule(this.alarmmodule);
			this.alarmmodule = null;
		}
	},
	startSerVisionDownload: function(opmerking, start, eind) {
		if (this.alarmmodule)
			this.alarmmodule.StartSerVisionDownload(opmerking, start, eind);
	},
	herstartSerVisionDownload: function(recordingID) {
		if (this.alarmmodule)
			this.alarmmodule.HerstartSerVisionDownload(recordingID);
	},
	verwijderSerVisionDownload: function(recordingID) {
		if (this.alarmmodule)
			this.alarmmodule.VerwijderSerVisionDownload(recordingID);
	},
	annuleerSerVisionDownload: function(recordingID) {
		if (this.alarmmodule)
			this.alarmmodule.AnnuleerSerVisionDownload(recordingID);
	},
	maakAlarmmodule: function(moduleID, TReDSdeviceID, alarmdockpanelClientID, TReDSAlarmdeviceID, videoBijAlarm, videoContentClientID, isOverzichtsmodule) {
		if (window && window.TReDS) {
			if (this.alarmmodule != null)
				return true;
			this.alarmmodule = window.createNewAlarmmodule();
			this.alarmmodule.ModuleID = moduleID;
			this.alarmmodule.DockpanelClientID = alarmdockpanelClientID;
			this.alarmmodule.TReDSAlarmdeviceID = TReDSAlarmdeviceID;
			this.alarmmodule.TReDSdeviceID = TReDSdeviceID;
			this.alarmmodule.VideoBijAlarm = videoBijAlarm;
			this.alarmmodule.VideoContentClientID = videoContentClientID;
			this.alarmmodule.IsOverzichtsmodule = isOverzichtsmodule;

			window.TReDS.RegistreerSerVisionAlarmModule(this.alarmmodule);
		}
	}
}