﻿$(document).ready(function() {
    $('#' + ddlTypeId).change(function() {
        $('#traditionalRanks').fadeOut();
        $('#careerRanks').fadeOut();
        clearAllCheckBoxes(cblRankingsCareerId);
        clearAllCheckBoxes(cblRankingsId);
        if ($(this).val() == 'T') {
            $('#traditionalRanks').fadeIn();
        } else if ($(this).val() == 'C') {
            $('#careerRanks').fadeIn();
        }
        UpdateResults();
    });
    $('input.distanceInput, input.majorSearch').focus(function() {
        $(this).addClass('focus');
    });
    $('input.distanceInput, input.majorSearch').blur(function() {
        if ($(this).val() == "") $(this).removeClass('focus');
    });
    
});

/*------------Finder Specific JS---------------*/
function testPlus(id, value) {
    if ($('#' + id).text().search(value) != -1)
        $('#' + id).html($('#' + id).text().replace(value, value + '+'));
}


//--------------Initialize--------------------------

function OnLoadDispatcher() {
    var urlVars = getUrlVars();
    Initialize(urlVars);
    UpdateResultsWithoutClear();
} 

function Initialize(urlVars) {        
    savedTitle = URLDecode(urlVars["title"]);
    returningQuery = URLDecode(urlVars["return"]);

    //setting zipcode
    $("#" + txtZipCodeId).val("");
    var zipcode = URLDecode(urlVars["zipcode"]);
    if (!isUndefined(zipcode) && !isNaN(zipcode) && zipcode != "") {
        $("#" + txtZipCodeId).val(zipcode).addClass('focus');
    }
    
    //setting distance
    var distance = URLDecode(urlVars["distance"]);
    if (!isUndefined(distance) && !isNaN(distance))
        $("#slider-miles").slider("value", distance);
    if (distance == ''|| isUndefined(distance))// default
        $("#slider-miles").slider("value", selectedDistance);
       
    //setting instate
    var instate = URLDecode(urlVars["instate"]);
    if (!isUndefined(instate)) {
        if (instate == 'true') {
            var $chkStateSchools = $("input:checkbox[id$=" + checkInStateId + "]");
            var chkStateSchoolsSelected = $chkStateSchools.prop('checked', true);//causes checked event fire
        }
    }
    //regions
    var regionsArr = URLDecode(urlVars["regions"]).split(',');            
    if (!isUndefined(regionsArr) && regionsArr[0]!='') {
        setCheckBoxes(cblRegionId, regionsArr);
    }
    if (isUndefined(regionsArr) || regionsArr[0]=='') {// default
        clearAllCheckBoxes(cblRegionId);
    }
    //settings
    var settingsArr = URLDecode(urlVars["settings"]).split(',');
    if (!isUndefined(settingsArr) && settingsArr[0]!='') {
        setCheckBoxes(cblSettingId, settingsArr);
    } 
    if (isUndefined(settingsArr)||settingsArr[0]=='') {//default
        clearAllCheckBoxes(cblSettingId);
    }
     
    //religious affiliation work
    var religiousaffiliationsArr = URLDecode(urlVars["religiousaffiliations"]).split(',');
    if (!isUndefined(religiousaffiliationsArr) && religiousaffiliationsArr[0]!='') {
        setCheckBoxes(cblReligionId, religiousaffiliationsArr);
    } 
    if (isUndefined(religiousaffiliationsArr) || religiousaffiliationsArr[0]=='' ) {//default
        clearAllCheckBoxes(cblReligionId);
    }
    
    //majors work
    var majorsArr = URLDecode(urlVars["majors"]).split(',');
    if (!isUndefined(majorsArr) && majorsArr[0] != '') {
        for (var i = 0; i < majorsArr.length; i++)
            $('#' + majorListingId).addBox('add', majorsArr[i], false);
    }

    //tuition or total expenses
    var total = URLDecode(urlVars["total"]);
    if (!isUndefined(total)) {
        if (total == "true")
            $("#" + rbTotalId).prop("checked", true);
        else
            $("#" + rbTuitionId).prop("checked", true);
    }
    
    //tuition
    var tuitionlow = URLDecode(urlVars["tuitionlow"]);
    if (!isUndefined(tuitionlow) && !isNaN(tuitionlow))
        $("#slider-cost").slider("values", 0, tuitionlow)
    if (isUndefined(tuitionlow) || tuitionlow=='')
        $("#slider-cost").slider("values", 0, selectedCostMin)

    var tuitionhigh = URLDecode(urlVars["tuitionhigh"]);
    if (!isUndefined(tuitionhigh) && !isNaN(tuitionhigh))
        $("#slider-cost").slider("values", 1, tuitionhigh)
    if(isUndefined(tuitionhigh)||tuitionhigh=='')
        $("#slider-cost").slider("values", 1, selectedCostMax)
    if (!isUndefined(tuitionlow) && !isUndefined(tuitionhigh)) {
        if (!isNaN(tuitionlow) && !isNaN(tuitionhigh))
            $("#costAmount").val('$' + $("#slider-cost").slider("values", 0) + ' - $' + $("#slider-cost").slider("values", 1) + plusCost);
    }
    
    //student body
    var studentbodylow = URLDecode(urlVars["studentbodylow"]);
    if (!isUndefined(studentbodylow) && !isNaN(studentbodylow))
        $("#slider-student").slider("values", 0, studentbodylow)
    if(isUndefined(studentbodylow) || studentbodylow=='')
        $("#slider-student").slider("values", 0, minStudent)

    var studentbodyhigh = URLDecode(urlVars["studentbodyhigh"]);
    if (!isUndefined(studentbodyhigh)&& !isNaN(studentbodyhigh))
        $("#slider-student").slider("values", 1, studentbodyhigh)
    if(isUndefined(studentbodyhigh)||studentbodyhigh=='')
        $("#slider-student").slider("values", 1, maxStudent)
        
    if (!isUndefined(studentbodylow) && !isNaN(studentbodyhigh)) {
        if(!isNaN(studentbodylow)&&!isNaN(studentbodyhigh))
            $("#studentAmount").val($("#slider-student").slider("values", 0) + ' - ' + $("#slider-student").slider("values", 1) + plusStudent + " students");
    }
        
    //setting types and rankings work
    var types = URLDecode(urlVars["types"]);
    var rankingsArr = URLDecode(urlVars["rankings"]).split(",");
    clearAllCheckBoxes(cblRankingsCareerId);
    clearAllCheckBoxes(cblRankingsId);
    if (!isUndefined(types))
        $('#' + ddlTypeId).val(types);

    if (types == 'T') {
        $('#traditionalRanks').show();
    } else if (types == 'C') {
        $('#careerRanks').show();
    }

    if (!isUndefined(rankingsArr) && types == 'T') {
        setCheckBoxes(cblRankingsId, rankingsArr);
    } else if (!isUndefined(rankingsArr) && types == 'C') {
        setCheckBoxes(cblRankingsCareerId, rankingsArr);
    }

    //setting ranked/unranked
    var ranksArr = URLDecode(urlVars["ranks"]).split(",");
    if (!isUndefined(ranksArr)) {
        for (var i = 0; i < ranksArr.length; i++) {
            if (ranksArr[i] == 'R') {
                document.getElementById(cblCoveredId).checked = true;
            } else if (ranksArr[i] == 'S') {
                document.getElementById(cblSkeletonId).checked = true;
            }
        }
    } else if (isUndefined(ranksArr) || ranksArr[0] == '') {
        document.getElementById(cblCoveredId).checked = true;
        document.getElementById(cblSkeletonId).checked = true;
    }
    
    
    //setting branches work
    var branchesArr = URLDecode(urlVars["branches"]).split(",");
    if (!isUndefined(branchesArr)) {
        for (var i = 0; i < branchesArr.length; i++) {
            if (branchesArr[i] == 'M') {
                document.getElementById(cblMainCampusId).checked = true;
            } else if (branchesArr[i] == 'B') {
                document.getElementById(cblBranchCampusId).checked = true;
            }
        }
    } else if (isUndefined(branchesArr) || branchesArr[0] == '') {
        document.getElementById(cblMainCampusId).checked = true;
        document.getElementById(cblBranchCampusId).checked = true;
    }
    
    //set hidden field title if the query is saved
    var titleVal = URLDecode(urlVars["title"]);    
    if (!isUndefined(titleVal) ) {            
            $("#title").val(titleVal);
        }    
    //only for returning queries after login
    if (!isUndefined(returningQuery) && returningQuery=="true") {
        var page = URLDecode(urlVars["page"]);            
        if (!isUndefined(page) && !isNaN(page))
            $("#returnpage").val(page);
    }
    
    // bind checkbox click to update results
    $('.leftSearchColumn input:checkbox, .leftSearchColumn input:radio').click(function(e) {
        var that = $(this);
        if (($(this).closest('#' + cblRankingsId).length > 0 && $('#' + cblRankingsId + ' input').filter(":checked").length > 3) ||
            ($(this).closest('#' + cblRankingsCareerId).length > 0 && $('#' + cblRankingsCareerId + ' input').filter(":checked").length > 3)) {
            that.closest('div.menu').children('div.controls').addClass('tooManyChecks');
            setTimeout('$.uniform.update();', 50);
            return false;
        } else {
            $('div.controls').removeClass('tooManyChecks');
            UpdateResults(e);
        }
    });

    InitFinished = true;
}

