var addEvent = window.addEvent || function (obj,evType,fn){
    if(obj.addEventListener){
        obj.addEventListener(evType,fn,false);
        return true;}
    else if(obj.attachEvent){
        return obj.attachEvent('on'+evType,fn);}
    return false;
};

/**
 * Namespace declaration.
 */
var WebMa = window.WebMa || {};

/**
 * Process WebMa Ajax Site Search.
 */
WebMa.Search = function (e) {

    var content = document.getElementById('content');
    var idb; // search index database
    var lang = "latin";
    var req;
    var field; // search field
    var source; // event source
    var uri;

    e = e || window.event;

    if (e.preventDefault) {
        e.preventDefault(); // prevent default behaviour in Gecko browsers
    }

    source = e.srcElement || e.target;

    /* When hitting enter to submit form, Internet Explorer sends back the form
     as the event source, while modern browsers return the submit button in all
     case. */
    if (source.elements) {
	field = source.elements[0];
    } else {
        /* We assume here that submit button and search field have similar
         IDs. The only difference is the type of the element. */
        field = document.getElementById(source.id.replace("button", "field"));
    }

    if ("" == field.value) {
	return false; // skip if no search term was given
    }

    /* We store the name of idb as the last chunk of the IDs. */
    idb = field.id.split(/-/).pop();
    if( idb == "iwebma_de" ) {
        lang = "latinde";
    }

    content.innerHTML = '<p><img src="/images/data/loading.gif" alt="" /></p>';
    scrollTo(0,0);

    try {
	req = new XMLHttpRequest();
    } catch (error) {
	try {
	    req = new ActiveXObject("Microsoft.XMLHTTP");
	} catch (error) {
            // pass
	}
    }

    try {
	uri = window.location.protocol + "//" + window.location.host
            + "/images/data/search.php?encoding="
            + lang + "&keyword=" + encodeURIComponent(field.value)
            + "&idb=" + idb + ".idb";
	req.open("GET", uri);
        req.onreadystatechange = function () {
            if (req.readyState == 4) {
	        if ((req.status == 200) || (req.status == 0)) {
	            content.innerHTML = req.responseText;
	        }
	        return true;
            }
            return true;
        };
	req.send(null);
    } catch (error) {
        // pass
    }

    return false;
};

/**
 * Attach event handler to form and submit button on document load.
 */
addEvent(window, 'load', function() {
    var formEls = document.getElementsByTagName('form');
    for (var i = 0; i < formEls.length; i++) {
	if ("webma-search" == formEls[i].className) {
	    addEvent(formEls[i], 'submit', WebMa.Search);
	    addEvent(formEls[i].elements.item(1), 'click', WebMa.Search);
	}
    }
});
