Account manager initial commit.

Contributed by Liamxroy.
This commit is contained in:
MobiusDev 2018-03-21 00:11:54 +00:00
parent 4ba881c185
commit d98492c94e
82 changed files with 2970 additions and 0 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,717 @@
body, html {
overflow-x: hidden
}
.btn, article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary {
display: block
}
.btn, body {
font-weight: 400
}
ol, ul {
list-style: none
}
header.head nav .right a>img, input, select {
vertical-align: middle
}
@font-face {
font-family: Lineage2;
src: url(../fonts/Lineage2Font/Lineage2Font.eot);
src: local('☺'), url(../fonts/Lineage2Font/Lineage2Font.woff) format("woff"), url(../fonts/Lineage2Font/Lineage2Font.ttf) format("truetype"), url(../fonts/Lineage2Font/Lineage2Fontd41d.eot?#iefix) format("embedded-opentype");
font-weight: 400
}
@font-face {
font-family: Raleway;
src: url(../fonts/RalewayRegular/RalewayRegular.eot);
src: local('☺'), url(../fonts/RalewayRegular/RalewayRegular.woff) format("woff"), url(../fonts/RalewayRegular/RalewayRegular.ttf) format("truetype"), url(../fonts/RalewayRegular/RalewayRegulard41d.eot?#iefix) format("embedded-opentype");
font-weight: 400
}
@font-face {
font-family: Raleway;
src: url(../fonts/RalewayMedium/RalewayMedium.eot);
src: local('☺'), url(../fonts/RalewayMedium/RalewayMedium.woff) format("woff"), url(../fonts/RalewayMedium/RalewayMedium.ttf) format("truetype"), url(../fonts/RalewayMedium/RalewayMediumd41d.eot?#iefix) format("embedded-opentype");
font-weight: 500
}
@font-face {
font-family: Raleway;
src: url(../fonts/RalewayBold/RalewayBold.eot);
src: local('☺'), url(../fonts/RalewayBold/RalewayBold.woff) format("woff"), url(../fonts/RalewayBold/RalewayBold.ttf) format("truetype"), url(../fonts/RalewayBold/RalewayBoldd41d.eot?#iefix) format("embedded-opentype");
font-weight: 800
}
a, abbr, acronym, address, applet, article, aside, audio, b, big, blockquote, body, canvas, caption, center, cite, code, dd, del, details, dfn, div, dl, dt, em, embed, fieldset, figcaption, figure, footer, form, h1, h2, h3, h4, h5, h6, header, hgroup, html, i, iframe, img, ins, kbd, label, legend, li, mark, menu, nav, object, ol, output, p, pre, q, ruby, s, samp, section, small, span, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, time, tr, tt, u, ul, var, video {
margin: 0;
padding: 0;
border: 0
}
* {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box
}
html {
height: 100%;
width: 100%
}
body {
font-size: 18px;
line-height: 1.2;
font-family: Raleway, sans-serif;
color: #9a8e7a;
background: #000000
}
h1, h2, h3, h4, h5, h6, main .server header {
font-family: Lineage2
}
img {
border: none
}
input, select {
outline: 0
}
h1, h2, h3, h4, h5, h6 {
margin: 0;
line-height: 1;
color: transparent;
background: linear-gradient(to bottom, #f3d466, #db8326);
-webkit-background-clip: text;
-moz-background-clip: text;
-ms-background-clip: text;
-o-background-clip: text;
background-clip: text
}
h1 {
font-size: 60px
}
h2 {
font-size: 48px
}
h3 {
font-size: 30px
}
h4 {
font-size: 24px
}
h5 {
font-size: 18px
}
.clearfix::after {
display: block;
content: "";
clear: both
}
a {
text-decoration: none;
color: #ffe6bc;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-ms-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
a:hover {
color: #e6a944
}
.btn {
margin: auto;
width: 249px;
height: 47px;
line-height: 47px;
color: #e7ac47;
font-size: 24px;
background: url(../images/btn.png) center center no-repeat
}
.btn:hover {
font-weight: 800;
color: #501d01;
background: url(../images/btn-hover.png) center center no-repeat
}
ul {
margin: 0;
padding: 0
}
.container {
position: relative;
width: 1240px;
margin: auto
}
header.head nav.anim, main.anim {
opacity: 0
}
header.head .logo.anim {
transform: scale(.1);
opacity: 0
}
header.head {
position: relative;
width: 100%;
background: url(../images/header-main-bg.jpg) top center no-repeat;
min-height: 500px;
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
transition: all .5s ease-in-out
}
header.head .logo, header.head nav {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out
}
header.head.s1 {
background: url(../images/header-main-bg-s1.jpg) top center no-repeat
}
header.head.s2 {
background: url(../images/header-main-bg-s2.jpg) top center no-repeat
}
header.head.s3 {
background: url(../images/header-main-bg-s3.jpg) top center no-repeat
}
header.head nav .left a, header.head nav .right a.vote {
background-position: center left;
background-repeat: no-repeat
}
header.head nav {
width: 100%;
height: 120px;
line-height: 120px;
transition: all .5s ease-in-out
}
header.head nav a {
font-size: 20px;
font-weight: 800;
text-transform: uppercase;
display: inline-block;
line-height: 28px
}
header.head nav a:hover {
filter: brightness(120%)
}
header.head nav a.hvr:after {
display: block;
content: "";
top: -45px;
height: 1px;
width: 100%;
background-color: rgba(255, 198, 102, .5);
transition: width .2s ease-in-out
}
header.head nav a.hvr:hover:after {
width: 0
}
header.head nav .left, nav .right {
position: relative;
display: inline-block;
width: 50%
}
header.head nav .left {
float: left;
text-align: left
}
header.head nav .right {
float: right;
text-align: right
}
header.head nav .left a {
padding-left: 38px
}
header.head nav .left a.support {
background-image: url(../images/ico-support.png);
margin-right: 130px
}
header.head nav .left a.community {
background-image: url(../images/ico-community.png)
}
header.head nav .right a {
margin-left: 10px;
opacity: .7
}
header.head nav .right a.active {
opacity: 1
}
header.head nav .right a:hover img {
animation: blinking .6s infinite linear
}
header.head nav .right .openvote {
display: inline-block
}
header.head nav .right a.vote {
opacity: 1;
margin-left: 80px;
background-image: url(../images/ico-vote.png);
padding-left: 35px
}
header.head nav .right .openvote:hover a.vote:before, header.head nav .right a.vote:before {
width: 0;
height: 0;
margin-left: 135px;
position: absolute;
display: block;
content: ''
}
header.head nav .right a.vote:before {
border: 5px solid transparent;
border-top: 7px solid #ffc666;
margin-top: 10px
}
header.head nav .right .openvote:hover a.vote:before {
border: 5px solid transparent;
border-bottom: 7px solid #ffc666;
margin-top: 5px
}
header.head nav .right .openvote .voting {
position: absolute;
top: 80px;
right: -50px;
text-align: center;
opacity: 0;
visibility: hidden;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
header.head nav .right .openvote:hover .voting {
opacity: 1;
visibility: visible
}
header.head nav .right .openvote .voting a {
display: block;
width: 230px;
background: linear-gradient(to top, rgba(0, 0, 0, .5), transparent);
color: #e6a944;
line-height: 60px;
opacity: 1
}
header.head nav .right .openvote .voting a:hover {
background: linear-gradient(to top, rgba(0, 0, 0, 1), rgba(0, 0, 0, .5));
color: #fff
}
header.head .logo {
margin-top: 175px;
text-align: center;
transition: all .5s ease-in-out
}
main, main .container:after, main .container:before {
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out
}
header.head .logo a {
display: block;
margin: auto;
width: 430px;
height: 304px;
background: url(../images/logo.png) center center no-repeat
}
header.head .logo a:hover {
filter: brightness(120%);
transform: scale(.9)
}
header.head .logo a.down {
display: block;
margin: 20px auto auto;
background: url(../images/arrow-down.png) center center no-repeat;
width: 93px;
height: 54px;
animation: down 1.2s infinite linear
}
footer .copy, footer .payments, main .server {
display: inline-block;
float: left
}
main {
position: relative;
width: 100%;
margin-top: -310px;
z-index: 10;
transition: all .5s ease-in-out
}
main .container:after, main .container:before {
top: 0;
position: absolute;
width: 175px;
min-height: 406px;
content: '';
background-position: center center;
background-repeat: no-repeat;
opacity: .5;
transition: all .5s ease-in-out
}
main .container:before {
left: -175px;
background-image: url(../images/sep-side-left.png)
}
main .container:after {
right: -175px;
background-image: url(../images/sep-side-right.png)
}
main .container:hover:after, main .container:hover:before {
opacity: 1
}
main .server {
width: 33.3333%;
text-align: center;
background: url(../images/sep.png) center right no-repeat;
min-height: 406px;
padding: 40px 20px;
border-radius: 5px;
-webkit-transition: all .5s ease-in-out;
-moz-transition: all .5s ease-in-out;
-o-transition: all .5s ease-in-out;
transition: all .5s ease-in-out
}
main .server:hover {
background: url(../images/sep.png) center right no-repeat rgba(255, 198, 102, .05)
}
main .server.hover {
opacity: .7;
filter: blur(3px);
transform: scale(.9)
}
main .server:hover .btn {
font-weight: 800;
color: #501d01;
background: url(../images/btn-hover.png) center center no-repeat
}
main .server:hover .btn:hover {
filter: brightness(120%);
transform: scale(1.1)
}
main .server.s3 {
background: 0 0
}
main .server.s3:hover {
background: rgba(255, 198, 102, .05)
}
main .server header {
font-size: 70px;
color: #fff
}
main .server p {
color: #ffc666;
font-size: 30px
}
main .server p>span {
color: #ffe6bc;
font-weight: 800
}
main .server .about {
padding: 20px 50px
}
footer {
position: relative;
width: 100%;
background: url(../images/footer-bg.png) top center no-repeat;
min-height: 502px;
margin-top: -180px;
padding-top: 380px
}
footer .copy {
width: 33.3333%;
font-size: 14px;
color: #ffc666;
font-weight: 800;
padding-right: 10px
}
footer .copy span {
color: #ffe6bc
}
footer .copy p {
margin-top: 5px;
color: #6b6151;
text-transform: uppercase;
font-size: 10px;
font-weight: 400
}
footer .payments {
width: 66.6666%;
padding-left: 50px;
-webkit-transition: all .2s ease-in-out;
-moz-transition: all .2s ease-in-out;
-ms-transition: all .2s ease-in-out;
-o-transition: all .2s ease-in-out;
transition: all .2s ease-in-out
}
footer .payments a {
opacity: .5
}
footer .payments a:hover {
opacity: 1
}
footer .payments a.g2a {
float: right;
margin-top: -15px
}
@media (max-width:1439px) {
header.head {
margin-top: -40px
}
header.head nav {
padding-top: 40px;
height: 80px;
line-height: 80px
}
}
@media (max-width:1279px) {
body, h5 {
font-size: 16px
}
h1 {
font-size: 50px
}
h2 {
font-size: 38px
}
h3 {
font-size: 24px
}
h4 {
font-size: 20px
}
.container {
width: 980px
}
header.head nav .left a.support {
margin-right: 60px
}
header.head nav .right a.vote {
margin-left: 20px
}
main .server {
padding: 20px
}
main .server header {
font-size: 54px
}
main .server p {
font-size: 24px
}
main .server .about {
padding: 20px 30px
}
footer {
margin-top: -230px;
padding-top: 330px
}
footer .payments a {
float: right
}
footer .payments a.g2a {
margin-top: 10px
}
}
.preloader {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 99999;
text-align: center;
background-color: #000
}
.preloader-image {
position: absolute;
top: 50%;
left: 50%;
margin: -64px 0 0 -64px;
width: 128px;
height: 128px;
background-image: url(../favicons/favicon.png);
background-position: center;
background-repeat: no-repeat;
background-size: 128px 128px;
animation: blinking .6s infinite linear
}
@keyframes preloading {
0% {
background-image: url(../images/animation/1.png)
}
5% {
background-image: url(../images/animation/2.png)
}
10% {
background-image: url(../images/animation/3.png)
}
15% {
background-image: url(../images/animation/4.png)
}
20% {
background-image: url(../images/animation/5.png)
}
25% {
background-image: url(../images/animation/6.png)
}
30% {
background-image: url(../images/animation/7.png)
}
35% {
background-image: url(../images/animation/8.png)
}
40% {
background-image: url(../images/animation/9.png)
}
45% {
background-image: url(../images/animation/10.png)
}
50% {
background-image: url(../images/animation/11.png)
}
55% {
background-image: url(../images/animation/12.png)
}
60% {
background-image: url(../images/animation/13.png)
}
65% {
background-image: url(../images/animation/14.png)
}
70% {
background-image: url(../images/animation/15.png)
}
75% {
background-image: url(../images/animation/16.png)
}
80% {
background-image: url(../images/animation/17.png)
}
85% {
background-image: url(../images/animation/18.png)
}
90% {
background-image: url(../images/animation/19.png)
}
95% {
background-image: url(../images/animation/20.png)
}
}
.preload-anim {
background-repeat: no-repeat;
background-position: center center;
background-size: cover;
animation: preloading 2s infinite linear;
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 99990
}
@keyframes blinking {
from {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-o-transform: scale(1);
transform: scale(1)
}
to {
-webkit-transform: scale(.8);
-moz-transform: scale(.8);
-o-transform: scale(.8);
transform: scale(.8);
filter: brightness(120%)
}
}
@keyframes down {
from {
margin-top: 20px
}
to {
margin-top: 50px
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 847 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 411 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 B

178
Account_Manager/index.php Normal file
View File

@ -0,0 +1,178 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta content="text/html; charset=utf-8" http-equiv="content-type">
<meta charset="utf-8">
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="" name="description">
<meta content="" name="keywords">
<script src="js/jquery.min.js" type="text/javascript">
</script>
<title>Mobius Underground - Main</title>
<link href="css/register.css" rel="stylesheet">
<link href="images/loader.png" rel="icon" type="image/png">
<script src='https://www.google.com/recaptcha/api.js'>
</script>
<link href='https://fonts.googleapis.com/css?family=Lato:300,400,500' rel='stylesheet' type='text/css'>
<script src="js/bootstrap.min.js">
</script>
<meta content="width=device-width, initial-scale=1, maximum-scale=1" name="viewport">
<script language="javascript">
$(document).ready(function(){
$('#register').submit(function() {
if($('#password').val() != $('#passwordVerify').val()){
alert("Please re-enter confirm password");
$('#passwordVerify').val('');
$('#passwordVerify').focus();
return false;
}
function clear_form()
{
$("#email").val('');
$("#username").val('');
$("#password").val('');
$("#passwordVerify").val('');
}
});
});
</script>
</head>
<body>
<div id="preloader">
<div id="preloader-image">
</div>
</div>
<div class="p-anim">
</div>
<video autoplay="" id="bgvid" loop=""><source src="media/bg.webm" type="video/webm"> <source src="media/bg.mp4" type="video/mp4"></video>
<header>
<div class="container">
<div class="header-left">
</div>
<div class="header-right">
<div class="logo">
</div>
<div class="menu">
<a href="#">MAIN</a> <a href="#">DOWNLOAD</a> <a href="#">DONATE</a> <a href="#">FORUM</a>
</div>
<br>
<img src="images/logo.png" width="100%">
<div class="statuses">
<div class="entercp">
Login to your <a href="ucp">Account</a> or
</div>
<br>
<div class="register">
<a data-target="#register" data-toggle="modal" type="button">CREATE AN ACCOUNT</a>
</div>
</div>
</div>
</div>
</header>
<div class="modal fade" id="register" role="dialog">
<div class="container">
<br>
<!-- Modal content-->
<div class="form">
<div class="modal-body">
<div class="modal-header">
<button class="close" data-dismiss="modal" type="button">&times;</button>
<h4 class="modal-title">Register Account</h4>
</div>
<div>
<form>
<div class="form-group">
<input class="form-control" data-error="Account name is required." id="username" name="username" placeholder="Please enter your Account" required="required" type="text" value="<?php if(isset($_POST['username'])) echo $_POST['username'] ?>">
<div class="help-block with-errors">
</div>
</div>
<div class="form-group">
<input class="form-control" data-error="Valid email is required." id="email" name="email" placeholder="Please enter your Email" required="required" type="email" value="<?php if(isset($_POST['email'])) echo $_POST['email'] ?>">
<div class="help-block with-errors">
</div>
</div>
<div class="form-group">
<input class="form-control" data-error="Password is required." id="password" name="password" placeholder="Please enter your Password" required="required" type="password" value="<?php if(isset($_POST['password'])) echo $_POST['password'] ?>">
<div class="help-block with-errors">
</div>
</div>
<div class="form-group">
<input class="form-control" data-error="Verify Password is required." id="passwordVerify" name="passwordVerify" placeholder="Please re-enter your Password" required="required" type="password" value="">
<div class="help-block with-errors">
</div>
</div>
</form>
<input class="form-btn btn" name="register" type="submit" value="REGISTER">
</div>
<div class="modal-footer">
<div class="messages">
<h4><font color="#FFFFFF"><?php
if(isset($errMsg)){
echo $errMsg;
}
?></font>
</h4>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
<a href="http://l2jmobius.com"><img alt="" src="images/l2jmobius.png" title=""></a>
</div>
<script>
var url = 'index.html';
</script>
<script src="js/jquery.cookie.min.js">
</script>
<script src="js/scripts.js">
</script>
<script src="js/validator.js">
</script>
<script src="js/register.js">
</script>
<!--[if lt IE 9]>
<script src="//oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
<script src="//oss.maxcdn.com/libs/respond.js/1.3.0/respond.min.js"></script>
<![endif]-->
</body>
</html>

7
Account_Manager/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
/*! jquery.cookie v1.4.1 | MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):"object"==typeof exports?a(require("jquery")):a(jQuery)}(function(a){function b(a){return h.raw?a:encodeURIComponent(a)}function c(a){return h.raw?a:decodeURIComponent(a)}function d(a){return b(h.json?JSON.stringify(a):String(a))}function e(a){0===a.indexOf('"')&&(a=a.slice(1,-1).replace(/\\"/g,'"').replace(/\\\\/g,"\\"));try{return a=decodeURIComponent(a.replace(g," ")),h.json?JSON.parse(a):a}catch(b){}}function f(b,c){var d=h.raw?b:e(b);return a.isFunction(c)?c(d):d}var g=/\+/g,h=a.cookie=function(e,g,i){if(void 0!==g&&!a.isFunction(g)){if(i=a.extend({},h.defaults,i),"number"==typeof i.expires){var j=i.expires,k=i.expires=new Date;k.setTime(+k+864e5*j)}return document.cookie=[b(e),"=",d(g),i.expires?"; expires="+i.expires.toUTCString():"",i.path?"; path="+i.path:"",i.domain?"; domain="+i.domain:"",i.secure?"; secure":""].join("")}for(var l=e?void 0:{},m=document.cookie?document.cookie.split("; "):[],n=0,o=m.length;o>n;n++){var p=m[n].split("="),q=c(p.shift()),r=p.join("=");if(e&&e===q){l=f(r,g);break}e||void 0===(r=f(r))||(l[q]=r)}return l};h.defaults={},a.removeCookie=function(b,c){return void 0===a.cookie(b)?!1:(a.cookie(b,"",a.extend({},c,{expires:-1})),!a.cookie(b))}});

2
Account_Manager/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,11 @@
$(function () {
window.verifyRecaptchaCallback = function (response) {
$('input[data-recaptcha]').val(response).trigger('change');
}
window.expiredRecaptchaCallback = function () {
$('input[data-recaptcha]').val("").trigger('change');
}
$('#login').validator();
});

View File

@ -0,0 +1,11 @@
$(function () {
window.verifyRecaptchaCallback = function (response) {
$('input[data-recaptcha]').val(response).trigger('change');
}
window.expiredRecaptchaCallback = function () {
$('input[data-recaptcha]').val("").trigger('change');
}
$('#register').validator();
});

View File

@ -0,0 +1,23 @@
$(window).on('load', function() {
"use strict";
});
var $document = $(document);
$document.ready(function() {
$document.on('click', '.stat-1', function(e) {
e.preventDefault();
var statLink = $(this).attr('data-target');
window.location = statLink;
});
$document.on('click', '.stat-2', function(e) {
e.preventDefault();
var statLinkS = $(this).attr('data-target');
window.location = statLinkS;
});
$document.on('click', '.langs > a', function(e) {
$.cookie('lang', $(this).data('lang'), {
expires: 365,
path: '/'
});
location.reload();
});
});

View File

@ -0,0 +1,385 @@
/*!
* Validator v0.11.5 for Bootstrap 3, by @1000hz
* Copyright 2016 Cina Saffary
* Licensed under http://opensource.org/licenses/MIT
*
* https://github.com/1000hz/bootstrap-validator
*/
+function ($) {
'use strict';
// VALIDATOR CLASS DEFINITION
// ==========================
function getValue($el) {
return $el.is('[type="checkbox"]') ? $el.prop('checked') :
$el.is('[type="radio"]') ? !!$('[name="' + $el.attr('name') + '"]:checked').length :
$el.val()
}
var Validator = function (element, options) {
this.options = options
this.validators = $.extend({}, Validator.VALIDATORS, options.custom)
this.$element = $(element)
this.$btn = $('button[type="submit"], input[type="submit"]')
.filter('[form="' + this.$element.attr('id') + '"]')
.add(this.$element.find('input[type="submit"], button[type="submit"]'))
this.update()
this.$element.on('input.bs.validator change.bs.validator focusout.bs.validator', $.proxy(this.onInput, this))
this.$element.on('submit.bs.validator', $.proxy(this.onSubmit, this))
this.$element.on('reset.bs.validator', $.proxy(this.reset, this))
this.$element.find('[data-match]').each(function () {
var $this = $(this)
var target = $this.data('match')
$(target).on('input.bs.validator', function (e) {
getValue($this) && $this.trigger('input.bs.validator')
})
})
this.$inputs.filter(function () { return getValue($(this)) }).trigger('focusout')
this.$element.attr('novalidate', true) // disable automatic native validation
this.toggleSubmit()
}
Validator.VERSION = '0.11.5'
Validator.INPUT_SELECTOR = ':input:not([type="hidden"], [type="submit"], [type="reset"], button)'
Validator.FOCUS_OFFSET = 20
Validator.DEFAULTS = {
delay: 500,
html: false,
disable: true,
focus: true,
custom: {},
errors: {
match: 'Does not match',
minlength: 'Not long enough'
},
feedback: {
success: 'glyphicon-ok',
error: 'glyphicon-remove'
}
}
Validator.VALIDATORS = {
'native': function ($el) {
var el = $el[0]
if (el.checkValidity) {
return !el.checkValidity() && !el.validity.valid && (el.validationMessage || "error!")
}
},
'match': function ($el) {
var target = $el.data('match')
return $el.val() !== $(target).val() && Validator.DEFAULTS.errors.match
},
'minlength': function ($el) {
var minlength = $el.data('minlength')
return $el.val().length < minlength && Validator.DEFAULTS.errors.minlength
}
}
Validator.prototype.update = function () {
this.$inputs = this.$element.find(Validator.INPUT_SELECTOR)
.add(this.$element.find('[data-validate="true"]'))
.not(this.$element.find('[data-validate="false"]'))
return this
}
Validator.prototype.onInput = function (e) {
var self = this
var $el = $(e.target)
var deferErrors = e.type !== 'focusout'
if (!this.$inputs.is($el)) return
this.validateInput($el, deferErrors).done(function () {
self.toggleSubmit()
})
}
Validator.prototype.validateInput = function ($el, deferErrors) {
var value = getValue($el)
var prevErrors = $el.data('bs.validator.errors')
var errors
if ($el.is('[type="radio"]')) $el = this.$element.find('input[name="' + $el.attr('name') + '"]')
var e = $.Event('validate.bs.validator', {relatedTarget: $el[0]})
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
var self = this
return this.runValidators($el).done(function (errors) {
$el.data('bs.validator.errors', errors)
errors.length
? deferErrors ? self.defer($el, self.showErrors) : self.showErrors($el)
: self.clearErrors($el)
if (!prevErrors || errors.toString() !== prevErrors.toString()) {
e = errors.length
? $.Event('invalid.bs.validator', {relatedTarget: $el[0], detail: errors})
: $.Event('valid.bs.validator', {relatedTarget: $el[0], detail: prevErrors})
self.$element.trigger(e)
}
self.toggleSubmit()
self.$element.trigger($.Event('validated.bs.validator', {relatedTarget: $el[0]}))
})
}
Validator.prototype.runValidators = function ($el) {
var errors = []
var deferred = $.Deferred()
$el.data('bs.validator.deferred') && $el.data('bs.validator.deferred').reject()
$el.data('bs.validator.deferred', deferred)
function getValidatorSpecificError(key) {
return $el.data(key + '-error')
}
function getValidityStateError() {
var validity = $el[0].validity
return validity.typeMismatch ? $el.data('type-error')
: validity.patternMismatch ? $el.data('pattern-error')
: validity.stepMismatch ? $el.data('step-error')
: validity.rangeOverflow ? $el.data('max-error')
: validity.rangeUnderflow ? $el.data('min-error')
: validity.valueMissing ? $el.data('required-error')
: null
}
function getGenericError() {
return $el.data('error')
}
function getErrorMessage(key) {
return getValidatorSpecificError(key)
|| getValidityStateError()
|| getGenericError()
}
$.each(this.validators, $.proxy(function (key, validator) {
var error = null
if ((getValue($el) || $el.attr('required')) &&
($el.data(key) || key == 'native') &&
(error = validator.call(this, $el))) {
error = getErrorMessage(key) || error
!~errors.indexOf(error) && errors.push(error)
}
}, this))
if (!errors.length && getValue($el) && $el.data('remote')) {
this.defer($el, function () {
var data = {}
data[$el.attr('name')] = getValue($el)
$.get($el.data('remote'), data)
.fail(function (jqXHR, textStatus, error) { errors.push(getErrorMessage('remote') || error) })
.always(function () { deferred.resolve(errors)})
})
} else deferred.resolve(errors)
return deferred.promise()
}
Validator.prototype.validate = function () {
var self = this
$.when(this.$inputs.map(function (el) {
return self.validateInput($(this), false)
})).then(function () {
self.toggleSubmit()
self.focusError()
})
return this
}
Validator.prototype.focusError = function () {
if (!this.options.focus) return
var $input = this.$element.find(".has-error:first :input")
if ($input.length === 0) return
$('html, body').animate({scrollTop: $input.offset().top - Validator.FOCUS_OFFSET}, 250)
$input.focus()
}
Validator.prototype.showErrors = function ($el) {
var method = this.options.html ? 'html' : 'text'
var errors = $el.data('bs.validator.errors')
var $group = $el.closest('.form-group')
var $block = $group.find('.help-block.with-errors')
var $feedback = $group.find('.form-control-feedback')
if (!errors.length) return
errors = $('<ul/>')
.addClass('list-unstyled')
.append($.map(errors, function (error) { return $('<li/>')[method](error) }))
$block.data('bs.validator.originalContent') === undefined && $block.data('bs.validator.originalContent', $block.html())
$block.empty().append(errors)
$group.addClass('has-error has-danger')
$group.hasClass('has-feedback')
&& $feedback.removeClass(this.options.feedback.success)
&& $feedback.addClass(this.options.feedback.error)
&& $group.removeClass('has-success')
}
Validator.prototype.clearErrors = function ($el) {
var $group = $el.closest('.form-group')
var $block = $group.find('.help-block.with-errors')
var $feedback = $group.find('.form-control-feedback')
$block.html($block.data('bs.validator.originalContent'))
$group.removeClass('has-error has-danger has-success')
$group.hasClass('has-feedback')
&& $feedback.removeClass(this.options.feedback.error)
&& $feedback.removeClass(this.options.feedback.success)
&& getValue($el)
&& $feedback.addClass(this.options.feedback.success)
&& $group.addClass('has-success')
}
Validator.prototype.hasErrors = function () {
function fieldErrors() {
return !!($(this).data('bs.validator.errors') || []).length
}
return !!this.$inputs.filter(fieldErrors).length
}
Validator.prototype.isIncomplete = function () {
function fieldIncomplete() {
var value = getValue($(this))
return !(typeof value == "string" ? $.trim(value) : value)
}
return !!this.$inputs.filter('[required]').filter(fieldIncomplete).length
}
Validator.prototype.onSubmit = function (e) {
this.validate()
if (this.isIncomplete() || this.hasErrors()) e.preventDefault()
}
Validator.prototype.toggleSubmit = function () {
if (!this.options.disable) return
this.$btn.toggleClass('disabled', this.isIncomplete() || this.hasErrors())
}
Validator.prototype.defer = function ($el, callback) {
callback = $.proxy(callback, this, $el)
if (!this.options.delay) return callback()
window.clearTimeout($el.data('bs.validator.timeout'))
$el.data('bs.validator.timeout', window.setTimeout(callback, this.options.delay))
}
Validator.prototype.reset = function () {
this.$element.find('.form-control-feedback')
.removeClass(this.options.feedback.error)
.removeClass(this.options.feedback.success)
this.$inputs
.removeData(['bs.validator.errors', 'bs.validator.deferred'])
.each(function () {
var $this = $(this)
var timeout = $this.data('bs.validator.timeout')
window.clearTimeout(timeout) && $this.removeData('bs.validator.timeout')
})
this.$element.find('.help-block.with-errors')
.each(function () {
var $this = $(this)
var originalContent = $this.data('bs.validator.originalContent')
$this
.removeData('bs.validator.originalContent')
.html(originalContent)
})
this.$btn.removeClass('disabled')
this.$element.find('.has-error, .has-danger, .has-success').removeClass('has-error has-danger has-success')
return this
}
Validator.prototype.destroy = function () {
this.reset()
this.$element
.removeAttr('novalidate')
.removeData('bs.validator')
.off('.bs.validator')
this.$inputs
.off('.bs.validator')
this.options = null
this.validators = null
this.$element = null
this.$btn = null
return this
}
// VALIDATOR PLUGIN DEFINITION
// ===========================
function Plugin(option) {
return this.each(function () {
var $this = $(this)
var options = $.extend({}, Validator.DEFAULTS, $this.data(), typeof option == 'object' && option)
var data = $this.data('bs.validator')
if (!data && option == 'destroy') return
if (!data) $this.data('bs.validator', (data = new Validator(this, options)))
if (typeof option == 'string') data[option]()
})
}
var old = $.fn.validator
$.fn.validator = Plugin
$.fn.validator.Constructor = Validator
// VALIDATOR NO CONFLICT
// =====================
$.fn.validator.noConflict = function () {
$.fn.validator = old
return this
}
// VALIDATOR DATA-API
// ==================
$(window).on('load', function () {
$('form[data-toggle="validator"]').each(function () {
var $form = $(this)
Plugin.call($form, $form.data())
})
})
}(jQuery);

Binary file not shown.

Binary file not shown.