Yahooo, sync with devel server :)
|
@ -1,47 +1,226 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
|
||||||
/**
|
define('VESTA_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
|
||||||
* Change password functionality
|
define('V_ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR . 'vesta' . DIRECTORY_SEPARATOR);
|
||||||
*/
|
|
||||||
|
require_once V_ROOT_DIR . 'config/Config.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/utils/Utils.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/VestaSession.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/Vesta.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/exceptions/SystemException.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/exceptions/ProtectionException.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/utils/Message.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'core/Request.class.php';
|
||||||
|
require_once V_ROOT_DIR . 'api/AjaxHandler.php';
|
||||||
|
|
||||||
|
|
||||||
class ChangePassword
|
class ChangePassword
|
||||||
{
|
{
|
||||||
|
|
||||||
public function dispatch()
|
public function dispatch()
|
||||||
{
|
{
|
||||||
//print_r($_SERVER);
|
|
||||||
if (empty($_GET['v'])) {
|
if (empty($_GET['v'])) {
|
||||||
return $this->renderError('General error');
|
return $this->renderError('General error');
|
||||||
}
|
}
|
||||||
|
|
||||||
$key = $_GET['v'];
|
$key = addslashes(htmlspecialchars($_GET['v']));
|
||||||
$real_key = sha1($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']);
|
|
||||||
$key_sha1 = substr($key, 0, 10) . substr($key, 20, strlen($key));
|
$users = Vesta::execute(Vesta::V_LIST_SYS_USERS, 'json');
|
||||||
$stamp = substr($key, 10, 10);
|
$email_matched_count = array();
|
||||||
$allowed = time() - 60 * 5; // - 5 mins
|
|
||||||
|
|
||||||
if (strcmp($real_key, $key_sha1) != 0) {
|
|
||||||
return $this->renderError('Invalid keys');
|
|
||||||
}
|
|
||||||
|
|
||||||
/*if ($stamp < $allowed) {
|
/*if (strcmp($real_key, $key_sha1) != 0) {
|
||||||
return $this->renderError('Key is expired');
|
return $this->renderError('Invalid keys');
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
$this->showResetForm();
|
foreach ($users['data'] as $username => $user) {
|
||||||
print $key_sha1 . "<br />" . $real_key;
|
if ($user['RKEY'] == trim($key)) {
|
||||||
|
$email_matched_count[] = array_merge(array('USERNAME' => $username), $user);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_POST['action']) && $_POST['action'] == 'change') {
|
||||||
|
return $this->doChangePassword($email_matched_count);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->showResetForm();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function showResetForm()
|
protected function doChangePassword($users)
|
||||||
|
{
|
||||||
|
if ($_POST['secret_code'] != $_POST['confirm_secret_code']) {
|
||||||
|
return $this->showResetForm('Passwords don\'t match');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($_POST['secret_code']) < 6) {
|
||||||
|
return $this->showResetForm('Passwords is too short');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (strlen($_POST['secret_code']) > 255) {
|
||||||
|
return $this->showResetForm('Passwords is too long');
|
||||||
|
}
|
||||||
|
|
||||||
|
$success = true;
|
||||||
|
foreach ($users as $user) {
|
||||||
|
$rs = Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $user['USERNAME'],
|
||||||
|
'PASSWORD' => $_POST['secret_code']));
|
||||||
|
if (!$rs) {
|
||||||
|
$success = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!$success) {
|
||||||
|
return $this->showResetForm('Something went wrong. Please contact support.');
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->showSuccessTpl();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showSuccessTpl()
|
||||||
{
|
{
|
||||||
print <<<HTML
|
print <<<HTML
|
||||||
<form action="" >
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
<input type="hidden" name="action" value="change" />
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
|
||||||
<label>Enter secret code:</label>
|
<head>
|
||||||
<input type="text" name="secret_code" value="" />
|
<title>Vesta Control Panel</title>
|
||||||
<label>Enter new password:</label>
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
<input type="text" name="secret_code" value="" />
|
<meta http-equiv="imagetoolbar" content="false" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="images/fav.ico" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/reset2.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/main.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/vesta-login-form.css" />
|
||||||
|
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
|
||||||
|
<![endif]-->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="page-auth">
|
||||||
|
<div id="change-psw-block" class="page2">
|
||||||
|
<div class="b-auth-form">
|
||||||
|
<div class="b-auth-form-wrap">
|
||||||
|
<img width="72" height="24" alt="" src="/images/vesta-logo-2011-12-14.png" class="vesta-logo">
|
||||||
|
<span style="color: #5E696B; float: right; margin-top: -48px;">~!:VERSION~!</span>
|
||||||
|
<div class="b-client-title">
|
||||||
|
<span class="client-title-wrap">Control Panel<i class="planets"> </i></span>
|
||||||
|
</div>
|
||||||
|
<form id="change_psw-form" method="post" action="" class="auth">
|
||||||
|
<input type="hidden" value="change" name="action">
|
||||||
|
|
||||||
|
<div class="success-box" id="change-psw-success">Password successfully changed.</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
<p class="forgot-pwd"> </p>
|
||||||
|
<div class="footnotes cc">
|
||||||
|
<p class="additional-info">For questions please contact <a href="mailto:info@vestacp.com" class="questions-url">info@vestacp.com</a></p>
|
||||||
|
<address class="imprint">© 2011 Vesta Control Panel</address>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
HTML;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public function showResetForm($error_msg = '')
|
||||||
|
{
|
||||||
|
if (!empty($error_msg)) {
|
||||||
|
$error_msg = '<i>'.$error_msg.'</i>';
|
||||||
|
}
|
||||||
|
|
||||||
|
print <<<HTML
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
|
||||||
|
<head>
|
||||||
|
<title>Vesta Control Panel</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta http-equiv="imagetoolbar" content="false" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="images/fav.ico" type="image/x-icon">
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/reset2.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/main.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/vesta-login-form.css" />
|
||||||
|
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
|
||||||
|
<![endif]-->
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="page-auth">
|
||||||
|
<div id="change-psw-block" class="page2">
|
||||||
|
<div class="b-auth-form">
|
||||||
|
<div class="b-auth-form-wrap">
|
||||||
|
<img width="72" height="24" alt="" src="/images/vesta-logo-2011-12-14.png" class="vesta-logo">
|
||||||
|
<span style="color: #5E696B; float: right; margin-top: -48px;">~!:VERSION~!</span>
|
||||||
|
<div class="b-client-title">
|
||||||
|
<span class="client-title-wrap">Control Panel<i class="planets"> </i></span>
|
||||||
|
</div>
|
||||||
|
<form id="change_psw-form" method="post" action="" class="auth">
|
||||||
|
<input type="hidden" value="change" name="action">
|
||||||
|
|
||||||
|
<div class="form-row cc">
|
||||||
|
<label for="password" class="field-label">New Password</label>
|
||||||
|
<input type="password" tabindex="1" id="password" class="field-text" name="secret_code">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row cc">
|
||||||
|
<label for="confirm_password" class="field-label">ONE MORE TIME</label>
|
||||||
|
<input type="password" tabindex="1" id="confirm_password" class="field-text" name="confirm_secret_code">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-row cc last-row">
|
||||||
|
<input type="submit" tabindex="4" value="Change Password" class="sumbit-btn">
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<p class="forgot-pwd"> </p>
|
||||||
|
<div class="footnotes cc">
|
||||||
|
<p class="additional-info">For questions please contact <a href="mailto:info@vestacp.com" class="questions-url">info@vestacp.com</a></p>
|
||||||
|
<address class="imprint">© 2011 Vesta Control Panel</address>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
|
||||||
|
<center>
|
||||||
|
vesta password reset form
|
||||||
|
<hr />
|
||||||
|
{$error_msg}
|
||||||
|
<form action="" method="POST">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<input type="hidden" name="action" value="change" />
|
||||||
|
<label>Enter secret code:</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="secret_code" value="" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
<label>Enter new password:</label>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<input type="password" name="confirm_secret_code" value="" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2">
|
||||||
|
<input type="submit" name="Apply" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
</form>
|
</form>
|
||||||
|
</center> -->
|
||||||
|
|
||||||
HTML;
|
HTML;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,12 +305,12 @@ input::-moz-focus-inner{
|
||||||
color:#000;
|
color:#000;
|
||||||
}
|
}
|
||||||
.primary-nav .active .section-inner{
|
.primary-nav .active .section-inner{
|
||||||
cursor:default;
|
cursor:pointer;
|
||||||
}
|
}
|
||||||
.primary-nav .active .section-devider{
|
.primary-nav .active .section-devider{
|
||||||
background-position:-140px 100%;
|
background-position:-283px 100%;
|
||||||
height:5px;
|
height:6px;
|
||||||
bottom:-2px;
|
bottom:-3px;
|
||||||
}
|
}
|
||||||
.primary-nav .active .def{
|
.primary-nav .active .def{
|
||||||
color:#8c9c91;
|
color:#8c9c91;
|
||||||
|
@ -1777,7 +1777,7 @@ input::-moz-focus-inner{
|
||||||
*display: inline;
|
*display: inline;
|
||||||
|
|
||||||
margin-left:30px;
|
margin-left:30px;
|
||||||
font-size:12px;
|
font-size:11px;
|
||||||
line-height:1;
|
line-height:1;
|
||||||
font-weight:bold;
|
font-weight:bold;
|
||||||
|
|
||||||
|
@ -1797,14 +1797,14 @@ input::-moz-focus-inner{
|
||||||
|
|
||||||
.b-new-entry .delete-btn{
|
.b-new-entry .delete-btn{
|
||||||
position:absolute;
|
position:absolute;
|
||||||
top:15px;
|
top:18px;
|
||||||
right:16px;
|
right:16px;
|
||||||
|
|
||||||
font-size:12px;
|
font-size:9px;
|
||||||
line-height:14px;
|
line-height:11px;
|
||||||
text-transform:uppercase;
|
text-transform:uppercase;
|
||||||
color:#333;
|
color:#333;
|
||||||
letter-spacing:2px;
|
letter-spacing:3px;
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
border-bottom:1px solid #ff6766;
|
border-bottom:1px solid #ff6766;
|
||||||
}
|
}
|
||||||
|
@ -3118,8 +3118,36 @@ input::-moz-focus-inner{
|
||||||
background-image:url(../images/stats-curve-grey.png);
|
background-image:url(../images/stats-curve-grey.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
.success-box {border: 1px dashed #BBBF45;color: #BBBF45;}
|
.success-box {
|
||||||
|
color: #BBBF45;
|
||||||
|
font-size: 22px;
|
||||||
|
padding-left: 136px;
|
||||||
|
padding-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
.inactive-row { font-style: italic; opacity: 0.38; background: url('../images/bg_line.png');filter: alpha(opacity = 38); }
|
.inactive-row { font-style: italic; opacity: 0.38; background: url('../images/bg_line.png');filter: alpha(opacity = 38); }
|
||||||
.form-suspended input[type="text"], .form-suspended input[type="checkbox"], .form-suspended .checkbox, .form-suspended select, .form-suspended textarea, .form-suspended .select { opacity: 0.38;filter: alpha(opacity = 38); }
|
.form-suspended input[type="text"], .form-suspended input[type="checkbox"], .form-suspended .checkbox, .form-suspended select, .form-suspended textarea, .form-suspended .select { opacity: 0.38;filter: alpha(opacity = 38); }
|
||||||
.form-suspended .do_action_toggle_suspend {opacity: 1; filter: alpha(opacity = 100);}
|
.form-suspended .do_action_toggle_suspend {opacity: 1; filter: alpha(opacity = 100);}
|
||||||
|
|
||||||
|
|
||||||
|
.stats-block{
|
||||||
|
background:#474338;
|
||||||
|
padding:10px;
|
||||||
|
width:600px;
|
||||||
|
margin:0 auto 10px;
|
||||||
|
}
|
||||||
|
.stats-block-header{
|
||||||
|
color:#fc0;
|
||||||
|
font-size:12px;
|
||||||
|
font-weight:bold;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
.stats-block .stats-graph{
|
||||||
|
display:block;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* START: DEV!! */
|
||||||
|
.stats-subbar {cursor: pointer;}
|
||||||
|
.stats-subbar .sub-active{font-weight: bold;}
|
||||||
|
/* END: DEV */
|
||||||
|
|
0
web/css/main2.css
Normal file
|
@ -68,13 +68,16 @@
|
||||||
}
|
}
|
||||||
.page-auth .field-label{
|
.page-auth .field-label{
|
||||||
float:left;
|
float:left;
|
||||||
width:87px;
|
width:101px;
|
||||||
padding-left:45px;
|
padding-left:15px;
|
||||||
|
padding-right:17px;
|
||||||
color:#e3d785;
|
color:#e3d785;
|
||||||
font-size:12px;
|
font-size:12px;
|
||||||
|
font-weight:bold;
|
||||||
line-height:34px;
|
line-height:34px;
|
||||||
font-family:Arial, Helvetica, sans-serif;
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
text-transform:uppercase;
|
text-transform:uppercase;
|
||||||
|
text-align:right;
|
||||||
/*letter-spacing:-.5px;*/
|
/*letter-spacing:-.5px;*/
|
||||||
}
|
}
|
||||||
.page-auth .field-text{
|
.page-auth .field-text{
|
||||||
|
@ -183,7 +186,7 @@
|
||||||
margin:0 -20px;
|
margin:0 -20px;
|
||||||
padding:15px 20px;
|
padding:15px 20px;
|
||||||
font-size:14px;
|
font-size:14px;
|
||||||
border-top:2px solid #34352f;
|
border-top:1px solid #34352f;
|
||||||
color:#5a5e5d;
|
color:#5a5e5d;
|
||||||
}
|
}
|
||||||
.page-auth .footnotes .additional-info{
|
.page-auth .footnotes .additional-info{
|
||||||
|
|
BIN
web/images/_fav.ico
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/auth/logo.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
web/images/autocomplete-field-arrow.png
Normal file
After Width: | Height: | Size: 874 B |
BIN
web/images/backup-checkbox-checked.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/images/backup-checkbox-unchecked.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/backup-checkbox.png
Normal file
After Width: | Height: | Size: 1,015 B |
BIN
web/images/backup-checkboxes.png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
web/images/backup-collapsed-ico.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
web/images/backup-expand-ico.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/backup-restore-ico.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
web/images/bar-value-mark.png
Normal file
After Width: | Height: | Size: 941 B |
BIN
web/images/bg-left.gif
Normal file
After Width: | Height: | Size: 205 B |
BIN
web/images/bg-right.gif
Normal file
After Width: | Height: | Size: 205 B |
BIN
web/images/bg_line.png
Normal file
After Width: | Height: | Size: 99 B |
BIN
web/images/check-row-sprite.png
Normal file
After Width: | Height: | Size: 365 B |
BIN
web/images/checkbox.png
Normal file
After Width: | Height: | Size: 483 B |
BIN
web/images/chosen-sprite.png
Normal file
After Width: | Height: | Size: 396 B |
Before Width: | Height: | Size: 1 KiB After Width: | Height: | Size: 1 KiB |
BIN
web/images/custom-checkbox.gif
Normal file
After Width: | Height: | Size: 267 B |
BIN
web/images/delete-ico-active.png
Normal file
After Width: | Height: | Size: 175 B |
BIN
web/images/delete.gif
Normal file
After Width: | Height: | Size: 778 B |
BIN
web/images/enabled-ico.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
web/images/fone-tr.png
Normal file
After Width: | Height: | Size: 100 B |
Before Width: | Height: | Size: 266 B After Width: | Height: | Size: 218 B |
Before Width: | Height: | Size: 288 B After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/form-group-collapsed_.png
Normal file
After Width: | Height: | Size: 288 B |
BIN
web/images/green-bracket-l-highlighted.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
web/images/green-bracket-l.png
Normal file
After Width: | Height: | Size: 966 B |
BIN
web/images/green-bracket-r-highlighted.png
Normal file
After Width: | Height: | Size: 1 KiB |
BIN
web/images/green-bracket-r.png
Normal file
After Width: | Height: | Size: 968 B |
BIN
web/images/images.tar
Normal file
BIN
web/images/info-popup-bg-1.png
Normal file
After Width: | Height: | Size: 933 B |
BIN
web/images/info-popup-sprite-2011-12-14.png
Normal file
After Width: | Height: | Size: 641 B |
BIN
web/images/logging-status-sprite.png
Normal file
After Width: | Height: | Size: 323 B |
BIN
web/images/nav-devider.png
Normal file
After Width: | Height: | Size: 131 B |
BIN
web/images/old-add-entry-plus.gif
Normal file
After Width: | Height: | Size: 332 B |
BIN
web/images/old-delete-ico-off.png
Normal file
After Width: | Height: | Size: 254 B |
BIN
web/images/old-delete-ico.png
Normal file
After Width: | Height: | Size: 356 B |
BIN
web/images/overrun-border.png
Normal file
After Width: | Height: | Size: 938 B |
BIN
web/images/plus-sprite.png
Normal file
After Width: | Height: | Size: 1,021 B |
BIN
web/images/primary-plus.gif
Normal file
After Width: | Height: | Size: 346 B |
BIN
web/images/primary-plus_active.png
Normal file
After Width: | Height: | Size: 2.8 KiB |
BIN
web/images/section-status-sprite-2.gif
Normal file
After Width: | Height: | Size: 55 B |
BIN
web/images/section-status-sprite-3.gif
Normal file
After Width: | Height: | Size: 104 B |
BIN
web/images/section-status-sprite-4.gif
Normal file
After Width: | Height: | Size: 111 B |
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 217 B |
BIN
web/images/section-status-sprite.gif
Normal file
After Width: | Height: | Size: 59 B |
BIN
web/images/sprite.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/images/stats-curve-grey.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
web/images/status-arrow.png
Normal file
After Width: | Height: | Size: 293 B |
BIN
web/images/thin-grey-line-3.gif
Normal file
After Width: | Height: | Size: 893 B |
BIN
web/images/thin-grey-line.gif
Normal file
After Width: | Height: | Size: 48 B |
BIN
web/images/vesta-italic-logo.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
web/images/vesta-logo-2011-11-16.png
Normal file
After Width: | Height: | Size: 3.9 KiB |
BIN
web/images/vesta-logo-2011-11-25.png
Normal file
After Width: | Height: | Size: 2.7 KiB |
BIN
web/images/vesta-logo-2011-12-14.png
Normal file
After Width: | Height: | Size: 5 KiB |
Before Width: | Height: | Size: 5 KiB After Width: | Height: | Size: 1.9 KiB |
|
@ -14,7 +14,7 @@
|
||||||
<link rel="stylesheet" media="all" type="text/css" href="css/vesta-login-form.css" />
|
<link rel="stylesheet" media="all" type="text/css" href="css/vesta-login-form.css" />
|
||||||
|
|
||||||
<!--[if lt IE 8]>
|
<!--[if lt IE 8]>
|
||||||
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
|
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
|
||||||
<![endif]-->
|
<![endif]-->
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
|
@ -53,24 +53,26 @@
|
||||||
<div class="outer">
|
<div class="outer">
|
||||||
<div id="header">
|
<div id="header">
|
||||||
<div class="logo-box">
|
<div class="logo-box">
|
||||||
<h1 class="logo"><a href="#">Vesta panel <span> </span></a></h1>
|
<h1 class="logo"><a href="/">Vesta panel <span> </span></a></h1>
|
||||||
</div>
|
</div>
|
||||||
<ul class="settings">
|
<ul class="settings">
|
||||||
<li class="settings-item"><a href="#" class="item-title logged-as" id="user-name">...</a></li>
|
<li class="settings-item">
|
||||||
<li class="settings-item"><a href="#" class="item-title">profile</a></li>
|
<span class="logged-as" id="user-name"></span>
|
||||||
<li class="settings-item"><a href="#" class="item-title do_action_view_profile_settings">settings</a></li>
|
<!-- a class="item-title" href="#">Profile</a -->
|
||||||
<li class="settings-item"><a href="#" class="item-title do_action_profile_exit">exit</a></li>
|
</li>
|
||||||
</ul>
|
<!-- li class="settings-item"><a class="item-title do_action_view_profile_settings" href="#">Settings</a></li -->
|
||||||
<ul class="extra-services">
|
<li class="logout"><a class="item-title do_action_profile_exit" href="javascript:void(0);">Exit</a></li>
|
||||||
<li class="service-item service-item_backups">
|
</ul>
|
||||||
<span class="item-title">Backups</span>
|
<ul class="extra-services">
|
||||||
<i class="item-devider"></i>
|
<li class="service-item" id="BACKUPS" onClick="App.Pages.loadBackups();">
|
||||||
</li>
|
<span class="item-title" onClick="App.Pages.loadBackups();">Backups</span>
|
||||||
<li class="service-item">
|
<i class="item-devider"></i>
|
||||||
<span class="item-title">Stats</span>
|
</li>
|
||||||
<i class="item-devider"></i>
|
<li class="service-item" id="STATS" onClick="App.Pages.loadStats();">
|
||||||
</li>
|
<span class="item-title" onClick="App.Pages.loadStats();">Stats</span>
|
||||||
</ul>
|
<i class="item-devider"></i>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="primary-nav-box">
|
<div id="primary-nav-box">
|
||||||
|
@ -212,10 +214,10 @@
|
||||||
add new <span id="new-entry-keyword" class="do_action_new_entry">entry</span>
|
add new <span id="new-entry-keyword" class="do_action_new_entry">entry</span>
|
||||||
</a>
|
</a>
|
||||||
<div class="row-filters cc">
|
<div class="row-filters cc">
|
||||||
<div class="b-row-selector">
|
<div id="batch-processor" class="b-row-selector">
|
||||||
<div class="checkbox-selector cc">
|
<div class="checkbox-selector cc">
|
||||||
<input class="styled" type="checkbox" value="" />
|
<input class="styled do_action_toggle_batch_selector" autocomplete="off" type="checkbox" value="" />
|
||||||
<span class="selector-title">385 Selected</span>
|
<span class="selector-title">All</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="context-actions c-s-box">
|
<div class="context-actions c-s-box">
|
||||||
<div class="b-cust-sel complex-select c-s-opt">
|
<div class="b-cust-sel complex-select c-s-opt">
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<?php
|
<?php
|
||||||
echo "<title>Testing Vesta Control Panel</title>\n";
|
echo "<title>Testing Vesta Control Panel</title>\n";
|
||||||
echo "<pre>\n";
|
echo "<pre>\n";
|
||||||
$cmd='/usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users json';
|
$cmd='/usr/bin/sudo /usr/local/vesta/bin/v_list_users json';
|
||||||
echo "Command: $cmd\n\n";
|
echo "Command: $cmd\n\n";
|
||||||
exec ($cmd,$output,$return);
|
exec ($cmd,$output,$return);
|
||||||
if ($return > 0) {
|
if ($return > 0) {
|
||||||
|
|
276
web/index_tests.html
Normal file
|
@ -0,0 +1,276 @@
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" style="background-color: #fff;">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<title>Vesta Control Panel</title>
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||||
|
<meta http-equiv="imagetoolbar" content="false" />
|
||||||
|
|
||||||
|
<link rel="shortcut icon" href="images/fav.ico" type="image/x-icon">
|
||||||
|
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/reset2.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/main.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/popup.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="css/vesta-login-form.css" />
|
||||||
|
<link rel="stylesheet" media="all" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/vesta.css" />
|
||||||
|
|
||||||
|
<!--[if lt IE 8]>
|
||||||
|
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
|
||||||
|
<![endif]-->
|
||||||
|
|
||||||
|
<style>
|
||||||
|
#content .s-c-highlighted{background-color: black;color:white;}
|
||||||
|
.styled{display:block}
|
||||||
|
.black_overlay{
|
||||||
|
position: absolute;
|
||||||
|
top: 0%;
|
||||||
|
left: 0%;
|
||||||
|
width: 100%;
|
||||||
|
height: 100%;
|
||||||
|
background-color: black;
|
||||||
|
z-index:1001;
|
||||||
|
-moz-opacity: 0.8;
|
||||||
|
opacity:.80;
|
||||||
|
filter: alpha(opacity=80);
|
||||||
|
}
|
||||||
|
|
||||||
|
.popup_content {
|
||||||
|
position: absolute;
|
||||||
|
top: 25%;
|
||||||
|
left: 25%;
|
||||||
|
width: 50%;
|
||||||
|
height: 50%;
|
||||||
|
padding: 16px;
|
||||||
|
border: 16px solid orange;
|
||||||
|
background-color: white;
|
||||||
|
z-index:1002;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<div id="page" class="hi2dden">
|
||||||
|
<div class="outer">
|
||||||
|
<div id="header">
|
||||||
|
<div class="logo-box">
|
||||||
|
<h1 class="logo"><a href="#">Vesta panel <span> </span></a></h1>
|
||||||
|
</div>
|
||||||
|
<ul class="settings">
|
||||||
|
<li class="settings-item"><span id="user-name" class="logged-as">...</span></li>
|
||||||
|
<li class="settings-item"><a href="#" class="do_action_view_profile_settings">settings</a></li>
|
||||||
|
<li class="settings-item"><a href="#" class="do_action_profile_exit">exit</a></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="primary-nav-box">
|
||||||
|
<ul class="primary-nav cc">
|
||||||
|
<!-- li class="section" id="USER">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">Users</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> users</span>
|
||||||
|
<span class="def"><span class="num-blocked">0</span> suspended</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section" id="WEB_DOMAIN">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">Web</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> web domains</span>
|
||||||
|
<span class="def"><span class="num-blocked">0</span> suspended</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section" id="MAIL">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">Mail</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> mail domain(s)</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section" id="DB">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">DB</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> databases</span>
|
||||||
|
<span class="def"><span class="num-blocked">0</span> suspended</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section active" id="DNS">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">DNS</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> dns domain(s)</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section" id="IP">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">IP</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> ip address(es)</span>
|
||||||
|
<span class="def"><span class="num-blocked">0</span> suspended</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li>
|
||||||
|
<li class="section last-section" id="CRON">
|
||||||
|
<div class="section-inner">
|
||||||
|
<dl class="users-nav-item">
|
||||||
|
<dt class="section-title cc">
|
||||||
|
<span class="to-section">Cron</span>
|
||||||
|
<i class="add-entry do_action_new_entry"> </i>
|
||||||
|
</dt>
|
||||||
|
<dd class="section-contains">
|
||||||
|
<span class="def"><span class="num-total">0</span> cron job(s)</span>
|
||||||
|
<span class="def"><span class="num-blocked">0</span> suspended</span>
|
||||||
|
</dd>
|
||||||
|
</dl>
|
||||||
|
</div>
|
||||||
|
<i class="section-devider"></i>
|
||||||
|
</li -->
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<!-- div id="console">
|
||||||
|
<div class="b-console">
|
||||||
|
|
||||||
|
<div class="b-console-wrap">
|
||||||
|
<form class="b-console-form cc" action="" method="post">
|
||||||
|
<fieldset>
|
||||||
|
<input class="b-console-field" type="text" value="/"/>
|
||||||
|
<input class="b-console-btn do_action_exec_v_console" type="submit" value="Go"/>
|
||||||
|
</fieldset>
|
||||||
|
</form>
|
||||||
|
<div class="b-console-statuses hidden">
|
||||||
|
<div class="b-console-status cc">
|
||||||
|
|
||||||
|
<p class="b-console-status-message">domain <b>test.com</b> have been added <br />
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<span class="b-console-status-action">cancel</span>
|
||||||
|
<i class="b-console-status-arrow"> </i>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="b-console-results"></div>
|
||||||
|
</div>
|
||||||
|
</div -->
|
||||||
|
<div id="actions-toolbar" class="cc">
|
||||||
|
<a class="add-domain do_action_new_entry" href="javascript:void(0)">
|
||||||
|
<i class="icon do_action_new_entry"> </i>
|
||||||
|
add new <span id="new-entry-keyword" class="do_action_new_entry">entry</span>
|
||||||
|
</a>
|
||||||
|
<span class="select-all do_action_select_all">select all</span>
|
||||||
|
<span class="select-all do_action_deselect_all">deselect all</span>
|
||||||
|
<span class="clear-selected do_action_delete_selected">Delete selected</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="content">
|
||||||
|
<div class="content-inner">
|
||||||
|
Tests: <br />
|
||||||
|
<div class="context-actions c-s-box">
|
||||||
|
<input type="text" name="" value="" class="c-s-value-ref">
|
||||||
|
<div id="custom-select" class="b-cust-sel complex-select c-s-opt" style="width: 180px">
|
||||||
|
<span class="title c-s-title do_action_toggle_custom_select c-s-opt">Action</span>
|
||||||
|
<div class="cust-sel-arrow do_action_toggle_custom_select c-s-opt"><i class="do_action_toggle_custom_select c-s-opt"> </i></div>
|
||||||
|
<div class="cust-sel-options complex-select-content hidden c-s-opt">
|
||||||
|
<div class="cust-sel-option ico_gray c-s-opt do_action_update_cs_value">
|
||||||
|
<input type="hidden" class="c-s-value" value="Suspended">
|
||||||
|
Suspend
|
||||||
|
</div>
|
||||||
|
<div class="cust-sel-option ico_green do_action_update_cs_value">
|
||||||
|
<input type="hidden" class="c-s-value" value="Unsuspended">
|
||||||
|
Unsuspend
|
||||||
|
</div>
|
||||||
|
<div class="cust-sel-option ico_red c-s-opt do_action_update_cs_value">
|
||||||
|
<input type="hidden" class="c-s-value" value="Delete">
|
||||||
|
Delete
|
||||||
|
</div>
|
||||||
|
<div class="cust-sel-option c-s-opt do_action_update_cs_value">
|
||||||
|
<input type="hidden" class="c-s-value" value="Chuck Norris">
|
||||||
|
<img class="c-s-opt do_action_update_cs_value" src="http://aviationhumor.net/wp-content/uploads/2011/02/chuck-norris.jpg" width="30px" height="30px">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script type="text/javascript" src="js/lib/cookie.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/jquery-1.6.1.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/jquery-ui-1.8.13.custom.min.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/auth.js"></script>
|
||||||
|
<script type="text/javascript" src="js/date_format.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/custom-form-elements.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/browser.js"></script>
|
||||||
|
<script type="text/javascript" src="js/lib/popup.js"></script>
|
||||||
|
<script type="text/javascript" src="js/app.js"></script>
|
||||||
|
<script type="text/javascript" src="js/_settings.js"></script>
|
||||||
|
<script type="text/javascript" src="js/actions.js"></script>
|
||||||
|
<script type="text/javascript" src="js/helpers.js"></script>
|
||||||
|
<script type="text/javascript" src="js/templates.js"></script>
|
||||||
|
<script type="text/javascript" src="js/html.js"></script>
|
||||||
|
<script type="text/javascript" src="js/view.js"></script>
|
||||||
|
<script type="text/javascript" src="js/ref.js"></script>
|
||||||
|
<script type="text/javascript" src="js/pages.js"></script>
|
||||||
|
<script type="text/javascript" src="js/model.js"></script>
|
||||||
|
<script type="text/javascript" src="js/core.js"></script>
|
||||||
|
<script type="text/javascript" src="js/validators.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
App.Utils.detectBrowser();
|
||||||
|
App.Ref.init();
|
||||||
|
|
||||||
|
//App.Env.world = 'USER';
|
||||||
|
//App.Pages.init();
|
||||||
|
App.Core.listen();
|
||||||
|
App.Core.initMenu();
|
||||||
|
App.Helpers.liveValidate();
|
||||||
|
$(document).bind('submit', function(evt) {
|
||||||
|
evt.preventDefault();
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -28,6 +28,7 @@ App.Constants.KEY.BACKSPACE = 8;
|
||||||
App.Constants.KEY.UP = 38;
|
App.Constants.KEY.UP = 38;
|
||||||
App.Constants.KEY.DOWN = 40;
|
App.Constants.KEY.DOWN = 40;
|
||||||
App.Constants.KEY.CODED_NAME = {'27':'ESC', '13':'ENTER','32':'SPACE','8':'BACKSPACE','38':'UP','40':'DOWN'};
|
App.Constants.KEY.CODED_NAME = {'27':'ESC', '13':'ENTER','32':'SPACE','8':'BACKSPACE','38':'UP','40':'DOWN'};
|
||||||
|
App.Constants.KEY.WDAYS = {'0':'Sunday', '1':'Monday','2':'Tuesday','3':'Wednesday','4':'Thursday','5':'Friday', '6': 'Saturday'};
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
App.Settings.PSW_MIN_LEN = 6;
|
App.Settings.PSW_MIN_LEN = 6;
|
||||||
|
|
|
@ -56,8 +56,7 @@ App.Actions.do_change_password = function()
|
||||||
if (reply.result) {
|
if (reply.result) {
|
||||||
$('#change-psw-error').html('');
|
$('#change-psw-error').html('');
|
||||||
$('#change-psw-error').addClass('hidden');
|
$('#change-psw-error').addClass('hidden');
|
||||||
$('#change-psw-success').html('Reset link was sent to email box provided by you.'
|
$('#change-psw-success').html('Reset link was sent to email box provided by you.');
|
||||||
+ ' You will need to provide <strong>"'+reply.data.key_code+'"</strong> code to for resetting the password. Please copy it.');
|
|
||||||
$('#change-psw-success').removeClass('hidden');
|
$('#change-psw-success').removeClass('hidden');
|
||||||
$('.form-row').remove();
|
$('.form-row').remove();
|
||||||
}
|
}
|
||||||
|
@ -584,6 +583,58 @@ App.Actions.delete_selected = function(evt)
|
||||||
if (!confirmed) {
|
if (!confirmed) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
App.Actions.loadStats = function(type)
|
||||||
|
{
|
||||||
|
var period = '';
|
||||||
|
switch (type) {
|
||||||
|
case 'month':
|
||||||
|
period = 'monthly'
|
||||||
|
break;
|
||||||
|
case 'today':
|
||||||
|
period = 'daily'
|
||||||
|
break;
|
||||||
|
case 'week':
|
||||||
|
period = 'weekly'
|
||||||
|
break;
|
||||||
|
case 'year':
|
||||||
|
period = 'yearly'
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
period = 'daily';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
$('#actions-toolbar .sub-active').removeClass('sub-active');
|
||||||
|
$('#actions-toolbar .'+type).addClass('sub-active');
|
||||||
|
|
||||||
|
App.Ajax.request('STATS.getList', {period: period}, function(reply) {
|
||||||
|
if (!reply.result) {
|
||||||
|
App.Herlers.alert('Stats list failed to load. Please try again a bit later');
|
||||||
|
}
|
||||||
|
|
||||||
|
App.Ref.CONTENT.html(App.HTML.Build.stats_list(reply.data));
|
||||||
|
App.Helpers.updateScreen();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
App.Actions.toggle_batch_selector = function()
|
||||||
|
{
|
||||||
|
if (App.Tmp[App.Env.world + '_selected_records'] == 0) { // Select all
|
||||||
|
var rows = $('.row');
|
||||||
|
rows.each(function(i, row) {
|
||||||
|
$(row).addClass('checked-row');
|
||||||
|
});
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] = rows.length;
|
||||||
|
$('#batch-processor .selector-title').html(rows.length + ' SELECTED');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var rows = $('.row');
|
||||||
|
rows.each(function(i, row) {
|
||||||
|
$(row).removeClass('checked-row');
|
||||||
|
});
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] = 0;
|
||||||
|
$('#batch-processor .selector-title').html('NONE');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,26 @@ App.Core.listen = function()
|
||||||
if (action.length < 2) {
|
if (action.length < 2) {
|
||||||
if (elm.hasClass('check-this')) {
|
if (elm.hasClass('check-this')) {
|
||||||
var ref = $(elm).parents('.row');
|
var ref = $(elm).parents('.row');
|
||||||
ref.hasClass('checked-row') ? ref.removeClass('checked-row') : ref.addClass('checked-row');
|
if (ref.hasClass('checked-row')) {
|
||||||
|
ref.removeClass('checked-row');
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] -= 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
ref.addClass('checked-row');
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (App.Tmp[App.Env.world + '_selected_records'] <= 0) {
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] = 0; // if number is negative
|
||||||
|
$('#batch-processor .selector-title').html('NONE');
|
||||||
|
$('.styled.do_action_toggle_batch_selector.style-applied').attr('checked', false);
|
||||||
|
$('.checkbox.do_action_toggle_batch_selector').css('background-position', '0 0');
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$('#batch-processor .selector-title').html(App.Tmp[App.Env.world + '_selected_records'] + ' SELECTED');
|
||||||
|
$('.styled.do_action_toggle_batch_selector.style-applied').attr('checked', true);
|
||||||
|
$('.checkbox.do_action_toggle_batch_selector').css('background-position', '0 -50px');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return; // no action found attached to the dom object
|
return; // no action found attached to the dom object
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ App.HTML.setTplKeys = function (tpl, o, empty) {
|
||||||
|
|
||||||
App.HTML.Build.dns_form = function (options, id) {
|
App.HTML.Build.dns_form = function (options, id) {
|
||||||
if ('undefined' == typeof App.Env.initialParams) {
|
if ('undefined' == typeof App.Env.initialParams) {
|
||||||
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
|
return alert('Please wait a bit. Some background processes are not yet executed. Thank you for patience.');
|
||||||
}
|
}
|
||||||
var tpl = App.Templates.get('FORM', 'dns');
|
var tpl = App.Templates.get('FORM', 'dns');
|
||||||
tpl.set(':source', options);
|
tpl.set(':source', options);
|
||||||
|
@ -254,14 +254,14 @@ App.HTML.Build.dns_entry = function (o, is_new) {
|
||||||
App.HTML.Build.user_entry = function (o, key) {
|
App.HTML.Build.user_entry = function (o, key) {
|
||||||
var processed_data = {
|
var processed_data = {
|
||||||
'NICKNAME': key,
|
'NICKNAME': key,
|
||||||
'U_DISK_PERCENTAGE': o.U_DISK > 0 ? o.U_DISK / o.DISK_QUOTA * 100 : 1,
|
'U_DISK_PERCENTAGE': o.U_DISK > 0 ? parseFloat(o.U_DISK / o.DISK_QUOTA * 100).toFixed(2) : 1,
|
||||||
'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? o.U_BANDWIDTH / o.BANDWIDTH * 100 : 1,
|
'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? parseFloat(o.U_BANDWIDTH / o.BANDWIDTH * 100).toFixed(2) : 1,
|
||||||
'U_DISK': o.U_DISK == 0 ? 1 : App.Helpers.formatNumber(o.U_DISK),
|
'U_DISK': o.U_DISK == 0 ? 1 : App.Helpers.formatNumber(o.U_DISK),
|
||||||
'U_BANDWIDTH': o.U_BANDWIDTH == 0 ? 1 : App.Helpers.formatNumber(o.U_BANDWIDTH),
|
'U_BANDWIDTH': o.U_BANDWIDTH == 0 ? 1 : App.Helpers.formatNumber(o.U_BANDWIDTH),
|
||||||
'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(o.DISK_QUOTA),
|
'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(o.DISK_QUOTA),
|
||||||
'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(o.BANDWIDTH),
|
'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(o.BANDWIDTH),
|
||||||
'BANDWIDTH': App.Helpers.getMbHuman(o.BANDWIDTH),
|
'BANDWIDTH': App.Helpers.getMbHuman(o.BANDWIDTH),
|
||||||
'DISK_QUOTA': App.Helpers.getMbHuman(o.DISK_QUOTA)
|
'DISK_QUOTA': App.Helpers.getMbHuman(o.DISK_QUOTA)
|
||||||
};
|
};
|
||||||
var o = $.extend(o, processed_data);
|
var o = $.extend(o, processed_data);
|
||||||
o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE;
|
o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE;
|
||||||
|
@ -291,7 +291,8 @@ App.HTML.Build.user_entry = function (o, key) {
|
||||||
});
|
});
|
||||||
if (ns_full.length <= App.Settings.USER_VISIBLE_NS) {
|
if (ns_full.length <= App.Settings.USER_VISIBLE_NS) {
|
||||||
tpl.set(':NS', ns.done());
|
tpl.set(':NS', ns.done());
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
var ns_custom = App.Templates.get('NS_MINIMIZED', 'user');
|
var ns_custom = App.Templates.get('NS_MINIMIZED', 'user');
|
||||||
ns_custom.set(':NS_MINI', ns.done());
|
ns_custom.set(':NS_MINI', ns.done());
|
||||||
ns_custom.set(':NS_FULL', ns_full.done());
|
ns_custom.set(':NS_FULL', ns_full.done());
|
||||||
|
@ -308,7 +309,8 @@ App.HTML.Build.user_entry = function (o, key) {
|
||||||
tpl.set(':OVER_BAR', tpl_over.finalize());
|
tpl.set(':OVER_BAR', tpl_over.finalize());
|
||||||
tpl.set(':U_DISK_PERCENTAGE_3', 100);
|
tpl.set(':U_DISK_PERCENTAGE_3', 100);
|
||||||
tpl.set(':OVER_DRAFT_VALUE', 'overdraft');
|
tpl.set(':OVER_DRAFT_VALUE', 'overdraft');
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
tpl.set(':OVER_BAR', '');
|
tpl.set(':OVER_BAR', '');
|
||||||
tpl.set(':OVER_DRAFT_VALUE', '');
|
tpl.set(':OVER_DRAFT_VALUE', '');
|
||||||
}
|
}
|
||||||
|
@ -320,7 +322,8 @@ App.HTML.Build.user_entry = function (o, key) {
|
||||||
tpl.set(':OVER_BAR_2', tpl_over.finalize());
|
tpl.set(':OVER_BAR_2', tpl_over.finalize());
|
||||||
tpl.set(':U_BANDWIDTH_PERCENTAGE_3', 100);
|
tpl.set(':U_BANDWIDTH_PERCENTAGE_3', 100);
|
||||||
tpl.set(':OVER_DRAFT_VALUE_2', 'overdraft');
|
tpl.set(':OVER_DRAFT_VALUE_2', 'overdraft');
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
tpl.set(':OVER_BAR_2', '');
|
tpl.set(':OVER_BAR_2', '');
|
||||||
tpl.set(':OVER_DRAFT_VALUE_2', '');
|
tpl.set(':OVER_DRAFT_VALUE_2', '');
|
||||||
}
|
}
|
||||||
|
@ -329,19 +332,35 @@ App.HTML.Build.user_entry = function (o, key) {
|
||||||
|
|
||||||
App.HTML.Build.web_domain_entry = function (o, key) {
|
App.HTML.Build.web_domain_entry = function (o, key) {
|
||||||
var processed_data = {
|
var processed_data = {
|
||||||
DOMAIN: key
|
DOMAIN: key,
|
||||||
|
'U_DISK_PERCENTAGE': o.U_DISK > 0 ? parseFloat(o.U_DISK / App.Env.initialParams.user_data.DISK_QUOTA * 100).toFixed(2) : 1,
|
||||||
|
'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? parseFloat(o.U_BANDWIDTH / App.Env.initialParams.user_data.BANDWIDTH * 100).toFixed(2) : 1,
|
||||||
|
'U_DISK': o.U_DISK == 0 ? 1 : App.Helpers.formatNumber(o.U_DISK),
|
||||||
|
'U_BANDWIDTH': o.U_BANDWIDTH == 0 ? 1 : App.Helpers.formatNumber(o.U_BANDWIDTH),
|
||||||
|
'DISK_QUOTA_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.DISK_QUOTA),
|
||||||
|
'BANDWIDTH_MEASURE': App.Helpers.getMbHumanMeasure(App.Env.initialParams.user_data.BANDWIDTH),
|
||||||
|
'BANDWIDTH': App.Helpers.getMbHuman(App.Env.initialParams.user_data.BANDWIDTH),
|
||||||
|
'DISK_QUOTA': App.Helpers.getMbHuman(App.Env.initialParams.user_data.DISK_QUOTA)
|
||||||
};
|
};
|
||||||
var o = $.extend(o, processed_data);
|
var o = $.extend(o, processed_data);
|
||||||
|
o.U_DISK_PERCENTAGE_2 = o.U_DISK_PERCENTAGE;
|
||||||
|
o.U_DISK_PERCENTAGE_3 = o.U_DISK_PERCENTAGE;
|
||||||
|
o.BANDWIDTH_MEASURE_2 = o.BANDWIDTH_MEASURE;
|
||||||
|
o.DISK_QUOTA_MEASURE_2 = o.DISK_QUOTA_MEASURE;
|
||||||
|
o.U_BANDWIDTH_PERCENTAGE_2 = o.U_BANDWIDTH_PERCENTAGE;
|
||||||
|
o.U_BANDWIDTH_PERCENTAGE_3 = o.U_BANDWIDTH_PERCENTAGE;
|
||||||
var tpl = App.Templates.get('ENTRY', 'web_domain');
|
var tpl = App.Templates.get('ENTRY', 'web_domain');
|
||||||
tpl = App.HTML.setTplKeys(tpl, o);
|
tpl = App.HTML.setTplKeys(tpl, o);
|
||||||
tpl = App.HTML.toggle_suspended_entry(tpl, o);
|
tpl = App.HTML.toggle_suspended_entry(tpl, o);
|
||||||
if (o.STATS_LOGIN.trim() != '') {
|
if (o.STATS_LOGIN.trim() != '') {
|
||||||
tpl.set(':STATS_AUTH', '+auth');
|
tpl.set(':STATS_AUTH', '+auth');
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
tpl.set(':STATS_AUTH', '');
|
tpl.set(':STATS_AUTH', '');
|
||||||
}
|
}
|
||||||
tpl.set(':DISK', App.Env.initialParams.PROFILE.BANDWIDTH);
|
tpl.set(':DISK', App.Env.initialParams.PROFILE.BANDWIDTH);
|
||||||
tpl.set(':BANDWIDTH', App.Env.initialParams.PROFILE.DISK);
|
tpl.set(':BANDWIDTH', App.Env.initialParams.PROFILE.DISK);
|
||||||
|
|
||||||
tpl = App.HTML.toggle_suspended_entry(tpl, o);
|
tpl = App.HTML.toggle_suspended_entry(tpl, o);
|
||||||
|
|
||||||
return tpl.finalize();
|
return tpl.finalize();
|
||||||
|
@ -407,12 +426,42 @@ App.HTML.Build.backup_list = function(backups)
|
||||||
var acc = [];
|
var acc = [];
|
||||||
$.each(backups, function(key) {
|
$.each(backups, function(key) {
|
||||||
var bckp = backups[key];
|
var bckp = backups[key];
|
||||||
|
// generated time calc
|
||||||
|
var generated_time = 1; //min
|
||||||
|
bckp.RUNTIME > 60 ? generated_time = bckp.RUNTIME / 60 + ' h.' : generated_time += ' m.';
|
||||||
|
|
||||||
|
var created_date = new Date(key);
|
||||||
var tpl = App.Templates.get('ENTRY', 'backup');
|
var tpl = App.Templates.get('ENTRY', 'backup');
|
||||||
tpl.set(':CREATED_AT', key);
|
tpl.set(':CREATED_AT', key);
|
||||||
tpl.set(':CREATED_AT_TIME', bckp.TIME);
|
tpl.set(':CREATED_AT_TIME', bckp.TIME);
|
||||||
tpl.set(':CREATED_AT_TIME', bckp.TIME);
|
tpl.set(':GENERATION_TIME', generated_time);
|
||||||
|
tpl.set(':OWNER', App.Env.initialParams.auth_user.uid.uid);
|
||||||
|
tpl.set(':CREATED_AT_WDAY', App.Constants.KEY.WDAYS[created_date.getDay()]);
|
||||||
|
tpl.set(':SIZE', App.Helpers.getMbHuman(bckp.SIZE) + ' ' + App.Helpers.getMbHuman(bckp.SIZE, true));
|
||||||
acc[acc.length++] = tpl.finalize()
|
acc[acc.length++] = tpl.finalize()
|
||||||
})
|
});
|
||||||
|
|
||||||
|
var wrap = App.Templates.get('WRAPPER', 'backup');
|
||||||
|
wrap.set(':CONTENT', acc.done());
|
||||||
|
|
||||||
|
return wrap.finalize();
|
||||||
|
}
|
||||||
|
|
||||||
|
App.HTML.Build.stats_list = function(stats)
|
||||||
|
{
|
||||||
|
if (!stats || stats.length == 0) {
|
||||||
|
return '<br /><br /><center><h1>Stats are not available</h1></center>';
|
||||||
|
}
|
||||||
|
|
||||||
|
var acc = [];
|
||||||
|
$.each(stats, function(key) {
|
||||||
|
var stat = stats[key];
|
||||||
|
|
||||||
|
var tpl = App.Templates.get('ENTRY', 'stats');
|
||||||
|
tpl.set(':HEADER', stat.TITLE);
|
||||||
|
tpl.set(':IMG_SRC', stat.SRC);
|
||||||
|
acc[acc.length++] = tpl.finalize()
|
||||||
|
});
|
||||||
|
|
||||||
var wrap = App.Templates.get('WRAPPER', 'backup');
|
var wrap = App.Templates.get('WRAPPER', 'backup');
|
||||||
wrap.set(':CONTENT', acc.done());
|
wrap.set(':CONTENT', acc.done());
|
||||||
|
|
132
web/js/lib/.svn/entries
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
10
|
||||||
|
|
||||||
|
dir
|
||||||
|
86
|
||||||
|
svn://svn.vestacp.com/vesta/trunk/web/js/lib
|
||||||
|
svn://svn.vestacp.com/vesta
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-05-21T18:39:29.042444Z
|
||||||
|
76
|
||||||
|
twi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
32c52990-e6da-4f1f-8224-85171b9c7084
|
||||||
|
|
||||||
|
custom-form-elements.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-05-21T16:20:27.000000Z
|
||||||
|
c32b7ce65d7f5916a3a7ad767bbeeac8
|
||||||
|
2011-05-21T17:53:21.905711Z
|
||||||
|
75
|
||||||
|
twi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5866
|
||||||
|
|
||||||
|
jquery-ui-1.8.13.custom.min.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-05-21T17:06:36.000000Z
|
||||||
|
305afec5286e0380016fda3c0afa88f3
|
||||||
|
2011-05-21T18:39:29.042444Z
|
||||||
|
76
|
||||||
|
twi
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
41841
|
||||||
|
|
||||||
|
jquery-1.4.4.min.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-01-12T10:13:30.000000Z
|
||||||
|
73a9c334c5ca71d70d092b42064f6476
|
||||||
|
2011-01-12T11:14:22.700688Z
|
||||||
|
11
|
||||||
|
twi
|
||||||
|
|
||||||
|
popup.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-01-12T10:13:30.000000Z
|
||||||
|
03b53e40755b05328a0c2cfe7174c0e0
|
||||||
|
2011-01-12T11:14:22.700688Z
|
||||||
|
11
|
||||||
|
twi
|
||||||
|
|
||||||
|
browser.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-01-12T11:32:02.000000Z
|
||||||
|
99d606a8337f5ba58bcee7729fa08676
|
||||||
|
2011-01-12T12:31:57.745881Z
|
||||||
|
21
|
||||||
|
twi
|
||||||
|
|
396
web/js/lib/.svn/text-base/browser.js.svn-base
Normal file
|
@ -0,0 +1,396 @@
|
||||||
|
/**
|
||||||
|
* jQBrowser v0.2 - Extend jQuery's browser detection capabilities
|
||||||
|
* * http://davecardwell.co.uk/javascript/jquery/plugins/jquery-browserdetect/0.2/
|
||||||
|
*
|
||||||
|
* Dave Cardwell <http://davecardwell.co.uk/>
|
||||||
|
*
|
||||||
|
* Built on the shoulders of giants:
|
||||||
|
* * John Resig <http://jquery.com/>
|
||||||
|
* * Peter-Paul Koch <http://www.quirksmode.org/?/js/detect.html>
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Copyright (c) 2006 Dave Cardwell, dual licensed under the MIT and GPL
|
||||||
|
* licenses:
|
||||||
|
* * http://www.opensource.org/licenses/mit-license.php
|
||||||
|
* * http://www.gnu.org/licenses/gpl.txt
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* For the latest version of this plugin, and a discussion of its usage and
|
||||||
|
* implementation, visit:
|
||||||
|
* * http://davecardwell.co.uk/javascript/jquery/plugins/jquery-browserdetect/
|
||||||
|
*/
|
||||||
|
|
||||||
|
new function() {
|
||||||
|
/**
|
||||||
|
* The following functions and attributes form the Public interface of the
|
||||||
|
* jQBrowser plugin, accessed externally through the $.browser object.
|
||||||
|
* See the relevant function definition later in the source for further
|
||||||
|
* information.
|
||||||
|
*
|
||||||
|
* $.browser.browser()
|
||||||
|
* $.browser.version.number()
|
||||||
|
* $.browser.version.string()
|
||||||
|
* $.browser.OS()
|
||||||
|
*
|
||||||
|
* $.browser.aol()
|
||||||
|
* $.browser.camino()
|
||||||
|
* $.browser.firefox()
|
||||||
|
* $.browser.flock()
|
||||||
|
* $.browser.icab()
|
||||||
|
* $.browser.konqueror()
|
||||||
|
* $.browser.mozilla()
|
||||||
|
* $.browser.msie()
|
||||||
|
* $.browser.netscape()
|
||||||
|
* $.browser.opera()
|
||||||
|
* $.browser.safari()
|
||||||
|
*
|
||||||
|
* $.browser.linux()
|
||||||
|
* $.browser.mac()
|
||||||
|
* $.browser.win()
|
||||||
|
*/
|
||||||
|
var Public = {
|
||||||
|
// The current browser, its version as a number or a string, and the
|
||||||
|
// operating system its running on.
|
||||||
|
'browser': function() {
|
||||||
|
return Private.browser;
|
||||||
|
},
|
||||||
|
'version': {
|
||||||
|
'number': function() {
|
||||||
|
return Math.floor(Private.version.number);
|
||||||
|
},
|
||||||
|
'string': function() {
|
||||||
|
return Private.version.string;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
'OS': function() {
|
||||||
|
return Private.OS;
|
||||||
|
},
|
||||||
|
|
||||||
|
// A boolean value indicating whether or not the given browser was
|
||||||
|
// detected.
|
||||||
|
'chrome': function() {
|
||||||
|
return Private.chrome;
|
||||||
|
},
|
||||||
|
'aol': function() {
|
||||||
|
return Private.aol;
|
||||||
|
},
|
||||||
|
'camino': function() {
|
||||||
|
return Private.camino;
|
||||||
|
},
|
||||||
|
'firefox': function() {
|
||||||
|
return Private.firefox;
|
||||||
|
},
|
||||||
|
'flock': function() {
|
||||||
|
return Private.flock;
|
||||||
|
},
|
||||||
|
'icab': function() {
|
||||||
|
return Private.icab;
|
||||||
|
},
|
||||||
|
'konqueror': function() {
|
||||||
|
return Private.konqueror;
|
||||||
|
},
|
||||||
|
'mozilla': function() {
|
||||||
|
return Private.mozilla;
|
||||||
|
},
|
||||||
|
'msie': function() {
|
||||||
|
return Private.msie;
|
||||||
|
},
|
||||||
|
'netscape': function() {
|
||||||
|
return Private.netscape;
|
||||||
|
},
|
||||||
|
'opera': function() {
|
||||||
|
return Private.opera;
|
||||||
|
},
|
||||||
|
'safari': function() {
|
||||||
|
return Private.safari;
|
||||||
|
},
|
||||||
|
|
||||||
|
// A boolean value indicating whether or not the given OS was
|
||||||
|
// detected.
|
||||||
|
'linux': function() {
|
||||||
|
return Private.linux;
|
||||||
|
},
|
||||||
|
'mac': function() {
|
||||||
|
return Private.mac;
|
||||||
|
},
|
||||||
|
'win': function() {
|
||||||
|
return Private.win;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Allow external access to the 'Public' interface through the $.browser
|
||||||
|
// object.
|
||||||
|
$.browser = Public;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The following functions and attributes form the internal methods and
|
||||||
|
* state of the jQBrowser plugin. See the relevant function definition
|
||||||
|
* later in the source for further information.
|
||||||
|
*
|
||||||
|
* Private.browser
|
||||||
|
* Private.version
|
||||||
|
* Private.OS
|
||||||
|
*
|
||||||
|
* Private.aol
|
||||||
|
* Private.camino
|
||||||
|
* Private.firefox
|
||||||
|
* Private.flock
|
||||||
|
* Private.icab
|
||||||
|
* Private.konqueror
|
||||||
|
* Private.mozilla
|
||||||
|
* Private.msie
|
||||||
|
* Private.netscape
|
||||||
|
* Private.opera
|
||||||
|
* Private.safari
|
||||||
|
*
|
||||||
|
* Private.linux
|
||||||
|
* Private.mac
|
||||||
|
* Private.win
|
||||||
|
*/
|
||||||
|
var Private = {
|
||||||
|
// Initially set to 'Unknown', if detected each of these properties will
|
||||||
|
// be updated.
|
||||||
|
'browser': 'Unknown',
|
||||||
|
'version': {
|
||||||
|
'number': undefined,
|
||||||
|
'string': 'Unknown'
|
||||||
|
},
|
||||||
|
'OS': 'Unknown',
|
||||||
|
|
||||||
|
// Initially set to false, if detected one of the following browsers
|
||||||
|
// will be updated.
|
||||||
|
'chrome': false,
|
||||||
|
'aol': false,
|
||||||
|
'camino': false,
|
||||||
|
'firefox': false,
|
||||||
|
'flock': false,
|
||||||
|
'icab': false,
|
||||||
|
'konqueror': false,
|
||||||
|
'mozilla': false,
|
||||||
|
'msie': false,
|
||||||
|
'netscape': false,
|
||||||
|
'opera': false,
|
||||||
|
'safari': false,
|
||||||
|
|
||||||
|
// Initially set to false, if detected one of the following operating
|
||||||
|
// systems will be updated.
|
||||||
|
'linux': false,
|
||||||
|
'mac': false,
|
||||||
|
'win': false
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loop over the items in 'data' trying to find a browser match with the
|
||||||
|
* test in data[i].browser(). Once found, attempt to determine the
|
||||||
|
* browser version.
|
||||||
|
*
|
||||||
|
* 'name': A string containing the full name of the browser.
|
||||||
|
* 'identifier': By default this is a lowercase version of 'name', but
|
||||||
|
* this can be overwritten by explicitly defining an
|
||||||
|
* 'identifier'.
|
||||||
|
* 'browser': A function that returns a boolean value indicating
|
||||||
|
* whether or not the given browser is detected.
|
||||||
|
* 'version': An optional function that overwrites the default version
|
||||||
|
* testing. Must return the result of a .match().
|
||||||
|
*
|
||||||
|
* Please note that the order of the data array is important, as some
|
||||||
|
* browsers contain details of others in their navigator.userAgent string.
|
||||||
|
* For example, Flock's contains 'Firefox' so much come before Firefox's
|
||||||
|
* test to avoid false positives.
|
||||||
|
*/
|
||||||
|
for( var i = 0, // counter
|
||||||
|
ua = navigator.userAgent, // the navigator's user agent string
|
||||||
|
ve = navigator.vendor, // the navigator's vendor string
|
||||||
|
data = [ // browser tests and data
|
||||||
|
{ // Safari <http://www.apple.com/safari/>
|
||||||
|
'name': 'Chrome',
|
||||||
|
'browser': function() {
|
||||||
|
return /Google/.test(ve)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Safari <http://www.apple.com/safari/>
|
||||||
|
'name': 'Safari',
|
||||||
|
'browser': function() {
|
||||||
|
return /Apple/.test(ve)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Opera <http://www.opera.com/>
|
||||||
|
'name': 'Opera',
|
||||||
|
'browser': function() {
|
||||||
|
return window.opera != undefined
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // iCab <http://www.icab.de/>
|
||||||
|
'name': 'iCab',
|
||||||
|
'browser': function() {
|
||||||
|
return /iCab/.test(ve)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Konqueror <http://www.konqueror.org/>
|
||||||
|
'name': 'Konqueror',
|
||||||
|
'browser': function() {
|
||||||
|
return /KDE/.test(ve)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // AOL Explorer <http://downloads.channel.aol.com/browser>
|
||||||
|
'identifier': 'aol',
|
||||||
|
'name': 'AOL Explorer',
|
||||||
|
'browser': function() {
|
||||||
|
return /America Online Browser/.test(ua)
|
||||||
|
},
|
||||||
|
'version': function() {
|
||||||
|
return ua.match(/rev(\d+(?:\.\d+)+)/)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Flock <http://www.flock.com/>
|
||||||
|
'name': 'Flock',
|
||||||
|
'browser': function() {
|
||||||
|
return /Flock/.test(ua)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Camino <http://www.caminobrowser.org/>
|
||||||
|
'name': 'Camino',
|
||||||
|
'browser': function() {
|
||||||
|
return /Camino/.test(ve)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Firefox <http://www.mozilla.com/firefox/>
|
||||||
|
'name': 'Firefox',
|
||||||
|
'browser': function() {
|
||||||
|
return /Firefox/.test(ua)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Netscape <http://browser.netscape.com/>
|
||||||
|
'name': 'Netscape',
|
||||||
|
'browser': function() {
|
||||||
|
return /Netscape/.test(ua)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Internet Explorer <http://www.microsoft.com/windows/ie/>
|
||||||
|
// <http://www.microsoft.com/mac/ie/>
|
||||||
|
'identifier': 'msie',
|
||||||
|
'name': 'Internet Explorer',
|
||||||
|
'browser': function() {
|
||||||
|
return /MSIE/.test(ua)
|
||||||
|
},
|
||||||
|
'version': function() {
|
||||||
|
return ua.match(
|
||||||
|
/MSIE (\d+(?:\.\d+)+(?:b\d*)?)/
|
||||||
|
)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Mozilla <http://www.mozilla.org/products/mozilla1.x/>
|
||||||
|
'name': 'Mozilla',
|
||||||
|
'browser': function() {
|
||||||
|
return /Gecko|Mozilla/.test(ua)
|
||||||
|
},
|
||||||
|
'version': function() {
|
||||||
|
return ua.match(/rv:(\d+(?:\.\d+)+)/);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
i < data.length;
|
||||||
|
i++
|
||||||
|
) {
|
||||||
|
if( data[i].browser() ) { // we have a match
|
||||||
|
// If the identifier is not explicitly set, use a lowercase
|
||||||
|
// version of the given name.
|
||||||
|
var identifier = data[i].identifier ? data[i].identifier
|
||||||
|
: data[i].name.toLowerCase();
|
||||||
|
|
||||||
|
// Make a note that this browser was detected.
|
||||||
|
Private[ identifier ] = true;
|
||||||
|
|
||||||
|
// $.browser.browser() will now return the correct browser.
|
||||||
|
Private.browser = data[i].name;
|
||||||
|
|
||||||
|
var result;
|
||||||
|
if( data[i].version != undefined && (result = data[i].version()) ) {
|
||||||
|
// Use the explicitly set test for browser version.
|
||||||
|
Private.version.string = result[1];
|
||||||
|
Private.version.number = parseFloat( result[1] );
|
||||||
|
} else {
|
||||||
|
// Otherwise use the default test which searches for the
|
||||||
|
// version number after the browser name in the user agent
|
||||||
|
// string.
|
||||||
|
var re = new RegExp(
|
||||||
|
data[i].name + '(?:\\s|\\/)(\\d+(?:\\.\\d+)+(?:(?:a|b)\\d*)?)'
|
||||||
|
);
|
||||||
|
|
||||||
|
result = ua.match(re);
|
||||||
|
if( result != undefined ) {
|
||||||
|
Private.version.string = result[1];
|
||||||
|
Private.version.number = parseFloat( result[1] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Once we've detected the browser there is no need to check the
|
||||||
|
// others.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loop over the items in 'data' trying to find a operating system match
|
||||||
|
* with the test in data[i].os().
|
||||||
|
*
|
||||||
|
* 'name': A string containing the full name of the operating
|
||||||
|
* system.
|
||||||
|
* 'identifier': By default this is a lowercase version of 'name', but
|
||||||
|
* this can be overwritten by explicitly defining an
|
||||||
|
* 'identifier'.
|
||||||
|
* 'OS': A function that returns a boolean value indicating
|
||||||
|
* whether or not the given operating system is detected.
|
||||||
|
*/
|
||||||
|
for( var i = 0, // counter
|
||||||
|
pl = navigator.platform, // the navigator's platform string
|
||||||
|
data = [ // OS data and tests
|
||||||
|
{ // Microsoft Windows <http://www.microsoft.com/windows/>
|
||||||
|
'identifier': 'win',
|
||||||
|
'name': 'Windows',
|
||||||
|
'OS': function() {
|
||||||
|
return /Win/.test(pl)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Apple Mac OS <http://www.apple.com/macos/>
|
||||||
|
'name': 'Mac',
|
||||||
|
'OS': function() {
|
||||||
|
return /Mac/.test(pl)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ // Linux <http://www.linux.org/>
|
||||||
|
'name': 'Linux',
|
||||||
|
'OS': function() {
|
||||||
|
return /Linux/.test(pl)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
];
|
||||||
|
i < data.length;
|
||||||
|
i++
|
||||||
|
) {
|
||||||
|
if( data[i].OS() ) { // we have a match
|
||||||
|
// If the identifier is not explicitly set, use a lowercase
|
||||||
|
// version of the given name.
|
||||||
|
var identifier = data[i].identifier ? data[i].identifier
|
||||||
|
: data[i].name.toLowerCase();
|
||||||
|
|
||||||
|
// Make a note that the OS was detected.
|
||||||
|
Private[ identifier ] = true;
|
||||||
|
|
||||||
|
// $.browser.OS() will now return the correct OS.
|
||||||
|
Private.OS = data[i].name;
|
||||||
|
|
||||||
|
// Once we've detected the browser there is no need to check the
|
||||||
|
// others.
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}();
|
153
web/js/lib/.svn/text-base/custom-form-elements.js.svn-base
Normal file
|
@ -0,0 +1,153 @@
|
||||||
|
/*
|
||||||
|
|
||||||
|
CUSTOM FORM ELEMENTS
|
||||||
|
|
||||||
|
Created by Ryan Fait
|
||||||
|
www.ryanfait.com
|
||||||
|
|
||||||
|
The only things you may need to change in this file are the following
|
||||||
|
variables: checkboxHeight, radioHeight and selectWidth (lines 24, 25, 26)
|
||||||
|
|
||||||
|
The numbers you set for checkboxHeight and radioHeight should be one quarter
|
||||||
|
of the total height of the image want to use for checkboxes and radio
|
||||||
|
buttons. Both images should contain the four stages of both inputs stacked
|
||||||
|
on top of each other in this order: unchecked, unchecked-clicked, checked,
|
||||||
|
checked-clicked.
|
||||||
|
|
||||||
|
You may need to adjust your images a bit if there is a slight vertical
|
||||||
|
movement during the different stages of the button activation.
|
||||||
|
|
||||||
|
The value of selectWidth should be the width of your select list image.
|
||||||
|
|
||||||
|
Visit http://ryanfait.com/ for more information.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
var checkboxHeight = "25";
|
||||||
|
var radioHeight = "25";
|
||||||
|
var selectWidth = "210";
|
||||||
|
|
||||||
|
|
||||||
|
/* No need to change anything after this */
|
||||||
|
|
||||||
|
|
||||||
|
document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; } .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>');
|
||||||
|
|
||||||
|
var Custom = {
|
||||||
|
init: function() {
|
||||||
|
var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
|
||||||
|
for(a = 0; a < inputs.length; a++) {
|
||||||
|
if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") {
|
||||||
|
span[a] = document.createElement("span");
|
||||||
|
span[a].className = inputs[a].type;
|
||||||
|
|
||||||
|
if(inputs[a].checked == true) {
|
||||||
|
if(inputs[a].type == "checkbox") {
|
||||||
|
position = "0 -" + (checkboxHeight*2) + "px";
|
||||||
|
span[a].style.backgroundPosition = position;
|
||||||
|
} else {
|
||||||
|
position = "0 -" + (radioHeight*2) + "px";
|
||||||
|
span[a].style.backgroundPosition = position;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inputs[a].parentNode.insertBefore(span[a], inputs[a]);
|
||||||
|
inputs[a].onchange = Custom.clear;
|
||||||
|
if(!inputs[a].getAttribute("disabled")) {
|
||||||
|
span[a].onmousedown = Custom.pushed;
|
||||||
|
span[a].onmouseup = Custom.check;
|
||||||
|
} else {
|
||||||
|
span[a].className = span[a].className += " disabled";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
inputs = document.getElementsByTagName("select");
|
||||||
|
for(a = 0; a < inputs.length; a++) {
|
||||||
|
try{
|
||||||
|
fb.log($(inputs[a]).hasClass("styled"));
|
||||||
|
if($(inputs[a]).hasClass("styled")) {
|
||||||
|
option = inputs[a].getElementsByTagName("option");
|
||||||
|
active = option[0].childNodes[0].nodeValue;
|
||||||
|
textnode = document.createTextNode(active);
|
||||||
|
for(b = 0; b < option.length; b++) {
|
||||||
|
if(option[b].selected == true) {
|
||||||
|
textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
span[a] = document.createElement("span");
|
||||||
|
span[a].className = "select";
|
||||||
|
span[a].id = "select-" + inputs[a].name + a;
|
||||||
|
span[a].appendChild(textnode);
|
||||||
|
inputs[a].parentNode.insertBefore(span[a], inputs[a]);
|
||||||
|
inputs[a].id = inputs[a].name + a;
|
||||||
|
if(!inputs[a].getAttribute("disabled")) {
|
||||||
|
inputs[a].onchange = Custom.choose;
|
||||||
|
} else {
|
||||||
|
inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}catch(e){fb.error(e);}
|
||||||
|
}
|
||||||
|
document.onmouseup = Custom.clear;
|
||||||
|
},
|
||||||
|
pushed: function() {
|
||||||
|
element = this.nextSibling;
|
||||||
|
if(element.checked == true && element.type == "checkbox") {
|
||||||
|
this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
|
||||||
|
} else if(element.checked == true && element.type == "radio") {
|
||||||
|
this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
|
||||||
|
} else if(element.checked != true && element.type == "checkbox") {
|
||||||
|
this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
|
||||||
|
} else {
|
||||||
|
this.style.backgroundPosition = "0 -" + radioHeight + "px";
|
||||||
|
}
|
||||||
|
},
|
||||||
|
check: function() {
|
||||||
|
element = this.nextSibling;
|
||||||
|
if(element.checked == true && element.type == "checkbox") {
|
||||||
|
this.style.backgroundPosition = "0 0";
|
||||||
|
element.checked = false;
|
||||||
|
} else {
|
||||||
|
if(element.type == "checkbox") {
|
||||||
|
this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
|
||||||
|
} else {
|
||||||
|
this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
|
||||||
|
group = this.nextSibling.name;
|
||||||
|
inputs = document.getElementsByTagName("input");
|
||||||
|
for(a = 0; a < inputs.length; a++) {
|
||||||
|
if(inputs[a].name == group && inputs[a] != this.nextSibling) {
|
||||||
|
inputs[a].previousSibling.style.backgroundPosition = "0 0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
element.checked = true;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
clear: function() {
|
||||||
|
inputs = document.getElementsByTagName("input");
|
||||||
|
for(var b = 0; b < inputs.length; b++) {
|
||||||
|
if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "styled") {
|
||||||
|
inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
|
||||||
|
} else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") {
|
||||||
|
inputs[b].previousSibling.style.backgroundPosition = "0 0";
|
||||||
|
} else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "styled") {
|
||||||
|
inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
|
||||||
|
} else if(inputs[b].type == "radio" && inputs[b].className == "styled") {
|
||||||
|
inputs[b].previousSibling.style.backgroundPosition = "0 0";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
choose: function() {
|
||||||
|
option = this.getElementsByTagName("option");
|
||||||
|
for(d = 0; d < option.length; d++) {
|
||||||
|
if(option[d].selected == true) {
|
||||||
|
//
|
||||||
|
var expr = '#select-' + this.id;
|
||||||
|
fb.log(expr);
|
||||||
|
$(expr).text(option[d].childNodes[0].nodeValue);
|
||||||
|
// bad!
|
||||||
|
//document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
window.onload = Custom.init;
|
167
web/js/lib/.svn/text-base/jquery-1.4.4.min.js.svn-base
Normal file
|
@ -0,0 +1,167 @@
|
||||||
|
/*!
|
||||||
|
* jQuery JavaScript Library v1.4.4
|
||||||
|
* http://jquery.com/
|
||||||
|
*
|
||||||
|
* Copyright 2010, John Resig
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* Includes Sizzle.js
|
||||||
|
* http://sizzlejs.com/
|
||||||
|
* Copyright 2010, The Dojo Foundation
|
||||||
|
* Released under the MIT, BSD, and GPL Licenses.
|
||||||
|
*
|
||||||
|
* Date: Thu Nov 11 19:04:53 2010 -0500
|
||||||
|
*/
|
||||||
|
(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h=
|
||||||
|
h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;k<J.length;k++){h=J[k];h.origType.replace(X,"")===a.type?f.push(h.selector):J.splice(k--,1)}f=c(a.target).closest(f,a.currentTarget);o=0;for(x=f.length;o<x;o++){r=f[o];for(k=0;k<J.length;k++){h=J[k];if(r.selector===h.selector&&(!A||A.test(h.namespace))){l=r.elem;e=null;if(h.preType==="mouseenter"||
|
||||||
|
h.preType==="mouseleave"){a.type=h.preType;e=c(a.relatedTarget).closest(h.selector)[0]}if(!e||e!==l)C.push({elem:l,handleObj:h,level:r.level})}}}o=0;for(x=C.length;o<x;o++){f=C[o];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La,
|
||||||
|
"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,
|
||||||
|
e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,
|
||||||
|
"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+
|
||||||
|
a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,
|
||||||
|
C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j,
|
||||||
|
s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,
|
||||||
|
j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length},
|
||||||
|
toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j===
|
||||||
|
-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false;
|
||||||
|
if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K<Q;K++)if((j=arguments[K])!=null)for(s in j){v=G[s];z=j[s];if(G!==z)if(ga&&z&&(b.isPlainObject(z)||(H=b.isArray(z)))){if(H){H=false;v=v&&b.isArray(v)?v:[]}else v=v&&b.isPlainObject(v)?v:{};G[s]=b.extend(ga,v,z)}else if(z!==B)G[s]=z}return G};b.extend({noConflict:function(j){E.$=e;if(j)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(j){j===true&&b.readyWait--;
|
||||||
|
if(!b.readyWait||j!==true&&!b.isReady){if(!t.body)return setTimeout(b.ready,1);b.isReady=true;if(!(j!==true&&--b.readyWait>0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload",
|
||||||
|
b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&&
|
||||||
|
!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&&
|
||||||
|
l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H<G;){if(s.apply(j[H++],v)===false)break}else if(K)for(z in j){if(s.call(j[z],
|
||||||
|
z,j[z])===false)break}else for(v=j[0];H<G&&s.call(v,H,v)!==false;v=j[++H]);return j},trim:O?function(j){return j==null?"":O.call(j)}:function(j){return j==null?"":j.toString().replace(k,"").replace(o,"")},makeArray:function(j,s){var v=s||[];if(j!=null){var z=b.type(j);j.length==null||z==="string"||z==="function"||z==="regexp"||b.isWindow(j)?M.call(v,j):b.merge(v,j)}return v},inArray:function(j,s){if(s.indexOf)return s.indexOf(j);for(var v=0,z=s.length;v<z;v++)if(s[v]===j)return v;return-1},merge:function(j,
|
||||||
|
s){var v=j.length,z=0;if(typeof s.length==="number")for(var H=s.length;z<H;z++)j[v++]=s[z];else for(;s[z]!==B;)j[v++]=s[z++];j.length=v;return j},grep:function(j,s,v){var z=[],H;v=!!v;for(var G=0,K=j.length;G<K;G++){H=!!s(j[G],G);v!==H&&z.push(j[G])}return z},map:function(j,s,v){for(var z=[],H,G=0,K=j.length;G<K;G++){H=s(j[G],G,v);if(H!=null)z[z.length]=H}return z.concat.apply([],z)},guid:1,proxy:function(j,s,v){if(arguments.length===2)if(typeof s==="string"){v=j;j=v[s];s=B}else if(s&&!b.isFunction(s)){v=
|
||||||
|
s;s=B}if(!s&&j)s=function(){return j.apply(v||this,arguments)};if(j)s.guid=j.guid=j.guid||s.guid||b.guid++;return s},access:function(j,s,v,z,H,G){var K=j.length;if(typeof s==="object"){for(var Q in s)b.access(j,Q,s[Q],z,H,v);return j}if(v!==B){z=!G&&z&&b.isFunction(v);for(Q=0;Q<K;Q++)H(j[Q],s,z?v.call(j[Q],Q,H(j[Q],s)):v,G);return j}return K?H(j[0],s):B},now:function(){return(new Date).getTime()},uaMatch:function(j){j=j.toLowerCase();j=L.exec(j)||g.exec(j)||i.exec(j)||j.indexOf("compatible")<0&&n.exec(j)||
|
||||||
|
[];return{browser:j[1]||"",version:j[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(j,s){R["[object "+s+"]"]=s.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=m.version}if(b.browser.webkit)b.browser.safari=true;if(D)b.inArray=function(j,s){return D.call(s,j)};if(!/\s/.test("\u00a0")){k=/^[\s\xA0]+/;o=/[\s\xA0]+$/}f=b(t);if(t.addEventListener)u=function(){t.removeEventListener("DOMContentLoaded",u,
|
||||||
|
false);b.ready()};else if(t.attachEvent)u=function(){if(t.readyState==="complete"){t.detachEvent("onreadystatechange",u);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=t.documentElement,b=t.createElement("script"),d=t.createElement("div"),e="script"+c.now();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"),
|
||||||
|
k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false,
|
||||||
|
scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent=
|
||||||
|
false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom=
|
||||||
|
1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display=
|
||||||
|
"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h=
|
||||||
|
c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);
|
||||||
|
else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h<l;h++){f=e[h].name;if(f.indexOf("data-")===0){f=f.substr(5);ka(this[0],f,d[f])}}}return d}else if(typeof a==="object")return this.each(function(){c.data(this,
|
||||||
|
a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(b===B){d=this.triggerHandler("getData"+k[1]+"!",[k[0]]);if(d===B&&this.length){d=c.data(this[0],a);d=ka(this[0],a,d)}return d===B&&k[1]?this.data(k[0]):d}else return this.each(function(){var o=c(this),x=[k[0],b];o.triggerHandler("setData"+k[1]+"!",x);c.data(this,a,b);o.triggerHandler("changeData"+k[1]+"!",x)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var e=
|
||||||
|
c.data(a,b);if(!d)return e||[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===B)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,
|
||||||
|
a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var sa=/[\n\t]/g,ha=/\s+/,Sa=/\r/g,Ta=/^(?:href|src|style)$/,Ua=/^(?:button|input)$/i,Va=/^(?:button|input|object|select|textarea)$/i,Wa=/^a(?:rea)?$/i,ta=/^(?:radio|checkbox)$/i;c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",
|
||||||
|
colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};c.fn.extend({attr:function(a,b){return c.access(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(x){var r=c(this);r.addClass(a.call(this,x,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===
|
||||||
|
1)if(f.className){for(var h=" "+f.className+" ",l=f.className,k=0,o=b.length;k<o;k++)if(h.indexOf(" "+b[k]+" ")<0)l+=" "+b[k];f.className=c.trim(l)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(o){var x=c(this);x.removeClass(a.call(this,o,x.attr("class")))});if(a&&typeof a==="string"||a===B)for(var b=(a||"").split(ha),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(sa," "),
|
||||||
|
l=0,k=b.length;l<k;l++)h=h.replace(" "+b[l]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,l=c(this),k=b,o=a.split(ha);f=o[h++];){k=e?k:!l.hasClass(f);l[k?"addClass":"removeClass"](f)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,
|
||||||
|
"__className__",this.className);this.className=this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(sa," ").indexOf(a)>-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";
|
||||||
|
if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var l=f[h];if(l.selected&&(c.support.optDisabled?!l.disabled:l.getAttribute("disabled")===null)&&(!l.parentNode.disabled||!c.nodeName(l.parentNode,"optgroup"))){a=c(l).val();if(b)return a;d.push(a)}}return d}if(ta.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Sa,"")}return B}var k=c.isFunction(a);return this.each(function(o){var x=c(this),r=a;if(this.nodeType===1){if(k)r=
|
||||||
|
a.call(this,o,x.val());if(r==null)r="";else if(typeof r==="number")r+="";else if(c.isArray(r))r=c.map(r,function(C){return C==null?"":C+""});if(c.isArray(r)&&ta.test(this.type))this.checked=c.inArray(x.val(),r)>=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},
|
||||||
|
attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&
|
||||||
|
b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0};
|
||||||
|
c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,
|
||||||
|
arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid=
|
||||||
|
d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+
|
||||||
|
c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h<A.length;h++){C=A[h];if(d.guid===C.guid){if(k||x.test(C.namespace)){e==null&&A.splice(h--,1);r.remove&&r.remove.call(a,C)}if(e!=null)break}}if(A.length===0||e!=null&&A.length===1){if(!r.teardown||r.teardown.call(a,o)===false)c.removeEvent(a,f,w.handle);delete I[f]}}else for(h=0;h<A.length;h++){C=A[h];if(k||x.test(C.namespace)){c.event.remove(a,r,C.handler,h);A.splice(h--,1)}}}if(c.isEmptyObject(I)){if(b=
|
||||||
|
w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,J);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===
|
||||||
|
8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k===
|
||||||
|
"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+
|
||||||
|
d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f<l;f++){var k=d[f];if(b||e.test(k.namespace)){a.handler=k.handler;a.data=k.data;a.handleObj=k;k=k.handler.apply(this,h);if(k!==B){a.result=k;if(k===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
|
||||||
|
fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||t;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=t.documentElement;d=t.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
|
||||||
|
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(a.which==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==B)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ka,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
|
||||||
|
Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=t.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=
|
||||||
|
c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ca;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ca;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ca;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
|
||||||
|
var va=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},wa=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?wa:va,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?wa:va)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
|
||||||
|
"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=B;return la("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=B;return la("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
|
||||||
|
xa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired=
|
||||||
|
B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type===
|
||||||
|
"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]===
|
||||||
|
0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h<k;h++)c.event.add(this[h],d,l,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
|
||||||
|
a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.result}},toggle:function(a){for(var b=arguments,d=
|
||||||
|
1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var ya={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var l,k=0,o,x,r=h||this.selector;h=h?this:c(this.context);if(typeof d===
|
||||||
|
"object"&&!d.preventDefault){for(l in d)h[b](l,e,d[l],r);return this}if(c.isFunction(e)){f=e;e=B}for(d=(d||"").split(" ");(l=d[k++])!=null;){o=X.exec(l);x="";if(o){x=o[0];l=l.replace(X,"")}if(l==="hover")d.push("mouseenter"+x,"mouseleave"+x);else{o=l;if(l==="focus"||l==="blur"){d.push(ya[l]+x);l+=x}else l=(ya[l]||l)+x;if(b==="live"){x=0;for(var A=h.length;x<A;x++)c.event.add(h[x],"live."+Y(l,r),{data:e,selector:r,handler:f,origType:l,origHandler:f,preType:o})}else h.unbind("live."+Y(l,r),f)}}return this}});
|
||||||
|
c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){c.fn[b]=function(d,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});
|
||||||
|
(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1&&!q){y.sizcache=n;y.sizset=p}if(y.nodeName.toLowerCase()===i){F=y;break}y=y[g]}m[p]=F}}}function b(g,i,n,m,p,q){p=0;for(var u=m.length;p<u;p++){var y=m[p];if(y){var F=false;for(y=y[g];y;){if(y.sizcache===n){F=m[y.sizset];break}if(y.nodeType===1){if(!q){y.sizcache=n;y.sizset=p}if(typeof i!=="string"){if(y===i){F=true;break}}else if(k.filter(i,
|
||||||
|
[y]).length>0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3];
|
||||||
|
break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr,
|
||||||
|
q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h=
|
||||||
|
l;g.sort(w);if(h)for(var i=1;i<g.length;i++)g[i]===g[i-1]&&g.splice(i--,1)}return g};k.matches=function(g,i){return k(g,null,null,i)};k.matchesSelector=function(g,i){return k(i,null,null,[g]).length>0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p<q;p++){var u,y=o.order[p];if(u=o.leftMatch[y].exec(g)){var F=u[1];u.splice(1,1);if(F.substr(F.length-1)!=="\\"){u[1]=(u[1]||"").replace(/\\/g,"");m=o.find[y](u,i,n);if(m!=null){g=g.replace(o.match[y],"");break}}}}m||(m=i.getElementsByTagName("*"));
|
||||||
|
return{set:m,expr:g}};k.filter=function(g,i,n,m){for(var p,q,u=g,y=[],F=i,M=i&&i[0]&&k.isXML(i[0]);g&&i.length;){for(var N in o.filter)if((p=o.leftMatch[N].exec(g))!=null&&p[2]){var O,D,R=o.filter[N];D=p[1];q=false;p.splice(1,1);if(D.substr(D.length-1)!=="\\"){if(F===y)y=[];if(o.preFilter[N])if(p=o.preFilter[N](p,F,n,y,m,M)){if(p===true)continue}else q=O=true;if(p)for(var j=0;(D=F[j])!=null;j++)if(D){O=R(D,p,j,F);var s=m^!!O;if(n&&O!=null)if(s)q=true;else F[j]=false;else if(s){y.push(D);q=true}}if(O!==
|
||||||
|
B){n||(F=y);g=g.replace(o.match[N],"");if(!q)return[];break}}}if(g===u)if(q==null)k.error(g);else break;u=g}return F};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var o=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+\-]*)\))?/,
|
||||||
|
POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},relative:{"+":function(g,i){var n=typeof i==="string",m=n&&!/\W/.test(i);n=n&&!m;if(m)i=i.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=n||q&&q.nodeName.toLowerCase()===
|
||||||
|
i?q||false:q===i}n&&k.filter(i,g,true)},">":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p<q;p++){if(n=g[p]){n=n.parentNode;g[p]=n.nodeName.toLowerCase()===i?n:false}}else{for(;p<q;p++)if(n=g[p])g[p]=m?n.parentNode:n.parentNode===i;m&&k.filter(i,g,true)}},"":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=i=i.toLowerCase();q=a}q("parentNode",i,p,g,m,n)},"~":function(g,i,n){var m,p=e++,q=b;if(typeof i==="string"&&!/\W/.test(i)){m=
|
||||||
|
i=i.toLowerCase();q=a}q("previousSibling",i,p,g,m,n)}},find:{ID:function(g,i,n){if(typeof i.getElementById!=="undefined"&&!n)return(g=i.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,i){if(typeof i.getElementsByName!=="undefined"){for(var n=[],m=i.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&n.push(m[p]);return n.length===0?null:n}},TAG:function(g,i){return i.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,i,n,m,p,q){g=" "+g[1].replace(/\\/g,
|
||||||
|
"")+" ";if(q)return g;q=0;for(var u;(u=i[q])!=null;q++)if(u)if(p^(u.className&&(" "+u.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n,
|
||||||
|
m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===
|
||||||
|
true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===
|
||||||
|
g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return i<n[3]-0},gt:function(g,i,n){return i>n[3]-0},nth:function(g,i,n){return n[3]-
|
||||||
|
0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n<m;n++)if(i[n]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,i){var n=i[1],m=g;switch(n){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(n===
|
||||||
|
"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":n=i[2];var p=i[3];if(n===1&&p===0)return true;var q=i[0],u=g.parentNode;if(u&&(u.sizcache!==q||!g.nodeIndex)){var y=0;for(m=u.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++y;u.sizcache=q}m=g.nodeIndex-p;return n===0?m===0:m%n===0&&m/n>=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
|
||||||
|
i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]];
|
||||||
|
if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m,
|
||||||
|
g);else if(typeof g.length==="number")for(var p=g.length;n<p;n++)m.push(g[n]);else for(;g[n];n++)m.push(g[n]);return m}}var w,I;if(t.documentElement.compareDocumentPosition)w=function(g,i){if(g===i){h=true;return 0}if(!g.compareDocumentPosition||!i.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(i)&4?-1:1};else{w=function(g,i){var n,m,p=[],q=[];n=g.parentNode;m=i.parentNode;var u=n;if(g===i){h=true;return 0}else if(n===m)return I(g,i);else if(n){if(!m)return 1}else return-1;
|
||||||
|
for(;u;){p.unshift(u);u=u.parentNode}for(u=m;u;){q.unshift(u);u=u.parentNode}n=p.length;m=q.length;for(u=0;u<n&&u<m;u++)if(p[u]!==q[u])return I(p[u],q[u]);return u===n?I(g,q[u],-1):I(p[u],i,1)};I=function(g,i,n){if(g===i)return n;for(g=g.nextSibling;g;){if(g===i)return-1;g=g.nextSibling}return 1}}k.getText=function(g){for(var i="",n,m=0;g[m];m++){n=g[m];if(n.nodeType===3||n.nodeType===4)i+=n.nodeValue;else if(n.nodeType!==8)i+=k.getText(n.childNodes)}return i};(function(){var g=t.createElement("div"),
|
||||||
|
i="script"+(new Date).getTime(),n=t.documentElement;g.innerHTML="<a name='"+i+"'/>";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g);
|
||||||
|
n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&&
|
||||||
|
function(){var g=k,i=t.createElement("div");i.innerHTML="<p class='TEST'></p>";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F||
|
||||||
|
p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g=
|
||||||
|
t.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition?
|
||||||
|
function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n<u;n++)k(g,q[n],m);return k.filter(p,m)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=k.getText;c.isXMLDoc=k.isXML;
|
||||||
|
c.contains=k.contains})();var Za=/Until$/,$a=/^(?:parents|prevUntil|prevAll)/,ab=/,/,Na=/^.[^:#\[\.,]*$/,bb=Array.prototype.slice,cb=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var l=0;l<d;l++)if(b[l]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},
|
||||||
|
not:function(a){return this.pushStack(ma(this,a,false),"not",a)},filter:function(a){return this.pushStack(ma(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h=
|
||||||
|
h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(l?l.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context):
|
||||||
|
c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,
|
||||||
|
2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,
|
||||||
|
b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&
|
||||||
|
e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/<tbody/i,eb=/<|&#?\w+;/,Ca=/<(?:script|object|embed|option|style)/i,Da=/checked\s*(?:[^=]|=\s*.checked.)/i,fb=/\=([^="'>\s]+\/)>/g,P={option:[1,
|
||||||
|
"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
|
||||||
|
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
|
||||||
|
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
|
||||||
|
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
|
||||||
|
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
|
||||||
|
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null;
|
||||||
|
else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1></$2>");try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(e){this.empty().append(a)}}else c.isFunction(a)?this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=
|
||||||
|
c(this),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){var e,f,h,l=a[0],k=[];if(!c.support.checkClone&&arguments.length===3&&typeof l==="string"&&Da.test(l))return this.each(function(){c(this).domManip(a,
|
||||||
|
b,d,true)});if(c.isFunction(l))return this.each(function(x){var r=c(this);a[0]=l.call(this,x,b?r.html():B);r.domManip(a,b,d)});if(this[0]){e=l&&l.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);h=e.fragment;if(f=h.childNodes.length===1?h=h.firstChild:h.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var o=this.length;f<o;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):
|
||||||
|
this[f]:this[f],f>0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",
|
||||||
|
prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f<h;f++){var l=(f>0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument||
|
||||||
|
b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1></$2>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]==="<table>"&&!x?r.childNodes:[];for(o=k.length-
|
||||||
|
1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));
|
||||||
|
d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i,
|
||||||
|
jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,
|
||||||
|
zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),
|
||||||
|
h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b);
|
||||||
|
if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=
|
||||||
|
d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left;
|
||||||
|
e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
|
||||||
|
ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b===
|
||||||
|
"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("<div>").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&
|
||||||
|
!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
|
||||||
|
getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
|
||||||
|
script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
|
||||||
|
!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache=
|
||||||
|
false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset;
|
||||||
|
A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type",
|
||||||
|
b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
|
||||||
|
c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
|
||||||
|
c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]=
|
||||||
|
encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",
|
||||||
|
[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),
|
||||||
|
e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});
|
||||||
|
if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",
|
||||||
|
3),a,b,d);else{d=0;for(var e=this.length;d<e;d++){a=this[d];b=a.style.display;if(!c.data(a,"olddisplay")&&b==="none")b=a.style.display="";b===""&&c.css(a,"display")==="none"&&c.data(a,"olddisplay",qa(a.nodeName))}for(d=0;d<e;d++){a=this[d];b=a.style.display;if(b===""||b==="none")a.style.display=c.data(a,"olddisplay")||""}return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",
|
||||||
|
d)}for(a=0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,
|
||||||
|
d,e);if(c.isEmptyObject(a))return this.each(f.complete);return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),l,k=this.nodeType===1,o=k&&c(this).is(":hidden"),x=this;for(l in a){var r=c.camelCase(l);if(l!==r){a[r]=a[l];delete a[l];l=r}if(a[l]==="hide"&&o||a[l]==="show"&&!o)return h.complete.call(this);if(k&&(l==="height"||l==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(qa(this.nodeName)===
|
||||||
|
"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[l])){(h.specialEasing=h.specialEasing||{})[l]=a[l][1];a[l]=a[l][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(A,C){var J=new c.fx(x,h,A);if(vb.test(C))J[C==="toggle"?o?"show":"hide":C](a);else{var w=wb.exec(C),I=J.cur()||0;if(w){var L=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(x,A,(L||1)+g);I=(L||
|
||||||
|
1)/J.cur()*I;c.style(x,A,I+g)}if(w[1])L=(w[1]==="-="?-1:1)*L+I;J.custom(I,L,g)}else J.custom(I,C,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
|
||||||
|
d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
|
||||||
|
Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)}
|
||||||
|
var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;
|
||||||
|
this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
|
||||||
|
this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=
|
||||||
|
c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||c.fx.stop()},interval:13,stop:function(){clearInterval(ba);ba=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===
|
||||||
|
b.elem}).length};var xb=/^t(?:able|d|h)$/i,Ia=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in t.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(l){c.offset.setOffset(this,a,l)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=fa(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
|
||||||
|
h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.clientLeft||b.clientLeft||0)}}:function(a){var b=this[0];if(a)return this.each(function(x){c.offset.setOffset(this,a,x)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d,e=b.offsetParent,f=b.ownerDocument,h=f.documentElement,l=f.body;d=(f=f.defaultView)?f.getComputedStyle(b,null):b.currentStyle;
|
||||||
|
for(var k=b.offsetTop,o=b.offsetLeft;(b=b.parentNode)&&b!==l&&b!==h;){if(c.offset.supportsFixedPosition&&d.position==="fixed")break;d=f?f.getComputedStyle(b,null):b.currentStyle;k-=b.scrollTop;o-=b.scrollLeft;if(b===e){k+=b.offsetTop;o+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&xb.test(b.nodeName))){k+=parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}e=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&d.overflow!=="visible"){k+=
|
||||||
|
parseFloat(d.borderTopWidth)||0;o+=parseFloat(d.borderLeftWidth)||0}d=d}if(d.position==="relative"||d.position==="static"){k+=l.offsetTop;o+=l.offsetLeft}if(c.offset.supportsFixedPosition&&d.position==="fixed"){k+=Math.max(h.scrollTop,l.scrollTop);o+=Math.max(h.scrollLeft,l.scrollLeft)}return{top:k,left:o}};c.offset={initialize:function(){var a=t.body,b=t.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",
|
||||||
|
height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";a.insertBefore(b,a.firstChild);d=b.firstChild;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
|
||||||
|
f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;a.removeChild(b);c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.css(a,
|
||||||
|
"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),l=c.css(a,"top"),k=c.css(a,"left"),o=e==="absolute"&&c.inArray("auto",[l,k])>-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a,
|
||||||
|
e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&&
|
||||||
|
c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
|
||||||
|
c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+
|
||||||
|
b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window);
|
|
@ -0,0 +1,285 @@
|
||||||
|
/*!
|
||||||
|
* jQuery UI 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI
|
||||||
|
*/
|
||||||
|
(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.13",
|
||||||
|
keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();
|
||||||
|
b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,
|
||||||
|
"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",
|
||||||
|
function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,
|
||||||
|
outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a,"tabindex"),d=isNaN(b);
|
||||||
|
return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=
|
||||||
|
0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
|
||||||
|
;/*!
|
||||||
|
* jQuery UI Widget 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Widget
|
||||||
|
*/
|
||||||
|
(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
|
||||||
|
a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
|
||||||
|
e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
|
||||||
|
this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
|
||||||
|
widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
|
||||||
|
enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
|
||||||
|
;/*!
|
||||||
|
* jQuery UI Mouse 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Mouse
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.ui.widget.js
|
||||||
|
*/
|
||||||
|
(function(b){var d=false;b(document).mousedown(function(){d=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var a=this;this.element.bind("mousedown."+this.widgetName,function(c){return a._mouseDown(c)}).bind("click."+this.widgetName,function(c){if(true===b.data(c.target,a.widgetName+".preventClickEvent")){b.removeData(c.target,a.widgetName+".preventClickEvent");c.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+
|
||||||
|
this.widgetName)},_mouseDown:function(a){if(!d){this._mouseStarted&&this._mouseUp(a);this._mouseDownEvent=a;var c=this,f=a.which==1,g=typeof this.options.cancel=="string"?b(a.target).parents().add(a.target).filter(this.options.cancel).length:false;if(!f||g||!this._mouseCapture(a))return true;this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet)this._mouseDelayTimer=setTimeout(function(){c.mouseDelayMet=true},this.options.delay);if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a)){this._mouseStarted=
|
||||||
|
this._mouseStart(a)!==false;if(!this._mouseStarted){a.preventDefault();return true}}true===b.data(a.target,this.widgetName+".preventClickEvent")&&b.removeData(a.target,this.widgetName+".preventClickEvent");this._mouseMoveDelegate=function(e){return c._mouseMove(e)};this._mouseUpDelegate=function(e){return c._mouseUp(e)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);a.preventDefault();return d=true}},_mouseMove:function(a){if(b.browser.msie&&
|
||||||
|
!(document.documentMode>=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=
|
||||||
|
false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Position 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Position
|
||||||
|
*/
|
||||||
|
(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
|
||||||
|
left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
|
||||||
|
k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
|
||||||
|
m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
|
||||||
|
d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
|
||||||
|
a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
|
||||||
|
g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/
|
||||||
|
*/
|
||||||
|
jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1],
|
||||||
|
16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle,
|
||||||
|
a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d=
|
||||||
|
a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor",
|
||||||
|
"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,
|
||||||
|
0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,
|
||||||
|
211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,
|
||||||
|
d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easding:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})};
|
||||||
|
f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,
|
||||||
|
[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.13",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=
|
||||||
|
0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent();var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});
|
||||||
|
c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,
|
||||||
|
a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);
|
||||||
|
a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%",
|
||||||
|
"pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*
|
||||||
|
((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=
|
||||||
|
e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=
|
||||||
|
e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/
|
||||||
|
h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*
|
||||||
|
h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,
|
||||||
|
e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c,a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Blind 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Blind
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(b){b.effects.blind=function(c){return this.queue(function(){var a=b(this),g=["position","top","bottom","left","right"],f=b.effects.setMode(a,c.options.mode||"hide"),d=c.options.direction||"vertical";b.effects.save(a,g);a.show();var e=b.effects.createWrapper(a).css({overflow:"hidden"}),h=d=="vertical"?"height":"width";d=d=="vertical"?e.height():e.width();f=="show"&&e.css(h,0);var i={};i[h]=f=="show"?d:0;e.animate(i,c.duration,c.options.easing,function(){f=="hide"&&a.hide();b.effects.restore(a,
|
||||||
|
g);b.effects.removeWrapper(a);c.callback&&c.callback.apply(a[0],arguments);a.dequeue()})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Bounce 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Bounce
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(e){e.effects.bounce=function(b){return this.queue(function(){var a=e(this),l=["position","top","bottom","left","right"],h=e.effects.setMode(a,b.options.mode||"effect"),d=b.options.direction||"up",c=b.options.distance||20,m=b.options.times||5,i=b.duration||250;/show|hide/.test(h)&&l.push("opacity");e.effects.save(a,l);a.show();e.effects.createWrapper(a);var f=d=="up"||d=="down"?"top":"left";d=d=="up"||d=="left"?"pos":"neg";c=b.options.distance||(f=="top"?a.outerHeight({margin:true})/3:a.outerWidth({margin:true})/
|
||||||
|
3);if(h=="show")a.css("opacity",0).css(f,d=="pos"?-c:c);if(h=="hide")c/=m*2;h!="hide"&&m--;if(h=="show"){var g={opacity:1};g[f]=(d=="pos"?"+=":"-=")+c;a.animate(g,i/2,b.options.easing);c/=2;m--}for(g=0;g<m;g++){var j={},k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing);c=h=="hide"?c*2:c/2}if(h=="hide"){g={opacity:0};g[f]=(d=="pos"?"-=":"+=")+c;a.animate(g,i/2,b.options.easing,function(){a.hide();e.effects.restore(a,l);e.effects.removeWrapper(a);
|
||||||
|
b.callback&&b.callback.apply(this,arguments)})}else{j={};k={};j[f]=(d=="pos"?"-=":"+=")+c;k[f]=(d=="pos"?"+=":"-=")+c;a.animate(j,i/2,b.options.easing).animate(k,i/2,b.options.easing,function(){e.effects.restore(a,l);e.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments)})}a.queue("fx",function(){a.dequeue()});a.dequeue()})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Clip 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Clip
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(b){b.effects.clip=function(e){return this.queue(function(){var a=b(this),i=["position","top","bottom","left","right","height","width"],f=b.effects.setMode(a,e.options.mode||"hide"),c=e.options.direction||"vertical";b.effects.save(a,i);a.show();var d=b.effects.createWrapper(a).css({overflow:"hidden"});d=a[0].tagName=="IMG"?d:a;var g={size:c=="vertical"?"height":"width",position:c=="vertical"?"top":"left"};c=c=="vertical"?d.height():d.width();if(f=="show"){d.css(g.size,0);d.css(g.position,
|
||||||
|
c/2)}var h={};h[g.size]=f=="show"?c:0;h[g.position]=f=="show"?0:c/2;d.animate(h,{queue:false,duration:e.duration,easing:e.options.easing,complete:function(){f=="hide"&&a.hide();b.effects.restore(a,i);b.effects.removeWrapper(a);e.callback&&e.callback.apply(a[0],arguments);a.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Drop 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Drop
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(c){c.effects.drop=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right","opacity"],e=c.effects.setMode(a,d.options.mode||"hide"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a);var f=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var g=d.options.distance||(f=="top"?a.outerHeight({margin:true})/2:a.outerWidth({margin:true})/2);if(e=="show")a.css("opacity",0).css(f,b=="pos"?-g:g);var i={opacity:e==
|
||||||
|
"show"?1:0};i[f]=(e=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+g;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){e=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Explode 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Explode
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(j){j.effects.explode=function(a){return this.queue(function(){var c=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3,d=a.options.pieces?Math.round(Math.sqrt(a.options.pieces)):3;a.options.mode=a.options.mode=="toggle"?j(this).is(":visible")?"hide":"show":a.options.mode;var b=j(this).show().css("visibility","hidden"),g=b.offset();g.top-=parseInt(b.css("marginTop"),10)||0;g.left-=parseInt(b.css("marginLeft"),10)||0;for(var h=b.outerWidth(true),i=b.outerHeight(true),e=0;e<c;e++)for(var f=
|
||||||
|
0;f<d;f++)b.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+
|
||||||
|
e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Fade 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Fade
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Fold 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Fold
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1],
|
||||||
|
10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Highlight 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Highlight
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&&
|
||||||
|
this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Pulsate 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Pulsate
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c<times;c++){b.animate({opacity:animateTo},duration,a.options.easing);animateTo=(animateTo+1)%2}b.animate({opacity:animateTo},duration,
|
||||||
|
a.options.easing,function(){animateTo==0&&b.hide();a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()}).dequeue()})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Scale 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Scale
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(c){c.effects.puff=function(b){return this.queue(function(){var a=c(this),e=c.effects.setMode(a,b.options.mode||"hide"),g=parseInt(b.options.percent,10)||150,h=g/100,i={height:a.height(),width:a.width()};c.extend(b.options,{fade:true,mode:e,percent:e=="hide"?g:100,from:e=="hide"?i:{height:i.height*h,width:i.width*h}});a.effect("scale",b.options,b.duration,b.callback);a.dequeue()})};c.effects.scale=function(b){return this.queue(function(){var a=c(this),e=c.extend(true,{},b.options),g=c.effects.setMode(a,
|
||||||
|
b.options.mode||"effect"),h=parseInt(b.options.percent,10)||(parseInt(b.options.percent,10)==0?0:g=="hide"?0:100),i=b.options.direction||"both",f=b.options.origin;if(g!="effect"){e.origin=f||["middle","center"];e.restore=true}f={height:a.height(),width:a.width()};a.from=b.options.from||(g=="show"?{height:0,width:0}:f);h={y:i!="horizontal"?h/100:1,x:i!="vertical"?h/100:1};a.to={height:f.height*h.y,width:f.width*h.x};if(b.options.fade){if(g=="show"){a.from.opacity=0;a.to.opacity=1}if(g=="hide"){a.from.opacity=
|
||||||
|
1;a.to.opacity=0}}e.from=a.from;e.to=a.to;e.mode=g;a.effect("size",e,b.duration,b.callback);a.dequeue()})};c.effects.size=function(b){return this.queue(function(){var a=c(this),e=["position","top","bottom","left","right","width","height","overflow","opacity"],g=["position","top","bottom","left","right","overflow","opacity"],h=["width","height","overflow"],i=["fontSize"],f=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],k=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],
|
||||||
|
p=c.effects.setMode(a,b.options.mode||"effect"),n=b.options.restore||false,m=b.options.scale||"both",l=b.options.origin,j={height:a.height(),width:a.width()};a.from=b.options.from||j;a.to=b.options.to||j;if(l){l=c.effects.getBaseline(l,j);a.from.top=(j.height-a.from.height)*l.y;a.from.left=(j.width-a.from.width)*l.x;a.to.top=(j.height-a.to.height)*l.y;a.to.left=(j.width-a.to.width)*l.x}var d={from:{y:a.from.height/j.height,x:a.from.width/j.width},to:{y:a.to.height/j.height,x:a.to.width/j.width}};
|
||||||
|
if(m=="box"||m=="both"){if(d.from.y!=d.to.y){e=e.concat(f);a.from=c.effects.setTransition(a,f,d.from.y,a.from);a.to=c.effects.setTransition(a,f,d.to.y,a.to)}if(d.from.x!=d.to.x){e=e.concat(k);a.from=c.effects.setTransition(a,k,d.from.x,a.from);a.to=c.effects.setTransition(a,k,d.to.x,a.to)}}if(m=="content"||m=="both")if(d.from.y!=d.to.y){e=e.concat(i);a.from=c.effects.setTransition(a,i,d.from.y,a.from);a.to=c.effects.setTransition(a,i,d.to.y,a.to)}c.effects.save(a,n?e:g);a.show();c.effects.createWrapper(a);
|
||||||
|
a.css("overflow","hidden").css(a.from);if(m=="content"||m=="both"){f=f.concat(["marginTop","marginBottom"]).concat(i);k=k.concat(["marginLeft","marginRight"]);h=e.concat(f).concat(k);a.find("*[width]").each(function(){child=c(this);n&&c.effects.save(child,h);var o={height:child.height(),width:child.width()};child.from={height:o.height*d.from.y,width:o.width*d.from.x};child.to={height:o.height*d.to.y,width:o.width*d.to.x};if(d.from.y!=d.to.y){child.from=c.effects.setTransition(child,f,d.from.y,child.from);
|
||||||
|
child.to=c.effects.setTransition(child,f,d.to.y,child.to)}if(d.from.x!=d.to.x){child.from=c.effects.setTransition(child,k,d.from.x,child.from);child.to=c.effects.setTransition(child,k,d.to.x,child.to)}child.css(child.from);child.animate(child.to,b.duration,b.options.easing,function(){n&&c.effects.restore(child,h)})})}a.animate(a.to,{queue:false,duration:b.duration,easing:b.options.easing,complete:function(){a.to.opacity===0&&a.css("opacity",a.from.opacity);p=="hide"&&a.hide();c.effects.restore(a,
|
||||||
|
n?e:g);c.effects.removeWrapper(a);b.callback&&b.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Shake 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Shake
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(d){d.effects.shake=function(a){return this.queue(function(){var b=d(this),j=["position","top","bottom","left","right"];d.effects.setMode(b,a.options.mode||"effect");var c=a.options.direction||"left",e=a.options.distance||20,l=a.options.times||3,f=a.duration||a.options.duration||140;d.effects.save(b,j);b.show();d.effects.createWrapper(b);var g=c=="up"||c=="down"?"top":"left",h=c=="up"||c=="left"?"pos":"neg";c={};var i={},k={};c[g]=(h=="pos"?"-=":"+=")+e;i[g]=(h=="pos"?"+=":"-=")+e*2;k[g]=
|
||||||
|
(h=="pos"?"-=":"+=")+e*2;b.animate(c,f,a.options.easing);for(e=1;e<l;e++)b.animate(i,f,a.options.easing).animate(k,f,a.options.easing);b.animate(i,f,a.options.easing).animate(c,f/2,a.options.easing,function(){d.effects.restore(b,j);d.effects.removeWrapper(b);a.callback&&a.callback.apply(this,arguments)});b.queue("fx",function(){b.dequeue()});b.dequeue()})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Slide 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Slide
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(c){c.effects.slide=function(d){return this.queue(function(){var a=c(this),h=["position","top","bottom","left","right"],f=c.effects.setMode(a,d.options.mode||"show"),b=d.options.direction||"left";c.effects.save(a,h);a.show();c.effects.createWrapper(a).css({overflow:"hidden"});var g=b=="up"||b=="down"?"top":"left";b=b=="up"||b=="left"?"pos":"neg";var e=d.options.distance||(g=="top"?a.outerHeight({margin:true}):a.outerWidth({margin:true}));if(f=="show")a.css(g,b=="pos"?isNaN(e)?"-"+e:-e:e);
|
||||||
|
var i={};i[g]=(f=="show"?b=="pos"?"+=":"-=":b=="pos"?"-=":"+=")+e;a.animate(i,{queue:false,duration:d.duration,easing:d.options.easing,complete:function(){f=="hide"&&a.hide();c.effects.restore(a,h);c.effects.removeWrapper(a);d.callback&&d.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery);
|
||||||
|
;/*
|
||||||
|
* jQuery UI Effects Transfer 1.8.13
|
||||||
|
*
|
||||||
|
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
|
||||||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||||||
|
* http://jquery.org/license
|
||||||
|
*
|
||||||
|
* http://docs.jquery.com/UI/Effects/Transfer
|
||||||
|
*
|
||||||
|
* Depends:
|
||||||
|
* jquery.effects.core.js
|
||||||
|
*/
|
||||||
|
(function(e){e.effects.transfer=function(a){return this.queue(function(){var b=e(this),c=e(a.options.to),d=c.offset();c={top:d.top,left:d.left,height:c.innerHeight(),width:c.innerWidth()};d=b.offset();var f=e('<div class="ui-effects-transfer"></div>').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments);
|
||||||
|
b.dequeue()})})}})(jQuery);
|
||||||
|
;
|
209
web/js/lib/.svn/text-base/popup.js.svn-base
Normal file
|
@ -0,0 +1,209 @@
|
||||||
|
/*
|
||||||
|
* $Revision$
|
||||||
|
* $Date$
|
||||||
|
*
|
||||||
|
* Copyright (C) 1999-2009 Jive Software. All rights reserved.
|
||||||
|
*
|
||||||
|
* This software is the proprietary information of Jive Software. Use is subject to license terms.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* $ lightbox_me
|
||||||
|
* By: Buck Wilson
|
||||||
|
* Version : 2.0
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
(function($) {
|
||||||
|
|
||||||
|
$.fn.lightbox_me = function(options) {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return this.each(function() {
|
||||||
|
|
||||||
|
var
|
||||||
|
opts = $.extend({}, $.fn.lightbox_me.defaults, options),
|
||||||
|
$overlay = $('<div class="' + opts.classPrefix + '_overlay"/>'),
|
||||||
|
$self = $(this),
|
||||||
|
|
||||||
|
$iframe = $('<iframe src="' + /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' + '" style="z-index: ' + (opts.zIndex + 1) + '; display: none; border: none; margin: 0; padding: 0; position: absolute; width: 100%; height: 100%; top: 0; left: 0;"/>'),
|
||||||
|
ie6 = ($.browser.msie && $.browser.version < 7);
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------
|
||||||
|
DOM Building
|
||||||
|
---------------------------------------------------- */
|
||||||
|
if (ie6) { $('body').append($iframe) } // iframe shim for ie6, to hide select elements
|
||||||
|
$('body').append($self).append($overlay);
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------
|
||||||
|
CSS stuffs
|
||||||
|
---------------------------------------------------- */
|
||||||
|
|
||||||
|
// set css of the modal'd window
|
||||||
|
|
||||||
|
setSelfPosition();
|
||||||
|
$self.css({left: '50%', marginLeft: ($self.outerWidth() / 2) * -1, zIndex: (opts.zIndex + 3) });
|
||||||
|
|
||||||
|
|
||||||
|
// set css of the overlay
|
||||||
|
|
||||||
|
setOverlayHeight(); // pulled this into a function because it is called on window resize.
|
||||||
|
$overlay
|
||||||
|
.css({ position: 'absolute', width: '100%', top: 0, left: 0, right: 0, bottom: 0, zIndex: (opts.zIndex + 2), display: 'none' })
|
||||||
|
.css(opts.overlayCSS);
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------
|
||||||
|
Animate it in.
|
||||||
|
---------------------------------------------------- */
|
||||||
|
|
||||||
|
$overlay.fadeIn(opts.overlaySpeed, function() {
|
||||||
|
$self[opts.appearEffect](opts.lightboxSpeed, function() { setOverlayHeight(); opts.onLoad()});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------
|
||||||
|
Bind Events
|
||||||
|
---------------------------------------------------- */
|
||||||
|
|
||||||
|
$(window).resize(setOverlayHeight)
|
||||||
|
.resize(setSelfPosition)
|
||||||
|
.scroll(setSelfPosition)
|
||||||
|
.keypress(observeEscapePress);
|
||||||
|
$self.find(opts.closeSelector).add($overlay).click(function() { closeLightbox(); return false; });
|
||||||
|
$self.bind('close', closeLightbox);
|
||||||
|
$self.bind('resize', setSelfPosition);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||||
|
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
/*----------------------------------------------------
|
||||||
|
Private Functions
|
||||||
|
---------------------------------------------------- */
|
||||||
|
|
||||||
|
/* Remove or hide all elements */
|
||||||
|
function closeLightbox() {
|
||||||
|
if (opts.destroyOnClose) {
|
||||||
|
$self.add($overlay).remove();
|
||||||
|
} else {
|
||||||
|
$self.add($overlay).hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
$iframe.remove();
|
||||||
|
|
||||||
|
$(window).unbind('resize', setOverlayHeight);
|
||||||
|
$(window).unbind('resize', setSelfPosition);
|
||||||
|
|
||||||
|
opts.onClose();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Function to bind to the window to observe the escape key press */
|
||||||
|
function observeEscapePress(e) {
|
||||||
|
if(e.keyCode == 27 || (e.DOM_VK_ESCAPE == 27 && e.which==0)) closeLightbox();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the height of the overlay
|
||||||
|
: if the document height is taller than the window, then set the overlay height to the document height.
|
||||||
|
: otherwise, just set overlay height: 100%
|
||||||
|
*/
|
||||||
|
function setOverlayHeight() {
|
||||||
|
if ($(window).height() < $(document).height()) {
|
||||||
|
$overlay.css({height: $(document).height() + 'px'});
|
||||||
|
} else {
|
||||||
|
$overlay.css({height: '100%'});
|
||||||
|
if (ie6) {$('html,body').css('height','100%'); } // ie6 hack for height: 100%; TODO: handle this in IE7
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* Set the position of the modal'd window ($self)
|
||||||
|
: if $self is taller than the window, then make it absolutely positioned
|
||||||
|
: otherwise fixed
|
||||||
|
*/
|
||||||
|
function setSelfPosition() {
|
||||||
|
var s = $self[0].style;
|
||||||
|
|
||||||
|
if (($self.height() + 80 >= $(window).height()) && ($self.css('position') != 'absolute' || ie6)) {
|
||||||
|
var topOffset = $(document).scrollTop() + 40;
|
||||||
|
$self.css({position: 'absolute', top: topOffset + 'px', marginTop: 0})
|
||||||
|
if (ie6) {
|
||||||
|
s.removeExpression('top');
|
||||||
|
}
|
||||||
|
} else if ($self.height()+ 80 < $(window).height()) {
|
||||||
|
if (ie6) {
|
||||||
|
s.position = 'absolute';
|
||||||
|
if (opts.centered) {
|
||||||
|
s.setExpression('top', '(document.documentElement.clientHeight || document.body.clientHeight) / 2 - (this.offsetHeight / 2) + (blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + "px"')
|
||||||
|
s.marginTop = 0;
|
||||||
|
} else {
|
||||||
|
var top = (opts.modalCSS && opts.modalCSS.top) ? parseInt(opts.modalCSS.top) : 0;
|
||||||
|
s.setExpression('top', '((blah = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop) + '+top+') + "px"')
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (opts.centered) {
|
||||||
|
$self.css({ position: 'fixed', top: '50%', marginTop: ($self.outerHeight() / 2) * -1})
|
||||||
|
} else {
|
||||||
|
$self.css({ position: 'fixed'}).css(opts.modalCSS);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
$.fn.lightbox_me.defaults = {
|
||||||
|
|
||||||
|
// animation
|
||||||
|
appearEffect: "fadeIn",
|
||||||
|
overlaySpeed: 300,
|
||||||
|
lightboxSpeed: "fast",
|
||||||
|
|
||||||
|
// close
|
||||||
|
closeSelector: ".close",
|
||||||
|
closeClick: true,
|
||||||
|
closeEsc: true,
|
||||||
|
|
||||||
|
// behavior
|
||||||
|
destroyOnClose: false,
|
||||||
|
|
||||||
|
// callbacks
|
||||||
|
onLoad: function() {},
|
||||||
|
onClose: function() {},
|
||||||
|
|
||||||
|
// style
|
||||||
|
classPrefix: 'lb',
|
||||||
|
zIndex: 999,
|
||||||
|
centered: false,
|
||||||
|
modalCSS: {top: '40px'},
|
||||||
|
overlayCSS: {background: 'black', opacity: .6}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
})(jQuery);
|
|
@ -44,6 +44,10 @@ var Custom = {
|
||||||
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_suspend') != -1) {
|
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_suspend') != -1) {
|
||||||
span[a].className += ' do_action_toggle_suspend'; // save toggle functionality
|
span[a].className += ' do_action_toggle_suspend'; // save toggle functionality
|
||||||
}
|
}
|
||||||
|
if ($(inputs[a]).attr('class').indexOf('do_action_toggle_batch_selector') != -1) {
|
||||||
|
span[a].className += ' do_action_toggle_batch_selector'; // save toggle functionality
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if(inputs[a].checked == true) {
|
if(inputs[a].checked == true) {
|
||||||
if(inputs[a].type == "checkbox") {
|
if(inputs[a].type == "checkbox") {
|
||||||
|
|
|
@ -1,9 +1,12 @@
|
||||||
App.Pages.init = function()
|
App.Pages.init = function()
|
||||||
{
|
{
|
||||||
App.Ajax.request('MAIN.getInitial', {}, function(reply) {
|
if ('undefined' == typeof App.Env.initialParams) {
|
||||||
App.Env.initialParams = reply.data;
|
App.Ajax.request('MAIN.getInitial', {}, function(reply) {
|
||||||
App.Helpers.updateInitial();
|
App.Env.initialParams = reply.data;
|
||||||
});
|
App.Helpers.updateInitial();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
App.Pages.prepareHTML();
|
App.Pages.prepareHTML();
|
||||||
$('.section.active').removeClass('active');
|
$('.section.active').removeClass('active');
|
||||||
$('#'+App.Env.world).addClass('active');
|
$('#'+App.Env.world).addClass('active');
|
||||||
|
@ -15,7 +18,10 @@ App.Pages.init = function()
|
||||||
|
|
||||||
App.Pages.prepareHTML = function()
|
App.Pages.prepareHTML = function()
|
||||||
{
|
{
|
||||||
|
$('#actions-toolbar .stats-subbar').remove();
|
||||||
|
$('#actions-toolbar .do_action_new_entry').removeClass('hidden');
|
||||||
$('.active').removeClass('active');
|
$('.active').removeClass('active');
|
||||||
|
$('.row-filters').removeClass('hidden');
|
||||||
if ('undefined' != typeof App.Pages[App.Env.world].prepareHTML) {
|
if ('undefined' != typeof App.Pages[App.Env.world].prepareHTML) {
|
||||||
App.Pages[App.Env.world].prepareHTML();
|
App.Pages[App.Env.world].prepareHTML();
|
||||||
}
|
}
|
||||||
|
@ -24,6 +30,8 @@ App.Pages.prepareHTML = function()
|
||||||
}
|
}
|
||||||
$('#new-entry-keyword').text(App.Helpers.getHumanTabName());
|
$('#new-entry-keyword').text(App.Helpers.getHumanTabName());
|
||||||
document.title = 'Vesta | ' + App.Helpers.getHumanTabName();
|
document.title = 'Vesta | ' + App.Helpers.getHumanTabName();
|
||||||
|
|
||||||
|
App.Tmp[App.Env.world + '_selected_records'] = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
App.Pages.DNS.showSubform = function(ref)
|
App.Pages.DNS.showSubform = function(ref)
|
||||||
|
@ -123,3 +131,33 @@ App.Pages.BACKUPS.prepareHTML = function()
|
||||||
//$('#content').html(App.HTML.Build.backup_list(reply.data));
|
//$('#content').html(App.HTML.Build.backup_list(reply.data));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
App.Pages.loadStats = function()
|
||||||
|
{
|
||||||
|
App.Env.world = 'STATS';
|
||||||
|
App.Pages.prepareHTML();
|
||||||
|
}
|
||||||
|
|
||||||
|
App.Pages.STATS.prepareHTML = function()
|
||||||
|
{
|
||||||
|
$('.row-filters').addClass('hidden');
|
||||||
|
$('#actions-toolbar .do_action_new_entry').addClass('hidden');
|
||||||
|
$('#actions-toolbar .stats-subbar').remove();
|
||||||
|
$('#actions-toolbar .do_action_new_entry').after(App.Templates.get('SUBMENU', 'stats').finalize());
|
||||||
|
|
||||||
|
$('#primary-nav-box .active').removeClass('active');
|
||||||
|
$('#STATS').addClass('active');
|
||||||
|
$('#new-entry-keyword').text(App.Helpers.getHumanTabName());
|
||||||
|
document.title = 'Vesta | ' + App.Helpers.getHumanTabName();
|
||||||
|
|
||||||
|
App.Ajax.request('STATS.getList', {}, function(reply) {
|
||||||
|
if (!reply.result) {
|
||||||
|
App.Herlers.alert('Stats list failed to load. Please try again a bit later');
|
||||||
|
}
|
||||||
|
|
||||||
|
App.Ref.CONTENT.html(App.HTML.Build.stats_list(reply.data));
|
||||||
|
App.Helpers.updateScreen();
|
||||||
|
//$('#content').html(App.HTML.Build.backup_list(reply.data));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,8 +53,9 @@ App.Templates.html = {
|
||||||
<input type="text" tabindex="1" id="change-email" class="field-text">\
|
<input type="text" tabindex="1" id="change-email" class="field-text">\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="form-row cc">\
|
<div class="form-row cc">\
|
||||||
<label class="field-label"><img id="captcha-img" width="127px;" src="~!:CAPTCHA_URL~!" style="cursor: pointer" onClick="this.src = \'~!:CAPTCHA_URL_2~!?\'+Math.floor(Math.random() * 9999)"/></label>\
|
<label for="captcha" class="field-label">Captcha</label>\
|
||||||
<input type="text" id="captcha" class="field-text" style="margin-left: 50px; width: 240px;">\
|
<label class="captcha"><img id="captcha-img" width="127px;" src="~!:CAPTCHA_URL~!" style="cursor: pointer; float: left; margin-top: -7px; padding-left: 20px;" onClick="this.src = \'~!:CAPTCHA_URL_2~!?\'+Math.floor(Math.random() * 9999)"/></label>\
|
||||||
|
<input type="text" id="captcha" class="field-text" style="margin-left: 11px; width: 132px; margin-bottom: 27px;">\
|
||||||
</div>\
|
</div>\
|
||||||
<div id="change-psw-success" class="success-box hidden"></div>\
|
<div id="change-psw-success" class="success-box hidden"></div>\
|
||||||
<div id="change-psw-error" class="error-box hidden"></div>\
|
<div id="change-psw-error" class="error-box hidden"></div>\
|
||||||
|
@ -84,12 +85,12 @@ App.Templates.html = {
|
||||||
</div>\
|
</div>\
|
||||||
<form id="login-form" method="post" action="#" class="auth">\
|
<form id="login-form" method="post" action="#" class="auth">\
|
||||||
<div class="form-row cc">\
|
<div class="form-row cc">\
|
||||||
<label for="email" class="field-label">Email</label>\
|
<label for="email" class="field-label">Login</label>\
|
||||||
<input type="text" tabindex="1" id="authorize-login" class="field-text">\
|
<input type="text" tabindex="1" id="authorize-login" autocomplete="on" class="field-text">\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="form-row cc">\
|
<div class="form-row cc">\
|
||||||
<label for="password" class="field-label">Password</label>\
|
<label for="password" class="field-label">Password</label>\
|
||||||
<input type="password" tabindex="2" id="authorize-password" class="field-text">\
|
<input type="password" tabindex="2" id="authorize-password" autocomplete="on" class="field-text">\
|
||||||
</div>\
|
</div>\
|
||||||
<div id="auth-error" class="error-box hidden"></div>\
|
<div id="auth-error" class="error-box hidden"></div>\
|
||||||
<div class="form-row last-row cc">\
|
<div class="form-row last-row cc">\
|
||||||
|
@ -354,6 +355,8 @@ App.Templates.html = {
|
||||||
<span class="delete-entry"><span class="delete-entry-text do_action_delete_ip">delete</span></span>'],
|
<span class="delete-entry"><span class="delete-entry-text do_action_delete_ip">delete</span></span>'],
|
||||||
SUSPENDED_TPL_DISABLED : ['<span class="ip-status-info ip-suspended-status do_action_delete_ip"><span class="ip-status-text">suspended</span></span>']
|
SUSPENDED_TPL_DISABLED : ['<span class="ip-status-info ip-suspended-status do_action_delete_ip"><span class="ip-status-text">suspended</span></span>']
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
||||||
user: {
|
user: {
|
||||||
WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\
|
WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\
|
||||||
<span class="group-switcher">\
|
<span class="group-switcher">\
|
||||||
|
@ -609,8 +612,10 @@ App.Templates.html = {
|
||||||
<div class="form-options-group">\
|
<div class="form-options-group">\
|
||||||
<div class="group-header cc collapsed">\
|
<div class="group-header cc collapsed">\
|
||||||
<span class="group-title-outer do_action_toggle_section">\
|
<span class="group-title-outer do_action_toggle_section">\
|
||||||
<span class="group-title do_action_toggle_section">Advanced options</span>\
|
<span class="group-title-inner">\
|
||||||
</span> \
|
<span class="group-title do_action_toggle_section">Advanced options</span>\
|
||||||
|
</span>\
|
||||||
|
</span>\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="sub_section hidden">\
|
<div class="sub_section hidden">\
|
||||||
<div class="form-row cc">\
|
<div class="form-row cc">\
|
||||||
|
@ -723,32 +728,37 @@ App.Templates.html = {
|
||||||
<span class="prop-value tpl-item do_action_view_template_settings">~!:TPL~!</span>\
|
<span class="prop-value tpl-item do_action_view_template_settings">~!:TPL~!</span>\
|
||||||
</span>\
|
</span>\
|
||||||
</div>\
|
</div>\
|
||||||
<!-- disk usage block -->\
|
<div class="b-stats-box">\
|
||||||
<div class="b-usage-box disk-usage cc">\
|
<div class="stats-box-title">stats</div> \
|
||||||
<span class="prop-title">disk usage:</span>\
|
<!-- disk usage block -->\
|
||||||
<div class="usage-box">\
|
<div class="b-usage-box2 disk-usage cc">\
|
||||||
<div class="value-box">\
|
<span class="prop-title">disk usage:</span>\
|
||||||
<span class="value">~!:U_DISK~!</span>\
|
<div class="usage-box ~!:OVER_DRAFT_VALUE~!">\
|
||||||
<div class="graph low">\
|
<div class="value-box">\
|
||||||
<span style="width:~!:U_DISK_PERCENTS~!%;" class="bar"></span>\
|
<div class="graph">\
|
||||||
</div>\
|
<span style="left:~!:U_DISK_PERCENTAGE_2~!%;" class="value">~!:U_DISK_PERCENTAGE~!% <span class="value-size">(~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)</span></span>\
|
||||||
</div>\
|
<span style="width:~!:U_DISK_PERCENTAGE_3~!%;" class="bar"></span>\
|
||||||
<div class="max-size">~!:DISK~!<span class="units">Mb</span></div>\
|
~!:OVER_BAR~!\
|
||||||
</div>\
|
</div>\
|
||||||
</div><!-- // disk usage block -->\
|
</div>\
|
||||||
<!-- bandwidth usage block -->\
|
<div class="max-size">~!:DISK_QUOTA~! <span class="units">~!:DISK_QUOTA_MEASURE_2~!</span></div>\
|
||||||
<div class="b-usage-box bandwidth-box cc">\
|
</div>\
|
||||||
<span class="prop-title">bandwidth:</span>\
|
</div><!-- // disk usage block -->\
|
||||||
<div class="usage-box">\
|
</div>\
|
||||||
<div class="value-box">\
|
\
|
||||||
<span class="value">~!:U_BANDWIDTH~!</span>\
|
<div class="b-usage-box2 bandwidth-box cc">\
|
||||||
<div class="graph low">\
|
<span class="prop-title">bandwidth:</span>\
|
||||||
<span style="width:U_BANDWIDTH_PERCENTS%;" class="bar"></span>\
|
<div class="usage-box">\
|
||||||
</div>\
|
<div class="value-box ~!:OVER_DRAFT_VALUE_2~!">\
|
||||||
</div>\
|
<div class="graph">\
|
||||||
<div class="max-size">~!:BANDWIDTH~! <span class="units">Mb</span></div>\
|
<span style="left:~!:U_BANDWIDTH_PERCENTAGE_2~!%;" class="value">~!:U_BANDWIDTH_PERCENTAGE~!% <span class="value-size">(~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)</span></span>\
|
||||||
</div>\
|
<span style="width:~!:U_BANDWIDTH_PERCENTAGE_3~!%;" class="bar"></span>\
|
||||||
</div><!-- // bandwidth usage block -->\
|
~!:OVER_BAR_2~!\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
|
<div class="max-size">~!:BANDWIDTH~! <span class="units">~!:BANDWIDTH_MEASURE_2~!</span></div>\
|
||||||
|
</div>\
|
||||||
|
</div>\
|
||||||
</div>\
|
</div>\
|
||||||
<div class="props-additional">\
|
<div class="props-additional">\
|
||||||
<span class="prop-box php-box">\
|
<span class="prop-box php-box">\
|
||||||
|
@ -1041,7 +1051,20 @@ App.Templates.html = {
|
||||||
</div> \
|
</div> \
|
||||||
</div><!-- // .row-details -->\
|
</div><!-- // .row-details -->\
|
||||||
</div><!-- // .row 1 -->']
|
</div><!-- // .row 1 -->']
|
||||||
}
|
},
|
||||||
|
stats: {
|
||||||
|
WRAPPER: ['<div class="stats-list">~!:CONTENT~!</div>'],
|
||||||
|
ENTRY: ['<div class="stats-block" style="min-height: 252px">\
|
||||||
|
<h2 class="stats-block-header">~!:HEADER~!</h2>\
|
||||||
|
<div class="stats-block-wrap">\
|
||||||
|
<img class="stats-graph" src="~!:IMG_SRC~!" alt="" />\
|
||||||
|
</div>\
|
||||||
|
</div>'],
|
||||||
|
SUBMENU: ['<span class="stats-subbar"><span class="today sub-active" onClick="App.Actions.loadStats(\'today\')">today</span>\
|
||||||
|
<span class="week" onClick="App.Actions.loadStats(\'week\')">week</span>\
|
||||||
|
<span class="month" onClick="App.Actions.loadStats(\'month\')">month</span>\
|
||||||
|
<span class="year" onClick="App.Actions.loadStats(\'year\')">year</span></div>']
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -38,5 +38,5 @@ App.View.listItems = function(reply){
|
||||||
|
|
||||||
var html = acc.done().wrapperize('ENTRIES_WRAPPER', App.Env.getWorldName());
|
var html = acc.done().wrapperize('ENTRIES_WRAPPER', App.Env.getWorldName());
|
||||||
App.Ref.CONTENT.html(html);
|
App.Ref.CONTENT.html(html);
|
||||||
App.Helpers.updateScreen();
|
//App.Helpers.updateScreen();
|
||||||
}
|
}
|
||||||
|
|
22
web/ssl/demo.vestacp.com.crt
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIDmjCCAoICCQCjpzusnGxWaDANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMC
|
||||||
|
VVMxEjAQBgNVBAgMCUJlcmtzaGlyZTESMBAGA1UEBwwJV2VzdG5vcnRoMQ4wDAYD
|
||||||
|
VQQKDAVWZXN0YTELMAkGA1UECwwCSVQxGTAXBgNVBAMMEGRlbW8udmVzdGFjcC5j
|
||||||
|
b20xHzAdBgkqhkiG9w0BCQEWEGluZm9AdmVzdGFjcC5jb20wHhcNMTExMjE0MTky
|
||||||
|
NDU4WhcNMTIxMjEzMTkyNDU4WjCBjjELMAkGA1UEBhMCVVMxEjAQBgNVBAgMCUJl
|
||||||
|
cmtzaGlyZTESMBAGA1UEBwwJV2VzdG5vcnRoMQ4wDAYDVQQKDAVWZXN0YTELMAkG
|
||||||
|
A1UECwwCSVQxGTAXBgNVBAMMEGRlbW8udmVzdGFjcC5jb20xHzAdBgkqhkiG9w0B
|
||||||
|
CQEWEGluZm9AdmVzdGFjcC5jb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
|
||||||
|
AoIBAQC85/k6Ekfo1z9AfzOFNce0rgy897nlkdiEdr67H05lhFlUHY129vzgrrZC
|
||||||
|
kANji9sR0tGwcRdc2aHoTlbQGZ4f567LbWrUY0kc4ku56/5v74akf2P4HRm5AhSF
|
||||||
|
6RHJfisl558i/JuO9M+fwCp1r9oOicapcyMJzaSXIeDTudWalKzwCNISH3neA+jw
|
||||||
|
uJPFvw+NKtQoYHQN1ag24rmK1IUhdX70HverwS+DJykqEIcTMuON4FZ0UHx8Xr6U
|
||||||
|
3pQ9yhulHTQEU03vL353ONJ6SYxzZRnt6GdE+jN+AsSDo0P7mRPoUtvi6n1AeVS+
|
||||||
|
iSalLfZN0CEVxuMnjvA1I4DtPNZNAgMBAAEwDQYJKoZIhvcNAQEFBQADggEBAIft
|
||||||
|
cXO9VpxvdlItINllvy5jrOVYn/U8NKNO1TNcqeCQmg2PQHfx8WCK4q3RBVV5aAu4
|
||||||
|
87h6aTMH1YnxZfMtpMSZZi2FVQgeZsXs86UJu0jYXU06DApyL3G28w2LDwO/m1cw
|
||||||
|
8xtMpofALyzmS/YKuGv5ptWCR57mw5a/5fyscWdFc3xgmZZxm/gO1o9pLcotVkLg
|
||||||
|
H8dHFcQlqQbp2ejmvJmBdCgkNtgjdrJSVYQGsL1Ja/53S82NQD5LgDBq81kcbvqF
|
||||||
|
ikD0BTAwKY6sETo3xCRxfno3A9ZTw7byk/QRl++qK02WrMnDVbcj1xeZR866QIfZ
|
||||||
|
plL7FfrMTcBCs1S0Hwc=
|
||||||
|
-----END CERTIFICATE-----
|
27
web/ssl/demo.vestacp.com.key
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
|
MIIEpAIBAAKCAQEAvOf5OhJH6Nc/QH8zhTXHtK4MvPe55ZHYhHa+ux9OZYRZVB2N
|
||||||
|
dvb84K62QpADY4vbEdLRsHEXXNmh6E5W0BmeH+euy21q1GNJHOJLuev+b++GpH9j
|
||||||
|
+B0ZuQIUhekRyX4rJeefIvybjvTPn8Aqda/aDonGqXMjCc2klyHg07nVmpSs8AjS
|
||||||
|
Eh953gPo8LiTxb8PjSrUKGB0DdWoNuK5itSFIXV+9B73q8EvgycpKhCHEzLjjeBW
|
||||||
|
dFB8fF6+lN6UPcobpR00BFNN7y9+dzjSekmMc2UZ7ehnRPozfgLEg6ND+5kT6FLb
|
||||||
|
4up9QHlUvokmpS32TdAhFcbjJ47wNSOA7TzWTQIDAQABAoIBAHPgdB/sINIyXylo
|
||||||
|
HalkAPnTHhs4dn7dBQzUblEIdiWNluIjMqi7/wiwAzs3bey9WIdJY7kw1hztnwSK
|
||||||
|
MXR7kmSN0MoWd0aLFMk0AzGsEqqFKnlzb1Y+O44iOYafHnsT+tHIj/R9McryXv3m
|
||||||
|
eeUxFrh+SS+eYerci07tyCT4RJAJ/3RjQvlpZbZEkS/EF4lgg+V87CNF2hYzVIS0
|
||||||
|
obOXVMMl7TeAF56tJfFM2hjVS9lD7o7AmfpuMLirZ/HNscjx9MgUgPDTpCLQ+o5g
|
||||||
|
bV5QC5VdJtHKaH9H11CmOyl6FQp006dOzVfhxdblNSq8d9VYrLv3IF+j8MfvTxw1
|
||||||
|
nVUj8P0CgYEA3AggZ/EuAWBDdks3y9vTnJVoaHDjrO9j7ldqWU3UONYjYPupCWXG
|
||||||
|
LPxfFnHwifQBW2Yp0GrGoRI1Nz8wvZ1Q9JvziaWDSWfbUP/VtEL1N8QDQDemfh+p
|
||||||
|
vQ48rMJ0cWtRQWloTDWiRJ6S57+bUcIlXfBhieZ7fsnrL092cUS/f58CgYEA28lO
|
||||||
|
GLQA5KdiS0cDTCrzDP2ZnfPhsHEv+M0hIbjiULKkwJZkOHfp2byRJYakoT9Dnjwo
|
||||||
|
3N1gFqGyXeCunI2P2yxu7HsYdDUsrK16IjRDhrwm2Yi0qQdBVBdC8EtCOpgdMbPw
|
||||||
|
j+bavowW4sdZ+Cdt1UiXJW2inkVTeMn7u/82spMCgYEA1QPNE7PrPQvL4/8IAoVM
|
||||||
|
RYBjtxDraiXMUhcw70oo1emCEMcyq9Vq2WxuRhWCsJuYoLq0aoCk0ZUGDflQH5Ho
|
||||||
|
qRc93Blvk6ZHLhCv/LcCHb3XA9mchufydQQOe5Y6Ev+5h6EbhwQ5l0MJp/DY1nsl
|
||||||
|
n98zHsUS8/lZhdDhMuFCn7MCgYAvEkobmFGopwCyRp86LOipG5dO8PChLVys2KID
|
||||||
|
6ujth5Upegw029nFvFEJzHBt6HK+7PuDchYmQrNEz94VwWvR8Q5Ar4xpNwo+YVkL
|
||||||
|
Ak6ECL/5TwICQX+IVwMLG9MvYWy/PF6FM1gd/zrXjwKB10/6ofVdGsH9S7O45ul3
|
||||||
|
Ng2s6QKBgQDYFKzhN8vDDGhmhDIz0uAPaMkMUvsjFHvsuurboAHgLnOstXhc/M0N
|
||||||
|
t/AhI+TM+JewVoT6F4FGWOR6ykGn9F5N7e+rHfU+/6yloD4quDavV+4JWuJomRpC
|
||||||
|
QE0k8Pmgm3s5xo3kyb7J9h4l3b8MF2rXTzcqyG8UQMrSRjVUJ07scg==
|
||||||
|
-----END RSA PRIVATE KEY-----
|
|
@ -1,3 +1,3 @@
|
||||||
<?
|
<?
|
||||||
echo "ok";
|
phpinfo();
|
||||||
?>
|
?>
|
||||||
|
|
8
web/time.php
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
<?php
|
||||||
|
echo "<pre>";
|
||||||
|
$start_time = microtime(true);
|
||||||
|
exec('sudo /usr/local/vesta/bin/v_list_web_domains vesta json', $out);
|
||||||
|
$exec_time = microtime(true) - $start_time;
|
||||||
|
echo "$exec_time\n\n";
|
||||||
|
print_r($out);
|
||||||
|
|
213
web/vesta-login-form_mine.css
Normal file
|
@ -0,0 +1,213 @@
|
||||||
|
/* Page specific styles */
|
||||||
|
.page-auth{
|
||||||
|
background:url(../images/auth/auth-bg.png) repeat;
|
||||||
|
}
|
||||||
|
.cc:after{
|
||||||
|
content: ".";
|
||||||
|
display: block;
|
||||||
|
height: 0;
|
||||||
|
clear: both;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
*html .cc{
|
||||||
|
zoom:1;
|
||||||
|
}
|
||||||
|
+html .cc{
|
||||||
|
zoom:1;
|
||||||
|
}
|
||||||
|
.page-auth .b-auth-form{}
|
||||||
|
|
||||||
|
.b-auth-form{
|
||||||
|
width:525px;
|
||||||
|
margin:7% auto 0;
|
||||||
|
padding:20px 20px 0;
|
||||||
|
background:url(../images/auth/form-bg.png) repeat;
|
||||||
|
|
||||||
|
-webkit-border-radius:15px;
|
||||||
|
-moz-border-radius:15px;
|
||||||
|
border-radius:15px;
|
||||||
|
behavior: url(js/PIE.htc);
|
||||||
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
.b-auth-form-wrap{
|
||||||
|
position:relative;
|
||||||
|
padding-top:30px;
|
||||||
|
}
|
||||||
|
.vesta-logo{
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
display:block;
|
||||||
|
}
|
||||||
|
.b-client-title{
|
||||||
|
margin:0 0 45px;
|
||||||
|
padding-left:130px;
|
||||||
|
font-size:35px;
|
||||||
|
background:url(../images/auth/planet-1.png) no-repeat 85px 27px;
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
.client-title-wrap{
|
||||||
|
position:relative;
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size:24px;
|
||||||
|
}
|
||||||
|
.client-title-wrap .planets{
|
||||||
|
display:block;
|
||||||
|
width:91px;
|
||||||
|
height:7px;
|
||||||
|
position:absolute;
|
||||||
|
top:40%;
|
||||||
|
right:-121px;
|
||||||
|
background:url(../images/auth/planet-2.png) no-repeat scroll 0 -1px;
|
||||||
|
}
|
||||||
|
.form-row{
|
||||||
|
margin:0 0 15px;
|
||||||
|
}
|
||||||
|
.last-row{
|
||||||
|
padding:0px 90px 0 133px;
|
||||||
|
/* padding:27px 90px 0 133px; */
|
||||||
|
}
|
||||||
|
.field-label{
|
||||||
|
float:left;
|
||||||
|
width:87px;
|
||||||
|
padding-left:45px;
|
||||||
|
color:#e3d785;
|
||||||
|
font-size:12px;
|
||||||
|
line-height:34px;
|
||||||
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
|
text-transform:uppercase;
|
||||||
|
/*letter-spacing:-.5px;*/
|
||||||
|
}
|
||||||
|
.field-text{
|
||||||
|
width:290px;
|
||||||
|
padding:4px 5px;
|
||||||
|
font-size:20px;
|
||||||
|
border:2px solid #0c6c9c;
|
||||||
|
background:#2d2c28;
|
||||||
|
color:#fff;
|
||||||
|
}
|
||||||
|
.field-text:focus{
|
||||||
|
-moz-box-shadow:0 0 8px rgba(76, 147, 189, 0.7);
|
||||||
|
-webkit-box-shadow:0 0 8px rgba(76, 147, 189, 0.7);
|
||||||
|
border-color:rgba(76, 147, 189, 0.85) !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.b-remember{
|
||||||
|
float:left;
|
||||||
|
padding-top:5px;
|
||||||
|
}
|
||||||
|
.remember-label{
|
||||||
|
cursor:pointer;
|
||||||
|
padding:2px 2px 2px 8px;
|
||||||
|
color:#747975;
|
||||||
|
font-size:12px;
|
||||||
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
|
}
|
||||||
|
span.ui-checkbox{
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
width: 14px;
|
||||||
|
height: 15px;
|
||||||
|
/* background:url(icon_checkbox.png) 0 -40px no-repeat;*/
|
||||||
|
background:url(../images/auth/checkboxes.png) no-repeat;
|
||||||
|
}
|
||||||
|
.ui-helper-hidden-accessible{
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
span.ui-checkbox-state-hover{
|
||||||
|
background-position: 0 -15px;
|
||||||
|
}
|
||||||
|
span.ui-checkbox-state-checked,
|
||||||
|
span.ui-checkbox-state-checked-hover{
|
||||||
|
background-position: 0 -30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sumbit-btn{
|
||||||
|
float:right;
|
||||||
|
overflow:visible;
|
||||||
|
height:30px;
|
||||||
|
padding:0 40px;
|
||||||
|
-webkit-border-radius:9px;
|
||||||
|
-moz-border-radius:9px;
|
||||||
|
border-radius:9px;
|
||||||
|
behavior: url(js/PIE.htc);
|
||||||
|
|
||||||
|
border:2px solid #2C2C10;
|
||||||
|
background-color:#BBBF45;
|
||||||
|
color:#ffffdf;
|
||||||
|
font-size:13px;
|
||||||
|
font-family:Arial, Helvetica, sans-serif;
|
||||||
|
font-weight:bold;
|
||||||
|
line-height:27px;
|
||||||
|
text-transform:uppercase;
|
||||||
|
cursor:pointer;
|
||||||
|
}
|
||||||
|
.sumbit-btn:focus{
|
||||||
|
position:relative;
|
||||||
|
top:1px;
|
||||||
|
}
|
||||||
|
.sumbit-btn:hover{
|
||||||
|
background-color:#ffcc00;
|
||||||
|
color:#483600;
|
||||||
|
border-color:#000;
|
||||||
|
}
|
||||||
|
.sumbit-btn:active{
|
||||||
|
top:0;
|
||||||
|
background-color:#96A332;
|
||||||
|
color:#FFFFFF;
|
||||||
|
border-color:#2C2C10;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.forgot-pwd{
|
||||||
|
padding:60px 0 10px 137px;
|
||||||
|
font-size:13px;
|
||||||
|
}
|
||||||
|
.forgot-pwd-url{
|
||||||
|
color:#6f7571;
|
||||||
|
}
|
||||||
|
a.forgot-pwd-url:hover{
|
||||||
|
color:#849e54;
|
||||||
|
}
|
||||||
|
a.forgot-pwd-url:active{
|
||||||
|
color:#edca38;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-box{
|
||||||
|
border-top:1px dashed #f16d6b;
|
||||||
|
padding:10px 0 21px 131px;
|
||||||
|
font-size:14px;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#f16d6b;
|
||||||
|
}
|
||||||
|
|
||||||
|
.footnotes{
|
||||||
|
margin:0 -20px;
|
||||||
|
padding:15px 20px;
|
||||||
|
font-size:14px;
|
||||||
|
border-top:2px solid #34352f;
|
||||||
|
color:#5a5e5d;
|
||||||
|
}
|
||||||
|
.footnotes .additional-info{
|
||||||
|
float:left;
|
||||||
|
font-size:12px;
|
||||||
|
font-family:Georgia, "Times New Roman", Times, serif;
|
||||||
|
font-style:italic;
|
||||||
|
}
|
||||||
|
.footnotes .questions-url{
|
||||||
|
color:#5a5e5d;
|
||||||
|
}
|
||||||
|
.footnotes a.questions-url:hover{
|
||||||
|
color:#849e54;
|
||||||
|
}
|
||||||
|
.footnotes a.questions-url:active{
|
||||||
|
color:#edca38;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.footnotes .imprint{
|
||||||
|
float:right;
|
||||||
|
font-style:normal;
|
||||||
|
font-size:11px;
|
||||||
|
padding-top:1px;
|
||||||
|
}
|
|
@ -32,6 +32,11 @@ class AjaxHandler {
|
||||||
return VestaSession::getInstance()->getUser();
|
return VestaSession::getInstance()->getUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getLoggedUserRole()
|
||||||
|
{
|
||||||
|
return VestaSession::getInstance()->getUserRole();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called functions should reply in the following way
|
* Called functions should reply in the following way
|
||||||
* return $this->reply($result, $data, $msg, $extra);
|
* return $this->reply($result, $data, $msg, $extra);
|
||||||
|
@ -50,7 +55,7 @@ class AjaxHandler {
|
||||||
'MAIN.resetPassword',
|
'MAIN.resetPassword',
|
||||||
'MAIN.about');
|
'MAIN.about');
|
||||||
$method = Request::parseAjaxMethod($request);
|
$method = Request::parseAjaxMethod($request);
|
||||||
|
|
||||||
if (!in_array($method['namespace'].'.'.$method['function'], $allowed_actions)) {
|
if (!in_array($method['namespace'].'.'.$method['function'], $allowed_actions)) {
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
}
|
}
|
||||||
|
@ -74,7 +79,7 @@ class AjaxHandler {
|
||||||
/**
|
/**
|
||||||
* Prepare response for ajax
|
* Prepare response for ajax
|
||||||
*/
|
*/
|
||||||
public function reply($result, $data, $message = '', $extra = array())
|
public function reply($result, $data = null, $message = '', $extra = array())
|
||||||
{
|
{
|
||||||
return json_encode(array('result' => $result,
|
return json_encode(array('result' => $result,
|
||||||
'data' => $data,
|
'data' => $data,
|
||||||
|
|
|
@ -127,7 +127,7 @@ class CRON extends AjaxHandler
|
||||||
*/
|
*/
|
||||||
public function changeExecute(Request $request)
|
public function changeExecute(Request $request)
|
||||||
{
|
{
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$_old = $request->getParameter('old');
|
$_old = $request->getParameter('old');
|
||||||
$_new = $request->getParameter('new');
|
$_new = $request->getParameter('new');
|
||||||
$result = array();
|
$result = array();
|
||||||
|
@ -177,7 +177,7 @@ class CRON extends AjaxHandler
|
||||||
public function suspendExecute(Request $request)
|
public function suspendExecute(Request $request)
|
||||||
{
|
{
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$spell = $request->getParameter('spell');
|
$spell = $request->getParameter('spell');
|
||||||
$params = array(
|
$params = array(
|
||||||
'USER' => $user['uid'],
|
'USER' => $user['uid'],
|
||||||
'JOB' => $spell['JOB']
|
'JOB' => $spell['JOB']
|
||||||
|
@ -200,8 +200,8 @@ class CRON extends AjaxHandler
|
||||||
*/
|
*/
|
||||||
public function unsuspendExecute(Request $request)
|
public function unsuspendExecute(Request $request)
|
||||||
{
|
{
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$spell = $request->getParameter('spell');
|
$spell = $request->getParameter('spell');
|
||||||
$params = array(
|
$params = array(
|
||||||
'USER' => $user['uid'],
|
'USER' => $user['uid'],
|
||||||
'JOB' => $spell['JOB']
|
'JOB' => $spell['JOB']
|
||||||
|
@ -215,5 +215,35 @@ class CRON extends AjaxHandler
|
||||||
|
|
||||||
return $this->reply($result['status'], $result['data']);
|
return $this->reply($result['status'], $result['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function massiveSuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_CRON_JOB, array('USER' => $user, $entity['JOB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveUnsuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_CRON_JOB, array('USER' => $user, $entity['JOB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveDeleteExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_DEL_CRON_JOB, array('USER' => $user, $entity['JOB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -156,5 +156,35 @@ class DB extends AjaxHandler
|
||||||
|
|
||||||
return $this->reply($result['status'], $result['data']);
|
return $this->reply($result['status'], $result['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function massiveSuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_DB_BASE, array('USER' => $user, $entity['DB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveUnsuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_DB_BASE, array('USER' => $user, $entity['DB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveDeleteExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_DEL_DB_BASE, array('USER' => $user, $entity['DB']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -170,7 +170,7 @@ class DNS extends AjaxHandler
|
||||||
/**
|
/**
|
||||||
* Delete DNS entry
|
* Delete DNS entry
|
||||||
*
|
*
|
||||||
* v_del_dns_domain user domain
|
* v_delete_dns_domain user domain
|
||||||
* http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.del&USER=vesta&DOMAIN=dev.vestacp.com
|
* http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.del&USER=vesta&DOMAIN=dev.vestacp.com
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
|
@ -197,7 +197,7 @@ class DNS extends AjaxHandler
|
||||||
/**
|
/**
|
||||||
* Add DNS record
|
* Add DNS record
|
||||||
*
|
*
|
||||||
* v_del_dns_domain_record user domain id
|
* v_delete_dns_domain_record user domain id
|
||||||
* http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.delRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD_ID=9
|
* http://95.163.16.160:8083/dispatch.php?jedi_method=DNS.delRecord&USER=vesta&DOMAIN=dev.vestacp.com&RECORD_ID=9
|
||||||
*
|
*
|
||||||
* @param Request $request
|
* @param Request $request
|
||||||
|
@ -403,7 +403,7 @@ class DNS extends AjaxHandler
|
||||||
public function getTemplateInfoExecute($request)
|
public function getTemplateInfoExecute($request)
|
||||||
{
|
{
|
||||||
$spell = $request->getParameter('spell');
|
$spell = $request->getParameter('spell');
|
||||||
$result = Vesta::execute('v_list_sys_user_packages', null, self::JSON);
|
$result = Vesta::execute('v_list_user_packages', null, self::JSON);
|
||||||
$reply = $result['data'];
|
$reply = $result['data'];
|
||||||
if (isset($spell['PACKAGE'])) {
|
if (isset($spell['PACKAGE'])) {
|
||||||
$reply = $result['data'][$spell['PACKAGE']];
|
$reply = $result['data'][$spell['PACKAGE']];
|
||||||
|
@ -412,4 +412,35 @@ class DNS extends AjaxHandler
|
||||||
return $this->reply(true, $reply);
|
return $this->reply(true, $reply);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public function massiveSuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user, $entity['DNS_DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveUnsuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_UNUSPEND_DNS_DOMAIN, array('USER' => $user, $entity['DNS_DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveDeleteExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_DEL_DNS_DOMAIN, array('USER' => $user, $entity['DNS_DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,9 +39,6 @@ class MAIN extends AjaxHandler
|
||||||
|
|
||||||
public function requestPasswordExecute($request)
|
public function requestPasswordExecute($request)
|
||||||
{
|
{
|
||||||
$user = $this->getLoggedUser();
|
|
||||||
$rs = $config = Vesta::execute('v_get_sys_user_value', array($user['uid'], 'RKEY'));
|
|
||||||
|
|
||||||
if (empty($_SESSION['captcha_key'])
|
if (empty($_SESSION['captcha_key'])
|
||||||
|| $_SESSION['captcha_key'] != $request->getParameter('captcha')) {
|
|| $_SESSION['captcha_key'] != $request->getParameter('captcha')) {
|
||||||
return $this->reply(false, null, 'Captcha is invalid ');
|
return $this->reply(false, null, 'Captcha is invalid ');
|
||||||
|
@ -64,45 +61,48 @@ class MAIN extends AjaxHandler
|
||||||
return $this->reply(false, null, 'There is no such user.');
|
return $this->reply(false, null, 'There is no such user.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$secret_key = $this->generateResetPasswordKey();
|
foreach ($email_matched_count as $reset_user) {
|
||||||
$reset_link = 'https://'.$_SERVER['HTTP_HOST'].'/change_password.php?v='.$secret_key;
|
|
||||||
|
$secret_key = $reset_user['RKEY'];
|
||||||
$mail_body = <<<MAIL
|
$reset_link = 'https://'.$_SERVER['HTTP_HOST'].'/change_password.php?v='.$secret_key;
|
||||||
<div lang="en" style="background-color:#fff;color:#222">
|
|
||||||
<a target="_blank" href="" style="color:#FFF">
|
$mail_body = <<<MAIL
|
||||||
<img width="81" height="22" style="display:block;border:0" src="http://vestacp.com/i/logo.png" alt="Twitter">
|
<div lang="en" style="background-color:#fff;color:#222">
|
||||||
</a>
|
<a target="_blank" href="" style="color:#FFF">
|
||||||
<div style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:13px;margin:14px">
|
<img width="81" height="22" style="display:block;border:0" src="http://vestacp.com/i/logo.png" alt="Twitter">
|
||||||
<h2 style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;margin:0 0 16px;font-size:18px;font-weight:normal">
|
</a>
|
||||||
Vesta received a request to reset the password for your account {$user['FNAME']} {$user['LNAME']}?
|
<div style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:13px;margin:14px">
|
||||||
</h2>
|
<h2 style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;margin:0 0 16px;font-size:18px;font-weight:normal">
|
||||||
<p>
|
Vesta received a request to reset the password for your account {$reset_user['FNAME']} {$reset_user['LNAME']}?
|
||||||
If you want to reset your password, click on the link below (or copy and paste the URL into your browser):<br>
|
</h2>
|
||||||
<a target="_blank" href="{$reset_link}">{$reset_link}</a>
|
<p>
|
||||||
</p>
|
If you want to reset your password, click on the link below (or copy and paste the URL into your browser):<br>
|
||||||
<p>
|
<a target="_blank" href="{$reset_link}">{$reset_link}</a>
|
||||||
If you don't want to reset your password, please ignore this message.
|
</p>
|
||||||
Your password will not be reset.
|
<p>
|
||||||
If you have any concerns, please contact us at support@vestacp.com.
|
If you don't want to reset your password, please ignore this message.
|
||||||
</p>
|
Your password will not be reset.
|
||||||
<p style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:13px;line-height:18px;border-bottom:1px solid rgb(238, 238, 238);padding-bottom:10px;margin:0 0 10px">
|
If you have any concerns, please contact us at support@vestacp.com.
|
||||||
<span style="font:italic 13px Georgia,serif;color:rgb(102, 102, 102)">VestaCP</span>
|
</p>
|
||||||
</p>
|
<p style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:13px;line-height:18px;border-bottom:1px solid rgb(238, 238, 238);padding-bottom:10px;margin:0 0 10px">
|
||||||
<p style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;margin-top:5px;font-size:10px;color:#888888">
|
<span style="font:italic 13px Georgia,serif;color:rgb(102, 102, 102)">VestaCP</span>
|
||||||
Please do not reply to this message; it was sent from an unmonitored email address.
|
</p>
|
||||||
</p>
|
<p style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;margin-top:5px;font-size:10px;color:#888888">
|
||||||
|
Please do not reply to this message; it was sent from an unmonitored email address.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
MAIL;
|
MAIL;
|
||||||
|
|
||||||
$headers = 'MIME-Version: 1.0' . "\n";
|
$headers = 'MIME-Version: 1.0' . "\n";
|
||||||
$headers .= 'Content-type: text/html; charset=UTF-8' . "\n";
|
$headers .= 'Content-type: text/html; charset=UTF-8' . "\n";
|
||||||
$to = $request->getParameter('email');
|
$to = $request->getParameter('email');
|
||||||
$subject = 'Reset your Vesta password';
|
$subject = 'Reset your Vesta password';
|
||||||
$message = $mail_body;
|
$message = $mail_body;
|
||||||
mail($to, $subject, $message, $headers);
|
mail($to, $subject, $message, $headers);
|
||||||
|
}
|
||||||
|
|
||||||
return $this->reply(true, array('key_code' => substr($secret_key, 0, 5) . $_SERVER['REQUEST_TIME'] . substr($secret_key, -5)));
|
return $this->reply(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateResetPasswordKey()
|
public function generateResetPasswordKey()
|
||||||
|
@ -110,7 +110,7 @@ MAIL;
|
||||||
/*$key = sha1($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']);
|
/*$key = sha1($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']);
|
||||||
$key = substr($key, 0, 10) . $_SERVER['REQUEST_TIME'] . substr($key, 10, strlen($key));*/
|
$key = substr($key, 0, 10) . $_SERVER['REQUEST_TIME'] . substr($key, 10, strlen($key));*/
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$rs = Vesta::execute('v_get_sys_user_value', array('USER' => $user['uid'], 'VALUE' => 'RKEY'));
|
$rs = Vesta::execute('v_get_user_value', array('USER' => $user['uid'], 'VALUE' => 'RKEY'));
|
||||||
|
|
||||||
return $rs[''];
|
return $rs[''];
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,8 @@ MAIL;
|
||||||
{
|
{
|
||||||
$login = $request->getParameter('login');
|
$login = $request->getParameter('login');
|
||||||
$password = $request->getParameter('password');
|
$password = $request->getParameter('password');
|
||||||
$result = Vesta::execute('v_check_sys_user_password', array('USER' => $login, 'PASSWORD' => $password), self::TEXT);
|
$ip = $request->getUserIP();
|
||||||
|
$result = Vesta::execute('v_check_user_password', array('USER' => $login, 'PASSWORD' => $password, 'IP' => $ip), self::TEXT);
|
||||||
|
|
||||||
if ($result['status'] == true) {
|
if ($result['status'] == true) {
|
||||||
return $this->reply(true, array('v_sd' => VestaSession::authorize($login)));
|
return $this->reply(true, array('v_sd' => VestaSession::authorize($login)));
|
||||||
|
@ -211,8 +212,14 @@ MAIL;
|
||||||
$cron['SUSPEND'] == 'yes' ? $totals['CRON']['blocked'] += 1 : false;
|
$cron['SUSPEND'] == 'yes' ? $totals['CRON']['blocked'] += 1 : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$rs1 = Vesta::execute(Vesta::V_GET_SYS_USER_VALUE, array('USER' => $this->getLoggedUser(), 'KEY' => 'BANDWIDTH'));
|
||||||
|
$bandwidth = $rs1['data'];
|
||||||
|
$rs = Vesta::execute(Vesta::V_GET_SYS_USER_VALUE, array('USER' => $this->getLoggedUser(), 'KEY' => 'DISK_QUOTA'));
|
||||||
|
$disk_quota = $rs['data'];
|
||||||
|
|
||||||
$reply = array(
|
$reply = array(
|
||||||
'auth_user' => array('uid' => $this->getLoggedUser()),
|
'auth_user' => array('uid' => $this->getLoggedUser()),
|
||||||
|
'user_data' => array('BANDWIDTH' => json_encode($rs1)/*(int)$bandwidth*/, 'DISK_QUOTA' => (int)$disk_quota),
|
||||||
'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain, $global_data),
|
'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domain, $global_data),
|
||||||
'CRON' => $this->getCronParams(),
|
'CRON' => $this->getCronParams(),
|
||||||
'IP' => $this->getIpParams($data_ip, $global_data),
|
'IP' => $this->getIpParams($data_ip, $global_data),
|
||||||
|
@ -254,7 +261,7 @@ MAIL;
|
||||||
{
|
{
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$ips = array();
|
$ips = array();
|
||||||
$result = Vesta::execute(Vesta::V_LIST_SYS_USER_IPS, array('USER' => $user['uid']), self::JSON);
|
$result = Vesta::execute(Vesta::V_LIST_USER_IPS, array('USER' => $user['uid']), self::JSON);
|
||||||
foreach ($result['data'] as $sys_ip => $ip_data) {
|
foreach ($result['data'] as $sys_ip => $ip_data) {
|
||||||
$ips[$sys_ip] = $sys_ip;
|
$ips[$sys_ip] = $sys_ip;
|
||||||
}
|
}
|
||||||
|
@ -383,7 +390,7 @@ MAIL;
|
||||||
{
|
{
|
||||||
$pckg = array();
|
$pckg = array();
|
||||||
// json
|
// json
|
||||||
$result = Vesta::execute('v_list_sys_user_packages', null, self::JSON);
|
$result = Vesta::execute(V_LIST_USER_PACKAGES, null, self::JSON);
|
||||||
foreach ($result['data'] as $pckg_name => $pckg_data) {
|
foreach ($result['data'] as $pckg_name => $pckg_data) {
|
||||||
$pckg[$pckg_name] = $pckg_name;
|
$pckg[$pckg_name] = $pckg_name;
|
||||||
}
|
}
|
||||||
|
@ -397,5 +404,4 @@ MAIL;
|
||||||
'csh' => 'csh')
|
'csh' => 'csh')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
65
web/vesta/api/STATS.class.php
Normal file
|
@ -0,0 +1,65 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* STATS
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @author vesta, http://vestacp.com/
|
||||||
|
* @author Dmitry Malishev <dima.malishev@gmail.com>
|
||||||
|
* @author Dmitry Naumov-Socolov <naumov.socolov@gmail.com>
|
||||||
|
* @copyright vesta 2010-2011
|
||||||
|
*/
|
||||||
|
|
||||||
|
class STATS extends AjaxHandler
|
||||||
|
{
|
||||||
|
const DAILY = 'daily';
|
||||||
|
const WEEKLY = 'weekly';
|
||||||
|
const MONTHLY = 'monthly';
|
||||||
|
const YEARLY = 'yearly';
|
||||||
|
const RRD_BASE_DIR = '/rrd/';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get STATS entries
|
||||||
|
*
|
||||||
|
* @param Request $request
|
||||||
|
* @return string - Ajax Reply
|
||||||
|
*/
|
||||||
|
public function getListExecute(Request $request)
|
||||||
|
{
|
||||||
|
$_period = $request->getParameter('period');
|
||||||
|
|
||||||
|
// if stats graph is requested not for today it should be regenerated manually
|
||||||
|
if($_period && (in_array($_period, array(self::WEEKLY, self::MONTHLY, self::YEARLY)))){
|
||||||
|
|
||||||
|
$result = Vesta::execute(Vesta:: V_UPDATE_SYS_RRD, array('PERIOD' => $_period));
|
||||||
|
|
||||||
|
if (!$result['status']) {
|
||||||
|
$this->errors[] = array($result['error_code'] => $result['error_message']);
|
||||||
|
return $this->reply($result['status'], '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$_period = self::DAILY;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$result = Vesta::execute(Vesta::V_LIST_SYS_RRD, array('PERIOD' => $_period));
|
||||||
|
$reply = array();
|
||||||
|
foreach ($result['data'] as $order => $details) {
|
||||||
|
$reply[$order] = array(
|
||||||
|
// 'TYPE' => $details['TYPE'],
|
||||||
|
// 'RRD' => $details['RRD'],
|
||||||
|
'PERIOD' => $_period,
|
||||||
|
'SRC' => self::RRD_BASE_DIR.$details['TYPE'].'/'.$_period.'-'.$details['RRD'].'.png',
|
||||||
|
'TITLE' => $details['TITLE'].' ('.$_period.')'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!$result['status']) {
|
||||||
|
$this->errors[] = array($result['error_code'] => $result['error_message']);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->reply($result['status'], $reply);
|
||||||
|
}
|
||||||
|
}
|
|
@ -23,23 +23,12 @@ class USER extends AjaxHandler
|
||||||
$result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type')));
|
$result = Vesta::execute(Vesta::V_LIST_SYS_USERS, array(Config::get('response_type')));
|
||||||
|
|
||||||
foreach ($result['data'] as $user => $details) {
|
foreach ($result['data'] as $user => $details) {
|
||||||
// get reports attribute
|
|
||||||
$result_report = Vesta::execute(Vesta::V_GET_SYS_USER_VALUE, array('USER' => $user, 'VALUE' => 'reports'), self::TEXT);
|
|
||||||
if ($result_report['status'] != true) {
|
|
||||||
$report = null;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$report = $result_report['data'];
|
|
||||||
}
|
|
||||||
//$fullname_id = rand(0, count($users)-1);
|
|
||||||
$fullname = implode('', array($details['FNAME'], ' ', $details['LNAME']));
|
|
||||||
|
|
||||||
$nses = $this->getNS($user, $details);
|
$nses = $this->getNS($user, $details);
|
||||||
$user_details = array(
|
$user_details = array(
|
||||||
"FNAME" => $details['FNAME'],
|
"FNAME" => $details['FNAME'],
|
||||||
"LNAME" => $details['LNAME'],
|
"LNAME" => $details['LNAME'],
|
||||||
"LOGIN_NAME" => $user,
|
"LOGIN_NAME" => $user,
|
||||||
"FULLNAME" => $fullname,
|
"FULLNAME" => $details['FNAME'].' '.$details['LNAME'],
|
||||||
"PACKAGE" => $details['PACKAGE'],
|
"PACKAGE" => $details['PACKAGE'],
|
||||||
"WEB_DOMAINS" => $details['WEB_DOMAINS'],
|
"WEB_DOMAINS" => $details['WEB_DOMAINS'],
|
||||||
"WEB_SSL" => $details['WEB_SSL'],
|
"WEB_SSL" => $details['WEB_SSL'],
|
||||||
|
@ -51,13 +40,15 @@ class USER extends AjaxHandler
|
||||||
"DNS_DOMAINS" => $details['DNS_DOMAINS'],
|
"DNS_DOMAINS" => $details['DNS_DOMAINS'],
|
||||||
"DISK_QUOTA" => $details['DISK_QUOTA'],
|
"DISK_QUOTA" => $details['DISK_QUOTA'],
|
||||||
"BANDWIDTH" => $details['BANDWIDTH'],
|
"BANDWIDTH" => $details['BANDWIDTH'],
|
||||||
|
// "NS" => $details['NS'],
|
||||||
"SHELL" => $details['SHELL'],
|
"SHELL" => $details['SHELL'],
|
||||||
"BACKUPS" => $details['BACKUPS'],
|
"BACKUPS" => $details['BACKUPS'],
|
||||||
"WEB_TPL" => $details['WEB_TPL'],
|
"WEB_TPL" => $details['WEB_TPL'],
|
||||||
//"MAX_CHILDS" => $details['MAX_CHILDS'],
|
|
||||||
"SUSPEND" => $details['SUSPENDED'],
|
"SUSPEND" => $details['SUSPENDED'],
|
||||||
|
"CONTACT" => $details['CONTACT'],
|
||||||
|
"REPORTS" => $details['REPORTS'],
|
||||||
"IP_OWNED" => $details['IP_OWNED'],
|
"IP_OWNED" => $details['IP_OWNED'],
|
||||||
//"U_CHILDS" => $details['U_CHILDS'],
|
"U_DIR_DISK" => $details['U_DIR_DISK'],
|
||||||
"U_DISK" => $details['U_DISK'],
|
"U_DISK" => $details['U_DISK'],
|
||||||
"U_BANDWIDTH" => $details['U_BANDWIDTH'],
|
"U_BANDWIDTH" => $details['U_BANDWIDTH'],
|
||||||
"U_WEB_DOMAINS" => $details['U_WEB_DOMAINS'],
|
"U_WEB_DOMAINS" => $details['U_WEB_DOMAINS'],
|
||||||
|
@ -65,14 +56,60 @@ class USER extends AjaxHandler
|
||||||
"U_DNS_DOMAINS" => $details['U_DNS_DOMAINS'],
|
"U_DNS_DOMAINS" => $details['U_DNS_DOMAINS'],
|
||||||
"U_DATABASES" => $details['U_DATABASES'],
|
"U_DATABASES" => $details['U_DATABASES'],
|
||||||
"U_MAIL_DOMAINS" => $details['U_MAIL_DOMAINS'],
|
"U_MAIL_DOMAINS" => $details['U_MAIL_DOMAINS'],
|
||||||
"CONTACT" => $details['CONTACT'],
|
|
||||||
"DATE" => $details['DATE'],
|
"DATE" => $details['DATE'],
|
||||||
"U_MAIL_BOXES" => '0', // TODO: skid
|
"U_MAIL_FORWARDERS" => '0',
|
||||||
"U_MAIL_FORWARDERS" => '0', // TODO: skid
|
"U_MAIL_BOXES" => '0'
|
||||||
"REPORTS_ENABLED" => $report,
|
|
||||||
"U_WEB_DOMAINS" => $details['U_WEB_DOMAINS']
|
|
||||||
);
|
);
|
||||||
$reply[$user] = array_merge($user_details, $nses);
|
$reply[$user] = array_merge($user_details, $nses);
|
||||||
|
// $reply[$user] = $user_details;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->reply(TRUE, $reply);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUserExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
|
||||||
|
$reply = array();
|
||||||
|
$result = Vesta::execute(Vesta::V_LIST_SYS_USER, array($user['uid'], Config::get('response_type')));
|
||||||
|
|
||||||
|
foreach ($result['data'] as $user => $details) {
|
||||||
|
$user_details = array(
|
||||||
|
"FNAME" => $details['FNAME'],
|
||||||
|
"LNAME" => $details['LNAME'],
|
||||||
|
"LOGIN_NAME" => $user,
|
||||||
|
"FULLNAME" => $details['FNAME'].' '.$details['LNAME'],
|
||||||
|
"PACKAGE" => $details['PACKAGE'],
|
||||||
|
"WEB_DOMAINS" => $details['WEB_DOMAINS'],
|
||||||
|
"WEB_SSL" => $details['WEB_SSL'],
|
||||||
|
"WEB_ALIASES" => $details['WEB_ALIASES'],
|
||||||
|
"DATABASES" => $details['DATABASES'],
|
||||||
|
"MAIL_DOMAINS" => $details['MAIL_DOMAINS'],
|
||||||
|
"MAIL_BOXES" => $details['MAIL_BOXES'],
|
||||||
|
"MAIL_FORWARDERS" => $details['MAIL_FORWARDERS'],
|
||||||
|
"DNS_DOMAINS" => $details['DNS_DOMAINS'],
|
||||||
|
"DISK_QUOTA" => $details['DISK_QUOTA'],
|
||||||
|
"BANDWIDTH" => $details['BANDWIDTH'],
|
||||||
|
"NS" => $details['NS'],
|
||||||
|
"SHELL" => $details['SHELL'],
|
||||||
|
"BACKUPS" => $details['BACKUPS'],
|
||||||
|
"WEB_TPL" => $details['WEB_TPL'],
|
||||||
|
"SUSPEND" => $details['SUSPENDED'],
|
||||||
|
"CONTACT" => $details['CONTACT'],
|
||||||
|
"REPORTS" => $details['REPORTS'],
|
||||||
|
"IP_OWNED" => $details['IP_OWNED'],
|
||||||
|
"U_DIR_DISK" => $details['U_DIR_DISK'],
|
||||||
|
"U_DISK" => $details['U_DISK'],
|
||||||
|
"U_BANDWIDTH" => $details['U_BANDWIDTH'],
|
||||||
|
"U_WEB_DOMAINS" => $details['U_WEB_DOMAINS'],
|
||||||
|
"U_WEB_SSL" => $details['U_WEB_SSL'],
|
||||||
|
"U_DNS_DOMAINS" => $details['U_DNS_DOMAINS'],
|
||||||
|
"U_DATABASES" => $details['U_DATABASES'],
|
||||||
|
"U_MAIL_DOMAINS" => $details['U_MAIL_DOMAINS'],
|
||||||
|
"DATE" => $details['DATE']
|
||||||
|
);
|
||||||
|
$reply[$user] = $user_details;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->reply(TRUE, $reply);
|
return $this->reply(TRUE, $reply);
|
||||||
|
@ -108,6 +145,18 @@ class USER extends AjaxHandler
|
||||||
$this->errors[] = array($result['error_code'] => $result['error_message']);
|
$this->errors[] = array($result['error_code'] => $result['error_message']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($_s['SUSPEND'] == 'on') {
|
||||||
|
if($result['status']){
|
||||||
|
$result = array();
|
||||||
|
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $user['uid'], 'USER' => $spell['LOGIN_NAME']));
|
||||||
|
if (!$result['status']) {
|
||||||
|
$this->status = FALSE;
|
||||||
|
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return $this->reply($result['status'], $result['data']);
|
return $this->reply($result['status'], $result['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -147,14 +196,6 @@ class USER extends AjaxHandler
|
||||||
|
|
||||||
$_USER = $_old['LOGIN_NAME'];
|
$_USER = $_old['LOGIN_NAME'];
|
||||||
|
|
||||||
if ($_new['SUSPEND'] == 'on') {
|
|
||||||
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
|
|
||||||
return $this->reply($result['status']);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
|
|
||||||
}
|
|
||||||
|
|
||||||
$reports_result = $this->setUserReports($_USER, $_new['REPORTS_ENABLED']);
|
$reports_result = $this->setUserReports($_USER, $_new['REPORTS_ENABLED']);
|
||||||
|
|
||||||
if (!empty($_new['PASSWORD']) && $_new['PASSWORD'] != Vesta::SAME_PASSWORD) {
|
if (!empty($_new['PASSWORD']) && $_new['PASSWORD'] != Vesta::SAME_PASSWORD) {
|
||||||
|
@ -202,14 +243,14 @@ class USER extends AjaxHandler
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
if ($_old['SUSPEND'] != $_new['SUSPEND']) {
|
if ($_old['SUSPEND'] != $_new['SUSPEND']) {
|
||||||
$result = array();
|
$result = array();
|
||||||
if($_new['SUSPEND'] == 'on'){
|
if($_new['SUSPEND'] == 'on'){
|
||||||
$result = Vesta::execute(Vesta::V_SUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
|
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$result = Vesta::execute(Vesta::V_UNSUSPEND_DNS_DOMAIN, array('USER' => $user['uid'], 'DNS_DOMAIN' => $_DNS_DOMAIN));
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!$result['status']) {
|
if (!$result['status']) {
|
||||||
|
@ -217,7 +258,7 @@ class USER extends AjaxHandler
|
||||||
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
|
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
if (!$this->status) {
|
if (!$this->status) {
|
||||||
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD']));
|
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PASSWORD, array('USER' => $_USER, 'PASSWORD' => $_old['PASSWORD']));
|
||||||
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE']));
|
Vesta::execute(Vesta::V_CHANGE_SYS_USER_PACKAGE, array('USER' => $_USER, 'PACKAGE' => $_old['PACKAGE']));
|
||||||
|
@ -225,14 +266,14 @@ class USER extends AjaxHandler
|
||||||
Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2']));
|
Vesta::execute(Vesta::V_CHANGE_SYS_USER_NS, array('USER' => $_USER, 'NS1' => $_old['NS1'], 'NS2' => $_old['NS2']));
|
||||||
Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL']));
|
Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_old['SHELL']));
|
||||||
|
|
||||||
/*
|
|
||||||
if($_old['SUSPEND'] == 'on'){
|
if($_old['SUSPEND'] == 'on'){
|
||||||
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
|
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $_USER));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $_USER));
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->reply($this->status, '');
|
return $this->reply($this->status, '');
|
||||||
|
@ -288,4 +329,45 @@ class USER extends AjaxHandler
|
||||||
{
|
{
|
||||||
$result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $user, 'SHELL' => $shell));
|
$result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $user, 'SHELL' => $shell));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function massiveSuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_SYS_USER, array('USER' => $entity['LOGIN_NAME']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveUnsuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_SYS_USER, array('USER' => $entity['LOGIN_NAME']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveDeleteExecute(Request $request)
|
||||||
|
{
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_DEL_SYS_USER, array('USER' => $entity['LOGIN_NAME']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function loginAsExecute(Request $request)
|
||||||
|
{
|
||||||
|
$_user = $request->getParameter('user');
|
||||||
|
VestaSession::loginAs($_user);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function logoutAsExecute(Request $request)
|
||||||
|
{
|
||||||
|
VestaSession::logoutAs();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,7 +18,7 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
$result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array('USER' => $user['uid']), self::JSON);
|
$result = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS, array('USER' => $user['uid']), self::JSON);
|
||||||
|
|
||||||
$stat = array();
|
$stat = array();
|
||||||
$result_stat = Vesta::execute('v_list_web_domains_stats', array('USER' => $user['uid']), self::JSON);
|
$result_stat = Vesta::execute(Vesta::V_LIST_WEB_DOMAINS_STATS, array('USER' => $user['uid']), self::JSON);
|
||||||
|
|
||||||
foreach ($result_stat['data'] as $w_d => $w_d_details) {
|
foreach ($result_stat['data'] as $w_d => $w_d_details) {
|
||||||
$stat[$w_d] = $w_d_details;
|
$stat[$w_d] = $w_d_details;
|
||||||
|
@ -27,8 +27,8 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
{
|
{
|
||||||
$web_details = array(
|
$web_details = array(
|
||||||
'IP' => $record['IP'],
|
'IP' => $record['IP'],
|
||||||
'U_DISK' => $record['U_DISK'],
|
'U_DISK' => (int)$record['U_DISK'],
|
||||||
'U_BANDWIDTH' => $record['U_BANDWIDTH'],
|
'U_BANDWIDTH' => (int)$record['U_BANDWIDTH'],
|
||||||
'TPL' => $record['TPL'],
|
'TPL' => $record['TPL'],
|
||||||
'ALIAS' => @str_replace(",", ", ", $record['ALIAS']),
|
'ALIAS' => @str_replace(",", ", ", $record['ALIAS']),
|
||||||
'PHP' => $record['PHP'],
|
'PHP' => $record['PHP'],
|
||||||
|
@ -216,10 +216,11 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if ($_s['SUSPEND'] == 'on') {
|
if ($_s['SUSPEND'] == 'on') {
|
||||||
if($result['status']){
|
if($result['status']){
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'JOB' => $_s['DOMAIN']));
|
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'JOB' => $_s['DOMAIN']));
|
||||||
if (!$result['status']) {
|
if (!$result['status']) {
|
||||||
$this->status = FALSE;
|
$this->status = FALSE;
|
||||||
|
@ -228,8 +229,6 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return $this->reply($result['status'], $result['data']);
|
return $this->reply($result['status'], $result['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,13 +269,21 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
|
|
||||||
$user = $this->getLoggedUser();
|
$user = $this->getLoggedUser();
|
||||||
$_DOMAIN = $_new['DOMAIN'];
|
$_DOMAIN = $_new['DOMAIN'];
|
||||||
|
|
||||||
if ($_new['SUSPEND'] == 'on') {
|
if ($_new['SUSPEND'] == 'on') {
|
||||||
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
|
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
|
||||||
return $this->reply($result['status']);
|
if (!$result['status']) {
|
||||||
|
$this->status = FALSE;
|
||||||
|
$this->errors['SUSPEND'] = array($result['error_code'] => $result['error_message']);
|
||||||
|
}
|
||||||
|
// return $this->reply($result['status']);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
|
$result = Vesta::execute(Vesta::V_UNSUSPEND_WEB_DOMAIN, array('USER' => $user['uid'], 'DOMAIN' => $_DOMAIN));
|
||||||
|
if (!$result['status']) {
|
||||||
|
$this->status = FALSE;
|
||||||
|
$this->errors['UNSUSPEND'] = array($result['error_code'] => $result['error_message']);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($_old['IP'] != $_new['IP']) {
|
if ($_old['IP'] != $_new['IP']) {
|
||||||
|
@ -497,4 +504,35 @@ class WEB_DOMAIN extends AjaxHandler
|
||||||
return $this->reply($result['status'], $result['data']);
|
return $this->reply($result['status'], $result['data']);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function massiveSuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_SUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveUnsuspendExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_UNUSPEND_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function massiveDeleteExecute(Request $request)
|
||||||
|
{
|
||||||
|
$user = $this->getLoggedUser();
|
||||||
|
$_entities = $request->getParameter('entities');
|
||||||
|
|
||||||
|
foreach($_entities as $entity){
|
||||||
|
$result = Vesta::execute(Vesta::V_DEL_WEB_DOMAIN, array('USER' => $user, $entity['DOMAIN']));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,12 +52,12 @@ class Request
|
||||||
*/
|
*/
|
||||||
public function getParameter($key, $default=false)
|
public function getParameter($key, $default=false)
|
||||||
{
|
{
|
||||||
$param = isset($this->_merged[$key]) ? $this->_merged[$key] : $default;
|
$param = isset($this->_merged[$key]) ? $this->_merged[$key] : $default;
|
||||||
if ($json = @json_decode($param, true)) {
|
if ($json = @json_decode($param, true)) {
|
||||||
return $json;
|
return $json;
|
||||||
}
|
}
|
||||||
|
|
||||||
return $param;
|
return $param;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -94,6 +94,11 @@ class Request
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getUserIP()
|
||||||
|
{
|
||||||
|
return $_SERVER['REMOTE_ADDR'];
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Dissassemble ajax method
|
* Dissassemble ajax method
|
||||||
|
@ -117,7 +122,7 @@ class Request
|
||||||
throw new ProtectionException(Message::INVALID_METHOD);
|
throw new ProtectionException(Message::INVALID_METHOD);
|
||||||
}
|
}
|
||||||
|
|
||||||
return array('namespace' => ucfirst($method[0]), 'function' => strtolower($method[1]));
|
return array('namespace' => ($method[0]), 'function' => ($method[1]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,68 +13,33 @@ class Vesta
|
||||||
{
|
{
|
||||||
const SAME_PASSWORD = '********';
|
const SAME_PASSWORD = '********';
|
||||||
|
|
||||||
|
const ADMIN = 1;
|
||||||
|
const USER = 0;
|
||||||
|
|
||||||
|
const PARAM_DELIMETER = ' ';
|
||||||
|
|
||||||
|
|
||||||
|
// commands
|
||||||
|
|
||||||
const V_LIST_SYS_CONFIG = 'v_list_sys_config';
|
const V_LIST_SYS_CONFIG = 'v_list_sys_config';
|
||||||
// BACKUP
|
|
||||||
const V_LIST_SYS_USER_BACKUPS = 'v_list_sys_user_backups';
|
|
||||||
// IP
|
|
||||||
const V_LIST_SYS_IPS = 'v_list_sys_ips';
|
|
||||||
const V_ADD_SYS_IP = 'v_add_sys_ip';
|
|
||||||
const V_ADD_SYS_USER_IP = 'v_add_sys_user_ip';
|
|
||||||
const V_CHANGE_SYS_IP_OWNER = 'v_change_sys_ip_owner';
|
|
||||||
const V_CHANGE_SYS_IP_NAME = 'v_change_sys_ip_name';
|
|
||||||
const V_CHANGE_SYS_IP_STATUS = 'v_change_sys_ip_status';
|
|
||||||
const V_DEL_SYS_IP = 'v_del_sys_ip';
|
|
||||||
const V_UPD_SYS_IP = 'v_upd_sys_ip';
|
|
||||||
const V_LIST_SYS_INTERFACES = 'v_list_sys_interfaces';
|
|
||||||
// DNS
|
|
||||||
const V_LIST_DNS_DOMAINS = 'v_list_dns_domains';
|
|
||||||
const V_LIST_DNS_DOMAIN_RECORDS = 'v_list_dns_domain';
|
|
||||||
const V_LIST_DNS_TEMPLATES = 'v_list_dns_templates';
|
|
||||||
const V_ADD_DNS_DOMAIN = 'v_add_dns_domain';
|
|
||||||
const V_ADD_DNS_DOMAIN_RECORD = 'v_add_dns_domain_record';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_IP = 'v_change_dns_domain_ip';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_SOA = 'v_change_dns_domain_soa';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_TPL = 'v_change_dns_domain_tpl';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_TTL = 'v_change_dns_domain_ttl';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_EXP = 'v_change_dns_domain_exp';
|
|
||||||
const V_CHANGE_DNS_DOMAIN_RECORD = 'v_change_dns_domain_record';
|
|
||||||
const V_SUSPEND_DNS_DOMAIN = 'v_suspend_dns_domain';
|
|
||||||
const V_UNSUSPEND_DNS_DOMAIN = 'v_unsuspend_dns_domain';
|
|
||||||
const V_DEL_DNS_DOMAIN = 'v_del_dns_domain';
|
|
||||||
const V_DEL_DNS_DOMAIN_RECORD = 'v_del_dns_domain_record';
|
|
||||||
// CRON
|
|
||||||
const V_LIST_CRON_JOBS = 'v_list_sys_cron';
|
|
||||||
const V_ADD_CRON_JOB = 'v_add_sys_cron';
|
|
||||||
const V_ADD_SYS_USER_REPORTS = 'v_add_sys_user_reports';
|
|
||||||
const V_CHANGE_CRON_JOB = 'v_change_sys_cron_job';
|
|
||||||
const V_SUSPEND_CRON_JOB = 'v_suspend_sys_cron_job';
|
|
||||||
const V_SUSPEND_CRON_JOBS = 'v_suspend_sys_cron_jobs';
|
|
||||||
const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_sys_cron_job';
|
|
||||||
const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_sys_cron_jobs';
|
|
||||||
const V_DEL_CRON_JOB = 'v_del_sys_cron';
|
|
||||||
const V_DEL_SYS_USER_REPORTS = 'v_del_sys_user_reports';
|
|
||||||
// USER
|
// USER
|
||||||
const V_GET_SYS_USER_VALUE = 'v_get_sys_user_value';
|
const V_GET_SYS_USER_VALUE = 'v_get_user_value';
|
||||||
const V_LIST_SYS_USERS = 'v_list_sys_users';
|
const V_LIST_SYS_USERS = 'v_list_users';
|
||||||
const V_ADD_SYS_USER = 'v_add_sys_user';
|
const V_LIST_SYS_USER = 'v_list_user';
|
||||||
const V_CHANGE_SYS_USER_CONTACT = 'v_change_sys_user_contact';
|
const V_LIST_USER_PACKAGES = 'v_list_user_packages';
|
||||||
const V_CHANGE_SYS_USER_NS = 'v_change_sys_user_ns';
|
const V_ADD_SYS_USER = 'v_add_user';
|
||||||
const V_CHANGE_SYS_USER_PACKAGE = 'v_change_sys_user_package';
|
const V_CHANGE_SYS_USER_CONTACT = 'v_change_user_contact';
|
||||||
const V_CHANGE_SYS_USER_PASSWORD = 'v_change_sys_user_password';
|
const V_CHANGE_SYS_USER_NS = 'v_change_user_ns';
|
||||||
const V_CHANGE_SYS_USER_SHELL = 'v_change_sys_user_shell';
|
const V_CHANGE_SYS_USER_PACKAGE = 'v_change_user_package';
|
||||||
|
const V_CHANGE_SYS_USER_PASSWORD = 'v_change_user_password';
|
||||||
|
const V_CHANGE_SYS_USER_SHELL = 'v_change_user_shell';
|
||||||
const V_CHANGE_SYS_USER_ROLE = 'v_change_sys_user_role';
|
const V_CHANGE_SYS_USER_ROLE = 'v_change_sys_user_role';
|
||||||
const V_SUSPEND_SYS_USER = 'v_suspend_sys_user';
|
const V_CHANGE_SYS_USER_NAME = 'v_change_user_name';
|
||||||
const V_UNSUSPEND_SYS_USER = 'v_unsuspend_sys_user';
|
const V_SUSPEND_SYS_USER = 'v_suspend_user';
|
||||||
/*
|
const V_UNSUSPEND_SYS_USER = 'v_unsuspend_user';
|
||||||
const V_SUSPEND_SYS_USER = 'v_suspend_sys_user';
|
const V_DEL_SYS_USER = 'v_delete_user';
|
||||||
const V_UNSUSPEND_SYS_USER = 'v_unsuspend_sys_user';
|
|
||||||
const V_SUSPEND_SYS_USER = 'v_suspend_sys_users';
|
|
||||||
const V_UNSUSPEND_SYS_USERS = 'v_unsuspend_sys_users';
|
|
||||||
*/
|
|
||||||
const V_DEL_SYS_USER = 'v_del_sys_user';
|
|
||||||
const V_CHANGE_SYS_USER_NAME = 'v_change_sys_user_name';
|
|
||||||
// WEB_DOMAIN
|
// WEB_DOMAIN
|
||||||
const V_LIST_SYS_USER_IPS = 'v_list_sys_user_ips';
|
|
||||||
const V_LIST_WEB_DOMAINS = 'v_list_web_domains';
|
const V_LIST_WEB_DOMAINS = 'v_list_web_domains';
|
||||||
const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias';
|
const V_LIST_WEB_DOMAINS_ALIAS = 'v_list_web_domains_alias';
|
||||||
const V_LIST_WEB_DOMAINS_ELOG = 'v_list_web_domains_elog';
|
const V_LIST_WEB_DOMAINS_ELOG = 'v_list_web_domains_elog';
|
||||||
|
@ -93,37 +58,80 @@ class Vesta
|
||||||
const V_CHANGE_WEB_DOMAIN_SSLCERT = 'v_change_web_domain_sslcert';
|
const V_CHANGE_WEB_DOMAIN_SSLCERT = 'v_change_web_domain_sslcert';
|
||||||
const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome';
|
const V_CHANGE_WEB_DOMAIN_SSLHOME = 'v_change_web_domain_sslhome';
|
||||||
const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl';
|
const V_CHANGE_WEB_DOMAIN_TPL = 'v_change_web_domain_tpl';
|
||||||
const V_DEL_WEB_DOMAIN_CGI = 'v_del_web_domain_cgi';
|
const V_DEL_WEB_DOMAIN_CGI = 'v_delete_web_domain_cgi';
|
||||||
const V_DEL_WEB_DOMAIN_ELOG = 'v_del_web_domain_elog';
|
const V_DEL_WEB_DOMAIN_ELOG = 'v_delete_web_domain_elog';
|
||||||
const V_DEL_WEB_DOMAIN_SSL = 'v_del_web_domain_ssl';
|
const V_DEL_WEB_DOMAIN_SSL = 'v_delete_web_domain_ssl';
|
||||||
const V_DEL_WEB_DOMAIN_STAT = 'v_del_web_domain_stat';
|
const V_DEL_WEB_DOMAIN_STAT = 'v_delete_web_domain_stat';
|
||||||
const V_DEL_WEB_DOMAIN_STAT_AUTH = 'v_del_web_domain_stat_auth';
|
const V_DEL_WEB_DOMAIN_STAT_AUTH = 'v_delete_web_domain_stat_auth';
|
||||||
const V_DEL_WEB_DOMAIN_ALIAS = 'v_del_web_domain_alias';
|
const V_DEL_WEB_DOMAIN_ALIAS = 'v_delete_web_domain_alias';
|
||||||
|
const V_UPD_WEB_DOMAIN_DISK = 'v_update_web_domain_disk';
|
||||||
|
const V_UPD_WEB_DOMAINS_DISK = 'v_update_web_domains_disk';
|
||||||
|
const V_UPD_WEB_DOMAIN_TRAFF = 'v_update_web_domain_traff';
|
||||||
|
const V_UPD_WEB_DOMAINS_TRAFF = 'v_update_web_domains_traff';
|
||||||
const V_SUSPEND_WEB_DOMAIN = 'v_suspend_web_domain';
|
const V_SUSPEND_WEB_DOMAIN = 'v_suspend_web_domain';
|
||||||
const V_SUSPEND_WEB_DOMAINS = 'v_suspend_web_domains';
|
const V_SUSPEND_WEB_DOMAINS = 'v_suspend_web_domains';
|
||||||
const V_UNSUSPEND_WEB_DOMAIN = 'v_unsuspend_web_domain';
|
const V_UNSUSPEND_WEB_DOMAIN = 'v_unsuspend_web_domain';
|
||||||
const V_UNSUSPEND_WEB_DOMAINS = 'v_unsuspend_web_domains';
|
const V_UNSUSPEND_WEB_DOMAINS = 'v_unsuspend_web_domains';
|
||||||
const V_UPD_WEB_DOMAIN_DISK = 'v_upd_web_domain_disk';
|
const V_DEL_WEB_DOMAIN = 'v_delete_web_domain';
|
||||||
const V_UPD_WEB_DOMAINS_DISK = 'v_upd_web_domains_disk';
|
// BACKUP
|
||||||
const V_UPD_WEB_DOMAIN_TRAFF = 'v_upd_web_domain_traff';
|
const V_LIST_SYS_USER_BACKUPS = 'v_list_user_backups';
|
||||||
const V_UPD_WEB_DOMAINS_TRAFF = 'v_upd_web_domains_traff';
|
// IP
|
||||||
const V_DEL_WEB_DOMAIN = 'v_del_web_domain';
|
const V_LIST_SYS_IPS = 'v_list_sys_ips';
|
||||||
|
const V_LIST_USER_IPS = 'v_list_user_ips';
|
||||||
|
const V_LIST_SYS_USER_IPS = 'v_list_sys_user_ips';
|
||||||
|
const V_ADD_SYS_IP = 'v_add_sys_ip';
|
||||||
|
const V_ADD_SYS_USER_IP = 'v_add_user_ip';
|
||||||
|
const V_CHANGE_SYS_IP_OWNER = 'v_change_sys_ip_owner';
|
||||||
|
const V_CHANGE_SYS_IP_NAME = 'v_change_sys_ip_name';
|
||||||
|
const V_CHANGE_SYS_IP_STATUS = 'v_change_sys_ip_status';
|
||||||
|
const V_DEL_SYS_IP = 'v_delete_sys_ip';
|
||||||
|
const V_UPD_SYS_IP = 'v_update_sys_ip';
|
||||||
|
const V_LIST_SYS_INTERFACES = 'v_list_sys_interfaces';
|
||||||
|
// DNS
|
||||||
|
const V_LIST_DNS_DOMAINS = 'v_list_dns_domains';
|
||||||
|
const V_LIST_DNS_DOMAIN_RECORDS = 'v_list_dns_domain';
|
||||||
|
const V_LIST_DNS_TEMPLATES = 'v_list_dns_templates';
|
||||||
|
const V_ADD_DNS_DOMAIN = 'v_add_dns_domain';
|
||||||
|
const V_ADD_DNS_DOMAIN_RECORD = 'v_add_dns_domain_record';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_IP = 'v_change_dns_domain_ip';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_SOA = 'v_change_dns_domain_soa';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_TPL = 'v_change_dns_domain_tpl';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_TTL = 'v_change_dns_domain_ttl';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_EXP = 'v_change_dns_domain_exp';
|
||||||
|
const V_CHANGE_DNS_DOMAIN_RECORD = 'v_change_dns_domain_record';
|
||||||
|
const V_SUSPEND_DNS_DOMAIN = 'v_suspend_dns_domain';
|
||||||
|
const V_UNSUSPEND_DNS_DOMAIN = 'v_unsuspend_dns_domain';
|
||||||
|
const V_DEL_DNS_DOMAIN = 'v_delete_dns_domain';
|
||||||
|
const V_DEL_DNS_DOMAIN_RECORD = 'v_delete_dns_domain_record';
|
||||||
// DB
|
// DB
|
||||||
const V_LIST_DB_BASES = 'v_list_db_bases';
|
const V_LIST_DB_BASES = 'v_list_db_bases';
|
||||||
const V_LIST_DB_HOSTS = 'v_list_db_hosts';
|
const V_LIST_DB_HOSTS = 'v_list_db_hosts';
|
||||||
const V_LIST_WEB_DOMAIN_ALIAS = 'v_list_web_domain_alias';
|
const V_LIST_WEB_DOMAIN_ALIAS = 'v_list_web_domain_alias';
|
||||||
const V_ADD_DB_BASE = 'v_add_db_base';
|
const V_ADD_DB_BASE = 'v_add_db_base';
|
||||||
const V_ADD_DB_HOST = 'v_add_db_host';
|
const V_ADD_DB_HOST = 'v_add_db_host';
|
||||||
|
const V_CHANGE_DB_PASSWORD = 'v_change_db_password';
|
||||||
|
const V_UPD_DB_BASE_DISK = 'v_update_db_base_disk';
|
||||||
|
const V_UPD_DB_BASES_DISK = 'v_update_db_bases_disk';
|
||||||
const V_SUSPEND_DB_BASE = 'v_suspend_db_base';
|
const V_SUSPEND_DB_BASE = 'v_suspend_db_base';
|
||||||
const V_SUSPEND_DB_BASES = 'v_suspend_db_bases';
|
const V_SUSPEND_DB_BASES = 'v_suspend_db_bases';
|
||||||
const V_UNSUSPEND_DB_BASE = 'v_unsuspend_db_base';
|
const V_UNSUSPEND_DB_BASE = 'v_unsuspend_db_base';
|
||||||
const V_UNSUSPEND_DB_BASES = 'v_unsuspend_db_bases';
|
const V_UNSUSPEND_DB_BASES = 'v_unsuspend_db_bases';
|
||||||
const V_CHANGE_DB_PASSWORD = 'v_change_db_password';
|
const V_DEL_DB_BASE = 'v_delete_db_base';
|
||||||
const V_DEL_DB_BASE = 'v_del_db_base';
|
const V_DEL_DB_HOST = 'v_delete_db_host';
|
||||||
const V_DEL_DB_HOST = 'v_del_db_host';
|
// CRON
|
||||||
const V_UPD_DB_BASE_DISK = 'v_upd_db_base_disk';
|
const V_LIST_CRON_JOBS = 'v_list_cron_jobs';
|
||||||
const V_UPD_DB_BASES_DISK = 'v_upd_db_bases_disk';
|
const V_ADD_CRON_JOB = 'v_add_cron_job';
|
||||||
const PARAM_DELIMETER = ' ';
|
const V_ADD_SYS_USER_REPORTS = 'v_add_user_reports';
|
||||||
|
const V_CHANGE_CRON_JOB = 'v_change_cron_job';
|
||||||
|
const V_SUSPEND_CRON_JOB = 'v_suspend_cron_job';
|
||||||
|
const V_SUSPEND_CRON_JOBS = 'v_suspend_cron_jobs';
|
||||||
|
const V_UNSUSPEND_CRON_JOB = 'v_unsuspend_cron_job';
|
||||||
|
const V_UNSUSPEND_CRON_JOBS = 'v_unsuspend_cron_jobs';
|
||||||
|
const V_DEL_CRON_JOB = 'v_delete_cron_job';
|
||||||
|
const V_DEL_SYS_USER_REPORTS = 'v_delete_user_reports';
|
||||||
|
// STATS
|
||||||
|
const V_LIST_SYS_RRD = 'v_list_sys_rrd json';
|
||||||
|
const V_UPDATE_SYS_RRD = 'v_update_sys_rrd';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Execute vesta command
|
* Execute vesta command
|
||||||
|
@ -140,7 +148,11 @@ class Vesta
|
||||||
if (!isset($cmd_command)) {
|
if (!isset($cmd_command)) {
|
||||||
throw new ProtectionException('No function name passed into Vesta::execute'); // TODO: move msg to Messages::
|
throw new ProtectionException('No function name passed into Vesta::execute'); // TODO: move msg to Messages::
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(!self::hasRights((int)VestaSession::getInstance()->getUserRole(), $cmd_command)){
|
||||||
|
return array('status' => 'TRUE');
|
||||||
|
}
|
||||||
|
|
||||||
$reply_type = $reply;
|
$reply_type = $reply;
|
||||||
if ($reply != AjaxHandler::JSON) {
|
if ($reply != AjaxHandler::JSON) {
|
||||||
$reply = '';
|
$reply = '';
|
||||||
|
@ -153,7 +165,7 @@ class Vesta
|
||||||
'reply' => $reply
|
'reply' => $reply
|
||||||
);
|
);
|
||||||
|
|
||||||
// e.g.: /usr/bin/sudo /usr/local/vesta/bin/v_list_sys_users vesta json
|
// e.g.: /usr/bin/sudo /usr/local/vesta/bin/v_list_users vesta json
|
||||||
$cmd = "{$params['sudo']} {$params['functions']}{$cmd_command} {$params['parameters']} {$params['reply']}";
|
$cmd = "{$params['sudo']} {$params['functions']}{$cmd_command} {$params['parameters']} {$params['reply']}";
|
||||||
|
|
||||||
exec($cmd, $output, $return);
|
exec($cmd, $output, $return);
|
||||||
|
@ -197,4 +209,55 @@ class Vesta
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* User Rights management
|
||||||
|
*
|
||||||
|
* @params array $commands
|
||||||
|
* @params int $role
|
||||||
|
* @return BOOL
|
||||||
|
*/
|
||||||
|
public function hasRights($role, $command)
|
||||||
|
{
|
||||||
|
return TRUE;
|
||||||
|
echo 'role - '.$role;
|
||||||
|
exit();
|
||||||
|
|
||||||
|
$rights = array(
|
||||||
|
self::ADMIN => array(),
|
||||||
|
self::USER => array(
|
||||||
|
// sys
|
||||||
|
self::V_LIST_SYS_CONFIG,
|
||||||
|
// user
|
||||||
|
self::V_GET_SYS_USER_VALUE, self::V_LIST_SYS_USERS, self::V_ADD_SYS_USER, self::V_CHANGE_SYS_USER_CONTACT, self::V_CHANGE_SYS_USER_NS, self::V_CHANGE_SYS_USER_PACKAGE, self::V_CHANGE_SYS_USER_PASSWORD, self::V_CHANGE_SYS_USER_SHELL, self::V_CHANGE_SYS_USER_ROLE, self::V_CHANGE_SYS_USER_NAME, self::V_SUSPEND_SYS_USER, self::V_UNSUSPEND_SYS_USER, self::V_DEL_SYS_USER,
|
||||||
|
'login_as',
|
||||||
|
|
||||||
|
// ip
|
||||||
|
self::V_LIST_SYS_IPS, self::V_ADD_SYS_IP, self::V_ADD_SYS_USER_IP, self::V_DEL_SYS_IP, self::V_UPD_SYS_IP, self::V_CHANGE_SYS_IP_OWNER, self::V_CHANGE_SYS_IP_NAME, self::V_CHANGE_SYS_IP_STATUS, self::V_UPD_SYS_IP, self::V_LIST_SYS_INTERFACES,
|
||||||
|
|
||||||
|
// web domain
|
||||||
|
self::V_UPD_WEB_DOMAIN_DISK, self::V_UPD_WEB_DOMAINS_DISK, self::V_UPD_WEB_DOMAIN_TRAFF, self::V_UPD_WEB_DOMAINS_TRAFF, self::V_SUSPEND_WEB_DOMAIN, self::V_SUSPEND_WEB_DOMAINS, self::V_UNSUSPEND_WEB_DOMAIN, self::V_UNSUSPEND_WEB_DOMAINS,
|
||||||
|
|
||||||
|
// dns
|
||||||
|
self::V_SUSPEND_DNS_DOMAIN, self::V_UNSUSPEND_DNS_DOMAIN,
|
||||||
|
|
||||||
|
// db
|
||||||
|
self::V_ADD_DB_HOST, self::V_DEL_DB_HOST, self::V_UPD_DB_BASE_DISK, self::V_UPD_DB_BASES_DISK, self::V_SUSPEND_DB_BASE, self::V_SUSPEND_DB_BASES, self::V_UNSUSPEND_DB_BASE, self::V_UNSUSPEND_DB_BASES,
|
||||||
|
|
||||||
|
// cron
|
||||||
|
self::V_ADD_SYS_USER_REPORTS, self::V_DEL_SYS_USER_REPORTS, self::V_SUSPEND_CRON_JOB, self::V_SUSPEND_CRON_JOBS, self::V_UNSUSPEND_CRON_JOB, self::V_UNSUSPEND_CRON_JOBS,
|
||||||
|
|
||||||
|
// backups
|
||||||
|
self::V_LIST_SYS_USER_BACKUPS
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
if(in_array($command, $rights[$role])){
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -50,13 +50,46 @@ class VestaSession
|
||||||
$user = array('uid' => $_SESSION['user']);
|
$user = array('uid' => $_SESSION['user']);
|
||||||
$user['DISK'] = 10000;
|
$user['DISK'] = 10000;
|
||||||
$user['BANDWIDTH'] = 10000;
|
$user['BANDWIDTH'] = 10000;
|
||||||
|
$user['role'] = $_SESSION['role'];
|
||||||
|
|
||||||
return $user;
|
return $user;
|
||||||
}
|
}
|
||||||
|
|
||||||
print json_encode(array('result' => "NOT_AUTHORISED"));
|
print json_encode(array('result' => "NOT_AUTHORISED"));
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
public function getUserRole()
|
||||||
|
{
|
||||||
|
// if (isset($_SESSION['user'])) {
|
||||||
|
if($_SESSION['user'] == 'vesta'){
|
||||||
|
return Vesta::ADMIN;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
return Vesta::USER;
|
||||||
|
}
|
||||||
|
// }
|
||||||
|
|
||||||
|
print json_encode(array('result' => "NOT_AUTHORISED"));
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function loginAs($login)
|
||||||
|
{
|
||||||
|
// TODO checkrights for login as
|
||||||
|
// if(Vesta::hasRights(self::getUserRole();, 'login_as')){
|
||||||
|
|
||||||
|
if(!$_SESSION['real_user'])
|
||||||
|
$_SESSION['real_user'] = $_SESSION['user'];
|
||||||
|
|
||||||
|
$_SESSION['user'] = $login;
|
||||||
|
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
public function logoutAs()
|
||||||
|
{
|
||||||
|
$_SESSION['user'] = $_SESSION['real_user'];
|
||||||
|
}
|
||||||
|
}
|
||||||
?>
|
?>
|
||||||
|
|