String.prototype.startsWith = function(str) { return (this.match("^" + str) == str) }
String.prototype.endsWith = function(str) { return (this.match(str + "$") == str) }

function switchTab(obj, index)
{
	var $li = $(obj).parent();
	if (!$li.hasClass('selected')) {
		$li.siblings('.item').removeClass('selected');
		$li.addClass('selected');
		$('.overview').toggleClass('hide');
		$('.overview').toggleClass('show');
		$('.moreinfo').toggleClass('hide');
		$('.moreinfo').toggleClass('show');
	}
}

function switchToReadMore() {
	var $li = $('.tabs').children();
	$li.eq(0).removeClass('selected');
	$li.eq(1).addClass('selected');
	$('.overview').toggleClass('hide');
	$('.overview').toggleClass('show');
	$('.moreinfo').toggleClass('hide');
	$('.moreinfo').toggleClass('show');
	window.scrollTo(0, 0);
}

$(document).ready(function()
{
	var dictionary = $('.terms .termslink');
	dictionary.each(function()
	{
		$(this).click(termsToggle);
	});
	var terms = $('.epi a');
	terms.each(function()
	{
		var $this = $(this);
		if ($this.attr('href') != null && $this.attr('href').startsWith(linkWordListPage))
		{
			$(this).mouseenter(termsPopup);
			$(this).mouseleave(termsPopupLeave);
			$(this).addClass("term");
		}
	});
	$('<div class="overlay"></div>').appendTo('body');
	var lightbox = $('#lightbox');
	var greyout = $('#greyout');
	greyout.css('opacity', '0.25');
	if ($.browser.msie && parseInt($.browser.version.substr(0, 1), 10) < 7)
	{
		greyout.css('position', 'absolute');
		lightbox.css('position', 'absolute');
	}
	$(document).mousemove(function(e)
	{
		var obj = $('.overlay');

		if (obj.is(':visible'))
		{
			obj.css('left', (e.pageX + 10) + 'px');
			obj.css('top', ((e.pageY - 10) - obj.height() - 20) + 'px');
		}
	});
});

function termsPopupLeave() {
	$('.overlay').hide();
}

function termsPopup() {
	var obj = $(this);
	if (obj.data('popup') == null) {
		$('.overlay').show();
		$('.overlay').html('&nbsp;');
		var req = new WebReq();
		req.get(obj.attr('href'), null, function(data) {
			var overlay = $('.overlay');
			overlay.html(data);
			//overlay.show();
			obj.data('popup', data);
		});
	}
	else {
		var overlay = $('.overlay');
		overlay.html(obj.data('popup'));
		overlay.show();
	}
}

function termsToggle() {
	var obj = $(this);
	if (obj.hasClass('open')) {
		obj.siblings('.more').slideDown('fast');
		obj.removeClass('open');
		obj.addClass('close');
	}
	else {
		obj.siblings('.more').slideUp('fast');
		obj.removeClass('close');
		obj.addClass('open');
	}
	return false;
}

function shareOpen() {
	var lightbox = $('#lightbox');
	lightbox.addClass('visible');
	lightbox.removeClass('hidden');
	var greyout = $('#greyout');
	greyout.addClass('visible');
	greyout.removeClass('hidden');
}

function shareClose() {
	var lightbox = $('#lightbox');
	lightbox.removeClass('visible');
	lightbox.addClass('hidden');
	var greyout = $('#greyout');
	greyout.removeClass('visible');
	greyout.addClass('hidden');
}

function WebReq() {
	// init
};
WebReq.prototype._before = function(XMLHttpRequest) {
	XMLHttpRequest.setRequestHeader('IsAjaxCall', 'true');
}
WebReq.prototype.get = function(url, data, callback) {
	$.ajax({ type: 'GET', url: url, data: data, success: callback, beforeSend: this._before, error: this._error });
}
WebReq.prototype._error = function(XMLHttpRequest, textStatus, errorThrown) {
	alert('Error\nCould not load page.\n\n' + textStatus + '\n' + errorThrown);
}