﻿function webmethods_init_SiteSearch()
{
    $('#search_pattern').focus();

    $('#search_links').show();
    $('#search_inprogress').hide();
    $('#search_results').hide();
    $('#search_results').html('');

    $('#search_pattern').width(450);

    $('#search_button').click(function () { 
        webmethods_SiteSearch();
    });
}

// Web method 'SiteSearch' proxy.
function webmethods_SiteSearch()
{
    $('#search_button')[0].enabled = false;
    $('#search_links').hide();
    $('#search_inprogress').show();
    $('#search_results').hide();
    $('#search_results').html('');

    var searchPattern = $('#search_pattern').val();

    searchPattern = searchPattern.toAlphanumeric();

    var exactMatch = searchPattern.startsWith('"') && searchPattern.endsWith('"');

    var Proxy = new serviceProxy('WebServiceMethods.asmx/');

    var method = 'SiteSearch';
    var data = { searchPattern: searchPattern, exactMatch: exactMatch };
    var callback = handleSiteSearchSuccess;
    var callbackparms = { searchPattern: searchPattern };
    var error = handleSiteSearchError;
    var errorparms = { searchPattern: searchPattern };

    Proxy.invoke(
        method,
        data,
        callback,
        callbackparms,
        error,
        errorparms
    );
}

// Web method 'SiteSearch' callback handler.
function handleSiteSearchSuccess(parms, msg)
{
    // Get the search pattern string.
    var searchPattern = parms.searchPattern;

    var searchhtml = 'Search results for "<b>'+searchPattern+'</b>"<br/><br/>';

    // Add the web method response for display.
    searchhtml += msg;

    $('#search_button')[0].enabled = true;
    $('#search_links').hide();
    $('#search_inprogress').hide();
    $('#search_results').html(searchhtml);
    $('#search_results').show();
}

// Web method 'SiteSearch' error handler.
function handleSiteSearchError(parms, msg)
{
    // Get the search pattern string.
    var searchPattern = parms.searchPattern;

    var searchhtml = 'Search results for "<b>'+searchPattern+'</b>"<br/><br/>';
    if (msg.ExceptionType == 'PtrpException')
    {
        searchhtml += ('<font color="orange"><b>Warning</b>: ' + msg.Message + '</font>');
    }
    else
    {
        //searchhtml += ('<font color="red">');
        //searchhtml += ('Encountered search error:<br/>');
        //searchhtml += ('<li>ExceptionType : ' + msg.ExceptionType + '</li>');
        //searchhtml += ('<li>Message : ' + msg.Message + '</li>');
        //searchhtml += ('<li>StackTrace :</li>');
        //var stacktrace = msg.StackTrace;
        //while (stacktrace.contains('\r\n'))
        //{
        //    stacktrace = stacktrace.replace('\r\n', '<br/>');
        //}
        //while (stacktrace.contains('  at '))
        //{
        //    stacktrace = stacktrace.replace('  at ', '&nbsp;&nbsp;&nbsp;at ');
        //}
        //searchhtml += (stacktrace + '<br/>');
        //searchhtml += ('</font>');
        searchhtml += ('<font color="red">Encountered error processing your search phrase.</font>');
    }

    $('#search_button')[0].enabled = true;
    $('#search_links').hide();
    $('#search_inprogress').hide();
    $('#search_results').html(searchhtml);
    $('#search_results').show();
}
