﻿accordionClass.prototype.id = "0";
accordionClass.prototype.headers = new Array();
accordionClass.prototype.constructor = accordionClass;
accordionClass.prototype.closeOthers = true;
function accordionClass(id) {
    this.id = id;
    
}
accordionHeader.prototype.Content = document.createElement("td");
accordionHeader.prototype.Header = document.createElement("td");
accordionHeader.prototype.Kapanir = true;
accordionHeader.prototype.Kapali = false;
accordionHeader.prototype.Varsayilan = false;
accordionHeader.prototype.acmaInterVal = 0;
accordionHeader.prototype.kapamaInterVal = 0;
accordionHeader.prototype.ContainerClass = new accordionClass();
accordionHeader.prototype.OpenOver = false;
accordionHeader.prototype.kapat = function() {

    if (this.Kapanir && (this.Content.nodeName.toLowerCase() == "td" || this.Content.nodeName.toLowerCase() == "div")) {
        this.Content.style.overflow = "hidden";
        var esasYukseklik = this.Content.scrollHeight;
        var animObj = this.Content;
        var startHeight = this.acmaInterVal == 0 ? esasYukseklik : this.Content.clientHeight;
        if (this.acmaInterVal != 0) {
            clearInterval(this.acmaInterVal);
            this.acmaInterVal = 0;
        }
        var i = 1;
        var _instace = this;
        var mHeight = this.Content.clientHeight;
        this.kapamaInterVal = setInterval(function() {
            i++;

            mHeight = ((Number(animObj.scrollHeight - animObj.clientHeight) / 6) > 1) ? mHeight - (Number(animObj.scrollHeight - animObj.clientHeight) / 6) : mHeight - 2;
            if (0 < mHeight) {
                _instace.Content.style.height = mHeight + "px";
            } else {
                _instace.Content.style.height = "0px";
                clearInterval(_instace.kapamaInterVal);
                _instace.kapamaInterVal = 0;
            }

        }, 10);
    }
}
accordionHeader.prototype.ac = function() {
    if (this.ContainerClass.closeOthers) {
        for (var i = 0; i < this.ContainerClass.headers.length; i++) {
            if (this.ContainerClass.headers[i] != this) {
                this.ContainerClass.headers[i].Kapali = true;
                this.ContainerClass.headers[i].kapat();
            }
        }
    }
    if (this.Kapanir && (this.Content.nodeName.toLowerCase() == "td" || this.Content.nodeName.toLowerCase() == "div")) {

        var esasYukseklik = this.Content.scrollHeight;
        if (this.kapamaInterVal != 0) {
            clearInterval(this.kapamaInterVal);
            this.kapamaInterVal = 0;
        }
        var startHeight = this.kapamaInterVal == 0 ? 0 : this.Content.clientHeight;

        var i = startHeight;
        var _instace = this;
        var mHeight = startHeight;
        this.acmaInterVal = setInterval(function() {

            mHeight = ((Number((esasYukseklik - _instace.Content.clientHeight) / 6) < 3) ? mHeight + 3 : mHeight + (esasYukseklik - _instace.Content.clientHeight) / 6); ;

            if (esasYukseklik > (mHeight)) {
                _instace.Content.style.height = (mHeight) + "px";
            } else {
                _instace.Content.style.height = ""; //_instace.Content.scrollHeight + "px";
                _instace.Content.style.overflow = "visible";
                clearInterval(_instace.acmaInterVal);
                _instace.acmaInterVal = 0;
            }

        }, 10);
    }
}

function accordionHeader(header, content,kapanir,kapali, varsayilan,containerClass, openover) {
    var _instance = this;
    this.Kapali = varsayilan == true ? false : kapali;
    this.Kapanir = kapanir;
    this.Content = content;
    this.Header = header;
    this.Varsayilan = varsayilan;
    this.ContainerClass = containerClass;
    this.OpenOver = openover;
    if (content != null) {

        if (!this.Varsayilan) {
            content.style.overflow = "hidden";
            content.style.height = "0px";
        }
    }
    if (header != null && (header.nodeName.toLowerCase() == "td" || header.nodeName.toLowerCase() == "div")) {
        header.AccordionHeader = _instance;
        if (header.childNodes.length > 0) {
            var childNodeName = header.childNodes[0].nodeName.toLowerCase();
            var childNode = header.childNodes[0];

            if ((childNodeName == "img" || childNodeName == "a") && childNode.onclick == null) {
                //alert(this.Kapali);
                childNode.style.cursor = "pointer";

                childNode.onclick = function() {
                    if (_instance.Kapali) {
                        _instance.Kapali = false;
                        _instance.ac();
                    }
                    else {
                        if (_instance.Kapanir) {
                            _instance.Kapali = true;
                            _instance.kapat();
                        }
                    }
                }
                if (this.OpenOver) {
                    childNode.onmouseover = function() {
                    if (_instance.Kapanir && _instance.Kapali) {
                        _instance.Kapali = false;
                        _instance.ac();
                    }
                    }
                }
                
            }
        }
    }
}

function createAccordions(tableID, mAccordion) {
    
    var mHeaders = new Array();
    var mTable = document.getElementById(tableID);
    var tdNodes = mTable.getElementsByTagName("td");
    if (tdNodes != null && tdNodes.length > 0) {
        for (var i = 0; i < tdNodes.length; i++) {
            if (tdNodes[i].getAttribute("typeEx") == "acHeader") {
                var mHeaderTd = tdNodes[i];
                mHeaderTd.style.height = "0px";
                var mContent = document.getElementById(mHeaderTd.getAttribute("contentid"));
                
                var kapali = mHeaderTd.getAttribute("kapali") == "true"? true: false;
                var varsayilan = mHeaderTd.getAttribute("varsayilan") == "true"? true: false;
                var kapanir = mHeaderTd.getAttribute("kapanir") == "true" ? true : false;
                var openover = mHeaderTd.getAttribute("openover") == "true" ? true : false;
                //alert(mContent.scrollHeight);
                mContent.style.height = mContent.scrollHeight + "px";
                var mHeader = new accordionHeader(mHeaderTd,mContent,kapanir,kapali, varsayilan,mAccordion,openover);
                mHeaders.push(mHeader);
            }
        }
        mAccordion.headers = mHeaders;
    }
}
