<?php
include_once("c_cryptopro.php");
include_once(_DIR_EXT.'/cryptopro/panel_cert_info.php') ;
class c_page_cab_cryptopro_sign_emulate extends c_page_cab_cryptopro
{
 public $h1='Подпись документа с помощью ЭЦП' ;

 function check_access()  { return(1) ; }



 function select_obj_info()
 {
     if ($this->filter['doc_id']) $this->rec_doc=DOCS()->get_doc_by_id($this->filter['doc_id']) ;
 }



    function text_banner($text){
        echo '<div class="green" style="background: #f6100d3b !important;padding: 7px 15px;font-size: 11px;font-weight: 600;color: #e10808;">'.$text.'</div>';
    }


 function block_main()
 {

     $url=_PATH_TO_SITE.'/cab/setting/member/'.MEMBER()->id.'/sert/?block=3' ;
     if (MEMBER()->info['evulate_ECP']) $this->text_banner('Включен режим эмуляции ЭЦП для пользователя. Для отключения этого режима необходимо перейти в <a style="color:#000" href="'.$url.'">Настройки</a>');
     if($GLOBALS['LS_evulate_ECP']==1) $this->text_banner('Включен режим эмуляции ЭЦП по умолчанию. Для отключения этого режима необходимо перейти в <a target="_blank" style="color:#000" href="'.$url.'cab/cryptopro/setting/">Настройки</a>');


   $this->page_title() ;

   if (MEMBER()->info['evulate_ECP'] and !(MEMBER()->info['certificate']['SerialNumber'] and MEMBER()->info['certificate']['Thumbprint'] and MEMBER()->info['certificate']['SubjectName'] and MEMBER()->info['certificate']['ValidFromDate']))
     { $cert=MEMBER()->info['certificate'] ;
       if (!MEMBER()->info['certificate']['SerialNumber']) $cert['SerialNumber']=md5(rand(1,100));
       if (!MEMBER()->info['certificate']['Thumbprint']) $cert['Thumbprint']=md5(rand(1,100));
       if (!MEMBER()->info['certificate']['IssuerName'])   $cert['IssuerName']='Эмуляция ЭЦП';
       if (!MEMBER()->info['certificate']['SubjectName'])  $cert['SubjectName']=MEMBER()->info['obj_name'];
       $now=getdate() ;
       if (!MEMBER()->info['certificate']['ValidFromDate'])   $cert['ValidFromDate']=date('d.m.Y H:i:s');
       $t=mktime($now['hours'],$now['minutes'],$now['seconds'],$now['mon'],$now['mday'],$now['year']+1);
       if (!MEMBER()->info['certificate']['ValidToDate'])   $cert['ValidToDate']=date('d.m.Y H:i:s',$t);
       ACCOUNTS()->account_save(MEMBER()->info['pkey'],array('ext_info'=>array('certificate'=>$cert))) ;
       ACCOUNTS()->update_member_info(MEMBER()) ;
     }

    $cert=MEMBER()->certificate ;
    //damp_array($cert);
  // если в профиле пользователя храниться информация по тестовой ЭЦП - удалям номер = информации по ЭЦП нет
  //if ($cert['IssuerName']=='Эмуляция ЭЦП') unset($cert['Thumbprint']) ;

  if ($this->rec_doc['pkey'])
        {  ?><h3>Подписываемый документ</h3><?
            echo $this->rec_doc['obj_name'].' ('.$this->rec_doc['doc_name'].'), формат '.$this->rec_doc['code'].', создан '.$this->rec_doc['_date_create'].'<br>' ;
            ?><script type="text/javascript">
                  var doc_url="<?echo (_CUR_ROOT_DIR_NAME=='cab')? $this->rec_doc['__href_cab']:$this->rec_doc['__href_window']?>";
                  sign_log("1.Открыт интерфейс подписи документа, id: <?echo $this->rec_doc['pkey']?>, URL:"+doc_url) ;
             </script><?
        }
       else
        { ?><h3>Выберите документ для подписи</h3>
            <input  id="openFileButton"  type="file" onchange="openFile(event)"  class="inputfile inputfile-1"/>
          <?
        }
     ?>
     <h3>Сертификат для подписи документа:</h3>
     <? if ($cert['Thumbprint']) panel_cert_info($cert) ; ?>
      <div id="panel_select_sert" class="select_cert">
         <select size="4" name="CertListBox" id="CertListBox"></select>
      </div>


      <div class="sky-form">
          <?if ($cert['Thumbprint'])
            { ?><button id="exec_sign" class="button sign_doc" cert_id="<?echo $cert['Thumbprint']?>" doc_id="<?echo ($this->rec_doc['pkey'])?:0;?>">Подписать документ</button><?
              ?><!--<label id="label_check_sign" class="sign_doc"><input type="checkbox" name="check_sign" id="check_sign" value="1" <?if ($GLOBALS['LS_ecp_check_sign']) echo 'checked read_only'?>> Проверить подпись документа</label>--><?
            }
          ?>
          <button id="apply_sert" class="button select_cert">Выбрать сертификат</button>
          <button id="cancel_apply_sert" class="button select_cert">Отмена</button>
          <button id="select_other_sert" class="button sign_doc">Выбрать другой сертификат</button>
          <?if ($cert['Thumbprint']){?><button id="show_ext_info" class="button sign_doc" ff="0">Полная информация</button><?}?>
          <?if ($this->rec_doc['__href']){?><button class="v1 button" id=button_go_back href="<?echo (_CUR_ROOT_DIR_NAME=='cab')? $this->rec_doc['__href_cab']:$this->rec_doc['__href_window']?>">Вернуться в документ</button><?}?>
          <div class="clear"></div>
      </div>





      <div id="cert_infos" style="display:none;margin:0 0 15px 0;border:1px solid #aad8be;background:rgba(167, 209, 189, 0.62);padding:20px;"></div>
      <div id="sign_comment" class="sign_doc_exec">
            <h3>Ход подписи документа</h3>
            <textarea id="sign_comment_text" style="width:100%;height:100px;font-size:10px;"></textarea>
      </div>
      <div id="sign_result"></div>

     <?

     LOG_JSON('debug_signature')->reg('get_page_sign','Сформирована страница подписи докумениа<br>');
     LOG_JSON('debug_signature')->flush('debug_signature_'.$this->sign_uid,['reg_log'=>1,'reffer'=>$this->rec_doc['_reffer'],'member_id'=>MEMBER()->id]);

     //damp_array(MEMBER()->certificate,1,-1) ;
     //damp_array(MEMBER()->cryptopro,1,-1) ;
     ?>
         <script  type="text/javascript">
          $j(document).ready(function()
          {

            <?if ($cert['Thumbprint']) {?>$j('.sign_doc').show() ; $j('.select_cert').hide() ; $j('.sign_doc_exec').hide() ;<?}
             else                      {?>$j('.sign_doc').hide() ; $j('.select_cert').show() ; $j('.sign_doc_exec').hide() ;<?}
           ?>

           $j('button#select_other_sert').click(function()
           { $j('.sign_doc').hide() ;
             $j('.sign_doc_exec').hide() ;
             $j('.select_cert').show() ;
             ESMO_FillCertList('CertListBox') ;
           }) ;

           $j('button#cancel_apply_sert').click(function()
           { $j('.sign_doc').show() ;
             $j('.select_cert').hide() ;
             $j('.sign_doc_exec').hide() ;
           }) ;

           $j('button#apply_sert').click(function()
           { //  отправляем по ajax информацию по выбранному сертификат для сохранения в профиле пользователя
             //  далее страница будет перезагружена
             send_ajax_request({cmd:'cryptopro/save_sert_to_account_prepare'})  ;
             ESMO_save_cur_certificate_params($j('select#CertListBox').val(),{cmd:'cryptopro/save_sert_to_account',account_id:<?echo MEMBER()->id?>}) ;
           }) ;


           $j('button#show_ext_info').click(function()
           { if ($j(this).attr('ff')==0)
             { $j('table#panel_cur_sert_info tr.ext').show() ;
               $j(this).attr('ff',1) ;
             }
             else
             { $j('table#panel_cur_sert_info tr.ext').hide() ;
               $j(this).attr('ff',0) ;
             }
           }) ;

           $j('button#exec_sign').click(function()
           { var check_sign=($j('#check_sign').is(':checked'))? 1:0;
             console.log('check_sign on exec_sign='+check_sign) ;
             sign_log("3. Нажата кнопка подписи документа (onclick) документ # "+$j(this).attr('doc_id')) ;
             if ($j(this).attr('doc_id')==0)  signFile($j(this).attr('cert_id'),check_sign,emulate_sign) ;
             else                             signDocAfterRequest($j(this).attr('cert_id'),$j(this).attr('doc_id'),check_sign,emulate_sign) ;
           }) ;

           $j('#BrowserVers').html('Браузер: <strong>'+$j.browser.name+" "+$j.browser.version+'</strong>') ;
           $j('#block_main button').attr('disabled','disabled') ; // выключаем все кнопки
           $j('#button_go_back').removeAttr('disabled') ;


           var openFile = function (event)
             {  fileContent = undefined;
                var input = event.target;
                var reader = new FileReader();
                reader.readAsDataURL(input.files[0]);
                reader.onload = function ()
                { var header = ";base64,";
                  var fileData = reader.result;
                  fileContent = fileData.substr(fileData.indexOf(header) + header.length);
                  fileName=openFileButton.value ;
                };

             };

          });
         </script>
   <?
 }

}



?>
