
/**
 * Speichert die ScrollPosition.
 */
var lastScrollX = 0;
var lastScrollY = 0;
function saveScrollPosition()
{
    lastScrollX = window.pageXOffset;
    lastScrollY = window.pageYOffset;
}

/**
 * Überprüft ob irgend ein Overlay geöffnet ist.
 * 
 * @return
 */
function overlayVisible()
{
    var valid = dojo.query('div.overlay').length>0;
    return valid;
}

/**
 * Entfernt sämtliche Overlays 
 * 
 */
var currentRequest = null;
function destroyOverlays(abortRequest)
{
    dojo.query('div.overlay').forEach(function(node){dojo.destroy(node);});
    dojo.style(dojo.body(), 'overflow', 'auto');
    
    if (currentRequest != null && abortRequest)
    {
        //currentRequest.ioArgs.args.abort();
        currentRequest = null;
    }
}

/**
 * dojo.xhrGet und dojo.xhrPost liefern ioargs zurück die auf ihre gültigeit geprüft werden können.
 * 
 * @param ioargs
 * @return
 */
function checkStatus(ioargs)
{
    var status = ioargs.xhr.status;
    switch (status)
    {
        case 400:
        case 401:
        case 404:
            return false;
    }
    return true;
}

/**
 * PageText
 * 
 * @return
 */

var index=0;
function pageTextSwitch(page, doIt )
{
    if(page=='+')page=++index;
    else if(page=='-')page=--index;
    var pgs = dojo.query('#PageText div.texy div.page');

    if(page >= pgs.length)page=0;
    else if(page < 0)page=pgs.length-1;
    index = page; 

    if(doIt)
    {
        pgs.removeClass('selected');
        pgs.at(page).addClass('selected');
    
        var lnks = dojo.query('#PageText div.texy div.pager a.nav span');
        lnks.removeClass('selected');
        lnks.at(page).addClass('selected');
        lnks.at(lnks.length/2+page).addClass('selected');
        var lTitle = pages[page-1>=0?page-1:pages.length-1][1];
        var rTitle = pages[page+1<pages.length?page+1:0][1];

        dojo.query('#PageText div.texy div.pager div.left').attr('title', lTitle==null?'':lTitle);
        dojo.query('#PageText div.texy div.pager div.right').attr('title', rTitle==null?'':rTitle);

        window.scrollTo(0, 0);
    }
    else
    {
        ++page;
        dojo.hash(page.toString());
    }
}

function pageTextInitDrawer() 
{
    if((window['pages'] == null || (pages == null && pages.length < 1)) && (!dojo.isIE || dojo.isIE > 7))
    {
        var firstH = dojo.query('#PageText div.texy h1,div.texy h2,div.texy h3,div.texy p + p');
    
        for(i = 0; i < firstH.length; i++)
        {
            var y = firstH[i].offsetTop-dojo.byId('PageText').offsetTop;
    
            if(y > pthMax)
            {
                pthMax = y-dojo.style(firstH[i], 'marginTop')/2;
                var pth = dojo.style('PageText', 'height');
    
                if (pth > pthMax)
                {
                    dojo.style('PageText', 'overflow', 'hidden');
                    dojo.style('PageText', 'height', pthMax + 'px');
                    return;
                }
            }
        }
    }
    
    var expander = dojo.query('div.expander')[0];
    dojo.destroy(expander);
}

