/* gzipped */

var flagToggleJS = {


/* - - - - - - - - - - - - - - - - - - - -
		User-definable settings:
		You can change these if you want
- - - - - - - - - - - - - - - - - - - - - */

		// Define name for cookie
	cookieName: 'flag-toggle',

		// Define toggle text
		// e.g. 'Open external links in new window?'
	toggleText: 'Open external links in new windows?',

		// Define whether to use only one new window for all external links or a new window each time
		// Values: 'one' or 'many'
	newWindows: 'one',


/* - - - - - - - - - - - - - - - - - - - -
		Change nothing below this
- - - - - - - - - - - - - - - - - - - - - */

	init: function() {

		flagToggleJS.addToggle();
		flagToggleJS.setToggleByCookie();
		flagToggleJS.flagExternalLinks();

		},

	setToggleByCookie: function() {

		if (document.getElementById('toggler')) {
      var cookie = libJS.readCookie(flagToggleJS.cookieName);

      if (cookie == 'true' || cookie == null)
        document.getElementById('toggleSwitch').checked = true;
		}

		},

	extLinks: null,

	flagExternalLinks: function() {

		extLinks = libJS.getExternalLinks();
		for (var i = 0, tEl; tEl = extLinks[i]; i++) {
			if (tEl.getElementsByTagName('img').length == 0) {
				libJS.addClassName(tEl,'external');
			}
		}

		flagToggleJS.useNewWindows();

		},

	addToggle: function() {

		if (!document.getElementById('toggler')) return;

		var toggleParent = document.getElementById('toggler');

		var toggleLabel = document.createElement('label');
			toggleLabel.setAttribute('htmlFor','toggleSwitch');

		var toggleCheckbox = document.createElement('input');
			toggleCheckbox.setAttribute('type','checkbox');
			toggleCheckbox.setAttribute('id','toggleSwitch');
			libJS.addEvent(toggleCheckbox,'click',flagToggleJS.useNewWindows);

		toggleLabel.appendChild(toggleCheckbox);
		toggleLabel.appendChild(document.createTextNode(' ' + flagToggleJS.toggleText));
		toggleParent.appendChild(toggleLabel);

		},

	useNewWindows: function() {

		if (document.getElementById('toggleSwitch')) {
			setVar = document.getElementById('toggleSwitch').checked
		} else if (libJS.readCookie(flagToggleJS.cookieName) == 'true') {
			setVar = (libJS.readCookie(flagToggleJS.cookieName) == 'true');
		} else {
			setVar = false;
		}

		libJS.createCookie(flagToggleJS.cookieName,setVar,365);

		if  (setVar == true) {

			for (var i = 0, aEl; aEl = libJS.extLinks[i];i++) {
				libJS.addEvent(aEl,'click',flagToggleJS.popup,'degrade');
				libJS.addEvent(aEl,'click',libJS.stopDefault,'degrade');
				libJS.addClassName(aEl,'new-window');

				aEl.title += (aEl.title == '') ? '(New window)' : ' (New window)';

				var nwSpan = document.createElement('span');
				libJS.addClassName(nwSpan,'new-window');

				aEl.appendChild(nwSpan);

			}

		} else {

			for (var i = 0, aEl; aEl = libJS.extLinks[i]; i++) {

				aEl.title = (aEl.title == '(New window)') ? '' : aEl.title.replace(' (New window)','');

				libJS.removeClassName(aEl,'new-window');
				libJS.removeEvent(aEl,'click',flagToggleJS.popup,'degrade');
				libJS.removeEvent(aEl,'click',libJS.stopDefault,'degrade');

				var relSpan = libJS.getElementsByClassName('new-window','span',aEl);
				if (relSpan[0]) aEl.removeChild(relSpan[0]);

			}

		}

		},

	popup: function() {

		var winTarget = (flagToggleJS.newWindows == 'one') ? 'new' : '_blank';
		var newWin = window.open(this.href,winTarget);

		}

}

libJS.addEvent(window,'load',flagToggleJS.init);