/*------------------------GETTING VALUES AND BINDING EVENTS------------------------------*/
   
//fetches array of school ranks selected
function GetSchoolRankArray() {
    var SchoolRankArray = Array();

    if (document.getElementById(cblCoveredId).checked) {
        SchoolRankArray.push('R');
    }
    if (document.getElementById(cblSkeletonId).checked) {
        SchoolRankArray.push('S');
    }
    
    return SchoolRankArray;
}

//fetches array of school branch selected
function GetSchoolBranchArray() {
    var SchoolBranchArray = Array();

    if (document.getElementById(cblMainCampusId).checked) {
        SchoolBranchArray.push('M');
    }
    if (document.getElementById(cblBranchCampusId).checked) {
        SchoolBranchArray.push('B');
    }

    return SchoolBranchArray;
}

// fetches array of selected checkboxes with a particular checklist ID
function getSelectedInList(checklistID) {
    var selected = Array();
    $('#' + checklistID + ' input[type="checkbox"]').filter(':checked').each(function() {
        var label = $('label[for=' + $(this).attr('id') + ']');
        if (label.children().size() > 0) {
            var currentValue = label.children('a').text();
        } else {
            var currentValue = label.text();
        }
        selected.push(currentValue);
    });
    return selected;
}

//Zip textbox onblur 
function updateAfterZip() {
    var $chkStateSchools = $("input:checkbox[id$=" + checkInStateId + "]");
    var chkStateSchoolsSelected = $chkStateSchools.is(':checked');
    if ((chkStateSchoolsSelected || $("#slider-miles").slider("value") != 3000) && $("#" + txtZipCodeId).val() != "")
        UpdateResults();
}


