(function() {

	function $(id) {
		return document.getElementById(id);
	}

	function setStyleDisplay(id, status) {
		$(id).style.display = status;
	}

	function goTop(a, t) {
		a = a || 0.1;
		t = t || 16;

		var x1 = 0;
		var y1 = 0;
		var x2 = 0;
		var y2 = 0;
		var x3 = 0;
		var y3 = 0;

		if (document.documentElement) {
			x1 = document.documentElement.scrollLeft || 0;
			y1 = document.documentElement.scrollTop || 0;
		}
		if (document.body) {
			x2 = document.body.scrollLeft || 0;
			y2 = document.body.scrollTop || 0;
		}
		var x3 = window.scrollX || 0;
		var y3 = window.scrollY || 0;

		var x = Math.max(x1, Math.max(x2, x3));
		var y = Math.max(y1, Math.max(y2, y3));

		var speed = 1 + a;
		window.scrollTo(Math.floor(x / speed), Math.floor(y / speed));
		if (x > 0 || y > 0) {
			var f = "MGJS.goTop(" + a + ", " + t + ")";
			window.setTimeout(f, t);
		}
	}

	function switchTab(showPanels, hidePanels, activeTab, activeClass, fadeTab,
			fadeClass) {
		$(activeTab).className = activeClass;
		$(fadeTab).className = fadeClass;

		var panel, panelList;
		panelList = showPanels.split(',');
		for ( var i = 0; i < panelList.length; i++) {
			var panel = panelList[i];
			if ($(panel)) {
				setStyleDisplay(panel, 'block');
			}
		}
		panelList = hidePanels.split(',');
		for ( var i = 0; i < panelList.length; i++) {
			panel = panelList[i];
			if ($(panel)) {
				setStyleDisplay(panel, 'none');
			}
		}
	}

	function loadCommentShortcut() {
		$('comment').onkeydown = function(moz_ev) {
			var ev = null;
			if (window.event) {
				ev = window.event;
			} else {
				ev = moz_ev;
			}
			if (ev != null && ev.ctrlKey && ev.keyCode == 13) {
				$('submit').click();
			}
		}
		$('submit').value += ' (Ctrl+Enter)';
	}

	function getElementsByClassName(className, tag, parent) {
		parent = parent || document;

		var allTags = (tag == '*' && parent.all) ? parent.all : parent
				.getElementsByTagName(tag);
		var matchingElements = new Array();

		className = className.replace(/\-/g, '\\-');
		var regex = new RegExp('(^|\\s)' + className + '(\\s|$)');

		var element;
		for ( var i = 0; i < allTags.length; i++) {
			element = allTags[i];
			if (regex.test(element.className)) {
				matchingElements.push(element);
			}
		}

		return matchingElements;
	}

	window['MGJS'] = {};
	window['MGJS']['$'] = $;
	window['MGJS']['setStyleDisplay'] = setStyleDisplay;
	window['MGJS']['goTop'] = goTop;
	window['MGJS']['switchTab'] = switchTab;
	window['MGJS']['loadCommentShortcut'] = loadCommentShortcut;
	window['MGJS']['getElementsByClassName'] = getElementsByClassName;

})();

function displayElement($id) {
	$el = document.getElementById($id);

	if ($el.style.display == 'block') {
		$el.style.display = 'none';

	} else {
		$el.style.display = 'block';
	}
}

function slideSwitch() {
    var $active = $('#slideshow img.active');
	$active.addClass('last-active');
    var $next =  $active.next().length ? $active.next() : $('#slideshow img:first');
    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
	setInterval( "slideSwitch()", 5000 );
});
