document.write("<script language=\"JavaScript\" src=\"zoom_index.js\" charset=\"" + Charset + "\"><\/script>"); document.write("<script language=\"JavaScript\" src=\"zoom_pages.js\" charset=\"" + Charset + "\"><\/script>"); document.write("<script language=\"JavaScript\" src=\"zoom_titles.js\" charset=\"" + Charset + "\"><\/script>"); document.write("<script language=\"JavaScript\" src=\"zoom_descriptions.js\" charset=\"" + Charset + "\"><\/script>"); document.write("<meta http-equiv=\"content-type\" content=\"text/html; charset=" + Charset + "\">"); if (document.charset)
    document.charset = Charset; var PerPageOptions = new Array(10, 20, 50, 100); var SkippedWords = 0; var searchWords = new Array(); var SkippedOutputStr = ""; var months = new Array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'); function getParam(paramName) {
        paramStr = document.location.search; if (paramStr == "")
            return ""; if (paramStr.charAt(0) == "?")
            paramStr = paramStr.substring(1, paramStr.length); arg = (paramStr.split("&")); for (i = 0; i < arg.length; i++) {
            arg_values = arg[i].split("=")
            if (unescape(arg_values[0]) == paramName) {
                if (UseUTF8 == 1 && self.decodeURIComponent)
                    ret = decodeURIComponent(arg_values[1]); else
                    ret = unescape(arg_values[1]); return ret;
            } 
        }
        return "";
    }
