<reponame>icreator/DatachainsWorldSite
# -*- coding: utf-8 -*-
# try something like

shareA_ID = 9
ERA = 10000000
ICO_PERC = 10
ERA_PERC = ICO_PERC * ERA / 100

def sa_list():
    from decimal import Decimal
    
    cash_A = db.cash[shareA_ID]
    total = -cash_A.own_bal

    ERA_COST = total / ERA_PERC

    h = CAT(
        DIV( DIV(CENTER(B(T('Акционер'))), _class='col-sm-4'),
              DIV(CENTER(B(T('Взнос'))), _class='col-sm-2'),
              DIV(CENTER(B(T('Акций'))), _class='col-sm-2'),
              DIV(CENTER(B(T('Доля'))), _class='col-sm-2'),
        _class='row')
        )
    odd = False
    sum_rub = 0
    sum_era = 0
    for r in db((db.man_bals.cash_id == shareA_ID)
                & (db.man_bals.bal > 0)).select(orderby=db.man_bals.bal):
        man = db.men[ r.man_id ]
        shares = r.bal / Decimal(ERA_COST)
        sum_rub += r.bal
        sum_era += shares
        h += DIV( DIV(man.name or man.ref_key, _class='col-sm-4'),
                  DIV(SPAN(round(float(r.bal),2), ' ', TAG.i(_class='fa fa-rub'), _class='pull-right'), _class='col-sm-2'),
                  DIV(SPAN(round(float(shares), 2), ' ', 'ERA', _class='pull-right'), _class='col-sm-2'),
                  DIV(SPAN(round(float(100 * shares / Decimal(ERA)), 6), ' ', '%', _class='pull-right'), _class='col-sm-2'),
            _class='row' + (' odd' if odd else ''))
        odd = not odd

    #h += DIV( DIV(CENTER(B(T('ИТОГО'))), _class='col-sm-4'),
    #          DIV(CENTER(B(round(float(sum_rub)),2)), _class='col-sm-2'),
    #          DIV(CENTER(B(int(sum_era))), _class='col-sm-2'),
    #          DIV(CENTER(B()), _class='col-sm-2'),
    #    _class='row')

    return h

def rules_crypto_pay():
    h=DIV(
        H3(T('Оплаты биткоинами и другим крипто-имуществом')),
        P(T('При оплате инвестиционного раунда крипто-имуществом (например биткоинами) необходимо делать перевод с адреса, которым Вы действительно обладаете. Для того чтобы убедиться что Вы переводите с нужного адреса используйте "управление выходами", которое можно включить в настройках программы-кошелька. Дело в том, что оригинальная программа-кошелек при каждом платеже создаёт новый адрес и пересылает сдачу на него, так что Вы даже об этом не знаете. Поэтому Вам нужно включить управление входами платежей или использовать клиент-кошельки, которые не создают новых адресов и возвращают сдачу всегда на Ваш начальный адрес, который Вы видите в списке адресов получения платежей'), '. ',
        T('Например я использую кошелёк от'),' ',A('MultiBit.org', _href='http://MultiBit.org', _target='_blank', _class='white'),
                T(' - он всегда складывает сдачу на Ваш единственный адрес в файле-кошельке. А так же с помощью его можно создать несколько файлов-кошельков и управлять ими из программы.'),
        ),
        P('Если Вы всё же используете оригинальный кошелек, то Вам нужно перевести достаточную для оплаты сумму на Ваш основной адрес - послать монеты самому себе, а затем выполнить следующие действия:'),
        OL(
            CAT(T('откройте вкладку "Отображение" в настройках программы и включите там галочку "управлять входами монет"'),
            BR(),IMG(_src=URL('static','images/to_pay/addrs_out1.png'), _wi_dth=256), BR(), BR()),
            CAT('после чего при отправлении монет Вы сможете управлять адресами, с которых будут отправлены монеты.',BR(),IMG(_src=URL('static','images/to_pay/addrs_out2.png'), _wi_dth=256), BR(), BR()),
            CAT('задайте Ваш адрес откуда спишутся монеты поставив галочку',BR(),IMG(_src=URL('static','images/to_pay/addrs_out3.png'), _wi_dth=256), BR(), BR()),
            CAT('И не забудьте задать Ваш адрес для возврата "сдачи" поставив галочку',BR(),IMG(_src=URL('static','images/to_pay/addrs_out4.png'), _wi_dth=256), BR(), BR()),
            ),
        _style='padding-bottom:30px;',
        )

    
    return h

