(function($) {
	$.params = {};
	(location.search || '').replace(/([^\?&=]+)=?([^&]*)?/g, function(full, key, data) {
        if (key) { $.params[key] = data || ''; }
    });
window.Params = { 'get': function(key) { return $.params[key]; } };
AdvConfig = new function() {
    this.adServer = '//adclient.uimserv.net/js.ng/';
    this.positions = {};
    this.init = function(site, section, params) {
        this.site = site;
        this.section = section;
        this.tileid = (Math.random()+'01234567890abc').substr(2, 30);
        this.params = params || {};
    }
    this.addPosition = function(pos, type, sizes, styles, params) {
        this.positions[pos] = { 'type': type, 'sizes': sizes, 'styles': styles, 'params': (params || {}) };
    }
    this.options = function(pos) {
        var result = '';
        var params = this.params;
        var position = this.positions[pos];
        $.extend(params, position.params, { special: position.type, adsize: position.sizes, styles: position.styles });
        $.each(params, function(key, val) {
            $.each($.makeArray(val), function() {
                result += '&' + (key == 'styles' ? 'params.' : '') + key + '=' + encodeURIComponent(this);
            });
        });
        return 'site='+encodeURIComponent(this.site) + '&section='+encodeURIComponent(this.section) + result + '&tile='+this.tileid + '&transactionID='+this.tileid;
    }
    this.output = function(pos) {
        var advURL = this.adServer + this.options(pos);
        document.writeln('<!-- ' + advURL + ' -->');
        document.writeln('<script type="text/javascript" src="' + advURL + '"><\/script>');
        return advURL;
    }
}

NaviLayer = new function() {
    this.init = function(trigger) {
        trigger.removeAttribute('onmouseover');
        trigger.blur();
        var layer = $('.layer:first', $(trigger).parents()).mouseover(function() {
            $(this).addClass('opened'); }).mouseout(function() {
            $(this).removeClass('opened'); });
        return false;
    }
}

SearchPlugin = new function() {
    if ($('head > link[@rel=search]').length == 0) { return; }
    var brand = ((($('head > link[@rel=search]').attr('href') || '').match(/(gmxat|gmxch|gmx|1und1|webde)/) || [false])[0]);
    var pluginVersion = ($.ua.browser.msie ? 'ie' : 'ff')+'_opensearch.xml';
    var plurls = {
        'webde': 'suche.web.de',
        '1und1': 'search.1und1.de',
        'gmx':   'suche.gmx.net',
        'gmxat': 'suche.gmx.at',
        'gmxch': 'suche.gmx.ch'
    };
    this.dlurl = 'http://img.ui-portal.de/search/plugin/'+brand+'/'+pluginVersion;
    try {
        this.supported = (window.external && ('AddSearchProvider' in window.external));
        this.alreadyInstalled = (window.external && ('IsSearchProviderInstalled' in window.external) &&
            (0 != (window.external.IsSearchProviderInstalled('http://'+plurls[brand]) || 0)));
    } catch(e) {};
    this.install = function() {
        if (!this.supported || this.alreadyInstalled) { return; }
        window.external.AddSearchProvider(this.dlurl);
    }
    $(function() { if (SearchPlugin.supported && !SearchPlugin.alreadyInstalled) {
        $('body').addClass('pluginCanBeInstalled');
    } });
}

Suggest = new function() {
    this.fill = function(field, url, show) {
        $.get(url+encodeURIComponent(field.value), null, function(data) {
            if (!data || data == '[]') { return; }
            var suggestlist = '';
            data.replace(/\"([^\"]+)\",(\d+)/g, function(match, item, hits) {
                suggestlist += ('<li title="'+item+'"><span class="itemName">'+item+
                    '</span><span class="itemAmount">'+hits+' Ergebnisse</span></li>');
            });
            $('div.layer > ul', field.form).html(suggestlist);
            $('div.layer > ul > li', field.form).bind('mouseenter', function() {
                $(this).addClass('selected'); }).bind('mouseleave', function() {
                $(this).removeClass('selected'); }).bind('mousedown', function() {
                $(field).val(this.title).get(0).blur();
                $('input[name=mc]', field.form).val('suche@web@suggest.suche@web');
                $(field.form).removeClass('showResultList').get(0).submit();
            });
            if (show !== false) { $(field.form).addClass('showResultList'); }
        }, 'text');
    }
    this.init = function(field, layer, url) {
        field.currentTerm = field.value;
        $(field.form).append('<div id="mainSearchResultList" class="resultList overlay"><iframe></iframe><div class="layer"><ul></ul></div></div>');
        if ($.ua.browser.msie > 6) { $(field.form).css({marginRight:'1px'}); }
        $(field).bind('keyup focus', function(e) {
            if (!field.value || field.value == '') {
                $(field.form).removeClass('showResultList');
            } else if (e.which && e.which == 8 || field.value.length && field.value.length > 0 &&
                field.value != field.currentTerm) {
                if (field.suggestTimeout) { window.clearTimeout(field.suggestTimeout); }
                field.suggestTimeout = window.setTimeout(function() { this.fill(field, url); }.bind(this), 120);
                field.currentTerm = field.value;
            } else if ($('.resultList ul li').length > 0) {
                $(field.form).addClass('showResultList');
            }
        }.bind(this)).bind('blur', function() {
            window.setTimeout(function() {
                $(field.form).removeClass('showResultList');
            }, 60);
        }.bind(this)).bind('keydown', function(e) {
            var item = $('div.layer > ul > li.selected', field.form);
            if (e.which == 8) {
                item.removeClass('selected');
            } else if (e.which == 13 && item.length == 1) {
                e.preventDefault();
                $(field).val(item.attr('title')).blur();
                $('input[name=mc]', field.form).val('suche@web@suggest.suche@web');
                $(field.form).removeClass('showResultList').submit();
            } else if (e.which == 27) {
                field.blur(); item.removeClass('selected');
            } else if (e.which == 38) {
                if (item.length == 0) { $('div.layer > ul > li:last', field.form).addClass('selected'); }
                else {                  item.removeClass('selected').prev().addClass('selected'); }
            } else if (e.which == 40) {
                if (item.length == 0) { $('div.layer > ul > li:first', field.form).addClass('selected'); }
                else {                  item.removeClass('selected').next().addClass('selected'); }
            }
        });
        if (field.value && field.value.length && field.value.length > 0) { this.fill(field, url, false); }
    }
}

SearchBox = new function() {
    this.load = function(box, url) {
        $(box).load(url, function(content, status) {
            if (status != 'success' || content.length == 0 ||
                !/[^\s]+/.test(content)) { $(box).hide(); }
        });
    }
    this.toggle = function(head) {
        head.title = $(head).parent().toggleClass('infoboxClosed').hasClass('infoboxClosed') ? 'Maximieren' : 'Minimieren';
    }
}

SearchTipList = new function() {
    this.init = function(list) {
        $('#'+list+' ul li.toggle').show();
        $('#'+list+' ul li.toggle ~ li').hide();
    }
    this.show = function(trigger) {
        $('li.toggle', $(trigger).parents()).hide().nextAll().show();
        window.setTimeout(function() { $('#contentData').css({zoom: 1}); }, 1);
        return false;
    }
    this.hide = function(trigger) {
        $(trigger.parentNode).hide().prevAll().each(function() {
            if ($(this).hasClass('toggle')) { $(this).show(); return false; }; $(this).hide(); });
        return false;
    }
}

ResultImageBrowser = function(obj, images) {
    this.player = false;
    this.obj = obj;
    this.position = 0;
    this.images = images;
    $('.fwd', this.obj).click(function() { return this.next(); }.bind(this));
    $('.rwd', this.obj).click(function() { return this.last(); }.bind(this));
    $('.play', this.obj).click(function() { return this.play(); }.bind(this));
}

ResultImageBrowser.prototype.show = function() {
    $('a', this.obj).get(0).href = this.images[this.position].link;
    $('img', this.obj).get(0).src = this.images[this.position].img;
    $('.fwd', this.obj)[(this.position+1 >= this.images.length ? 'addClass' : 'removeClass')]('end');
    $('.rwd', this.obj)[(this.position <= 0 ? 'addClass' : 'removeClass')]('end');
}

ResultImageBrowser.prototype.last = function() {
    if ($('.rwd').hasClass('end')) { return false; }
    this.position = (this.position == 0 ? this.images.length : this.position) - 1;
    this.show();
    return false;
}

ResultImageBrowser.prototype.next = function() {
    if ($('.fwd').hasClass('end')) { return false; }
    this.position = (this.position + 1) % this.images.length;
    this.show();
    return false;
}

ResultImageBrowser.prototype.play = function() {
    if (this.player) {
        window.clearInterval(this.player);
        $('.pause', this.obj).get(0).className = 'play';
        this.player = false;
    } else {
        this.player = window.setInterval(function() {
            this.position = (this.position + 1) % this.images.length;
            this.show();
        }.bind(this), 1800);
        $('.play', this.obj).get(0).className = 'pause';
    }
    return false;
}

searchIfTrue = function(formId, inputId) {
    if ($('#'+formId+' #'+inputId).val() != "" && $('#'+formId).submit) { $('#'+formId).submit(); }
}

checkForNumber = function(id_or_name, formname) {
    var obj = $('input#'+id_or_name+', input[@name='+id_or_name+']', $('form[@name='+formname+']')).get(0);
    $(obj).bind('keyup', function(e) {
        if ((e.which > 31 && e.which < 48) || e.which > 57) {
            obj.value = (obj.value || '').replace(/\D/,'');
        }
    });
}

setActiveListItem = function(item) {
    $('li', item.parentNode).each(function() {
        $('label', this).add(this).removeClass('active').children('input:radio:checked').attr('checked', '');
    });
    $('label', item).add(item).addClass('active').children('input:radio').attr('checked', 'checked');
}

clearValue = function(inp, className) {
    if (inp.value == inp.defaultValue) {
        inp.value = '';
        if (className) { $(inp).removeClass(className); }
    }
}

restoreValue = function(inp, className) {
    if (inp.value == '') {
        inp.value = inp.defaultValue;
        if (className) { $(inp).addClass(className); }
    }
}

focusTopSearchform = function() {
    $(function() { window.setTimeout(function() {
        $('#inpSearchTopSearchterm:first').focus();
    }, 1) });
}

window.openLayer = null;
toggleRestrictedDiv = function(div) {
    var elem = $('#'+div);
    if (elem.not(':hidden').length) {
        $(elem).hide();
    } else {
        if (window.openLayer) { $(window.openLayer).hide(); }
        $(elem).show();
        window.openLayer = elem;
    }
}

dynLanguageSettings = function() {
    $(':checkbox[name=webLanguages]').click(function() {
        if ($(':checkbox[name=webLanguages]:checked', this.form).length > 8) {
            alert('Die Anzahl der gleichzeitig w\xE4hlbaren Sprachen ist auf 8 beschr\xE4nkt. Es k\xF6nnen deshalb nur maximal 8 Sprachen gespeichert werden.');
        }
        var temp = $(this).attr('checked');
        $('#language_'+($(':checkbox[name=webLanguages]:checked').length ? 'select' : 'any')).attr('checked', true);
        $(this).attr('checked', temp);
        $(this).blur();
    });
    $('#language_any').click(function() {
        $(':checkbox[name=webLanguages]:checked').attr('checked', false);
    });
}

qs = function(link, field) {
    link.href = link.href.replace(/su=[^&]*/, 'su='+encodeURIComponent($('#'+field).val() || ''));
    return true;
}

selectFontSize = function(link, domain) {
    var fontsize=$(link).parent().attr('class');
    $('body, #wrMinwidth1, #wrMinwidth2, .fontsize-normal, .fontsize-big, .fontsize-biggest').removeClass('fontsize-normal fontsize-big fontsize-biggest').addClass('fontsize-'+fontsize);
    $.cookie.set('webdesearchcustomization', ($.cookie.get('webdesearchcustomization', 'fontsize=fontsize-normal')
        .replace(/fontsize(%3D|=)fontsize\-[a-z]+/, '')+'fontsize=fontsize-'+fontsize), null, '/', domain);
    $(window).resize();
    return false;
}

$.elementReady('container', window.onresize=function(o) { return function() {
    if (o) { o(); }
    var offset = 0;
    switch (true) {
        case $.ua.browser.msie>=6: offset=6; break;
    }
    $('body')[(document.documentElement.offsetWidth < $('body').width()+offset) ? 'addClass' : 'removeClass']('smallWindow');
}}(window.onresize));
$(function() {
    $('body').addClass('jsActive');
});
})(jQuery);