﻿var ws = "/WebServices/SearchService.asmx/";
var LINK_BASE = "http://www.SomeCESPage.com/Course.aspx?courseInTermId=";

var searchProc = new Array();
searchProc["course"] = ws + "GetCurrentCourses";
searchProc["section"] = ws + "GetSectionByScheduleNumber";
searchProc["site"] = ws + "GetPages";

var divBuilder = new Array();
divBuilder["course"] = BuildCourseDiv;
divBuilder["section"] = BuildSectionDiv;
divBuilder["site"] = BuildSiteDiv;

var searchType;

$(document).ready(function() {

    $("#imgSearch").click(SendRequest);
    $("#tbxInput").keyup(EnterPressed);
    $("input[@name='searchType']").change(SearchType);
});


function SendRequest() {
    var data = {};
    data["keywords"] = $("#tbxInput").val();

    var url = searchProc[searchType];

    $.ajax({
        type: "POST",
        url: url,
        data: data,
        success: BuildTable
    });
}

function EnterPressed(e) {

    if (e.which || e.keyCode) {
        if ((e.which == 13) || (e.keyCode == 13)) {
            SendRequest();
            return false;
        }
    }
}


function BuildCourseDiv(searchResult) {

    var searchDiv = document.createElement("div");
    searchDiv.className = "searchResult";

    var lnkDiv = searchDiv.appendChild(document.createElement("div"));
    lnkDiv.className = "lnkDiv";

    var lnk = lnkDiv.appendChild(document.createElement("a"));
    lnk.href = LINK_BASE + searchResult.CourseInTermId;
    lnk.innerHTML = searchResult.TermCourseName;

    var descDiv = searchDiv.appendChild(document.createElement("div"));
    descDiv.className = "descDiv";

    var descP = descDiv.appendChild(document.createElement("p"));
    descP.appendChild(document.createTextNode(searchResult.WebDescription));

    return searchDiv;

}

function BuildSectionDiv(searchResult) {
    var searchDiv = document.createElement("div");
    searchDiv.className = "searchResult";

    var lnkDiv = searchDiv.appendChild(document.createElement("div"));
    lnkDiv.className = "lnkDiv";

    var lnk = lnkDiv.appendChild(document.createElement("a"));
    lnk.href = LINK_BASE + searchResult.CourseInTermId;
    lnk.innerHTML = searchResult.TermCourseName;

    if (searchResult.DateStart.length > 0) {
        lnkDiv.appendChild(document.createTextNode("\u00a0"));
        var sectionDateSpan = lnkDiv.appendChild(document.createElement("span"));
        sectionDateSpan.className = "sectionDate";
        sectionDateSpan.appendChild(document.createTextNode("[Start Date: " + searchResult.DateStart + "]"));
    }

    var descDiv = searchDiv.appendChild(document.createElement("div"));
    descDiv.className = "descDiv";

    var descP = descDiv.appendChild(document.createElement("p"));
    descP.appendChild(document.createTextNode(searchResult.WebDescription));

    return searchDiv;
}

function BuildSiteDiv(searchResult) {
    // ++++++++++++++++++++ this needs to be redone, its just using the default course search template ++++++++++++++++++++++++++

    var searchDiv = document.createElement("div");
    searchDiv.className = "searchResult";

    var lnkDiv = searchDiv.appendChild(document.createElement("div"));
    lnkDiv.className = "lnkDiv";

    var lnk = lnkDiv.appendChild(document.createElement("a"));
    lnk.href = LINK_BASE + searchResult.CourseInTermId;
    lnk.innerHTML = searchResult.TermCourseName;

    if (searchType == "section" && searchResult.DateStart != null) {
        lnkDiv.appendChild(document.createTextNode("\u00a0"));
        var sectionDateSpan = lnkDiv.appendChild(document.createElement("span"));
        sectionDateSpan.className = "sectionDate";
        sectionDateSpan.appendChild(document.createTextNode("[" + searchResult.DateStart + "]"));
    }

    var descDiv = searchDiv.appendChild(document.createElement("div"));
    descDiv.className = "descDiv";

    var descP = descDiv.appendChild(document.createElement("p"));
    descP.appendChild(document.createTextNode(searchResult.WebDescription));

    return searchDiv;
}

function BuildTable(xml) {

    var landingDiv = $("#landing");
    var frag = document.createDocumentFragment();

    var table = document.createElement("table");
    table.className = "searchTable";

    $(xml).find("Table").each(function() {

        var searchResult = new SearchResult();
        searchResult.TermCourseName = $("TermCourseName", this).text();
        searchResult.CourseInTermId = $("CourseInTermID", this).text();
        searchResult.CourseId = $("CourseID", this).text();
        searchResult.WebDescription = $("WebDesc", this).text();
        searchResult.DateStart = $("DateStart", this).text();

        var row = table.insertRow(0);
        var cell = row.insertCell(0);
        var searchDiv = divBuilder[searchType];

        cell.appendChild(searchDiv(searchResult));

    });

    frag.appendChild(table);
    landingDiv.get(0).innerHTML = "";
    landingDiv.get(0).appendChild(frag);
}

function SearchResult() {
    this.TermCourseName = "";
    this.CourseInTermId = "";
    this.CourseId = "";
    this.WebDescription = "";
    this.DateStart = "";
}



function SearchType() {
    searchType = $("input[@name='searchType']:checked").val();
    $("#tbxInput").focus().select();
}
