//<![CDATA[
var bSortAsc = false;

function sortDaFokka(strParentId) {

	//Get list of courses
	
	var objCourses = document.getElementById(strParentId).getElementsByTagName("div");
	var iNumOfCourses = objCourses.length;
	var arrCourses = new Array(iNumOfCourses);
	var arrCourseDates = new Array(iNumOfCourses);
	var arrSortedCourseDates = new Array(iNumOfCourses);
	var arrSortedHTML = new Array(iNumOfCourses);
	var arrMeetings = new Array(iNumOfCourses);
    var strDateCompareText;
    

	// Fill arrays with date (for sorting) and HTML 
	for (i=0; i < iNumOfCourses; i++) {
	    
	    if (objCourses[i].childNodes[0].nodeName.toLowerCase() == 'p') { // For IE
	        strDateCompareText = objCourses[i].childNodes[0].innerHTML;
	    } else { // For he Rest
	        strDateCompareText = objCourses[i].childNodes[1].innerHTML;
	    }
	    
	    if (fjsLooksLikeWeeklyMeeting(strDateCompareText,14)) {
		    arrCourseDates[i] = transformDate(objCourses[i].id);
		    arrSortedCourseDates[i] = transformDate(objCourses[i].id);		
		    arrCourses[i] = '<div id="'+ objCourses[i].id +'">'+ objCourses[i].innerHTML +'<\/div>';
		} else {
		    arrMeetings[i] = '<div id="'+ objCourses[i].id +'">'+ objCourses[i].innerHTML +'<\/div>';
		}
	}
	
	
	// Sort dates
	if (bSortAsc) {
	    arrSortedCourseDates.sort(comparerev);
	    bSortAsc = false;	
    } else {
	    arrSortedCourseDates.sort(compare);
	    bSortAsc = true;
    }
	
	// Sort the HTML
	for (x=0; x < arrSortedCourseDates.length; x++) {
		for (y=0; y < arrCourseDates.length; y++) {
			if (arrSortedCourseDates[x] == arrCourseDates[y]) {
				arrSortedHTML[x] = arrCourses[y];
				break;
			}
		}
	
	}
	
	// Replace old html. Use JQuery library
	$("#"+strParentId).empty();           

    for (a=0; a < arrSortedHTML.length; a++)
    {
    	$("#"+strParentId).append(arrSortedHTML[a]);
    }
    
    $("#"+strParentId).append('<a name="weekly"><br/><h2>Recurring events</h2><br/></a>');
    for (a=0; a < arrMeetings.length; a++)
    {
    	$("#"+strParentId).append(arrMeetings[a]);
    }
}

//{}
//[]

function transformDate(strDate) {
	var regExPattern = /^(\d\d?)[\/\.-](\w{3,4}?)[\/\.-]((\d\d)?\d\d)[\/\.-](\d+)$/;
	var match = strDate.match(regExPattern);
    var d = match[1]; 
    var m = match[2]; 
    var y = match[3];  
    var c = match[5];
    switch (m.toLowerCase())
    {
    case 'jan':
    	m = '01';
    	break;
    case 'feb':
    	m = '02';
    	break;
    case 'mar':
    	m = '03';
    	break;
case 'mars':
    	m = '03';
    	break;
    case 'mär':
    	m = '03';
    	break;
    case 'apr':
    	m = '04';
    	break;
    case 'abr':
    	m = '04';
    	break;    	
    case 'may':
    	m = '05';
    	break;
    case 'mai':
    	m = '05';
    	break;
    case 'jun':
    	m = '06';
    	break;
case 'juni':
    	m = '06';
    	break;
    case 'jul':
    	m = '07';
    	break;
 case 'juli':
    	m = '07';
    	break;
    case 'aug':
    	m = '08';
    	break;
    case 'sep':
    	m = '09';
    	break;
    case 'oct':
    	m = '10';
    	break;
    case 'okt':
    	m = '10';
    	break;
    case 'nov':
    	m = '11';
    	break;
    case 'dec':
    	m = '12';
    	break;
    case 'des':
    	m = '12';
    	break;
case 'dez':
    	m = '12';
    	break;
    default:
    	m = '99';
    }
    if (d.length == 1) d = '0'+d;
    if (y.length == 2) y = '20'+y;
    if (c.length == 1) c = '0'+c;
    
    return y+m+d+c;
}

// Used to help array sort numbers correctly
function compare(a,b){
    return a-b;
}
function comparerev(a,b){
    return b-a;
}

// Sort on onload
function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
	    window.onload = func; 
	} else { 
	  	window.onload = function() { 
	  		if (oldonload) { 
	        	oldonload(); 
	      	} 
	      	func(); 
	    } 
	} 
} 
	 
addLoadEvent(function() {
// The search result page for courses wraps the couses in a div with their own id 
// (at the moment: webappsearchresults3993)
if (document.getElementById("courseList")) { 
	sortDaFokka('courseList');
} else if (document.getElementById("webappsearchresults3993")) { 
       sortDaFokka('webappsearchresults3993');
} 
}); 


//Compare the start and end date from a p-tag in the generated html
function fjsLooksLikeWeeklyMeeting(strDates,iNumOfDays) {
    var arrDates = strDates.split("#");
    var date1 = transformDate2(arrDates[0]);
    var date2 = transformDate2(arrDates[1]);
    
    if (date1.setDate(date1.getDate()+iNumOfDays) < date2) {
        return false;
    } else {
        return true;
    }
}

function transformDate2(strDate) {
	var regExPattern = /^(\d\d?)[\/\.-](\w{3,4}?)[\/\.-]((\d\d)?\d\d)$/;
	var match = strDate.match(regExPattern);
    var d = match[1]; 
    var m = match[2]; 
    var y = match[3];  
    switch (m.toLowerCase())
    {
    case 'jan':
    	m = '01';
    	break;
    case 'feb':
    	m = '02';
    	break;
    case 'mar':
    	m = '03';
    	break;
case 'mars':
    	m = '03';
    	break;
    case 'mär':
    	m = '03';
    	break;
    case 'apr':
    	m = '04';
    	break;
    case 'abr':
    	m = '04';
    	break;    	
    case 'may':
    	m = '05';
    	break;
    case 'mai':
    	m = '05';
    	break;
    case 'jun':
    	m = '06';
    	break;
case 'juni':
    	m = '06';
    	break;
    case 'jul':
    	m = '07';
    	break;
 case 'juli':
    	m = '07';
    	break;
    case 'aug':
    	m = '08';
    	break;
    case 'sep':
    	m = '09';
    	break;
    case 'oct':
    	m = '10';
    	break;
    case 'okt':
    	m = '10';
    	break;
    case 'nov':
    	m = '11';
    	break;
    case 'dec':
    	m = '12';
    	break;
    case 'des':
    	m = '12';
    	break;
case 'dez':
    	m = '12';
    	break;
    default:
    	m = '99';
    }
    
    if (d.length == 1) d = '0'+d;
    if (y.length > 2) y = y.substring(2);
    
    //return y+','+m+','+d;
    return new Date(y,m,d);
  
}

//]]>