/**
 * @author johanolsson
 */

/* ========================  ======================== */
/* ------------------------  ------------------------ */
/* ........................  ........................ */

var evarune = {};

/* ======================== general ======================== */

evarune.markCurrentPage = function() {
	var locURL = window.location.href;
	$('#menu a').each(function(){
		if (locURL.indexOf($(this).attr('href')) >= 0) {
			$(this).addClass('mark');
		}
	});
} 

/* ======================== calendar ======================== */

evarune.calAllDates = [];
evarune.calYears = [];
evarune.initCalView = true;

evarune.calendarCleanOld = function() {
	var chkCurrDate = parseInt($('#serverDate').text());
	var itemDate = '';
	$('.calDate').each(function(){
		itemDate = $(this).text(); 
		itemDate = parseInt(itemDate.replace(/-/g,'').substr(0,8));
		if (chkCurrDate >= itemDate) {
			$(this).parent().addClass('date_previous');
		}
	});
}

evarune.init_calendar = function() {
	evarune.calendarCleanOld();
	
	$('.calText').each(function(){
		if ($(this).text() == '') { // if there is no content of the calendar text node, remove it
			$('.calMore',$(this).parent()).remove();
		}
	});
	
	$('.calMore').click(function(){
		//alert(this);
		$(this).parents('.calItem').addClass('sys_calReadingMore');
		return false;
	});
	
	var calYearCache = '';
	$('.calDate').each(function(i){
		evarune.calAllDates[i] = $(this).text();
		calYearCache = evarune.calAllDates[i].substr(0,4);
		if ($('.calendar .contentMenu .definition:contains('+calYearCache+')').length == 0){
			$('.calendar .contentMenu').append('<a href="#" class="trig_calYear"><span class="definition">'+calYearCache+'</span>[ '+calYearCache+' ]</a>');
		}
	});
	
	$('.trig_calYear').click(function(){
		evarune.selectCalendarYear(this);
		return false;
	});
	
	$('.trig_calMonth').click(function(){
		evarune.selectCalendarQuarter(this);
		return false;
	});
	
	var presentYear = $('#serverDate').text();
	presentYear = presentYear.substr(0,4);

	$(".trig_calYear span:contains('"+presentYear+"')").parent().eq(0).click();

}

evarune.selectCalendarYear = function(me){
	$('.trig_calYear.mark, .trig_calMonth.mark').removeClass('mark');
	$(me).addClass('mark');
	$('.calItem').hide('fast');
	var markYear = $('.definition',me).text();
	
	var chkDate = '';
	$('.calDate').each(function(){
		chkDate = $(this).text();
		if ((chkDate.indexOf(markYear) >= 0)) {
			chkDate = this;
			return false;
		}
	});
	
	chkDate = $(chkDate).text();
	chkDate = chkDate.substr(5,2);
	
	var presentMonth = $('#serverDate').text();
	presentMonth = presentMonth.substr(4,2);

	$('.trig_calMonth').each(function(){
		var chkQuarter = $('.definition',this).text();
		if (evarune.initCalView == true) {
			if (chkQuarter.indexOf(presentMonth) >= 0) {
				$(this).click();
				evarune.initCalView = false;
				return false;
			}
		} else {
			if (chkQuarter.indexOf(chkDate) >= 0) {
				$(this).click();
				return false;
			}
		}
	});
	
	
}

evarune.selectCalendarQuarter = function(me) {
	$('.trig_calMonth.mark').removeClass('mark');
	$(me).addClass('mark');
	$('.calItem').hide('fast');
	
	var markYear = $('.trig_calYear.mark .definition').text();
	var markMonth = $('.definition',me).text();
	markMonth = markMonth.split('_');
	markMonth[0] = markYear+'-'+markMonth[0];
	markMonth[1] = markYear+'-'+markMonth[1];
	markMonth[2] = markYear+'-'+markMonth[2];
	var chkDate = '';
	$('.calDate').each(function(){
		chkDate = $(this).text();
		if ((chkDate.indexOf(markMonth[0]) >= 0) || (chkDate.indexOf(markMonth[1]) >= 0) || (chkDate.indexOf(markMonth[2]) >= 0)) {
			$(this).parent().show('normal');
		}
	});
} 

/* ======================== wikicode link generator ======================== */

evarune.wikicodeLinks = function(me){
	$(me).each(function(){
		var fullText = $(this).html();
		var posA, posB, posC;
		var URL, txt;
		var currentText, newText;

		for (var i=0; fullText.indexOf('[[')>=0; i++) { 
		    posA = fullText.indexOf('[[');
			posB = fullText.indexOf('|');
			posC = fullText.indexOf(']]');
			if ((posB > posC) || (posB == -1)) { // URL only
				currentText = fullText.substring(posA,posC+2);
				newText = currentText.replace('[[','').replace(']]','');
				newText = '<a href="' + newText + '">' + newText + '</a>';
				fullText = fullText.replace(currentText,newText);
			} else if ((posB != -1) && (posC != -1)) {
				currentText = fullText.substring(posA,posC+2);
				newText = currentText.replace('[[','<a href="').replace('|','">').replace(']]','</a>');
				fullText = fullText.replace(currentText,newText);
			}
		}
		
		$(this).html(fullText);
	});	
}

/* ======================== convert newlines to breaks ======================== */

evarune.fakePreWrap = function(me){
	$(me).each(function(){
		var txt = $(this).text();
		var nl = /\n|\r/g;
		txt = txt.replace(nl,'<br />');
		$(this).html(txt);
	});	
}

/* ======================== DOM Ready ======================== */

$(document).ready(function(){
	evarune.markCurrentPage();
	
	evarune.wikicodeLinks('.welcomeText p, .calendarContent');
	
	evarune.init_calendar();
	
	$('.sideColumn_links a[href^=http://]').addClass('external');
	
	$('.image_ctrl').click(function(){
		$(this).parent().parent().toggleClass('sys_imageItemActive');
		return false;
	});
	
	evarune.fakePreWrap('.welcomeText p'); 
});