function pageTextInitPagination() 
{
    var hrs = dojo.query('#PageText div.txt div.txt div.texy > hr');
    if(hrs.length > 0 && (!dojo.isIE || dojo.isIE > 7))
    {
        pages = new Array(hrs.length+1);
        var all = dojo.query('#PageText div.txt div.txt div.texy > *');
        var page = dojo.create('div', {'class':"page selected"}, null, null);

        var pageCount = 0;
        pages[pageCount] = new Array(2);
        pages[pageCount][0] = page;
        
        for(i = 0; i < all.length; i++)
        {
            if(all[i].nodeName == 'HR')
            {
                dojo.destroy(all[i]);
                pages[++pageCount] = new Array(2);
                page = dojo.create('div', {'class':"page"}, null, null);
                pages[pageCount][0] = page;
            }
            else
            {
                dojo.place(all[i], page, 'last');
                if(all[i].nodeName.match(/H\d/))
                {
                    pages[pageCount][1] = all[i].textContent; 
                }
            }
        }

        var texy  = dojo.query('#PageText div.txt div.txt div.texy')[0];
        var pager = dojo.place('<div class="pager border"></div>', texy, 'first');

        var attributes = {'class': "nav left clickable", 
                          'onClick': "pageTextSwitch(\'-\')", 
                          'innerHTML': pagerBack};
        var left = dojo.create('div', attributes);
        dojo.place(left, pager, 'first');
        for(i = 0; i < pages.length; i++)
        {
            var delimiter = i==pages.length-1 ? '&nbsp;' : '&nbsp;|&nbsp;';
            var title = pages[i][1]==null?'':pages[i][1];

            attributes = {'class': "nav", 
                          'title': title, 
                          'href': 'javascript:pageTextSwitch('+i+')', 
                          'innerHTML': '<span class="link'+(i==0?' selected':'')+'"> '+(i+1)+' </span>'};
            var direct = dojo.create('a', attributes);
            dojo.place(direct, pager, 'last');
            dojo.place(dojo.create('span', {'innerHTML': delimiter}), pager, 'last');
            dojo.place(pages[i][0], texy, 'last');
        }
        attributes = {'class': "nav right clickable", 
                      'onClick': "pageTextSwitch(\'+\')", 
                      'innerHTML': pagerNext};
        var right = dojo.create('div', attributes);
        dojo.place(right, pager, 'last');

        dojo.place(dojo.clone(pager), texy, 'last');

        if(dojo.hash() != '')pageTextSwitch(parseInt(dojo.hash())-1, true);
    }
}

function pageTextExpand()
{
    if(isMoving)return;
    if (dojo.attr('PageText', 'expanded') != 'true')
    {
        var args = {node: 'PageText'};
        var anim = dojo.fx.wipeIn(args);
        anim.onEnd = function()
        {
            var node = dojo.query('div.expander div div span')[0];
            node.innerHTML = drawerLess;
            dojo.attr('PageText', 'expanded', 'true');
            isMoving = false;
        };
        isMoving = true;
        anim.play();
    }
    else
    {
        var args = {node: 'PageText'};
        var anim = dojo.fx.wipeOut(args);
        anim.properties.height.end = pthMax;
        anim.onEnd = function()
        {
            var node = dojo.query('div.expander div div span')[0];
            node.innerHTML = drawerMore;
            dojo.attr('PageText', 'expanded', 'false');
            isMoving = false;
        };
        isMoving = true;
        anim.play();
    }
}

/**
 * MenuPane
 * 
 * @param id
 * @param highlight
 * @param unlight
 * @return
 */
function menuPaneHighlightItem(id)
{
    if (!dojo.isIE || dojo.isIE > 6)
    {
        var node = dojo.byId(id);
        var highs = dojo.query('#MenuPane2 li.selected');
        highs.removeClass('selected');
        dojo.addClass(node, 'selected');
        dojo.addClass(node, 'highlighted');
    }
}

var duration = 250;
function menuPaneOpenMenu(id)
{
    if (!dojo.isIE || dojo.isIE > 6)
    {
        if(id == last)return;
        
        var node     = dojo.byId(id);
        var lode     = dojo.byId(last);
        var nul      = dojo.query('#' + id + ' > ul');
        var lul      = dojo.query('#' + last + ' > ul');
        var siblings = dojo.query('#MenuPane2 > ul > li');
        var nx       = siblings.indexOf(node);
        var lx       = siblings.indexOf(lode);
        var next     = siblings.at(nx+1);
        var lext     = siblings.at(lx+1);
        var lulisnext = nx != -1 && nx+1 == lx;
        var nulisnext = lx != -1 && lx+1 == nx;
        var wout = (lul != null) ? lul.wipeOut({duration: duration}) : null;
        var win  = nul.wipeIn({duration: duration});

        nul.style('height', '0px');
        var oldPadding = nul.style('paddingBottom')  + 'px';
        nul.style('paddingBottom', '0px');
        nul.removeClass('hidden');
        dojo.addClass(node, 'open');
        dojo.addClass(id + '1', 'selected');
        
        if(nulisnext)
        {
            dojo.addClass(node, 'nextopen');
        }
        if(lulisnext)
        {
            next.addClass('nextopen');
        }
        else if(next != null)
        {
            next.addClass('afteropen');
        }
        win.onEnd = function() {
            nul.style('paddingBottom', oldPadding);
            if(lulisnext)
            {
                next.removeClass('nextopen');
                next.addClass('afteropen');
            }
        }
        if(wout != null)
        {
            lul.style('paddingBottom', '0px');
            wout.onEnd = function() {
                lext.removeClass('nextopen');
                lext.removeClass('afteropen');
                dojo.removeClass(lode, 'open');
                lul.style('paddingBottom', oldPadding);
            };
            dojo.fx.combine([wout, win]).play();
        }
        else
        {
            win.play();
        }
        last = id;
    }
}

