
var bm = bm || {};
bm.Solr = bm.Solr || {};

bm.Solr.SearchController = function () {

    var _this = this;

    _this.ajaxType = 333;

    this.init = function() {
        //jQuery("body").delegate("a.solr-ajaxified", "click", _this.handleClickOnAjaxifiedUri);

        jQuery('body').on('click', 'a.js-nordseeSolr-ajax', _this.handleClick);
        jQuery('body').on('submit', '.lightbox-content .js-nordseeSolr-ajax', _this.handleSubmit);
    };

    this.handleSubmit = function(e) {
        e.preventDefault();
        try {
            var searchValue = $(this).find('#q').val();
            if (searchValue.length >0) {
                dataLayer.push({
                    'event': 'siteSearch',
                    'search': searchValue
                });
            }
        }
        catch (err) {}

        postData($(this).attr('action'), $(this).serialize()).done(successLoaded)

    }
    this.handleClick = function(e) {
        e.preventDefault();
        loadData($(this).attr('href')).done(successLoaded)

    }
    this.handleClickOnAjaxifiedUri = function() {
        var clickedLink = jQuery(this);

        var solrContainer = clickedLink.closest(".tx_solr");
        var solrParent = solrContainer.parent();

        var loader = jQuery("<div class='tx-solr-loader'></div>");
        var uri = clickedLink.uri();

        solrParent.append(loader);
        uri.addQuery("type", _this.ajaxType);

        jQuery.get(
            uri.href(),
            function(data) {
                solrContainer = solrContainer.replaceWith(data);
                _this.scrollToTopOfElement(solrParent, 150);
                jQuery("body").trigger("tx_solr_updated");
                loader.fadeOut().remove();
            }
        );
        return false;
    };

    this.scrollToTopOfElement = function(element, deltaTop) {
        jQuery('html, body').animate({
            scrollTop: (element.offset().top - deltaTop) + 'px'
        }, 'slow');
    };



    var successLoaded = function(data, textStatus, jqXHR){
        //var modalBox = getModalBox();
        var replaceClass = '.js-nordsee-replaceable';
        var htmlContent = $(data).find(replaceClass);
        if (htmlContent.length <= 0){
            htmlContent = $('<div class="warning"> - </div>');
        }
        var parent = $('body').find(replaceClass);
        $('body').find(replaceClass).html(htmlContent);

        _this.scrollToTopOfElement(parent, 150);
        jQuery("body").trigger("tx_solr_updated");

        $(window).trigger('content.change');
        //loader.fadeOut().remove();

    };

    var postData = function(url, data){

        var testUrl = url.split('?');
        if (testUrl.length >1){
            url += '&type='+_this.ajaxType;
        } else {
            url += '?type='+_this.ajaxType;
        }
        return $.ajax({
            type: "GET",
            url: url,
            data: data,
            dataType: "html"
        });
    };


    var loadData = function(url){
        return $.ajax({
            data: { "type": _this.ajaxType },
            url: url,
            dataType: "html"
        });
    };

    this.setAjaxType = function(ajaxType) {
        _this.ajaxType = ajaxType;
    };
}