/*-----------------------------UPDATE of results--------------------------------------*/
//Build query from selected values
function BuildQueryString() {
    //get school types
    var typesVal = $('#' + ddlTypeId).val();
    //get school types
    var rankesVal = GetSchoolRankArray().join(',');
    //get school types
    var branchesVal = GetSchoolBranchArray().join(',');
    //get cost           
    var tuitionlow = $("#slider-cost").slider("values", 0);
    var tuitionhigh = $("#slider-cost").slider("values", 1);
    //rbTotalId
    var $totalCost = $("#" + rbTotalId);
    var totalSelected = $totalCost.is(':checked');
    //get student body
    studentbodylow = $("#slider-student").slider("values", 0);
    studentbodyhigh = $("#slider-student").slider("values", 1);
    //get city setting
    var citySettingVal = getSelectedInList(cblSettingId).join(',');
    //get city setting
    var USRegionsVal = getSelectedInList(cblRegionId).join(',');
    //get highly ranked sections
    var RankedSectionsVal = getSelectedInList(cblRankingsId).join(',');
    if (RankedSectionsVal == "") RankedSectionsVal = getSelectedInList(cblRankingsCareerId).join(',');
    //get zip
    var zip = $("#" + txtZipCodeId).val();
    //get miles
    var miles = $("#slider-miles").slider("value");
    //get condition to check state schools
    var $chkStateSchools = $("#" + checkInStateId);
    var chkStateSchoolsSelected = $chkStateSchools.is(':checked');
    //get majors
    var majors = $('#' + majorListingId).addBox('list').join(',');
    //get religious affiliation
    var religiousAffiliationVal = getSelectedInList(cblReligionId).join(',');
    var queryString =
                    "rankings=" + escape(RankedSectionsVal) +
                    "&zipcode=" + escape(zip) +
                    "&distance=" + escape(miles) +
                    "&instate=" + escape(chkStateSchoolsSelected) +
                    "&regions=" + escape(USRegionsVal) +
                    "&settings=" + escape(citySettingVal) +
                    "&religiousaffiliations=" + escape(religiousAffiliationVal) +
                    "&majors=" + escape(majors) +
                    "&total=" + escape(totalSelected) +
                    "&tuitionlow=" + escape(tuitionlow) +
                    "&tuitionhigh=" + escape(tuitionhigh) +
                    "&studentbodylow=" + escape(studentbodylow) +
                    "&studentbodyhigh=" + escape(studentbodyhigh) +
                    "&types=" + escape(typesVal) +
                    "&ranks=" + escape(rankesVal) +
                    "&branches=" + escape(branchesVal);

    var title = $("#title").val();
    if (title != null && title != "")
        queryString += ("&title=" + escape(title));

    if (!isUndefined(returningQuery)) {
        var page = $("#returnpage").val();
        if (page != null && page != '')
            queryString += ("&page=" + escape(page));
    }
  
    return queryString;
}