def go():

    session.forget(response)
    response.title=T('ICO - initial coins offering')
    response.not_show_function = True

    datachain_id = myconf.take('cash.datachain_id')
    datachains_cash_system = db.cash_system[datachain_id]
    cash_f = db.cash[shareA_ID]

    man_id = session.man_id
    man = man_id and db.men[ man_id ]

    man_bal_f = man and db((db.man_bals.man_id == man_id)
                & (db.man_bals.cash_id == shareA_ID)).select().first()

    acc_not_setted = True
    
    hh = ''
    if man:
        if man_bal_f:
            man_accs_f = man_bal_f and db(db.man_accs.bal_id == man_bal_f.id).select()
            if man_accs_f and len(man_accs_f) > 0:
                hh = CAT(SPAN(BR(), '***', XML(T('<span class="orange_b">Кстати</span>, у Вас уже заданы счета')), ':', BR()))
                if man_accs_f and len(man_accs_f) > 0:
                    hh += SPAN(T('для программы'), ' ', B(cash_f.name), BR())
                    for rec in man_accs_f:
                        hh += SPAN(rec.acc, BR())

                acc_not_setted = False

    ol = OL(
        [P(
           XML(T('Для этого <span class="orange_b">скачайте</span> и <span class="orange_b">запустите</span> программу-клиент нашей блокчейн среды')),': ', BR(),
           A(B(T('Загрузить')), _href=URL('cabinet','download'), _target='blank', _class='blue')),
        P(XML(T('Затем <span class="orange_b">получите</span> адрес любого счета в своем кошельке, как это сделать описано на странице загрузки программы')),': ', BR(),
           A(B(T('Счета, аккаунты')), _href=URL('bc3base', 'index#accounts'), _target='blank', _class='blue')),
        P(XML(T('После чего <span class="orange_b">внесите</span> выбранный счёт в своём личном кабинете в разделе "Добавить Счёт для вывода средств", выбрав например Систему Средств:')),
           ' ', B(datachains_cash_system.name, ': ', cash_f.name), ' ',
           A(B(T('Личный кабинет')), _href=URL('cabinet','index#pers'), _target='blank', _class='blue'), BR(),
           '***', T('В результате чего этот счёт появится на странице балансов в соответствующем разделе денег.'), BR(),
           B(T('Внимание! У Вас еще не задан счёт для этой программы!')) if man and acc_not_setted else hh,
           ),
        ])

    h = CAT()
    h += DIV(
        DIV(
            CENTER(H2(XML(T('Как вступить в программу %s') % A(cash_f.name, _href=URL('share_a','index'), _class='white')))),
            H4(T('В первую очередь необходимо задать счёт в личном кабинете для начисления учётных единиц по этой программе'),':'),
            ol,
        _id='list2',
        _class='container'),
        _style='background-color:#fff; color:#222; padding-bottom:30px;')

    h += DIV(
        H4(T('Теперь нужно оплатить взнос в выбранную программу:')),
        OL([
            P(XML(T('<span class="orange_b">Пополните</span> внутренний счёт биткоинами на странице "Балансы", - <span class="orange_b">найдите</span> это Денежное Средство и нажмите кнопку "Пополнить"')),
              XML('<i class="fa fa-circle" ,="" style="color:#77ea00;"></i><i class="fa fa-share" ,="" style="margin-left: -1.5em;"></i>'), '.', BR(),
                 T('Перейти в'), ' ', A(B(T('Балансы')), _href=URL('cab_bals','index#DATACHAINS'), _target='blank', _class='blue')),
            P(XML(T('Или <span class="orange_b">пополните</span> внутренний рублевый счёт через безналичный платеж по реквизитам')), ':', BR(),
                 A(B(T('Контакты')), _href=URL('default','contacts'), _target='blank', _class='blue')),
            P(XML(T('Теперь в своих балансах найдите раздел %s и <span class="orange_b">выберите</span> валюту, которой хотите оплатить взнос, и нажмите кнопку "конвертировать"') % datachains_cash_system.name),
                 ' ', XML('<i class="fa fa-random"></i>'), '.', BR(),
                 T('Перейти в'), ' ', A(B(T('Балансы')), _href=URL('cab_bals','index#DATACHAINS'), _target='blank', _class='blue')),

            P(XML(T('Далее, на страничке обмена <span class="orange_b">задайте</span> величину перевода, <span class="orange_b">выберите</span> нужную программу, например "%s", и совершите его.') % (B(datachains_cash_system.name + ': ' + cash_f.name))
                 ))
                ],
              _start=4),
            BR(),
            P(B(T('Подсказка')),': ', T('Если напрямую с внутреннего счёта для биткоинов нельзя конвертировать средства в нужную программу или деньги, попробуйте это сделать через рублевый счёт, предварительно сконвертировав биткоины с внутреннего счёта в рубли с помощью кнопки "Конвертирровать".')),
            P(B(T('Подсказка')),': ', T('Вы можете скооперироваться со своими друзьями, собрать совместно нужную сумму для получения уровня "Солнца" и потом сделать своих кооператоров своими подписчиками 1-го уровня. Они получат возможность тоже собирать под собой приглашенных до максимального уровня Вашей сети. Также Вы будете чеканить блоки на общий кооперативный котёл. Передать средства другому участнику можно по его номеру телефона, емайлу или коду клиента. На странице "Балансы" нажмите на кнопку "Передать"'), ':', XML('<i class="fa fa-play-circle"></i>'),
                 ),
        _id='list2',
        _class='container')

    return dict(h = h)

