/**
* @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);
});
});
};