﻿/// <reference path="jquery-1.3.2.min-vsdoc.js" />
$("#loading").hide();
Namespace.Manager.Register('Instruction.Search');
Instruction.Search.Slug = '#search';
jQuery.fn.center = function() { this.css("position", "absolute"); this.css("top", ($(window).height() - this.height()) / 2 + $(window).scrollTop() + "px"); this.css("left", ($(window).width() - this.width()) / 2 + $(window).scrollLeft() + "px"); return this; }

$(document).ready(function() {
    $("#advanced-results-panel").hide();
    Instruction.Search.Results.Init();
});


Instruction.Search.SaveCriteria = function(page) {
    // common elements for both searchs
    var pn = page ? page : 1;
    var kw = $("#searchTerm").val();
    var gl = $('#GradeList').val();
    var sid = $('#SubjectAreaList').val();
    var cid = $('#CourseListMiddle').val();
    var isid = "";
    $('input:checkbox[name=InstructionalStrategies]:checked').each(function() {
    if (isid != '') {
            isid = isid + ',' + $(this).val();
        }
        else {
            isid = $(this).val();
        }
    });
    var htid = "";
    $('input:checkbox[name=HigherOrderThinkings]:checked').each(function() {
        if (htid != '') {
            htid = htid + ',' + $(this).val();
        }
        else {
            htid = $(this).val();
        }
    });
    var stid = "";
    $(".StandardFilter").each(function() {
        if ($(this)[0].checked) {
            stid = stid + $(this).val() + ",";
        }
    });


    // clean up
    if (!gl)
        gl = '';
    if (!sid)
        sid = '';
    if (!cid)
        cid = '';
    if (!isid)
        isid = '';
    if (!htid)
        htid = '';
    if (!stid)
        stid = '';

    Cookies.Add(Instruction.Search.Key, String.format('{p:{0},kw:"{1}",gl:"{2}",sid:"{3}",cid:"{4}",isid:"{5}",htid:"{6}",stid:"{7}"}', pn, kw, gl, sid, cid, isid, htid, stid));
    return
}

Instruction.Search.Results = {
    Init: function() {
        var doSearch = (location.href.indexOf(Instruction.Search.Slug) > 0);
        if (doSearch) {
            // handle a back button from detail page, reload form
            var sq;
            sq = Cookies.Get(Instruction.Search.Key);
            if (sq) {
                var cp = eval('(' + unescape(sq) + ')');
                if (cp.p) { params.PageNumber = cp.p; }
                if (cp.kw) { $("#searchTerm").val(cp.kw); }
                if (cp.gl) { $('#GradeList').val(cp.gl); }
                if (cp.sid) { $('#SubjectAreaList').val(cp.sid); }
                if (cp.cid) { $('#CourseListMiddle').val(cp.cid); }
                if (cp.isid) { $('input:checkbox[name=InstructionalStrategies]:checked').val(cp.isid); }
                if (cp.htid) { $('input:checkbox[name=HigherOrderThinkings]:checked').val(cp.htid); }
                if (cp.stid) { $('input:checkbox[name=StandardFilter]:checked').val(cp.stid); }
            }
        }
        // execute the search
        if (doSearch && sq) {
            // if there are standards
            if (cp.stid) {
                GetSearchResults(cp.p, cp.stid);
            }
            // if there are no standards
            else {
                GetSearchResults(cp.p, null);
            }
        }
    }
}

function GetSearchResults(id, standards) {
    $(this).ajaxStart(function() {
        $("#loading").removeClass('hide');
        $("#loading").show();
        $("#loading").center();
    }).ajaxStop(function() {
        $("#loading").fadeOut(500);
    });

    $("#SearchDiv").show();

    var result = "";
    $(".StandardFilter").each(function() {
        if ($(this)[0].checked) {
            result = result + $(this).val() + ",";
        }
    });

    if (standards != null)
        result = standards;

    var InstructionalStrategies = "";
    $('input:checkbox[name=InstructionalStrategies]:checked').each(function() {
        if (InstructionalStrategies != '') {
            InstructionalStrategies = InstructionalStrategies + ',' + $(this).val();
        }
        else {
            InstructionalStrategies = $(this).val();
        }
    });

    var HigherOrderThinkings = "";
    $('input:checkbox[name=HigherOrderThinkings]:checked').each(function() {
        if (HigherOrderThinkings != '') {
            HigherOrderThinkings = HigherOrderThinkings + ',' + $(this).val();
        }
        else {
            HigherOrderThinkings = $(this).val();
        }
    });
    $.get("/Main/SearchResult?searchTerm=" + $("#searchTerm").val() + "&grade=" + $("#GradeList").val() + '&subject=' + $("#SubjectAreaList").val() + '&course=' + $("#CourseListMiddle").val() + '&instructionalstrategy=' + InstructionalStrategies + '&higherorderthinking=' + HigherOrderThinkings + '&StandardFilter=' + result + '&page=' + id, null, function(data) {
        $("#SearchDiv").empty();
        $("#SearchDiv").append(data);
        $('html, body').animate({ scrollTop: $('#SearchDiv').offset().top }, 2000);
    }, null);
    Instruction.Search.SaveCriteria(id ? id : 1);
    //top.location.href = '#' + $("#searchTerm").val() + '|' + $("#GradeList").val() + '|' + $("#SubjectAreaList").val() + '|' + $("#CourseListMiddle").val() + '|' + InstructionalStrategies + '|' + HigherOrderThinkings + '|' + result + '|' + id;
    window.location.href = Instruction.Search.Slug;
    return false;
}