def index():
    
    session.forget(response)
    response.title=T('Первый раунд продажи акций ICO')
    response.not_show_function = True

    cash_A = db.cash[shareA_ID]

    h = CAT()
    
    col1 = '3'
    col2 = '9'
    data1 = '2016-11-12'

    total = -cash_A.own_bal

    ERA = 10000000
    ICO_PERC = 10
    ERA_PERC = ICO_PERC * ERA / 100
    ERA_COST = total / ERA_PERC
    h += DIV(
        DIV(
            H2(T('Программа начального предложения долей (ICO) блокчейн-среды "E-Share A" по рыночной цене')),
            H3(T('Коротко и Понятно')),
            P(T('ICO будет закрыто перед стартом блокчейн среды, поэтому цена за одну единицу ERA в этой программе будет известна именно в момент закрытия её.')),
            P(T('Вы получите основные учётные единицы ERA, которые по сути являются акциями нащей блокчейн-среды, в начальном блоке (генесиз-блок) при запуске блокчейна'), '. '),
            P(T('ERA можно сдавать в аренду форжерам, а так же они дают право на удостоверение новых участников и голосовать по глобальным вопросам блокчейна'), '. '),
        _class='container'),
        _style='background-color:#ddd; color:#222; padding-bottom:30px;')
    h += DIV(
        DIV(
            CENTER(H2(T('Данные предложения и текущая цена'))),
            P(T('Всего будет выпущено единиц ERA'), ': ', B(ERA / 1000000), ' ', T('миллионов')),
            P(T('Доля выставленная на продажу в этой программе'), ': ', B(ICO_PERC), '%'),
            P(T('Доля выставленная на продажу в этой программе в единицах ERA'), ': ', B(ERA_PERC), ' ', T('штук')),
            P(T('Всего собрано инвестиций в рублях'), ': ', B(total)),
            P(T('Текущая цена одной единицы ERA в рублях'), ': ', B(ERA_COST)),
            P(T('Капитализация'), ': ', B(round(float(ERA_COST * ERA * Decimal(0.000001)), 6)), ' ', T('миллионов рублей')),
            BR(),
            P(T('Инвесторы, которые делают вклады в биткоинах могут быть анонимными. Как сделать'),
              ' ', A(T('вклад в биткоинах'), _class='white',
                     _onclick='ajax("rules_crypto_pay",[],"p1");')),
            DIV(
                _class='row m-0', _id='p1'),
        _class='container'),
        _style='background-color:#fff; color:#222; padding-bottom:30px;')
    h += DIV(
        DIV(

            H3(T('Вдобавок Вы получите')),
            P(B(T('Форжинг'),'.'), ' ', T('Вы будете получать прибыль от чеканки звеньев (форжинга блоков) с помощью своих ERA. Что такое форжинг описано в'), ' ', A(T('Программа старта'),'.', _href=URL('sun_a', 'index'), _class='white')),
            P(B(T('Вершина'),'.'), ' ', T('Вы получаете возможность создать реферальную сеть приглашая новых пользователей в общую блокчейн-среду. Вы будете получать награду с каждого приглашенного и от его приглашенных вглубь на 7-9 уровней. Таким образом Вы становитесь вершиной реферальной программы. Причем, абсолютно все транзакции в этой структуре будут автоматически приносить Вам прибыль, - для этого даже не нужно держать компьютер включенным и заниматься чеканкой. А так как блокчейн будет работать всегда, то это пассивный доход на всю жизнь! Что такое "вершина" и реферальная сеть в блокчейне описано в'), ' ', A(T('Программа старта'),'.', _href=URL('sun_a', 'index'), _class='white')),
            P(B(T('Гордость'),'.'), ' ', T('И наконец, Вы получите моральное удовлетворение и гордость за себя, так как наш блокчейн несёт великие улучшения для предпринимателей и обычных граждан. Это в первую очередь бесплатная личная усиленная электронная подпись и другие возможности использования, которые описаны тут:'), ' ',
                A(T('Блокчейн 3.0 для бизнеса'), _class='blue',
                    _href=URL('bc3biz','index')),' ', T('и'), ' ',
                A(T('Блокчейн 3.0 для граждан'), _class='blue',
                    _href=URL('bc3liv','index')),' ', T('и'), ' ',
                A(T('Блокчейн 3.0 для государства'), _class='blue',
                    _href=URL('bc3gov','index')),
                 ),

            H2(A(T('Список акционеров'),  callback=URL('sa_list'), target='sa_list', _class='white')
                ),
            DIV(_id='sa_list'),
            ###P(T('У нас уже %s+ участников!') % (50 + counter_rec), _class='orange'),
            DIV(CENTER(
                A(T('Стать Акционером!'), _href=URL('share_a','go'),
                  _class="btn btn-one btn-lg", _style="background-color:slategrey; font-size: 26px; margin-top: 30px; margin-left: 20px; padding: 10px 40px;"),
                  ),
            _style='',
            _class='row'),
            H2(T('Вопросы и Ответы')),
            DIV(B(T('Если я потеряю СИД (длинный секретный ключ для восстановления кошелька) и уничтожу файл кошелька wallet.dat или папку с ним /wallet, то можно ли его восстановить?'))),
            P(T('Нельзя, все средства на счетах этого кошелька будут утеряны навсегда.')),
            DIV(B(T('Когда планируется запуск боевой версии блокчейн среды?'))),
            P('17.01.2017'),
            DIV(B(T('Сколько будет выпущено основных учётных единиц ERA ("золотых монет")? И когда?'))),
            P(T('Всего будет выпущено 10 миллионов ERA разово в генесиз-блоке.')),
            DIV(B(T('Кому будут принадлежать выпущенные в генесиз-блоке единицы ERA?'))),
            P(T('Разработчикам и инвесторам.')),
            DIV(B(T('Будут ли еще выпускаться единицы ERA?'))),
            P(T('Нет')),
            DIV(B(T('Каким образом форжер получает “пакет форжинга” или единицы ERA?'))),
            P(T('В генесиз-блоке создаются специальные транзакции - передача в аренду форжеру единиц ERA, после чего он может форжить блоки до тех пор пока не кончится аренда.')),
            DIV(B(T('Сколько будет выпущено рабочих учётных единиц COMPU ("серебряных монет")? И когда?'))),
            P(T('Без ограничений, а разово в генесиз-блоке будет выпущено всего 10 COMPU.')),
            DIV(B(T('Кому будут принадлежать выпущенные в генесиз-блоке единицы COMPU?'))),
            P(T('Форжерам.')),
            DIV(B(T('Будут ли еще выпускаться единицы COMPU?'))),
            UL(T('Да, в блоке в котором мало транзакций, из расчёта величины равной 10-ти комиссиям от средней по размеру транзакции.'),
                T('И при появлении в блокчейне новой зарегистрированной персоны - как комиссия за примерно 70 транзакций.')),
            DIV(B(T('Какой уровень в глубину могут собрать под собой реферальную сеть участники, которые были приглашены в блокчейн после его запуска (то есть которые не были внесены в генесиз-блок)?'))),
            P(T('такой же как и те кто является вершиной. Просто им будет сложнее привлечь новых участников, которые еще не вошли в наш блокчейн.')),
            DIV(B(T('Какие требования к компьютеру для форжинга?'))),
            P(T('Должен быть установлен пакет Java, свободная память 1Гб, процессор 1 ядро.')),
            DIV(B(T('Обязательно ли брать виртуальную машину в облаке и чем она лучше?'))),
            P(T('ВМ лучше только тем, что она крутится независимо от интернета и электричества в Вашем доме - 24 часа каждый божий день, то есть это очень надежный компьютер. Если Вы не собираетесь заниматься профессионально форжингом, то хватит разового ключения комптютера днем на 3-5 часов.')),
            DIV(B(T('Чем отличается Ваша реферальная система учёта в блокчейне от МЛМ и сетевого маркетинга? Чем это отличается от пирамиды?'))),
            P(T('Рефералы - это приглашенные люди. По сути реферальная система - это сетевая структура. Но у нас не нужно от приглашенного что-то требовать купить или внести какие-то деньги в систему. Тут просто некуда вносить - нет центра. Тут есть множество равноправных “вершин”, которые к нам никак не относятся и полностью самостоятельные - это форжеры, которые войдут в генесиз-блок, - только они могут быть “вершиной”, которая больше никому не платит. Пирамида же имеет обязательный признак - нужно принести деньги и отдать их тому кто тебя пригласил, оплачивая ему его доход. У нас доход форжеров оплачивают инвесторы, а не рефералы. Мы для инвесторов расходное предприятие.')),
            DIV(B(T('Как и с чего участники получают доход со своих рефералов?'))),
            P(T('1/8-я от комиссий с транзакций идёт на реферальную сеть вверх по цепочке на 9 уровней. И если цепочка приглашений вышла на “вершину”, то весь остаток нераспределенных доходов достаётся вершине.')),
            DIV(B(T('Можно ли стать “вершиной” после запуска блокчейна, то есть по другой программе продажи пакетов форжинга?'))),
            P(T('Нет, это чисто технически невозможно. Вершина создаётся только у тех, кто внесён в генесиз-блок.')),
            DIV(B(T('Сколько участников может вместиться в генесиз-блок?'))),
            P(T('До 10 000 человек')),
            DIV(B(T('Инвесторы могут быть анонимными?'))),
            P(T('Да могут. Просто оплачиваете взнос биткоинами, конвертируете их во внутреннюю валюту "Рубли", а затем оплачиваете взнос в эту программу. При этом счет в блокчейне 3.0 тоже остается анонимным, до тех пор пока Вы его не удостоверите. Однако в этом случае Вы не сможете приглашать рефрералов. Зато можете продавать свою долю единиц ERA и использовать их для форжинга.')),
            DIV(B(T(''))),
            P(T('')),
        _class='container'),
        _style='background-color:#ddd; color:#222; padding-bottom:30px;')

    return dict( h = h )

