/* helper.js */

var steps = new Array();

function loadSite(url, placeholder, js, store) {
    if (!js) {
        js = true;
    }
    if(undefined==store) {
       store = true;
    } 
    
    var params = { method: 'get', evalScripts: js };
    if( store ) {
       steps[ placeholder ] = $A(arguments);
    }
    new Ajax.Updater( placeholder, url, params );
}

function refresh( placeholder) {
    if( null != steps[ placeholder ] && undefined != steps[ placeholder ] ) {
        loadSite.apply( this, steps[ placeholder ] );
    }
}

function deleteAndRefresh(url, id, placeholder) {
    var binder = (-1 == url.indexOf('?'))?'?':'&';
    new Ajax.Request(url + binder + 'action=delete&id=' + id + '&url=' + url + '&ph=' + placeholder, { method: 'get', 
            evalScripts: true, onComplete: function() { refresh( placeholder ) }});
}


/* Speichern der eingebetteten Formulare */
function saveForm(url, formName, placeholder, js) {
    if (!js) {
        js = false;
    }
    var pars = Form.serialize(formName);
    var myAjax = new Ajax.Updater( placeholder, url, { method: 'post', parameters: pars, evalScripts: js });
}

function action(url, action, id, placeholder, js, store) {
    loadSite(url + '?action=' + action + '&id=' + id + '&url=' + url + '&ph=' + placeholder, placeholder, js, store);
}


function postPars(url, pars, placeholder, js) {
    if (!js) {
        js = false;
    }
    var myAjax = new Ajax.Updater( placeholder, url, { method: 'post', parameters: pars, evalScripts: js });
}

function saveMultiForm(url, formNames, placeholder, js) {
    if (!js) {
        js = false;
    }
    var tmp = new Array();
    var someForm;
    for (var i = formNames.length; --i >= 0; ) {
        someForm = $(formNames[i]);
        tmp.push(Form.serialize(someForm));
    }
    var pars = tmp.join('&');
    var myAjax = new Ajax.Updater( placeholder, url, { method: 'post', parameters: pars, evalScripts: js });
}



/* 
    Gibt den n�chsten Geschwisterknoten mit dem entsprechenden Tagnamen zur�ck. 
    Wenn es keinen weiteren gibt, kommt NULL zur�ck.
*/
function nextSiblingByElementName(el, name) {
    sibling = el;
    while( sibling = sibling.nextSibling) {
        if (sibling.nodeName.toLowerCase()  == name.toLowerCase() ) {
            return sibling;
        }
    }
    return null;
}


/* 
    Gibt den vorherigen Geschwisterknoten mit dem entsprechenden Tagnamen zur�ck. 
    Wenn es keinen weiteren gibt, kommt NULL zur�ck.
*/
function previousSiblingByElementName(el, name) {
    sibling = el;
    while (sibling = sibling.previousSibling) {
        if (sibling.nodeName.toLowerCase()  == name.toLowerCase() ) {
            return sibling;
        }
    }
    return null;
}

/* 
    Gibt den n�chsten Geschwisterknoten mit dem entsprechenden tagnamen zur�ck. 
    Wenn es keinen gibt, kommt NULL zur�ck.
*/
function firstChildByElementName(parent, name) {
    if( name.toLowerCase() == parent.firstChild.nodeName.toLowerCase() ) {
        return parent.firstChild;
    }
    return nextSiblingByElementName( parent.firstChild, name );
}

/* 
    Gibt den letzten Geschwisterknoten mit dem entsprechenden tagnamen zur�ck. 
    Wenn es keinen gibt, kommt NULL zur�ck.
*/
function lastChildByElementName(parent, name) {
    if( name.toLowerCase() == parent.lastChild.nodeName.toLowerCase() ) {
        return parent.lastChild;
    }
    return previousSiblingByElementName( parent.lastChild, name );
}


/**
 * Navigation ueber eine Selectbox. Der Wert wird als neue URL geladen.
 */
function openLocation( element ) {
    self.location.href=$F(element);
}

/**
 * Suche
 */
 
