﻿var faq =
{
    faqSearchElement : "#faqSearch",
    faqResultElement : "#faqResults",
    faqLoadingElement : "#faqLoading",
    searchDelay : 1000,
    lastSearchValue : "",
    searchTimer : null,
    init : function(sElement, rElement, lElement, delay)
    {
        faq.faqSearchElement = sElement;
        faq.faqResultElement = rElement;
        faq.faqLoadingElement = lElement;
        faq.searchDelay = delay;
        
        objResultElement = jQuery(faq.faqResultElement);
        objResultElement.css("display", "none");
        
        objLoadingElement = jQuery(faq.faqLoadingElement);
        objLoadingElement.css("display", "none");
        
        faq.setupSearch();
    },
    setupSearch : function()
    {
        objSearchElement = jQuery(faq.faqSearchElement);
        objSearchElement.keyup(function(e) { faq.searchWait(); return faq.disableCR(e); });
    },
    disableCR : function(evt)
    {
        var evt  = (evt) ? evt : ((event) ? event : null);
        var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
        if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
    },
    searchWait : function()
    {
        objSearchElement = jQuery(faq.faqSearchElement);
        if (objSearchElement.val().trim() == faq.lastSearchValue)
        {
            return false;
        }
        
        if (!faq.searchTimer)
            faq.searchTimer = setTimeout(faq.doSearch, faq.searchDelay);
        else
        {
            clearTimeout(faq.searchTimer);
            faq.searchTimer = setTimeout(faq.doSearch, faq.searchDelay);
        }
    },
    doSearch : function()
    {
        faq.searchTimer = null;
        objSearchElement = jQuery(faq.faqSearchElement);
        objResultElement = jQuery(faq.faqResultElement);
        objLoadingElement = jQuery(faq.faqLoadingElement);
        faq.lastSearchValue = objSearchElement.val().trim();
        
        if (faq.lastSearchValue != '')
        {
            faq.searchForFaqs();
        }
        else
        {
            objResultElement.css("display", "none");
            objLoadingElement.css("display", "none");
        }
    },
    searchForFaqs : function(searchString)
    {
        objSearchElement = jQuery(faq.faqSearchElement);
        objResultElement = jQuery(faq.faqResultElement);
        objLoadingElement = jQuery(faq.faqLoadingElement);
        
        objResultElement.css("display", "none");
        objLoadingElement.css("display", "block");
        
        jQuery.ajax({
            type: "POST",
            url: "/recruitmentCentre/supportAndDownloads/FAQs/ajax/AjaxFaqs.aspx",
            data: "q=" + objSearchElement.val().trim(),
            success: function(o) {
                objLoadingElement.css("display", "none");
                objResultElement.empty();
                objResultElement.html("<p><strong>Results:</strong></p>" + o);
                objResultElement.css("display", "block");
            },
            error: function(o) {
                objLoadingElement.css("display", "none");
                objResultElement.empty();
                objResultElement.html("<p>Network error loading faqs.</p>");
                objResultElement.css("display", "block");
            }
        });
    }
};