# -*- coding: utf-8 -*-
# try something like

shareA_ID = 9
ERA = 10000000
ICO_PERC = 10
ERA_PERC = ICO_PERC * ERA / 100

def sa_list():
    from decimal import Decimal
    
    cash_A = db.cash[shareA_ID]
    total = -cash_A.own_bal

    ERA_COST = total / ERA_PERC

    h = CAT(
        DIV( DIV(CENTER(B(T('Акционер'))), _class='col-sm-4'),
              DIV(CENTER(B(T('Взнос'))), _class='col-sm-2'),
              DIV(CENTER(B(T('Акций'))), _class='col-sm-2'),
              DIV(CENTER(B(T('Доля'))), _class='col-sm-2'),
        _class='row')
        )
    odd = False
    sum_rub = 0
    sum_era = 0
    for r in db((db.man_bals.cash_id == shareA_ID)
                & (db.man_bals.bal > 0)).select(orderby=db.man_bals.bal):
        man = db.men[ r.man_id ]
        shares = r.bal / Decimal(ERA_COST)
        sum_rub += r.bal
        sum_era += shares
        h += DIV( DIV(man.name or man.ref_key, _class='col-sm-4'),
                  DIV(SPAN(round(float(r.bal),2), ' ', TAG.i(_class='fa fa-rub'), _class='pull-right'), _class='col-sm-2'),
                  DIV(SPAN(round(float(shares), 2), ' ', 'ERA', _class='pull-right'), _class='col-sm-2'),
                  DIV(SPAN(round(float(100 * shares / Decimal(ERA)), 6), ' ', '%', _class='pull-right'), _class='col-sm-2'),
            _class='row' + (' odd' if odd else ''))
        odd = not odd

    #h += DIV( DIV(CENTER(B(T('ИТОГО'))), _class='col-sm-4'),
    #          DIV(CENTER(B(round(float(sum_rub)),2)), _class='col-sm-2'),
    #          DIV(CENTER(B(int(sum_era))), _class='col-sm-2'),
    #          DIV(CENTER(B()), _class='col-sm-2'),
    #    _class='row')

    return h