function GetVideoDetails(EdResourceId) {
    $(this).ajaxStart(function() {
        $("#loading").removeClass('hide');
        $("#loading").show();
        $("#loading").center();
    }).ajaxStop(function() {
        $("#loading").fadeOut(500);
    });

    $.get("/Main/VideoDetail?EdResourceId=" + EdResourceId, null, function(data) {
        $("ul").find("#videoDetails").filter(function() {
            return $(this).attr("EdResourceId") == EdResourceId;
        }).empty();
        $("ul").find("#videoDetails").filter(function() {
            return $(this).attr("EdResourceId") == EdResourceId;
        }).append(data);
    }, null);
    //window.location.href = Instruction.Search.Slug;
    return false;
}

// Not Displaying Standards - Subjects Drop Down are Top Level Standards
//$("#GradeList").change(function() {
//    $(this).ajaxStart(function() {
//        $("#loading").removeClass('hide');
//        $("#loading").show();

//    }).ajaxStop(function() {
//        $("#loading").fadeOut(500);
//    });

//    var grades = $("OPTION:selected", this).val();
//    var subject = $("OPTION:selected", $("#SubjectAreaList")).val();
//    if (subject != "0" && grades != "0" && subject != "" && grades != "") {
////        $("#assessment-advanced-search").fadeIn(500);
//        $.post("AdvancedSearchOptions", { grade: grades, id: subject }, function(data) {
//            $("#advanced-results").empty();
//            $("#advanced-results").append(data);
//        }, null);
//    }
//    else {
//        $("#advanced-results").empty();
////        $("#searchGallery").fadeOut(500);
//    }
//});

// Not Displaying Standards - Subjects Drop Down are Top Level Standards
//$("#SubjectAreaList").change(function() {
//    $(this).ajaxStart(function() {
//        $("#loading").removeClass('hide');
//        $("#loading").show();

//    }).ajaxStop(function() {
//        $("#loading").fadeOut(500);
//    });
//    var subject = $("OPTION:selected", this).val();
//    var grades = $("OPTION:selected", $("#GradeList")).val();
//    if (subject != "0" && grades != "0" && subject != "" && grades != "") {
////        $("#assessment-advanced-search").fadeIn(500);
//        $.post("AdvancedSearchOptions", { grade: grades, id: subject }, function(data) {
//        $("#advanced-results").html(data);
//        }, null);
//    }
//    else {
//        $("#advanced-results").empty();
////        $("#searchGallery").fadeOut(500);
//    }
//});

// Not Displaying Standards - Subjects Drop Down are Top Level Standards
//$("#CourseListMiddle").change(function() {
//    $(this).ajaxStart(function() {
//        $("#loading").removeClass('hide');
//        $("#loading").show();

//    }).ajaxStop(function() {
//        $("#loading").fadeOut(500);
//    });
//    var course = $("OPTION:selected", this).val();
//    var grades = '';
//    if (course != "0" && course != "") {
////        $("#assessment-advanced-search").fadeIn(500);
//        $.post("AdvancedSearchOptions", { grade: grades, id: course }, function(data) {
//            $("#advanced-results").html(data);
//        }, null);
//    }
//    else {
//        $("#advanced-results").empty();
////        $("#searchGallery").fadeOut(500);
//    }
//});

//$("#HideAdvancedSearch").click(function() {
//    $("#advanced-results-panel").hide();
//});