function UpdateResults(e) {
    ClearHiddenTitleVal();
    ClearHiddenPageVal();
    UpdateResultsWithoutClear();
}

function updateDropdowns() {
    var dropdowns = [cblSettingId, cblRegionId, cblReligionId];
    for (i = 0; i < dropdowns.length; i++) {
        var totalCheckboxes = $('#' + dropdowns[i] + ' input').length;
        var $checked = $('#' + dropdowns[i] + ' input').filter(':checked');
        var a = '<a onclick="clearAllCheckBoxes(\'' + dropdowns[i] + '\'); UpdateResults(); return false;">Uncheck all</a>';
        var b = '<a onclick="setAllCheckBoxes(\'' + dropdowns[i] + '\'); UpdateResults(); return false;">Check all</a>';
        var html = a + ' | ' + b;
        if ($checked.length == totalCheckboxes) {
            html = a;
        } else if ($checked.length == 0) {
            html = b;
        }
        $('#' + dropdowns[i]).siblings('div.controls').html(html);
    }
    dropdowns = [cblSettingId, cblRegionId, cblReligionId, cblRankingsId, cblRankingsCareerId];
    for (i = 0; i < dropdowns.length; i++) {
        var selected = getSelectedInList(dropdowns[i]);
        var selectedhtml = "";
        if (selected.length > 0) {
            selectedhtml = '<h5>Currently selected</h5>';
            for (j = 0; j < selected.length; j++) {
                selectedhtml += '<a onclick="uncheckBox(\'' + dropdowns[i] + '\', \'' + selected[j] + '\'); UpdateResults(); return false;">' + selected[j] + '</a>';
            }
        }
        $('#' + dropdowns[i]).parents('.advSearchSelector').next('.currentSelections').html(selectedhtml);
    }
}

var CollegeFinderAjaxBreaker;
function UpdateResultsWithoutClear() {
    if (InitFinished) {
        // run uniform.update to sync checkboxes and filters
        $.uniform.update();
        updateDropdowns();
        $('div.selectUniform span').ellipsis();
        
        if (CollegeFinderAjaxBreaker !== undefined) { CollegeFinderAjaxBreaker.abort(); }
        $("#ResultsFrame .loading").show();

        var theQueryString = BuildQueryString();
        CollegeFinderAjaxBreaker = $.ajax({
            url: BaseURL + "/finder/results.aspx?" + theQueryString,
            success: function(data) {
                $("#ResultsFrame").html(data + '<div class="loading"><img src="/images/main/searchLoading.gif"></div>');
                $("#ResultsFrame .loading").hide();
                uniformThis('#ResultsFrame span.uniformMe input:checkbox');
                gapi.plusone.go();

                var totalSchools = $('#totalResults').html();
                if (totalSchools == null) { totalSchools = "No" }
                $('#resultDisplay').html('<h5>Result: ' + totalSchools + ' schools</h5>');

                bindYMNButtons();
                // removes YMN buttons from validation
                $('#resultsForm').validate().settings = "";

                if (history.replaceState) {
                    history.replaceState({ q: theQueryString }, "", "default.aspx?" + theQueryString);
                }
            }
        });
    }
}
