﻿var searchFields = { keywords: "", location: "", sector: "", proximity: "", titleonly: "", partTimeOnly: "",  fullTimeOnly: "" };
var advSearchFields = { keywords: "", keywordPhraseInc:"", keywordCouldInc:"", keywordNotInc:"", subjectID:"", location: "", partTimeOnly: "", fullTimeOnly: "", excludeHomeStudy:"", minPrice:"", maxPrice:"", types:"", awardingBody:"", startdate:"", endDate:""};

function UpdateSearchParams() {
    searchFields.keywords = $("#Keywords").val();
    searchFields.location = $("#Location").val();
    searchFields.sector = $("#SubjectID").children("option:selected").text();
    searchFields.proximity = $("#Proximity").children("option:selected").text();
    searchFields.titleonly = ($('#chkTitleOnly').is(":checked")) ? "Yes" : "No";
    searchFields.partTimeOnly = ($('#partTime').is(":checked")) ? "Yes" : "No";
    searchFields.fullTimeOnly = ($('#fullTime').is(":checked")) ? "Yes" : "No";
}
function UpdateAdvSearchParams() {
    advSearchFields.keywords = $("#Keywords").val();
    advSearchFields.keywordPhraseInc = $("#KeywordPhraseInc").val();
    advSearchFields.keywordCouldInc = $("#KeywordCouldInc").val();
    advSearchFields.keywordNotInc = $("#KeywordNotInc").val();
    if ($("input[name=SubjectID]:checked").length > 0) advSearchFields.subjectID = "selected";
    if ($("input[name=Types]:checked").length > 0) advSearchFields.types = "selected";
    advSearchFields.excludeHomeStudy = ($("#ExcludeHomeStudy").is(":checked")) ? "Yes" : "No";
    advSearchFields.partTimeOnly = ($("#partTime").is(":checked")) ? "Yes" : "No";
    advSearchFields.fullTimeOnly = ($("#fullTime").is(":checked")) ? "Yes" : "No";
    advSearchFields.awardingBody = $("#AwardingBody").val();
    advSearchFields.endDate = ($("#EndDate").val() == "dd/mm/yyyy") ? "" : $("#EndDate").val();
    advSearchFields.startdate = ($("#StartDate").val() == "dd/mm/yyyy") ? "" : $("#StartDate").val();
    advSearchFields.maxPrice = ($("#MaxPrice").val() == "To") ? "" : $("#MaxPrice").val();
    advSearchFields.minPrice = ($("#MinPrice").val() == "From") ? "" : $("#MinPrice").val();
    advSearchFields.location = $("#Location").val();
}


$(document).ready(function() {
    $("#Location").autocomplete('/LearningCentre/Location/FilterLocation', {
        dataType: 'json',
        parse: function(data) {
            var rows = new Array();
            for (var i = 0; i < data.length; i++) {
                rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name };
            }
            return rows;
        },
        formatItem: function(row) { return row.Name; },
        width: 199,
        minChars: 2,
        selectFirst: false,
        max: 10,
        delay: 100,
        scroll: false,
        cacheLength: 2
    });
});

function CheckAdvancedForm() {
    var adv = document.forms[0];
    var sectors = "";
    var types = "";

    $.each(adv["SubjectID"], function(i, val) {
        if (val.checked) {
            sectors += val.parentNode.innerText;
            sectors += ",";
        }
    });

    $.each(adv["Types"], function(i, val) {
        if (val.checked) {
            types += val.id;
            types += ",";
        }
    });

    UpdateAdvSearchParams();
    if (advSearchFields.keywords == "" && advSearchFields.keywordPhraseInc == "" && advSearchFields.keywordCouldInc == "" && advSearchFields.keywordNotInc == "" && advSearchFields.subjectID == "" && advSearchFields.location == "" && advSearchFields.awardingBody=="" && advSearchFields.endDate=="" && advSearchFields.excludeHomeStudy == "No" && advSearchFields.fullTimeOnly=="No" && advSearchFields.maxPrice=="" && advSearchFields.minPrice=="" && advSearchFields.partTimeOnly=="No" && advSearchFields.startdate=="" && advSearchFields.types=="") {
        $("#errorBoxKeywords").html("<ul><li>Please ensure you have entered some search criteria.</li></ul>");
        $("#errorBoxKeywords").fadeIn(500);
        return false;
    }
    LogAdvSearchParams(sectors, types);
    return ValLocation(advSearchFields.location);
}