function advancedToggle() {
    if ($("#advanced-results-panel").is(":visible")) {
        $("#advanced-results-panel").slideUp("medium");
        $("#advanced-panel > a.collapse").toggleClass("expand").toggleClass("collapse");
    } else {
        $("#advanced-results-panel").slideDown("medium");
        $("#advanced-panel > a.expand").toggleClass("expand").toggleClass("collapse");
    }
}

function SelectAll(id, chk, standards) {
    $(this).ajaxStart(function() {
        $("#loading").removeClass('hide');
        $("#loading").show();
        $("#loading").center();
    }).ajaxStop(function() {
        $("#loading").fadeOut(500);
    });

    $("#SearchDiv").show();

    var result = "";

    var baseURL = document.location.toString();
    if (baseURL.indexOf("|") != -1) {
        var variables = baseURL.split('#')[1];
        result = variables.split('|')[4];
    }
    
    $(".StandardFilter").each(function() {
        if ($(this)[0].checked) {
            result = result + $(this).val() + ",";
        }
    });

    if (standards != null)
        result = standards;

    var status = $("#paradigm_all").attr('checked');   
    $.get("/Assessment/SelectAll?searchTerm=" + $("#searchTerm").val() + "&grade=" + $("#GradeList").val() + '&subject=' + $("#SubjectAreaList").val() + '&questionType=' + $("#QuestionType").val() + '&StandardFilter=' + result + '&page=' + id + '&select=' + status, null, function(data) {
        $("#SearchDiv").html(data);
        $("#BuildAssessment").show();
        $.post("GetShoppingCartCount", {}, function(data) {
            $("#shoppingCartCount").text(data);
        }, null);
    }, null);

    top.location.href = '#' + $("#searchTerm").val() + '|' + $("#GradeList").val() + '|' + $("#SubjectAreaList").val() + '|' + $("#QuestionType").val() + '|' + result + '|' + id;
    return true;
}

function SelectAllBottom(id, standards) {
    $(this).ajaxStart(function() {
        $("#loading").removeClass('hide');
        $("#loading").show();
        $("#loading").center();
    }).ajaxStop(function() {
        $("#loading").fadeOut(500);
    });

    $("#SearchDiv").show();

    var result = "";

    var baseURL = document.location.toString();
    if (baseURL.indexOf("|") != -1) {
        var variables = baseURL.split('#')[1];
        result = variables.split('|')[4];
    }

    $(".StandardFilter").each(function() {
        if ($(this)[0].checked) {
            result = result + $(this).val() + ",";
        }
    });

    if (standards != null)
        result = standards;

    var status = $("#SelectAllBottom").attr('checked');
    $.get("/Assessment/SelectAll?searchTerm=" + $("#searchTerm").val() + "&grade=" + $("#GradeList").val() + '&subject=' + $("#SubjectAreaList").val() + '&questionType=' + $("#QuestionType").val() + '&StandardFilter=' + result + '&page=' + id + '&select=' + status, null, function(data) {
        $("#SearchDiv").html(data);
        $("#BuildAssessment").show();
        $.post("GetShoppingCartCount", {}, function(data) {
            $("#shoppingCartCount").text(data);
        }, null);
    }, null);

    top.location.href = '#' + $("#searchTerm").val() + '|' + $("#GradeList").val() + '|' + $("#SubjectAreaList").val() + '|' + $("#QuestionType").val() + '|' + result + '|' + id;
    $('html, body').animate({ scrollTop: 10000 }, 150);
    return true;
}

/**********************  COOKIES **************************************** */
function Cookie() {
    this.Enabled = true;
    this.Message = "Cookies are accepted."
    // check cookies
    this.Test = function() {
        if (document.cookie != null) {
            document.cookie = "cookiettest=ok";  // cookies enabled?
            var CookieTest = document.cookie;
            if (CookieTest == "" || CookieTest.indexOf("cookietest") == -1) {
                this.Enabled = false;
                this.Message = "Please turn on cookies.";
            }
        }
        return this.Message;
    } // end of cookie checker

    /* Cookie tools */
    this.Add = function(name, value, days) {
        var expires = "";
        if (days) {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            expires = "; expires=" + date.toGMTString();
        }
        // set the cookie up
        document.cookie = name + "=" + value + expires + "; path=/";
    }
    // gets the value from a Cookie
    this.Get = function(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for (var i = 0; i < ca.length; i++) {
            var c = ca[i];
            while (c.charAt(0) == ' ') c = c.substring(1, c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
        }
        return null;
    }
    // removes the cookies
    this.Delete = function(name) {
        this.Add(name, "", -1);
    }
} // end of Cookie object

var Cookies = new Cookie();

/* cookie tools */

/********************** END COOKIES **************************************** */