def rules_crypto_pay():
    h=DIV(
        H3(T('Оплаты биткоинами и другим крипто-имуществом')),
        P(T('При оплате инвестиционного раунда крипто-имуществом (например биткоинами) необходимо делать перевод с адреса, которым Вы действительно обладаете. Для того чтобы убедиться что Вы переводите с нужного адреса используйте "управление выходами", которое можно включить в настройках программы-кошелька. Дело в том, что оригинальная программа-кошелек при каждом платеже создаёт новый адрес и пересылает сдачу на него, так что Вы даже об этом не знаете. Поэтому Вам нужно включить управление входами платежей или использовать клиент-кошельки, которые не создают новых адресов и возвращают сдачу всегда на Ваш начальный адрес, который Вы видите в списке адресов получения платежей'), '. ',
        T('Например я использую кошелёк от'),' ',A('MultiBit.org', _href='http://MultiBit.org', _target='_blank', _class='white'),
                T(' - он всегда складывает сдачу на Ваш единственный адрес в файле-кошельке. А так же с помощью его можно создать несколько файлов-кошельков и управлять ими из программы.'),
        ),
        P('Если Вы всё же используете оригинальный кошелек, то Вам нужно перевести достаточную для оплаты сумму на Ваш основной адрес - послать монеты самому себе, а затем выполнить следующие действия:'),
        OL(
            CAT(T('откройте вкладку "Отображение" в настройках программы и включите там галочку "управлять входами монет"'),
            BR(),IMG(_src=URL('static','images/to_pay/addrs_out1.png'), _wi_dth=256), BR(), BR()),
            CAT('после чего при отправлении монет Вы сможете управлять адресами, с которых будут отправлены монеты.',BR(),IMG(_src=URL('static','images/to_pay/addrs_out2.png'), _wi_dth=256), BR(), BR()),
            CAT('задайте Ваш адрес откуда спишутся монеты поставив галочку',BR(),IMG(_src=URL('static','images/to_pay/addrs_out3.png'), _wi_dth=256), BR(), BR()),
            CAT('И не забудьте задать Ваш адрес для возврата "сдачи" поставив галочку',BR(),IMG(_src=URL('static','images/to_pay/addrs_out4.png'), _wi_dth=256), BR(), BR()),
            ),
        _style='padding-bottom:30px;',
        )

    
    return h

