/////////////////////////////////////////////////////////////////////////////////
// JavaScript
/////////////////////////////////////////////////////////////////////////////////
var isopen = false;
function toggle(lay) {
    if (lay == isopen) {
        document.getElementById(isopen).style.display = 'none'; 
        isopen = false;
        return null;
    }
    if(isopen) {
        document.getElementById(isopen).style.display = 'none';
        isopen = false;
    }
    document.getElementById(lay).style.display = '';
    isopen = lay;
}


/////////////////////////////////////////////////////////////////////////////////
// Hover Inputfelder
/////////////////////////////////////////////////////////////////////////////////
navHover = function() {
	var lis = document.getElementById("navi").getElementsByTagName("LI");
	for (var i=0; i<lis.length; i++) {
		lis[i].onmouseover=function() {
			this.className+=" iehover";
		}
		lis[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" iehover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", navHover);


function switch_bgc(el,stat) {
    el.style.color           	 =  stat? "#fff" : "#9c9c9c";
    el.style.backgroundColor =  stat? "#c2c2c2" : "#e2e1e1";
}

function wechsel(htmlcode) {
	document.getElementById("bildnews").innerHTML = htmlcode;
}


/////////////////////////////////////////////////////////////////////////////////
// Browser
/////////////////////////////////////////////////////////////////////////////////
var nc    =  !!(document.captureEvents  && !document.getElementById);
var nc6   =  !!(document.captureEvents  && document.documentElement);
var op6   =  !!(document.getElementById && !document.documentElement);
var op7   =  !!(window.opera && /Opera( |\/)7/i.exec(navigator.userAgent));
var ie    =  !!document.all;
var ie4   =  !!(document.all           && !document.documentElement);
var ie5   =  !!(document.all           && document.documentElement);
var dom   =  !!document.getElementById;
var mac   =  !!(navigator.userAgent.indexOf("Mac")!=-1);
var docEl =  (document.documentElement && document.all && typeof document.compatMode != "undefined" && document.compatMode !=  "BackCompat")? "documentElement" : "body";




/////////////////////////////////////////////////////////////////////////////////   
// Accordion
/////////////////////////////////////////////////////////////////////////////////
    function $A (iterable) {
        var result = [];
        for (var i = 0; i < iterable.length; i++) {
            result.push(iterable[i]);
        }
        return result;
    }
    
    // shortcut for document.getElementById 
    // taken from prototype lib - thanks guys!
    //    
    function $() {
    
        var elements = new Array();        
        for (var i = 0; i < arguments.length; i++) {
        
            var element = arguments[i];
            if (typeof element == 'string') element = document.getElementById(element);
            if (arguments.length == 1)      return element;
            elements.push(element);
        }            
        return elements;
    }
    
    // get elements by tag and class name 
    //
    function $cm (el, class_name) {
    
        var curr_class, all_obj, ret_obj = [], temp;
        
        all_obj =   document.getElementsByTagName(el);    
        for (i = 0; i < all_obj.length; i++) {
    
            // no match at all
            //
            if(all_obj[i].className.indexOf (class_name) == -1) continue;
            
            // in case we have more then one class
            //        
            temp =   "," + all_obj[i].className.split(" ").join(",") + ",";
            if (temp.indexOf("," + class_name + ",") == -1) continue;
                
            ret_obj[ret_obj.length] =   all_obj[i];
        }
        return ret_obj;
    }         
    
    // helps to stay inside the scope
    // taken from prototype lib - thanks guys!
    //
    Function.prototype.bind = function () {

        var method  =  this;
        var args    =  $A(arguments);
        var object  =  args.shift();
        
        var wrapper =  function () {
            return method.apply(object, args);
        };
        return wrapper;
    }    
    
    
    
    var _xl =  {
    
    
        def_speed   : 50,
        def_memb    : "def",
        def_type    : "b0",
        def_pos     : "relative",
          
        el_obj      : [],
        
        el_speed    : [],
        el_type     : [],
        el_func     : [],
        el_parm     : [],
        el_ctrl     : [],
        el_memb     : [],
        el_click    : [],  
        el_pos      : [],      
           
        el_ht       : [],
        el_wd       : [],                  
        el_parents  : [],
        el_cnt      : [],
        el_run      : [],
        
        el_store    : [],
        el_x        : [],
        el_y        : [],
        
        store_open  : [],      

        slide       : function (el, args) {
        
            if (typeof el == "object") {
                el =  el.id;
            }
            if (el == "") {
                alert("missing id!");
                return;
            }
 
            try {           
            
                // loop args if available and set some vars 
                //
                var speed = false;                
                for (var i in args) {                    
                    switch (i) {
                    
                        case "speed":
                            speed               =  args[i];
                            break;
                        case "type":
                            this.el_type[el]    =  args[i];
                            break; 
                        case "func":
                            this.el_func[el]    =  args[i];
                            break; 
                        case "parm":
                            this.el_parm[el]    =  args[i];
                            break;  
                        case "ctrl":
                            this.el_ctrl[el]    =  args[i];
                            break;
                        case "memb":
                            this.el_memb[el]    =  args[i];
                            break;  
                        case "pos":
                            this.el_pos[el]     =  args[i];
                            break;
                        case "click":
                            this.el_click[el]   =  args[i];
                            break;                                                         
                    }            
                }
                  
                // use default values if not set by given params  
                //           
                if (!this.el_type[el])  this.el_type[el]    =  this.def_type;         
                if (!this.el_memb[el])  this.el_memb[el]    =  this.def_memb;
                if (!this.el_pos[el])   this.el_pos[el]     =  this.def_pos;                                        
                if (!this.el_func[el])  this.el_func[el]    =  false;   
                if (!this.el_parm[el])  this.el_parm[el]    =  false;  
                if (!this.el_ctrl[el])  this.el_ctrl[el]    =  false;   
                if (!this.el_click[el]) this.el_click[el]   =  false; 
                if (speed) {
                    this.el_speed[el]   =  speed;
                } else {
                    this.el_speed[el]   =  this.def_speed;                
                }
                
                // set counter if not initialized yet
                //
                if (!this.el_cnt[el]) {
                    this.el_cnt[el] =  0;
                }
                
                // set runner if not initialized yet
                //                
                if (!this.el_run[el]) {
                    this.el_run[el] =  false;
                }                
                
                // initialize member group if not done yet
                //
                if (!this.store_open[this.el_memb[el]]) {
                    this.store_open[this.el_memb[el]] =  [];
                }          
                
                // ok, this object is already known 
                //
                if (this.el_obj[el]) {

                    // if a new speed was given call reset_size again 
                    // then start animation
                    // 
                    if (speed) this.el_obj[el].reset_size (el);
                    this.el_obj[el].slide_ctrl (el);                    
                    
                } else {
                    
                    // create a new object because it is not known yet
                    //
                    this.el_obj[el]  =  new slide (el);
					
                }                
                
            } catch (e) {
                //alert(e)
            }         
        }    
    }
    
    // create slide object 
    //
    function slide (el) {          
    
        this.create_container (el);
        this.reset_size (el);        
        this.slide_ctrl (el);         
    }
    
    // init-animate method 
    //
    slide.prototype.slide_ctrl = function (el) {

        var mb =  _xl.el_memb[el];
        var ln =  _xl.store_open[mb].length;
        var ls =  (typeof _xl.store_open[mb][ln -1] != "undefined")? _xl.store_open[mb][ln -1] : false;

        if (ln && ls != el) {

            switch (_xl.el_ctrl[el]) { 
            
                case "p":
                    
                    // parallel animation 
                    //                                       
                    this.slide_init(ls,'c');
                    this.slide_init(el,'o');
                    break;
                    
                case "b": 
                    
                    // open all
                    //
                    this.slide_init(el,'o');
                    break;                                                          
            
                default:    
                
                    // close open element first 
                    // 
                    var next_el     =  el;
                    el              =  ls;
                    
                    _xl.el_func[el] =  _xl.slide
                    _xl.el_parm[el] =  next_el;                    

                    this.slide_init(el,'c');
            } 
              
        } else if (ln && ls == el) {

            this.slide_init(el,'c');
            
        } else {

            this.slide_init(el,'o');
        }   
    }
    
    slide.prototype.slide_init = function (el, direction) {
    
        var mb =  _xl.el_memb[el];
        var ln =  _xl.store_open[mb].length;    
    
        clearInterval(_xl.el_run[el]);        
        $(el).style.top         =  "0px";
        $(el).style.left        =  "0px";
        $(el).style.visibility  =  "visible";    
    
        if (direction == "c") {                    
            _xl.store_open[mb].pop();
            _xl.el_run[el] =  window.setInterval(this.slide_close.bind(this, el), 10);            
        } else {
            _xl.store_open[mb][ln] =  el;
            _xl.el_run[el] =  window.setInterval(this.slide_open.bind(this, el), 10);        
        } 
    }     
    
    
    slide.prototype.slide_open = function (el) {
    
        //clearInterval(_xl.el_run[el]); alert(_xl.el_cnt[el] + " open " + el)

        this.slide_set_size (el);    
        
        if (_xl.el_cnt[el] < _xl.el_y[el].length -1) {
            _xl.el_cnt[el] ++;
        } else {
            clearInterval(_xl.el_run[el]);
            _xl.el_run[el]  =  null;  
            
            this.call_next_func (el); 
        }
    }
    
    
    slide.prototype.slide_close = function (el) {   
    
        //clearInterval(_xl.el_run[el]); alert(_xl.el_cnt[el] + " close " + el)

        this.slide_set_size (el);

        if (_xl.el_cnt[el] > 0) {
            _xl.el_cnt[el] --;
        } else {
            clearInterval(_xl.el_run[el]);
            _xl.el_run[el]          =  null; 
            $(el).style.visibility  =  "hidden";
            
            this.call_next_func (el); 
        }
    }
    
    
    slide.prototype.slide_set_size = function (el) {
     
        switch (_xl.el_type[el]) {
        
            case "b0":
                _xl.el_store[el].style.width    =  _xl.el_wd[el] + "px";
                _xl.el_store[el].style.height   =  _xl.el_y[el][_xl.el_cnt[el]] + "px";                
                $(el).style.top                 =  (_xl.el_y[el][_xl.el_cnt[el]] -_xl.el_ht[el]) + "px";  
                break;   
                
            case "br": 
                _xl.el_store[el].style.width        =  _xl.el_wd[el] + "px";
                _xl.el_store[el].style.height       =  _xl.el_y[el][_xl.el_cnt[el]] + "px";               
                $(el).style.top                     =  (_xl.el_y[el][_xl.el_cnt[el]] -_xl.el_ht[el]) + "px";
                $(el).style.left                    =  (_xl.el_x[el][_xl.el_cnt[el]] -_xl.el_wd[el]) + "px"; 
                break;
                
            case "bl": 
                _xl.el_store[el].style.width        =  _xl.el_wd[el] + "px";
                _xl.el_store[el].style.marginLeft   =  (_xl.el_x[el][_xl.el_cnt[el]] -_xl.el_wd[el]) + "px";
                                
                _xl.el_store[el].style.height       =  _xl.el_y[el][_xl.el_cnt[el]] + "px";               
                $(el).style.top                     =  (_xl.el_y[el][_xl.el_cnt[el]] -_xl.el_ht[el]) + "px";
                $(el).style.left                    =  (_xl.el_wd[el] -_xl.el_x[el][_xl.el_cnt[el]]) + "px"; 
                break;
                
            case "0r": 
                _xl.el_store[el].style.width        =  _xl.el_x[el][_xl.el_cnt[el]] + "px";
                _xl.el_store[el].style.height       =  _xl.el_ht[el] + "px";               
                $(el).style.top                     =  "0px";
                $(el).style.left                    =  (_xl.el_x[el][_xl.el_cnt[el]] -_xl.el_wd[el]) + "px";
                break;               
                
            case "0l": 
                _xl.el_store[el].style.width        =  _xl.el_wd[el] + "px";
                _xl.el_store[el].style.marginLeft   =  (_xl.el_x[el][_xl.el_cnt[el]] -_xl.el_wd[el]) + "px"; 
                
                _xl.el_store[el].style.height       =  _xl.el_ht[el] + "px";                               
                $(el).style.top                     =  "0px";
                $(el).style.left                    =  (_xl.el_wd[el] -_xl.el_x[el][_xl.el_cnt[el]]) + "px"; 
                break;                                                              
        } 
    }  
    
    
    slide.prototype.call_next_func = function (el) {  
    
        if (!_xl.el_func[el]) return;
        
        _xl.el_func[el].call(_xl, _xl.el_parm[el]); 
        _xl.el_func[el] =  false;
        
    }  
    
    slide.prototype.create_container = function (el) {
        
        var container, clone; 
        var parent                  =  $(el).parentNode;
         
        container                   =  document.createElement("div")
        container.style.width       =  "0px";
        container.style.height      =  "0px";
        container.style.padding     =  "0px";
        container.style.margin      =  "0px";        
        container.style.overflow    =  "hidden";
        container.style.position    =  _xl.el_pos[el];
        container.style.visibility  =  "visible";  
        container.className         =  "slide-container"; 
        //container.style.border      =  "1px solid red";
              
        clone                       =  $(el).cloneNode(true);     
           
        // set some default styles for clone
        //
        clone.id                    =  el;
        clone.func                  =  _xl.el_func[el];
        clone.style.position        =  "absolute";
        clone.style.visibility      =  "hidden";
        clone.style.display         =  "block";
        if (_xl.el_click[el]) {
            clone.onclick =  function () {_xl.slide(el,{func:this.func,parm:this.id})}
        }
                   
        container.appendChild (clone);        
        parent.replaceChild (container, $(el));       

        _xl.el_store[el]            =  container; 
    }
    
    slide.prototype.reset_size = function (el) {  

        _xl.el_x[el]    =  [];
        _xl.el_y[el]    =  [];
        
        _xl.el_x[el][0] =  0; 
        _xl.el_y[el][0] =  0;         
        
        var curr_x      =  0;
        var curr_y      =  0;   
        var cnt         =  0;     
        var dist_x, dist_y, dist;    
    
        _xl.el_ht[el] =  parseInt($(el).offsetHeight);
        _xl.el_wd[el] =  parseInt($(el).offsetWidth);
        
        // create positions
        // phytagoras gives us the distance
        // count out x andy y position depending on speed
        //
        do {        
            dist_x  =  _xl.el_wd[el] - curr_x;
            dist_y  =  _xl.el_ht[el] - curr_y;        
            dist    =  Math.sqrt(dist_x *dist_x + dist_y *dist_y);
            
            if (Math.abs(dist) < _xl.el_speed[el]) {
            
                curr_x  =  parseInt(_xl.el_wd[el]);
                curr_y  =  parseInt(_xl.el_ht[el]);    
                dist    =  0;         
            } else {
                
                curr_x  =  curr_x + (dist_x/dist) *_xl.el_speed[el];
                curr_y  =  curr_y + (dist_y/dist) *_xl.el_speed[el];           
            }
            
            cnt ++;
            _xl.el_x[el][cnt] =  curr_x; 
            _xl.el_y[el][cnt] =  curr_y;               

        } while (dist && cnt < 500);   
        
        _xl.el_x[el][cnt +1] =  curr_x; 
        _xl.el_y[el][cnt +1] =  curr_y;          
    }
    
