var my_galerie=new object_galerie();


function object_galerie(){

    //private variable
    //titel der galerie
    var galerie_titel=null;
    //id der galerie
    var galerie_idx=null;
    //alle elemente der galerie
    var galerie_elemente=new Array();
    //aktuelles galerie element
    var current_element=null;
    //letztes element vor aktuellem element
    var last_element=null;
    //naechstes element nach aktuellem galerie element
    var next_element=null;
    //minimales galerie element
    var min_element=null;
    //maximales galerie element
    var max_element=null;
    //schon angezeigte bilder
    var img_array=new Array();
    // element welches css wechseln soll
    var change_element=null;
    //old_image
    var old_img=null;
    //new_image
    var new_img=null;
    //transaprenz der imagebox
    var opacity=100;
    //public variable
    // intervall-variable
    this.css_interval=null;
    
    //public methods
    this.init=function(my_value){
        galerie_idx=my_value;
        //get_galerie();
    }
    
    this.init_galerie=function(my_value){
        galerie_titel=null;
        //id der galerie
        galerie_idx=null;
        //alle elemente der galerie
        galerie_elemente=new Array();
        //aktuelles galerie element
        current_element=null;
        //letztes element vor aktuellem element
        last_element=null;
        //naechstes element nach aktuellem galerie element
        next_element=null;
        //minimales galerie element
        min_element=null;
        //maximales galerie element
        max_element=null;
        //schon angezeigte bilder
        img_array=new Array();
        // element welches css wechseln soll
        change_element=null;
        //old_image
        old_img=null;
        //new_image
        new_img=null;
        
        //hier wird der string ausgewertet und in vars teleportiert
        eval(my_value);
        
        
        set_current_element();
        set_min_element();
        set_max_element();
        set_nachbar_element();
        create_navigation();
        create_element_view();
    }
    
    this.destroy=function(){
       window.my_galerie=null;
    }
    this.status=function(){
       return last_element.id+"/"+current_element+"/"+next_element.id;
    }
    this.go=function(my_value){
        if(my_value!=0){
            for(var z=0;z<galerie_elemente.length;z++) {
                if(galerie_elemente[z].id==my_value){
                    current_element=galerie_elemente[z];
                    break;
                }
            }
            set_nachbar_element();
            update_navigation();
            update_element_view();
        }
    }
    function create_navigation(){
        var my_left_div=document.createElement("div");
        var my_right_div=document.createElement("div");
        var my_a_left=document.createElement("a");
        var my_a_right=document.createElement("a");

        var last_id=set_img_id("last");
        var next_id=set_img_id("next");
        
        my_a_left.innerHTML="<img src='img/pfeil_left.gif' alt='vor'/>";
        my_a_left.id="go_last";
        my_a_left.href="javascript:my_galerie.go("+last_id+")";

        my_left_div.className="last_img";
        my_left_div.appendChild(my_a_left);
        
        my_a_right.innerHTML="<img src='img/pfeil_right.gif' alt='zur&uuml;ckr'/>";
        my_a_right.id="go_next";
        my_a_right.href="javascript:my_galerie.go("+next_id+")";

        my_right_div.className="next_img";
        my_right_div.appendChild(my_a_right);

        var my_div=document.createElement("div");
        my_div.id="galerie_navigationsbox";

        for(var i=0;i<galerie_elemente.length;i++){

            var my_thumbbox=document.createElement("div");
            my_thumbbox.className="vorschaubox";

            var my_aref=document.createElement("a");

            var my_thumb=new Image;
            my_thumb.src=galerie_elemente[i].thumb_src;
            if(current_element==galerie_elemente[i]){
                my_thumb.className="vorschaubild_aktiv";
                my_aref.href="javascript:my_galerie.go("+galerie_elemente[i].id+")";
            }
            else{
                my_thumb.className="vorschaubild_inaktiv";
                my_aref.href="javascript:my_galerie.go("+galerie_elemente[i].id+")";
            }
            my_aref.appendChild(my_thumb);
            my_thumbbox.appendChild(my_aref);

            my_div.appendChild(my_thumbbox);
        }

        var my_box=document.createElement('div');
        my_box.id='galerie_ansicht';
        my_box.innerHTML="";
        my_box.appendChild(my_div);
        my_box.appendChild(my_left_div);
        my_box.appendChild(my_right_div);
        
        var my_div_galerieelement=document.createElement("div");
        my_div_galerieelement.id="infobox_galerie";
        
        var my_h1=document.createElement("h1");
        my_h1.innerHTML=galerie_titel;
        
        my_div_galerieelement.appendChild(my_h1);

        my_box.appendChild(my_div_galerieelement);
        
        window.target_galeriebox.appendChild(my_box);
        
    }
    function update_navigation(){
        var last_id=set_img_id("last");
        var next_id=set_img_id("next");
        document.getElementById('go_last').href="javascript:my_galerie.go("+last_id+")";
        document.getElementById('go_next').href="javascript:my_galerie.go("+next_id+")";
    }

    function set_img_id(my_value){
        var id=0;
        if(my_value=="last"){
            if(last_element){
                id=last_element.id;
            }
            return id;
        }
        if(my_value=="next"){
            if(next_element){
                id=next_element.id;
            }
            return id;
        }
        return id;
    }
    
    function set_current_element(my_value){
        if(!my_value){
            current_element=galerie_elemente[0];
        }
        else{
            current_element=galerie_elemente[my_value];
        }
    }
    function set_min_element(){
        min_element=galerie_elemente[0];
    }
    function set_max_element(){
        max=galerie_elemente.length-1;
        max_element=galerie_elemente[max];
    }
    function set_nachbar_element(){
        clearInterval(this.css_interval);
        var anzahl=galerie_elemente.length;
        
        for(var z=0;z<galerie_elemente.length;z++){
            if(galerie_elemente[z]==current_element){
                var pointer=z;
                break;
            }
        }
        
        for(var z=0;z<document.getElementsByTagName("img").length;z++){

            var element=document.getElementsByTagName("img")[z];
              
            if(element.className=="vorschaubild_inaktiv" || element.className=="vorschaubild_aktiv"){
                 
                var my_location="http://"+parent.location.hostname+"/"; 
                
                var new_str=element.src.replace(my_location, "");

                if(new_str==current_element.thumb_src){
                    element.className="vorschaubild_aktiv";
                }
                else{
                    element.className="vorschaubild_inaktiv";
                }
            }
        }
        
        if((current_element!=min_element) && (current_element!=max_element)){
            last_element=galerie_elemente[pointer-1];
            next_element=galerie_elemente[pointer+1];;
        }
        else{
            if(current_element==min_element){
                if(anzahl>2){
                    last_element=null;
                    next_element=galerie_elemente[pointer+1];
                }
                else{
                    last_element=null;
                    next_element=null;
                }
            }
            else if(current_element==max_element){
                if(anzahl>2){
                    last_element=galerie_elemente[pointer-1];
                    next_element=null;
                }
                else{
                    last_element=null;
                    next_element=null;
                }
            }
        }
    }
    
    function create_element_view(){

        var my_div_bildbox=document.createElement("div");
        var my_short_text=document.createElement("p");
        var my_long_text=document.createElement("p");
        var my_img_box=document.createElement("div");
        var my_current_image=new Image();


        my_div_bildbox.id="bildbox";
        my_short_text.className="short_text";
        my_short_text.id="bildbox_shorttext";
        my_img_box.id="img_box";
        my_long_text.className="long_text";
        my_long_text.id="bildbox_longtext";

        my_short_text.innerHTML=current_element.shorttext;
        
        my_current_image.src=current_element.img_src;
        my_current_image.alt=current_element.shorttext;

        my_long_text.innerHTML=current_element.longtext;

        my_div_bildbox.appendChild(my_short_text);
        my_img_box.appendChild(my_current_image);
        my_div_bildbox.appendChild(my_img_box);
        my_div_bildbox.appendChild(my_long_text);
        
        document.getElementById('infobox_galerie').appendChild(my_div_bildbox);
        
    }
    
    function update_element_view(){

        var element=document.getElementById('img_box');
        old_img=element.firstChild;

        new_img=new Image();
        new_img.src=current_element.img_src;

        if(img_array.length==0){
            img_array.push(old_img);
        }
        else{
            for(var z=0;z<img_array.length;z++){
                if(img_array[z].src==old_img.src){
                    var control=true;
                    break;
                }
            }
            if(!control){
                img_array.push(old_img);
            }
        }
        if (document.all) { // IE
            new_img.style.filter='alpha(opacity=0)';
        }
        else {
            new_img.style.opacity='0';
        }
        document.getElementById('bildbox_shorttext').innerHTML=current_element.shorttext;

        css_interval = setInterval("my_galerie.change_css()", 25);

        document.getElementById('bildbox_longtext').innerHTML=current_element.longtext;
    }
    
    this.change_css=function(){
        opacity=opacity-5;
        if (document.all) { // IE
            var func="document.getElementById('img_box').firstChild.style.filter='alpha(opacity="+opacity+")'";
        }
        else {
            var func="document.getElementById('img_box').firstChild.style.opacity='"+(opacity/100)+"'";
        }
        eval(func);
        if(opacity<=0){
            clearInterval(css_interval);
            document.getElementById('img_box').removeChild(document.getElementById('img_box').firstChild);
            document.getElementById('img_box').appendChild(new_img);
            css_interval = setInterval("my_galerie.change_css1()", 25);
        }
    }
    this.change_css1=function(){
        opacity=opacity+5;
        if (document.all) { // IE
            var func="document.getElementById('img_box').firstChild.style.filter='alpha(opacity="+opacity+")'";
        }
        else {
            var func="document.getElementById('img_box').firstChild.style.opacity='"+(opacity/100)+"'";
        }
        eval(func);
        if(opacity>=100){
            clearInterval(css_interval);
        }
    }
}