﻿/** Search Page **/
function AddOptions(select, list) {
    // debugger
    if (select && list) {
        select.disabled = false;
        select.innerHTML = '';

        var emptyoption = document.createElement("option");
        emptyoption.value = '';
        emptyoption.text = 'select category';
        select.options[0] = emptyoption;

        for (var i = 0; i < list.length; i++) {
            var option = document.createElement("option");
            option.value = list[i];
            option.text = list[i];
            select.options[i + 1] = option;
        }
    }
}

function Reset() {
    $.ajaxDotNet("/App_AjaxServices/Internet/SearchJob.asmx/AutoCompleteJobTitle", {
        verb: "GET",
        success: function(obj) {
            var select = document.getElementById('FilterPosition');
            AddOptions(select, obj);
        },
        failure: function(obj) {
            debugger;
        }
    });

    $.ajaxDotNet("/App_AjaxServices/Internet/SearchJob.asmx/AutoCompleteJobCategoryDescription", {
        verb: "GET",
        success: function(obj) {
            var select = document.getElementById('FilterCategory');
            AddOptions(select, obj);
        },
        failure: function(obj) {
            debugger;
        }
    });


    $.ajaxDotNet("/App_AjaxServices/Internet/SearchJob.asmx/AutoCompleteJobLocation", {
        verb: "GET",
        success: function(obj) {
            var select = document.getElementById('FilterLocation');
            AddOptions(select, obj);
        },
        failure: function(obj) {
            debugger;
        }
    });
}

var SearchByField =
        {
            'JobTitle': 0,
            'JobCategoryDescription': 1,
            'JobLocation': 2
        };

function UpdateSelectBoxes(select, id) {
    // var value = select.options[select.selectedIndex].value;
    select.disabled = true;

    var selectFilterPosition = document.getElementById('FilterPosition');
    var title = selectFilterPosition.value;

    var selectFilterCategory = document.getElementById('FilterCategory');
    var description = selectFilterCategory.value;

    var selectFilterLocation = document.getElementById('FilterLocation');
    var location = selectFilterLocation.value;

    // debugger
    $.ajaxDotNet('/App_AjaxServices/Internet/SearchJob.asmx/FilterByParameters', {
        verb: 'POST',
        data: { 'title': title, 'description': description, 'location': location },
        success: function(obj) {
            // debugger
            var data = JSON.parse(obj);
            if (!selectFilterPosition.disabled) {
                var arrayFilterPosition = new Array();
                for (var i = 0; i < data.length; i++) {
                    var el = data[i];
                    arrayFilterPosition[i] = el[SearchByField.JobTitle];
                }
                arrayFilterPosition = RemoveDuplicates(arrayFilterPosition);
                UpdateFilterBoxes(selectFilterPosition, arrayFilterPosition);
            }

            if (!selectFilterCategory.disabled) {
                var arrayFilterCategory = new Array();
                for (var i = 0; i < data.length; i++) {
                    var el = data[i];
                    arrayFilterCategory[i] = el[SearchByField.JobCategoryDescription];
                }
                arrayFilterCategory = RemoveDuplicates(arrayFilterCategory);
                UpdateFilterBoxes(selectFilterCategory, arrayFilterCategory);
            }

            if (!selectFilterLocation.disabled) {
                var arrayFilterLocation = new Array();
                for (var i = 0; i < data.length; i++) {
                    var el = data[i];
                    arrayFilterLocation[i] = el[SearchByField.JobLocation];
                }

                arrayFilterLocation = RemoveDuplicates(arrayFilterLocation);
                UpdateFilterBoxes(selectFilterLocation, arrayFilterLocation);
            }
        },
        error: function(obj) {
            // Do Something
        }
    });
}

function UpdateFilterBoxes(select, list) {
    // debugger
    if (select && list) {
        select.disabled = false;
        select.innerHTML = '';

        var emptyoption = document.createElement("option");
        emptyoption.value = '';
        emptyoption.text = 'Select ...';
        select.options[0] = emptyoption;

        for (var i = 0; i < list.length; i++) {
            var option = document.createElement("option");
            option.value = list[i];
            option.text = list[i];
            select.options[i + 1] = option;
        }
    }
}

function RemoveDuplicates(allValues) {
    var uniqueValues = new Array();
    allValues = allValues.sort();
    var idx = 0;
    var prevValue = allValues[0];
    var currValue = allValues[0];
    for (var i = 0; i < allValues.length; i++) {
        currValue = allValues[i];
        if (currValue != prevValue) {
            idx++;
        }
        uniqueValues[idx] = currValue;
        prevValue = currValue;
    }

    return uniqueValues;
}

function ViewResults() {

    var selectFilterPosition = document.getElementById('FilterPosition');
    var title = selectFilterPosition.value;

    var selectFilterCategory = document.getElementById('FilterCategory');
    var description = selectFilterCategory.value;

    var selectFilterLocation = document.getElementById('FilterLocation');
    var location = selectFilterLocation.value;

    var location = "/Search-Results.aspx?FilterPosition=" + title + "&FilterCategory=" + description + "&FilterLocation=" + location;
    window.location = location;
}

/** Search Results **/

function GetQueryStrings() {

    var query = {};

    if (window.location.search && window.location.search.length > 0) {
        // FilterPosition=Fee-for-Service%20Clinicians&FilterCategory=Outpatient%20Services&FilterLocation=Everett
        var s = window.location.search.substring(1);
        s.replace(/\b([^&=]*)=([^&=]*)\b/g, function(m, a, d) {
            if (typeof query[a] != 'undefined') {
                query[a] += ',' + d;
            } else {
                query[a] = d;
            }
        });
    }

    return query;
}

function LoadGrid(title, description, location) {

    // debugger
    $.ajaxDotNet('/App_AjaxServices/Internet/SearchJob.asmx/GetGridData', {
        verb: 'POST',
        data: { 'title': title, 'description': description, 'location': location },
        success: function(html) {
            document.getElementById('job-container').innerHTML = html;
        },
        error: function(obj) {
            // Do Something
        }
    });
}
function CollapseExpand(jobid) {
    // debugger
    var title = $('#job-action-' + jobid).attr("title");
    if (title == "Collapse") {
        $('#job-action-' + jobid).text("+ expand");
        $('#job-action-' + jobid).attr("title", "Expand");
        //$('#job-description-' + jobid).slideUp("slow");
        //document.getElementById('job-description-' + jobid).style.display = 'none';
    } else {
        $('#job-action-' + jobid).text("- collapse");
        $('#job-action-' + jobid).attr("title", "Collapse");
        //document.getElementById('job-description-' + jobid).style.display = 'block';
        //$('#job-description-' + jobid).slideDown("slow");
    }
    $('#job-description-' + jobid).slideToggle();
}
