function site_search_init(div, base_href) {
    var frm = div.find('form.search-box'),
        ipt = frm.find('input[type=text]'),
        pmt = frm.find('span.search-default'),
        btn = frm.find('button'),
        no_res = frm.find('div.no-results'),
        dflt_cls = 'default-text',
        prefix = '/',
        wip_re = /^http:\/\/nitra\.wip\.[^\.]*\.com\.websites\./;

    if (!/\/$/.test(base_href)) {
        base_href += '/';
    }

    if (wip_re.test(base_href)) {
        // work in progress/preview
        prefix = base_href + '?reload=true&pageName=';
    }

    ipt.focus(function(){
        frm.removeClass(dflt_cls);
    }).blur(function(){
        if (jQuery(this).val() == '') {
            frm.addClass(dflt_cls);
        }
    });

    frm.hide();
    pmt.insertBefore(ipt);
    frm.show();

    frm.bind('searcherror', function(){
        frm.removeClass(dflt_cls);
        ipt.focus().select();
        no_res.slideDown();
        setTimeout(function(){
            no_res.slideUp('slow');
        }, 5000);
    }).bind('searchstart', function(){
        frm.addClass('in-progress');
        btn.addClass('loading');
    }).bind('searchcomplete', function(){
        frm.removeClass('in-progress');
        btn.removeClass('loading');
    }).bind('submit', function(e){
        var query = ipt.blur().val();

        if (query != '' && !frm.hasClass('in-progress')) {
            frm.trigger('searchstart');
            jQuery.ajax({
                dataType: 'json',
                url: base_href + 'liveFaceOnWebSearchService.ajax',
                data: {'searchTerm': query},
                success: function(r, ts, xhr){
                    frm.trigger('searchcomplete');
                    if (typeof r.serviceResponse == 'string' &&
                        r.serviceResponse != '' &&
                        r.serviceResponse != 'none') { // really bad service response
                        window.location.href = prefix + r.serviceResponse;
                    } else {
                        frm.trigger('searcherror');
                    }
                },
                error: function(){
                    frm.trigger('searchcomplete').trigger('searcherror');
                }
            });
        }

        e.preventDefault();
        return false;
    });
}

