/*global de*/
de = this.de || {};
de.datev = de.datev || {};
de.datev.portal = de.datev.portal || {};
de.datev.portal.foot = function () {
    var thisNamespace = de.datev.portal.foot || {};

	///////////////////////////////////////////////////////
	// Funktionen
	///////////////////////////////////////////////////////
	var init = function () {

		var dom = de.datev.dom;
		var events = de.datev.events;
		var fonts = de.datev.portal.fontsize;
		var popup = de.datev.portal.popup;
		var container = de.datev.portal.container;

		var elemSmall = document.getElementById("cfSchriftSmall");
		var elemMedium = document.getElementById("cfSchriftMedium");
		var elemLarge = document.getElementById("cfSchriftLarge");


		//Info-Title ("Bitte Javascript aktivieren") ausblenden
		//Hover-Bildchen nur bei aktiviertem JavaScript
		if(elemSmall) {
			elemSmall.removeAttribute("title");
			events.addEvent(elemSmall, "mouseover", function() {
				elemSmall.style.backgroundPosition = "0% 100%";
			});
			events.addEvent(elemSmall, "mouseout", function() {
				var parentSmall = elemSmall.parentNode;
				if(!dom.hasClass(parentSmall, "aktiv")){elemSmall.style.backgroundPosition = "0% 0%";}
			});
		}
		if(elemMedium) {
			elemMedium.removeAttribute("title");
			events.addEvent(elemMedium, "mouseover", function() {
				elemMedium.style.backgroundPosition = "0% 100%";
			});
			events.addEvent(elemMedium, "mouseout", function() {
				var parentMedium = elemMedium.parentNode;
				if(!dom.hasClass(parentMedium, "aktiv")){elemMedium.style.backgroundPosition = "0% 0%";}
			});
		}
		if(elemLarge) {
			elemLarge.removeAttribute("title");
			events.addEvent(elemLarge, "mouseover", function() {
				elemLarge.style.backgroundPosition = "0% 100%";
			});
			events.addEvent(elemLarge, "mouseout", function() {
				var parentLarge = elemLarge.parentNode;
				if(!dom.hasClass(parentLarge, "aktiv")){elemLarge.style.backgroundPosition = "0% 0%";}
			});
		}

		var updateFontSizeSelector = function(fontSize) {

			if (!elemSmall || !elemMedium || !elemLarge) {
				return;
			}

			var parentSmall = elemSmall.parentNode;
			var parentMedium = elemMedium.parentNode;
			var parentLarge = elemLarge.parentNode;

			if (!parentSmall || !parentMedium || !parentLarge) {
				return;
			}

			switch (fontSize) {
				case "small":
					dom.addClass(parentSmall, "aktiv");
					elemMedium.style.backgroundPosition = "0% 0%";
					elemLarge.style.backgroundPosition = "0% 0%";

					if(parentMedium && dom.hasClass(parentMedium, "aktiv")) {
						dom.removeClass(parentMedium, "aktiv");
					}
					if(parentLarge && dom.hasClass(parentLarge, "aktiv")) {
						dom.removeClass(parentLarge, "aktiv");
					}
					break;

				case "medium":

					dom.addClass(parentMedium, "aktiv");
					elemSmall.style.backgroundPosition = "0% 0%";
					elemLarge.style.backgroundPosition = "0% 0%";

					if(parentSmall && dom.hasClass(parentSmall, "aktiv")) {
						dom.removeClass(parentSmall, "aktiv");
					}

					if(parentLarge && dom.hasClass(parentLarge, "aktiv")) {
						dom.removeClass(parentLarge, "aktiv");
					}
					break;

				case "large":

					dom.addClass(parentLarge, "aktiv");
					elemSmall.style.backgroundPosition = "0% 0%";
					elemMedium.style.backgroundPosition = "0% 0%";

					if(parentSmall && dom.hasClass(parentSmall, "aktiv")) {
						dom.removeClass(parentSmall, "aktiv");
					}
					if(parentMedium && dom.hasClass(parentMedium, "aktiv")) {
						dom.removeClass(parentMedium, "aktiv");
					}

					break;
			}
		};

		var setFontSizeHandler = function (elem, fontSize) {
			if (elem) {
				events.addEvent(elem, "click", function() {
					fonts.setFontSize(fontSize);
					updateFontSizeSelector(fontSize);
				});
			}
		};


		//(1) UrlParameter-Update

		//(a) Formularaufruf aus dem Portalfooter
		var kontakt = document.getElementById('cfKontakt');
		var empfehlen = document.getElementById('cfEmpfehlen');
		if(kontakt && empfehlen) {

			kontakt = kontakt.getAttribute('href');
			empfehlen = empfehlen.getAttribute('href');

			var portalMailto =  JS_GLOBAL_VAR_KontaktAdresse ?
								encodeURIComponent(JS_GLOBAL_VAR_KontaktAdresse) :
						   		null;

			//(a.a) Url-Parameter aus der Anwendung (die keinen eigenen Footer hat)
			if (container && container.getAnwParameter()) {
				var anwParams = container.getAnwParameter();
			}
			//(a.b) Contentspeziefische Kontaktadresse
			else if (portalMailto) {
				var anwParams = {};
				anwParams.mailto = portalMailto;
			}

			kontakt = de.datev.replaceUrlParameter(kontakt, anwParams);
			empfehlen = de.datev.replaceUrlParameter(empfehlen, anwParams);
		}

		//(b) Portal-Startseite (hat keinen Contentfooter)
		//	  bzw. Formularaufruf aus der Anwendung
		else {
			//darum kuemmert sich die container.js
		}


		// (2) Kontakt-Formular
		popup.setPopupHandler('cfKontakt', de.datev.portal.popup.openWindowKontakt, kontakt, true);

		//(3) Empfehlen-Formular
		popup.setPopupHandler('cfEmpfehlen', de.datev.portal.popup.openWindowRecommendation, empfehlen, true);

		// (4) Drucken
		popup.setPopupHandler('cfDrucken', popup.openWindowPrintPreview);

		//(5) Schriftgroesse
		// (5a)Events an Schriftaenderung haengen
		if(elemSmall && elemMedium && elemLarge) {
			setFontSizeHandler(elemSmall, "small");
			setFontSizeHandler(elemMedium, "medium");
			setFontSizeHandler(elemLarge, "large");
		}

		// (5b)initiale Schriftgröße setzen
		var size = fonts.getFontSize();
		if(size) {
			fonts.setFontSize(size);
			updateFontSizeSelector(size);
		}

		//(6) Sitemap
		popup.setPopupHandler('footerSitemapLink', popup.openWindowSiteMap);
	};


    //////////////////////////////////////////////////////
    // PUBLIC
    //////////////////////////////////////////////////////
    thisNamespace.init = init;


    return thisNamespace;
}(); // de.datev.portal.foot

////////////////////////////////////////////////////////////////
// Ausfuehrung
////////////////////////////////////////////////////////////////
de.datev.events.addEvent(window, "load", de.datev.portal.foot.init);

