insymaImg = {
    props: {
        wrapID: "insymaWrap",
        overlayID: "insymaOverlay",
        galleryContainerID: "insymaImage",
        outerContainerID: "outerContainer",
        preloaderID: "preloader",
        imageID: "insymaCurrImage",
        imageControlID: "imageControl",
        controlPrevID: "controlPrev",
        controlNextID: "controlNext",
        controlPlayID: "controlPlay",
        controlCloseID: "controlClose",
        imageInfoID: "imageInfo",
        imageAltTextID: "imageAltText",
        imageNrID: "imageNr",
        onLoadUrlVar: "insymaImage",
        onLoadThanksVar: "insymaThanks",
        PagingContainerClass: "paging",
        nextPageClass: "aNext",
        prevPageClass: "aPrev",
        thumbContainerClass: "insymaImgThumbs",
        playingClass: "playing",
        hideClass: "hide",
        invisClass: "invis",
        activeClass: "active",
        noOverlayClass: "noOverlay",
        bodyScrollPosition: "",
        tempAnchorLength: 0,
        fwDefaultMailer: "http://www.contentupdate.net/bibliothek/form/insymaImageMailer.aspx",
        fwMailSenderID: "fwSender",
        fwDefaultMailSender: "insyma@contentupdate.net",
        fwLinkID: "insymaFwLink",
        fwFormID: "insymaFwForm",
        fwRedirectID: "fwRedirect",
        fwImageUrlID: "fwImageUrl",
        fwSenderNameID: "fwSenderName",
        fwSenderNameValID: "fwSenderNameVal",
        fwSenderMailID: "fwSenderMail",
        fwSenderNameMailID: "fwSenderMailVal",
        fwRecipientMailID: "fwRecipientMail",
        fwRecipientMailValID: "fwRecipientMailVal",
        fwCommentID: "fwComment",
        fwThanksID: "fwThanks",
        fwValidateID: "fwValidation",
        fwSubjectID: "fwSubject",
        fwMessageID: "fwMessage"
    },
    init: function () {
        var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass);
        if (thumbCon.length > 0) {
            insymaImg.paging.init();
            insymaImg.gallery.init()
        }
    },
    paging: {
        init: function () {
            this.createControls()
        },
        setPage: function (pageIdx) {
            var thumbConIdx = parseInt(pageIdx.split("-")[0]);
            var pageIdx = parseInt(pageIdx.split("-")[1]);
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass)[thumbConIdx];
            var thumbItem = thumbCon.getElementsByTagName("li");
            var start = pageIdx * insymaImgConfig.itemCount;
            var end = ((pageIdx + 1) * insymaImgConfig.itemCount) - 1;
            for (var i = 0; i < thumbItem.length; i++) {
                if (i >= start && i <= end) {
                    insymaUtil.cssjs("remove", thumbItem[i], insymaImg.props.hideClass)
                } else {
                    insymaUtil.cssjs("add", thumbItem[i], insymaImg.props.hideClass)
                }
            }
        },
        getImageAnchors: function (parentObj) {
            var tempAnchors = parentObj.getElementsByTagName("a");
            var anchors = [];
            for (var x = 0; x < tempAnchors.length; x++) {
                if (typeof (tempAnchors[x].getAttribute("href")) != 'undefined' && tempAnchors[x].getAttribute("href") != null) {
                    if (tempAnchors[x].getAttribute("href").indexOf(".jpg") > 0 || tempAnchors[x].getAttribute("href").indexOf(".jpeg") > 0 || tempAnchors[x].getAttribute("href").indexOf(".png") > 0 || tempAnchors[x].getAttribute("href").indexOf(".gif") > 0) {
                        anchors.push(tempAnchors[x])
                    }
                }
            }
            return anchors
        },
        changePage: function (controlLink, direction) {
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass);
            for (var i = 0; i < thumbCon.length; i++) {
                if (controlLink.parentNode.parentNode == thumbCon[i]) {
                    var pageCounter = thumbCon[i].getElementsByTagName("span")[0];
                    var pageIdx = parseInt(insymaPageIdxArr[i].split("-")[1]);
                    var newPageIdx;
                    var curCount;
                    if (direction == 1) {
                        if ((pageIdx + 1) < insymaTotalPageArr[i]) {
                            newPageIdx = i + "-" + (pageIdx + 1);
                            this.setPage(newPageIdx);
                            curCount = insymaImgConfig.pagingLabel + " " + (pageIdx + 2) + " " + insymaImgConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i]
                        } else {
                            newPageIdx = i + "-0";
                            this.setPage(newPageIdx);
                            curCount = insymaImgConfig.pagingLabel + " 1 " + insymaImgConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i]
                        }
                    } else {
                        if ((pageIdx - 1) >= 0) {
                            newPageIdx = i + "-" + (pageIdx - 1);
                            this.setPage(newPageIdx);
                            curCount = insymaImgConfig.pagingLabel + " " + (pageIdx) + " " + insymaImgConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i]
                        } else {
                            newPageIdx = i + "-" + (insymaTotalPageArr[i] - 1);
                            this.setPage(newPageIdx);
                            curCount = insymaImgConfig.pagingLabel + " " + (insymaTotalPageArr[i]) + " " + insymaImgConfig.pagingSeparatorLabel + " " + insymaTotalPageArr[i]
                        }
                    }
                    insymaUtil.setText(pageCounter, curCount);
                    insymaPageIdxArr[i] = newPageIdx
                }
            }
        },
        createControls: function () {
            insymaPageIdxArr = [];
            insymaTotalPageArr = [];
            insymaTotalImgs = 0;
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass);
            for (var i = 0; i < thumbCon.length; i++) {
                var itemCount = (insymaImgConfig.itemCount != 0 && insymaImgConfig.itemCount != "") ? insymaImgConfig.itemCount : 5000;
                var thumblist = thumbCon[i].getElementsByTagName("ul")[0];
                if (itemCount != 5000) {
                    var pagingCon = insymaUtil.createElm("p", {
                        className: insymaImg.props.PagingContainerClass
                    }, "", thumbCon[i])
                }
                var anchors = insymaImg.paging.getImageAnchors(thumbCon[i]);
                for (var y = 0; y < anchors.length; y++) {
                    insymaUtil.setAttr(anchors[y], {
                        idx: i + "-" + y
                    });
                    anchors[y].onclick = function () {
                        insymaImg.gallery.onLinkClick(this);
                        return false
                    };
                    insymaTotalImgs += 1
                }
                if (anchors.length > itemCount && typeof (pagingCon) != 'undefined') {
                    var aPrev = insymaUtil.createElm("a", {
                        className: insymaImg.props.prevPageClass,
                        href: "#"
                    }, insymaImgConfig.prevPageLabel, pagingCon);
                    aPrev.onclick = function () {
                        insymaImg.paging.changePage(this, -1);
                        return false
                    };
                    var pageCounter = insymaUtil.createElm("span", false, false, pagingCon);
                    var aNext = insymaUtil.createElm("a", {
                        className: insymaImg.props.nextPageClass,
                        href: "#"
                    }, insymaImgConfig.nextPageLabel, pagingCon);
                    aNext.onclick = function () {
                        insymaImg.paging.changePage(this, 1);
                        return false
                    };
                    if ((insymaTotalImgs % itemCount) > 0 && (insymaTotalImgs > itemCount)) {
                        insymaTotalPage = parseInt(insymaTotalImgs / itemCount) + 1
                    } else if ((insymaTotalImgs % itemCount) == 0 && (insymaTotalImgs > itemCount)) {
                        insymaTotalPage = parseInt(insymaTotalImgs / itemCount)
                    } else {
                        insymaTotalPage = 1
                    }
                    if (typeof (thumblist) != 'undefined') {
                        thumbCon[i].appendChild(thumblist)
                    }
                    insymaUtil.setText(pageCounter, insymaImgConfig.pagingLabel + " 1 " + insymaImgConfig.pagingSeparatorLabel + " " + insymaTotalPage);
                    insymaTotalPageArr.push(insymaTotalPage);
                    insymaPageIdxArr.push(i + "-0");
                    this.setPage(i + "-0")
                }
            }
        }
    },
    gallery: {
        init: function () {
            this.createGal()
        },
        onLinkClick: function (objLink) {
            var thumbConIdx = parseInt(objLink.getAttribute("idx").split("-")[0]);
            var imgIdx = parseInt(objLink.getAttribute("idx").split("-")[1]);
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass)[thumbConIdx];
            var image = document.getElementById(insymaImg.props.imageID);
            var anchors = insymaImg.paging.getImageAnchors(thumbCon);
            insymaImg.props.tempAnchorLength = anchors.length;
            this.loadImg(objLink);
            if (!insymaImgConfig.showInAlternateImgContainer) {
                if (insymaImg.props.tempAnchorLength == 1) {
                    if (insymaImgConfig.enableOverlaySigleImg) {
                        this.setOverlay(true);
                        if (insymaImgConfig.disableScrolling) {
                            window.scrollTo(0, 0)
                        }
                    } else {
                        insymaUtil.cssjs("add", insymaGalleryCon, insymaImg.props.noOverlayClass)
                    }
                } else {
                    this.setOverlay(true);
                    if (insymaImgConfig.disableScrolling) {
                        window.scrollTo(0, 0)
                    }
                }
                insymaUtil.cssjs("remove", insymaGalleryCon, insymaImg.props.hideClass);
                var controlPlay = document.getElementById(insymaImg.props.controlPlayID);
                var controlNext = document.getElementById(insymaImg.props.controlNextID);
                var controlPrev = document.getElementById(insymaImg.props.controlPrevID);
                var imageNr = document.getElementById(insymaImg.props.imageNrID);
                if (insymaImgConfig.enableControls != false) {
                    if (insymaImg.props.tempAnchorLength == 1) {
                        if (insymaImgConfig.enableSlideShow) {
                            insymaUtil.cssjs("add", controlPlay, insymaImg.props.hideClass)
                        }
                        insymaUtil.cssjs("add", controlNext, insymaImg.props.hideClass);
                        insymaUtil.cssjs("add", controlPrev, insymaImg.props.hideClass);
                        if (insymaImgConfig.enableCounter != false) {
                            insymaUtil.cssjs("add", imageNr, insymaImg.props.hideClass)
                        }
                    } else {
                        if (insymaImgConfig.enableSlideShow) {
                            insymaUtil.cssjs("remove", controlPlay, insymaImg.props.hideClass)
                        }
                        insymaUtil.cssjs("remove", controlNext, insymaImg.props.hideClass);
                        insymaUtil.cssjs("remove", controlPrev, insymaImg.props.hideClass);
                        if (insymaImgConfig.enableCounter != false) {
                            insymaUtil.cssjs("remove", imageNr, insymaImg.props.hideClass)
                        }
                    }
                }
                document.onkeydown = insymaImg.gallery.setKeyListener
            }
        },
        loadImg: function (objLink) {
            insymaImg.props.bodyScrollPosition = document.documentElement.scrollTop;
            insymaImg.gallery.posOuterContainer(0, 0);
            var PreLoading = new Image();
            var image = document.getElementById(insymaImg.props.imageID);
            var outerCon = document.getElementById(insymaImg.props.outerContainerID);
            var imageAltText = document.getElementById(insymaImg.props.imageAltTextID);
            var imageNr = document.getElementById(insymaImg.props.imageNrID);
            this.setLoading(true);
            PreLoading.onload = function () {
                image.src = objLink.getAttribute("href");
                if (!insymaImgConfig.showInAlternateImgContainer) {
                    insymaImg.gallery.resizeOuterContainer(PreLoading.width, PreLoading.height)
                }
                if (insymaImgConfig.setImgHeightOnContentElementIDs != "") {
                    insymaImg.gallery.resizeContentElements(PreLoading.height)
                }
                insymaUtil.setAttr(image, {
                    idx: objLink.getAttribute("idx")
                });
                image.alt = objLink.getElementsByTagName("img")[0].alt;
                if (!insymaImgConfig.showInAlternateImgContainer) {
					var _t = image.alt;
					//alert(_t.replace("&amp;", "&"))
					_t = _t.replace("&auml;", "ä").replace("&uuml;", "ü").replace("&ouml;", "ö").replace("&Auml;", "Ä").replace("&Uuml;", "Ü").replace("&Ouml;", "Ö").replace("&ndash;"," - ");
                    insymaUtil.setText(imageAltText, _t);
                    insymaImg.gallery.imageCounter(objLink)
                }
                insymaImg.gallery.setLoading(false)
            };
            PreLoading.src = objLink.getAttribute("href");
            if (insymaImgConfig.setActiveClass) {
                var currLi = objLink.parentNode;
                if (typeof (currLi) != 'undefined' && currLi.nodeName.toLowerCase() == 'li') {
                    for (var i = 0; i < currLi.parentNode.getElementsByTagName("li").length; i++) {
                        insymaUtil.cssjs("remove", currLi.parentNode.getElementsByTagName("li")[i], insymaImg.props.activeClass)
                    }
                    insymaUtil.cssjs("add", currLi, insymaImg.props.activeClass)
                }
            }
            if (insymaImgConfig.enableImageForward) {
                var fwRedirect = document.getElementById(insymaImg.props.fwRedirectID);
                var fwImageUrl = document.getElementById(insymaImg.props.fwImageUrlID);
                if (insymaUtil.getQuerystring(insymaImg.props.onLoadThanksVar)) {
                    var tempString = insymaUtil.setQuerystring(insymaImg.props.onLoadUrlVar, objLink.getAttribute("idx"));
                    fwRedirect.value = insymaUtil.setQuerystring(insymaImg.props.onLoadUrlVar, objLink.getAttribute("idx"));
                    fwImageUrl.value = tempString.replace("&" + insymaImg.props.onLoadThanksVar, "")
                } else {
                    var tempString = insymaUtil.setQuerystring(insymaImg.props.onLoadUrlVar, objLink.getAttribute("idx"));
                    fwRedirect.value = tempString.split("#")[0] + "&" + insymaImg.props.onLoadThanksVar;
                    fwImageUrl.value = insymaUtil.setQuerystring(insymaImg.props.onLoadUrlVar, objLink.getAttribute("idx"))
                }
                var fwThanks = document.getElementById(insymaImg.props.fwThanksID);
                var fwLink = document.getElementById(insymaImg.props.fwLinkID);
                insymaUtil.cssjs("add", fwThanks, insymaImg.props.hideClass);
                insymaUtil.cssjs("remove", fwLink, insymaImg.props.hideClass)
            }
        },
        showImg: function (direction) {
            var currIdx = document.getElementById(insymaImg.props.imageID).getAttribute("idx");
            var thumbConIdx = parseInt(currIdx.split("-")[0]);
            var imgIdx = parseInt(currIdx.split("-")[1]);
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass)[thumbConIdx];
            var anchors = insymaImg.paging.getImageAnchors(thumbCon);
            if (direction == 1) {
                try {
                    this.loadImg(anchors[imgIdx + 1])
                } catch (e) {
                    this.loadImg(anchors[0])
                }
            } else {
                try {
                    this.loadImg(anchors[imgIdx - 1])
                } catch (e) {
                    this.loadImg(anchors[anchors.length - 1])
                }
            }
            return false
        },
        resizeOuterContainer: function (width, height) {
            var newWidth = 163;
            if (width > 163) {
                newWidth = width
            }
            var newHeight = height + 70;
            var arrayPageSize = insymaUtil.getPageSize();
            var outerCon = document.getElementById(insymaImg.props.outerContainerID);
            outerCon.style.width = newWidth + "px";
            outerCon.style.height = newHeight + "px";
            insymaImg.gallery.posOuterContainer(width, height);
            if (insymaImgConfig.disableScrolling && arrayPageSize[3] > newHeight && !(!insymaImgConfig.enableOverlaySigleImg && insymaImg.props.tempAnchorLength == 1)) {
                this.setScroll(true);
                insymaImg.gallery.resizeOverlay(3)
            } else {
                insymaImg.gallery.resizeOverlay(1)
            }
        },
        posOuterContainer: function (width, height) {
            var newWidth = 1;
            var newHeight = 1;
            var arrayPageSize = insymaUtil.getPageSize();
            var outerCon = document.getElementById(insymaImg.props.outerContainerID);
            var scrollPos = 0;
            if (width == 0 && height == 0) {
                if (outerCon.style.width != "") {
                    newWidth = parseInt(outerCon.style.width.replace("px", ""));
                    newHeight = parseInt(outerCon.style.height.replace("px", ""))
                }
            } else {
                newWidth = width;
                newHeight = height + 70
            }
            if (!insymaImgConfig.disableScrolling || (!insymaImgConfig.enableOverlaySigleImg && insymaImg.props.tempAnchorLength == 1)) {
                scrollPos = parseInt(insymaImg.props.bodyScrollPosition)
            }
            if ((newHeight / 2) > (arrayPageSize[3] / 2)) {
                var top = ((arrayPageSize[3] / 2) - 20) - scrollPos
            } else {
                var top = (newHeight / 2) - scrollPos
            }
            if (top < 0) {
                insymaGalleryCon.style.marginTop = (top * -1) + 'px'
            } else {
                insymaGalleryCon.style.marginTop = '-' + top + 'px'
            }
            insymaGalleryCon.style.left = '0px'
        },
        resizeContentElements: function (height) {
            var newHeight = height;
            var ContentElements = [];
            if (insymaImgConfig.setImgHeightOnContentElementIDs.indexOf(";") != -1) {
                ContentElements = insymaImgConfig.setImgHeightOnContentElementIDs.replace(" ", "").split(";")
            } else {
                ContentElements.push(insymaImgConfig.setImgHeightOnContentElementIDs)
            }
            for (var i = 0; i < ContentElements.length; i++) {
                if (ContentElements[i].indexOf("(") != -1) {
                    var contentElm = document.getElementById(ContentElements[i].split("(")[0]);
                    var addHeight = ContentElements[i].split("(")[1].replace(")", "");
                    if (addHeight.indexOf("-") != -1) {
                        contentElm.style.height = (newHeight - parseInt(addHeight.replace("-", ""))) + "px"
                    } else {
                        contentElm.style.height = (newHeight + parseInt(addHeight.replace("+", ""))) + "px"
                    }
                } else {
                    var contentElm = document.getElementById(ContentElements[i]);
                    contentElm.style.height = newHeight + "px"
                }
            }
        },
        imageCounter: function (objLink) {
            if (insymaImgConfig.enableCounter != false) {
                var imgNr = document.getElementById(insymaImg.props.imageNrID);
                var currIdx = document.getElementById(insymaImg.props.imageID).getAttribute("idx");
                var thumbConIdx = parseInt(currIdx.split("-")[0]);
                var imgIdx = parseInt(currIdx.split("-")[1]) + 1;
                var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass)[thumbConIdx];
                var anchors = insymaImg.paging.getImageAnchors(thumbCon);
                var curCount = insymaImgConfig.countLabel + " " + imgIdx + " " + insymaImgConfig.countSeperatorLabel + " " + anchors.length;
                insymaUtil.setText(imgNr, curCount)
            }
        },
        setScroll: function (bool, height) {
            if (bool) {
                insymaWrap.style.position = "relative";
                if (height) {
                    insymaWrap.style.height = height + "px"
                } else {
                    insymaWrap.style.height = insymaUtil.getPageSize()[3] + "px"
                }
                insymaWrap.style.overflow = "hidden"
            } else {
                insymaWrap.style.position = "static";
                insymaWrap.style.height = "auto";
                insymaWrap.style.overflow = "auto"
            }
        },
        setOverlay: function (bool) {
            if (insymaImgConfig.enableOverlay) {
                insymaUtil.cssjs("remove", insymaGalleryCon, insymaImg.props.noOverlayClass);
                if (bool) {
                    insymaUtil.cssjs("remove", insymaOverlay, insymaImg.props.hideClass);
                    this.resizeOverlay(1);
                    if (insymaImgConfig.disableScrolling) {
                        insymaUtil.addEvent(window, 'resize', function () {
                            insymaImg.gallery.resizeOverlay(3)
                        }, false);
                        insymaUtil.addEvent(window, 'scroll', function () {
                            insymaImg.gallery.resizeOverlay(1)
                        }, false)
                    } else {
                        insymaUtil.addEvent(window, 'resize', function () {
                            insymaImg.gallery.resizeOverlay(1)
                        }, false);
                        insymaUtil.addEvent(window, 'scroll', function () {
                            insymaImg.gallery.resizeOverlay(1)
                        }, false)
                    }
                } else {
                    insymaUtil.cssjs("add", insymaOverlay, insymaImg.props.hideClass)
                }
            } else {
                insymaUtil.cssjs("add", insymaGalleryCon, insymaImg.props.noOverlayClass)
            }
        },
        resizeOverlay: function (nr) {
            insymaOverlay.style.height = insymaUtil.getPageSize()[nr] + "px";
            insymaOverlay.style.width = "100%"
        },
        setLoading: function (bool) {
            var image = document.getElementById(insymaImg.props.imageID);
            if (!insymaImgConfig.showInAlternateImgContainer) {
                var imageInfo = document.getElementById(insymaImg.props.imageInfoID);
                if (bool) {
                    if (!insymaImgConfig.showImgDuringLoading) {
                        insymaUtil.cssjs("add", image, insymaImg.props.invisClass)
                    }
                    insymaUtil.cssjs("add", imageInfo, insymaImg.props.invisClass);
                    insymaUtil.cssjs("remove", insymaPreLoader, insymaImg.props.hideClass)
                } else {
                    insymaUtil.cssjs("remove", image, insymaImg.props.invisClass);
                    insymaUtil.cssjs("remove", imageInfo, insymaImg.props.invisClass);
                    insymaUtil.cssjs("add", insymaPreLoader, insymaImg.props.hideClass)
                }
            } else {
                if (bool) {
                    if (!insymaImgConfig.showImgDuringLoading) {
                        insymaUtil.cssjs("add", image, insymaImg.props.invisClass)
                    }
                    insymaUtil.cssjs("remove", insymaPreLoader, insymaImg.props.hideClass)
                } else {
                    insymaUtil.cssjs("remove", image, insymaImg.props.invisClass);
                    insymaUtil.cssjs("add", insymaPreLoader, insymaImg.props.hideClass)
                }
            }
        },
        setSlideShow: function (bool, objLink) {
            if (insymaImgConfig.enableSlideShow) {
                var controlCloseSpan = objLink.getElementsByTagName("span")[0];
                if (bool) {
                    insymaUtil.setText(controlCloseSpan, insymaImgConfig.controlPauseLabel);
                    insymaUtil.cssjs("add", objLink, insymaImg.props.playingClass);
                    objLink.onclick = function () {
                        insymaImg.gallery.setSlideShow(false, this);
                        return false
                    };
                    insymaSlideShowInterval = window.setInterval('insymaImg.gallery.showImg(1)', insymaImgConfig.showDelay)
                } else {
                    window.clearInterval(insymaSlideShowInterval);
                    insymaUtil.setText(controlCloseSpan, insymaImgConfig.controlPlayLabel);
                    insymaUtil.cssjs("remove", objLink, insymaImg.props.playingClass);
                    objLink.onclick = function () {
                        insymaImg.gallery.setSlideShow(true, this);
                        return false
                    }
                }
            }
        },
        closeGal: function () {
            var objLink = document.getElementById(insymaImg.props.imageControlID).getElementsByTagName("a")[1];
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass);
            insymaUtil.cssjs("add", insymaPreLoader, insymaImg.props.hideClass);
            insymaUtil.cssjs("add", insymaOverlay, insymaImg.props.hideClass);
            insymaUtil.cssjs("add", insymaGalleryCon, insymaImg.props.hideClass);
            this.setOverlay(false);
            if (typeof (insymaSlideShowInterval) != 'undefined') {
                this.setSlideShow(false, objLink)
            }
            document.onkeydown = function () {};
            if (insymaImgConfig.disableScrolling) {
                this.setScroll(false)
            }
            if (insymaImgConfig.setActiveClass) {
                for (var i = 0; i < thumbCon.length; i++) {
                    for (var y = 0; y < thumbCon[i].getElementsByTagName("li").length; y++) {
                        insymaUtil.cssjs("remove", thumbCon[i].getElementsByTagName("li")[y], insymaImg.props.activeClass)
                    }
                }
            }
            if (!insymaImgConfig.showInAlternateImgContainer) {
                window.scrollTo(0, insymaImg.props.bodyScrollPosition)
            }
            if (insymaImgConfig.enableImageForward) {
                var fwFormContainer = document.getElementById(insymaImg.props.fwFormID);
                insymaUtil.cssjs("add", fwFormContainer, insymaImg.props.hideClass, "")
            }
        },
        setKeyListener: function (evt) {
            evt = (evt) ? evt : ((window.event) ? event : null);
            if (evt) {
                switch (evt.keyCode) {
                case 37:
                    insymaImg.gallery.showImg(-1);
                    break;
                case 39:
                    insymaImg.gallery.showImg(1);
                    break;
                case 27:
                    insymaImg.gallery.closeGal();
                    break;
                case 32:
                    var objLink = document.getElementById(insymaImg.props.imageControlID).getElementsByTagName("a")[1];
                    (insymaUtil.cssjs("check", objLink, insymaImg.props.playingClass)) ? insymaImg.gallery.setSlideShow(false, objLink) : insymaImg.gallery.setSlideShow(true, objLink);
                    break
                }
            }
        },
        startOnLoad: function () {
            var thumbConIdx = 0;
            var imgIdx = 0;
            var showImg = false;
            var thumbCon = insymaUtil.elmByClass("div", insymaImg.props.thumbContainerClass);
            var fwThanks = document.getElementById(insymaImg.props.fwThanksID);
            var fwLink = document.getElementById(insymaImg.props.fwLinkID);
            if (insymaUtil.getQuerystring(insymaImg.props.onLoadUrlVar) != false) {
                if (insymaUtil.getQuerystring(insymaImg.props.onLoadUrlVar) != true) {
                    thumbConIdx = parseInt(insymaUtil.getQuerystring(insymaImg.props.onLoadUrlVar).split('-')[0]);
                    imgIdx = parseInt(insymaUtil.getQuerystring(insymaImg.props.onLoadUrlVar).split('-')[1])
                }
                showImg = true
            }
            for (var i = 0; i < thumbCon.length; i++) {
                var anchors = insymaImg.paging.getImageAnchors(thumbCon[i]);
                if (showImg) {
                    if (i == thumbConIdx) {
                        if (typeof (anchors[imgIdx]) != 'undefined') {
                            insymaImg.gallery.onLinkClick(anchors[imgIdx])
                        } else if (insymaUtil.getQuerystring(insymaImg.props.onLoadUrlVar) == true) {
                            if (anchors.length != 0) {
                                insymaImg.gallery.onLinkClick(anchors[0])
                            }
                        }
                    }
                } else if (insymaImgConfig.showFirstImgOnLoad) {
                    if (anchors.length != 0) {
                        insymaImg.gallery.onLinkClick(anchors[0])
                    }
                }
            }
            if (insymaImgConfig.enableImageForward) {
                if (insymaUtil.getQuerystring(insymaImg.props.onLoadThanksVar)) {
                    insymaUtil.cssjs("remove", fwThanks, insymaImg.props.hideClass);
                    insymaUtil.cssjs("add", fwLink, insymaImg.props.hideClass)
                }
            }
        },
        validateForm: function () {
            var fwValidate = document.getElementById(insymaImg.props.fwValidateID);
            var fwSenderNameInput = document.getElementById(insymaImg.props.fwSenderNameID);
            var fwSenderMailInput = document.getElementById(insymaImg.props.fwSenderMailID);
            var fwRecipientMailInput = document.getElementById(insymaImg.props.fwRecipientMailID);
            var valid = true;
            while (fwValidate.childNodes[0]) {
                fwValidate.removeChild(fwValidate.childNodes[0])
            }
            if (fwSenderNameInput.value == "") {
                valid = false;
                insymaUtil.createElm("li", {}, insymaImgConfig.fwSenderValidate, fwValidate)
            }
            if (fwSenderMailInput.value == "") {
                valid = false;
                insymaUtil.createElm("li", false, insymaImgConfig.fwSenderMailValidate, fwValidate)
            } else if (!insymaImg.gallery.validateEmail(fwSenderMailInput)) {
                valid = false;
                insymaUtil.createElm("li", false, insymaImgConfig.fwSenderMailNotValid, fwValidate)
            }
            if (fwRecipientMailInput.value == "") {
                valid = false;
                insymaUtil.createElm("li", false, insymaImgConfig.fwRecipientMailValidate, fwValidate)
            } else if (!insymaImg.gallery.validateEmail(fwRecipientMailInput)) {
                valid = false;
                insymaUtil.createElm("li", false, insymaImgConfig.fwRecipientMailNotValid, fwValidate)
            }
            if (!valid) {
                insymaUtil.cssjs("remove", fwValidate, insymaImg.props.hideClass)
            }
            return valid
        },
        validateEmail: function (field) {
            if (field.value != "") {
                return (/^([a-zA-Z0-9_\-\&\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$/i.test(field.value))
            } else {
                return true
            }
        },
        createGal: function () {
            if (!insymaImgConfig.showInAlternateImgContainer) {
                if (insymaUtil.elmByClass("div", "insymaWrap")) {
                    var insymaWrap = insymaUtil.elmByClass("div", "insymaWrap")[0]
                } else {
                    var insymaWrap = insymaUtil.createElm("div", {
                        id: insymaImg.props.wrapID
                    });
                    var bodyChilds = document.body.childNodes;
                    var bodyObjs = [];
                    for (var i = 0; i < bodyChilds.length; i++) {
                        bodyObjs.push(bodyChilds[i])
                    }
                    for (var y = 0; y < bodyObjs.length; y++) {
                        insymaWrap.appendChild(bodyObjs[y])
                    }
                    document.body.appendChild(insymaWrap)
                }
                insymaOverlay = insymaUtil.createElm("div", {
                    id: insymaImg.props.overlayID,
                    className: insymaImg.props.hideClass
                }, false, document.body);
                insymaGalleryCon = insymaUtil.createElm("div", {
                    id: insymaImg.props.galleryContainerID,
                    className: insymaImg.props.hideClass
                }, false, document.body);
                var outerCon = insymaUtil.createElm("div", {
                    id: insymaImg.props.outerContainerID
                }, false, insymaGalleryCon);
                var imageControl = insymaUtil.createElm("ul", {
                    id: insymaImg.props.imageControlID
                }, false, outerCon);
                if (insymaImgConfig.enableControls != false) {
                    var controlPrev = insymaUtil.createElm("li", {
                        id: insymaImg.props.controlPrevID
                    }, false, imageControl);
                    var controlPrevLink = insymaUtil.createElm("a", {
                        href: "#",
                        title: insymaImgConfig.controlPrevLabel
                    }, false, controlPrev);
                    var controlPrevSpan = insymaUtil.createElm("span", false, insymaImgConfig.controlPrevLabel, controlPrevLink);
                    controlPrevLink.onclick = function () {
                        insymaImg.gallery.showImg(-1);
                        return false
                    };
                    if (insymaImgConfig.enableSlideShow) {
                        var controlPlay = insymaUtil.createElm("li", {
                            id: insymaImg.props.controlPlayID
                        }, false, imageControl);
                        var controlPlayLink = insymaUtil.createElm("a", {
                            href: "#",
                            title: insymaImgConfig.controlPlayLabel
                        }, false, controlPlay);
                        var controlPlaySpan = insymaUtil.createElm("span", false, insymaImgConfig.controlPlayLabel, controlPlayLink);
                        controlPlayLink.onclick = function () {
                            insymaImg.gallery.setSlideShow(true, this);
                            return false
                        }
                    }
                    var controlNext = insymaUtil.createElm("li", {
                        id: insymaImg.props.controlNextID
                    }, false, imageControl);
                    var controlNextLink = insymaUtil.createElm("a", {
                        href: "#",
                        title: insymaImgConfig.controlNextLabel
                    }, false, controlNext);
                    var controlNextSpan = insymaUtil.createElm("span", false, insymaImgConfig.controlNextLabel, controlNextLink);
                    controlNextLink.onclick = function () {
                        insymaImg.gallery.showImg(1);
                        return false
                    }
                }
                var controlClose = insymaUtil.createElm("li", {
                    id: insymaImg.props.controlCloseID
                }, false, imageControl);
                var controlCloseLink = insymaUtil.createElm("a", {
                    href: "#",
                    title: insymaImgConfig.controlCloseLabel
                }, false, controlClose);
                var controlCloseSpan = insymaUtil.createElm("span", false, insymaImgConfig.controlCloseLabel, controlCloseLink);
                controlCloseLink.onclick = function () {
                    insymaImg.gallery.closeGal();
                    return false
                };
                insymaPreLoader = insymaUtil.createElm("img", {
                    id: insymaImg.props.preloaderID,
                    src: insymaImgConfig.loadingImgPath,
                    className: insymaImg.props.hideClass
                }, false, outerCon);
                var image = insymaUtil.createElm("img", {
                    id: insymaImg.props.imageID,
                    className: insymaImg.props.invisClass
                }, false, outerCon);
                var imageInfo = insymaUtil.createElm("div", {
                    id: insymaImg.props.imageInfoID,
                    className: insymaImg.props.invisClass
                }, false, outerCon);
                var imageAltText = insymaUtil.createElm("span", {
                    id: insymaImg.props.imageAltTextID
                }, false, imageInfo);
                if (insymaImgConfig.enableCounter != false) {
                    var imageNr = insymaUtil.createElm("span", {
                        id: insymaImg.props.imageNrID
                    }, false, imageInfo)
                }
                if (insymaImgConfig.enableImageForward) {
                    var fwLink = insymaUtil.createElm("a", {
                        id: insymaImg.props.fwLinkID,
                        href: "#"
                    }, insymaImgConfig.fwLinkLabel, imageInfo);
                    var fwThanks = insymaUtil.createElm("p", {
                        id: insymaImg.props.fwThanksID,
                        className: insymaImg.props.hideClass
                    }, insymaImgConfig.fwThanks, imageInfo);
                    var fwFormContainer = insymaUtil.createElm("div", {
                        id: insymaImg.props.fwFormID,
                        className: insymaImg.props.hideClass
                    }, false, outerCon);
                    fwLink.onclick = function () {
                        var fwFormContainer = document.getElementById(insymaImg.props.fwFormID);
                        insymaUtil.cssjs("swap", fwFormContainer, insymaImg.props.hideClass, "");
                        if (insymaUtil.cssjs("check", fwFormContainer, insymaImg.props.hideClass)) {
                            document.onkeydown = insymaImg.gallery.setKeyListener
                        } else {
                            document.onkeydown = function () {}
                        }
                        return false
                    };
                    var fwValidate = insymaUtil.createElm("ul", {
                        id: insymaImg.props.fwValidateID,
                        className: insymaImg.props.hideClass
                    }, false, fwFormContainer);
                    var fwForm;
                    if (insymaImgConfig.fwMailer == "") {
                        fwForm = insymaUtil.createElm("form", {
                            name: insymaImg.props.fwFormID,
                            action: insymaImg.props.fwDefaultMailer,
                            method: "post"
                        }, false, fwFormContainer)
                    } else {
                        fwForm = insymaUtil.createElm("form", {
                            name: insymaImg.props.fwFormID,
                            action: insymaImgConfig.fwMailer,
                            method: "post"
                        }, false, fwFormContainer)
                    }
                    fwForm.onsubmit = function () {
                        return insymaImg.gallery.validateForm()
                    };
                    var fwRedirect = insymaUtil.createElm("input", {
                        id: insymaImg.props.fwRedirectID,
                        name: insymaImg.props.fwRedirectID,
                        value: '',
                        type: 'hidden'
                    }, false, fwForm);
                    var fwImageUrl = insymaUtil.createElm("input", {
                        id: insymaImg.props.fwImageUrlID,
                        name: insymaImg.props.fwImageUrlID,
                        value: '',
                        type: 'hidden'
                    }, false, fwForm);
                    var fwMailSender;
                    if (insymaImgConfig.fwMailSender == "") {
                        fwMailSender = insymaUtil.createElm("input", {
                            name: insymaImg.props.fwMailSenderID,
                            value: insymaImg.props.fwDefaultMailSender,
                            type: 'hidden'
                        }, false, fwForm)
                    } else {
                        fwMailSender = insymaUtil.createElm("input", {
                            name: insymaImg.props.fwMailSenderID,
                            value: insymaImgConfig.fwMailSender,
                            type: 'hidden'
                        }, false, fwForm)
                    }
                    insymaUtil.createElm("input", {
                        name: insymaImg.props.fwSubjectID,
                        value: insymaImgConfig.fwSubject,
                        type: 'hidden'
                    }, false, fwForm);
                    insymaUtil.createElm("input", {
                        name: insymaImg.props.fwMessageID,
                        value: insymaImgConfig.fwMessage,
                        type: 'hidden'
                    }, false, fwForm);
                    var fwFormUl = insymaUtil.createElm("ul", {}, false, fwForm);
                    var fwSenderNameLi = insymaUtil.createElm("li", {}, false, fwFormUl);
                    var fwSenderNameLabel = insymaUtil.createElm("label", {
                        'for': insymaImg.props.fwSenderNameID
                    }, insymaImgConfig.fwSenderLabel, fwSenderNameLi);
                    insymaUtil.createElm("span", {}, "*", fwSenderNameLabel);
                    var fwSenderNameInput = insymaUtil.createElm("input", {
                        id: insymaImg.props.fwSenderNameID,
                        name: insymaImg.props.fwSenderNameID,
                        value: ''
                    }, false, fwSenderNameLi);
                    var fwSenderMailLi = insymaUtil.createElm("li", {}, false, fwFormUl);
                    var fwSenderMailLabel = insymaUtil.createElm("label", {
                        'for': insymaImg.props.fwSenderMailID
                    }, insymaImgConfig.fwSenderMailLabel, fwSenderMailLi);
                    insymaUtil.createElm("span", {}, "*", fwSenderMailLabel);
                    var fwSenderMailInput = insymaUtil.createElm("input", {
                        id: insymaImg.props.fwSenderMailID,
                        name: insymaImg.props.fwSenderMailID,
                        value: ''
                    }, false, fwSenderMailLi);
                    var fwReciepientLi = insymaUtil.createElm("li", {}, false, fwFormUl);
                    var fwRecipientMailLabel = insymaUtil.createElm("label", {
                        'for': insymaImg.props.fwRecipientMailID
                    }, insymaImgConfig.fwRecipientMailLabel, fwReciepientLi);
                    insymaUtil.createElm("span", {}, "*", fwRecipientMailLabel);
                    var fwRecipientMailInput = insymaUtil.createElm("input", {
                        id: insymaImg.props.fwRecipientMailID,
                        name: insymaImg.props.fwRecipientMailID,
                        value: ''
                    }, false, fwReciepientLi);
                    var fwCommentLi = insymaUtil.createElm("div", {
                        className: insymaImg.props.fwCommentID
                    }, false, fwForm);
                    var fwCommentLabel = insymaUtil.createElm("label", {
                        'for': insymaImg.props.fwCommentID
                    }, insymaImgConfig.fwCommentLabel, fwCommentLi);
                    var fwCommentInput = insymaUtil.createElm("textarea", {
                        id: insymaImg.props.fwCommentID,
                        name: insymaImg.props.fwCommentID,
                        value: ''
                    }, false, fwCommentLi);
                    var fwButtonP = insymaUtil.createElm("p", false, false, fwForm);
                    var fwButton = insymaUtil.createElm("input", {
                        type: "submit",
                        value: insymaImgConfig.fwButtonLabel
                    }, false, fwButtonP)
                }
            } else {
                insymaAltImgCon = document.getElementById(insymaImgConfig.alternateImgContainerID);
                if (insymaAltImgCon.getElementsByTagName("img").length > 0) {
                    insymaUtil.setAttr(insymaAltImgCon.getElementsByTagName("img")[0], {
                        id: insymaImg.props.imageID
                    });
                    insymaPreLoader = insymaUtil.createElm("img", {
                        id: insymaImg.props.preloaderID,
                        src: insymaImgConfig.loadingImgPath,
                        className: insymaImg.props.hideClass
                    }, false, insymaAltImgCon);
                    insymaAltImgCon.appendChild(document.getElementById(insymaImg.props.imageID))
                } else {
                    insymaPreLoader = insymaUtil.createElm("img", {
                        id: insymaImg.props.preloaderID,
                        src: insymaImgConfig.loadingImgPath,
                        className: insymaImg.props.hideClass
                    }, false, insymaAltImgCon);
                    var image = insymaUtil.createElm("img", {
                        id: insymaImg.props.imageID,
                        className: insymaImg.props.invisClass
                    }, false, insymaAltImgCon)
                }
            }
            insymaImg.gallery.startOnLoad()
        }
    }
};
insymaUtil.addEvent(window, "load", insymaImg.init, false);
