I18n.translations = {
    en: {
        location_title: 'Location',
        location_description: 'Share your location',
        location_address: 'Address',

        browse_title: 'Browser',
        browse_description: 'Launch the browser',

        send_title: 'Send ETH',
        send_description: 'Send a payment',

        request_title: 'Request ETH',
        request_description: 'Request a payment',
        request_requesting: 'Requesting ',

        validation_title: 'Amount',
        validation_amount_specified: 'Amount must be specified',
        validation_invalid_number: 'Amount is not valid number',
        validation_insufficient_amount: 'Insufficient funds for gas * price + value (balance '
    },
    ru: {
        location_title: 'Местоположение',
        location_description: 'Поделитесь своим местоположением',
        location_address: 'Адрес',

        browse_title: 'Браузер',
        browse_description: 'Запуск браузера',

        send_title: 'Отправить ETH',
        send_description: 'Отправить платеж',

        request_title: 'Запросить ETH',
        request_description: 'Запросить платеж',
        request_requesting: 'Запрос ',

        validation_title: 'Сумма',
        validation_amount_specified: 'Необходимо указать сумму',
        validation_invalid_number: 'Сумма не является действительным числом',
        validation_insufficient_amount: 'Недостаточно ETH на балансе ('
    },
    af: {
        location_title: 'Ligging',
        location_description: 'Deel jou ligging',
        location_address: 'Addres',

        browse_title: 'Webblaaier',
        browse_description: 'Begin die webblaaier',

        send_title: 'Stuur ETH',
        send_description: 'Stuur \'n betaling',

        request_title: 'Versoek ETH',
        request_description: 'Versoek \'n betaling',
        request_requesting: 'Besig met versoek ',

        validation_title: 'Bedrag',
        validation_amount_specified: 'Bedrag moet gespesifiseer word',
        validation_invalid_number: 'Bedrag is nie \'n geldige syfer nie',
        validation_insufficient_amount: 'Nie genoeg ETH in rekening nie ('
    },
    ar: {
        location_title: 'الموقع',
        location_description: 'شارك موقعك',
        location_address: 'العنوان',

        browse_title: 'المتصفح',
        browse_description: 'تشغيل المتصفح',

        send_title: 'إرسال ETH',
        send_description: 'إرسال مدفوعات',

        request_title: 'طلب ETH',
        request_description: 'طلب مدفوعات',
        request_requesting: 'مُطَالَبَة ',

        validation_title: 'المبلغ',
        validation_amount_specified: 'يجب تحديد المبلغ',
        validation_invalid_number: 'المبلغ المحدد غير صحيح',
        validation_insufficient_amount: 'لا يوجد ETH  كافي بالحساب ('
    },
    'zh-hant': {
        location_title: '位置',
        location_description: '分享您的位置',
        location_address: '地址',

        browse_title: '流覽器',
        browse_description: '啟動流覽器',

        send_title: '發送 ETH',
        send_description: '發送一筆付款',

        request_title: '請求 ETH',
        request_description: '請求一筆付款',
        request_requesting: '正在請求 ',

        validation_title: '金額',
        validation_amount_specified: 'ي未指定金額',
        validation_invalid_number: '金額數字無效',
        validation_insufficient_amount: '餘額中 ETH 不足 ('
    },
    'zh-hans': {
        location_title: '位置',
        location_description: '分享你的位置',
        location_address: '地址',

        browse_title: '浏览器',
        browse_description: '启动浏览器',

        send_title: '发送ETH',
        send_description: '付款',

        request_title: '请求ETH',
        request_description: '要求付款',
        request_requesting: '正在请求 ',

        validation_title: '金額',
        validation_amount_specified: '必须指定金额',
        validation_invalid_number: '金额不是有效数字',
        validation_insufficient_amount: 'ETH余额不足 ('
    },
    'zh-yue': {
        location_title: '所在位置',
        location_description: '分享所在位置',
        location_address: '地址',

        browse_title: '瀏覽器',
        browse_description: '啟動瀏覽器',

        send_title: '發送ETH',
        send_description: '發送付款',

        request_title: '徵求ETH',
        request_description: '徵求付款',
        request_requesting: '徵求中 ',

        validation_title: '金額',
        validation_amount_specified: '必須指定金額',
        validation_invalid_number: '指定金額並非有效數字',
        validation_insufficient_amount: '沒有足夠ETH餘額 ('
    },
    'zh-wuu': {
        location_title: '位置',
        location_description: '分享您的位置',
        location_address: '地址',

        browse_title: '浏览器',
        browse_description: '启动浏览器',

        send_title: '发送ETH',
        send_description: '发送付款',

        request_title: '请求ETH',
        request_description: '请求付款',
        request_requesting: '请求中 ',

        validation_title: '金额',
        validation_amount_specified: '金额必须明确',
        validation_invalid_number: '金额不是一个有效数字',
        validation_insufficient_amount: 'ETH余额不足 ('
    },
    nl: {
        location_title: 'Locatie',
        location_description: 'Deel je locatie',
        location_address: 'Adres',

        browse_title: 'Browser',
        browse_description: 'Start de browser',

        send_title: 'Stuur ETH',
        send_description: 'Stuur een betaling',

        request_title: 'Vraag ETH aan',
        request_description: 'Vraag om een betaling',
        request_requesting: 'Wordt aangevraagd ',

        validation_title: 'Bedrag',
        validation_amount_specified: 'Bedrag moet worden opgegeven',
        validation_invalid_number: 'Bedrag is geen geldig nummer',
        validation_insufficient_amount: 'Niet genoeg ETH op saldo ('
    },
    fr: {
        location_title: 'Emplacement',
        location_description: 'Partager votre emplacement',
        location_address: 'Adresse',

        browse_title: 'Navigateur',
        browse_description: 'Lancer le navigateur',

        send_title: 'Envoyer l\'ETH',
        send_description: 'Envoyer un paiement',

        request_title: 'Demander l\'ETH',
        request_description: 'Demander un paiement',
        request_requesting: 'Demande en cours: ',

        validation_title: 'Montant',
        validation_amount_specified: 'Le montant doit être spécifié',
        validation_invalid_number: 'Le montant n\'est pas un nombre valide',
        validation_insufficient_amount: 'Pas assez d\'ETH sur le solde ('
    },
    de: {
        location_title: 'Ort',
        location_description: 'Teilen Sie Ihren Ort',
        location_address: 'Adresse',

        browse_title: 'Browser',
        browse_description: 'Browser starten',

        send_title: 'ETH abschicken',
        send_description: 'Zahlung senden',

        request_title: 'ETH anfragen',
        request_description: 'Zahlung anfragen',
        request_requesting: 'Anfrage: ',

        validation_title: 'Betrag',
        validation_amount_specified: 'Betrag muss angegeben werden',
        validation_invalid_number: 'Betrag ist keine gültige Zahl',
        validation_insufficient_amount: 'Nicht genügend ETH auf dem Konto ('
    },
    hi: {
        location_title: 'स्थान',
        location_description: 'अपना स्थान साझा करें',
        location_address: 'पता',

        browse_title: 'ब्राउज़र',
        browse_description: 'ब्राउज़र लॉन्च करें',

        send_title: 'ETH भेजें',
        send_description: 'भुगतान भेजें',

        request_title: 'ETH का अनुरोध करें',
        request_description: 'भुगतान का अनुरोध करें',
        request_requesting: 'अनुरोध किया जा रहा है ',

        validation_title: 'राशि',
        validation_amount_specified: 'राशि निर्दिष्ट की जानी चाहिए',
        validation_invalid_number: 'राशि वैध संख्या नहीं है',
        validation_insufficient_amount: 'बैलेंस पर पर्याप्त ETH नहीं है ('
    },
    hu: {
        location_title: 'Helyszín',
        location_description: 'Helyszín megosztása',
        location_address: 'Cím',

        browse_title: 'Böngésző',
        browse_description: 'Böngésző indítása',

        send_title: 'ETH küldése',
        send_description: 'Kifizetés küldése',

        request_title: 'ETH igénylése',
        request_description: 'Fizetés igénylése',
        request_requesting: 'Igénylés ',

        validation_title: 'Összeg',
        validation_amount_specified: 'Az összeget meg kell határozni',
        validation_invalid_number: 'Az összeg nem egy elfogadott szám',
        validation_insufficient_amount: 'Nincs elég ETH a számlán ('
    },
    it: {
        location_title: 'Posizione',
        location_description: 'Condividi la tua posizione',
        location_address: 'Indirizzo',

        browse_title: 'Browser',
        browse_description: 'Lancia il browser',

        send_title: 'Invia ETH',
        send_description: 'Invia un pagamento',

        request_title: 'Richiedi ETH',
        request_description: 'Richiedi un pagamento',
        request_requesting: 'Richiesta in corso: ',

        validation_title: 'Ammontare',
        validation_amount_specified: 'L\'ammontare deve essere specificato',
        validation_invalid_number: 'L\'ammontare non è un numero valido',
        validation_insufficient_amount: 'ETH insufficiente sul bilancio ('
    },
    ja: {
        location_title: '位置',
        location_description: '位置情報を共有',
        location_address: 'アドレス',

        browse_title: 'ブラウザ',
        browse_description: 'ブラウザを起動',

        send_title: 'ETHを送信',
        send_description: '支払いを送信',

        request_title: 'ETHをリクエスト',
        request_description: '支払いをリクエスト',
        request_requesting: 'リクエスト中 ',

        validation_title: '金額',
        validation_amount_specified: '金額を特定する必要があります',
        validation_invalid_number: '金額は有効な数字ではありません',
        validation_insufficient_amount: '残高に十分なETHがありません('
    },
    ko: {
        location_title: '위치',
        location_description: '내 위치 공유하기',
        location_address: '주소',

        browse_title: '브라우저',
        browse_description: '브라우저 시작하기',

        send_title: 'ETH 보내기',
        send_description: '지불금 보내기',

        request_title: 'ETH 요청',
        request_description: '지불금 요청',
        request_requesting: '요청 중 ',

        validation_title: '금액',
        validation_amount_specified: '금액을 지정해야 합니다',
        validation_invalid_number: '금액이 유효한 숫자가 아닙니다',
        validation_insufficient_amount: 'ETH 잔고가 부족합니다 ('
    },
    pl: {
        location_title: 'Lokalizacja',
        location_description: 'Udostępnij swoją lokalizację',
        location_address: 'Adres',

        browse_title: 'Przeglądarka',
        browse_description: 'Uruchom przeglądarkę',

        send_title: 'Wyślij ETH',
        send_description: 'Wyślij płatność',

        request_title: 'Poproś o ETH',
        request_description: 'Poproś o płatność',
        request_requesting: 'Przesyłanie prośby ',

        validation_title: 'Kwota',
        validation_amount_specified: 'Należy określić kwotę',
        validation_invalid_number: 'Kwota nie jest prawidłową liczbą',
        validation_insufficient_amount: 'Brak wystarczającej liczby ETH na koncie ('
    },
    'pt-br': {
        location_title: 'Localização',
        location_description: 'Compartilhar sua localização',
        location_address: 'Endereço',

        browse_title: 'Navegador',
        browse_description: 'Abrir o navegador',

        send_title: 'Enviar ETH',
        send_description: 'Enviar um pagamento',

        request_title: 'Solicitar ETH',
        request_description: 'Solicitar um pagamento',
        request_requesting: 'Solicitando ',

        validation_title: 'Quantia',
        validation_amount_specified: 'É necessário especificar a quantia',
        validation_invalid_number: 'A quantia não é um número válido',
        validation_insufficient_amount: 'ETH insuficiente no saldo ('
    },
    'pt-pt': {
        location_title: 'Location',
        location_description: 'Partilhar a sua localização',
        location_address: 'Endereço',

        browse_title: 'Navegador',
        browse_description: 'Abrir o navegador',

        send_title: 'Enviar ETH',
        send_description: 'Enviar um pagamento',

        request_title: 'Solicitar ETH',
        request_description: 'Solicitar um pagamento',
        request_requesting: 'A solicitar ',

        validation_title: 'Montante',
        validation_amount_specified: 'O montante deve ser especificado',
        validation_invalid_number: 'O montante não é um número válido',
        validation_insufficient_amount: 'Não há ETH suficiente no saldo ('
    },
    ro: {
        location_title: 'Locație',
        location_description: "Partajează locația",
        location_address: 'Adresă',

        browse_title: 'Browser',
        browse_description: 'Lansare browser',

        send_title: 'Trimite ETH',
        send_description: 'Trimite o plată',

        request_title: 'Solicită ETH',
        request_description: 'Solicită o plată',
        request_requesting: 'Se solicită ',

        validation_title: 'Sumă',
        validation_amount_specified: 'Trebuie menționată o sumă',
        validation_invalid_number: 'Suma nu are forma unui număr valid',
        validation_insufficient_amount: 'Sold ETH insuficient ('
    },
    sl: {
        location_title: 'Lokacija',
        location_description: 'Deli svojo lokacijo',
        location_address: 'Naslov',

        browse_title: 'Brskalnik',
        browse_description: 'Zaženi brskalnik',

        send_title: 'Pošlji ETH',
        send_description: 'Pošlji plačilo',

        request_title: 'Zahtevaj ETH',
        request_description: 'Zahtevaj plačilo',
        request_requesting: 'Zahtevam ',

        validation_title: 'Vsota',
        validation_amount_specified: 'Vsota mora biti izrecno navedena',
        validation_invalid_number: 'Vsota ni veljavna številka',
        validation_insufficient_amount: 'Stanje ETH na računu je prenizko ('
    },
    es: {
        location_title: 'Ubicación',
        location_description: 'Comparte tu ubicación',
        location_address: 'Dirección',

        browse_title: 'Navegador',
        browse_description: 'Iniciar el navegador',

        send_title: 'Enviar ETH ',
        send_description: 'Enviar un pago',

        request_title: 'Solicitar ETH',
        request_description: 'Solicitar un pago',
        request_requesting: 'Solicitando ',

        validation_title: 'Cantidad',
        validation_amount_specified: 'Hay que especificar la cantidad',
        validation_invalid_number: 'La cantidad no es un número válido',
        validation_insufficient_amount: 'No hay suficiente ETH en conjunto ('
    },
    'es-ar': {
        location_title: 'Ubicación',
        location_description: 'Comparte tu ubicación',
        location_address: 'Dirección',

        browse_title: 'Navegador',
        browse_description: 'Iniciar navegador',

        send_title: 'Enviar ETH',
        send_description: 'Enviar un pago',

        request_title: 'Solicitar ETH',
        request_description: 'Solicitar un pago',
        request_requesting: 'Solicitando ',

        validation_title: 'Monto',
        validation_amount_specified: 'Debes especificar el monto',
        validation_invalid_number: 'El monto no es un número válido',
        validation_insufficient_amount: 'No tienes suficiente ETH en tu saldo ('
    },
    sw: {
        location_title: 'Eneo',
        location_description: 'Shiriki eneo lako',
        location_address: 'Anwani',

        browse_title: 'Programu ya utafutaji',
        browse_description: 'Zindua programu ya utafutaji',

        send_title: 'Tuma ETH',
        send_description: 'Tuma malipo',

        request_title: 'Omba ETH',
        request_description: 'Omba malipo',
        request_requesting: 'Kuomba ',

        validation_title: 'Kiasi',
        validation_amount_specified: 'Kiasi lazima kifafanuliwe',
        validation_invalid_number: 'Kiasi si nambari halali',
        validation_insufficient_amount: 'ETH haitoshi kwenye salio ('
    },
    sv: {
        location_title: 'Plats',
        location_description: 'Dela din plats',
        location_address: 'Adress',

        browse_title: 'Webbläsare',
        browse_description: 'Starta webbläsaren',

        send_title: 'Skicka ETH',
        send_description: 'Skicka en betalning',

        request_title: 'Begär ETH',
        request_description: 'Begär en betalning',
        request_requesting: 'Begär ',

        validation_title: 'Belopp',
        validation_amount_specified: 'Beloppet måste anges',
        validation_invalid_number: 'Beloppet är inte ett giltigt nummer',
        validation_insufficient_amount: 'Inte tillräcklig ETH på balansen ('
    },
    'fr-ch': {
        location_title: 'Emplacement',
        location_description: 'Partagez votre emplacement',
        location_address: 'Adresse',

        browse_title: 'Navigateur',
        browse_description: 'Lancer le navigateur',

        send_title: 'Envoyer des ETH',
        send_description: 'Envoyer un paiement',

        request_title: 'Demander des ETH',
        request_description: 'Demander un paiement',
        request_requesting: 'Demande ',

        validation_title: 'Montant',
        validation_amount_specified: 'Le montant doit être spécifié',
        validation_invalid_number: 'Le montant n\'est pas un nombre valable',
        validation_insufficient_amount: 'Pas assez d\'ETH sur le solde ('
    },
    'de-ch': {
        location_title: 'Standort',
        location_description: 'Teile deinen Standort',
        location_address: 'Adresse',

        browse_title: 'Browser',
        browse_description: 'Starte den Browser',

        send_title: 'Sende ETH',
        send_description: 'Sende eine Zahlung',

        request_title: 'Fordere ETH an',
        request_description: 'Eine Zahlung anfordern',
        request_requesting: 'Anfordern ',

        validation_title: 'Betrag',
        validation_amount_specified: 'Der Betrag muss angegeben werden',
        validation_invalid_number: 'Der Betrag ist nicht gültig',
        validation_insufficient_amount: 'Nicht genug ETH vorhanden ('
    },
    'it-ch': {
        location_title: 'Posizione',
        location_description: 'Condividi la tua posizione',
        location_address: 'Indirizzo',

        browse_title: 'Browser',
        browse_description: 'Avvia il browser',

        send_title: 'Invia ETH',
        send_description: 'Invia un pagamento',

        request_title: 'Richiedi ETH',
        request_description: 'Richiedi un pagamento',
        request_requesting: 'Richiesta in corso: ',

        validation_title: 'Importo',
        validation_amount_specified: 'Specificare l\'importo',
        validation_invalid_number: 'Importo inserito non valido',
        validation_insufficient_amount: 'Saldo ETH non sufficiente ('
    },
    th: {
        location_title: 'ตำแหน่ง',
        location_description: 'แชร์ตำแหน่งของคุณ',
        location_address: 'ที่อยู่',

        browse_title: 'เบราว์เซอร์',
        browse_description: 'เปิดเบราว์เซอร์',

        send_title: 'ส่ง ETH',
        send_description: 'ส่งการชำระเงิน',

        request_title: 'ร้องขอ ETH',
        request_description: 'ร้องขอการชำระเงิน',
        request_requesting: 'กำลังร้องขอ ',

        validation_title: 'จำนวน',
        validation_amount_specified: 'จำเป็นต้องระบุจำนวน',
        validation_invalid_number: 'จำนวนไม่ใช่หมายเลขที่ถูกต้อง',
        validation_insufficient_amount: 'มี ETH ไม่เพียงพอในยอดคงเหลือ ('
    },
    tr: {
        location_title: 'Konum',
        location_description: 'Konumunuzu paylaşın',
        location_address: 'Adres',

        browse_title: 'Tarayıcı',
        browse_description: 'Tarayıcıyı başlat',

        send_title: 'ETH gönder',
        send_description: 'Bir ödeme gönder',

        request_title: 'ETH iste',
        request_description: 'Bir ödeme iste',
        request_requesting: 'İsteniyor ',

        validation_title: 'Miktar',
        validation_amount_specified: 'Miktar belirtilmelidir',
        validation_invalid_number: 'Miktar geçerli bir sayı değil',
        validation_insufficient_amount: 'Yeterli ETH bakiyesi yok ('
    },
     uk: {
        location_title: 'Місцезнаходження',
        location_description: 'Поділіться своїм місцезнаходженням',
        location_address: 'Адреса',

        browse_title: 'Браузер',
        browse_description: 'Запустити браузер',

        send_title: 'Надіслати ETH',
        send_description: 'Надіслати платіж',

        request_title: 'Запит ETH',
        request_description: 'Запит платежу',
        request_requesting: 'Запит ',

        validation_title: 'Сума',
        validation_amount_specified: 'Сума повинна бути вказана',
        validation_invalid_number: 'Сума не дійсне число',
        validation_insufficient_amount: 'Не вистачає ETH на балансі ('
    },
    ur: {
        location_title: 'مقام',
        location_description: 'اپنا مقام بتائیں',
        location_address: 'پتہ',

        browse_title: 'براؤزر',
        browse_description: 'براؤزر کھولیں',

        send_title: 'ETH بھیجیں',
        send_description: 'ادائیگی کریں',

        request_title: 'ETH کی درخواست دیں',
        request_description: 'ادائیگی کی درخواست دیں',
        request_requesting: 'درخواست کی جارہی ہے ',

        validation_title: 'رقم',
        validation_amount_specified: 'رقم درج کی جانی چاہیے۔ ',
        validation_invalid_number: 'رقیم درست ہندسے نہیں ہیں',
        validation_insufficient_amount: 'ETH میں کافی بیلنس نہیں ہے ('
    },
    vi: {
        location_title: 'Vị trí',
        location_description: 'Chia sẻ vị trí của bạn',
        location_address: 'Địa chỉ',

        browse_title: 'Trình duyệt',
        browse_description: 'Mở trình duyệt',

        send_title: 'Gửi ETH',
        send_description: 'Gửi một khoản thanh toán',

        request_title: 'Yêu cầu ETH',
        request_description: 'Yêu cầu một khoản thanh toán',
        request_requesting: 'Đang yêu cầu ',

        validation_title: 'Số tiền',
        validation_amount_specified: 'Số tiền phải được xác định',
        validation_invalid_number: 'Số tiền không phải là một số hợp lệ',
        validation_insufficient_amount: 'Không đủ ETH trong số dư ('
    }
};