function CheckForm() {
    
    UpdateSearchParams();
    if (searchFields.keywords == "" && searchFields.location == "" && searchFields.sector == "All Subjects" && searchFields.partTimeOnly == "No" && searchFields.fullTimeOnly == "No") {
        $("#errorBoxKeywords").fadeIn(500);
        return false;
    }
    LogSearchParams();
    return ValLocation(searchFields.location);   
}
function ValLocation(location) {
    var absoluteMatch = true;
    var isPostcode = /^\w{1,2}\d+/.test(location)
    if (location != "") {
        $.ajax({ type: 'POST', url: "/LearningCentre/Location/SearchLocation", data: { q: location }, async: false, dataType: "json",
            success: function(data, textStatus) {
                absoluteMatch = data.AbsoluteMatch;
                if (!absoluteMatch) {
                    if (data.Results.length > 0) {
                        $("#errorMessageLocation").html("<b>" + location + " not recognised, did you mean?...<\/b><br \/>");
                        $.each(data.Results, function(i, item) {
                            $("<a href='javascript: void(0)'>" + item.UniqueName + "<\/a><br \/>").click(function() { $("#Location").val(item.UniqueName); $('#errorBoxLocation').hide(); }).appendTo("#errorMessageLocation");
                            if (i == 10) return false;
                        });
                    }
                    else {
                        $("#errorMessageLocation").html("<b>You entered " + location + " No location suggestions found<\/b><br \/>");
                    }
                    $("#errorBoxLocation").fadeIn(500);

                }
            }
        });
    }
    return absoluteMatch;
}
function LogSearchParams() {
    UpdateSearchParams();
    dcsMultiTrack('DCS.dcsuri', '/LearningCentre/search.html', 'DCSext.LogType', 'CourseSearch', 'DCSext.Keywords', searchFields.keywords, 'DCSext.LocationName', searchFields.location, 'DCSext.Sector', searchFields.sector, 'DCSext.Proximity', searchFields.proximity, 'DCSext.SearchTitleOnly', searchFields.titleonly);
}

function LogAdvSearchParams(sectors,types) {
    dcsMultiTrack('DCS.dcsuri', '/LearningCentre/search.html', 
   'DCSext.LogType', 'AdvancedSearch', 'DCSext.Keywords', advSearchFields.keywords, 
   'DCSext.LocationName',advSearchFields.location,
   'DCSext.Sectors', sectors, 
   'DCSext.Proximity', advSearchFields.proximity, 
   'DCSext.SearchTitleOnly', advSearchFields.titleonly,

   'DCSext.KeywordPhraseInc', advSearchFields.KeywordPhraseInc,
   'DCSext.KeywordCouldInc', advSearchFields.KeywordCouldInc,
   'DCSext.KeywordNotInc', advSearchFields.KeywordNotInc,
   
   'DCSext.ExcludeHomeStudy', advSearchFields.excludeHomeStudy,
   'DCSext.PartTimeOnly', advSearchFields.partTimeOnly,
   'DCSext.FullTimeOnly', advSearchFields.fullTimeOnly,
   'DCSext.AwardingBody', advSearchFields.awardingBody,
   'DCSext.EndDate', advSearchFields.endDate,
   'DCSext.MaxPrice', advSearchFields.maxPrice,
   'DCSext.MinPrice', advSearchFields.minPrice,
   'DCSext.CourseTypes', types

   
   );
}
