﻿var title = { src: '/Themes/bdn-notfallplan/Assets/title.swf' };

sIFR.domains = ['*.nuklearmedizin-life.de', 'nuklearmedizin-life.de'];
sIFR.activate(title);

var sifrElements = { "title" : title };

var printState = null;
var lockObj = new Object();
var mpRunning = false;
var resizeTimer = null;

function getPrintState()
{
	return printState;
}

var Site = new Class(
{
	initialize: function()
	{
		this.mpEffect = null;
		this.mpDialogEffect = null;
	},

	createEffects: function()
	{
		site.mpEffect = new Fx.Morph($("mp"), { duration: 200, transition: Fx.Transitions.Quad.easeInOut, link: 'cancel' });
		site.mpDialogEffect = new Fx.Morph($("mpDialog"), { transition: Fx.Transitions.Sine.easeInOut, link: 'cancel' });
	},

	load: function()
	{
		layoutCells.smartPadding = 0;
		site.createEffects();

		ui.onBeforeRequest = function()
		{
			$("lcCenter.pnlLoading").setProperty("class", "loadingA");

			if (stateHistory.active && stateHistory.position >= 0)
			{
				stateHistory.states[stateHistory.position] = site.buildState();
			}
		}

		ui.onAfterRequest = function()
		{
			$("lcCenter.pnlLoading").setProperty("class", "loadingI");

			site.refreshSite();

			if (stateHistory.active)
			{
				stateHistory.push();

				lockObj = new Object();

				var iRoute = $("iRoute");
				iRoute.src = "iRoute.aspx?d=" + stateHistory.position;
			}

			//window.scrollTo(0, 0);

			site.bindCrossLinks();
			//site.bindMaps();
		}

		ui.onReceiveModalPopup = function()
		{
			site.showModalPopup();
		}

		ui.registerResizeHandler(site.refreshSite);

		ui.load();

		stateHistory.load();

		//site.bindCrossLinks();
		//site.bindMaps();
	},

	bindCrossLink: function(title)
	{
		ui.executeAction('dlgSite', '__crossPage', base64Json.encode({ '__type': 'de', 'Title': title }));
	},

	crossLink_Click: function()
	{
		site.bindCrossLink(this.get('text'));
	},

	crossLink_MouseEnter: function()
	{
		this["mouseOver"] = true;
		this.setProperty("class", this.getProperty("class").replace("Link", "LinkH"));
	},

	crossLink_MouseLeave: function()
	{
		this.setProperty("class", this.getProperty("class").replace("LinkH", "Link"));
		this["mouseOver"] = false;
	},

	onMapsLoaded: function()
	{
		for (var i = 0; i < site.mapElements.length; i++)
		{
			var mapElement = site.mapElements[i];

			var innerText = mapElement.get('text');
			var tokens = innerText.split("|");

			mapElement.setStyle("display", "block");

			var map = new google.maps.Map2(mapElement);

			map.setCenter(new google.maps.LatLng(tokens[0].toFloat(), tokens[1].toFloat()), tokens[2].toInt(), G_HYBRID_MAP);
			map.addOverlay(new GMarker(new GLatLng(tokens[0].toFloat(), tokens[1].toFloat())));
			map.addControl(new GMapTypeControl());
			map.addControl(new GSmallZoomControl());
		}

		site["mapElements"] = [];

		site.refreshSite();
	},

	bindMaps: function()
	{
		site["mapElements"] = [];
		site.mapElements = $("pnlSite").getElements(".googleMaps");

		if (site.mapElements.length > 0)
		{
			google.load("maps", "2", { "callback": site.onMapsLoaded });
		}
	},

	internalBindCrossLinks: function(selector)
	{
		var crossLinks = $("pnlSite").getElements(selector);

		for (var i = 0; i < crossLinks.length; i++)
		{
			var crossLink = crossLinks[i];

			crossLink["mouseOver"] = false;

			crossLink.removeEvents('mouseenter');
			crossLink.removeEvents('mouseleave');
			crossLink.removeEvents('click');

			crossLink.addEvent('mouseenter', site.crossLink_MouseEnter);
			crossLink.addEvent('mouseleave', site.crossLink_MouseLeave);
			crossLink.addEvent('click', site.crossLink_Click);
		}
	},

	bindCrossLinks: function()
	{
		site.internalBindCrossLinks(".crossLink");
	},

	dummy: function()
	{

	},

	refreshSite: function()
	{
		site.resizeModalPopup();
	},

	buildState: function()
	{
		return base64Json.encode(ui.collectDialogState($("dlgSite")));
	},

	printPage: function()
	{
		printState = ui.collectDialogState($("dlgPage"));
		var wndPrint = window.open("ProxyPrint.aspx", "Print", "width=600px,height=600px,left=50px,top=50px,toolbar=no,menubar=no,scrollbars=yes");
	},

	positionModalPopupDialog: function(beSmooth)
	{
		var mpDialog = $("mpDialog");

		var wndSize = window.getSize();
		var wndScroll = window.getScroll();

		var mpDialogSize = mpDialog.getSize();
		var mpDialogLeft = (wndSize.x - mpDialogSize.x) / 2 + wndScroll.x;
		var mpDialogTop = (wndSize.y - mpDialogSize.y) / 2 + wndScroll.y;

		if (beSmooth)
		{
			site.mpDialogEffect.start({ left: mpDialogLeft, top: mpDialogTop });
		}
		else
		{
			mpDialog.setStyles({ left: mpDialogLeft, top: mpDialogTop });
		}
	},

	resizeModalPopup: function()
	{
		if (mpRunning == false)
		{
			return;
		}

		var mp = $("mp");
		var mpDialog = $("mpDialog");

		var wndSize = window.getSize();
		mp.setStyles({ width: wndSize.x, height: wndSize.y });

		var wndScrollSize = window.getScrollSize();
		mp.setStyles({ width: wndScrollSize.x, height: wndScrollSize.y });

		site.positionModalPopupDialog(false);
	},

	hideModalPopup: function()
	{
		var mp = $("mp");
		var mpDialog = $("mpDialog");

		window.onscroll = function() { };

		mpDialog.setStyles({ display: "none" });
		$("mpDialogInner").empty();

		site.mpEffect.start({ opacity: [0.9, 0.0] }).chain(
			function()
			{
				mp.setStyles({ display: "none" });
				mpRunning = false;
			}
		);
	},

	showModalPopup: function()
	{
		mpRunning = true;
		site.resizeModalPopup();

		var mp = $("mp");
		var mpDialog = $("mpDialog");

		mp.setOpacity(0.0);
		mp.setStyles({ display: "block" });

		mpDialog.setOpacity(0.0);
		mpDialog.setStyles({ display: "block" });

		site.ensureTypo();

		site.positionModalPopupDialog(false);

		site.mpEffect.start({ opacity: [0.0, 0.9] }).chain(
			function()
			{
				mpDialog.setOpacity(1.0);
				window.onscroll = function()
				{
					site.positionModalPopupDialog(true);
				}
			}
		);
	}
});

var site = new Site();

window.addEvent('domready', function()
{
	site.load();
});