/**
 * aui-actionsheet.js
 * @author 流浪男
 * Licensed under the MIT license.
 * http://www.opensource.org/licenses/mit-license.php
 */
(function(window, undefined) {
    "use strict";
    var auiActionsheet = function() {};
    var isShow = false;
    auiActionsheet.prototype = {
        init: function(params, callback) {
            this.frameBounces = params.frameBounces;
            this.title = params.title;
            this.buttons = params.buttons;
            this.cancelTitle = params.cancelTitle;
            this.destructiveTitle = params.destructiveTitle;
            this.maskDiv;
            this.actionsheetDiv;
            var self = this;
            self.open(params, callback);
        },
        open: function(params, callback) {
            var titleHtml = '',
                buttonsHtml = '',
                destructiveHtml = '',
                cancelHtml = '',
                btnHtml = '';
            var self = this;
            if (self.actionsheetDiv || (!self.title && !self.buttons && !self.cancelTitle && !self.destructiveTitle)) return;
            if (!self.maskDiv) {
                self.maskDiv = document.createElement("div");
                self.maskDiv.className = "aui-mask";
                document.body.appendChild(self.maskDiv);
            }
            self.actionsheetDiv = document.createElement("div");
            self.actionsheetDiv.className = "aui-actionsheet";
            document.body.appendChild(self.actionsheetDiv);
            if (self.title) {
                titleHtml = '<div class="aui-actionsheet-title aui-border-b aui-font-size-12">' + self.title + '</div>';
            }
            if (self.buttons && self.buttons.length) {
                for (var i = 0; i < self.buttons.length; i++) {
                    if (i == self.buttons.length - 1) {
                        buttonsHtml += '<div class="aui-actionsheet-btn-item">' + self.buttons[i] + '</div>';
                    } else {
                        buttonsHtml += '<div class="aui-actionsheet-btn-item aui-border-b">' + self.buttons[i] + '</div>';
                    }
                }
            }
            if (self.destructiveTitle) {
                destructiveHtml = '<div class="aui-actionsheet-btn-item aui-border-t aui-text-danger">' + self.destructiveTitle + '</div>';
            } else {
                var destructiveHtml = '';
            }
            if (self.title || (self.buttons && self.buttons.length)) {
                btnHtml = '<div class="aui-actionsheet-btn">' + titleHtml + '' + buttonsHtml + '' + destructiveHtml + '</div>';
            }
            if (self.cancelTitle) {
                cancelHtml = '<div class="aui-actionsheet-btn"><div class="aui-actionsheet-btn-item">' + self.cancelTitle + '</div></div>';
            }
            self.actionsheetDiv.insertAdjacentHTML('beforeend', btnHtml + cancelHtml);
            var actionsheetHeight = document.querySelector(".aui-actionsheet").offsetHeight;
            self.maskDiv.classList.add("aui-mask-in");
            self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0,0,0)";
            self.actionsheetDiv.style.opacity = 1;
            self.actionsheetDiv.addEventListener("touchmove", function(event) {
                event.preventDefault();
            })
            self.maskDiv.addEventListener("touchmove", function(event) {
                event.preventDefault();
            })
            if (typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces) {
                api.setFrameAttr({
                    bounces: false
                });
            }
            var actionsheetButtons = document.querySelectorAll(".aui-actionsheet-btn-item");
            if (actionsheetButtons && actionsheetButtons.length > 0) {
                setTimeout(function() {
                    self.maskDiv.onclick = function() {
                        self.close('1');
                        return;
                    };
                    for (var ii = 0; ii < actionsheetButtons.length; ii++) {
                        (function(e) {
                            actionsheetButtons[e].onclick = function() {
                                if (callback) {
                                    callback({
                                        buttonIndex: e + 1,
                                        buttonTitle: this.textContent
                                    });
                                };
                                self.close('0');
                                return;
                            }
                        })(ii)
                    }
                }, 350)
            }
        },
        close: function(isSendEvent) {
            if (isSendEvent == '1') {
                api.sendEvent({
                    name: 'closeactionsheet'
                });
            }
            var self = this;
            if (typeof(api) != 'undefined' && typeof(api) == 'object' && self.frameBounces) {
                api.setFrameAttr({
                    bounces: true
                });
            }
            if (self.actionsheetDiv) {
                var actionsheetHeight = self.actionsheetDiv.offsetHeight;
                self.actionsheetDiv.style.webkitTransform = self.actionsheetDiv.style.transform = "translate3d(0," + actionsheetHeight + "px,0)";
                self.maskDiv.style.opacity = 0;
                setTimeout(function() {
                    if (self.maskDiv) {
                        self.maskDiv.parentNode.removeChild(self.maskDiv);
                    }
                    self.actionsheetDiv.parentNode.removeChild(self.actionsheetDiv);
                    self.actionsheetDiv = self.maskDiv = false;
                }, 300)
            }
        }
    };
    window.auiActionsheet = auiActionsheet;
})(window);
