$(document).ready(function () {
    $(".menuImg")
        .mouseover(function () {
            var src = $(this).attr("src").match(/[^\.]+/) + "_over.png";
            $(this).attr("src", src);
        })
        .mouseout(function () {
            var src = $(this).attr("src").replace("_over", "");
            $(this).attr("src", src);
        });

    $(".rowHide_True").closest("tr").hide();
    $("#MainContent_divExpand").click(function () {
        $(this).toggle();
        $(".rowHide_True").closest("tr").show();
    });


    $("#txtSearchTerm").click(function () { $("#txtSearchTerm").removeClass("defaultSearchBg"); })

    if ($("#txtSearchTerm").val() != "") {
        $("#txtSearchTerm").removeClass("defaultSearchBg");
    }

    $('span.tooltip').qtip({
        position: {
            corner: {
                target: 'rightMiddle',
                tooltip: 'leftMiddle'
            }
        },
        style: {
            width: 250,
            padding: 8,
            background: '#ffffff url(/images/tooltipBG.png) repeat-x',
            color: 'black',
            border: {
                width: 3,
                radius: 4,
                color: '#849DB6'
            },
            tip: true,
            name: 'blue'
        }
    });


    if ($("#divSearchResultsTableHolder").length > 0) {
        loadResults();
    }

    if ($("#div_resultsBtn").length > 0) {
        // home/search page
        sendSearch();

        $("#formSearch input:checkbox").click(function () { doSearch(); });
    }



});




function delayDoSearch() {
    if (typeof window.typePauseTime != "undefined")
        clearTimeout(window.typePauseTime);
    window.typePauseTime = setTimeout("doSearch()", 1800);
}


function doSearch() {
    // Cancel previous search requests
    if (typeof typePauseTime != "undefined")
        clearTimeout(typePauseTime);
    if (typeof window.searchPauseTime != "undefined")
        clearTimeout(window.searchPauseTime);

    // Pause before sending request - prevents each click from sending to database
    window.searchPauseTime = setTimeout("sendSearch()", 1000);
}


function sendSearch() {
    $("#div_resultsBtn").removeClass('resultsBtnOn').addClass('resultsBtnOff').click(function () { });
    $("#div_resultsBtn").html('<img src="/Images/waitAnim_gray16.gif" alt="Searching" align="middle" /> Searching...');

    $("#divMainFields").showLoading();

    var formData = objSearchFields();

    $.ajax({
        type: "POST",
        url: "/searchCount.aspx",
        data: formData,
        dataType: "text json",
        success: function (dataString) {
            var data = JSON.parse(dataString)
            if (data.totalCount == "0") {
                $("#div_resultsBtn").removeClass('resultsBtnOn').addClass('resultsBtnOff').unbind('click').html('No Results Found');
            } else {
                $("#div_resultsBtn").removeClass('resultsBtnOff').addClass('resultsBtnOn').click(function () { submitSearch(); }).html(addCommas(data.totalCount) + ' Results Found! Go to Results &gt;');
            }

            for (var key in data) {
                if (data.hasOwnProperty(key)) {
                    if ($("#parQ_" + key).length != 0) {
                        $("#parQ_" + key).html('(' + addCommas(data[key]) + ')');

                        if (data[key] == '0') {
                            $("#parLbl_" + key).addClass('optDisabled');
                            $("#parLbl_" + key + " :input").attr("disabled", true)
                        } else {
                            $("#parLbl_" + key).removeClass('optDisabled');
                            $("#parLbl_" + key + " :input").attr("disabled", false)
                        }

                    }
                }
            }

            $("#divMainFields").hideLoading();

        },
        contentType: "text/html; charset=utf-8",
        dataType: "html",
        cache: false
    });
}


function objSearchFields() {
    // Returns an object with a single parameter for each search form field (name=val,val,val)
    var formData = {};

    $('#formSearch input:checked').each(function () {
        if (formData[this.title] == undefined)
            formData[this.title] = this.value;
        else
            formData[this.title] = formData[this.title] + ',' + this.value;
    });

    return formData;
}

