/** * @Description: this function is the jsonp callback that returns the site search result. * i */ var efu = efu || {}; efu.w = efu.w || {}; efu.w.se = function (options) { var search_container = "#wp_content_data"; if( typeof options.MODULE_SEARCH_CONTAINER_ID != "undefined" ) { search_container = '#' + options.MODULE_SEARCH_CONTAINER_ID; } var search$ = $("#search"), searchRes$ = $(search_container), searchBox$ = $("#searching_box"); search$.find('input[name="str"]').focus(function () { if (options.MODULE_SEARCH_TITLE + '...' === $(this).val()) { $(this).val(''); } }).blur(function(){ if ('' === $(this).val()) { $(this).val(options.MODULE_SEARCH_TITLE + '...'); } }); $(document).ready(function() { $(window).keydown(function(event){ if(event.keyCode == 13 && search$.find('input[type="text"]').is(":focus")) { event.preventDefault(); search$.find('input[type="submit"]').click(); return false; } }); }); function searchResult(data) { searchBox$.hide(); // if you're in static export, fix the links by adding '.shtml' var exported = ""; if (typeof _static_export != "undefined") { exported = ".shtml"; } var i = 0; resultsHtml = []; /*add the header to search results*/ resultsHtml[i] = '

' + options.LANG_SEARCHRESULTS + '

'; if (typeof data === 'string') { resultsHtml[i] += data; } else { var n = 1; //iterates threw the pages array for (var item in data) { resultsHtml[i] += '
'; if (data[item].alias.length > 0) { var url = data[item].alias + exported; //builds the link with export logic resultsHtml[i] += '' + data[item].pagetitle + ' (' + data[item].pagetype + ')'; } else { var url = data[item].url + exported; if (typeof _static_export != "undefined" && data[item].url && typeof data[item].url != "undefined") { var act = getURLParam("act", data[item].url); if (act && typeof act != "undefined") { url = "/a" + act + "/index.shtml"; } } resultsHtml[i] += '' + data[item].pagetitle + ' (' + data[item].pagetype + ')'; } var text = data[item].data; var keys = $.parseJSON(data[item].keywords); for (var k = 0; k < keys.length; k++) { var regEx = new RegExp("("+ keys[k] +")", "ig"); text = text.replace(regEx, '$1'); }; resultsHtml[i] += '

' + text + '

'; resultsHtml[i] += '
'; if ((n % 10 == 0) && (n != 0) && (n != data.length)) { i++; resultsHtml[i] = ""; } n++; } } //pagination starts searchRes$.html("
") var resBox$ = $('#resultsBox'); resBox$.html(resultsHtml[0]); showing = ""; if( typeof data !== 'string'){ var init_items = (data.length > 10) ? 10 : data.length; var showing_message = options.LANG_SHOWING +" 1-"+ init_items +" "+ options.LANG_OF + " "+ data.length +" "+ options.LANG_ITEMS; showing = ""+ showing_message + ""; $(showing).appendTo(searchRes$); } if (i > 0) { var k = 1; numbers = ""; while (k <= i + 1) { numbers += " " + k + " "; k++; } prev = ""; next = ""; pagination$ = $("").appendTo(searchRes$); prevRes$ = $(prev).appendTo(pagination$); pagingNum$ = $(numbers).appendTo(pagination$); nextRes$ = $(next).appendTo(pagination$); //creating pagination events for next and previous nextRes$.click(function () { var j = 0; while ((resBox$.text().indexOf($(resultsHtml[j]).text())) && (resultsHtml[j])) { j++; } resBox$.html(resultsHtml[j + 1]); var init_items = ((j+2)*10 > data.length) ? data.length : (j+2)*10; showing_message = options.LANG_SHOWING +" "+ (1+ (j+1)*10)+"-"+ init_items +" "+ options.LANG_OF + " "+ data.length +" "+ options.LANG_ITEMS; $("#showing_pagination").text(showing_message); if (resultsHtml[j + 2]) { nextRes$.show(); } else { nextRes$.hide(); } prevRes$.show(); pagingNum$.css("color", "black"); $("#resultsGroup" + j).css("color", "purple"); }); prevRes$.click(function () { var j = 0; while ((resBox$.text().indexOf($(resultsHtml[j]).text()) == -1) && (resultsHtml[j])) { j++; } resBox$.html(resultsHtml[j-1]); var init_items = (j*10 > data.length) ? data.length : j*10; showing_message = options.LANG_SHOWING +" "+ (1+ (j-1)*10)+"-"+ init_items +" "+ options.LANG_OF + " "+ data.length +" "+ options.LANG_ITEMS; $("#showing_pagination").text(showing_message); if (resultsHtml[j - 2]) { prevRes$.show(); } else { prevRes$.hide(); } nextRes$.show(); pagingNum$.css("color", "black"); $("#resultsGroup" + j).css("color", "purple"); }); pagingNum$.click(function () { var resultsNum = $(this).attr('id'); var preId = "resultsGroup"; resultsNum = resultsNum.replace(preId, ''); resultsNum = parseInt(resultsNum, 10); resBox$.html(resultsHtml[resultsNum - 1]); var init_items = (resultsNum*10 > data.length) ? data.length : resultsNum*10; showing_message = options.LANG_SHOWING +" "+ (1+ (resultsNum-1)*10)+"-"+ init_items +" "+ options.LANG_OF + " "+ data.length +" "+ options.LANG_ITEMS; $("#showing_pagination").text(showing_message); pagingNum$.css("color", "black"); $("#resultsGroup" + resultsNum).css("color", "purple"); resBox$.html(resultsHtml[resultsNum - 1]); if (resultsHtml[resultsNum]) { nextRes$.show(); } else { nextRes$.hide(); } if (resultsHtml[resultsNum - 2]) { prevRes$.show(); } else { prevRes$.hide(); } }); } } function getURLParam(parameter, url) { var querySTR = url.substr(url.indexOf("?") + 1); var params = querySTR.split('&'); for (var i = 0; i < params.length; i++) { var pair = params[i].split('='); if (pair[0] == parameter) { return pair[1]; } } } search$.submit(function (event) { /* stop form from submitting normally */ event.preventDefault(); var form = $(this); if ('' === search$.find('input[name="str"]').val() || search$.find('input[name="str"]').val() == options.MODULE_SEARCH_TITLE + '...') { /* empty value - do nothing */ return; } var request = $.ajax({ url: form.attr('action'), data: form.serialize(), dataType: "json", beforeSend: function (xhr) { xhr.setRequestHeader("X-Requested-With", "GET REQUEST"); } }); request.done(function (data) { searchResult((data.status == 'ok') ? data.results : data.messages); }); request.fail(function (jqXHR, textStatus) { alert("Request failed: " + textStatus); }); }); };