PalmaSolutions

alexus.php

May 5th, 2018
1,208
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 54.33 KB | None | 0 0
  1. <html>
  2. <head>
  3. <title><?php tr('name',false); ?> <?php echo VERSION;?></title>
  4. <meta http-equiv="content-type" content="text/html; charset=utf-8" />
  5. <script type="text/javascript" src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  6. <link href="http://netdna.bootstrapcdn.com/bootswatch/2.3.0/united/bootstrap.min.css" rel="stylesheet">
  7. <link rel="shortcut icon" type="image/x-icon" href="data:image/png;base64,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" />
  8. <style>
  9. body {
  10.     background-color: WHITE;
  11. }
  12. .content {
  13.     margin: 0 auto;
  14.     background-color: #fcf2d4;
  15.     width: 1000px;
  16.     padding: 5px;
  17.     border: 1px solid black;
  18.     border-radius: 5px;
  19. }
  20. #console {
  21.     margin: 0 auto;
  22.     padding: 5px;
  23.     border-radius: 5px;
  24. }
  25. #ext-console {
  26.     padding: 5px;
  27.     border-radius: 5px;
  28.     overflow-y: scroll;
  29.     height: 620px;
  30.     text-align: left;
  31. }
  32. a:link {
  33.     color: #000;
  34. }
  35. a:visited {
  36.     color: #000;
  37. }
  38. .miniimput {
  39.     font-family: Tahoma,Geneva,sans-serif;
  40.     font-size: 14pt;
  41.     border-color: 336699;
  42.     border-style: inset;
  43.     border-width: 2px;
  44. }
  45. #upload_button {
  46.     display: inline-block;
  47.     width: 24px;
  48.     height: 24px;
  49.     background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAADb0lEQVR42q2Va2gUVxTH/3dmdxMza8QQrRa0VFGjNEWzVCIENz4aX6C2H6wWRD8KVQpRCxUfQRDU2hbRD2o+iFqqtPUVo2ts89iqNRojLT7S7NZHTNwYsxs3j83uZmbu6ZkNSARFs+uB4V7m3vv/3fOYMwIpWJGnnYQCVMwbIV63RwxGcKAVlrfThmkaasMmahqjuPL5yFdqJQWYWfaMilncnmZHU1zC+6AHjx5HcX3lGJEywH36Ka1zDcUopwNXwwZsHKJ0m8C5W8/xLBDFrTXjRNIA15EWWvpxBmZ/4ERVB4sTYBJB8ihZyuNtRaw7jn/WTxGDBuSWNtEXeUNRMNaJypAOhYVNC8DqpuQN1lwFqioDiHVG0bB1qnhrQN7Bh/QZhyXnvQyUP4kjN8uBll5WTUDYA4b0xEzE+J0uBBouN0Pvi+O/nfnijYC8/X6yxj5DwtBN9Pbo+O2riThwPwaFj5t8fVIEfPfCCNxphcKuCOuRlFySx35bT8e+zsHexjjsfHudhawItTQ+R+huAA/3u5NPsmXvF9fS4Y0fYfffEdj4uOREGPw+6OtAV0MATaVzUgOMWuOlQ5tc2FHXBc4pDAaYLNPpCyLua0bz0UWpAUau/p32leRj859hOPh0X5+EVAVi/iDo/mMETixNDZC9/ALt2ePGN54Q7Gp/iEzitPpb+XmE4JllqQGw8CyNn5SFpjtPYVdkooosk8RVFuP51ZUvA8rOVwyRUm6VRPG30eeKlJoDEf4GdEVR6MUV+0dFSqRH4kjneTqvbxe/niprn/GJK1vlpkI0aH8GhEJwX7InRpMMGIaOv+rqg+La9ZuUP92VvPIAq2urRigaQsHo+XCmOVF7ox6iuvoyFRYWMNFIWlgVKtoibdhyezEyhwSRS9uw2rUKNTVXIC5UVFLRnJlcbnpKgEB3AAtPTsaI0RqWaCUonrsWnktVEKfOlFPRp7Oh6zqE1Zre3J5eEX/AoabB3+bnxgd8mD0GdocDFy/9AfHT8V9owby56OgIo6e7G0JRkvLCgijsiVWumqZheNYweCoYUHr4CM1yu+Hz+3Gv4V+oqpp0qCwzTRNTJudg4oQJqPZ6IXZ99yN9uWJ5Islct/1hSsEo8X+QsNls+Pn4CYhNm0u+1zK04sxhmYnFd2HWJbs6uxDpjfzwP0ptjebUDXW8AAAAAElFTkSuQmCC);
  50. }
  51. #help-screen,#settings-screen,#preview-screen {
  52.     display: none;
  53. }
  54. #done {
  55.     background-color: YellowGreen;
  56.     width: 0;
  57.     height: 15px;
  58.     padding: 0;
  59.     margin: 0;
  60.     border-radius: 5px;
  61. }
  62. .addfield {
  63.     font-family: "Arial Black","Gadget",sans-serif;
  64.     font-size: 30px;
  65.     color: #04bf0a;
  66.     -moz-user-select: none;
  67.     -khtml-user-select: none;
  68.     user-select: none;
  69.     cursor: pointer;
  70. }
  71. #makebold {
  72.     font-weight: bold;
  73. }
  74. #makeitalic {
  75.     font-style: italic;
  76. }
  77. #makeunderline {
  78.     text-decoration: underline;
  79. }
  80. .button {
  81.     padding: 5px 10px;
  82.     display: inline;
  83.     background: #777 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAABkCAYAAABHLFpgAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAALdJREFUeNrEjkEWwiAQQyGlwOAN3Hv/m3UnA62vONF2p25lkfeTwAx+CuEWYgguxBgdYoo7YkwDOWeKDEjOO6TQStlRXlkRIylGl3JQYSaFJGxJIq9M2No9OYbuSOncYXuHWZN5Nglhcm6M4eDsfJDrt+Jv8vO7hyzL4rFtD8rmsPbu0bcOtEZq6tG0eVSKqlqhldao1grL2NY728qMhdozfbfqz3sc1dpBnYvMeqyrbet99U8BBgCRTXT4kGguQQAAAABJRU5ErkJggg==) repeat-x bottom;
  84.     border: 0;
  85.     color: #fff;
  86.     cursor: pointer;
  87.     font-weight: bold;
  88.     border-radius: 5px;
  89.     -moz-border-radius: 5px;
  90.     -webkit-border-radius: 5px;
  91.     text-shadow: 1px 1px #666;
  92.     margin: 0 5px;
  93. }
  94. .button:hover {
  95.     background-position: 0 -48px;
  96. }
  97. .button:active {
  98.     background-position: 0 top;
  99.     position: relative;
  100.     top: 1px;
  101.     padding: 6px 10px 4px;
  102. }
  103. #attachedFiles .File a {
  104.     color: RED;
  105.     font-weight: bold;
  106.     text-decoration: none;
  107.     font-family: 'Arial Black',Gadget,sans-serif;
  108. }
  109. #attachedFiles div {
  110.     display: inline-block;
  111.     width: 24px;
  112.     height: 24px;
  113.     background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAFF0lEQVR42o2Ve0xTVxjAv9MWOhRruRMsbx1YkJeiYMRlQ+PmYuZ0Y1NReagZwwm4LdkW/9hmzLYYTYwIQaPDsclwxsnclszXdGEzivJYeRVWHlIK8tbbF31B+XZuKUmvtLiTnN4v55x+v/M9DwHn+Pz0eVEFu7BBHiCJmUTklgjAlEBFp0xc1hySPtjX62jqC0zxntWRRnAzyLSwJD7RN+KDU4by9EQcNdvoBqcM0OUcTn/pgND5PlBeoyFib+HIbdXA8U1LA47tSI7A2QDSxQdK2KI346HzsZGqF3jSD5yFq0MZeOPMPfglJwVuqIa1lY29xdtj/Q/tWi3HWQElaQnYzY5RgGcLOEBSkBQ2n60mFdnJOMdLCNdUIxPXlX1nU8PmfbZvbZx2BkBOAYso4PTbCajWmkFAfURVovPUlOz8coDEwPnwVul98nvuGhwx2cBHJCRX24asf6r6v305ZE7ee+uW4QxAOAV8884y0OjMQIjnGE9SMUEmgW3f14LNNgETdMFOZ3ZyGPzcNjiBN09Jbl2uMPMBCRRQUMKe27ocH+nNs7qIC7JELIIQiQ/vjFgkwM3fPQB1cQHT3vSP1i2gbNtyHDBYuct6dBE4taJrKtPdIMlzuOeSAnrcAaIoIIwCzqevgEGjxaHLUxbxc2RaP4DMVwxZFxWgKc73U3kC/LBjBQ6PcXXwbAJ3Bl3O+M/1xowf66GnKJ9pb1a4B1zYuRJHTc8GEJpmAu7H4SNHahHGxwt3XqgD9ck8pqOlwQ0gv4S9mLESWVrJ/LbgmkaAXPx1T1gY6R/gRJwrkcDC0GAK8Mbt5bWgLtpPAY3uAT9lJoHWMu7x+tylR4dG4N+WNhgcZR2rRoMRQsKDYeuWDZBWRrPo5D6/DmWTe0BlVhLqrRP8CDplLnVFIhE+6tHArdt3YOOmV2kvEmN9jQJ6+wdJQe4u3HyuGroL32c6W58CcK1iEY3BlexkGLPZnTuu+gGEQiH8VXUXdDo9DA2PQl7ebkeBKWoaoK6pFT7MzYDXS6vhYWGuX1drMx+weGm8NPKjM+ylzCR0uugpCwgKvYTkj9+uoX7MBBaLFTKz04lJy6JarYG6ZhXJz9mFabTQOo/nMN2qVj5gUVSMVP5xKVu4JQ5Vo0ZnJbsGGVAgEhG2/h7qjCawWq0QnbqedNypwkCZPyh7Bkhm1nYsqFSA6uhepqdTxQeEy2OkUZ+Usidpu+6gAIGAzAiyQCiCx3V34bHeAOO2cVi2YSN0378D0vnzQKkegMysdMi/rIC2I7v9eh+28wFhS5ZKoz8957CgnQM83YsojwLIk/q72PloGBaHyADtdqIzWTB44fPQ3NVHMrLSqQUN0Hokm+l72MEHhERGS+MOltFWkThVaI4Md7rIIdMsomY9uHkDzSCkgECwWcxE4seg1WyC+uY2krNnJ2ZcqIeWrzOZvu5OPiA4IkoqfrdoUO4vEU/ijJfPMez0lXtN0AdCqwk0c4JhEHzgpQBvWGAegl/bhuBJYCx0DGktljP7A/vVXXxAbMpaH2V1VQQV58IsQxYUGr8398DhmGi5zNtLJNAbx2xNLcreomOHd9PtcTrHYpPXdClr7/Hfg6xDJ0hj1XUx9YaQ8whxdhlCJy0u7oVzeMxiNDAmnfYVJkCWQpe8JyftuoHenpsLgkKrqTYr/Yd9+YvrrGXHvuC/aP935Bz8UvT31SsS2o59ucTibr1q7QZDbOIqQ9mJr2b49j9nY543+33RowAAAABJRU5ErkJggg==);
  114. }
  115. #TIMEOUT_RANGE {
  116.     display: inline-block;
  117.     margin-left: 20px;
  118.     vertical-align: middle;
  119.     width: 300px;
  120. }
  121. .alexus-range,.alexus-range .crange {
  122.     height: 20px;
  123.     padding: 0;
  124. }
  125. .alexus-range .crange {
  126.     background-color: Orange;
  127. }
  128. .alexus-range,.alexus-range .crange,.alexus-range .range-controller {
  129.     -webkit-border-radius: 3px;
  130.     -moz-border-radius: 3px;
  131.     border-radius: 3px;
  132. }
  133. .alexus-range {
  134.     width: 100%;
  135.     background-color: white;
  136.     text-align: left;
  137.     margin-top: 10px;
  138.     margin-bottom: 10px;
  139. }
  140. .alexus-range .crange {
  141.     width: 0;
  142. }
  143. .alexus-range .range-controller {
  144.     width: 15px;
  145.     height: 25px;
  146.     margin-top: -24px;
  147.     margin-left: 0;
  148.     cursor: pointer;
  149.     padding: 0;
  150. }
  151. .barcounter {
  152.     position: absolute;
  153.     text-align: center;
  154.     width: 700px;
  155. }
  156. .txtinput {
  157.     height: 28px;
  158.     min-height: 28px;
  159. }
  160. .form-horizontal .control-label {
  161.     width: 250px;
  162. }
  163. .form-horizontal .controls {
  164.     margin-left: 260px;
  165. }
  166. .button.white {
  167.     background-color: NavajoWhite;
  168.     color: #000;
  169.     text-shadow: 1px 1px NavajoWhite;
  170. }
  171. .button.large {
  172.     font-size: 125%;
  173.     padding: 7px 12px;
  174. }
  175. .button.large:hover {
  176.     background-position: 0 -35px;
  177. }
  178. .button.large:active {
  179.     padding: 8px 12px 6px;
  180.     background-position: 0 top;
  181. }
  182. h2 {
  183.     margin-top: -15px;
  184. }
  185. #prime img, #help img, #settings img {
  186.     height: 24px;
  187. }
  188. #outprogressbar .barcounter {
  189.     width: 900px;
  190. }
  191. </style>
  192. <style type="text/less">
  193. .status {
  194.     padding: 5px;
  195.     /*.header {
  196.         b {
  197.             display: inline-block;
  198.             margin-top: -7px;
  199.         }
  200.         i {
  201.             display: block;
  202.             float: right;
  203.             margin-top: -3px;
  204.         }
  205.     }
  206.     .data {
  207.         padding-top: 10px;
  208.     }*/
  209.     .controls {
  210.         text-align: right;
  211.         float: right;
  212.     }
  213. }
  214. </style>
  215. <script src="http://cdnjs.cloudflare.com/ajax/libs/less.js/1.4.1/less.min.js" type="text/javascript"></script>
  216. <script>
  217. var Done=new Array();
  218. var maxDoneSize=25;
  219. var toDo=new Array();
  220. var additional=new Array(); var toDoSize=0;
  221. var enumer=0;
  222. var attachedFiles=new Array();
  223. var outServers={
  224.     active: false,
  225.     position: 0,
  226.     servers: new Array(),
  227.     servers_hash: "",
  228.     updateServers: function() {
  229.         if(this.servers_hash==$("#out_servers").val()) return;
  230.         this.servers_hash=$("#out_servers").val();
  231.         var tmpservers=this.servers_hash.split("\n");
  232.         this.servers=[];
  233.         for(var i in tmpservers) {
  234.             if(tmpservers[i].length<3) continue;
  235.             this.servers.push(tmpservers[i]);
  236.         }
  237.         this.position=0;
  238.     },
  239.     getServer: function() {
  240.         if(this.position>=this.servers.length) this.position=0;
  241.         var serv=this.servers[this.position];
  242.         this.position++;
  243.         return serv;
  244.     }
  245. }
  246. var threadNum=4;
  247. var timeoutNum=0;
  248. var AddNum=1;
  249. var status="stop";
  250. function ChangePass(login, pass) {
  251.     $.post('<?php print $_SERVER['PHP_SELF'];?>?changepass',{login:login,pass:pass}, function(data) {
  252.         var response=$.parseJSON(data);
  253.         if(response['result']=='ok')
  254.             $("#passchangesuccess").show();
  255.         else
  256.             $("#passchangeerror").show();
  257.     });
  258. }
  259. function pingoutservers() {
  260.     var servers=$("#out_servers").val();
  261.     if(servers=="") return;
  262.     window.pingout_servers=servers.split("\n");
  263.     window.pingout_servers_todo=window.pingout_servers.length;
  264.     $("#out_servers").val("");
  265.     $("#pingout_log").html("");
  266.     update_pingoutprogress();
  267.     for(var i=0; i<4; i++)
  268.         pingout_server();
  269. }
  270. function pingout_server() {
  271.     if(window.pingout_servers.length==0) return;
  272.     var server=window.pingout_servers.pop();
  273.     $.post('<?php print $_SERVER['PHP_SELF'];?>?pingoutserver',{server:server}, function(data) {
  274.         var result=$.parseJSON(data);
  275.         var log=$("#pingout_log").html();
  276.         if(result.status=="GOOD") {
  277.             $("#pingout_log").html(log+"<span style='color:green;'>"+result.server+" работает</span><br>");
  278.             $("#out_servers").val($("#out_servers").val()+result.server+"\n");
  279.         } else {
  280.             $("#pingout_log").html(log+"<span style='color:red;'>"+result.server+" ошибка: "+result.error+"</span><br>");
  281.         }
  282.         $("#pingout_log").scrollTop($("#pingout_log").prop("scrollHeight"));
  283.         update_pingoutprogress();
  284.         pingout_server();
  285.     });
  286. }
  287. function update_pingoutprogress() {
  288.     var pingoutservers_done=window.pingout_servers_todo-window.pingout_servers.length;
  289.     var opb=$("#outprogressbar");
  290.     $(opb).find(".barcounter").text(pingoutservers_done+"/"+window.pingout_servers_todo);
  291.     var percent=parseInt(pingoutservers_done/(window.pingout_servers_todo/100));
  292.     $(opb).find(".bar").css("width",percent+"%");
  293. }
  294. function Send(){
  295.     enumer=0;
  296.     if($("#use_out_servers").is(':checked')) {
  297.         outServers.updateServers();
  298.         outServers.active=true;
  299.     } else {
  300.         outServers.active=false;
  301.     }
  302.    
  303.     var res=$("#to").val().match(/\[FILE:(.+?)\]/);
  304.     if(res!=null) {
  305.         var pattern=res[0];
  306.         var file_path=res[1];
  307.         $.post("?linesinfile",{file_path:file_path},function(data){
  308.             var linesinfile=parseInt(data);
  309.             toDo=[];
  310.             for(var i=0;i<linesinfile;i++)
  311.                 toDo.push(pattern);
  312.             toDoSize=toDo.length;
  313.             SetProgressBar(0,"0/"+toDoSize);
  314.             ResumeSendMail();
  315.         });
  316.     } else {
  317.         toDo=$("#to").val().split("\n");
  318.         toDoSize=toDo.length;
  319.         SetProgressBar(0,"0/"+toDoSize);
  320.         ResumeSendMail();
  321.     }
  322. }
  323. function PauseSendMail() {
  324.     status="pause";
  325.     $("#PauseSendMail").prop("disabled",true);
  326.     $("#ResumeSendMail, #StopSendMail").prop("disabled",false);
  327.     $(".status span.tr-status-idle").removeClass("label-success label-warning").addClass("label-danger").text("<?php tr('status-pause',false);?>");
  328. }
  329. function ResumeSendMail() {
  330.     status="start";
  331.     $("#ResumeSendMail").prop("disabled",true);
  332.     $("#PauseSendMail, #StopSendMail").prop("disabled",false);
  333.     $(".status span.tr-status-idle").removeClass("label-danger label-warning").addClass("label-success").text("<?php tr('status-sending',false);?>");
  334.     for(var i=0; i<threadNum; i++) SendMail();
  335. }
  336. function StopSendMail() {
  337.     status="stop";
  338.     StopSendMailHandler();
  339. }
  340. function Preview(){
  341.         var params={
  342.         to      :"[email protected]",
  343.         fromname:ReplaceEnum($("#fromname").val(), false),
  344.         frommail:ReplaceEnum($("#frommail").val(), false),
  345.         replymail:ReplaceEnum($("#replymail").val(), false),
  346.         tema    :ReplaceEnum($("#tema").val(), false),
  347.         type    :$("#type").val(),
  348.         text    :ReplaceEnum($("#text").val()),
  349.         enumer  :(toDoSize-toDo.length)
  350.     };
  351.         if(additional.length==0)
  352.         $(".additional").each(function(){
  353.             additional.push(ReplaceEnum($(this).val()));
  354.         });
  355.     else
  356.         $(".additional").each(function(index, value){
  357.             if(index<additional.length) return;
  358.             additional.push(ReplaceEnum($(this).val()));
  359.         });
  360.     for(i in additional) {
  361.         params["additional["+i+"]"]=additional[i];
  362.     }
  363.     $.post('<?php print $_SERVER['PHP_SELF'];?>?preview', params, function(data){
  364.         if($("#type").val()=='text')
  365.             showPreviewWindow('data:text/plain;charset=utf-8;base64,'+Base64.encode(data));
  366.         else
  367.             showPreviewWindow('data:text/html;charset=utf-8;base64,'+Base64.encode(data));
  368.             });
  369. }
  370. function StopSendMailHandler() {
  371.     //alert("Рассылка завершена!");
  372.     $(".status span.tr-status-idle").removeClass("label-success label-danger").addClass("label-warning").text("<?php tr('status-idle',false);?>");
  373.     $(".status .btn").prop("disabled",true);
  374. }
  375. function SendMail() {
  376.     if(status=="pause")
  377.         return;
  378.     else if(status=="stop") {
  379.         //toDo=[];
  380.         //toDoSize=0;
  381.         //SetProgressBar((toDoSize-toDo.length)/(toDoSize/100),(toDoSize-toDo.length)+"/"+toDoSize);
  382.         return;
  383.     }
  384.    
  385.     if(toDo.length==0) {//!email || email=="" || email==" ") {
  386.         //останавливаем остальные потоки и генерируем событие окончания рассылки
  387.         status="stop";
  388.         StopSendMailHandler();
  389.         return;
  390.     }
  391.     var email=toDo.pop();
  392.    
  393.     additional=new Array();
  394.     if(email.indexOf(";")!=-1) {
  395.         var emailadds=email.split(";");
  396.         for(var adds in emailadds) {
  397.             if(adds==0)
  398.                 email=emailadds[0];
  399.             else
  400.                 additional.push(emailadds[adds]);
  401.         }
  402.     }
  403.     var params={
  404.         to      :email,
  405.         fromname:ReplaceEnum($("#fromname").val(), false),
  406.         frommail:ReplaceEnum($("#frommail").val(), false),
  407.         replymail:ReplaceEnum($("#replymail").val(), false),
  408.         tema    :ReplaceEnum($("#tema").val(), false),
  409.         type    :$("#type").val(),
  410.         captcha_code:$("input[name=captcha_code]").val(),
  411.         text    :ReplaceEnum($("#text").val()),
  412.         enumer  :(toDoSize-toDo.length)
  413.     };
  414.     //1.6.5 (16.09.2013) прокси
  415.     if($("#use_proxy_server").is(":checked")) params['PROXY']=$("#proxy_server_uri").val();
  416.     if(attachedFiles.length!=0) params['files']=JSON.stringify(attachedFiles);
  417.     if(additional.length==0)
  418.         $(".additional").each(function(){
  419.             additional.push(ReplaceEnum($(this).val()));
  420.         });
  421.     else
  422.         $(".additional").each(function(index, value){
  423.             if(index<additional.length) return;
  424.             additional.push(ReplaceEnum($(this).val()));
  425.         });
  426.     for(i in additional) {
  427.         params["additional["+i+"]"]=additional[i];
  428.     }
  429.     if(outServers.active) params["outserver"]=outServers.getServer();
  430.     $.post('<?php print $_SERVER['PHP_SELF'];?>?send', params, function(data){
  431.         if(data=="CAPTCHA ERROR") {
  432.             $("#console").html("<?php tr('badcaptcha');?>");
  433.             $("#console").css("background-color","Tomato");
  434.                         return;
  435.         } else if(data=="OUT OF LIMIT") {
  436.             $("#console").html("<?php tr('sendlimit');?>");
  437.             $("#console").css("background-color","Tomato");
  438.                         return;
  439.         }
  440.                 $("#console").html(data);
  441.         $("#console").css("background-color","YellowGreen");
  442.         var email=data.split(" ");
  443.         AddDone(email[2]);
  444.         DrawDone();
  445.         SetProgressBar((toDoSize-toDo.length)/(toDoSize/100),(toDoSize-toDo.length)+"/"+toDoSize);
  446.         if(timeoutNum==0)
  447.             SendMail();
  448.         else
  449.             setTimeout(function(){SendMail()},timeoutNum*1000);
  450.     });
  451. }
  452. function SetProgressBar(count,text) {
  453.     var psize=parseInt($("#progressbar").css("width"))/100;
  454.     $("#progressbar .bar").css("width",count+"%");
  455.     $("#progressbar .barcounter").text(text);
  456. }
  457. function AddDone(item) {
  458.     if(Done.length>maxDoneSize)
  459.         Done.splice(0,1);
  460.     Done.push(item);
  461. }
  462. function DrawDone() {
  463.     $("#ext-console").html("");
  464.     var txt="";
  465.     for(i in Done) {
  466.         txt=Done[i]+"<br>"+txt;
  467.     }
  468.     $("#ext-console").html(txt);
  469. }
  470. function dThreads(){
  471.     if(threadNum==1) return;
  472.     threadNum--;
  473.     ShowThreads();
  474. }
  475. function iThreads(){
  476.     if(threadNum==100) return;
  477.     threadNum++;
  478.     ShowThreads();
  479. }
  480. function ShowThreads() {
  481.     $("#THREADS").text(threadNum);
  482. }
  483. function ShowUpload() {
  484.     $("#FileUploadDialog").modal("show");
  485. }
  486. function HideUpload() {
  487.     $("#FileUploadDialog").modal("hide");
  488. }
  489. function HideAttache() {
  490.     $("#univarsalUpload").hide();
  491. }
  492. function showUniversalUpload() {
  493.     if($("#univarsalUpload").css("display")=="none") {
  494.         $("#univarsalUpload").children(".modal-body").children("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?upload_universal");
  495.         $("#univarsalUpload").modal("show");
  496.     } else $("#univarsalUpload").modal("hide");
  497. }
  498. function UploadClickHandler(object) {
  499.     $(object).parent().parent().children(".modal-body").children("iframe").contents().find("form").submit();
  500. }
  501. window.uploadFinishedHandler=function(data) {
  502.     if(data==null) return;
  503.     var file=$.parseJSON(Base64.decode(data));
  504.     attachedFiles.push(file);
  505.     updateFileList();
  506.     $("#univarsalUpload").modal("hide");
  507. }
  508. function updateFileList() {
  509.     $("#attachedFiles").html("");
  510.     for(var file in attachedFiles) {
  511.         if(file=='remove') continue;
  512.         $("#attachedFiles").html($("#attachedFiles").html()+(file!=0?"<br>":"")+"<i class='icon-file'></i> "+attachedFiles[file]['name']+" <button class='btn' onclick='removeFile("+file+");return false'><?php tr('delete',false);?></button>");
  513.     }
  514. }
  515. function removeFile(id) {
  516.     delete attachedFiles[id];
  517.     updateFileList();
  518. }
  519. function TogleLoadSave() {
  520.     if($("#LoadSaveDialog").css("display")=="none") {
  521.         $("#LoadSaveDialog").find("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?loadsave");
  522.         $("#LoadSaveDialog").modal("show");    
  523.     } else {
  524.         $("#LoadSaveDialog").modal("hide");
  525.     }
  526. }
  527. function upload_finished(data) {
  528.     $("#to").val(data.replace(new RegExp(" ",'g'),"\n"));
  529.     $("#FileUploadDialog").children("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?upload_form");
  530.     HideUpload();
  531. }
  532. function AddField(object) {
  533.     $(object).parent().parent().after('<br><div class="input-prepend"><span class="add-on">[ADD'+AddNum+']</span></div> <input type="text" name="additional'+AddNum+'" id="additional'+AddNum+'" class="input-xlarge txtinput additional" placeholder="<?php tr('addfield2',false);?> '+AddNum+'"> <div class="input-append"><span class="add-on"><span class="addfield" onclick="AddField(this)">+</span></span>');
  534.     $(object).parent().parent().remove();
  535.     AddNum++;
  536. }
  537. function SaveData() {
  538.     $("#LoadSaveDialog").find("iframe").attr("src","<?php print $_SERVER['PHP_SELF'];?>?savedata").load(function(){
  539.         $("#LoadSaveDialog").find("iframe").unbind("load");
  540.                 var data="[FROM-NAME]"+$("#fromname").val()+"\n"+"[FROM-EMAIL]"+$("#frommail").val()+"\n"+"[THEME]"+$("#tema").val()+"\n"+"[TYPE]"+$("#type").val()+"\n";
  541.                 $(".additional").each(function(index, value){
  542.             data+="[ADD"+index+"]"+$(value).val()+"\n";
  543.         });
  544.                 if(attachedFiles.length!=0) data+='[FILES]'+JSON.stringify(attachedFiles)+"\n";
  545.        
  546.                 data+="[TEXT]"+$("#text").val().replaceAll("&","&amp;");
  547.        
  548.         $("textarea",$(this).contents()).val(data);
  549.         $("form",$(this).contents()).submit();
  550.     });
  551. }
  552. function loadsave(data) {
  553.     var content=data.split("[TEXT]");
  554.     $("#text").val(content[1].replaceAll("&amp;","&"));
  555.     content=content[0].split("\n");
  556.     for(var i in content) {
  557.         if(content[i].indexOf("[FROM-NAME]")!=-1) {
  558.             content[i]=content[i].replace("[FROM-NAME]","");
  559.             $("#fromname").val(content[i]);
  560.         } else if(content[i].indexOf("[FROM-EMAIL]")!=-1) {
  561.             content[i]=content[i].replace("[FROM-EMAIL]","");
  562.             $("#frommail").val(content[i]);
  563.         } else if(content[i].indexOf("[THEME]")!=-1) {
  564.             content[i]=content[i].replace("[THEME]","");
  565.             $("#tema").val(content[i]);
  566.         } else if(content[i].indexOf("[TYPE]")!=-1) {
  567.             content[i]=content[i].replace("[TYPE]","");
  568.             $("#type [value='"+content[i]+"']").attr("selected", "selected");
  569.         } else if(content[i].indexOf("[FILES]")!=-1) {
  570.             content[i]=content[i].replace("[FILES]","");
  571.             attachedFiles=$.parseJSON(content[i]);
  572.             updateFileList();
  573.         } else if(content[i].indexOf("[ADD")!=-1) {
  574.             var result=/\[ADD(\d+)\]/.exec(content[i]);
  575.             if(AddNum<=result[1]) {
  576.                 AddField($(".addfield:last"));
  577.             }
  578.             content[i]=content[i].replace(result[0],"");
  579.             $("#additional"+result[1]).val(content[i]);
  580.         }
  581.     }
  582.     TogleLoadSave();
  583. }
  584. $(document).ready(function(){
  585.    
  586.     $("#prime, .prime-button").click(function(){
  587.         $(".section-screen").hide();
  588.         $("#prime-screen").show();
  589.     });
  590.     $("#help").click(function(){
  591.         $(".section-screen").hide();
  592.         $("#help-screen").show();
  593.     });
  594.     $("#settings").click(function(){
  595.         $(".section-screen").hide();
  596.         $("#settings-screen").show();
  597.     });
  598.     $(".btn-checkbox").click(function() {
  599.         if($(this).hasClass("btn-success")) {
  600.             $($(this).attr("data-toggle")).prop("checked",false);
  601.             $(this).removeClass("btn-success").addClass("btn-danger").children("i").removeClass("icon-ok").addClass("icon-remove");
  602.         } else {
  603.             $($(this).attr("data-toggle")).prop("checked",true);
  604.             $(this).removeClass("btn-danger").addClass("btn-success").children("i").removeClass("icon-remove").addClass("icon-ok");
  605.         }
  606.     });
  607.     $("#maxDoneSize").change(function() {
  608.         maxDoneSize=$(this).val();
  609.     });
  610.     alexusRange.create($("#TIMEOUT_RANGE"));
  611.     alexusRange.change($("#TIMEOUT_RANGE"),function(range) {
  612.         isetTimeout(alexusRange.get($(range)));
  613.         $("#TIMEOUT").val(timeoutNum);
  614.     });
  615.     $("#TIMEOUT").keyup(function() {
  616.         isetTimeout($(this).val());
  617.         alexusRange.set($("#TIMEOUT_RANGE"),timeoutNum);
  618.     });
  619.     alexusRange.set($("#TIMEOUT_RANGE"),timeoutNum);
  620.     $("[rel=tooltip]").tooltip();
  621.     ShowThreads();
  622.     });
  623. function isetTimeout(val) {
  624.     var newTimeout=parseInt(val);
  625.     if(newTimeout<0)
  626.         timeoutNum=0;
  627.     else if(newTimeout>14400)
  628.         timeoutNum=14400;
  629.     else
  630.         timeoutNum=newTimeout;
  631. }
  632. function MakeBold() {
  633.     wrapText("text","<b>","</b>");
  634. }
  635. function MakeItalic() {
  636.     wrapText("text","<i>","</i>");
  637. }
  638. function MakeUnderline() {
  639.     wrapText("text","<u>","</u>");
  640. }
  641. function ReplaceEnum(data) {
  642.     return data;
  643.     //Этот функционал перенесен в php часть
  644. }
  645. function MakeReverse() {
  646.     var textArea = $("#text");
  647.     var len = textArea[0].value.length;
  648.     var start = textArea[0].selectionStart;
  649.     var end = textArea[0].selectionEnd;
  650.     var selectedText = textArea[0].value.substring(start, end);
  651.     selectedText=selectedText.split("").reverse().join("");
  652.     var replacement = "<span style=\"direction: rtl;unicode-bidi: bidi-override;\">" + selectedText + "</span>";
  653.     textArea[0].value=textArea[0].value.substring(0, start) + replacement + textArea[0].value.substring(end, len);
  654. }
  655. function wrapText(elementID, openTag, closeTag) {
  656.     var textArea = $('#' + elementID);
  657.     var len = textArea[0].value.length;
  658.     var start = textArea[0].selectionStart;
  659.     var end = textArea[0].selectionEnd;
  660.     var selectedText = textArea[0].value.substring(start, end);
  661.     var replacement = openTag + selectedText + closeTag;
  662.     textArea[0].value=textArea[0].value.substring(0, start) + replacement + textArea[0].value.substring(end, len);
  663. }
  664. function showPreviewWindow(link) {
  665.     $("#preview-screen").find("iframe").attr("src", link);
  666.     $(".section-screen").hide();
  667.     $("#preview-screen").show();
  668.     $(window).scrollTop(0);
  669. }
  670. var alexusRange={
  671.     mouseX:0,
  672.     newX:0,
  673.     rangeCounter:0,
  674.     changeHandlers:{},
  675.     create:function(range) {
  676.         $(range).addClass("alexus-range").addClass("well").append('<div class="crange"></div><div class="range-controller btn"></div>');
  677.         if(alexusRange.rangeCounter==0) $(document).mouseup(alexusRange.mouseupHandler);
  678.         $(range).children(".range-controller").mousedown(alexusRange.mousedownHandler);
  679.         alexusRange.rangeCounter++;
  680.         $(range).attr("ruqid",alexusRange.rangeCounter);
  681.     },
  682.     RangeMouseMoveHandler:function(e) {
  683.                 if(alexusRange.mouseX==0) alexusRange.mouseX=e.pageX;
  684.         alexusRange.newX=e.pageX
  685.         if(e.pageX!=alexusRange.mouseX)
  686.             $(".alexus-range .range-controller[state=inmove]").each(function() {
  687.                 var max_pos=parseInt($(this).parent().css("width"))-parseInt($(this).css("width"))-2;
  688.                 var cur_pos=parseInt($(this).css("margin-left"));
  689.                 var delta=alexusRange.mouseX-alexusRange.newX;
  690.                 if(cur_pos-delta<0)
  691.                     cur_pos=0;
  692.                 else if(cur_pos-delta>max_pos)
  693.                     cur_pos=max_pos;
  694.                 else
  695.                     cur_pos-=delta;
  696.                 $(this).css("margin-left", cur_pos);
  697.                 $(this).parent().children(".crange").css("width",parseInt(cur_pos/(max_pos/100))+"%");
  698.                 if(alexusRange.changeHandlers[alexusRange.uniqueId($(this).parent())]!=undefined)
  699.                     alexusRange.changeHandlers[alexusRange.uniqueId($(this).parent())]($(this).parent());
  700.             });
  701.         alexusRange.mouseX=alexusRange.newX;
  702.     },
  703.     change:function(range, handler) {
  704.         alexusRange.changeHandlers[alexusRange.uniqueId($(range))]=handler;
  705.     },
  706.     mousedownHandler:function() {
  707.                 $(this).attr("state","inmove");
  708.         $(document).mousemove(alexusRange.RangeMouseMoveHandler);
  709.     },
  710.     mouseupHandler:function() {
  711.         $(".alexus-range .range-controller[state=inmove]").attr("state","relax");
  712.         $(document).unbind("mousemove", alexusRange.RangeMouseMoveHandler);
  713.         alexusRange.ResetPos();
  714.     },
  715.     ResetPos:function() {
  716.         alexusRange.mouseX=0;
  717.     },
  718.     get:function(range) {
  719.         var max_pos=parseInt($(range).css("width"))-parseInt($(range).children(".range-controller").css("width"))-2;
  720.         var cur_pos=parseInt($(range).children(".range-controller").css("margin-left"));
  721.         var max_val=parseInt($(range).attr("max"));
  722.         var min_val=parseInt($(range).attr("min"));
  723.         return parseInt((max_val-min_val)*(cur_pos/max_pos))+min_val;  
  724.     },
  725.     set:function(range, val) {
  726.         var max_pos=parseInt($(range).css("width"))-parseInt($(range).children(".range-controller").css("width"))-2;
  727.         var cur_pos=parseInt($(range).children(".range-controller").css("margin-left"));
  728.         var max_val=$(range).attr("max");
  729.         var min_val=$(range).attr("min");
  730.         var pos=parseInt(max_pos*(((val-min_val)/(max_val-min_val))));
  731.         if(pos<0)
  732.             pos=0;
  733.         else if(pos>max_pos)
  734.             pos=max_pos;
  735.         $(range).children(".range-controller").css("margin-left",pos);
  736.         $(range).children(".crange").css("width",parseInt(pos/(max_pos/100))+"%");
  737.     },
  738.     uniqueId:function(range) {
  739.         return $(range).attr("ruqid");
  740.     }
  741. }
  742. function setLang(code) {
  743.     if(code=='ru') {
  744.         setCookie('translation','ru',{path:"/"});
  745.                 document.location.reload();
  746.     } else {
  747.         setCookie('translation',code,{path:"/"});
  748.                 document.location="/"+code+"/";
  749.                 document.location.reload();
  750.     }
  751. }
  752. function setCookie(name, value, props) {
  753.     props = props || {}
  754.     var exp = props.expires
  755.     if (typeof exp == "number" && exp) {
  756.         var d = new Date()
  757.         d.setTime(d.getTime() + exp*1000)
  758.         exp = props.expires = d
  759.     }
  760.     if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
  761.  
  762.     value = encodeURIComponent(value)
  763.     var updatedCookie = name + "=" + value
  764.     for(var propName in props){
  765.         updatedCookie += "; " + propName
  766.         var propValue = props[propName]
  767.         if(propValue !== true){ updatedCookie += "=" + propValue }
  768.     }
  769.     document.cookie = updatedCookie
  770.  
  771. }
  772. String.prototype.replaceAll = function(search, replace){
  773.   return this.split(search).join(replace);
  774. }
  775. var Base64={_keyStr:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",encode:function(e){var t="";var n,r,i,s,o,u,a;var f=0;e=Base64._utf8_encode(e);while(f<e.length){n=e.charCodeAt(f++);r=e.charCodeAt(f++);i=e.charCodeAt(f++);s=n>>2;o=(n&3)<<4|r>>4;u=(r&15)<<2|i>>6;a=i&63;if(isNaN(r)){u=a=64}else if(isNaN(i)){a=64}t=t+this._keyStr.charAt(s)+this._keyStr.charAt(o)+this._keyStr.charAt(u)+this._keyStr.charAt(a)}return t},decode:function(e){var t="";var n,r,i;var s,o,u,a;var f=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");while(f<e.length){s=this._keyStr.indexOf(e.charAt(f++));o=this._keyStr.indexOf(e.charAt(f++));u=this._keyStr.indexOf(e.charAt(f++));a=this._keyStr.indexOf(e.charAt(f++));n=s<<2|o>>4;r=(o&15)<<4|u>>2;i=(u&3)<<6|a;t=t+String.fromCharCode(n);if(u!=64){t=t+String.fromCharCode(r)}if(a!=64){t=t+String.fromCharCode(i)}}t=Base64._utf8_decode(t);return t},_utf8_encode:function(e){e=e.replace(/\r\n/g,"\n");var t="";for(var n=0;n<e.length;n++){var r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r)}else if(r>127&&r<2048){t+=String.fromCharCode(r>>6|192);t+=String.fromCharCode(r&63|128)}else{t+=String.fromCharCode(r>>12|224);t+=String.fromCharCode(r>>6&63|128);t+=String.fromCharCode(r&63|128)}}return t},_utf8_decode:function(e){var t="";var n=0;var r=c1=c2=0;while(n<e.length){r=e.charCodeAt(n);if(r<128){t+=String.fromCharCode(r);n++}else if(r>191&&r<224){c2=e.charCodeAt(n+1);t+=String.fromCharCode((r&31)<<6|c2&63);n+=2}else{c2=e.charCodeAt(n+1);c3=e.charCodeAt(n+2);t+=String.fromCharCode((r&15)<<12|(c2&63)<<6|c3&63);n+=3}}return t}}
  776. </script>
  777. </head>
  778. <body>
  779.    
  780. <div class="modal hide fade" id="univarsalUpload">
  781.      <div class="modal-header">
  782.         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  783.         <h3><?php tr('attachfile');?></h3>
  784.     </div>
  785.     <div class="modal-body">
  786.         <iframe src="<?php print $_SERVER['PHP_SELF'];?>?upload_universal" width="260px" height="80px" frameborder="0"></iframe>
  787.     </div>
  788.     <div class="modal-footer">
  789.         <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
  790.         <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
  791.     </div>
  792. </div>
  793.    
  794. <div class="modal hide fade" id="FileUploadDialog">
  795.     <div class="modal-header">
  796.         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  797.         <h3><?php tr('uploadlist');?></h3>
  798.     </div>
  799.     <div class="modal-body">
  800.         <iframe src="<?php print $_SERVER['PHP_SELF'];?>?upload_form" width="260px" height="80px" frameborder="0"></iframe>
  801.     </div>
  802.     <div class="modal-footer">
  803.         <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
  804.         <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
  805.     </div>
  806. </div>
  807.    
  808. <div class="modal hide fade" id="LoadSaveDialog">
  809.     <div class="modal-header">
  810.         <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
  811.         <h3><?php tr('uploadtemplate');?></h3>
  812.     </div>
  813.     <div class="modal-body">
  814.         <iframe src="<?php print $_SERVER['PHP_SELF'];?>?loadsave" width="260px" height="80px" frameborder="0"></iframe>
  815.     </div>
  816.     <div class="modal-footer">
  817.         <a href="#" class="btn" data-dismiss="modal"><?php tr('close');?></a>
  818.         <a href="#" class="btn btn-primary" onclick="UploadClickHandler(this);return false"><?php tr('upload');?></a>
  819.     </div>
  820. </div>
  821.    
  822. <div class="container">
  823.     <div class="row">
  824.         <div class="span12">
  825.             <div class="navbar">
  826.                 <div class="navbar-inner">
  827.                     <a class="brand" href="#" id="hello"><?php tr('name');?> <?php echo VERSION;?></a>
  828.                     <ul class="nav">
  829.                         <li><a href="#prime" id="prime"><img alt="<?php tr('main',false);?>" src="data:image/png;base64,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"></a></li>
  830.                         <li><a href="#help" id="help"><img alt="<?php tr('help',false);?>" src="data:image/png;base64,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"></a></li>
  831.                         <li><a href="#settings" id="settings"><img alt="<?php tr('settings',false);?>" src="data:image/png;base64,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"></a></li>
  832.                     </ul>
  833.                     <ul class="nav pull-right">
  834.                         <li><a href="#" onclick="setLang('ru');return false">
  835.                             <img alt="русский" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAMAAADXqc3KAAABSlBMVEUAAAD///8AAQEAAQEAAQEAAQEAAQHT09PX19fa2trc3Nze3t7f39/Ozs719fX5+fn8/Pz9/f3+/v7+/v7+/v7+/v7+/v7ExMTz8/P4+Pj7+/v9/f3+/v7Dw8Py8vL4+Pj8/Pz9/f3CwsLw8PD39/f5+fn6+vr7+/sCAsA9Pe08PPU8PPc8PPg8PPkCAr8zM+syMvIyMvUyMvYxMfYCAr0oKOgnJ/AnJ/MnJ/QnJ/QCArslJeYnJ+4nJ/AnJ/EmJvICAroVFeEVFeoVFe0VFe4VFe+4AgLgERHoERHqERHrEBDsEBC2AgLdDQ3lDAzoDAzqDQ21AgLZCAjjCAjmCQnnCQnoCAizAgLXBQXfBQXjBQXkBQXlBQWzBQXVBwfbCAjhEBDjFhbmGxvlHBzmHx/mICDmISG4DAy5EBC9ERHAERHCERHDERHEERHpaBTVAAAAB3RSTlMAAAQMECQwISWBWgAAAGZJREFUKFPNjUEKgDAMBHdr0kP//1dBxdhIW1qoF0FwjjNkA3wPg4JOM+ZgF0ZWqnUOYRoPSlwF+WLXIWwxbwmUvtYHtTvE6dQvAnpK0HdTNVolh9Rsd2DgEsbPpZ4MnAabaic8eFyiFV6rXRgALgAAAABJRU5ErkJggg==" />
  836.                         </a></li>
  837.                         <li><a href="#" onclick="setLang('en');return false">
  838.                             <img alt="english" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAEM0lEQVRIie2Ua0jVZxzHSxJ6YaBBCFFYYtpeNJagjqaDQalbi+zFaGkT5yzWiiajTYsZTXIt87Z5qdkU04aF9ww6HrVjamfaIW/pqSyPnTpXtSzzkqn77Hn+madYbzaKvdkfvi/O7/L5PpffeebN+//777/58xfU79hBl05Hi66LiH3FeH+UiffGLKHsORkM/dStXYva25u+7m7e257/Qj5L6QnbU0R9Rjbn/f3RZmUh2dLApWb3boxpaYz29zM9PU3LNRvHCjtIPtVBSlEHaac7mZn5E3tODraMDGYmJjhZrldysuZoQTuNrXcYLC3FlJ7OiNlMW1ubNHCRBq6+m5O5o2niVkwMQxUVAjaDwfyI2JTLbI2vVSQNDFFR3N66lenRUb460qTEv/yxEX1TJ8bYWOyFhTwZG8M+NEzQp2nSwFUxcHrrO3YmqvmjoQtjfDz3Dh3i6fAwY+OT/FzcSdg3KrGzGW6Hh9MbFsbU48d8kdjAkfyr2MoqMERHMyKOeGpqivbrNvYcqUMyXzD4lpBdpQTvqiTz93bMefn0btvGoytXlKb61rs8fTrFzS1buB4czOTDh9TVdWPcvx9jXBwTAwM8mZwkr6JbYUiWZDoMVu8jKKqYwM9LCIwuJTKhlpsXLnFdrNacnc2k2PakAOhDQugODGTiwQN6IyKwFRQocaPlITsPX1R6JUOyJHPO4KJGw+DgICMjI4wJ2Pj4+CvVGRREu5ikUVH7qrzslQzJ0gjmnEHuokU0rl5Ni48PV4R0/1KyVzIk64STk8MgR/zQrFqFdragVRaLef8nap3tlQzJOiEWPWegVqsxGo0MiMu6f/8+D8QZD4spelFDd+/StGQJWk/Pv+WkZI/slQzJqhFMxyX7fI3bulTcAn8RyuSDmGI69EaGhoa4kZREi58fA+JP2ODqStPy5Up80GqlR4z0ZXEc2oISAiKKlF6FIViS6TDw3ssi/6O4BKQRl1qL1WbH3NNDa2gorRs38lueGmtfH/Vi2w1Ll2K3D5BfplNW21deTqOXFx1x8ez+4bzCkCzJfMnAY306Zao2LBYLvWfO0LBiBVcPHWbz3hI8P/wVy61b1C5cyEVxTFarjYV+6WzfX4mh34RZr0crRrhZTFlR7jnc30952eDdLYnioevE0NuLTrxLGnFRlcfPsnxDNs6+KXgE53Dvxg1Uzs7ULl6MyWRW4lI+m3Kpbe4RMRPtCQlccHdH/VMqb4cedBhUV1fTrlJR4+uLNjKSg8lVCnyZkIQHhJ/CJHagWbmSS2vWYDZbWBF6XMkpNSE5JJ/UKJd7raqKc+LI8j/e5DAoOXCAXA8PTscnsO6TY7j5fT+rBEWrNiTRKKaiwM2NwmXLaGpunss907P69Z+lU3FOhUqYFIq7e27gIuQl9M5rltfz53rBrInra5aLwgbeqN64wV+Rl1Pcwvw+zwAAAABJRU5ErkJggg==" />
  839.                         </a></li>
  840.                     </ul>
  841.                    
  842.                 </div>
  843.             </div>
  844.            
  845.         </div> 
  846.     </div>
  847.    
  848.     <div class="row section-screen" id="help-screen">
  849.         <div class="span12">
  850.             <div class="well">
  851.                 <?php tr('helppage',false);?>
  852.             </div>
  853.         </div>
  854.     </div>
  855.    
  856.     <div class="row section-screen" id="preview-screen">
  857.         <div class="span12">
  858.             <div class="well">
  859.                 <h3><?php tr('preview');?></h3>
  860.                 <button class="btn prime-button"><?php tr('backtoeditor',false);?></button>
  861.                 <iframe src="about:blank" style="width:100%; height:600px;"></iframe>
  862.                 <button class="btn prime-button"><?php tr('backtoeditor',false);?></button>
  863.             </div>
  864.         </div>
  865.     </div>
  866.    
  867.    
  868.    
  869.     <div class="row section-screen" id="settings-screen">
  870.         <div class="span12">
  871.             <div class="well">
  872.                 <h2><?php tr('settings');?></h2>
  873.                 <ul class="nav nav-tabs">
  874.                     <li class="active"><a href="#home-tab"data-toggle="tab"><?php tr('settings-primary')?></a></li>
  875.                     <li><a href="#outservers-tab" data-toggle="tab"><?php tr('settings-outservers')?></a></li>
  876.                     <li><a href="#security-tab" data-toggle="tab"><?php tr('settings-security')?></a></li>
  877.                 </ul>
  878.                 <div class="tab-content">
  879.                     <div class="tab-pane active" id="home-tab">
  880.                         <?php tr('threadsnum');?><br>
  881.                         <div class="btn-group">
  882.                             <input type="button" class="btn" onclick="dThreads();" value="<?php tr('less',false);?>"><button class="btn" id="THREADS">4</button><input type="button" class="btn" onclick="iThreads();" value="<?php tr('more',false);?>">      
  883.                         </div>
  884.                        
  885.                         <br><br>
  886.                         <?php tr('timeoutlen');?><br>
  887.                         <input type="text" class="input-mini" id="TIMEOUT" value="0" style="height:25px; margin-top:10px;"><div id="TIMEOUT_RANGE" min="0" max="3600"></div>
  888.                         <br><br>
  889.                         <?php tr('settings-history-length')?> <input type="text" class="input-mini" id="maxDoneSize" value="25" style="height:25px; margin-top:10px;">
  890.                     </div>
  891.                     <div class="tab-pane" id="outservers-tab">
  892.                         <input type="checkbox" id="use_out_servers" style="display:none;">
  893.                         <button type="button" class="btn btn-danger btn-checkbox" data-toggle="#use_out_servers"><i class="icon-remove"></i></button> <?php tr('useoutservers');?><br><br>
  894.                         <?php tr('settings-outservers-doc')?>
  895.                         <br>
  896.                         <textarea id="out_servers" style="width:100%; height:250px;" placeholder="Пример: http://serv4.ru/sw.php|c99|login:password"></textarea><br>
  897.                         <?php tr('settings-outservers-check')?>
  898.                         <br><br>
  899.                         <div class="progress" id="outprogressbar">
  900.                             <div class="bar bar-warning" style="width: 0%;"></div>
  901.                             <div class="barcounter">0/0</div>
  902.                         </div>
  903.                         <?php tr('settings-outservers-check-log')?>
  904.                         <div class="well" id="pingout_log" style="width:860px; height:150px;overflow-y:scroll;"></div>
  905.                     </div>
  906.                     <div class="tab-pane" id="security-tab">
  907.                         <?php
  908.                         $no_write_perm=false;
  909.                         clearstatcache();
  910.                         if(!is_writable(__FILE__)):
  911.                         $no_write_perm=true;
  912.                         ?>
  913.                         <div class="alert alert-error">
  914.                         <?php tr('settings-security-notwritable')?>
  915.                         </div>
  916.                         <?php endif;?>
  917.                         <div class="alert alert-success" style="display:none;" id="passchangesuccess">
  918.                         <?php tr('settings-security-password-changed')?>
  919.                         </div>
  920.                         <div class="alert alert-error" style="display:none;" id="passchangeerror">
  921.                         <?php tr('settings-security-password-not-changed')?>
  922.                         </div>
  923.                         <table border=0>
  924.                             <tr>
  925.                                 <td><input type="text" id="inputLogin" class="txtinput" placeholder="<?php tr('login',false);?>" <?php if($no_write_perm):?>readonly<?endif;?>></td>
  926.                                 <td><input type="text" id="inputPassword" class="txtinput" placeholder="<?php tr('password',false);?>" <?php if($no_write_perm):?>readonly<?endif;?>></td>
  927.                             </tr>
  928.                             <tr>
  929.                                 <td>
  930.                                     <button type="button" class="btn" onclick="ChangePass($('#inputLogin').val(),$('#inputPassword').val())" <?php if($no_write_perm):?>disabled<?endif;?>><?php tr('settings-security-set-password')?></button>
  931.                                 </td><td>
  932.                                     <button type="button" class="btn btn-danger" onclick="ChangePass('','');" <?php if($no_write_perm):?>disabled<?endif;?>><?php tr('settings-security-remove-password')?></button>
  933.                                 </td>
  934.                             </tr>
  935.                         </table>
  936.                         <br><br>
  937.                         <input type="checkbox" id="use_proxy_server" style="display:none;">
  938.                         <button type="button" class="btn btn-danger btn-checkbox" data-toggle="#use_proxy_server"><i class="icon-remove"></i></button> <?php tr('settings-security-use-proxy')?><br>
  939.                         <input type="text" class="txtinput" id="proxy_server_uri" placeholder="http://proxyserver.ru:8080">
  940.                     </div>
  941.                 </div>
  942.             </div>
  943.         </div>
  944.     </div>
  945.        
  946.     <div class="row section-screen" id="prime-screen">
  947.         <div class="span3">
  948.             <div id="console" class="well" style="text-align:center;"><?php tr('status');?></div>
  949.             <div id="ext-console" class="well"></div>  
  950.         </div>
  951.         <div class="span9">
  952.             <div class="progress" id="progressbar">
  953.                 <div class="bar bar-warning" style="width: 0%;"></div>
  954.                 <div class="barcounter">0/0</div>
  955.             </div>
  956.             <div class="well status">
  957.                 <b><?php tr('status');?>: <span class="label label-warning"><?php tr('status-idle');?></span></b>
  958.                 <div class="controls">
  959.                 <button class="btn" disabled="disabled" id="ResumeSendMail" onclick="ResumeSendMail()"><i class="icon-play"></i> <?php tr('process-resume');?></button> <button class="btn" disabled="disabled" id="PauseSendMail" onclick="PauseSendMail()"><i class="icon-pause"></i> <?php tr('process-pause');?></button> <button class="btn" disabled="disabled" id="StopSendMail" onclick="StopSendMail()"><i class="icon-stop"></i> <?php tr('process-cancel');?></button>  
  960.                 </div>
  961.             </div>
  962.             <form class="form-horizontal">
  963.                 <div class="control-group">
  964.                     <label class="control-label" for="inputEmail"><?php tr('recipient');?> [TO-EMAIL]</label>
  965.                     <div class="controls">
  966.                         <textarea name="to" id="to" class="input-xlarge txtinput" placeholder="[email protected]"></textarea>
  967.                         <div class="input-append">
  968.                             <span class="add-on" onclick="ShowUpload();return false" style="cursor:pointer;"><?php tr('upload');?></span>
  969.                         </div>
  970.                     </div>
  971.                 </div>
  972.                 <div class="control-group">
  973.                     <label class="control-label" for="inputEmail"><?php tr('fromname');?> [FROM-NAME]</label>
  974.                     <div class="controls">
  975.                         <textarea name="fromname" id="fromname" class="input-xlarge txtinput" placeholder="Bill Gates"></textarea>
  976.                     </div>
  977.                 </div>
  978.                 <div class="control-group">
  979.                     <label class="control-label" for="inputEmail"><?php tr('frommail');?> [FROM-EMAIL]</label>
  980.                     <div class="controls">
  981.                         <textarea name="frommail" id="frommail" class="input-xlarge txtinput" placeholder="[email protected]"></textarea>
  982.                     </div>
  983.                 </div>
  984.                 <div class="control-group">
  985.                     <label class="control-label" for="inputEmail"><?php tr('replymail');?> [REPLY-EMAIL]</label>
  986.                     <div class="controls">
  987.                         <textarea name="replymail" id="replymail" class="input-xlarge txtinput" placeholder="[email protected]"></textarea>
  988.                     </div>
  989.                 </div>
  990.                 <div class="control-group">
  991.                     <label class="control-label" for="inputEmail"><?php tr('subject');?> [THEME]</label>
  992.                     <div class="controls">
  993.                         <textarea name="tema" id="tema" class="input-xlarge txtinput" placeholder="<?php tr('subject_example',false);?>"></textarea>
  994.                     </div>
  995.                 </div>
  996.                 <div class="control-group">
  997.                     <label class="control-label" for="inputEmail"><?php tr('addfield');?></label>
  998.                     <div class="controls">
  999.                         <div class="input-prepend">
  1000.                             <span class="add-on">[ADD0]</span>
  1001.                         </div>
  1002.                         <input type="text" name="additional" id="additional0" class="input-xlarge txtinput additional" placeholder="<?php tr('addfield2',false);?>"></textarea>
  1003.                         <div class="input-append">
  1004.                             <span class="add-on"><span class="addfield" onclick="AddField(this)">+</span></span>
  1005.                         </div>
  1006.                     </div>
  1007.                 </div>
  1008.                 <div class="control-group">
  1009.                     <label class="control-label" for="inputEmail"><?php tr('mailtype');?> (
  1010.                         <a href="#" rel="tooltip" data-title="<?php tr('plaintext',false);?>">text</a>,
  1011.                         <a href="#" rel="tooltip" data-title="<?php tr('withformating',false);?>">html</a>,
  1012.                         <a href="#" rel="tooltip" data-title="<?php tr('htmle',false);?>">html(e)</a>)
  1013.                     </label>
  1014.                     <div class="controls">
  1015.                         <select name="type" id="type">
  1016.                             <option value="html">html</option>
  1017.                             <option value="htmle">html(e)</option>
  1018.                             <option value="text">text</option>
  1019.                         </select>
  1020.                     </div>
  1021.                 </div>
  1022.                
  1023.                
  1024.                 <div class="btn-group" id="textcontrols">
  1025.                     <button id="makebold" onclick="MakeBold();return false" class="btn">B</button>
  1026.                     <button id="makeitalic" onclick="MakeItalic();return false" class="btn">I</button>
  1027.                     <button id="makeunderline" onclick="MakeUnderline();return false" class="btn">U</button>
  1028.                     <button id="makereverse" onclick="MakeReverse();return false" class="btn">esreveR</button>
  1029.                 </div>
  1030.                 <textarea name="text" id="text" style="width:100%;height:200px;"></textarea>
  1031.                 <button class="btn" onclick="showUniversalUpload();return false"><i class="icon-plus"></i> <?php tr('attachfile');?></button>
  1032.                 <span id="attachedFiles" class="pull-right"></span>
  1033.             </form>
  1034.             <div class="pull-left">
  1035.                 <button class="btn btn-large" onclick="SaveData()"><?php tr('save');?></a>
  1036.                 <button class="btn btn-large" onclick="TogleLoadSave()"><?php tr('load');?></a>
  1037.             </div>
  1038.             <div class="pull-right">
  1039.                 <button class="btn btn-large btn-primary" onclick="Send()"><?php tr('send');?></a>
  1040.                 <button class="btn btn-large" onclick="Preview()"><?php tr('preview');?></a>
  1041.             </div>
  1042.         </div>
  1043.     </div>
  1044.     <div class="row">
  1045.         <div class="span12">
  1046.             <div class="well" style="text-align:center;">
  1047.             &copy; <a href="http://mailer.a-l-e-x-u-s.ru/" target="_blank">Alexus</a> <?php echo date("Y");?>
  1048.         </div>
  1049.     </di>
  1050. </div>
  1051. <script src="http://netdna.bootstrapcdn.com/twitter-bootstrap/2.3.0/js/bootstrap.min.js"></script>
  1052. </body>
  1053. </html>
Advertisement
Add Comment
Please, Sign In to add comment