    var category_id = "";
    var program_id = "";
    var school_type = "";
    if(typeof $('#pre_selectedCategory').val() != "undefined"){
        var pre_selectedCategory = $('#pre_selectedCategory').val();
    }    
    if(typeof $('#pre_selectedProgram').val() != "undefined"){
        var pre_selectedProgram  = $('#pre_selectedProgram').val();
    }
  function bySortedValue(obj, context) {
    var tuples = [];
    for (var key in obj) tuples.push([key, obj[key].program_name]);
    tuples.sort(function(a, b) { return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0 });
    return tuples;
  }

    function bySortedCategory(obj, context){
      var tuples = [];
      for (var key in obj) tuples.push([key, obj[key]]);
      tuples.sort(function(a, b) { return a[1] > b[1] ? 1 : a[1] < b[1] ? -1 : 0 });
      return tuples;
    }

    $(document).ready( function() { 
        if($("#category").text() != ''){
            loadCategories(pre_selectedCategory,pre_selectedProgram);        
    
            if($("#category").val() != ''){
                loadPrograms();
            }
            $("#category").change(function() {
                loadPrograms();
            });
            $("#school_type").val(school_type);
        }

    });

    function loadCategories(category,program) {
      $('#category').html('');
      $("<option>").attr("value", "").text("Select a Field").appendTo("#category");
      var matched_category = '';
      $.ajax( {
                type : "GET",
                url : "index.php",
                data : "module=dbviewdata&hive_op=categories&output=1",
                success : function(data) {
                        decoded_data = jQuery.parseJSON(data);
                        decoded_data_sort = bySortedCategory(decoded_data, this);
                        $.each(decoded_data_sort, function(key, value) {
                            // console.debug(key + "=>" + value);
                            $("<option>").attr("value", value[0]).text(value[1]).appendTo("#category");
                            if(value[0] == category){
                                matched_category = value[1];
                            }
                        });
                        $("#category").val(category);
                        if($("#category").val() != ''){
                            matched_program = loadPrograms(program);
                        }

                        if(typeof $('#pre_selectedCategory').val() != "undefined" && $('#pre_selectedCategory').val() != 0){
                            $('#category').hide();
                            $('#area_of_study_label').hide();
                            $('#category_row').hide();
                        }
                }
            });
    }

    function loadPrograms(program) {
        $('#program').html('');
        var matched_program = '';
        var required = false;
        //check if this is a required field if not change text to choose one
        var classList =$('#program').attr('class').split(/\s+/);
        $.each( classList, function(index, item){
            if (item === 'required') {
                required = true;
             }
         });
        if(required){
            $("<option>").attr("value", "").text("Choose One").appendTo("#program");
        } else {
            $("<option>").attr("value", "").text("Select All").appendTo("#program");            
        }
            $.ajax( {
                type : "GET",
                url : "index.php",
                data : "module=dbviewdata&hive_op=programs&output=1&category_id=" + $("#category").val(),
                success : function(data) {
                        decoded_data = jQuery.parseJSON(data);
                        val = $("#category").val();
                        dereferenced_data =  bySortedValue(decoded_data[val], this);
                        $.each(dereferenced_data, function(key, value) {
                            $("<option>").attr("value", value[0]).text(value[1]).appendTo("#program");
                            if(value[0] == program){
                                $('#category_label').html(value[1]);
                            }
                        });
                        $("#program").val(program);

                }
            });
    }


