/** * Klasse für die Bildergalerie. * * @author Helmut Lüdders */ var CM_ImageGallerySwitch = Class.create(); CM_ImageGallerySwitch.prototype = { /** * Vorschau Url des aktuellen Bildes. * * @type {String} */ _currentPreview: undefined, /** * Wie die Bilder durchgetauscht werden. * * @type {Number} */ _displayType: undefined, /** * Die Id der Galerie. * * @type {Number} */ _id: undefined, /** * Setzt den Effekt auf die Links * @constructor * * @param {Number} id Die Id der Bildergalerie. * @param {Number} displayType Wie die Bilder durchgetauscht werden. * @param {String} [currentPreview] Vorschau Url des aktuellen Bildes. */ initialize: function(id, displayType, currentPreview) { this._id = id; this._displayType = displayType; this._currentPreview = currentPreview; var links = $('image_gallery_' + id).getElementsByTagName('a'); $A(links).each( function(element) { element.onclick = this.change.bind(this, element); }.bind(this) ); }, /** * Wechselt das aktuelle Bild. * * @param {Object} element Das angeklickte Element. */ change: function(element) { var detail = $('image_gallery_detail_' + this._id); var img = detail.getElementsByTagName('img')[0]; var title = detail.getElementsByTagName('div')[0]; var description = detail.getElementsByTagName('p')[0]; if (this._displayType == 1) { img.src = element.href; img.alt = element.title; title.firstChild.nodeValue = element.title; description.innerHTML = element.parentNode.getElementsByTagName('div')[0].innerHTML; } else { this.swap([img, 'src'], [element, 'href']); element.parentNode.getElementsByTagName('a')[1].href = element.href; this.swap([this, '_currentPreview'], [element.firstChild, 'src']); this.swap([img, 'alt'], [element, 'title']); element.parentNode.getElementsByTagName('a')[1].title = element.title; element.firstChild.alt = element.title; this.swap([title.firstChild, 'nodeValue'], [element.parentNode.getElementsByTagName('span')[0].firstChild, 'nodeValue']); this.swap([description, 'innerHTML'], [element.parentNode.getElementsByTagName('div')[0], 'innerHTML']); } return false; }, /** * Wechselt zwei Attribute aus. * * @param {Array} from Array mit dem Element und dem Attributnamen. * @param {Array} to Array mit dem zweiten Element und dem zweiten * Attributnamen. */ swap: function(from, to) { var temp = from[0][from[1]]; from[0][from[1]] = to[0][to[1]]; to[0][to[1]] = temp; } }