﻿//###########################################################################################################
// Description : JS functions for quicksearch
// Author : RPO                                      Date : 20 Oct 2008
// Copyright 2008 John Wiley and Sons Ltd
//-----------------------------------------------------------------------------------------------------------
// Change log:	Date		    Reference		Author		Description
//-----------------------------------------------------------------------------------------------------------
// R01.P08      24/03/2009      LABO-OXF292     RPO         - modified auto-complete function
// R01.P08      24/03/2009      LABO-OXF362     RPO         - removed end space in search term
//###########################################################################################################

var browser = navigator.appName;    
var browser_version=navigator.appVersion;    
var saved_historyid =  "";
var _itemctr = 1;
var _itemcurrent = 1;
var _scroll = 0;
var _listlength = 0;
var _rhymeWords = "";

function formatQuickSearchStr(str) {    
    var search_updated = "";
        
    if (str.indexOf(",") > -1) {
        var search1 = str.split(",");
        for (ctr = 0; ctr < search1.length; ctr++) {
            search_updated += search1[ctr] + ", ";
        }
        
        search_updated = search_updated.substring(0, search_updated.length-2);        
        search_updated = search_updated.replace(/  /g, ' ');
    }else{
        search_updated = str.replace(/\+/g, "_");
    }
    
    return search_updated;
}

function setSavedSearch(historyid, searchtitle, onclick) {            
    saved_historyid = historyid;
    /* LABO-OXF362 - 28/04/2009 - RPO - removed space */
    document.getElementById("ctl00_QuickSearch1_txtQuickSearch").value = searchtitle.trim();
    
    if (onclick==1) {
        $("#quicksearch_suggestion_main").slideUp("slow");
        $("#div_quicksearch").slideUp("slow");
        document.getElementById('ctl00_QuickSearch1_btnSearch').click();
    }
}

function cleanQueryString(value) {
    var _value = value.replace(/</g, "");    
    _value = _value.replace(/>/g, "");
        
    return _value
}

function quickSearch() {        
    var match_any = document.getElementById("ctl00_QuickSearch1_ddlQuickSeachFilter").options[document.getElementById("ctl00_QuickSearch1_ddlQuickSeachFilter").selectedIndex].value;        
    
    /* LABO-OXF362 - 28/04/2009 - RPO - removed space */
    //quick_search = quick_search.replace(/,/g, " ");    
    //var quick_search = document.getElementById("ctl00_QuickSearch1_txtQuickSearch").value;
    
    var quick_search = formatQuickSearchStr(document.getElementById("ctl00_QuickSearch1_txtQuickSearch").value); 
    
    if (quick_search.length < 3) {
        modalPopup_showAlert('Quick Search','Minimum 3 characters required.');        
        return false;
    }
    
    if (quick_search != "") {        
        $("#quicksearch_suggestion_main").slideUp("slow");
        $("#div_quicksearch").slideUp("slow");
        
        if (saved_historyid != "") {            
            window.location.href = "../searchresults.aspx?q=" + quick_search + "&filter=" + match_any + "&historyid=" + saved_historyid;
        } else {
            window.location.href = "../searchresults.aspx?q=" + quick_search + "&filter=" + match_any;
        }
    }
}


function unhighlight_quicksearch(id) {    
    //if (eval(id.replace('quicksearch_','')) % 2 == 0) {    
    //    $('#' + id).css('background-color','white');        
    //}else{    
        $('#' + id).css('background-color','#E4EDFE');        
    //}    
    $('#' + id).css('color','black');
}

function highlight_quicksearch(id) {
    
    _itemcurrent = id
    $('#quicksearch_suggestion_box').children().each(function() {
        if ($(this).attr('id').indexOf('quicksearch_') > -1) {            
            unhighlight_quicksearch($(this).attr("id"));            
        }
    });
    
    $('#quicksearch_' + id).css("background-color","#006699");    
    $('#quicksearch_' + id).css("color","white");
}

function unhighlight_search(id) {    
    if (eval(id.replace('quicksearch_','')) % 2 == 0) {    
        $('#' + id).css('background-color','#E4EDFE');        
    }else{    
        $('#' + id).css('background-color','white');        
    }    
    $('#' + id).css('color','black');
}

function highlight_search(id) {
    $('#quicksearch_suggestion_box').children().each(function() {
        if ($(this).attr('id').indexOf('quicksearch_') > -1) {            
            unhighlight_search($(this).attr("id"));            
        }
    });
    
    $('#quicksearch_' + id).css("background-color","#006699");    
    $('#quicksearch_' + id).css("color","white");
}

function get_quicksearch_length() {
    var _length = 0;
    $("#quicksearch_suggestion_box").children().each(function() {
        if ($(this).attr("id") != undefined && $(this).attr("id") != null) {
            if ($(this).attr("id").indexOf("quicksearch_") > -1) {
                _length += 1;
            }
        }
    });
    
    return _length;
}