def go():

    session.forget(response)
    response.title=T('ICO - initial coins offering')
    response.not_show_function = True

    datachain_id = myconf.take('cash.datachain_id')
    datachains_cash_system = db.cash_system[datachain_id]
    cash_f = db.cash[shareA_ID]

    man_id = session.man_id
    man = man_id and db.men[ man_id ]

    man_bal_f = man and db((db.man_bals.man_id == man_id)
                & (db.man_bals.cash_id == shareA_ID)).select().first()

    acc_not_setted = True
    
    hh = ''
    if man:
        if man_bal_f:
            man_accs_f = man_bal_f and db(db.man_accs.bal_id == man_bal_f.id).select()
            if man_accs_f and len(man_accs_f) > 0:
                hh = CAT(SPAN(BR(), '***', XML(T('<span class="orange_b">Кстати</span>, у Вас уже заданы счета')), ':', BR()))
                if man_accs_f and len(man_accs_f) > 0:
                    hh += SPAN(T('для программы'), ' ', B(cash_f.name), BR())
                    for rec in man_accs_f:
                        hh += SPAN(rec.acc, BR())

                acc_not_setted = False

    ol = OL(
        [P(
           XML(T('Для этого <span class="orange_b">скачайте</span> и <span class="orange_b">запустите</span> программу-клиент нашей блокчейн среды')),': ', BR(),
           A(B(T('Загрузить')), _href=URL('cabinet','download'), _target='blank', _class='blue')),
        P(XML(T('Затем <span class="orange_b">получите</span> адрес любого счета в своем кошельке, как это сделать описано на странице загрузки программы')),': ', BR(),
           A(B(T('Счета, аккаунты')), _href=URL('bc3base', 'index#accounts'), _target='blank', _class='blue')),
        P(XML(T('После чего <span class="orange_b">внесите</span> выбранный счёт в своём личном кабинете в разделе "Добавить Счёт для вывода средств", выбрав например Систему Средств:')),
           ' ', B(datachains_cash_system.name, ': ', cash_f.name), ' ',
           A(B(T('Личный кабинет')), _href=URL('cabinet','index#pers'), _target='blank', _class='blue'), BR(),
           '***', T('В результате чего этот счёт появится на странице балансов в соответствующем разделе денег.'), BR(),
           B(T('Внимание! У Вас еще не задан счёт для этой программы!')) if man and acc_not_setted else hh,
           ),
        ])

    h = CAT()
    h += DIV(
        DIV(
            CENTER(H2(XML(T('Как вступить в программу %s') % A(cash_f.name, _href=URL('share_a','index'), _class='white')))),
            H4(T('В первую очередь необходимо задать счёт в личном кабинете для начисления учётных единиц по этой программе'),':'),
            ol,
        _id='list2',
        _class='container'),
        _style='background-color:#fff; color:#222; padding-bottom:30px;')

    h += DIV(
        H4(T('Теперь нужно оплатить взнос в выбранную программу:')),
        OL([
            P(XML(T('<span class="orange_b">Пополните</span> внутренний счёт биткоинами на странице "Балансы", - <span class="orange_b">найдите</span> это Денежное Средство и нажмите кнопку "Пополнить"')),
              XML('<i class="fa fa-circle" ,="" style="color:#77ea00;"></i><i class="fa fa-share" ,="" style="margin-left: -1.5em;"></i>'), '.', BR(),
                 T('Перейти в'), ' ', A(B(T('Балансы')), _href=URL('cab_bals','index#DATACHAINS'), _target='blank', _class='blue')),
            P(XML(T('Или <span class="orange_b">пополните</span> внутренний рублевый счёт через безналичный платеж по реквизитам')), ':', BR(),
                 A(B(T('Контакты')), _href=URL('default','contacts'), _target='blank', _class='blue')),
            P(XML(T('Теперь в своих балансах найдите раздел %s и <span class="orange_b">выберите</span> валюту, которой хотите оплатить взнос, и нажмите кнопку "конвертировать"') % datachains_cash_system.name),
                 ' ', XML('<i class="fa fa-random"></i>'), '.', BR(),
                 T('Перейти в'), ' ', A(B(T('Балансы')), _href=URL('cab_bals','index#DATACHAINS'), _target='blank', _class='blue')),

            P(XML(T('Далее, на страничке обмена <span class="orange_b">задайте</span> величину перевода, <span class="orange_b">выберите</span> нужную программу, например "%s", и совершите его.') % (B(datachains_cash_system.name + ': ' + cash_f.name))
                 ))
                ],
              _start=4),
            BR(),
            P(B(T('Подсказка')),': ', T('Если напрямую с внутреннего счёта для биткоинов нельзя конвертировать средства в нужную программу или деньги, попробуйте это сделать через рублевый счёт, предварительно сконвертировав биткоины с внутреннего счёта в рубли с помощью кнопки "Конвертирровать".')),
            P(B(T('Подсказка')),': ', T('Вы можете скооперироваться со своими друзьями, собрать совместно нужную сумму для получения уровня "Солнца" и потом сделать своих кооператоров своими подписчиками 1-го уровня. Они получат возможность тоже собирать под собой приглашенных до максимального уровня Вашей сети. Также Вы будете чеканить блоки на общий кооперативный котёл. Передать средства другому участнику можно по его номеру телефона, емайлу или коду клиента. На странице "Балансы" нажмите на кнопку "Передать"'), ':', XML('<i class="fa fa-play-circle"></i>'),
                 ),
        _id='list2',
        _class='container')

    return dict(h = h)