status.command({
    name: "location",
    icon: "location",
    title: I18n.t('location_title'),
    description: I18n.t('location_description'),
    color: "#a187d5",
    preview: function (params) {
        var text = status.components.text(
            {
                style: {
                    marginTop: 5,
                    marginHorizontal: 0,
                    fontSize: 14,
                    fontFamily: "font",
                    color: "black"
                }
            }, params.address);
        var uri = "https://maps.googleapis.com/maps/api/staticmap?center="
            + params.address
            + "&size=100x100&maptype=roadmap&key=AIzaSyBNsj1qoQEYPb3IllmWMAscuXW0eeuYqAA&language=en"
            + "&markers=size:mid%7Ccolor:0xff0000%7Clabel:%7C"
            + params.address;

        var image = status.components.image(
            {
                source: {uri: uri},
                style: {
                    width: 100,
                    height: 100
                }
            }
        );

        return status.components.view({}, [text, image]);
    },
    shortPreview: function(params) {
        return status.components.text(
            {},
            I18n.t('location_title') + ": " + params.address
        );
    }
}).param({
    name: "address",
    type: status.types.TEXT,
    placeholder: I18n.t('location_address')
});


function browseSuggestions(params) {
    if (params.url && params.url !== "undefined" && params.url != "") {
        var url = params.url;
        if (!/^[a-zA-Z-_]+:/.test(url)) {
            url = 'http://' + url;
        }

        return {webViewUrl: url};
    }
}

