
$(document).ready(
    function () {
        if ($("#KeyMessages").length > 0) {
            HideRightColumn();
            $("#MessagesFilter").css("Width", "100%");
            InitKeyMessagesFilter();
            FilterKeyMessages();
        }
    });

$("#keyMessageSearchButton").live("click", function (event) {
	FilterKeyMessages();
	$.cookie('ERT_KM_YearFrom', $("#yearSelectFrom").val());
	$.cookie('ERT_KM_YearTo', $("#yearSelectTo").val());
	$.cookie('ERT_KM_MonthFrom', $("#monthSelectFrom").val());
	$.cookie('ERT_KM_MonthTo', $("#monthSelectTo").val());
	$.cookie('ERT_KM_KeyWords', $("#keyWords").val());	
	$.cookie('ERT_KM_workgroups', $("#workgroups").val());	
});
	
$("#keyMessageClearButton").live("click", function (event) {
	SetInitalValues();
});
	
$("#MessagesTab tr").live("mouseover mouseout", function (event) {
    if (event.type == "mouseover") {
        $(this).addClass("HighLighted", 1000);
    } else {
        $(this).removeClass("HighLighted", 1000);
    }
});

$("#MessagesTab tr").live("click", function (event) {
    var tokens = $(this).attr('id').split("_");
    var wgId = tokens[1];
    var msgId = tokens[3];
    var url = "/default/en-us/workinggroups/workinggroup" + (OFFLINE ? ".off" : "") + ".aspx?wg=" + wgId + "&msg=" + msgId + "#" + msgId;
    $(location).attr('href', url);
});

function SetInitalValues()
{
	$('#yearSelectFrom option').first().attr('selected', 'selected');
	$('#monthSelectFrom option').first().attr('selected', 'selected');
	$('#yearSelectTo option').last().attr('selected', 'selected');
	$('#monthSelectTo option').last().attr('selected', 'selected');
	$('#workgroups').val(0);
	$('#keyWords').val('');
}

function InitKeyMessagesFilter() {
    
	if ($("#yearSelectFrom") != null) {
		
		LoadYears($("#yearSelectFrom"));
		LoadYears($("#yearSelectTo"));
		LoadWorkgroupOptions($("#workgroups"));
	}
}

function LoadCookieValues()
{
	var yearFrom_cookie = $.cookie('ERT_KM_YearFrom');
	if (yearFrom_cookie!= null) $("#yearSelectFrom").val(yearFrom_cookie);
	var yearTo_cookie = $.cookie('ERT_KM_YearTo');
	if (yearTo_cookie!= null) $("#yearSelectTo").val(yearTo_cookie);
	var monthFrom_cookie = $.cookie('ERT_KM_MonthFrom');
	if (monthFrom_cookie!= null) $("#monthSelectFrom").val(monthFrom_cookie);
	var monthTo_cookie = $.cookie('ERT_KM_MonthTo');
	if (monthTo_cookie!= null) $("#monthSelectTo").val(monthTo_cookie);
	var keyWords_cookie = $.cookie('ERT_KM_KeyWords');
	if (keyWords_cookie!= null) $("#keyWords").val(keyWords_cookie);
	var workgroups_cookie = $.cookie('ERT_KM_workgroups');
	if (workgroups_cookie!= null) $("#workgroups").val(workgroups_cookie);
}

function LoadYears(el) {
    var options = "";
    for (var year = 1983; year <= (new Date()).getFullYear(); ++year) {
        options += '<option value="' + year + '">' + year + '</option>';
    }
    $(el).html(options);
}

function LoadWorkgroupOptions(el)
{
	$.ajax({
        type: "GET",
		cache: false,
        url: KEY_MESSAGE_FILE,
        dataType: "xml",
        success: function (xml) {
             LoadWorkgroups_aux(xml, el)
        }
    });
}

function LoadWorkgroups_aux(xml, el) 
{
	var options = '<option value="0">(Any)</option>';
	$(xml).find("WebItem").each(function() {
		options += '<option value="' + $(this).attr('Id') + '">' + $(this).find("Title").first().text() + '</option>';
	});
	$(el).html(options);
	
	// NOTE: setting of initial values is done here because
	// asych natture of ajax may cause options to be loaded
	// too late otherwise0
	SetInitalValues();
	LoadCookieValues();

}


function FilterKeyMessages() {
    LoadKeyMessages();
}

function LoadKeyMessages() {
    $.ajax({
        type: "GET",
		cache: false,
        url: KEY_MESSAGE_FILE,
        dataType: "xml",
        success: function (xml) {
            DisplayMessages(xml, "KeyMessages")
        }
    });
}

function messageSort(a, b) {
    return $(a).attr('StartDate') < $(b).attr('StartDate') ? 1 : $(a).attr('StartDate') == $(b).attr('StartDate') ? 0 : -1;
}

function DisplayMessages(xml, target) {
    var sortedSet = $(xml).find('Message')
        .get()
        .sort(messageSort);

    var msgTab =
        '<table id="MessagesTab" cellspacing="0" cellpadding="0"><tbody>' +
        '<tr><th>Title</th><th>Working Group</th><th>Date</th></tr>';
    var current = 0;

    var dateFrom = GetFilterDateString($("#yearSelectFrom").val(), $("#monthSelectFrom").val(), "01");
    var dateTo = GetFilterDateString($("#yearSelectTo").val(), $("#monthSelectTo").val(), "31");
    var searchTokens = $("#keyWords").val().split(" ");

    $(sortedSet).each(function () {
		var dateStr = $(this).attr('StartDate');
		var title = $(this).find('Title').text();
		var wg = $(this).parent().parent();
		var wgId = $(wg).attr('Id');
        
        if (dateFrom <= dateStr 
			&& dateStr <= dateTo 
			&& stringMatch(searchTokens, title, true)
			&& ($("#workgroups").val() == 0 || $("#workgroups").val() == wgId)) {
            var msgDate = $(this).attr('DisplayDate');
            var workingGroup = $(wg).find("Title").first().text();
            var msgId = $(this).attr('Id');

            var _class = current % 2 == 0 ? "Alt" : "";

            msgTab +=
                '<tr id="wg_' + wgId +'_msg_' + msgId +'" class="' + _class + 'MessageLine Message">' +
                '<td class="First"><div class="MsgTitle">' + title + '</div></td>' +
                '<td><div class="MsgWg">' + workingGroup + '</div></td>' +
                '<td><div class="MsgDate">' + msgDate + '</div></td>' +
                '</tr>';
            current++;
        }


    });

    msgTab += '</tbody></table>';
    $('#' + target).html(msgTab);
}

function GetFilterDateString(year, month, day) {
    var result = "" + year + "-";
    if (month == "January") result += "01";
    else if (month == "February") result += "02";
    else if (month == "March") result += "03";
    else if (month == "April") result += "04";
    else if (month == "May") result += "05";
    else if (month == "June") result += "06";
    else if (month == "July") result += "07";
    else if (month == "August") result += "08";
    else if (month == "September") result += "09";
    else if (month == "October") result += "10";
    else if (month == "November") result += "11";
    else if (month == "December") result += "12";
    result += "-" + day + "T00:00:00";

    return result;
}

function stringMatch(searchTerms, contents, matchAll) {

    if (searchTerms.length == 0 || searchTerms[0] == "") return true;

    var match = !matchAll;
    for (var i = 0; i < searchTerms.length; ++i) {
        if (contents.toLowerCase().indexOf(searchTerms[i].toLowerCase()) != -1) {
            match = true;
        }
        else {
            if (matchAll) return false;
        }
    }

    return match;
}