function menuPaneOnLoad()
{
    if (dojo.isIE && dojo.isIE < 7)
    {
        var menu = dojo.byId('MenuPane2');
        dojo.attr(menu, 'id', 'MenuPane');
    }
    
    currentHead = dojo.byId(currentHead);
    currentItem = dojo.byId(currentItem);
    
    if (currentHead != null && currentItem != null)
    {
        if (dojo.isIE && dojo.isIE < 7)
        {
            var ul = dojo.query('> ul', currentHead);
            ul.addClass('open');
            dojo.addClass(currentHead, 'open');

            var siblings = dojo.query('#MenuPane > ul > li');
            var index    = siblings.indexOf(currentHead);
            var slen     = siblings.length;
            if(index < slen-1)
            {
                var next = siblings.at(index+1);
                next.addClass('afteropen');
            }
            dojo.addClass(currentItem, 'selected');
        }
        else
        {
            dojo.addClass(currentHead, 'open');
            var siblings = dojo.query('#MenuPane2 > ul > li');
            var index    = siblings.indexOf(currentHead);
            var slen     = siblings.length;
            if(index < slen-1)
            {
                var next = siblings.at(index+1);
                next.addClass('afteropen');
            }
            dojo.addClass(currentItem, 'selected');
        }
    }
}

/**
 * ButtonPane
 * 
 * @return
 */

function buttonPaneOnLoad()
{
    var butag = dojo.query('#ButtonPane div.buttons');
    var natag = dojo.query('#ButtonPane div.navigation');
    var ftags = dojo.query('#ButtonPane div.buttons div.flexbutton');
    var mtags = dojo.query('#ButtonPane div.buttons div.flexbutton div.m');
    var mwidth = parseInt(buttonPaneMinWidth);
    mtags.forEach(function(node) {
        if (dojo.style(node, 'width') > mwidth)
            mwidth = dojo.style(node, 'width');
    });
    mtags.style('width', mwidth + 'px');

    mwidth = (mtags.length*(mwidth+30))-20;
    
    if (natag.length > 0 && ftags.length < 2)
    {
        mwidth*=2;
        mwidth+=20;
    }
    butag.style('width', mwidth + 'px');

    ftags.at(ftags.length-1).style('marginRight', '0px');
}

/**
 * SearchBar
 * 
 * @return
 */

function searchBarSubmit()
{
    searchBarValidateValue();
    if (dojo.byId('searchvalue').value == "")
    {
        window.location.href = document.forms.SearchBar.action;
    }
    else
    {
        document.forms.SearchBar.submit();
    }
}

function searchBarValidateValue() 
{
    var searchvalue = document.forms.SearchBar.elements.searchvalue;
    var defval = dojo.attr(document.forms.SearchBar.elements.searchvalue, 'default');
    var sval   = searchvalue.value;
    if(sval == defval)
    {
      searchvalue.value="";
    }
}

/**
 * 
 * ListPane
 * 
 */

function listPaneRewriteHref()
{
	var tagas = dojo.query('#ListPane div.ListPane a');
	tagas.forEach(function(node) {
		var href = dojo.attr(node, 'href');
		href = href.replace(/&tags=/, '#tags=');
		dojo.attr(node, 'href', href);
	});
}