status.command({
    name: "browse",
    title: I18n.t('browse_title'),
    description: I18n.t('browse_description'),
    color: "#ffa500",
    fullscreen: true,
    suggestionsTrigger: 'on-send',
    params: [{
        name: "url",
        suggestions: browseSuggestions,
        type: status.types.TEXT
    }]
});

function validateSend(params, context) {
    if (!context.to) {
        return {
            errors: [
                status.components.validationMessage(
                    "Wrong address",
                    "Recipient address must be specified"
                )
            ]
        };
    }
    if (!params.amount) {
        return {
            errors: [
                status.components.validationMessage(
                    I18n.t('validation_title'),
                    I18n.t('validation_amount_specified')
                )
            ]
        };
    }

    try {
        var val = web3.toWei(params.amount.replace(",", "."), "ether");
        if (val <= 0) { throw new Error(); }
    } catch (err) {
        return {
            errors: [
                status.components.validationMessage(
                    I18n.t('validation_title'),
                    I18n.t('validation_invalid_number')
                )
            ]
        };
    }

    var balance = web3.eth.getBalance(context.from);
    var estimatedGas = web3.eth.estimateGas({
        from: context.from,
        to: context.to,
        value: val
    });
    if (bn(val).plus(bn(estimatedGas)).greaterThan(bn(balance))) {
        return {
            errors: [
                status.components.validationMessage(
                    I18n.t('validation_title'),
                    I18n.t('validation_insufficient_amount')
                    + web3.fromWei(balance, "ether")
                    + " ETH)"
                )
            ]
        };
    }
}