function SortCompare(a, b)
{ if (a[2] < b[2]) return 1; else if (a[2] > b[2]) return -1; else if (a[1] < b[1]) return 1; else if (a[1] > b[1]) return -1; else return 0; }
function SortByDate(a, b)
{ if (datetime[a[0]] < datetime[b[0]]) return 1; else if (datetime[a[0]] > datetime[b[0]]) return -1; else return SortCompare(a, b); }
function pattern2regexp(pattern)
{ pattern = pattern.replace(/\#/g, "\\#"); pattern = pattern.replace(/\$/g, "\\$"); pattern = pattern.replace(/\./g, "\\."); pattern = pattern.replace(/\*/g, "[\\d\\S]*"); pattern = pattern.replace(/\?/g, ".?"); return pattern; }
function HighlightDescription(line) {
    res = " " + line + " "; for (i = 0; i < numwords; i++) {
        if (searchWords[i] == "")
            continue; if (SearchAsSubstring == 1)
            res = res.replace(new RegExp("(" + searchWords[i] + ")", "gi"), "[;:]$1[:;]"); else
            res = res.replace(new RegExp("(\\W|^|\\b)(" + searchWords[i] + ")(\\W|$|\\b)", "gi"), "$1[;:]$2[:;]$3");
    }
    res = res.replace(/\[;:\]/g, "<span class=\"highlight\">"); res = res.replace(/\[:;\]/g, "</span>"); return res;
}
function PrintNumResults(num) {
    if (num == 0)
        return STR_NO_RESULTS; else if (num == 1)
        return num + " " + STR_RESULT; else
        return num + " " + STR_RESULTS;
}
function AddParamToURL(url, paramStr) {
    if (url.indexOf("?") > -1)
        return url + "&amp;" + paramStr; else
        return url + "?" + paramStr;
}
function SkipSearchWord(sw) {
    if (searchWords[sw] != "") {
        if (SkippedWords > 0)
            SkippedOutputStr += ", "; SkippedOutputStr += "\"<b>" + searchWords[sw] + "</b>\""; searchWords[sw] = "";
    } 
}
var query = getParam("zoom_query"); query = query.replace(/[\++]/g, " "); query = query.replace(/[,+]/g, " "); query = query.replace(/\</g, "&lt;"); query = query.replace(/[\"+]/g, " "); var per_page = parseInt(getParam("zoom_per_page")); if (isNaN(per_page)) per_page = 10; var page = parseInt(getParam("zoom_page")); if (isNaN(page)) page = 1; var andq = parseInt(getParam("zoom_and")); if (isNaN(andq)) {
    if (typeof (DefaultToAnd) != "undefined" && DefaultToAnd == 1)
        andq = 1; else
        andq = 0;
}
var cat = parseInt(getParam("zoom_cat")); if (isNaN(cat)) cat = -1; var sort = parseInt(getParam("zoom_sort")); if (isNaN(sort)) sort = 0; var SelfURL = ""; if (typeof (LinkBackURL) == "undefined") {
    SelfURL = document.location.href; var paramIndex = SelfURL.indexOf("?"); if (paramIndex > -1)
        SelfURL = SelfURL.substr(0, paramIndex);
}
else
    SelfURL = LinkBackURL; var data = new Array(); var output = new Array(); target = ""; if (UseLinkTarget == 1)
    target = " target=\"" + LinkTarget + "\" "; function ZoomSearch() {
        if (Timing == 1) { timeStart = new Date(); }
        if (FormFormat > 0) {
            document.writeln("<form method=\"get\" action=\"" + SelfURL + "\" class=\"zoom_searchform\">"); document.writeln("<input type=\"text\" name=\"zoom_query\" size=\"20\" value=\"" + query + "\" class=\"zoom_searchbox\" />"); document.writeln("<input type=\"submit\" value=\"" + STR_FORM_SUBMIT_BUTTON + "\" class=\"zoom_button\" />"); if (FormFormat == 2) {
                document.writeln("<span class=\"zoom_options\">" + STR_FORM_RESULTS_PER_PAGE + "\n"); document.writeln("<select name='zoom_per_page'>"); for (i = 0; i < PerPageOptions.length; i++) {
                    document.write("<option"); if (PerPageOptions[i] == per_page)
                        document.write(" selected=\"selected\""); document.writeln(">" + PerPageOptions[i] + "</option>");
                }
                document.writeln("</select><br /><br />"); if (UseCats) {
                    document.write(STR_FORM_CATEGORY + " "); document.write("<select name='zoom_cat'>"); document.write("<option value=\"-1\">" + STR_FORM_CATEGORY_ALL + "</option>"); for (i = 0; i < catnames.length; i++) {
                        document.write("<option value=\"" + i + "\""); if (i == cat)
                            document.write(" selected=\"selected\""); document.writeln(">" + catnames[i] + "</option>");
                    }
                    document.writeln("</select>&nbsp;&nbsp;");
                }
                document.writeln(STR_FORM_MATCH + " "); if (andq == 0) { document.writeln("<input type=\"radio\" name=\"zoom_and\" value=\"0\" checked=\"checked\" />" + STR_FORM_ANY_SEARCH_WORDS); document.writeln("<input type=\"radio\" name=\"zoom_and\" value=\"1\" />" + STR_FORM_ALL_SEARCH_WORDS); } else { document.writeln("<input type=\"radio\" name=\"zoom_and\" value=\"0\" />" + STR_FORM_ANY_SEARCH_WORDS); document.writeln("<input type=\"radio\" name=\"zoom_and\" value=\"1\" checked=\"checked\" />" + STR_FORM_ALL_SEARCH_WORDS); }
                document.writeln("<input type=\"hidden\" name=\"zoom_sort\" value=\"" + sort + "\" />"); document.writeln("</span>");
            }
            else
            { document.writeln("<input type=\"hidden\" name=\"zoom_per_page\" value=\"" + per_page + "\" />"); document.writeln("<input type=\"hidden\" name=\"zoom_and\" value=\"" + andq + "\" />"); document.writeln("<input type=\"hidden\" name=\"zoom_sort\" value=\"" + sort + "\" />"); }
            document.writeln("</form>");
        }
        if (query.length == 0) {
            if (ZoomInfo == 1)
                document.writeln("<center><p><small>" + STR_POWEREDBY + " <a href=\"http://www.wrensoft.com/zoom/\" target=\"_blank\"><b>Zoom Search Engine</b></a></small></p></center>"); return;
        }
        if (MapAccents == 1) { for (i = 0; i < NormalChars.length; i++) { query = query.replace(AccentChars[i], NormalChars[i]); } }
        if (ToLowerSearchWords == 1)
            query = query.toLowerCase(); if (WordJoinChars.indexOf(".") == -1)
            query = query.replace(/[\.+]/g, " "); if (WordJoinChars.indexOf("-") == -1)
            query = query.replace(/[\-+]/g, " "); if (WordJoinChars.indexOf("_") == -1)
            query = query.replace(/[\_+]/g, " "); if (WordJoinChars.indexOf("'") == -1)
            query = query.replace(/[\'+]/g, " "); if (WordJoinChars.indexOf("#") == -1)
            query = query.replace(/[\#+]/g, " "); if (WordJoinChars.indexOf("$") == -1)
            query = query.replace(/[\$+]/g, " "); if (WordJoinChars.indexOf("&") == -1)
            query = query.replace(/[\&+]/g, " "); if (WordJoinChars.indexOf(":") == -1)
            query = query.replace(/[\:+]/g, " "); query = query.replace(/[\/\s\\\\(\)\^\[\]\|\+\{\}]+/g, " "); query = query.replace(/^\s*|\s*$/g, ""); searchWords = query.split(" "); document.write("<div class=\"searchheading\">" + STR_RESULTS_FOR + " \"" + query + "\""); if (UseCats) {
            if (cat == -1)
                document.writeln(" " + STR_RESULTS_IN_ALL_CATEGORIES); else
                document.writeln(" " + STR_RESULTS_IN_CATEGORY + " \"" + catnames[cat] + "\"");
        }
        document.writeln("</div><br />"); document.writeln("<div class=\"results\">"); numwords = searchWords.length; kw_ptr = 0; outputline = 0; usewildcards = 0; ipage = 0; matches = 0; var SWord; pagesCount = urls.length; res_table = new Array(pagesCount); for (i = 0; i < pagesCount; i++)
        { res_table[i] = new Array(3); res_table[i][0] = 0; res_table[i][1] = 0; res_table[i][2] = 0; }
        if (skipwords) {
            for (sw = 0; sw < numwords; sw++) {
                if (searchWords[sw].length < MinWordLen) { SkipSearchWord(sw); continue; }
                for (i = 0; i < skipwords.length; i++) { if (searchWords[sw] == skipwords[i]) { SkipSearchWord(sw); break; } } 
            } 
        }
        for (sw = 0; sw < numwords; sw++) {
            if (searchWords[sw] == "") { SkippedWords++; continue; }
            if (searchWords[sw].indexOf("*") == -1 && searchWords[sw].indexOf("?") == -1) { UseWildCards = 0; } else {
                UseWildCards = 1; searchWords[sw] = pattern2regexp(searchWords[sw]); if (SearchAsSubstring == 0)
                    pattern = "^" + searchWords[sw] + "$"; else
                    pattern = searchWords[sw]; re = new RegExp(pattern, "g");
            }
            for (kw_ptr = 0; kw_ptr < dictwords.length; kw_ptr++) {
                data = dictwords[kw_ptr].split(","); if (UseWildCards == 0) {
                    if (SearchAsSubstring == 0)
                        if (data[0] == searchWords[sw])
                        match_result = 0; else
                        match_result = -1; else
                        match_result = data[0].indexOf(searchWords[sw]);
                } else
                    match_result = data[0].search(re); if (match_result != -1) {
                    for (kw = 1; kw < data.length; kw += 2) {
                        pageexists = 0; ipage = data[kw]; if (res_table[ipage][0] == 0) { matches++; res_table[ipage][0] += parseInt(data[kw + 1]); }
                        else { if (res_table[ipage][0] > 10000) { res_table[ipage][0] += 1; } else { res_table[ipage][0] += parseInt(data[kw + 1]); res_table[ipage][0] *= 2; } }
                        res_table[ipage][1] += 1; if (res_table[ipage][2] == sw || res_table[ipage][2] == sw - SkippedWords)
                            res_table[ipage][2] += 1;
                    }
                    if (UseWildCards == 0 && SearchAsSubstring == 0)
                        break;
                } 
            } 
        }
        if (SkippedWords > 0)
            document.writeln("<i>" + STR_SKIPPED_FOLLOWING_WORDS + " " + SkippedOutputStr + ".</i><br /><br />"); oline = 0; fullmatches = 0; ResFiltered = false; output = new Array(); var full_numwords = numwords - SkippedWords; for (i = 0; i < pagesCount; i++) {
            IsFiltered = false; if (res_table[i][0] != 0) {
                if (UseCats && cat != -1) { if (catpages[i] != cat) { IsFiltered = true; } }
                if (IsFiltered == false) {
                    if (res_table[i][2] >= full_numwords) { fullmatches++; } else {
                        if (andq == 1)
                            IsFiltered = true;
                    } 
                }
                if (IsFiltered == false) { output[oline] = new Array(3); output[oline][0] = i; output[oline][1] = res_table[i][0]; output[oline][2] = res_table[i][1]; oline++; } else { ResFiltered = true; } 
            } 
        }
        if (ResFiltered == true)
            matches = output.length; if (matches > 1) {
            if (sort == 1 && UseDateTime == 1)
                output.sort(SortByDate); else
                output.sort(SortCompare);
        }
        var query_out = query.replace(/\s/g, "+"); query_out = escape(query_out); document.writeln("<div class=\"summary\">"); if (matches == 0)
            document.writeln(STR_SUMMARY_NO_RESULTS_FOUND + "<br />"); else if (numwords > 1 && andq == 0) {
            SomeTermMatches = matches - fullmatches; document.writeln(PrintNumResults(fullmatches) + " " + STR_SUMMARY_FOUND_CONTAINING_ALL_TERMS + " "); if (SomeTermMatches > 0)
                document.writeln(PrintNumResults(SomeTermMatches) + " " + STR_SUMMARY_FOUND_CONTAINING_SOME_TERMS); document.writeln("<br />");
        }
        else if (numwords > 1 && andq == 1)
            document.writeln(PrintNumResults(fullmatches) + " " + STR_SUMMARY_FOUND_CONTAINING_ALL_TERMS + "<br />"); else
            document.writeln(PrintNumResults(matches) + " " + STR_SUMMARY_FOUND + "<br />"); document.writeln("</div>\n"); num_pages = Math.ceil(matches / per_page); if (num_pages > 1)
            document.writeln("<br />" + num_pages + " " + STR_PAGES_OF_RESULTS + "<br />\n"); if (matches > 1) {
            if (UseDateTime == 1) {
                document.writeln("<div class=\"sorting\">"); if (sort == 1)
                    document.writeln("<a href=\"" + SelfURL + "?zoom_query=" + query_out + "&amp;zoom_page=" + page + "&amp;zoom_per_page=" + per_page + "&amp;zoom_cat=" + cat + "&amp;zoom_and=" + andq + "&amp;zoom_sort=0\">" + STR_SORTBY_RELEVANCE + "</a> / <b>" + STR_SORTEDBY_DATE + "</b>"); else
                    document.writeln("<b>" + STR_SORTEDBY_RELEVANCE + "</b> / <a href=\"" + SelfURL + "?zoom_query=" + query_out + "&amp;zoom_page=" + page + "&amp;zoom_per_page=" + per_page + "&amp;zoom_cat=" + cat + "&amp;zoom_and=" + andq + "&amp;zoom_sort=1\">" + STR_SORTBY_DATE + "</a>"); document.writeln("</div>");
            } 
        }
        if (page == 1) { arrayline = 0; } else { arrayline = ((page - 1) * per_page); }
        result_limit = arrayline + per_page; while (arrayline < matches && arrayline < result_limit) {
            ipage = output[arrayline][0]; score = output[arrayline][1]; document.writeln("<p></p>\n"); document.writeln("<div class=\"result_title\">"); if (DisplayNumber == 1)
                document.writeln("<b>" + (arrayline + 1) + ".</b>&nbsp;"); if (DisplayTitle == 1) {
                if (GotoHighlight == 1) {
                    if (SearchAsSubstring == 1)
                        document.writeln("<a href=\"" + AddParamToURL(urls[ipage], "zoom_highlightsub=" + query_out) + "\"" + target + ">" + titles[ipage] + "</a>"); else
                        document.writeln("<a href=\"" + AddParamToURL(urls[ipage], "zoom_highlight=" + query_out) + "\"" + target + ">" + titles[ipage] + "</a>");
                }
                else
                    document.writeln("<a href=\"" + urls[ipage] + "\"" + target + ">" + titles[ipage] + "</a>");
            }
            else
                document.writeln("<a href=\"" + urls[ipage] + "\"" + target + ">" + urls[ipage] + "</a>"); if (UseCats) { catindex = catpages[ipage]; document.writeln("<span class=\"category\">[" + catnames[catindex] + "]</span>"); }
            document.writeln("</div>"); if (DisplayMetaDesc == 1) {
                document.writeln("<div class=\"description\">"); if (Highlighting == 1)
                    document.writeln(HighlightDescription(descriptions[ipage])); else
                    document.writeln(descriptions[ipage]); document.writeln("<b>...</b></div>\n");
            }
            info_str = ""; if (DisplayTerms == 1)
                info_str += STR_RESULT_TERMS_MATCHED + " " + output[arrayline][2]; if (DisplayScore == 1) {
                if (info_str.length > 0)
                    info_str += "&nbsp; - &nbsp;"; info_str += STR_RESULT_SCORE + " " + score;
            }
            if (DisplayDate == 1) {
                if (info_str.length > 0)
                    info_str += "&nbsp; - &nbsp;"; info_str += datetime[ipage].getDate() + " " + months[datetime[ipage].getMonth()] + " " + datetime[ipage].getFullYear();
            }
            if (DisplayURL == 1) {
                if (info_str.length > 0)
                    info_str += "&nbsp; - &nbsp;"; info_str += STR_RESULT_URL + " " + urls[ipage];
            }
            document.writeln("<div class=\"infoline\">"); document.writeln(info_str); document.writeln("</div>\n"); arrayline++;
        }
        if (num_pages > 1) {
            start_range = page - 10; if (start_range < 1)
                start_range = 1; end_range = page + 10; if (end_range > num_pages)
                end_range = num_pages; document.writeln("<p></p>" + STR_RESULT_PAGES + " "); if (page > 1)
                document.writeln("<a href=\"" + SelfURL + "?zoom_query=" + query_out + "&amp;zoom_page=" + (page - 1) + "&amp;zoom_per_page=" + per_page + "&amp;zoom_cat=" + cat + "&amp;zoom_and=" + andq + "&amp;zoom_sort=" + sort + "\">&lt;&lt; " + STR_RESULT_PAGES_PREVIOUS + "</a> "); for (i = start_range; i <= end_range; i++) { if (i == page) { document.writeln(page + " "); } else { document.writeln("<a href=\"" + SelfURL + "?zoom_query=" + query_out + "&amp;zoom_page=" + i + "&amp;zoom_per_page=" + per_page + "&amp;zoom_cat=" + cat + "&amp;zoom_and=" + andq + "&amp;zoom_sort=" + sort + "\">" + i + "</a> "); } }
            if (page != num_pages)
                document.writeln("<a href=\"" + SelfURL + "?zoom_query=" + query_out + "&amp;zoom_page=" + (page + 1) + "&amp;zoom_per_page=" + per_page + "&amp;zoom_cat=" + cat + "&amp;zoom_and=" + andq + "&amp;zoom_sort=" + sort + "\">" + STR_RESULT_PAGES_NEXT + " &gt;&gt;</a> ");
        }
        document.writeln("</div>"); if (Timing == 1) { timeEnd = new Date(); timeDifference = timeEnd - timeStart; document.writeln("<br /><br /><small>" + STR_SEARCH_TOOK + " " + (timeDifference / 1000) + " " + STR_SECONDS + ".</small>\n"); }
        if (ZoomInfo == 1)
            document.writeln("<center><p><small>" + STR_POWEREDBY + " <a href=\"http://www.wrensoft.com/zoom/\" target=\"_blank\"><b>Zoom Search Engine</b></a></small></p></center>");
    }
