1if (typeof parseUrl === 'undefined') { 2 /** 3 * Parse Url 4 * 5 * @param {string} url 6 * @return {{source: string, protocol: string, host: string, port: string, query: string, params: Object, file: *, hash: string, path: string, relative: *, segments: Array}} 7 * @link https://habrahabr.ru/post/177559/#comment_6164291 8 */ 9 function parseUrl(url) { 10 var a = document.createElement('a'); 11 a.href = url; 12 13 return { 14 source: url, 15 protocol: a.protocol.replace(':', ''), 16 host: a.hostname, 17 port: a.port, 18 query: a.search, 19 params: (function () { 20 var ret = {}, 21 seg = a.search.replace(/^\?/, '').split('&'), 22 len = seg.length, i = 0, s; 23 for (; i < len; i++) { 24 if (!seg[i]) { 25 continue; 26 } 27 s = seg[i].split('='); 28 ret[s[0]] = decodeURIComponent(s[1]); 29 } 30 return ret; 31 })(), 32 file: (a.pathname.match(/\/([^\/?#]+)$/i) || [, ''])[1], 33 hash: a.hash.replace('#', ''), 34 path: a.pathname.replace(/^([^\/])/, '/$1'), 35 relative: (a.href.match(/tps?:\/\/[^\/]+(.+)/) || [, ''])[1], 36 segments: a.pathname.replace(/^\//, '').split('/') 37 }; 38 } 39} 40 41function login() { 42 var url = parseUrl(window.location.href); 43 //$('#auth .alert').html('').addClass('d-none'); 44 //$('#auth input').removeClass('is-invalid'); 45 var error_text = ''; 46 var ret_val = true; 47 var error = ''; 48 var $pers_login = $('#auth #pers_login'), 49 $pers_password = $('#auth #pers_password'), 50 $pers_rem_me = $('#auth #pers_rem_me'), 51 clear = function () { 52 $('#auth .alert').html('').addClass('d-none'); 53 $('#auth input').removeClass('is-invalid'); 54 }; 55 56 clear(); 57 if ($pers_login.val() == '') { 58 error = 'Ââåäèòå ëîãèí'; 59 $('#auth .auth_error_login').html(error); 60 $pers_login.addClass('is-invalid'); 61 } 62 63 if (error =='' && $pers_password.val() == '') { 64 error = 'Ââåäèòå ïàðîëü'; 65 $('#auth .auth_error_password').html(error); 66 $pers_password.addClass('is-invalid'); 67 } 68 69 if (error == '' ) { 70 $('#auth .alert-success').html("Ïîäîæäèòå, ïîæàëóéñòà.").removeClass('d-none'); 71 WebAjax( 72 '/ajax/login/', 73 { 74 'form_data[login]' : $pers_login.val(), 75 'form_data[pass]' : $pers_password.val(), 76 'form_data[rem_me]' : $pers_rem_me.attr('checked') ? 1 : 0, 77 'form_data[from]': encodeURIComponent(url.params['from'] || ''), 78 'form_data[sign]': encodeURIComponent(url.params['sign'] || '') 79 }, 80 function(type, msg) { 81 clear(); 82 if (type === 'OK') { 83 var loc = '/personal/'; 84 switch ($('#reg_type').val()) { 85 case 'konkurs' : loc = "/konkurs/selection_tour/"; break; 86 case 'forum' : loc = "/forum/"; break; 87 } 88 if (loc) { 89 window.location = loc; 90 } 91 92 } else { 93 error = "Îøèáêà àâòîðèçàöèè. Ïðîâåðüòå äàííûå"; 94 $('#auth .alert-danger').html(error).removeClass('d-none'); 95 } 96 } 97 ); 98 } 99 100 return false; 101} 102 103function register() { 104 var err_msg = '', 105 clear = function () { 106 $('#reg .alert').html('').addClass('d-none'); 107 $('#reg input').removeClass('is-invalid'); 108 }; 109 110 err_msg = CheckEmailField( 'reg #email', 'E-mail'); 111 if (err_msg) { 112 $('#reg #email').addClass('is-invalid'); 113 $('#reg #reg_error_email').html(err_msg); 114 } 115 116 if( err_msg == '' ) 117 { 118 err_msg = CheckStrField( 'reg #password', 'Ïàðîëü' ); 119 var re_pass = /^[A-Za-z\d@$!%*_#?&]{6,12}$/; 120 var pass = jQuery.trim( $('#reg #password').val() ); 121 if(err_msg == '' && !re_pass.test(pass) ) 122 { 123 err_msg = 'Íå êîððåêòíûé ïàðîëü'; 124 $('#reg #password').focus().addClass('is-invalid'); 125 $('#reg #reg_error_password').html(err_msg); 126 } 127 } 128 129 if( err_msg == '' ) 130 { 131 err_msg = CheckStrField( 'reg #password_repeat', 'Ïîäòâåðæäåíèå ïàðîëÿ'); 132 if (err_msg != '') { 133 $('#reg #password_repeat').focus().addClass('is-invalid'); 134 $('#reg #reg_error_password_repeat').html(err_msg); 135 } 136 } 137 138 if( $('#reg #password').val() != $('#reg #password_repeat').val() ) 139 { 140 err_msg = 'Ïàðîëü ïîäòâåðæä¸í íå êîððåêòíî'; 141 $('#reg #password_repeat').focus().addClass('is-invalid'); 142 $('#reg #reg_error_password_repeat').html(err_msg); 143 } 144 145 var $agreement = $('#reg #agreements'); 146 if (err_msg == '' && $agreement.prop('checked') == false) { 147 err_msg = 'Íåîáõîäèìî ïðèíÿòü ñîãëàøåíèå'; 148 $('#reg #agreements').addClass('is-invalid'); 149 $('#reg #reg_error_agreements').html(err_msg); 150 } 151 152 if( err_msg == '' ) 153 { 154 $('#reg .alert-success').html("Äàííûå ïåðåäàþòñÿ íà ñåðâåð. Ïîäîæäèòå, ïîæàëóéñòà.").removeClass('d-none'); 155 WebAjax( 156 '/ajax/reg_user/', 157 { 158 'form_data[email]' : $('#reg #email').val(), 159 'form_data[password]' : $('#reg #password').val(), 160 'form_data[password_repeat]' : $('#reg #password_repeat').val(), 161 'form_data[fio]' : jQuery.trim( $('#reg #fio').val() ), 162 'form_data[agreement]' : $agreement.prop('checked') ? 'yes' : 'no' 163 }, 164 function(type, msg) 165 { 166 clear(); 167 if( type == 'OK' ) 168 { 169 window.location = "/personal/register/confirm/"; 170 } 171 else 172 { 173 $('#reg .alert-danger').html(msg).removeClass('d-none'); 174 } 175 } 176 ); 177 } 178 179 return false; 180 181} 182 183function logout() { 184 WebAjax( 185 '/ajax/logout/', 186 { 187 'form_data[logout]': true 188 }, 189 function(type, msg) { 190 if( type == 'OK' ) { 191 window.location = "/"; 192 } 193 } 194 ); 195} 196 197function recovery() { 198 var err_msg = '', 199 clear = function () { 200 $('#recovery .alert').html('').addClass('d-none'); 201 $('#recovery input').removeClass('is-invalid'); 202 }; 203 204 if( err_msg == '' ) 205 { 206 err_msg = CheckStrField( 'recovery_email', 'E-mail'); 207 } 208 209 if( err_msg == '' ) 210 { 211 WebAjax( 212 '/ajax/forget_pass/', 213 { 214 'form_data[mail]' : $('#recovery_email').val() 215 }, 216 function(type, msg) 217 { 218 clear(); 219 if( type == 'OK' ) 220 { 221 $('#recovery .first_form').addClass('d-none'); 222 $('#recovery .alert-success').html($('.send_ok_msg').html()).removeClass('d-none'); 223 $('#recovery_email').val(''); 224 } 225 else 226 { 227 $('#recovery .alert-danger').html(msg).removeClass('d-none'); 228 } 229 } 230 ); 231 } 232 else { 233 $('#recovery_email').addClass('is-invalid'); 234 $('#recovery .invalid-feedback').html(err_msg); 235 } 236} 237 238$(document).ready(function() { 239 var url = parseUrl(window.location.href); 240 if (('login' in url.params || 'konkurs_login' in url.params || $('#authorizationModal').data('display') == true) && $('#authorizationModal').length) { 241 let modal_login = new bootstrap.Modal('#authorizationModal'); 242 modal_login.show(); 243 } 244 245 $('#auth #login').click(function(e) { 246 e.preventDefault(); 247 login(); 248 });
249 $('.logout').click(function(e) { 250 e.preventDefault(); 251 logout(); 252 }); 253 $('#reg #register').click(function(e) { 254 e.preventDefault(); 255 register(); 256 }); 257 $('#recovery #forget').click(function(e) { 258 e.preventDefault(); 259 recovery(); 260 }); 261 262});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.