function loadResults() {
    $("#divSearchResultsTableHolder").showLoading();

    var qstring = "searchterms=" + document.getElementById("MainContent_terms").value + "&sortby=" + encodeURI(document.getElementById("MainContent_sort").value) + "&pagenum=" + document.getElementById("MainContent_pagenum").value + "&perpage=" + document.getElementById("MainContent_perpage").value;

    $.ajax({
        type: "GET",
        url: "/searchResultsRender.aspx?" + qstring,
        success: function (data) {
            var outString = data.substring(data.indexOf('{') + 1, data.lastIndexOf('}'));
            $("#divSearchResultsTableHolder").html(outString);
            $("#divSearchResultsTableHolder").hideLoading();

            checkFromCompareList();

            $(".compareCheck").click(function () {
                var _chk = $(this);
                var _listFld = $("#fldCompareList");
                var _currentList = _listFld.val();

                // create an array currentArr and, if any products have been selected for comparison, store them in currentArr
                var currentArr = [];
                if (_currentList != "" && _currentList != "`") {
                    currentArr = _currentList.split("`");
                }

                if (currentArr.length < 4 && _chk.attr("checked")) {
                    // if currentArr has less than 4 products, and the clicked product is checked, append the checked option
                    currentArr.push($(this).val());
                } else if (!(_chk.attr("checked"))) {
                    // remove unchecked item from array and reset form field
                    var newCompareArr = [];
                    for (var i = 0; i < currentArr.length; i++) {
                        if (currentArr[i] != _chk.val())
                            newCompareArr.push(currentArr[i]);
                    }
                    currentArr = newCompareArr;
                } else {
                    // four products have already been selected for comparison. user must limit.
                    _chk.removeAttr("checked");
                    $("#divSearchResultsTableHolder").showLoading();

                    $("#chkAddProd").val(_chk.val());
                    $("#chkAddProd").removeAttr("checked");
                    $("#spanAddProd").html(_chk.val().split("|")[1]);

                    for (var n = 0; n < 4; n++) {
                        $("#chkExsProd" + n).val(currentArr[n]);
                        $("#chkExsProd" + n).attr("checked", "checked");
                        $("#spanExsProd" + n).html(currentArr[n].split("|")[1]);
                    }

                    $("#divCompareSelection").toggle();
                }

                _listFld.val(currentArr.join("`"));
            });

            $(".imgCompareButton").click(function () {
                submitCompare()
            });



        },
        contentType: "text/html; charset=utf-8",
        dataType: "html",
        cache: false
    });


}

$("#divExistingCompare input[type=checkbox]").click(function () {
    var checkCount = 0;
    $("#divExistingCompare input[type=checkbox]").each(function () {
        if ($(this).attr("checked")) {
            checkCount++;
        }
    });

    if (checkCount >= 4) {
        $("#chkAddProd").removeAttr("checked");
    } else {
        $("#chkAddProd").attr("checked", "checked");
    }
});

$("#chkAddProd").click(function () {
    if ($(this).attr("checked")) {
        return false;
    }
});

$("#btnCloseCompare").click(function () {
    var newCompareArr = [];
    $("#divCompareSelection input[type=checkbox]").each(function () {
        if ($(this).attr("checked")) {
            newCompareArr.push($(this).val());
        }
    });
    $("#fldCompareList").val(newCompareArr.join("`"));
    checkFromCompareList();
    $("#divCompareSelection").toggle();
    $("#divSearchResultsTableHolder").hideLoading();
});

$("#btnCompareNow").click(function () {
    $("#btnCloseCompare").click();
    submitCompare();
});

function submitCompare() {
    var _listFld = $("#fldCompareList");
    var _compareList = _listFld.val();
    if (_compareList != "" && _compareList != "`") {
        $("#frm_compare").submit();
    } else {
        alert("Select up to four producs to compare side-by-side, then click \"Compare Products\"");
    }
}


function checkFromCompareList() {
    // Check items on compare list
    var _listFld = $("#fldCompareList");
    var _compareList = _listFld.val();
    if (_compareList != "" && _compareList != "`") {
        var _compareArr = _compareList.split("`");
        $("#gvResults input[type=checkbox]").each(function () {
            $(this).removeAttr("checked");
            for (var i = 0; i < _compareArr.length; i++) {
                if ($(this).val() == _compareArr[i])
                    $(this).attr("checked", "checked");
            }
        });
    }
}



function gotoPage(pg) {
    if (typeof pg.selectedIndex != "undefined") {
        pgVal = pg.options[pg.selectedIndex].value;
    }
    else {
        pgVal = pg;
    }

    $("#MainContent_pagenum").val(pgVal);
    loadResults();
}

function rePage(perPage) {

    if (typeof perPage.selectedIndex != "undefined") {
        perPgVal = perPage.options[perPage.selectedIndex].value;
    }
    else {
        perPgVal = perPage;
    }

    $("#MainContent_pagenum").val("1");
    $("#MainContent_perpage").val(perPgVal);
    loadResults();
}

function doSort(sortHow) {
    $("#MainContent_pagenum").val("1");
    $("#MainContent_sort").val(sortHow);
    loadResults();
}


var strSearchFields = function () {
    // Returns a querystring-type string of search form field values in name=val,val,val pairs
    var fldString = '';
    var formData = objSearchFields();
    for (var key in formData) {
        fldString = fldString + '&' + key + '=' + formData[key];
    }
    return fldString.substr(1); // trims leading &
}


function submitSearch() {
    var formData = objSearchFields();
    $('#spanAddFields').html('');
    for (var key in formData) {
        $('#spanAddFields').append('<input type="hidden" name="' + key + '" value="' + formData[key] + '" />');
    }
    $('#formSearch').submit();
}

function addCommas(nStr) {
    nStr += '';
    x = nStr.split('.');
    x1 = x[0];
    x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
        x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}
//function removeWhiteSpace(text) {
//    return text.replace(/^\s*/, "").replace(/\s*$/, "");
//}
function cleanCharacters(text) {
    text = text.replace(/\\|\/|\:|\*|\?|\"|\<|\>|\|/g, "-")
    return text;
}
(function ($) {
    $("#btnTextSearch").click(function () {
        var _text = $("#txtSearchTerm").val();
        //_text = removeWhiteSpace(_text);
        _text=cleanCharacters(_text);
        if (_text != "") {
            var _searchText = encodeURI(_text);
             _searchText = _searchText.replace(/:/g, "__O__");
            window.location.href = _searchPath + _searchText;
        }
    });
})(jQuery);
