// Solna stad
// Javascript

/* It's not really cool to add className to the <html>-element, 
   but it's needed to avoid flickering in IE when hiding content. */
document.documentElement.className = "js";

SolnaStad = {};

// Links to any of these domains should not be marked as external
SolnaStad.InternalDomains = [
	'solna.se',
	'www.solna.se',
	'app.readspeaker.com'
];

SolnaStad.getThemePath = function (path) {
	return SolnaStad.themeBasePath + path.replace(/^\//, '');
};
SolnaStad.themeBasePath = '/themes/brown/';

SolnaStad.FormFixer = (function () {
	return {
		// Pass in any form elements as jQuery objects or selector strings
		init: function () {
			if (arguments.length) {
				$.each(arguments, function () {
					$(this).each(function () {
						SolnaStad.FormFixer.fixButtons(this);
					});
				});
			}
		},
		// Replace submit-inputs with spans and buttons for better styling
		fixButtons: function (form) {
			$('input[type=submit]', form).each(function () {
				var oldButton = $(this),
				    newButton = $('<button type="submit">' + oldButton.val() + '</button>');
				// Copy attributes from old button to new button
				['id', 'class', 'name', 'value'].each(function () {
					var attr = oldButton.attr(this.toString());
					if (attr) {
						newButton.attr(this.toString(), attr);
					}
				});
				// Insert new button
				oldButton.after(newButton);
				newButton.wrap('<span class="button"><span><span><span><span></span></span></span></span></span>');
				// Add clearfix to submit-area
				oldButton.closest('.submit-area').addClass('cf');
				// Hide old button. If it is removed from the DOM, pressing enter in the form won't work in IE
				oldButton.hide();
			});
		}
	};
})();

SolnaStad.ReadSpeakerPlayer = function(el) {
	el = $(el);

	el.click(function (e) {
		var so = new SWFObject("/js/player_mp3_mini.swf", "mpl", "200", "20", "8", SolnaStad.ReadSpeakerPlayer.colors.bgcolor);
		if (so.installedVer.major > 8) {
			e.preventDefault();
		}
		// /plugins/readspeaker.aspx
		$.get("/plugins/readspeaker.aspx?url=" + escape(el.attr('href').replace("save=1", "type=0") + "&readid=content-primary"), function(url) {
			var mp3File = escape(url);

			so.addVariable("mp3", mp3File);
			so.addVariable("autoplay", "1");
			so.addVariable("loadingcolor", SolnaStad.ReadSpeakerPlayer.colors.loadingcolor);
			so.addVariable("buttoncolor", SolnaStad.ReadSpeakerPlayer.colors.buttoncolor);
			so.addVariable("slidercolor", SolnaStad.ReadSpeakerPlayer.colors.slidercolor);

			so.write(el.parent().attr('id'));
		});
	});
};
SolnaStad.ReadSpeakerPlayer.colors = {
	bgcolor: '#5b513f',
	loadingcolor: 'ffffff',
	buttoncolor: 'ffffff',
	slidercolor: 'ffffff'
};

// Startup scripts
jQuery(function() {

	//Remember default values of some elements
	$('.find input[type=text]').rememberDefaultValue();

	// Fix some form stuff
	SolnaStad.FormFixer.init($('.form-general, .search'));

	// Add classname to external links, excluding banner links
	$('#content a:not(.banner a)').each(function() {
		var t = $(this);
		if (t.isExternal()) {
			t.addClass('external');
			t.html('<span>' + t.text() + '</span>');
			t.append('<span class="icon"/>');
		}
	});

	if ($.datepicker) {
		// Attach datepickers
		$('input.date').datepicker($.extend($.datepicker.regional['sv'], {
			duration: ''
		}));
	}

	if ($.fn.filelist) {
		$('ul.file-list.collapsable > li > ul').filelist().filelistExpand();
	}

	$("#listen a").each(function() {
		var rs = new SolnaStad.ReadSpeakerPlayer(this);
	});


	// Add print-link
	if (!(document.isStartPage() || document.isSubSectionPage())) {
		var printLink = document.articleFunctions.addItem({
			text: 'Skriv ut sidan',
			className: 'print-page',
			callback: function(e) {
				e.preventDefault();
				window.print();
			}
		});

		// Hide contact form
		var contactForm = $('#contact-publisher');
		if (contactForm.size()) {
			if (window.location.hash == '#contact-publisher') {
				contactForm.show();
				contactForm.isHidden = false;
			} else {
				contactForm.hide();
				contactForm.isHidden = true;
			}
			var contactLink = $('<a href="#">' + contactForm.find('h2:first').text() + '</a>');
			contactLink.click(function(e) {
				e.preventDefault();
				if (contactForm.isHidden) {
					contactForm.animate({
						height: 'show',
						opacity: 'show'
					}, 'slow', function() {
						var targetOffset = contactForm.offset().top;
						$('html,body').animate({
							scrollTop: targetOffset
						}, 1000, function() {
							window.location.hash = '#contact-publisher';
						});
						contactForm.isHidden = false;
					});
				} else {
					contactForm.animate({
						height: "hide",
						opacity: "hide"
					}, 'slow', function() {
						contactForm.isHidden = true;
					});
				}
			});
			$('<p class="publisher"></p>').appendTo($('.article-info')).append(contactLink);
		}
	}

	// Google Translate popup
	var googleTranslateLink = $("#gtranslate a"),
	    googleTranslatePopUp;
	
	function getGTLanguages () {
		var optionList = [];
		var option = '<option value="{0}">{1}</option>';
		for (var i in google.language.Languages) {
			if (i !== "UNKNOWN" && google.language.isTranslatable(google.language.Languages[i])) {
				optionList.push(option.format(google.language.Languages[i], i.replace("_", " ").capitalize()));
			}
		}
		return ('<option value="-1">Select language</option>' + optionList.join(''));
	}
	
	googleTranslateLink.click(function(e) {
		if (google) {
			e.preventDefault();
			if (! googleTranslatePopUp) {
				function buildPopUp() {
					var content = $('<form action=""></form>'),
					    select;
					content.append('<h2>Translate page</h2><p>Automatically translate this page using Google Translate.</p><p>Solna stad does not take any responsibility for the accuracy of the translation.</p>');
					select = $('<select id="select-language">');
					select.append(getGTLanguages());
					content.append('<label for="select-language">Translate from Swedish into</label>');
					content.append(select);
					content.append('<input type="submit" value="Translate" />');
					content.append(google.language.getBranding());
					content.submit(function(e) {
						e.preventDefault();
						var selectedval = $(this).find("option:selected").attr("value"),
						    q = $.parseQuery(googleTranslateLink.attr("search"));
						document.location.href = googleTranslateLink.attr("href").replace("hl=" + q.hl, "hl=" + selectedval).replace("tl=" + q.tl, "tl=" + selectedval);
					});
					googleTranslatePopUp = SolnaStad.PopUpManager.addPopUp({
					    content: content,
					    modal: true,
						className: 'gtranslate-popup'
					});
					googleTranslatePopUp.show();
				}
				google.load('language', '1', {
					'callback': buildPopUp
				});
			} else {
				googleTranslatePopUp.show();
			}
		}
	});
});




SolnaStad.activateEmailLinks = function() {
    var options = {
        emailClass: 'hidden-email',
        textClass: 'email-text',
        addressClass: 'email-address'
    };
    /**
    * Initialization
    */
    function init(opts) {
        // If options were supplied, apply them to the option Object.
        for (var key in opts) {
            if (options.hasOwnProperty(key)) {
                options[key] = opts[key];
            }
        }
        $('.' + options.emailClass).each(function() {
            var textElem = $(this).find('.' + options.textClass + ':first');
            var addressElem = $(this).find('.' + options.addressClass + ':first');
            if ($(addressElem).length) {
                var textText = addressText = $(addressElem).text();
                if ($(textElem).length) {
                    textText = $(textElem).text();
                }
                $(this).html('<a href="mailto:' + addressText.replace("REMOVE_ME","") + '">' + textText.replace("REMOVE_ME","") + '</a>');
            }
        });
    }
    return {
        init: init
    };
} ();


// Init on document ready
$(document).ready(function() {
SolnaStad.activateEmailLinks.init();
    
});