text: # -*- coding: utf-8 -*-
  
  response.generic_patterns = ['*.html']
  
  session.forget()
  
  # переходник для показа ссыфлкок и картинок в листингах
  def download():
      return response.download(request,db)
  
  def poll():
      response.not_show_function = True
  
      h = CAT(
          DIV(
              CENTER(H2(T('Голосования в блокчейне 3.0'))),
              CENTER(H3(T('Если Вам нужны открытые честные голосвания без возможности подмены'))),
              P(T('Онлайн голосования - просто и эффективно')),
              BR(),
              H3(A(T('Еще решения для бизнеса'), _href=URL('bc3biz','index'), _class='white')),
              P(T('')),
              BR(),
             _class = 'container'),
          )
  
      return dict(h=h)
  
  def hash():
      response.not_show_function = True
  
      h = CAT(
          DIV(
              CENTER(H2(T('ХЭШ (HASH) данных'))),
              CENTER(H3(T('доказательство уникальности и неизменности документов, снимков и других данных с помощью Блокчейн 3.0'))),
              P(T('Иногда нужно доказать что некоторые данные были неизменными с некоторого момента времени. Для этого с данных снимают хэш (это по-сути контрольная сумма) и сохраняют его в надежном месте. Самым надежным местом сейчас является блокчейн-среда. Причем Вы еще получаете доказательство существования хэша на момент внесения его в цепочку данных этой среды.')),
              P(T('В нашей блокчейн-среде есть 2 вида записей для хэшей:')),
              UL(T('ХЭШ с документа-требования или товарной накладной или акта приёма-передачи (обычно используется для факторинговых компаний).'),
                 T('Хэш с файла с описанием и указанием ссылки на место его хранения в интернете  - для снятия отпечатков с любых файлов.')),
              BR(),
              H4(T('ХЭШи для факторинговых компаний')),
              P(T('Эти хэши делаются с атрибутов документов требования, за которые факторинговые компании выдают деньги. Хэш создаётся и заносится в наш блокчейн. Поле чего уже больше нельзя внести такой же хэш в наш блокчейн. Это значит что второй раз такой же документ невозможно предъявить в другую факторинговую компанию, при условии что она также попробует внести хэш этого документа в наш блокчейн таким же способом. Если такой хэш уже существует, то запись не будет внесена в наш блокчейн. При этом данные документа остаются неизвестными, так как они не вносятся в блокчейн.')),
              P(T('Также этот вид записи хэша может использоваться для других документов, если участники договорятся о жесткой структуре атрибутов документа, вносимых в поля формы создания хэша. Такая услуга например предоставляется централизованным проектом FactorB.')),
              P(T('Для создания этого вида хэша в главном Меню или на кнопках быстрого доступа выбираем Отпечатки, и в открывшемся окне выбираем вкладку Выпуск Отпечатка:')),
              P(IMG(_src=URL('static', 'images/biz/hashes-f01.png'))),
              P(T('Здесь заполняем поля так: 1 - выбираем свой счет который будет создавать запись в блокчейне, 2 - номер документа, 3 - дата создания документа, желательно включая минуты, 4 - дебитор (получатель), 5 - кредитор (поставщик, плательщик), 6 - общая сумма документа или общее число товаров. Общее для всех записей поле Сбор (7), эта величина не участвует в создании хэша а лишь задает величину уровня комиссии которую Вы готовы заплатить за ускорение прохождения записи (если блоки не забиты полностью то достаточно 0-го уровня)')),
              P(B(T('Внимание!')), ' ', T('Важно помнить что запись только тогда будет проверена на уникальность, когда она будет включена в блок. Это можно проверить в окне обзора сети (Дополнительная информация) - если у вашей записи, которую Вы только что создали, 0 подтверждений, значит она еще не включена в блок. Если запись включена в блок значит хэш её уникален и ранее не был внесен в блокчейн.')),
              
              BR(),
              H4(T('ХЭШи для остальных документов и файлов')),
              P(T('Если Вам нужно ввести уже вычисленный хэш или снять хэш с файла, списка файлов или импортировать хэши из файла, указать ссылку на хранилище этих файлов, чтобы любой мог загрузить их и проверить хэши и добавить к этому всему свой комментарий, то для Вас подойдет именно этот вид записи:')),
              P(IMG(_src=URL('static', 'images/biz/hashes-a01.png'))),
              P(T('Здесь URL - будет использоваться в блокчейн-эксплорере для автоматического перевода на сайт с файлами с которых сделаны отпечатки. Описание - это общее описание для данной записи - размером до 64кБ, Оно будет внесено в запись. Сбор - это уровень комиссии (сейчас достаточно 0-го уровня). В правой части окна можно вводить уже вычисленные хэши вручную в каждую новую строчку таблицы или загрузить с диска компьютера файл, с которого автоматически будет вычислен отпечаток или загрузить файл с готовым списком отпечатков, расположенных через пробел или дефис. Отпечатки вводятся как 32-х байтное число в формате Base58. Этот список (без их примечаний) будет вставлен в эту запись, и запись послана в блокчейн. В блокчейн эксплорере запись будет оражаться как список хэшей со ссылками на файллы - при нажатии на которые пользователь будет перенаправлен по указанному URL + хэш, например так: http://datachains.world/hashes/r2tsdwe56sgwer1idywiU8')),
              H3(A(T('Еще решения для бизнеса'), _href=URL('bc3biz','index'), _class='white')),
              P(T('')),
              BR(),
             _class = 'container'),
          )
  
      return dict(h=h)
  
  def zayav():
      response.not_show_function = True
  
      h = CAT(
          DIV(
              CENTER(H2(T('Заявления, ходатайства и т.д.'))),
              CENTER(H3(T('Как сделать юридически-значимые электронное заявление и резолюцию с помощью Блокчейн 3.0'))),
              P(T('Например Вы хотите подать заявление о приёме на работу или ходатайство в электронном виде и подписать его своей усиленной электронной подписью так чтобы это отразилось в блокчейне и не могло быть изменено. Вдобавок резолюция об удовлетворении Вашего заявления так же должна быть подписана усиленной электронной подписью и быть в блокчейне. Всё это будет юридически-значимыми действиями.')),
              P(T('Выбрать шаблон и подписать его, а тот кто должен поставить резолюцию - должен заверить Вашу запись. В результате в Ваших записях это будет выглядеть так:')),
             _class = 'container'),
          CENTER(IMG(_src=URL('static', 'images/biz/zayava-01.png'))),
          DIV(
              P(),
              H3(A(T('Еще решения для бизнеса'), _href=URL('bc3biz','index'), _class='white')),
              P(T('')),
              BR(),
             _class = 'container'),
          )
  
      return dict(h=h)
  
  def letter():
      response.not_show_function = True
  
      h = CAT(
          DIV(
              CENTER(H2(T('Заказные письма в блокчейне'))),
              CENTER(H3(T('Доставка заказных писем с уведомлением и без с помощью Блокчейн 3.0'))),
              P(T('Я периодически вижу что на почте люди получают или отправляют по 10 и более писем. Они туда едут, стоят в очереди - пол рабочего дня тратят... Да еще иногда некоторые письма  на почте теряются. И сами письма ходят по 10 и более дней. И к тому же никто не докажет что было в письме - было ли там предупреждение о том-то или нет, - неизвестно. Это всё анахронизм, пора переходить на электронный документооборот заказанных юридически-значимых писем. ')),
              P(T('Итак, если Ваш получатель также использует наш блокчейн 3.0, то Вы можете ему послать письмо не вставая из-за компьютера и это письмо будет зашифровано так, что расшифровать его сможете только Вы и получатель. Таким образом это есть "заказное письмо". При этом Вы сможете доказать в любом суде что именно Вы послали это письмо именно этому получателю и даже что именно это было написано в этом письме - ведь сам текст письма будет лежать в неизменном в блокчейн-среде. Надо понимать что тут есть некоторое ноу-хау, для признания юридической значимости этого способа отсылки заказных писем. Кстати факт вручения и прочтения тоже доказуем, а значит это "письмо с уведомлением" не только о вручении, но и о прочтении.')),
              P(T('Посмотреть видеоурок на'), ' ',
                A('YouTube.com', TAG.i(_class='fa fa-youtube-play', _style='font-size:1.5em'),
                  _href='https://youtu.be/zB26Z7N-pDA', _class='white', _target='blank'),
                 ' ', T('или загрузить как файл в хорошем качестве'),' ',
                A('tutor02-letter.wmv', _href=URL('static', 'video/tutor02-letter.wmv'), _class='white'),
               '.'),
              P(T('Послать письмо можно так: открыть свои счета, выбрать счёт, который удостоверен и от имени которого Вы хотите послать письмо, нажать на нем правую мышку и выбрать пункт меню "Отправить":')),
              P(IMG(_src=URL('static', 'images/biz/letter-01.png'))),
              P(T('Затем в открывшейся форме вставить счет получателя, внести текст письма и если письмо открытое, то снять галочку с "Зашифровать Сообщение". Вы можете выбрать еще актив для пересылки и задать его величину (что в общем то не обязательно). И нажать "Отправить":')),
              P(B(T('Внимание!')), ' ', T('Если Получатель еще не создавал никаких записей в среде, то его публичный ключ неизвестен, а значит зашифровать сообщение не получится')),
              P(IMG(_src=URL('static', 'images/biz/letter-02.png'))),
              P(T('Запись будет создана и через некоторое время она запишется в блокчейн-среду, а значит получатель уже сможет его прочитать и быть уверенным что именно его Вы и послали.')),
              P(T('И Вы и Получатель будете видеть это письмо в списке поступлений в форме создания отправления или в своих транзакциях (Окно "Другая информация")')),
              P(IMG(_src=URL('static', 'images/biz/letter-03.png'))),
              H3(A(T('Еще решения для бизнеса'), _href=URL('bc3biz','index'), _class='white')),
              P(T('')),
              BR(),
             _class = 'container'),
          )
  
      return dict(h=h)
  
  ##@cache.action(time_expire=cache_expire, cache_model=cache.ram, quick='P')
  def index():
      response.not_show_function = True
  
      '''
      h = DIV(
              TAG.center(
                  H1(B(SPAN('DATA', _style='color:chartreuse;'), SPAN('CHAINS', _style='color:gold;'),
                       SPAN('.WORLD', _style='color:powderblue;'),
                    ), _style='font-size:60px;text-shadow:1px 1px 2px black, 0em 0em 0em #00F1FF'),
                  #H1('The Gobal Financial Revolution', _style='color:deepskyblue;text-shadow: 3px 3px 5px black, 0em 0em 0em #000;'),
                  H4('проект внедрения технологии блокчейн в повсеместную жизнь - "в цепочки данных мы верим!"'),
                  #2('But all its is DATACHAINS!'),
              ),
              _class='container-fluid bgi_h1', _style='background:#FFF; color: #666',
              _id="top_line")
  
      h += BR()
      '''
      h = CAT()
      h += CENTER(H1(T('Наши решения к которым Вы можете присоедиться уже сейчас')))
      h += CENTER(H1(T('или заказать решение под себя')))
      h += BR()
      
      odd = True
      cl1 = '4'
      cl2 = '8'
      for r in [
              [A(TAG.i(_class='fa fa-link'), ' ', SPAN(T('Запись отпечатков (хэшей) договоров, снимков и другой информации')),
               _href = URL('bc3biz', 'hash')),
                 P(T('Если у Вас есть задача доказать неизменность некоторой информаци и дату её создания, так чтобы это нельзя было подменить, то наш блокчейн 3.0 сможет Вам помочь.'), ' ', A(B(T('Подробнее')), _href=URL('bc3biz','hash'), _class='white')),
                 ],
              [A(TAG.i(_class='fa fa-link'), ' ', SPAN(T('Заказное письмо с уведомлением - в электронном виде!')),
               _href = URL('bc3biz', 'letter')),
                 P(T('Отсылаете или получаете много заказных писем с уведомлением и без? Вы можете значительно ускорить доставку писем или их получение, отказаться от курьера и аренды абонентского ящика на почте, снизив тем самым свои затраты. При этом письмо не потеряется и будет доставлено быстро (за несколько минут) и точно "в руки адресату". Наш блокчейн 3.0 поможет Вам легко пересылать электронные заказные письма.'), ' ', A(B(T('Подробнее')), _href=URL('bc3biz','letter'), _class='white')),
                 ],
              [A(TAG.i(_class='fa fa-link'), ' ', SPAN(T('Голосования, честные и эффективные')),
               _href = URL('bc3biz', 'poll')),
                 P(T('Хотите организоваь недороггие, удобные и честные выборовы директора или программы развития бизнеса? Наш блоксчен для Вас!'), ' ', A(B(T('Подробнее')), _href=URL('bc3biz','poll'), _class='white')),
                 ],
              [A(TAG.i(_class='fa fa-link'), ' ', SPAN(T('Заявления, Ходатайства и Резолюции')),
               _href = URL('bc3biz', 'zayav')),
                 P(T('Как сделать юридически-значимые электронное заявление и резолюцию.'), ' ', A(B(T('Подробнее')), _href=URL('bc3biz','zayav'), _class='white')),
                 ],
              [A(TAG.i(_class='fa fa-file-text'), ' ', SPAN(T('Блокчейн Биржа игрового золота')),
               _target='blank', _href = 'https://docs.google.com/presentation/d/1iPbUoX8wZBG3NdpjsHXqjW7hMVNQ_knG85nUML-nqik'),
                 T('Биржа для обмена игровым золотом между различными онлайн проектами. Привелигированные участники - это сами онлайн игры, а обычные участники - игроки. Онлайн игры могут выпускать свои активы, а обычные участники только обмениваться. Таки образом создается полный баланс и контроль со стороны онлайн игр'),
                 ],
                [T('Товарно-сырьевая Биржа на блокчейне'),T('Биржа для обмена реальными товарами, сырьем и услугами между юр.лицами. С отслеживанием поставок в блокчейне.')],
                [
              A(TAG.i(_class='fa fa-file-text'), ' ', SPAN(T('Учёт векселей')),
               _target='blank', _href = 'https://docs.google.com/document/d/1ZusA8O3hbzW_WhXQ61UK77rHoUazDo0lxmR3vXqCEjs'),
                  T('Выпуск, продажа и обмен векселей - в целях снижения затрат на кредиты для берущих в долг и для увеличения дохода по процентам займов для тех кто даёт в долг')],
                [T('Бонусные карты'),T('Выпуск, продажа и обмен бонусов и карт - Ваши пользователи теперь могут иметь всего одну карту для учёта любых бонусов и бонусных программ. А самое главное - им это очень понравится! Так как они смогут обмневаться бонусами между другими покупателями накапливая нужные суммы для желанных покупок. Это придает двойной стимул пользоваться именно Вашей бонусной программой, которая ведётся на блокчейне. При этом бонусную карту каждый пользователь делает уникальной под себя')],
                [T('Учёт подарочных сертификатов'),T('Выпуск, продажа и обмен подарочных сертификатоы - в целях снижения затрат на выпуск оных. Кстати, по сути подарочный сертификат это Ваши собственные деньги! Для Ваших киентов это двойной плюс - они смогут обмениваться подарочныи сертификати без боязни быть обманутыми - ведь всё учитывается в блокчейне!')],
                [T('Предложите Вашу задачу!'),T('Мы с радостью сделаем решение её на нашей блокчейн-среде')],
  
               ]:
          h += DIV(
              DIV(DIV(
                  DIV(H4(r[0]), _class='col-sm-' + cl1 ),
                  DIV(r[1], _class='col-sm-' + cl2 ),
              _class = 'row'), _class = 'container'),
              _class = 'row' + ' odd' if odd else '')
          odd = not odd
      h += HR()
      h += CENTER(H2(A(B(T('Закажите свой блокчейн')), _href=URL('bc3order','index'), _class='white')))
      
      return dict(h=h)
  