function simpleQuickSearch(searchValue) { 
    clearTimeout( currentTimeout ); 
    if (searchValue.strip().length > 2) { // erst ab mind. 3 Zeichen suchen 
        var ph = $('popup-suche'); 
        Element.update(ph, '<img style="top: 15px; position: relative;" src="/konz/img/spinner.gif"/>'); 
        Element.show(ph); 
        currentTimeout = setTimeout( 'doSQS()', 250 ); 
    } else { 
        Element.hide('popup-suche'); 
    } 
} 

function doSQS() { 
    saveForm('/konz/_search.html', 'searchCommand', 'popup-suche'); 
}  

// NEWSARCHIV ==================================================================================

function displayNews(event) {
    var trigger = Event.element(event);
    var target = $('newsdetail');
    var years = $$('#archive-list span');
    var months = $$('#archive-list a');

    // Click auf Jahr
    if (trigger.match('span')) {
        var target_ol = trigger.next('ol');
        if (trigger.hasClassName('active')) {
            return false;
        }
        years.each(function(span){
            span.removeClassName('active');
        });
        $$('#archive-list ol ol').each(function(ol) {
            if (ol.style.display != 'none') {
                new Effect.BlindUp(ol);
            }
        });
        if (target_ol.style.display == 'none' ) {
        	var toClear = $$('#archive-list a.active');
        	toClear.each(function(a) {
        		a.removeClassName('active');
        	});
            new Effect.BlindDown(target_ol);
            trigger.addClassName('active');
            var januar = target_ol.immediateDescendants()[0].down('a');
            januar.addClassName('active');
            new Ajax.Updater(target, januar.href);
        }
    }
    // Click auf Monat
    else if (trigger.match('a')) {
        var url = trigger.href;
        months.each(function(a){
            a.removeClassName('active');
        });
        trigger.addClassName('active'); 
        new Ajax.Updater(target, url);
    }
}

// invoke news-archive updater
function init_news() {
    if ($('archive-list')) {
        Event.observe($('archive-list'), 'click', displayNews);
        $$('#archive-list a').each(function(link){
            link.onclick = function(){return false;}
        });
        $$('#archive-list ol ol').each(function(ol) {
            ol.hide();
        });

        // Find and show current Date
        var date = new Date();
        var currentMonth = date.getMonth();
        var currentYear = date.getFullYear();
        var years = $$('#archive-list li span');
        
        years.each(function(y) {
            if (y.innerHTML == currentYear) {
                y.addClassName('active');
                y.next('ol').show();

                var newslink = y.next('ol').immediateDescendants()[currentMonth].down();
                var url = newslink.href;
                newslink.addClassName('active');
                new Ajax.Updater($('newsdetail'), url);
            }
        });
    }
}

// invoke init_news() after the DOM is loaded
Event.observe(window, 'load', init_news);

// Toggling the alternative shipping address

Prototype.Browser = {
	IE:     !!(window.attachEvent && !window.opera)
};

function toggleForms(x, addressCtr) {
	var checkBox = $('alt-address');
	if (checkBox.checked === true) {
		new Effect.BlindDown(addressCtr, {
			queue: {position: 'end', scope: 'anims', limit: 2},
			afterFinish: function() {
				checkBox.checked = true;
			}
		});
	} else {
		new Effect.BlindUp(addressCtr, {
			queue: {position: 'end', scope: 'anims', limit: 2},
			afterFinish: function() {
				checkBox.checked = false;
			}
		});
	}
}

function toggleAddress() {
	if ($('alt-address')) {
		var checkBox	= $('alt-address');
		var addressCtr	= $('lieferanschrift');
	    if (checkBox.checked == false) {
	    	addressCtr.hide();
	    }
	    if (!Prototype.Browser.IE) {
	    	checkBox.observe('change', toggleForms.bindAsEventListener(checkBox, addressCtr));
	    } else {
	    	checkBox.observe('click', toggleForms.bindAsEventListener(checkBox, addressCtr));
	    }
	}
}
Event.observe(window, 'load', toggleAddress);


