if (!videoPrototype) {
    var videoPrototype = new Object();

    videoPrototype.TeaserViewer = function() {
        this.teaserWidth = null;
        this.teasersVisible = null;
        this.teasersTotal = null;
        this.teaserListId = null;
        this.teasersLeftButtonId = null;
        this.teasersRightButtonId = null;
        this.scrollFactor = null;
        this.videoPlayerId = null;
        this.teaserPosition = 0;
        this.teaserOffset = 0;
        this.teaserTargetOffset = 0;
    }

    videoPrototype.TeaserViewer.prototype = {
        setTeaserWidth: function(teaserWidth) {
            this.teaserWidth = teaserWidth;
        },
        setTeasersVisible: function(teasersVisible) {
            this.teasersVisible = teasersVisible;
        },
        setTeasersTotal: function(teasersTotal) {
            this.teasersTotal = teasersTotal;
        },
        setTeaserListId: function(teaserListId) {
            this.teaserListId = teaserListId;
        },
        setTeasersLeftButtonId: function(teasersLeftButtonId) {
            this.teasersLeftButtonId = teasersLeftButtonId;
        },
        setTeasersRightButtonId: function(teasersRightButtonId) {
            this.teasersRightButtonId = teasersRightButtonId;
        },
        setScrollFactor: function(scrollFactor) {
            this.scrollFactor = scrollFactor;
        },
        setVideoPlayerId: function(videoPlayerId) {
            this.videoPlayerId = videoPlayerId;
        },
        init: function() {
            this.updateButtons();
        },
        next: function() {
            if (this.teaserPosition < this.teasersTotal - this.teasersVisible) {
                this.teaserPosition++;
                this.teaserTargetOffset += this.teaserWidth;
                this.startScroll();
                this.updateButtons();
            }
        },
        previous: function() {
            if (this.teaserPosition > 0) {
                this.teaserPosition--;
                this.teaserTargetOffset -= this.teaserWidth;
                this.startScroll();
                this.updateButtons();
            }
        },
        playVideo: function(videoClipUrl, videoArticleUrl, channelName, sectionName, sectionUniqueName) {
            var playerElement = document.getElementById(this.videoPlayerId);
            if (playerElement) {
                if (playerElement.setAutoPlay) playerElement.setAutoPlay(true);
                if (playerElement.playClip) playerElement.playClip(videoClipUrl, videoArticleUrl, channelName, sectionName, sectionUniqueName);
            }
        },
        startScroll: function() {
            setTimeout(this.delegate(this, this.step), 40);
        },
        step: function() {
            var doNextStep = false;

            if (Math.abs(this.teaserTargetOffset - this.teaserOffset) > 1) {
                this.teaserOffset += (this.teaserTargetOffset - this.teaserOffset) * this.scrollFactor;
                doNextStep = true;
            } else {
                this.teaserOffset = this.teaserTargetOffset;
            }

            var teaserListElement = document.getElementById(this.teaserListId);
            teaserListElement.style.marginLeft = "" + (0 - Math.round(this.teaserOffset)) + "px";

            if (doNextStep) {
                setTimeout(this.delegate(this, this.step), 40);
            }
        },
        updateButtons: function() {
            var leftButtonElement = document.getElementById(this.teasersLeftButtonId);
            if (this.teaserPosition > 0) {
                leftButtonElement.className = "videoTeaserButtonActive";
            } else {
                leftButtonElement.className = "videoTeaserButtonInactive";
            }

            var rightButtonElement = document.getElementById(this.teasersRightButtonId);
            if (this.teaserPosition < this.teasersTotal - this.teasersVisible) {
                rightButtonElement.className = "videoTeaserButtonActive";
            } else {
                rightButtonElement.className = "videoTeaserButtonInactive";
            }
        },
        delegate: function(obj, objMethod) {
            return function() {
                return objMethod.call(obj, arguments);
            }
        }
    }

    videoPrototype.SectionBox = function() {
        this.sectionBoxItems = new Array();
        this.selectedSectionId = null;
        this.targetElementId = null;
    }

    videoPrototype.SectionBox.prototype = {
        setTargetElementId: function(targetElementId) {
            this.targetElementId = targetElementId;
        },
        addItem: function(elementId, sectionId, sectionUrl, sectionElementId, isSelectedSection) {
            var sectionBoxItem = new videoPrototype.SectionBoxItem(elementId, sectionId, sectionUrl, sectionElementId);
            this.sectionBoxItems.push(sectionBoxItem);
            if (isSelectedSection) this.selectedSectionId = sectionId;
        },
        openSection: function(sectionId) {
            if (sectionId != this.selectedSectionId) {
                for (var i = 0; i < this.sectionBoxItems.length; i++) {
                    var sectionBoxItem = this.sectionBoxItems[i];
                    var element = document.getElementById(sectionBoxItem.elementId);
                    element.className = element.className.replace(" videoSectionBoxItemSelected", "");

                    var sectionElement = document.getElementById(sectionBoxItem.sectionElementId);
                    sectionElement.className = sectionElement.className.replace(" videoSectionBoxItemOpen", "");
                }

                for (var i = 0; i < this.sectionBoxItems.length; i++) {
                    var sectionBoxItem = this.sectionBoxItems[i];
                    var element = document.getElementById(sectionBoxItem.elementId);

                    if (sectionBoxItem.sectionId == sectionId) {
                        element.className += " videoSectionBoxItemSelected";
                        ajaxLoad(sectionBoxItem.sectionUrl + '?service=Ajax&type=videoSectionBrowse', this.targetElementId);
                    }

                    var sectionElement = document.getElementById(sectionBoxItem.sectionElementId);

                    if (sectionBoxItem.sectionId == sectionId) {
                        sectionElement.className += " videoSectionBoxItemOpen";
                    }
                }
                this.selectedSectionId = sectionId;
            }
        }
    }

    videoPrototype.SectionBoxItem = function(elementId, sectionId, sectionUrl, sectionElementId) {
        this.elementId = elementId;
        this.sectionId = sectionId;
        this.sectionUrl = sectionUrl;
        this.sectionElementId = sectionElementId;
    }

    videoPrototype.TabController = function() {
        this.tabs = new Object();
        this.activeTab = null;
        this.dropDownBoxElementId = null;
        this.dropDownAreaElementId = null;
        this.dropDownContentElementId = null;
        this.contentHeight = null;
        this.scrollFactor = null;
        this.contentOffset = null;
        this.targetOffset = null;
        this.notifiedElementIds = new Array();
    }

    videoPrototype.TabController.prototype = {
        setTab: function(name, elementId) {
            if (this.tabs[name] == null) {
                var tabItem = new videoPrototype.TabItem(name);
                tabItem.tabElementId = elementId;
                this.tabs[name] = tabItem;
            } else {
                this.tabs[name].tabElementId = elementId;
            }
        },
        setTabExtension: function(name, elementId) {
            if (this.tabs[name] == null) {
                var tabItem = new videoPrototype.TabItem(name);
                tabItem.tabExtensionElementId = elementId;
                this.tabs[name] = tabItem;
            } else {
                this.tabs[name].tabExtensionElementId = elementId;
            }
        },
        setTabContent: function(name, elementId) {
            if (this.tabs[name] == null) {
                var tabItem = new videoPrototype.TabItem(name);
                tabItem.tabContentElementId = elementId;
                this.tabs[name] = tabItem;
            } else {
                this.tabs[name].tabContentElementId = elementId;
            }
            document.getElementById(elementId).style.display = "none";
        },
        setTabOnOpenFunction: function(name, onOpenFunction) {
            if (this.tabs[name] == null) {
                var tabItem = new videoPrototype.TabItem(name);
                tabItem.tabOnOpenFunction = onOpenFunction;
                this.tabs[name] = tabItem;
            } else {
                this.tabs[name].tabOnOpenFunction = onOpenFunction;
            }
        },
        setTabOnCloseFunction: function(name, onCloseFunction) {
            if (this.tabs[name] == null) {
                var tabItem = new videoPrototype.TabItem(name);
                tabItem.tabOnCloseFunction = onCloseFunction;
                this.tabs[name] = tabItem;
            } else {
                this.tabs[name].tabOnCloseFunction = onCloseFunction;
            }
        },
        setDropDownBox: function(elementId) {
            this.dropDownBoxElementId = elementId;
        },
        setDropDownArea: function(elementId) {
            this.dropDownAreaElementId = elementId;
        },
        setDropDownContent: function(elementId) {
            this.dropDownContentElementId = elementId;
        },
        setContentHeight: function(contentHeight) {
            this.contentHeight = contentHeight;
            this.contentOffset = 0;
        },
        setScrollFactor: function(scrollFactor) {
            this.scrollFactor = scrollFactor;
        },
        addNotifiedElementId: function(elementId) {
            this.notifiedElementIds.push(elementId);
        },
        open: function(name) {
            var targetTab = this.tabs[name];
            if (targetTab != null) {
                if (targetTab != this.activeTab) {

                    if (this.activeTab != null) {
                        this.deactivateTabs();
                    }

                    var tabElement = document.getElementById(targetTab.tabElementId);
                    if (tabElement != null) {
                        tabElement.className = tabElement.className.replace(" videoLinkTabInactive", " videoLinkTabActive");
                    }

                    var tabExtensionElement = document.getElementById(targetTab.tabExtensionElementId);
                    if (tabExtensionElement != null) {
                        tabExtensionElement.className = tabExtensionElement.className.replace(" videoDropDownTabInactive", " videoDropDownTabActive");
                    }

                    var tabContentElement = document.getElementById(targetTab.tabContentElementId);
                    if (tabContentElement != null) {
                        tabContentElement.style.display = "block";
                    }

                    if (targetTab.tabOnOpenFunction != null) {
                        targetTab.tabOnOpenFunction();
                    }

                    this.targetOffset = this.contentHeight;
                    this.startScroll();

                    this.activeTab = targetTab;
                } else {
                    this.close();
                }
            }
        },
        close: function() {
            this.activeTab = null;

            this.targetOffset = 0;
            this.startScroll();
        },
        deactivateTabs: function() {
            for (var tabName in this.tabs) {
                var tab = this.tabs[tabName];

                var tabElement = document.getElementById(tab.tabElementId);
                if (tabElement != null) {
                    tabElement.className = tabElement.className.replace(" videoLinkTabActive", " videoLinkTabInactive");
                }

                var tabExtensionElement = document.getElementById(tab.tabExtensionElementId);
                if (tabExtensionElement != null) {
                    tabExtensionElement.className = tabExtensionElement.className.replace(" videoDropDownTabActive", " videoDropDownTabInactive");
                }

                var tabContentElement = document.getElementById(tab.tabContentElementId);
                if (tabContentElement != null) {
                    tabContentElement.style.display = "none";
                }

                if (tab.tabOnCloseFunction != null) {
                    tab.tabOnCloseFunction();
                }
            }
        },
        startScroll: function() {
            for (var i = 0; i < this.notifiedElementIds.length; i++) {
                var notifiedElementId = this.notifiedElementIds[i];
                var notifiedElement = document.getElementById(notifiedElementId);
                if (notifiedElement != null) {
                    notifiedElement.className += " videoDropDownScroll";
                }
            }

            setTimeout(this.delegate(this, this.step), 40);
        },
        step: function() {
            var doNextStep = false;

            if (Math.abs((this.targetOffset - this.contentOffset) * this.scrollFactor) > 1) {
                this.contentOffset += (this.targetOffset - this.contentOffset) * this.scrollFactor;
                doNextStep = true;
            } else {
                for (var i = 0; i < this.notifiedElementIds.length; i++) {
                    var notifiedElementId = this.notifiedElementIds[i];
                    var notifiedElement = document.getElementById(notifiedElementId);
                    if (notifiedElement != null) {
                        notifiedElement.className = notifiedElement.className.replace(" videoDropDownScroll", "");
                    }
                }

                this.contentOffset = this.targetOffset;
            }

            var dropDownBoxElement = document.getElementById(this.dropDownBoxElementId);
            if (this.contentOffset == 0) {
                dropDownBoxElement.style.display = "none";
                this.deactivateTabs();
            } else {
                dropDownBoxElement.style.display = "block";
            }

            var dropDownContentElement = document.getElementById(this.dropDownContentElementId);
            dropDownContentElement.style.marginTop = "" + (Math.round(this.contentOffset) - this.contentHeight) + "px";

            var dropDownAreaElement = document.getElementById(this.dropDownAreaElementId);
            dropDownAreaElement.style.height = "" + (Math.round(this.contentOffset)) + "px";

            if (doNextStep) {
                setTimeout(this.delegate(this, this.step), 40);
            }
        },
        delegate: function(obj, objMethod) {
            return function() {
                return objMethod.call(obj, arguments);
            }
        }
    }

    videoPrototype.TabItem = function(name) {
        this.name = name;
        this.tabElementId = null;
        this.tabExtensionElementId = null;
        this.tabContentElementId = null;
        this.tabOnOpenFunction = null;
        this.tabOnCloseFunction = null;
    }

    videoPrototype.VideoComment = function() {
        this.formElementId = null;
        this.boxElementId = null;
        this.messageElementId = null;
        this.bodyElementId = null;
        this.nameElementId = null;
        this.emailElementId = null;
        this.captchaElementId = null;
        this.targetElementId = null;
    }

    videoPrototype.VideoComment.prototype = {
        setFormElementId: function(formElementId) {
            this.formElementId = formElementId;
        },
        setBoxElementId: function(boxElementId) {
            this.boxElementId = boxElementId;
        },
        setMessageElementId: function(messageElementId) {
            this.messageElementId = messageElementId;
        },
        setBodyElementId: function(bodyElementId) {
            this.bodyElementId = bodyElementId;
        },
        setNameElementId: function(nameElementId) {
            this.nameElementId = nameElementId;
        },
        setEmailElementId: function(emailElementId) {
            this.emailElementId = emailElementId;
        },
        setCaptchaElementId: function(captchaElementId) {
            this.captchaElementId = captchaElementId;
        },
        setTargetElementId: function(targetElementId) {
            this.targetElementId = targetElementId;
        },
        sendCommentForm: function() {
            var result = true;

            this.clearErrors();

            try
            {
                var errorMessageActive = false;

                if (document.getElementById(this.bodyElementId).value == "") {
                    document.getElementById(this.bodyElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Ihr Kommentar' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    this.setCookie("commentBody", document.getElementById(this.bodyElementId).value);
                }

                if (document.getElementById(this.nameElementId).value == "") {
                    document.getElementById(this.nameElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Ihr Name' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    this.setCookie("commentName", document.getElementById(this.nameElementId).value);
                }

                if (document.getElementById(this.emailElementId).value == "") {
                    document.getElementById(this.emailElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Ihre E-mail' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                }
                else if (!checkEmail(document.getElementById(this.emailElementId).value)) {
                    document.getElementById(this.emailElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "Ihre E-mail is nicht g&uuml;ltig.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    this.setCookie("commentEmail", document.getElementById(this.emailElementId).value);
                }

                if (document.getElementById(this.captchaElementId).value == "") {
                    document.getElementById(this.captchaElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Code' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                }

                if (errorMessageActive) {
                    document.getElementById(this.messageElementId).className += " videoPostMessagesError";
                    document.getElementById(this.boxElementId).className += " videoFormShowMessage";
                }
            }
            catch(e) {}

            if (result) {
                var data = "";

                var formElement = document.getElementById(this.formElementId);
                for (var i = 0; i < formElement.elements.length; i++) {
                    var field = formElement.elements[i];
                    if (i > 0) data += "&";
                    data += field.name + "=" + encodeURIComponent(field.value);
                }

                var postUrl = formElement.action;

                ajaxLoad(postUrl, this.targetElementId, "POST", data, this.delegate(this, this.checkResult));
            }
        },
        checkResult: function() {
            var showMessage = false;
            var isError = false;
            var captchaError = false;
            var resultMessage = "";

            var result = document.getElementById(this.messageElementId).innerHTML;
            if (result == "kommentarSuccess") {
                showMessage = true;
                resultMessage = "Vielen Dank f&uuml;r Ihren Kommentar. Er wird in wenigen Minuten unter dem Artikel erscheinen.";
            } else if (result == "kommentarError") {
                showMessage = true;
                isError = true;
                resultMessage = "Leider konnte Ihr Kommentar nicht verarbeitet werden.";
            } else if (result == "kommentarCodeExpired") {
                showMessage = true;
                isError = true;
                captchaError = true;
                resultMessage = "Der Code ist nicht mehr gŸltig. Bitte geben Sie den Code erneut ein.";
            } else if (result == "kommentarCodeFalsch") {
                showMessage = true;
                isError = true;
                captchaError = true;
                resultMessage = "Der eingegebene Code ist falsch. Bitte geben Sie den Code erneut ein.";
            }

            this.clearErrors();
            document.getElementById(this.messageElementId).innerHTML = resultMessage;
            if (showMessage) document.getElementById(this.boxElementId).className += " videoFormShowMessage";
            if (isError) document.getElementById(this.messageElementId).className += " videoPostMessagesError";
            if (captchaError) document.getElementById(this.captchaElementId).className += " videoFormError";

            if (isError) this.restoreFields();
            else this.clearFields();
        },
        clearErrors: function() {
            document.getElementById(this.boxElementId).className = document.getElementById(this.boxElementId).className.replace(" videoFormShowMessage", "");
            document.getElementById(this.messageElementId).innerHTML = "";
            document.getElementById(this.messageElementId).className = document.getElementById(this.messageElementId).className.replace(" videoPostMessagesError", "");
            document.getElementById(this.bodyElementId).className = document.getElementById(this.bodyElementId).className.replace(" videoFormError", "");
            document.getElementById(this.nameElementId).className = document.getElementById(this.nameElementId).className.replace(" videoFormError", "");
            document.getElementById(this.emailElementId).className = document.getElementById(this.emailElementId).className.replace(" videoFormError", "");
            document.getElementById(this.captchaElementId).className = document.getElementById(this.captchaElementId).className.replace(" videoFormError", "");
        },
        restoreFields: function() {
            document.getElementById(this.bodyElementId).value = this.getCookie("commentBody");
            document.getElementById(this.nameElementId).value = this.getCookie("commentName");
            document.getElementById(this.emailElementId).value = this.getCookie("commentEmail");
        },
        clearFields: function() {
            document.getElementById(this.bodyElementId).value = "";
            document.getElementById(this.nameElementId).value = "";
            document.getElementById(this.emailElementId).value = "";
            this.setCookie("commentBody", "");
            this.setCookie("commentName", "");
            this.setCookie("commentEmail", "");
        },
        clearForm: function() {
            this.clearFields();
            this.clearErrors();
        },
        delegate: function(obj, objMethod) {
            return function() {
                return objMethod.call(obj, arguments);
            }
        },
        setCookie: function(cookieName, value) {
            document.cookie = cookieName + "=" + encodeURIComponent(value);
        },
        getCookie: function(cookieName) {
            if (document.cookie.length > 0) {
                var cookieStart = document.cookie.indexOf(cookieName + "=");
                if (cookieStart != -1) {
                    cookieStart = cookieStart + cookieName.length + 1;
                    var cookieEnd = document.cookie.indexOf(";", cookieStart);
                    if (cookieEnd == -1) cookieEnd = document.cookie.length;
                    return decodeURIComponent(document.cookie.substring(cookieStart, cookieEnd));
                }
            }
            return "";
        }
    }

    videoPrototype.VideoSend = function() {
        this.formElementId = null;
        this.boxElementId = null;
        this.previewElementId = null;
        this.messageElementId = null;
        this.addressesElementId = null;
        this.nameElementId = null;
        this.emailElementId = null;
        this.captchaElementId = null;
        this.targetElementId = null;
        this.topic = null;
        this.title = null;
        this.intro = null;
        this.permaLink = null;
    }

    videoPrototype.VideoSend.prototype = {
        setFormElementId: function(formElementId) {
            this.formElementId = formElementId;
        },
        setBoxElementId: function(boxElementId) {
            this.boxElementId = boxElementId;
        },
        setPreviewElementId: function(previewElementId) {
            this.previewElementId = previewElementId;
        },
        setMessageElementId: function(messageElementId) {
            this.messageElementId = messageElementId;
        },
        setAddressesElementId: function(addressesElementId) {
            this.addressesElementId = addressesElementId;
        },
        setNameElementId: function(nameElementId) {
            this.nameElementId = nameElementId;
        },
        setEmailElementId: function(emailElementId) {
            this.emailElementId = emailElementId;
        },
        setCaptchaElementId: function(captchaElementId) {
            this.captchaElementId = captchaElementId;
        },
        setTargetElementId: function(targetElementId) {
            this.targetElementId = targetElementId;
        },
        setTopic: function(topic) {
            this.topic = topic;
        },
        setTitle: function(title) {
            this.title = title;
        },
        setIntro: function(intro) {
            this.intro = intro;
        },
        setPermaLink: function(permaLink) {
            this.permaLink = permaLink;
        },
        sendForm: function() {
            var result = true;

            this.clearErrors();

            try
            {
                var errorMessageActive = false;

                if (document.getElementById(this.addressesElementId).value == "") {
                    document.getElementById(this.addressesElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Dieses Video senden an' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    var addressesError = false;
                    var addresses = document.getElementById(this.addressesElementId).value.split(",");
                    for (var i = 0; i < addresses.length; i++) {
                        var address = addresses[i].replace(/^\s+|\s+$/g, "");
                        if (!checkEmail(address)) {
                            document.getElementById(this.addressesElementId).className += " videoFormError";
                            document.getElementById(this.messageElementId).innerHTML += "Die Empf&auml;nger-Email ist nicht g&uuml;ltig.<br />";
                            errorMessageActive = true;
                            break;
                        }
                    }

                    if (!addressesError) {
                        this.setCookie("sendAddresses", document.getElementById(this.addressesElementId).value);
                    }
                }

                if (document.getElementById(this.nameElementId).value == "") {
                    document.getElementById(this.nameElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Ihr Name' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    this.setCookie("sendName", document.getElementById(this.nameElementId).value);
                }

                if (document.getElementById(this.emailElementId).value == "") {
                    document.getElementById(this.emailElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Ihre E-mail' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                }
                else if (!checkEmail(document.getElementById(this.emailElementId).value)) {
                    document.getElementById(this.emailElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "Ihre E-mail is nicht g&uuml;ltig.<br />";
                    errorMessageActive = true;
                    result = false;
                } else {
                    this.setCookie("sendEmail", document.getElementById(this.emailElementId).value);
                }

                if (document.getElementById(this.captchaElementId).value == "") {
                    document.getElementById(this.captchaElementId).className += " videoFormError";
                    document.getElementById(this.messageElementId).innerHTML += "F&uuml;llen Sie bitte das Feld 'Code' aus.<br />";
                    errorMessageActive = true;
                    result = false;
                }

                if (errorMessageActive) {
                    document.getElementById(this.messageElementId).className += " videoPostMessagesError";
                    document.getElementById(this.boxElementId).className += " videoFormShowMessage";
                }
            }
            catch(e) {}

            if (result) {
                var data = "";

                var formElement = document.getElementById(this.formElementId);
                for (var i = 0; i < formElement.elements.length; i++) {
                    var field = formElement.elements[i];
                    if (i > 0) data += "&";
                    data += field.name + "=" + encodeURIComponent(field.value);
                }

                var postUrl = formElement.action;

                ajaxLoad(postUrl, this.targetElementId, "POST", data, this.delegate(this, this.checkResult));
            }
        },
        checkResult: function() {
            var showMessage = false;
            var isError = false;
            var captchaError = false;
            var resultMessage = "";

            var result = document.getElementById(this.messageElementId).innerHTML;
            if (result == "recommendation_success") {
                showMessage = true;
                resultMessage = "Dieses Video wurde erfolgreich verschickt!";
            } else if (result == "recommendation_failure") {
                showMessage = true;
                isError = true;
                resultMessage = "Leider konnte dieses Video nicht versendet werden.";
            } else if (result == "recommendationCodeExpired") {
                showMessage = true;
                isError = true;
                captchaError = true;
                resultMessage = "Der Code ist nicht mehr g&uuml;ltig. Bitte geben Sie den Code erneut ein.";
            } else if (result == "recommendationCodeFalsch") {
                showMessage = true;
                isError = true;
                captchaError = true;
                resultMessage = "Der eingegebene Code ist falsch. Bitte geben Sie den Code erneut ein.";
            }

            this.clearErrors();
            document.getElementById(this.messageElementId).innerHTML = resultMessage;
            if (showMessage) document.getElementById(this.boxElementId).className += " videoFormShowMessage";
            if (isError) document.getElementById(this.messageElementId).className += " videoPostMessagesError";
            if (captchaError) document.getElementById(this.captchaElementId).className += " videoFormError";

            if (isError) this.restoreFields();
            else this.clearFields();

            this.updatePreview();
        },
        clearErrors: function() {
            document.getElementById(this.boxElementId).className = document.getElementById(this.boxElementId).className.replace(" videoFormShowMessage", "");
            document.getElementById(this.messageElementId).innerHTML = "";
            document.getElementById(this.messageElementId).className = document.getElementById(this.messageElementId).className.replace(" videoPostMessagesError", "");
            document.getElementById(this.addressesElementId).className = document.getElementById(this.addressesElementId).className.replace(" videoFormError", "");
            document.getElementById(this.nameElementId).className = document.getElementById(this.nameElementId).className.replace(" videoFormError", "");
            document.getElementById(this.emailElementId).className = document.getElementById(this.emailElementId).className.replace(" videoFormError", "");
            document.getElementById(this.captchaElementId).className = document.getElementById(this.captchaElementId).className.replace(" videoFormError", "");
        },
        restoreFields: function() {
            document.getElementById(this.addressesElementId).value = this.getCookie("sendAddresses");
            document.getElementById(this.nameElementId).value = this.getCookie("sendName");
            document.getElementById(this.emailElementId).value = this.getCookie("sendEmail");
        },
        clearFields: function() {
            document.getElementById(this.addressesElementId).value = "";
            document.getElementById(this.nameElementId).value = "";
            document.getElementById(this.emailElementId).value = "";
            this.setCookie("sendAddresses", "");
            this.setCookie("sendName", "");
            this.setCookie("sendEmail", "");
        },
        clearForm: function() {
            this.clearFields();
            this.clearErrors();
        },
        updatePreview: function() {
            var name = document.getElementById(this.nameElementId).value;
            if (name == "") name = "[Ihr Name]";

            var email = document.getElementById(this.emailElementId).value;
            if (email == "") email = "[Ihre E-mail]";

            var preview = name + " (" + email + ") hat Ihnen ein Video von &quot;Berliner Morgenpost&quot; empfohlen.<br />";
            preview += "------------------------------------------------<br />";
            if (this.topic != "") preview += this.topic + "<br /><br />";
            if (this.title != "") preview += this.title + "<br /><br />";
            if (this.intro != "") preview += this.intro + "<br /><br />";
            preview += "Das Video k&ouml;nnen Sie hier sehen:<br />";

            var permaLinkChunk = this.permaLink;
            while (permaLinkChunk.length > 38) {
                var index = permaLinkChunk.lastIndexOf("/", 38);
                if (index == -1) {
                    break;
                } else {
                    preview += permaLinkChunk.substr(0, index + 1) + "<br />";
                    permaLinkChunk = permaLinkChunk.substr(index + 1);
                }
            }
            preview += permaLinkChunk + "<br />";

            preview += "<br />";
            preview += "Ihre Daten wurden nicht gespeichert und wurden ausschlie&szlig;lich zum Versenden dieser Mail verwendet.<br/>";
            preview += "------------------------------------------------<br />";
            preview += "Wenn der Service missbraucht wurde, schicken Sie bitte diese Mail an leserbriefe@morgenpost.de";

            document.getElementById(this.previewElementId).innerHTML = preview;
        },
        wrapAddresses: function() {
            document.getElementById(this.addressesElementId).value = document.getElementById(this.addressesElementId).value.replace(/,\s*/g, ", ");
        },
        delegate: function(obj, objMethod) {
            return function() {
                return objMethod.call(obj, arguments);
            }
        },
        setCookie: function(cookieName, value) {
            document.cookie = cookieName + "=" + encodeURIComponent(value);
        },
        getCookie: function(cookieName) {
            if (document.cookie.length > 0) {
                var cookieStart = document.cookie.indexOf(cookieName + "=");
                if (cookieStart != -1) {
                    cookieStart = cookieStart + cookieName.length + 1;
                    var cookieEnd = document.cookie.indexOf(";", cookieStart);
                    if (cookieEnd == -1) cookieEnd = document.cookie.length;
                    return decodeURIComponent(document.cookie.substring(cookieStart, cookieEnd));
                }
            }
            return "";
        }
    }

    videoPrototype.VideoStats = function() {
    }

    videoPrototype.VideoStats.prototype = {
        logStats: function(parameters) {
            var ivwUrl = "http://morgpo2.ivwbox.de/cgi-bin/ivw/CP/" + parameters.sectionUniqueName;
            ivwUrl += "?r=" + escape(location.href) + "&d=" + (Math.random() * 100000);

            var videoIVWStats = document.getElementById("videoIVWStats");
            if (videoIVWStats != null) {
                videoIVWStats.src = ivwUrl;
            }

            var subChannel = "";
            if (parameters.sectionName != parameters.channelName) subChannel = parameters.sectionName;

            var dateString = "";
            if (parameters.pubdate != null) {
                dateString = parameters.pubdate.substr(8, 2);
                dateString += "." + parameters.pubdate.substr(5, 2);
                dateString += "." + parameters.pubdate.substr(0, 4);
            }

            s.pageName = escape(parameters.sectionName) + ":" + parameters.id + ":" + escape(parameters.title);
            s.server = "";
            s.pageURL = escape(parameters.deeplinkUrl);
            s.referrer = escape(location.href);
            s.channel = escape(parameters.channelName);
            s.pageType = "";
            s.prop1 = subChannel;
            s.prop2 = "bm";
            s.prop3 = parameters.id;
            s.prop4 = dateString;
            s.prop5 = "story";
            s.prop6 = "";
            s.prop7 = "image";
            s.prop8 = "";
            s.prop9 = "";
            s.campaign = "";
            s.state = "";
            s.zip = "";
            s.events = "";
            s.products = "";
            s.purchaseID = "";
            s.eVar1 = "";
            s.eVar2 = "";
            s.eVar3 = "";
            s.eVar4 = "";
            s.eVar5 = "";
            var s_code=s.t();
            if (s_code) document.write(s_code);
        }
    }

}

var TeaserViewer = videoPrototype.TeaserViewer;
var SectionBox = videoPrototype.SectionBox;
var TabController = videoPrototype.TabController;
var VideoComment = videoPrototype.VideoComment;
var VideoSend = videoPrototype.VideoSend;
var VideoStats = videoPrototype.VideoStats;

function videoLogStats(parameters) {
    var videoStats = new VideoStats();
    videoStats.logStats(parameters);
}
