﻿$(document).ready(function() {

    $(".jobLocationRegion").each(function() {

        var fieldID = getFieldIdFromDropbox($(this));

        var region = $("#" + fieldID + "_Region");
        var area = $("#" + fieldID + "_Area");
        var location = $("#" + fieldID + "_Region");

        $(this).change(changeJobLocationRegion);
        checkJobLocationRegion(region);

        if (area.length > 0) {
            area.bind("change", changeJobLocationArea);
            checkJobLocationArea(area);
        }

    });

});

function changeJobLocationRegion(e) {

    var region = $(this).val();

    if (region.length > 0) {
        checkJobLocationRegion(this);
    }

}

function changeJobLocationArea(e) {

    var region = $(this).val();

    if (region.length > 0) {
        checkJobLocationArea(this);
    }

}

function checkJobLocationRegion(el) {

    var regionID = $(el).val();
    var fieldID = getFieldIdFromDropbox(el);
    var areaWrapper = $("#fieldwrapper_" + fieldID + "_Area");
    var areaDropbox = $("#" + fieldID + "_Area");

    if (regionID == "-1") {

        areaDropbox.val("-1");
        areaDropbox.change();

        areaWrapper.hide();

    } else {

        populateJobLocations(fieldID, areaDropbox, areaWrapper, regionID);

    }

}

function checkJobLocationArea(el) {

    var areaID = $(el).val();
    var fieldID = getFieldIdFromDropbox(el);
    var locationWrapper = $("#fieldwrapper_" + fieldID + "_Location, #fieldwrapper_" + fieldID + "_Locations");
    var locationDropbox = $("#" + fieldID + "_Location, #" + fieldID + "_Locations");
    
    if (locationDropbox.length > 0) {

        if (areaID == "-1") {

            locationDropbox.val("-1");
            locationDropbox.change();

            locationWrapper.hide();

        } else {

            populateJobLocations(fieldID, locationDropbox, locationWrapper, areaID);

        }

    }

}

function getFieldIdFromDropbox(el) {

    var id = $(el).attr("id");
    var fieldID = id.split("_")[0];

    return fieldID;

}

function populateJobLocations(fieldID, fieldToPopulate, wrapper, parentID) {

    var currentVal = fieldToPopulate.val();

    $.getJSON("/joblocations/getlocationsforajax/?ParentID=" + parentID, function(data) {

        fieldToPopulate.find("option[value != -1]").remove();

        if (data.length == 0) {
            wrapper.hide();
        }
        else {

            wrapper.show();

            $.each(data, function(index, value) {
                fieldToPopulate.append("<option value='" + value.id + "'>" + value.title + "</option>");
            });

            fieldToPopulate.val(currentVal);

        }

        fieldToPopulate.change();

    });

}
