define(["sugar-web/graphics/palette", "mustache"], function(palette, mustache) { var trigopalette = {}; var isIos = (navigator.userAgent.match(/iPad|iPhone|iPod/g) ? true : false ) trigopalette.trigoPalette = function(invoker, primaryText) { palette.Palette.call(this, invoker, primaryText); this.trigoChangeEvent = document.createEvent("CustomEvent"); this.trigoChangeEvent.initCustomEvent('trigoClick', true, true, {}); this.template = '' + '{{#rows}}' + '' + '{{#.}}' + '' + '' + '' + '{{/.}}' + '' + '{{/rows}}' + ''; var trigoElem = document.createElement('table'); trigoElem.className = "trigos"; var trigoData = { rows: [ [{ title: "COS", value: "cos(", backgroundSvg: "icons/trigonometry-cos.svg" }, { title: "SIN", value: "sin(", backgroundSvg: "icons/trigonometry-sin.svg" }, { "title": "TAN", value: "tan(", backgroundSvg: "icons/trigonometry-tan.svg" }], [{ "title": "ACOS", value: "acos(", backgroundSvg: "icons/trigonometry-acos.svg" }, { "title": "ASIN", value: "asin(", backgroundSvg: "icons/trigonometry-asin.svg" }, { "title": "ATAN", value: "atan(", backgroundSvg: "icons/trigonometry-atan.svg" }], [{ "title": "COSH", value: "cosh(", backgroundSvg: "icons/trigonometry-cosh.svg" }, { "title": "SINH", value: "sinh(", backgroundSvg: "icons/trigonometry-sinh.svg" }, { "title": "TANH", value: "tanh(", backgroundSvg: "icons/trigonometry-tanh.svg" }] ] }; trigoElem.innerHTML = mustache.render(this.template, trigoData); this.setContent([trigoElem]); // Pop-down the palette when a item in the menu is clicked. this.buttons = trigoElem.querySelectorAll('button'); var that = this; function popDownOnButtonClick(event) { that.trigoChangeEvent.detail.value = event.target.value; that.getPalette().dispatchEvent(that.trigoChangeEvent); that.popDown(); } for (var i = 0; i < this.buttons.length; i++) { if (isIos) { this.buttons[i].addEventListener('touchstart', popDownOnButtonClick); } else { this.buttons[i].addEventListener('click', popDownOnButtonClick); } } }; var setColor = function(index) { // Click the nth button var event = document.createEvent("MouseEvents"); event.initEvent("click", true, true); this.buttons[index].dispatchEvent(event); }; var addEventListener = function(type, listener, useCapture) { return this.getPalette().addEventListener(type, listener, useCapture); }; trigopalette.trigoPalette.prototype = Object.create(palette.Palette.prototype, { setColor: { value: setColor, enumerable: true, configurable: true, writable: true }, addEventListener: { value: addEventListener, enumerable: true, configurable: true, writable: true } }); return trigopalette; });