def index():
    
    session.forget(response)
    response.title=T('Первый раунд продажи акций ICO')
    response.not_show_function = True

    cash_A = db.cash[shareA_ID]

    h = CAT()
    
    col1 = '3'
    col2 = '9'
    data1 = '2016-11-12'

    total = -cash_A.own_bal

    ERA = 10000000
    ICO_PERC = 10
    ERA_PERC = ICO_PERC * ERA / 100
    ERA_COST = total / ERA_PERC
    h += DIV(
        DIV(
            H2(T('Программа начального предложения долей (ICO) блокчейн-среды "E-Share A" по рыночной цене')),
            H3(T('Коротко и Понятно')),
            P(T('ICO будет закрыто перед стартом блокчейн среды, поэтому цена за одну единицу ERA в этой программе будет известна именно в момент закрытия её.')),
            P(T('Вы получите основные учётные единицы ERA, которые по сути являются акциями нащей блокчейн-среды, в начальном блоке (генесиз-блок) при запуске блокчейна'), '. '),
            P(T('ERA можно сдавать в аренду форжерам, а так же они дают право на удостоверение новых участников и голосовать по глобальным вопросам блокчейна'), '. '),
        _class='container'),
        _style='background-color:#ddd; color:#222; padding-bottom:30px;')
    h += DIV(
        DIV(
            CENTER(H2(T('Данные предложения и текущая цена'))),
            P(T('Всего будет выпущено единиц ERA'), ': ', B(ERA / 1000000), ' ', T('миллионов')),
            P(T('Доля выставленная на продажу в этой программе'), ': ', B(ICO_PERC), '%'),
            P(T('Доля выставленная на продажу в этой программе в единицах ERA'), ': ', B(ERA_PERC), ' ', T('штук')),
            P(T('Всего собрано инвестиций в рублях'), ': ', B(total)),
            P(T('Текущая цена одной единицы ERA в рублях'), ': ', B(ERA_COST)),
            P(T('Капитализация'), ': ', B(round(float(ERA_COST * ERA * Decimal(0.000001)), 6)), ' ', T('миллионов рублей')),
            BR(),
            P(T('Инвесторы, которые делают вклады в биткоинах могут быть анонимными. Как сделать'),
              ' ', A(T('вклад в биткоинах'), _class='white',
                     _onclick='ajax("rules_crypto_pay",[],"p1");')),
            DIV(
                _class='row m-0', _id='p1'),
        _class='container'),
        _style='background-color:#fff; color:#222; padding-bottom:30px;')
    h += DIV(
        DIV(

            H3(T('Вдобавок Вы получите')),
            P(B(T('Форжинг'),'.'), ' ', T('Вы будете получать прибыль от чеканки звеньев (форжинга блоков) с помощью своих ERA. Что такое форжинг описано в'), ' ', A(T('Программа старта'),'.', _href=URL('sun_a', 'index'), _class='white')),
            P(B(T('Вершина'),'.'), ' ', T('Вы получаете возможность создать реферальную сеть приглашая новых пользователей в общую блокчейн-среду. Вы будете получать награду с каждого приглашенного и от его приглашенных вглубь на 7-9 уровней. Таким образом Вы становитесь вершиной реферальной программы. Причем, абсолютно все транзакции в этой структуре будут автоматически приносить Вам прибыль, - для этого даже не нужно держать компьютер включенным и заниматься чеканкой. А так как блокчейн будет работать всегда, то это пассивный доход на всю жизнь! Что такое "вершина" и реферальная сеть в блокчейне описано в'), ' ', A(T('Программа старта'),'.', _href=URL('sun_a', 'index'), _class='white')),
            P(B(T('Гордость'),'.'), ' ', T('И наконец, Вы получите моральное удовлетворение и гордость за себя, так как наш блокчейн несёт великие улучшения для предпринимателей и обычных граждан. Это в первую очередь бесплатная личная усиленная электронная подпись и другие возможности использования, которые описаны тут:'), ' ',
                A(T('Блокчейн 3.0 для бизнеса'), _class='blue',
                    _href=URL('bc3biz','index')),' ', T('и'), ' ',
                A(T('Блокчейн 3.0 для граждан'), _class='blue',
                    _href=URL('bc3liv','index')),' ', T('и'), ' ',
                A(T('Блокчейн 3.0 для государства'), _class='blue',
                    _href=URL('bc3gov','index')),
                 ),

            H2(A(T('Список акционеров'),  callback=URL('sa_list'), target='sa_list', _class='white')
                ),
            DIV(_id='sa_list'),
            ###P(T('У нас уже %s+ участников!') % (50 + counter_rec), _class='orange'),
            DIV(CENTER(
                A(T('Стать Акционером!'), _href=URL('share_a','go'),
                  _class="btn btn-one btn-lg", _style="background-color:slategrey; font-size: 26px; margin-top: 30px; margin-left: 20px; padding: 10px 40px;"),
                  ),
            _style='',
            _class='row'),
            H2(T('Вопросы и Ответы')),
            DIV(B(T('Если я потеряю СИД (длинный секретный ключ для восстановления кошелька) и уничтожу файл кошелька wallet.dat или папку с ним /wallet, то можно ли его восстановить?'))),
            P(T('Нельзя, все средства на счетах этого кошелька будут утеряны навсегда.')),
            DIV(B(T('Когда планируется запуск боевой версии блокчейн среды?'))),
            P('17.01.2017'),
            DIV(B(T('Сколько будет выпущено основных учётных единиц ERA ("золотых монет")? И когда?'))),
            P(T('Всего будет выпущено 10 миллионов ERA разово в генесиз-блоке.')),
            DIV(B(T('Кому будут принадлежать выпущенные в генесиз-блоке единицы ERA?'))),
            P(T('Разработчикам и инвесторам.')),
            DIV(B(T('Будут ли еще выпускаться единицы ERA?'))),
            P(T('Нет')),
            DIV(B(T('Каким образом форжер получает “пакет форжинга” или единицы ERA?'))),
            P(T('В генесиз-блоке создаются специальные транзакции - передача в аренду форжеру единиц ERA, после чего он может форжить блоки до тех пор пока не кончится аренда.')),
            DIV(B(T('Сколько будет выпущено рабочих учётных единиц COMPU ("серебряных монет")? И когда?'))),
            P(T('Без ограничений, а разово в генесиз-блоке будет выпущено всего 10 COMPU.')),
            DIV(B(T('Кому будут принадлежать выпущенные в генесиз-блоке единицы COMPU?'))),
            P(T('Форжерам.')),
            DIV(B(T('Будут ли еще выпускаться единицы COMPU?'))),
            UL(T('Да, в блоке в котором мало транзакций, из расчёта величины равной 10-ти комиссиям от средней по размеру транзакции.'),
                T('И при появлении в блокчейне новой зарегистрированной персоны - как комиссия за примерно 70 транзакций.')),
            DIV(B(T('Какой уровень в глубину могут собрать под собой реферальную сеть участники, которые были приглашены в блокчейн после его запуска (то есть которые не были внесены в генесиз-блок)?'))),
            P(T('такой же как и те кто является вершиной. Просто им будет сложнее привлечь новых участников, которые еще не вошли в наш блокчейн.')),
            DIV(B(T('Какие требования к компьютеру для форжинга?'))),
            P(T('Должен быть установлен пакет Java, свободная память 1Гб, процессор 1 ядро.')),
            DIV(B(T('Обязательно ли брать виртуальную машину в облаке и чем она лучше?'))),
            P(T('ВМ лучше только тем, что она крутится независимо от интернета и электричества в Вашем доме - 24 часа каждый божий день, то есть это очень надежный компьютер. Если Вы не собираетесь заниматься профессионально форжингом, то хватит разового ключения комптютера днем на 3-5 часов.')),
            DIV(B(T('Чем отличается Ваша реферальная система учёта в блокчейне от МЛМ и сетевого маркетинга? Чем это отличается от пирамиды?'))),
            P(T('Рефералы - это приглашенные люди. По сути реферальная система - это сетевая структура. Но у нас не нужно от приглашенного что-то требовать купить или внести какие-то деньги в систему. Тут просто некуда вносить - нет центра. Тут есть множество равноправных “вершин”, которые к нам никак не относятся и полностью самостоятельные - это форжеры, которые войдут в генесиз-блок, - только они могут быть “вершиной”, которая больше никому не платит. Пирамида же имеет обязательный признак - нужно принести деньги и отдать их тому кто тебя пригласил, оплачивая ему его доход. У нас доход форжеров оплачивают инвесторы, а не рефералы. Мы для инвесторов расходное предприятие.')),
            DIV(B(T('Как и с чего участники получают доход со своих рефералов?'))),
            P(T('1/8-я от комиссий с транзакций идёт на реферальную сеть вверх по цепочке на 9 уровней. И если цепочка приглашений вышла на “вершину”, то весь остаток нераспределенных доходов достаётся вершине.')),
            DIV(B(T('Можно ли стать “вершиной” после запуска блокчейна, то есть по другой программе продажи пакетов форжинга?'))),
            P(T('Нет, это чисто технически невозможно. Вершина создаётся только у тех, кто внесён в генесиз-блок.')),
            DIV(B(T('Сколько участников может вместиться в генесиз-блок?'))),
            P(T('До 10 000 человек')),
            DIV(B(T('Инвесторы могут быть анонимными?'))),
            P(T('Да могут. Просто оплачиваете взнос биткоинами, конвертируете их во внутреннюю валюту "Рубли", а затем оплачиваете взнос в эту программу. При этом счет в блокчейне 3.0 тоже остается анонимным, до тех пор пока Вы его не удостоверите. Однако в этом случае Вы не сможете приглашать рефрералов. Зато можете продавать свою долю единиц ERA и использовать их для форжинга.')),
            DIV(B(T(''))),
            P(T('')),
        _class='container'),
        _style='background-color:#ddd; color:#222; padding-bottom:30px;')

    return dict( h = h )
# -*- coding: utf-8 -*- # try something like #h += DIV( DIV(CENTER(B(T('ИТОГО'))), _class='col-sm-4'), #          DIV(CENTER(B(round(float(sum_rub)),2)), _class='col-sm-2'), #          DIV(CENTER(B(int(sum_era))), _class='col-sm-2'), #          DIV(CENTER(B()), _class='col-sm-2'), #    _class='row') #accounts'), _target='blank', _class='blue')), #pers'), _target='blank', _class='blue'), BR(), #fff; color:#222; padding-bottom:30px;') #77ea00;"></i><i class="fa fa-share" ,="" style="margin-left: -1.5em;"></i>'), '.', BR(), #DATACHAINS'), _target='blank', _class='blue')), #DATACHAINS'), _target='blank', _class='blue')), #ddd; color:#222; padding-bottom:30px;') #fff; color:#222; padding-bottom:30px;') ###P(T('У нас уже %s+ участников!') % (50 + counter_rec), _class='orange'), #ddd; color:#222; padding-bottom:30px;')