function sendTransaction(params, context) {
    var data = {
        from: context.from,
        to: context.to,
        value: web3.toWei(params.amount.replace(",", "."), "ether")
    };

    try {
        return web3.eth.sendTransaction(data);
    } catch (err) {
        return {error: err};
    }
}

var send = {
    name: "send",
    icon: "money_white",
    color: "#5fc48d",
    title: I18n.t('send_title'),
    description: I18n.t('send_description'),
    params: [{
        name: "amount",
        type: status.types.NUMBER
    }],
    preview: function (params, context) {
        var amountStyle = {
            fontSize: 36,
            color: "#000000",
            height: 40
        };

        var amount = status.components.view(
            {
                flexDirection: "column",
                alignItems: "flex-end",
            },
            [status.components.text(
                {
                    style: amountStyle,
                    font: "light"
                },
                status.localizeNumber(params.amount, context.delimiter, context.separator)
            )]);

        var currency = status.components.view(
            {
                style: {
                    flexDirection: "column",
                    justifyContent: "flex-end",
                    paddingBottom: 0
                }
            },
            [status.components.text(
                {
                    style: {
                        color: "#9199a0",
                        fontSize: 16,
                        lineHeight: 18,
                        marginLeft: 7.5
                    }
                },
                "ETH"
            )]
        );

        return status.components.view(
            {
                style: {
                    flexDirection: "row",
                    justifyContent: "space-between",
                    marginTop: 8,
                    marginBottom: 8
                }
            },
            [amount, currency]
        );
    },
    shortPreview: function (params, context) {
        return status.components.text(
            {},
            I18n.t('send_title') + ": "
            + status.localizeNumber(params.amount, context.delimiter, context.separator)
            + " ETH"
        );
    },
    handler: sendTransaction,
    validator: validateSend
};

status.command(send);
status.response(send);

status.command({
    name: "request",
    title: I18n.t('request_title'),
    color: "#7099e6",
    description: I18n.t('request_description'),
    params: [{
        name: "amount",
        type: status.types.NUMBER
    }],
    handler: function (params) {
        return {
            event: "request",
            params: [params.amount],
            request: {
                command: "send",
                params: {
                    amount: params.amount
                }
            }
        };
    },
    preview: function (params, context) {
        return I18n.t('request_requesting')
            + status.localizeNumber(params.amount, context.delimiter, context.separator)
            + " ETH";
    },
    shortPreview: function (params, context) {
        return status.components.text(
            {},
            I18n.t('request_requesting') + " "
            + status.localizeNumber(params.amount, context.delimiter, context.separator)
            + " ETH"
        );
    },
    validator: function(params) {
        try {
            var val = web3.toWei(params.amount.replace(",", "."), "ether");
            if (val <= 0) { throw new Error(); }
        } catch (err) {
            return {
                errors: [
                    status.components.validationMessage(
                        I18n.t('validation_title'),
                        I18n.t('validation_invalid_number')
                    )
                ]
            };
        }
    }
});