/**
 * @projectDescription Home page related JavaScript code.
 * @author edwin edwin@8projects.nl
 * @version 1.0
 */

/* FIXME: This should not be needed
if (document.location.hostname == "songdna.me") {
	document.location = "http://www.songdna.me/";
}
 * 
 */

/**
 * @classDescription Home page class. 
 */
Home = Class.create();

Home.prototype = {
	blogEnabled: true,
	
	/**
	 * Construct the Home page object.
	 */
	initialize: function() {
		Event.observe(window, "load", this.onLoad.bind(this));
	},
	
	/**
	 * On-load initialization of the home page.
	 */
	onLoad: function() {
		this.btnToggleLanguage = $("btn_toggleLanguage");
		if (this.btnToggleLanguage) {
			this.btnToggleLanguage.onclick = this.toggleLanguage.bindAsEventListener(this);
		}
		
		var mailLinks = document.getElementsByClassName("lnkMail");
		for( var i = 0; i < mailLinks.length; ++i ) {
			var m = mailLinks[i];
			m.style.cursor = "pointer";
			Event.observe(m, "click", this.sendMail.bindAsEventListener(this));
		}

		this.termsLink = $("lnk_terms");
		this.termsLink.onclick = this.popupTerms.bindAsEventListener(this);
		
		var initialTab = Util.getUrlParameter("tab", "home");
		var initialLang = Util.getUrlParameter("lang", "en");
		
		this.tabManager = new Util.TabManager(
			"main_navigation", 
			["div_home", "div_iphone", "div_android", "div_widget", "div_feedback", "div_blog", "div_about", "div_contact", ],
			"div_" + initialTab);

/* FIXME: for blog on domain		if (!this.blogEnabled) {
			var blogLink = $("lnk_blog");
			Event.observe(blogLink, "click", this.popupBlog.bindAsEventListener(this));
			blogLink.removeAttribute("href");
			this.tabManager.enableTab(4, false);
		}
*/		
		this.tabManager.setStoreTabState(true);
		
		Util.fixExternalLinks();
	},
	
	sendMail: function(e) {
		if (e) {
			e.preventDefault();
		}
		var m = ['e','m','.','a','n','d','g','n','o','s','@','o','f','n','i'];
		window.location.href = "mailto:" + m.reverse().join('');
		return false;
	},
	
	/**
	 * Click handler of the language link.
	 * @param {Event} e Click event.
	 */
	toggleLanguage: function(e) {
		Event.stop(e);
		var newLangCode = messageSource.langCode == "nl" ? "en" : "nl";
		messageSource.change(newLangCode);
	},
	
	/**
	 * Click handler of the Terms and Conditions link.
	 * @param {Event} e Click event.
	 */
	popupTerms: function(e) {
		Event.stop(e);
		if (this.termsPopup == null) {
			this.termsPopup = new Util.Popup({
				bodyId: "terms_popup",
				title: "Terms &amp; Conditions",
				closable: true,
				minimizable: false,
				draggable: true,
				dragHandle: "title",
				resizable: false,
				maxWidth: 800,
				maxHeight: 600,
				modal: false,
				fading: true,
				shadow: true,
				position: "nElement",
				positionElement: "lnk_terms",
				positionAlignX: "center",
				positionAlignY: "above",
				positionOffset: [0, -150],
				setPosition: "always"
			});
		}
		this.termsPopup.show(!this.termsPopup.isVisible());
	},
	
	popupBlog: function(e) {
		Event.stop(e);
		if (this.blogPopup == null) {
			this.blogPopup = new Util.Popup({
				bodyId: "blog_popup",
				closable: false,
				minimizable: false,
				draggable: false,
				resizable: false,
				modal: false,
				fading: true,
				shadow: true,
				position: "sElement",
				positionElement: "lnk_blog",
				positionAlignX: "center",
				positionAlignY: "below",
				positionOffset: [0, 1],
				setPosition: "always",
				timeout: 5
			});
		}
		this.blogPopup.show(!this.blogPopup.isVisible());
		return false;
	}
};

/**
 * Home page instance.
 * @type Home
 */
var home = new Home();
