//Objekt
function em_gallery(id,xml,imgid){
    this.id = id;
    this.xml = xml;
    this.xmldoc = null;
    this.image = null;
    this.image_free = new Array();
    this.image_count = 5;
    this.image_start = 2;
    this.image_pos = 0;
    this.image_slots = new Array();
    this.cur_image_id = 0;
    this.image_path = "";
    this.imagePathReduced = "";
    this.image_host = "";
    this.client = "";
    this.aktiv = "";
    this.offset = 0;

    this.captcha = "";

    this.gallery = null;
    this.gallery_free = new Array();
    this.gallery_count = 6;
    this.gallery_pos = 0;
    this.gallery_id = 0;

    this.highlightcolor = "";

    this.google_path = '';

    this.vote_enabled = 0;

    this.metameta = null;
    this.control_src = "_em_cms/_scripte/control.php?";

    this.shown = 0;
    this.direction = "forwards";

    this.ads = null;
    this.http_request = null;
    this.steps = 1;

    if (imgid) {
      this.cur_image_id = imgid;
    }
}

//Request an den Server richten, um XML-Objekt geliefert zu bekommen
em_gallery.prototype._request = function(action)
{
    var self = this;
    //XMLHttpRequest-Objekt erzeugen
    if (window.XMLHttpRequest){ // Mozilla, Safari,...
        this.http_request = new XMLHttpRequest();
        if (this.http_request.overrideMimeType) {
            this.http_request.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) { // IE
        try {
            this.http_request = new ActiveXObject("Msxml2.DOMDocument");
        } catch(e) {
            try {
                this.http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch(e) {
                try {
                    this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch(e) {
                }
            }
        }
    }

    /*@cc_on @if (@_win32 && @_jscript_version >= 5) if (!window.XMLHttpRequest)
    this.http_request = new ActiveXObject("Microsoft.XMLHTTP");
    @end @*/

    //Wenn kein Objekt vorhanden brich ab
    if(!this.http_request){
        alert("Ende: Kann keine XMLHTTP-Instanz erzeugen");
        return false;
    }

    //Aufruf der gewueschten Funktion, wenn bereit
    if (action == "init") {
        this.http_request.onreadystatechange = function()
        {
            self._initialize();
        }
    } else if (action == "next"
    || action == "back"
    ) {
        this.http_request.onreadystatechange = function()
        {
            self._blaetter(action);
        }
    } else {
        return false;
    }

    //XML-Datei oeffnen
    if (this.xml != "not defined") {
        this.http_request.open("GET",this.xml,true);

        //Request senden
        this.http_request.send(null);
    }
}

//Meta-Daten
em_gallery.prototype._config = function()
{
    var meta = new Object();
    var meta_obj = this.xmldoc.getElementsByTagName("meta");
    if (meta_obj[0]) {
        var i = 0;
        for (var j = 0; j <= meta_obj[i].childNodes.length; j++) {
            if (meta_obj[i].childNodes[j]) {
                for (var k = 0; k <= meta_obj[i].childNodes[j].childNodes.length; k++) {
                    if (meta_obj[i].childNodes[j].childNodes[k]
                    && (meta_obj[i].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/, "")) != ""
                    ) {
                        meta[meta_obj[i].childNodes[j].nodeName] = meta_obj[i].childNodes[j].childNodes[k].nodeValue;
                    }
                }
            }
        }
    }

    if (meta["hintergrund"]
    && document.getElementById("gallery_header")
    ) {
        document.getElementById("gallery_header").style.backgroundImage = "url(" + meta["hintergrund"] + ")";
    }

    if (meta["title"]
    && document.getElementById("gallery_title")
    ){
        document.getElementById("gallery_title").innerHTML = '<table width="200" height="60" border="0" cellpadding="0" cellspacing="0"><tr><td><div id="title_sizer" style="width:200px; height:60px; overflow:scroll;">' + meta["title"] + "</div></td></tr></table>";
        document.getElementById("title_sizer").style.fontSize = 32 + "pt";
        if (document.getElementById("title_sizer")){
            while (document.getElementById("title_sizer").scrollHeight > 60
            ||  document.getElementById("title_sizer").scrollWidth > 200
            ) {
                var fsize = document.getElementById("title_sizer").style.fontSize;
                fsize.replace(/pt/,"");
                document.getElementById("title_sizer").style.fontSize = (parseFloat(fsize)-0.5) + "pt";
            }
        }
        document.getElementById("title_sizer").style.overflow = "hidden";
        document.getElementById("title_sizer").style.height = "auto";
    }

    if (meta["category"]) {
        if(!em_obj_category_bar.xml){
            em_obj_category_bar.xml = meta["category"];
        }
    }
    if (meta["client"]) {
        this.client = meta["client"];
    }
    if (meta["id"]) {
        this.gallery_id = meta["id"];
    }
    if (meta["path_google"]) {
        this.google_path = meta["path_google"];
    }


    // Farben
    var color = new Object();
    var color_obj = this.xmldoc.getElementsByTagName("colors");
    if (color_obj[0]) {
        var i = 0;
        for (var j = 0; j <= color_obj[i].childNodes.length; j++) {
            if (color_obj[i].childNodes[j]) {
                for (var k = 0; k <= color_obj[i].childNodes[j].childNodes.length; k++) {
                    if (color_obj[i].childNodes[j].childNodes[k]
                    && (color_obj[i].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/, "")) != ""
                    ) {
                        color[color_obj[i].childNodes[j].nodeName] = color_obj[i].childNodes[j].childNodes[k].nodeValue;
                    }
                }
            }
        }
    }

    if (color["title"]) {
        if (document.getElementById("gallery_title")) {
            document.getElementById("gallery_title").style.color = "#" + color["title"];
        }
    } else {
        if (document.getElementById("gallery_title")) {
            document.getElementById("gallery_title").style.color = "#FF0000";
        }
    }

    if (color["element"]) {
        this.highlightcolor = "#" + color["element"];

        if (document.getElementById("gallery_head_back_loc")) {
            document.getElementById("gallery_head_back_loc").style.backgroundColor = "#" + color["element"];
        }
        if (document.getElementById("gallery_head_next")) {
            document.getElementById("gallery_head_next").style.backgroundColor = "#" + color["element"];
        }
        if (document.getElementById("gallery_teaser_next_loc")) {
            document.getElementById("gallery_teaser_next_loc").style.backgroundColor = "#" + color["element"];
        }
        if (document.getElementById("gallery_teaser_back_loc")) {
            document.getElementById("gallery_teaser_back_loc").style.backgroundColor = "#" + color["element"];
        }
        if (document.getElementById("gallery_stage_back_img")) {
            document.getElementById("gallery_stage_back_img").style.backgroundColor = "#" + color["element"];
        }
        if (document.getElementById("gallery_stage_next_img")) {
            document.getElementById("gallery_stage_next_img").style.backgroundColor = "#" + color["element"];
        }
    } else {
        this.highlightcolor = '#00943F';

        if (document.getElementById("gallery_head_back_loc")) {
            document.getElementById("gallery_head_back_loc").style.backgroundColor = '#00943F';
        }
        if (document.getElementById("gallery_head_next")) {
            document.getElementById("gallery_head_next").style.backgroundColor = '#00943F';
        }
        if (document.getElementById("gallery_teaser_next_loc")) {
            document.getElementById("gallery_teaser_next_loc").style.backgroundColor = '#00943F';
        }
        if (document.getElementById("gallery_teaser_back_loc")) {
            document.getElementById("gallery_teaser_back_loc").style.backgroundColor = '#00943F';
        }
        if (document.getElementById("gallery_stage_back_img")) {
            document.getElementById("gallery_stage_back_img").style.backgroundColor = '#00943F';
        }
        if (document.getElementById("gallery_stage_next_img")) {
            document.getElementById("gallery_stage_next_img").style.backgroundColor = '#00943F';
        }
    }
}

//Initialisierung
em_gallery.prototype._initialize = function()
{
    if (this.http_request.readyState == 4) {
        if (this.http_request.status == 200) {
            if (document.implementation
            && document.implementation.createDocument
            ) {
                this.xmldoc = this.http_request.responseXML;
            } else if (window.ActiveXObject) {
                if (navigator.appVersion.match(/MSIE [0-6]\.\d/ )) {
/*
                    var testandoAppend = document.createElement('xml');
                    testandoAppend.setAttribute('innerHTML',this.http_request.responseText);
                    testandoAppend.setAttribute('id','_formjAjaxRetornoXML');
                    document.body.appendChild(testandoAppend);
                    document.getElementById('_formjAjaxRetornoXML').innerHTML = this.http_request.responseText;
                    this.xmldoc = document.getElementById('_formjAjaxRetornoXML');
*/
                    this.xmldoc = new ActiveXObject("Microsoft.XMLDOM");
                    this.xmldoc.async = "false";
                    this.xmldoc.loadXML(this.http_request.responseText);
                } else {
                    this.xmldoc = this.http_request.responseXML;
                }
            }
            this._config();

            // clear slots
            for (var i = 0; i <= this.image_count; i++) {
                var next = i + 1;
                var mItem = document.getElementById('gallery_head' + '_' + next);
                if (mItem
                && this.get_id(mItem)
                ) {
                    id = this.get_id(mItem);
                    if (id.match(/item/)) {
                        for (var i = mItem.childNodes.length; i >= 0; i--) {
                            cItem = mItem.childNodes[i];
                            if (cItem) {
                                mItem.removeChild(cItem);
                            }
                        }
                    }
                }
            } // for

            // Elemente laden
            this.image = this.xmldoc.getElementsByTagName("image");
            this.gallery = this.xmldoc.getElementsByTagName("teaser");
            this.ads = this.xmldoc.getElementsByTagName("advert");
            this.meta = this.xmldoc.getElementsByTagName("meta");

            // Gesamtzahl ausgeben
            if (document.getElementById("image_num_total")) {
                document.getElementById("image_num_total").innerHTML = this.image.length;
            }

            //Pruefe ob Vorschau-Templates belegt
            for (var i = 0; i <= this.image_count; i++) {
                var next = i + 1;
                var mItem = document.getElementById("gallery_head_"+ next);
                if (mItem) {
                    id = this.get_id(mItem);
                    if (id == ""
                    || id.match(/item/)
                    ) {
                        this.image_free.push(i);
                    } else {
                        this.count--;
                    }
                }
            }

            //Image-Slots initialisieren
            for(var i = 0; i < this.image_count; i++) {
                this.image_slots[i] = 0;
            }

            // Pruefe Anzahl vorhandene Bilder
//            if( this.image.length > 0
//            && this.image_count > this.image.length
//            ){
//                this.image_count = this.image.length;
//            }

            //Pruefe Anzahl vorhandene Galerien
            if( this.gallery.length > 0
            && this.gallery_count >= this.gallery.length
            ){
                this.gallery_count = this.gallery.length;
            }

            // Erstes Bild laden
            if (this.cur_image_id) {
                this.image_pos = this._id2imgpos(this.cur_image_id);
            }

            // Vorschau-Navigation
            if (this.image.length > 0) {
                for (var i = 0; i <= this.image_count; i++) {
                    this._item(this.image_pos, i, "image");
                }
                //if (this.image.length >= this.image_count) {
//                    strNext = (this.image_pos + this.image_start <= this.image.length) ? "inline" : "none";
//                    if (document.getElementById("gallery_head_next")) {
//                        document.getElementById("gallery_head_next").style.display = strNext;
//                    }
//                    if (document.getElementById("gallery_stage_next")) {
//                        document.getElementById("gallery_stage_next").style.display = strNext;
//                    }
//                    strBack = (this.image_pos - this.image_start > 0) ? "inline" : "none";
//                    if (document.getElementById("gallery_head_back")) {
//                        document.getElementById("gallery_head_back").style.display = strBack;
//                    }
//                    if (document.getElementById("gallery_stage_back")) {
//                        document.getElementById("gallery_stage_back").style.display = strBack;
//                    }
                document.getElementById("gallery_head_next").style.display = "inline";
                document.getElementById("gallery_stage_next").style.display = "inline";
                document.getElementById("gallery_head_back").style.display = "inline";
                document.getElementById("gallery_stage_back").style.display = "inline";
                //}
            }

            //Zugriff auf Galerie hochzaehlen
            this._control("hit_gallery");

            this._show(this.image_pos);

            // Voting aktivieren
            this._proof_voting();
            this._set_vote(this.vote_enabled);

            // Aktuelle Galerie-ID merken
            if (document.getElementById("em_gal_val")) {
                document.getElementById("em_gal_val").value = this.gallery_id;
            }
        }
    }
}

//Das eigentliche umblaettern, Daten aus dem XML-Objekt ziehen
em_gallery.prototype._blaetter = function(richtung)
{
    if (this.http_request.readyState == 4) {
        if (this.http_request.status == 200) {
            this.xmldoc = this.http_request.responseXML;
            this._config();

            // clear slots
            for (var i = 0; i <= this.image_count; i++) {
                var next = i + 1;
                var mItem = document.getElementById('gallery_head' + '_' + next);
                if (mItem
                && this.get_id(mItem)
                ) {
                    id = this.get_id(mItem);
                    if (id.match(/item/)) {
                        for (var i = mItem.childNodes.length; i >= 0; i--) {
                            cItem = mItem.childNodes[i];
                            if (cItem) {
                                mItem.removeChild(cItem);
                            }
                        }
                    }
                }
            } // for

            if (richtung == 'back') {
                this.direction = 'back';
                this.image_pos-= this.steps;
                if (this.image_pos < 0) {
                    this.image_pos = this.image.length - 1;
                }
            } else if (richtung == 'next') {
                this.direction = 'forwards';
                this.image_pos+= this.steps;
                if (this.image_pos > this.image.length - 1) {
                    this.image_pos = 0;
                }
            } else if (richtung >= 0) {
                this.direction = this.image_pos < richtung ? 'forwards' : 'back';
                this.image_pos = richtung;
            }
            this.image = this.xmldoc.getElementsByTagName('image');
            for (var i = 0; i <= this.image_count; i++) {
                this._item(this.image_pos, i);
            }
            this._show(this.image_pos);

            // 20081120 TL & SK auskkommentiert nach Anruf Schenk [ZGT]
            // Blaettern nach Links bei Bildanzahl < 5 nicht moeglich

            //if (this.image.length >= this.image_count) {

// buettner - 20080707 blaettern soll automatisch wieder von vorn beginnen
//                strNext = (this.image_pos + this.image_start <= this.image.length) ? "inline" : "none";
//                if (document.getElementById("gallery_head_next")) {
//                    document.getElementById("gallery_head_next").style.display = strNext;
//                }
//                if (document.getElementById("gallery_stage_next")) {
//                    document.getElementById("gallery_stage_next").style.display = strNext;
//                }
//                strBack = (this.image_pos > 0) ? "inline" : "none";
//                if (document.getElementById("gallery_head_back")) {
//                    document.getElementById("gallery_head_back").style.display = strBack;
//                }
//                if (document.getElementById("gallery_stage_back")) {
//                    document.getElementById("gallery_stage_back").style.display = strBack;
//                }
            document.getElementById("gallery_head_next").style.display = "inline";
            document.getElementById("gallery_stage_next").style.display = "inline";
            document.getElementById("gallery_head_back").style.display = "inline";
            document.getElementById("gallery_stage_back").style.display = "inline";

            //} // TL & SK
        }
    }
}

em_gallery.prototype.get_id = function(o)
{
    var id = 0;
    for (var j = 0; j <= o.childNodes.length; j++) {
        if (o.childNodes[j]
        && o.childNodes[j].id
        ) {
            return o.childNodes[j].id;
        } else if (o.childNodes[j]) {
            for (var k = 0; k <= o.childNodes[j].childNodes.length; k++) {
                if (o.childNodes[j].childNodes[k]
                && o.childNodes[j].childNodes[k].id
                ) {
                    return o.childNodes[j].childNodes[k].id;
                }
            }
        }
    }
    return '';
}

em_gallery.prototype._item = function(n, i)
{
    var self = this;
    if (i <= this.image_count
    && typeof this.image_free[i] != 'undefined'
    ) {
        var c = n + i - this.image_start;
        //Position fixen
        if (c >= this.image.length) {
            //c = c - this.image.length;
        } else if (c < 0) {
            //c = c + this.image.length;
        }
        if (c >= 0 && this.image[c]) {
            var item = new Object();
            for (var j = 0; j <= this.image[c].childNodes.length; j++) {
                if (this.image[c].childNodes[j]) {
                    for (var k = 0; k <= this.image[c].childNodes[j].childNodes.length; k++) {
                        if (this.image[c].childNodes[j].childNodes[k]
                        && (this.image[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/, '')) != ''
                        ) {
                            item[this.image[c].childNodes[j].nodeName] = this.image[c].childNodes[j].childNodes[k].nodeValue;
                        }
                    }
                }
            }
            if (item['path_original']
            &&  item['path_teaser']
            ) {
                var next = parseInt(this.image_free[i]) + 1;
                var mItem = document.getElementById('gallery_head_' + next);
                if (mItem) {
                    var cItem = document.createElement('div');
                    cItem.id = 'item_' + c;
                    cItem.style.height = '85px';
                    if (item["id"] == this.cur_image_id) {
                        //cItem.style.border = '1px solid lightgreen';
                        if (this.highlightcolor) {
                            cItem.style.backgroundColor = this.highlightcolor;
                        } else {
                            cItem.style.backgroundColor = '#00943F';
                        }
                    }

                    if (item['path_teaser']) {
                        var text = '';
                        if(item['text']) {
                            text = item['text'];
                            if(text.length > 60) {
                                text = text.substr(0,57);
                                text += "...";
                            }
                        }

                        cItem.innerHTML = '<img style="cursor:pointer;" src="' + item['path_teaser'] + '" border="0" alt="' + text + '" title="' + text + '" />';
                        cItem.onclick = function () { self._blaetter(c); }
                        cItem.style.cursor = 'pointer';
                        cItem.title = text;
                    }

                    this.image_slots[i] = this._id2imgpos(item['id']);

                    mItem.innerHTML = '';
                    mItem.appendChild(cItem);
                    mItem.style.display = 'inline';
                }
            }
        }
   }
}

em_gallery.prototype._zoom = function(what, text, bolAd)
{
    if (document.getElementById("gallery_zoom_stage")) {
        document.getElementById("gallery_zoom_stage").innerHTML = what;
    }

    if (document.getElementById("gallery_zoom_text")) {
        document.getElementById("gallery_zoom_text").innerHTML = text;
    }
    //google frame neu laden
    if (document.getElementById("googleframe")
    &&  this.google_path
    ){
        window.frames['googleframe'].window.location.href = this.google_path;
    }
}

em_gallery.prototype._proof_voting = function(){
  c = 0;
  if( this.meta[c]){
        var item = new Object();
        for(var j=0; j<=this.meta[c].childNodes.length; j++){
            if( this.meta[c].childNodes[j]){
                for(var k=0; k<=this.meta[c].childNodes[j].childNodes.length; k++){
                    if( this.meta[c].childNodes[j].childNodes[k]
                    && (this.meta[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/,"")) != ""
                    ){
                        item[this.meta[c].childNodes[j].nodeName] = this.meta[c].childNodes[j].childNodes[k].nodeValue;
                    }
                }
            }
        }
        if(item["vote"] == "1"){
            this.vote_enabled = 1;
        }
  }
}

em_gallery.prototype._vote = function(){
  if(this.cur_image_id){
    if(document.getElementById("control_frame")){
      var new_string = this.control_src;
      var params = "typ=vote&mediaId=" + this.cur_image_id;
      document.getElementById("control_frame").src = new_string + params;
    }
  }
}

em_gallery.prototype._control = function(action, bolAd)
{
  if (typeof bolAd == 'undefined') {
        bolAd = false;
  }
  if(action == "hit_image"){
    if(document.getElementById("control_frame")){
      var new_string = this.control_src;
      var params = "typ=med&em_client=" + this.client + "&galleryId=" + this.gallery_id + "&mediaId=" + this.cur_image_id + "&isAd=" + (bolAd ? 1 : 0);
      document.getElementById("control_frame").src = new_string + params;
    }
    return;
  }

  if(action == "hit_gallery"){
    if(document.getElementById("control_frame")){
      var new_string = this.control_src;
      var params = "typ=gal&em_client=" + this.client + "&galleryId=" + this.gallery_id + "&isAd=" + (bolAd ? 1 : 0);
      document.getElementById("control_frame").src = new_string + params;
    }
    return;
  }

  if(action == "set_captcha"){
    if(document.getElementById("control_frame")){
      var new_string = this.control_src;
      var params = "typ=init_captcha";
      document.getElementById("control_frame").src = new_string + params;
    }
    return;
  }

  if(action == "send_mail"){
    var sender_name = "";
    var sender_email = "";
    var receiver_name = "";
    var receiver_email = "";
    var sender_text = "";

    if(document.getElementById("sender_name")){
      sender_name = document.getElementById("sender_name").value;
    }
    if(document.getElementById("sender_email")){
      sender_email = document.getElementById("sender_email").value;
    }
    if(document.getElementById("receiver_name")){
      receiver_name = document.getElementById("receiver_name").value;
    }
    if(document.getElementById("receiver_email")){
      receiver_email = document.getElementById("receiver_email").value;
    }
    if(document.getElementById("sender_text")){
      sender_text = document.getElementById("sender_text").value;
    }
    if(!sender_name || !sender_email || !receiver_name || !receiver_email){
      if(document.getElementById("send_mail_alert")){
        document.getElementById("send_mail_alert").style.color= "#f00";
        document.getElementById("send_mail_alert").style.fontWeight= "bold";
      }
      return;
    }else{
      if(document.getElementById("send_mail_alert")){
        document.getElementById("send_mail_alert").style.color= "#808080";
        document.getElementById("send_mail_alert").style.fontWeight= "normal";
      }
    }
    if(document.getElementById("control_frame")){
      var new_string = this.control_src;
      var params = "typ=mail&em_client=" + this.client + "&em_img=" + this.cur_image_id + "&em_gal=" + this.gallery_id + "&sn=" + sender_name + "&se=" + sender_email + "&rn=" + receiver_name + "&re=" + receiver_email + "&cc=" + this.captcha + "&text=" + sender_text;
      document.getElementById("control_frame").src = new_string + params;
    }
    return;
  }

  if(action == "cleanup_mail"){
    if(document.getElementById("function_overlay_mail")){
      document.getElementById("function_overlay_mail").style.visibility = "hidden";
    }
     if(document.getElementById("function_overlay_mail2")){
      document.getElementById("function_overlay_mail2").style.visibility = "hidden";
    }
    if(document.getElementById("sender_name")){
      document.getElementById("sender_name").value = "";
    }
    if(document.getElementById("sender_email")){
      document.getElementById("sender_email").value = "";
    }
    if(document.getElementById("receiver_name")){
      document.getElementById("receiver_name").value = "";
    }
    if(document.getElementById("receiver_email")){
      document.getElementById("receiver_email").value = "";
    }
    if(document.getElementById("sender_text")){
      document.getElementById("sender_text").value = "";
    }
    if(document.getElementById("send_mail_alert")){
      document.getElementById("send_mail_alert").innerHTML = "Die mit * gekennzeichneten Felder sind Pflichtfelder.";
      document.getElementById("send_mail_alert").style.color= "#808080";
      document.getElementById("send_mail_alert").style.fontWeight= "normal";
    }
    if(document.getElementById("send_mail_button")) {
          document.getElementById("send_mail_button").style.display = "block";
      }
      if(document.getElementById("close_mail_button")) {
          document.getElementById("close_mail_button").style.display = "none";
      }

    return;
  }

}

em_gallery.prototype._id2imgpos = function(id)
{
    if(!id){
        return this.image_pos;
    }

    for(var c=0; c<this.image.length; c++){
        if( this.image[c]){
            var item = new Object();
            for(var j=0; j<=this.image[c].childNodes.length; j++){
                if( this.image[c].childNodes[j]){
                    for(var k=0; k<=this.image[c].childNodes[j].childNodes.length; k++){
                        if( this.image[c].childNodes[j].childNodes[k]
                        && (this.image[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/,"")) != ""
                        ){
                            item[this.image[c].childNodes[j].nodeName] = this.image[c].childNodes[j].childNodes[k].nodeValue;
                        }
                    }
                }
            }

            if(item["id"] == id){
                return c;
            }
        }
    }
}

em_gallery.prototype._show = function(num)
{
    c = num;
    this.shown++;
    if (this.image[c]) {
        var item = new Object();
        for (var j = 0; j <= this.image[c].childNodes.length; j++) {
            if (this.image[c].childNodes[j]) {
                for (var k = 0; k <= this.image[c].childNodes[j].childNodes.length; k++) {
                    if (this.image[c].childNodes[j].childNodes[k]
                    && (this.image[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/, '')) != ''
                    ) {
                        item[this.image[c].childNodes[j].nodeName] = this.image[c].childNodes[j].childNodes[k].nodeValue;
                    }
                }
            }
        } // for

        var text = "";
        var fulltext = "";
        if(item['text']){
            text = item['text'];
            fulltext = item['text'];
            if(text.length > 60) {
                text = text.substr(0,57);
                text += "...";
            }
        }
        var zoom_image = '<img style="cursor:pointer;" id="zoomed_image" onclick="em_obj_gallery._blaetter(\'next\');"'
                       + ' src="' + item['path_original'] + '" border="0" alt="' + text + '"'
                       + ' title="' + text + '" />';
            zoom_image+= '<div style="position:absolute; top:172px; left:90px; z-index:2; background-color: transparent;";>'
                       + '<img src="./_em_daten/zgt/no.gif" style="cursor:pointer;" id="zoomed_image" onclick="em_obj_gallery._blaetter(\'next\');"'
                       + ' border="0" alt="' + text + '"'
                       + ' title="' + text + '" />'
                       + '</div>';
        this.cur_image_id = item['id'];
        this.image_pos = this._id2imgpos(item['id']);
        this.image_path = item['path_original'];

        this._zoom(zoom_image, fulltext);

        if (item['order'] == 1) {
            this._set_order(1);
        } else {
            this._set_order(0);
        }

        for (var a = 0; a < this.image.length; a++) {
            if (document.getElementById('item_' + a)) {
                //document.getElementById('item_' + a).style.border = '1px solid lightgreen';
                document.getElementById('item_' + a).style.backgroundColor = (a == c ? (this.highlightcolor ? this.highlightcolor : '#00943F') : '');
                document.getElementById('item_' + a).style.height = '85px';
            }
        } // for

        var intCurPos = this._id2imgpos(this.cur_image_id);
        var inside_slots = 0;
        for(var i=0; i<this.image_slots.length; i++) {
            if(this.image_slots[i] == intCurPos) {
                inside_slots = 1;
            }
        }
        //Blaettern wenn ausserhalb sichtbarer Slots
        if(!inside_slots) {
            var a = intCurPos - this.image_slots[this.image_slots.length-1];
            var b = intCurPos - this.image_slots[0];
            if(intCurPos == this.image.length-1 && this.image_slots[0] == 0) {
                this._blaetter('back');
            } else if(intCurPos == 0 && this.image_slots[5] == this.image.length-1) {
                this._blaetter('next');
            } else if(Math.abs(a) <= Math.abs(b)) {
                for(var i=0; i<Math.abs(a); i++) {
                    // bewegen um a schritte nach next
                    this._blaetter('next');
                }
            } else {
                for(var i=0; i<Math.abs(b); i++) {
                    // bewegen um b schritte nach back
                    this._blaetter('back');
                }
            }
        }
    }

    // Anzeige Bildnummer updaten
    if (document.getElementById('image_num_current')) {
        var current = this.image_pos + 1;
        document.getElementById('image_num_current').innerHTML = '<b>' + current + '</b>';
    }

    //Hinweistext einblenden
    this._set_note(1);

    //Anzeige-Counter hochzaehlen
    this._insert_ad();

    //warten bis Bild geladen ist, dann Button Position berechnen
    em_gallery_timer();
}

em_gallery.prototype._insert_ad = function(){
    //Banner reset
    this._set_banner(0);

    var unterbrecher_found = 0;

    var sk = 0;
    var sj = 0;
    var sc = 0;

    //Ads platzieren
    for(i=0; i<this.ads.length; i++){
        if(this.ads[i]){
            c = i;
            var item = new Object();
            for(var j=0; j<=this.ads[c].childNodes.length; j++){
                if( this.ads[c].childNodes[j]){
                    for(var k=0; k<=this.ads[c].childNodes[j].childNodes.length; k++){
                        if( this.ads[c].childNodes[j].childNodes[k]
                        && this.ads[c].childNodes[j].childNodes[k].nodeValue
                        && (this.ads[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/,"")) != ""
                        ){
                            item[this.ads[c].childNodes[j].nodeName] = this.ads[c].childNodes[j].childNodes[k].nodeValue;
                            if(this.ads[c].childNodes[j].nodeName == "einblendungen"){
                                sk = k;
                                sj = j;
                                sc = c;
                            }
                        }
                    }
                }
            }

            //Banner setzen
            if(item['art'] == "Banner"){
                //if(item["einblendungen"] > 0){ //buettner - falls einblendungen "-1"
                    if(item['start'] == this.shown
                    || ( ((this.shown-item['start']) % item['frequenz'] == 0) && (this.shown > item['start']))
                    ){

                        if (item["link"] && !item["link"].match(/:\/\//)) {
                            item["link"] = 'http://' + item["link"];
                        }

                        var banner_code = "<a href=\""+ item["link"] +"\" target=\"_blank\"><img style=\"cursor:pointer;\" src=" + item["path_original"] + " border=0 alt= /></a>";
                        this._set_banner(banner_code);

                        //Einblendungen runterzaehlen
                        this.ads[sc].childNodes[sj].childNodes[sk].nodeValue--;
                    }
                //}
            }

            //Unterbrecher setzen
            if(item["art"] == "Unterbrecher"){
                //Visibility pruefen
                //if(item["einblendungen"] > 0){ //buettner - falls einblendungen "-1"
                    if(item['start'] == this.shown
                    || ( ((this.shown-item['start']) % item['frequenz'] == 0) && (this.shown > item['start']))
                    ){
                        var zoom_image = "<img style=\"cursor:pointer;\" onclick=\"em_obj_gallery._blaetter('next'); window.frames[\'googleframe\'].window.location.reload();\" src=" + item["path_original"] + " border=0 alt= />";
                        var text = "";
                        var fulltext = "";
                        if(item["text"]){
                            text = item["text"];
                            fulltext = item['text'];
                            if(text.length > 60) {
                                text = text.substr(0,57);
                                text += "...";
                            }
                        }
                        this._zoom(zoom_image, fulltext, true);
                        unterbrecher_found = 1;

                        //Hinweistext ausblenden
                        this._set_note(0);

                        //Voting ausblenden
                        this._set_vote(0);

                        //Einblendungen runterzaehlen
                        this.ads[sc].childNodes[sj].childNodes[sk].nodeValue--;
                    }
                //}
            }
        }
    }
    if(unterbrecher_found){
        //Anzeige-Counter zuruecksetzen
        if(this.direction == "forwards"){
            this.image_pos-= this.steps;
        }else{
            this.image_pos+= this.steps;
        }
        this._control("hit_image", 1);
    } else {
        this._control("hit_image", 0);
    }
}


em_gallery.prototype._set_banner = function(what){
  if(document.getElementById("gallery_banner")) {
    if(!what){
      document.getElementById("gallery_banner").innerHTML = "";
    }else{
      document.getElementById("gallery_banner").innerHTML = what;
    }
  }
}


em_gallery.prototype._set_order = function(visible){
  if(document.getElementById("gallery_functions_mobile")) {
    if(visible){
      document.getElementById("gallery_functions_mobile").style.display = "inline";
    }else{
      document.getElementById("gallery_functions_mobile").style.display = "none";
    }
  }
  if(document.getElementById("gallery_functions_file")) {
    if(visible){
      document.getElementById("gallery_functions_file").style.display = "inline";
    }else{
      document.getElementById("gallery_functions_file").style.display = "none";
    }
  }
  if(document.getElementById("gallery_functions_basket")) {
    if(visible){
      document.getElementById("gallery_functions_basket").style.display = "inline";
    }else{
      document.getElementById("gallery_functions_basket").style.display = "none";
    }
  }
}


em_gallery.prototype._set_note = function(visible)
{
    var item = new Object();
    if (document.getElementById("function_overlay_note")) {
        if (this.meta[0]) {
            c = 0;
            for (var j = 0; j <= this.meta[c].childNodes.length; j++) {
                if (this.meta[c].childNodes[j]) {
                    for (var k = 0; k <= this.meta[c].childNodes[j].childNodes.length; k++) {
                        if (this.meta[c].childNodes[j].childNodes[k]
                        && (this.meta[c].childNodes[j].childNodes[k].nodeValue.replace(/^\s*|\s*$/, "")) != ""
                        ) {
                            item[this.meta[c].childNodes[j].nodeName] = this.meta[c].childNodes[j].childNodes[k].nodeValue;
                        }
                    }
                }
            }
        }

        if (item["hinweis"]) {
            document.getElementById("function_overlay_note").innerHTML = item["hinweis"];

            if (visible) {
                document.getElementById("function_overlay_note").style.visibility = "visible";
            } else {
                document.getElementById("function_overlay_note").style.visibility = "hidden";
            }
        } else {
            document.getElementById("function_overlay_note").style.visibility = "hidden";
        }
    }
}

em_gallery.prototype._set_vote = function(visible)
{
    if (document.getElementById("function_overlay_vote")) {
        if (visible) {
            document.getElementById("function_overlay_vote").style.visibility = "visible";
            //document.getElementById("function_overlay_vote").style.color = "red";
            //document.getElementById("function_overlay_vote").innerHTML = "Vote hier: dieses<br />Bild ist das Beste!";
        } else {
            document.getElementById("function_overlay_vote").style.visibility = "hidden";
            //document.getElementById("function_overlay_vote").style.color = "green";
            //document.getElementById("function_overlay_vote").innerHTML = "dieses Bild<br />wurde gevotet"
        }
    }
}

em_gallery.prototype._functions = function(what,partner_code){
  //aktuellen Bildpfad bestimmen

  //reduced Pfad bestimmen
  var pfad = this.image_host + this.image_path;
  var arrPfadReduced = this.image_path.split("/");
  var intFileNamePos = arrPfadReduced.length-1;
  var strFileName = arrPfadReduced[intFileNamePos];

  var arrFileName = strFileName.split(".");

  arrPfadReduced[intFileNamePos] = "reduced";

  this.imagePathReduced = arrPfadReduced.join("/");
  this.imagePathReduced = this.imagePathReduced + "/" + arrFileName[0] + "_reduced." + arrFileName[1];
  this.imagePathReduced = this.image_host + this.imagePathReduced;

  //Versand via Mail
  if(what == "mail") {
    if(document.getElementById("function_overlay_mail")){
      document.getElementById("function_overlay_mail").style.visibility = "visible";
      if(document.getElementById("function_overlay_mail2")){
          document.getElementById("function_overlay_mail2").style.visibility = "visible";
      }
      this._control("set_captcha");
    }
    return;
  }

  //Versand aufs Handy
  if(what == "mobile") {
    if(typeof mmstransfer == "function"){
        mmstransfer(partner_code,this.imagePathReduced,'Ihr Foto von ' + this.client.toUpperCase() + ' online. Weitere Fotos und aktuelle Infos aus Ihrer Region finden Sie bei Ihrer ' + this.client.toUpperCase() + '. (Copyright ' + this.client.toUpperCase() + ' online)');
    }
    return;
  }

  //Uebertragung an BP
  if(what == "file") {
    if(typeof picturetransfer == "function"){
      picturetransfer(this.imagePathReduced,'','',partner_code);
    }
    return;
  }

  //Bestellung
  if(what == "basket") {
    function_win = window.open();
    function_win.location.href = "http://www.bildpartner.de/upload/warenkorb.php?vcode=" + partner_code;
    return;
  }

}
//buettner
//Votebuttton immer am rechten Bildrand ausrichten
em_gallery.prototype._place_voteButton = function(){

    if (document.getElementById('zoomed_image')
    &&  document.getElementById('function_overlay_vote')){

        var pic_width = document.getElementById('zoomed_image').offsetWidth;
        var pic_left = document.getElementById('zoomed_image').offsetLeft;
        var tempEl = document.getElementById('zoomed_image').offsetParent;
        var button_width = parseInt(document.getElementById('function_overlay_vote').offsetWidth);
        var position = "";

        //duchgehen bis alle Elternelemente gefunden wurden ...
          while (tempEl != null) {
              pic_left += tempEl.offsetLeft;
              tempEl = tempEl.offsetParent;
          }

        //Abstand mit Bildbreite addieren
        pic_left = pic_left + pic_width;
        //Buttonbreite von Summe subtrahieren
        position = pic_left - button_width;
        //neue Position des Buttons setzen
        document.getElementById('function_overlay_vote').style.left = position + 'px';
    }
}
//buettner
//Button Sonderveroeffentlichung immer am unteren rechten Bildrand ausrichten
em_gallery.prototype._place_sondervButton = function(){

    if (document.getElementById('zoomed_image')
    &&  document.getElementById('function_overlay_note')){
        //alert(navigator.appName);
        var pic_width = document.getElementById('zoomed_image').offsetWidth;
        var pic_height = document.getElementById('zoomed_image').offsetHeight;
        var pic_left = document.getElementById('zoomed_image').offsetLeft;
        var pic_top = document.getElementById('zoomed_image').offsetTop;
        var tempEl = document.getElementById('zoomed_image').offsetParent;
        var button_width = parseInt(document.getElementById('function_overlay_note').offsetWidth);
        var button_height = parseInt(document.getElementById('function_overlay_note').offsetHeight);
        var positionLeft = "";
        var positionTop = "";

        //duchgehen bis alle Elternelemente gefunden wurden ...
          while (tempEl != null) {
              pic_left += tempEl.offsetLeft;
              pic_top  += tempEl.offsetTop;
              tempEl = tempEl.offsetParent;
          }

        //Abstand mit Bildbreite addieren
        pic_left = pic_left + pic_width;
        //Abstand mit Bildhoehe addieren
        pic_top  = pic_top  + pic_height;

        //Buttonbreite von Summe subtrahieren
        positionLeft = pic_left - button_width;
        //Buttonhoehe von Summe subtrahieren
        positionTop  = pic_top - button_height;
        //Bei IE 7pixel drauf rechnen
        if (navigator.appName.match(/Explorer/)) {
            positionTop = positionTop + 7;
        }

        //neue Position des Buttons setzen
        document.getElementById('function_overlay_note').style.left = positionLeft + 'px';
        document.getElementById('function_overlay_note').style.top = positionTop + 'px';
    }
}

function em_gallery_timer(){
    if (document.getElementById('zoomed_image')
    &&  document.getElementById('zoomed_image').complete
    ) {
        window.clearTimeout(em_obj_gallery.aktiv);
        em_obj_gallery._place_voteButton();
        em_obj_gallery._place_sondervButton();
    } else {
        em_obj_gallery.aktiv = window.setTimeout("em_gallery_timer()", 10);
    }
}

function loadXMLDoc(dname)
{
  try //Internet Explorer
  {
    xmlDoc =new ActiveXObject("Microsoft.XMLDOM");
  }
  catch(e)
  {
    try //Firefox, Mozilla, Opera, etc.
    {
      xmlDoc = document.implementation.createDocument("", "", null);
    }
    catch(e) {alert(e.message)}
  }

  try
  {
    xmlDoc.async = false;
    xmlDoc.load(dname);
//DumperAlert(xmlDoc);
    return(xmlDoc);
  }
  catch(e) {alert(e.message)}
  return(null);
}