/* 24/03/2009  LABO-OXF292  RPO - modified to allow selection by up/down arrow keys */
function navigate_to_suggestionlist(event_code, click) {    
    if (event_code == 13) {
        quickSearch();
    }else{
        if (event_code == 40 || click == "scrollup") {
            if (_itemcurrent == (_itemctr+1)) {
                _itemctr = _itemcurrent+1;
            }            
            
            if (_itemcurrent >= 5 && _itemcurrent <= _listlength) {
                _scroll -= 20;
            }
            
            if (_itemcurrent == _listlength) {
                _scroll = 0;
                _itemctr = 1;
            }
            
            $("#quicksearch_suggestion_box").show().animate({top: _scroll},"fast");
            highlight_quicksearch(_itemctr);
            setSavedSearch($('#historyid' + eval(_itemctr-1)).val(),$('#quicksearch_' + eval(_itemctr)).text(), 0);                        
            _itemctr += 1;
        }
        
        if (event_code == 38 || click == "scrolldown") {   
            
            if (_itemcurrent == 1) {
                _itemctr = _listlength;
            }
            
            if (_itemcurrent == (_itemctr-1)) {
                _itemctr = _itemcurrent-1;
            }       
            if (_itemcurrent <= 6) {
                if (_scroll >= -100 && _scroll < 0) {
                    _scroll += 20;
                }
            }
            if (_itemcurrent == 1 && _listlength > 5) {
                _scroll = -100;
                _itemcurrent = _listlength;
                _itemctr = _listlength;
            }
            
            $("#quicksearch_suggestion_box").show().animate({top: _scroll},"fast");
            highlight_quicksearch(eval(_itemctr));
            
            setSavedSearch($('#historyid' + eval(_itemctr-1)).val(),$('#quicksearch_' + eval(_itemctr)).text(), 0);                                     
            
            _itemctr -= 1;
        }        
    }
}

function set_suggestionlist_highlight(listbox_id) {    
    $('#' + listbox_id).children().each(function() {                
        
        $(this).hover(            
            function() {                
                $(this).css("background-color","#006699");
                $(this).css("color","white");                
            },
            function() {
                
                //if (eval($(this).attr("id").replace("quicksearch_","")) % 2 == 0) {
                //    $(this).css("background-color","white");                    
                //}else{
                    $(this).css("background-color","#E4EDFE");                    
                //}
                
                $(this).css("color","black");
                
            }            
        );
    });
}

$(document).ready(function() {
    //$("#quicksearch_up").click(function() {navigate_to_suggestionlist(0,"scrollup")});
    //$("#quicksearch_down").click(function() {navigate_to_suggestionlist(0,"scrolldown")});
});

var searching = false;

function searchSavedSearch(obj) {
    
    if (_current_profileid != 0 && obj.value.trim().length >= 3) {
    
        var _data = "{_memberID: '" + _current_profileid + "', _searchTerm: '" + obj.value.trim().replace("\"","") + "' }";     
        
        if (!searching) {
            $.ajax({
                type: "POST",
                url: "../WebService/Search.asmx/GetSavedSearch",
                data: _data,
                contentType: "application/json; charset=utf-8",
                dataType: "json",            
                beforeSend: function() {
                    searching = true;                    
                },
                success: function(msg) {         
                           
                    if (msg.d.length > 199) {                                                                                                                  
                        $("#quicksearch_suggestion_box").empty();                                
                        $("#quicksearch_suggestion_box").html(msg.d);

                        $("#div_quicksearch").slideUp("slow");                    
                        
                        /* R01.P08 BMA, 21/04/2009 */
                        $('#quicksearch_suggestion_box').width('94%');
                        SetHeight('quicksearch_suggestion_main', 'quicksearch_suggestion_box', 100);
                        /* R01.P08 BMA, 21/04/2009 */
                        
                        /* RPO - 22/04/2009 */
                        $("#quicksearch_suggestion_main").slideDown("slow");
                        set_suggestionlist_highlight("quicksearch_suggestion_box");
                        
                    }else{  
                        $("#quicksearch_suggestion_box").empty();                  
                        $("#quicksearch_suggestion_main").slideUp("slow");
                    }                                            
                    
                    $("#quicksearch_suggestion_box").css("top","0px");
                    _listlength = get_quicksearch_length();                
                    _itemctr = 1;
                    _itemcurrent = 1;
                    _scroll = 0;
                    
                    searching = false;
                }
            });                
        }
    }else{
        $("#quicksearch_suggestion_main").slideUp("slow");
    }
}

function closeSavedSearch() {
    $("#quicksearch_suggestion_main").slideUp("slow");
}