/**
 * 
 * TagControl
 * 
 */

function tagControlRewriteHref()
{
	var tagas = dojo.query('.TagControl a.tag');
	tagas.forEach(function(node) {
		var href = dojo.attr(node, 'href');
		href = href.replace(/\?/, '#mode=ajax&');
		dojo.attr(node, 'href', href);
	});
	
	var languages = dojo.query('#LanguageBar a');
	languages.forEach(function(node) {
		var href = dojo.attr(node, 'href');
		href = href.replace(/#.*/, '').concat('#' + dojo.hash());
		dojo.attr(node, 'href', href);
	});
}

function tagControlHash()
{
    if (enableHash)
    {
        var href = window.location.href;
        var path = href.replace(/#/, '?');
        if (dojo.hash() == "") path += '?mode=ajax';
        tagControlUpdateTags(path);
    }
    enableHash = true;
}

function tagControlUpdateTags(path)
{
    if (currentRequest != null)
    {
        // Not in Use.
    }
    
    tagControlShowProgress();
    
    var bp = dojo.byId('ButtonPane');
    hide(bp);
    var pt = dojo.byId('PageText');
    hide(pt);
//    var db = dojo.byId('DetailsBox');
//    var cb = dojo.byId('ContactBox');
//    var sb = dojo.byId('ServiceBox');
    var tb = dojo.byId('TextBox');
    hide(tb);
    
    var args = {
        url: path,
        handleAs: "json",
        load: function(data) {

           if (overlayVisible())
           {
              dojo.byId('TagPane').innerHTML = data.TagPane;
              if (data.TagBox != null)
              {
                  var tp = dojo.byId('TagBox');
                  if (tp == null)tp = dojo.create('div', {'id': "TagBox"}, 'BoxArea', 'first');
                  if (tp != null)
                  {
                      tp.innerHTML = data.TagBox;

                      destroy(bp);
                      destroy(pt);
                      destroy(tb);
                  }
              }
              var lp = dojo.byId('ListPane');
              if (data.ListPane != "")
              {
	              lp.innerHTML = data.ListPane;
	              listPaneRewriteHref();
              }
              
              tagControlRewriteHref();
              if (dojo.hash().indexOf('tags=') == -1)
              {
                  tagControlFixHeight();
              }
           }
           enableHash = true;
           currentRequest = null;
        },
        error: function(err) {
            tagControlHandleError();
            show(bp);
            show(pt);
        },
        failOk: true
    };
    enableHash = false;
    currentRequest = dojo.xhrGet(args);
}

function tagControlHandleError(path)
{
    enableHash = false;
    currentRequest = null;
    destroyOverlays();

    if (dojo.byId('TagPane') != null && dojo.byId('TagPane').innerHTML == "")
    {
        var path = dojo.hash().replace(/&tags=.*/, '');
        dojo.hash(path, true);
        enableHash = true;
    }   
}

function tagControlFixHeight()
{
    var boxes = dojo.query('#TagPane div.TagBox');

    for(i = 1; i < boxes.length; i+=2)
    {
        var h1 = dojo.style(boxes[i-1], 'height');
        var h2 = dojo.style(boxes[i], 'height');
        if (h1 > h2)
        {
            dojo.style(boxes[i], 'height', h1 + 'px');
        }
        else if (h2 > h1)
        {
            dojo.style(boxes[i-1], 'height', h2 + 'px');
        }
    }
}

function tagControlShowProgress()
{
    var st = dojo.query('div.SelectedTags');
    if (st.length == 0)
    {
        var tp = dojo.byId('TagPane');
        if (tp != null)tp.innerHTML = "";
    }
    
    var lp = dojo.byId('ListPane');
    if (lp == null)
    {
        lp = dojo.create("div", {'id': "ListPane"}, 'PaneArea', 'last');
    }
    var node = dojo.create("div", { 'class': "overlay border clickable", 'id': "TagControlOverlay" , 'onClick': "destroyOverlays(true);" }, 'ListPane', 'first');
    dojo.create("div", { 'class': "title", 'id': "" , 'innerHTML': tagPaneProgressTitle}, node);

    return node;
}

function tagControlSelectTags(select)
{
	var tags = dojo.query('div.SelectedTags ul.tags li.hovertag');
	var rrs =  dojo.query('div.SelectedTags ul.tags li.hovertag div[class^="r"]');
	if (select)
    {
	    rrs.addClass('ra');
	    rrs.removeClass('rr');
	    tags.addClass('selectedtag');
    }
	else
	{
        tags.removeClass('selectedtag');
        rrs.addClass('rr');
	    rrs.removeClass('ra');
	}
}

/**
 * ImageBox1
 * 
 * @param image
 * @param thumb
 * @return
 */

function imageBox1HighlightImage(image, thumb)
{
    var images = dojo.query('#ImageBox1 div.image img');
    images.removeClass('on');
    dojo.addClass(image, 'on');

    var thumbs = dojo.query('#ImageBox1 div.thumbs div');
    thumbs.addClass('low');
    dojo.removeClass(thumb, 'low');
}

var imageBox1Link = null;
function imageBox1ZoomImage(image, out)
{
    var img    = dojo.byId(image);
    var parent = dojo.byId('ImageBox1');
    var src    = img.src;
    if (parent == null)
    {
        parent = img.parentNode;
    }
    var max = {w: 240, h: 180};
    if (src.indexOf('i0')>0)
    {
        max = {w: 480, h: 360};
    }
    
    src = src.substring(0, src.indexOf('?'));
    
    var zoom = dojo.byId(img.id + 'Zoom');
    if (zoom == null)
    {
        zoom = dojo.create('div', {'id': img.id + "Zoom", 'class': "absolute border norepeat"}, dojo.body(), 'last');
        var ic = dojo.position(img, true);
        var ox = (ic.x-240-2);
        var oy = (ic.y-1);
        
        dojo.style(zoom, 'width', '240px');
        dojo.style(zoom, 'height', '180px');
        dojo.style(zoom, 'top', oy + 'px');
        dojo.style(zoom, 'left', ox + 'px');
        dojo.style(zoom, 'borderWidth', '1px');
        dojo.style(zoom, 'borderStyle', 'solid');
        
        imageBox1Link = dojo.connect(img, 'onmousemove', function(ev) {
            var zc = dojo.position(zoom, true);
            var x = ev.clientX-ic.x;
            var y = ev.clientY-ic.y;
            
            var px = x/ic.w*100;
            var py = y/ic.h*100;
            x = max.w/100*px-1/2*zc.w;
            y = max.h/100*py-1/2*zc.h;

            x*=-1;
            y*=-1;
            
            var maxx = max.w-zc.w;maxx*=-1;
            var maxy = max.h-zc.h;maxy*=-1;
            
            if (x < maxx)x = maxx;
            if (x > 0)x=0;
            if (y < maxy)y = maxy;
            if (y > 0)y=0;
            
            var pos = x + 'px ' + y + 'px';
            dojo.attr(zoom,'servus', pos);
            dojo.style(zoom, 'backgroundPosition', pos);
        });
    }
    else if(out)
    {
        dojo.disconnect(imageBox1Link);
        dojo.destroy(zoom);
    }
    dojo.style(zoom, 'backgroundImage', 'url(\'' + src + '\')');
    
}

function move(ev)
{
    
}

/**
 * CountryPane
 * 
 * @param name
 * @param status
 * @return
 */

function switchIcon(name, status)
{
    var current = document.getElementsByName("Company_" + name)[1];
    current.style.visibility = status==0?'hidden':'visible';
}

/**
 * 
 * Preise
 * 
 */
function productsLoadPricing()
{
   var path = window.location.href.replace(/#/, '&');

   productsShowProgress(productsProgressTitle);
   
   var content = new Array(3);
   content['mode']        = 'ajax';
   content['tagchange']   = 'false';
   
   var args = {
        'url': path,
        'handleAs': "json",
        'load': function(response, ioargs) {
            destroyOverlays();
            
            if (response.TagPane != null)
            {
            	dojo.place(response.TagPane, 'TagPane', 'replace');
            }
            
            if (response.GridPane != null && response.GridPane != "")
            {
                dojo.place(response.GridPane, 'GridPane', 'replace');
                if (dojo.byId('PageNote') == null)
                	dojo.byId('PaneArea').innerHTML += response.PageNote;
            }
            else if (response.PageGrid != null && response.PageGrid != "")
            {
                dojo.destroy('GridPane');
            	if (dojo.byId('PageNote') == null)
            		dojo.place(response.PageGrid + response.PageNote, 'PageText', 'after');
            }
            var db = dojo.byId('DebugBox');
            if (response.SessionBox != null && response.SessionBox != "")
            {
            	if (dojo.byId('SessionBox') == null)
                {
            		dojo.byId('BoxArea').innerHTML += response.SessionBox;
	                if (db != null)
	                {
	                    dojo.place(db, 'SessionBox', 'after');
	                    dojo.destroy('DebugBox');
	                }
                }
            }
            else if (response.LoginBox != null && response.LoginBox != "")
            {
            	if (dojo.byId('LoginBox') == null)
            	{
	                dojo.byId('BoxArea').innerHTML += response.LoginBox;
	                if (db != null)
	                {
	                    dojo.place(db, 'LoginBox', 'after');
	                    dojo.destroy('DebugBox');
	                }
            	}
            }
            tagControlFixHeight();
            productsRewriteHref();
            fixIe6();
        },
        'error': function(err, ioargs) {
        },
        'sync': false,
        'failOk': true,
        'content': content
    };

    currentRequest = dojo.xhrGet(args);
}

function productsShowProgress(title)
{
    var gp   = dojo.byId('GridPane');
    if (gp == null)
    {
        gp = dojo.place('<div id="GridPane"></div>', 'PageText', 'after');
    }
    var node = dojo.create("div", { 'class': "overlay border", 'id': "GridPaneOverlay" }, 'GridPane', 'first');
    dojo.create("div", { 'class': "title", 'id': "" , 'innerHTML': title}, node);

    return node;
}

function productsRewriteHref()
{
	var tagas = dojo.query('.TagControl a.tag');
	tagas.forEach(function(node) {
		var href = dojo.attr(node, 'href');
		href = href.replace(/(\&|\?)tags=/, '#mode=ajax&tags=');
		dojo.attr(node, 'href', href);
	});
}

/**
 * 
 * SearchPane
 * 
 */
var results        = 0;
var sections       = null;
var secIndex       = 0;
var srcIndex       = 0;

function searchPaneStart()
{
    if (currentRequest != null)
    {
        sections = null;
        return;
    }
    searchPaneReset();
    
    var value = dojo.byId('searchvalue').value;

    if (value == "")
    {
        searchPaneReset();
        return;
    }
    
    searchPaneSetHash(value);
    if (value == '')
    {
        searchPaneAddEmpty();
        return;
    }
    
    sections = dojo.query('#SearchPane input.checkbox');

    if (sections.length > 0)
    {
        searchPaneSearch(0, sections, 0);
    }
}

function searchPaneSearch()
{
    if(secIndex >= sections.length-1) //-1 wegen der "All" Checkbox
    {
        if (results == 0)
        {
            searchPaneAddEmpty();
        }
        currentRequest = null;
        return;
    }
    if (!sections[secIndex].checked)
    {
        secIndex++;
        srcIndex = 0;
        searchPaneSearch();
        return;
    }
    
    var searches = dojo.query('#SearchPane input.' + sections[secIndex].id);

    if(searches.length <= srcIndex)
    {
        secIndex++;
        srcIndex = 0;
        searchPaneSearch();
        return;
    }
    
    var search = searches[srcIndex];
    var node = searchPaneShowProgress(search.title);

    var content = new Array(3);
    content['theme']       = dojo.byId('theme').value;
    content['search']      = search.id;
    content['searchvalue'] = dojo.byId('searchvalue').value.toLowerCase();

    var headers = new Array();
    if (isReload)
    {
        headers['Cache-Control'] = 'max-age=0';
        isReload = false;
    } 
    
    var args = {
        'url': searchPaneSearchPath,
        'handleAs': "json",
        'headers': headers,
        'load': function(response, ioargs) {
            if (sections != null)
            {
                destroyOverlays();
                if (response.Count > 0)
                {
                    var node = dojo.create('div', {'id': "Result"+search.id, 'innerHTML': response.Title + response.Control }, dojo.byId('SearchResults'), 'last');
                    searchPaneAddNav(node);
                    searchPaneAddTags(response.Tags);
                    fixIe6();
                    results += response.Count;
                }
                
                if (checkStatus(ioargs))
                {
                    srcIndex++;
                    searchPaneSearch();
                }
                else
                {
                    searchPaneAddEmpty();
                }
            }
            else
            {
                currentRequest = null;
                searchPaneStart();
            }
        },
        'error': function(err, ioargs) {
            if (sections != null)
            {
                destroyOverlays();

                if (checkStatus(ioargs))
                {
                    srcIndex++;
                    searchPaneSearch();
                }
                else
                {
                    currentRequest = null;
                }
            }
            else
            {
                currentRequest = null;
                searchPaneStart();
            }
        },
        'sync': false,
        'failOk': true,
        'content': content
    };

    currentRequest = dojo.xhrGet(args);
}

function searchPaneAddNav(node)
{
    var h2 = dojo.query('h2', node);
    if(h2.length < 1)return;
    h2.addClass('clickable');
    h2.addClass('background4');
    h2.addClass('selected');
    h2 = h2[0];
    var p = h2.parentNode.parentNode;
    dojo.attr(p, 'id', h2.innerHTML);
    var func = function() {
        var t = dojo.query('div.ListPane,div[id="ListPane"]', p)
        if(t.at(0).style('display') == 'none')
        {
            t.style('display', '');
            dojo.addClass(h2, 'selected');
        }
        else
        {
            t.style('display', 'none');
            dojo.removeClass(h2, 'selected');
        }
    }
    dojo.connect(h2, 'onclick', func);
    
    var b = dojo.create('div', {'class':"clickable txt-b right closebutton hoverclosebutton"}, h2, 'last');
    dojo.attr(b, 'onClick', 'dojo.destroy(dojo.byId("' + dojo.attr(p, 'id') + '"))');
}

var ul;
function searchPaneAddTags(tags)
{
    if (tags.length < 1)return;
    
    var tb = dojo.byId('TagBox');

    if (tb == null)
    {
        tb = dojo.create('div', {'id': "TagBox", 'class': "TagControl"}, 'BoxArea', 'first');
        var at = dojo.create('div', {'class': "AvailableTags border"}, tb, 'first');
        var h2 = dojo.create('h2', {'class': "box-h background4"}, at, 'first');
        h2.innerHTML = "Verf&uuml;gbare Filter";
        dojo.create('div', {'class': "end"}, at, 'last');
        ul = dojo.create('ul', {'class': "tags"}, at, 'last');
    }
    var filters = dojo.query('#TagBox ul.tags li.tag div.m');
    for (var key in tags)
    {
        var found = false;
        for (var i = 0; i < filters.length; i++)
        {
            var fil = filters[i].innerHTML;

            if (fil == key)
            {
                found = true;
                break;
            }
        }
        if (found)continue;
        
        var id = key + tags[key] + tags;
        var li = dojo.create('li', {'id': id, 'class': "tag hovertag"}, ul, 'last');
        dojo.attr(li, 'onClick', 'searchPaneSetFilter("'+id+'", "'+key+'")');
        var l = dojo.create('div', {'class': "l"},  li, 'last');
        var m = dojo.create('div', {'class': "m background4"},  li, 'last');
        m.innerHTML = key;
        var r = dojo.create('div', {'class': "ra"},  li, 'last');
    }
    dojo.create('div', {'class': "end"}, at, 'last');
}

function searchPaneSetFilter(nod, key)
{
  nod = dojo.byId(nod);
  var nods = dojo.query('#SearchResults div.ListPane-NewsList-Section');
  var deselect = dojo.hasClass(nod, 'selectedtag');
  
  dojo.toggleClass(nod, 'selectedtag');

  var filters = dojo.query('#TagBox ul.tags li.selectedtag div.m');
  
  var ras  = dojo.query('div.ra, div.rr', nod);
  ras.toggleClass('rr');
  ras.toggleClass('ra');
  var rms = dojo.query('div.m', nod);
  rms.toggleClass('background3');
  rms.toggleClass('background4');
  
  nods.forEach(function(nod) {
      var par      = nod.parentNode;
      var hidden   = dojo.style(par, 'display') == "none";
      var contains = true;

      for (var i = 0; i < filters.length; i++)
      {
          var key = filters[i].innerHTML;

          if (nod.innerHTML.indexOf(key) == -1)
          {
              contains = false;
              break;
          }
      }

      if (contains && hidden)dojo.style(par, 'display', '');
      else if (!contains && !hidden)dojo.style(par, 'display', 'none');
  });   
}

function searchPaneAddEmpty()
{
    var args = {
        url: searchPaneEmptyPath,
        handleAs: "json",
        load: function(response, ioargs) {
            dojo.byId('SearchResults').innerHTML = response.Control;
        },
        error: function(err, ioargs) {
            destroyOverlays();
        },
        sync: false
    };

    dojo.xhrGet(args);
}

function searchPaneAll(id)
{
    var all      = dojo.byId('checkall');
    if (all != null)
    {
        var sections = dojo.query('#SearchPane input.checkbox');
        if (id == 'checkall')
        {
            for(i = 0; i < sections.length; i++)
            {
                if (sections[i].id != 'checkall')
                {
                    sections[i].checked = all.checked;
                }
            }
        }
        else
        {
            for(i = 0; i < sections.length; i++)
            {
                if (sections[i].id != 'checkall' && !sections[i].checked)
                {
                    all.checked = false;
                    return;
                }
            }
            all.checked = true;
        }
    }
}

function searchPaneSetHash(value)
{
    enableHash = false;

    var sections = dojo.query('#SearchPane input.checkbox');
    var set = new Array(sections.length);
    set['sections'] = "";
    for(i = 0; i < sections.length; i++)
    {
        if (sections[i].id != 'checkall')
        {
            set['sections'] += sections[i].checked ? "1" : "0";
        }
    }
    set['searchvalue'] = value;
    
    value = dojo.objectToQuery(set);
    dojo.hash(value, disableHistory);

    disableHistory = false;
    //enableHash = true; wird in subscribe funktion zurückgesetzt
}

function searchPaneGetHash()
{
    var value = dojo.hash();
    var set   = dojo.queryToObject(value);
    var secs  = set['sections'];
    var value = set['searchvalue'] != null ? set['searchvalue'] : value;
        
    var sections = dojo.query('#SearchPane input.checkbox');
    for(i = 0; i < sections.length && secs != null; i++)
    {
        if (sections[i].id != 'checkall' && secs.length > i)
        {
            var checked = secs.substring(i, i+1)=="1" ? true : false;
            sections[i].checked = checked;
        }
    }
    searchPaneAll('');
    return value;
}

function searchPaneReset()
{
    dojo.byId('SearchResults').innerHTML = "";
    dojo.destroy('TagBox');
    results = 0;
    secIndex = 0;
    srcIndex = 0;
    sections = null;
    currentRequest = null;
    
    if(dojo.isIE < 8)
    {
        dojo.style(dojo.body(), 'height', '100%');
    }
}

function searchPaneShowProgress(title)
{
    var node = dojo.create("div", { 'class': "overlay border", 'id': "SearchPaneOverlay" , 'onClick': "destroyOverlays(true);" }, 'SearchResults', 'first');
    dojo.create("div", { 'class': "title", 'id': "" , 'innerHTML': title}, node);

    return node;
}

function fixIe6()
{
    if(dojo.isIE < 8)
    {
    	var va = (dojo.style('ViewArea', 'height') + 100);
    	var ba = (dojo.style('BoxArea', 'height') + 100);
        dojo.style(dojo.body(), 'height', (va>ba?va:ba) + 'px');
    }
}

function hide(node)
{
	if(node != null)
	{
		dojo.style(node, 'display', 'none');
	}
}

function show(node)
{
	if(node != null)
	{
		dojo.style(node, 'display', 'block');
	}
}

function destroy(node)
{
	if(node != null)
	{
		dojo.destroy(node);
	}
}