js updates. captcha + change password base

This commit is contained in:
Malishev Dmitry 2011-12-13 13:09:47 +02:00
parent 52dad1d079
commit 80822252af
32 changed files with 1396 additions and 2034 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

View file

@ -2,13 +2,16 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru">
<head>
<title>Vesta | IP</title>
<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" />
<!--[if lt IE 8]>
<link rel="stylesheet" type="text/css" href="http://dl.dropbox.com/u/1750887/projects/vesta2/css/ie.css" />
@ -46,17 +49,30 @@
</head>
<body>
<div id="page">
<div id="page" class="hidden">
<div class="outer">
<div id="header">
<div class="logo-box">
<h1 class="logo"><a href="#">Vesta panel <span>&nbsp;</span></a></h1>
</div>
<ul class="settings">
<li><a href="#">settings</a></li>
<li><a href="#">exit</a></li>
<li class="settings-item"><a href="#" class="item-title logged-as" id="user-name">...</a></li>
<li class="settings-item"><a href="#" class="item-title">profile</a></li>
<li class="settings-item"><a href="#" class="item-title do_action_view_profile_settings">settings</a></li>
<li class="settings-item"><a href="#" class="item-title do_action_profile_exit">exit</a></li>
</ul>
<ul class="extra-services">
<li class="service-item service-item_backups">
<span class="item-title">Backups</span>
<i class="item-devider"></i>
</li>
<li class="service-item">
<span class="item-title">Stats</span>
<i class="item-devider"></i>
</li>
</ul>
</div>
<div id="primary-nav-box">
<ul class="primary-nav cc">
<li class="section" id="USER">
@ -68,26 +84,27 @@
</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> blocked</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 Domain</span>
<span class="to-section">Web</span>
<i class="add-entry do_action_new_entry">&nbsp;</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> blocked</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">
@ -97,10 +114,11 @@
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> mails</span>
<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">
@ -111,10 +129,11 @@
</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> blocked</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">
@ -124,10 +143,11 @@
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> total records</span>
<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">
@ -137,11 +157,12 @@
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> ip entries</span>
<span class="def"><span class="num-blocked">0</span> blocked</span>
<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">
@ -151,11 +172,12 @@
<i class="add-entry do_action_new_entry">&nbsp;</i>
</dt>
<dd class="section-contains">
<span class="def"><span class="num-total">0</span> cron records</span>
<span class="def"><span class="num-blocked">0</span> blocked</span>
<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>
@ -163,16 +185,16 @@
<div class="b-console">
<div class="b-console-wrap">
<form class="b-console-form cc" action="#" method="post">
<form class="b-console-form cc" action="" method="post">
<fieldset>
<input class="b-console-field" type="text" value="/"/>
<input class="b-console-btn" type="submit" value="Go" />
<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>google.com</b> have been added <br />
<p class="b-console-status-message">domain <b>test.com</b> have been added <br />
</p>
<span class="b-console-status-action">cancel</span>
@ -189,30 +211,53 @@
<i class="icon do_action_new_entry">&nbsp;</i>
add new <span id="new-entry-keyword" class="do_action_new_entry">entry</span>
</a>
<div class="row-filters cc">
<div class="b-row-selector">
<div class="checkbox-selector cc">
<input class="styled" type="checkbox" value="" />
<span class="selector-title">385 Selected</span>
</div>
<div class="context-actions c-s-box">
<div class="b-cust-sel complex-select c-s-opt">
<input type="hidden" name="" value="" class="c-s-value-ref">
<span class="title c-s-opt c-s-title do_action_toggle_custom_select">Action</span>
<div class="cust-sel-arrow do_action_toggle_custom_select c-s-opt"><i>&nbsp;</i></div>
<div class="cust-sel-options complex-select-content c-s-opt hidden">
<div class="cust-sel-option ico_gray c-s-opt do_action_update_cs_value">
<input type="hidden" class="c-s-value" value="Suspend">
Suspend
</div>
<div class="cust-sel-option ico_green c-s-opt 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>
</div>
</div>
<div id="content">
<!-- -->
<!-- -->
</div>
</div>
</div>
<div id="content">
<div class="content-inner">
</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/tech.js"></script>
<script type="text/javascript" src="js/app.js"></script>
<script type="text/javascript" src="js/tech.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>
@ -224,8 +269,6 @@
<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" src="js/__init__.js"></script>
</body>
</html>

View file

@ -1,8 +1,19 @@
$(document).ready(function(){
try{
App.Ajax.request('MAIN.about', {}, function(reply) {
if (reply) {
App.Settings.VestaAbout.company_name = reply.data.company_name;
App.Settings.VestaAbout.company_email = reply.data.company_email;
App.Settings.VestaAbout.version = reply.data.version;
App.Settings.VestaAbout.version_name = reply.data.version_name;
}
});
$('document').ready(function() {
try {
App.Utils.detectBrowser();
App.Ref.init();
if ('undefined' != typeof App.Tmp.loadTAB) {
App.Env.world = 'USER';
// Disabled cookie tab restoring. Enable if needed
/*if ('undefined' != typeof App.Tmp.loadTAB) {
App.Env.world = App.Tmp.loadTAB;
}
@ -14,17 +25,17 @@ $(document).ready(function(){
else {
App.Env.world = App.Constants.TABS[0];
}
}
}*/
App.Pages.init();
App.Ref.init();
//App.View.start();
App.Core.listen();
App.Core.initMenu();
App.Helpers.liveValidate();
}catch(e){
$(document).bind('submit', function(evt) {
evt.preventDefault();
});
}
catch(e) {
fb.error(e);
}
});

View file

@ -20,7 +20,17 @@ App.Constants.DNS = 'DNS';
App.Constants.SUSPENDED_YES = 'yes';
App.Constants.DNS_TEMPLATES = {'default': 'Default'};
App.Constants.KEY = {};
App.Constants.KEY.ESC = 27;
App.Constants.KEY.ENTER = 13;
App.Constants.KEY.SPACE = 32;
App.Constants.KEY.BACKSPACE = 8;
App.Constants.KEY.UP = 38;
App.Constants.KEY.DOWN = 40;
App.Constants.KEY.CODED_NAME = {'27':'ESC', '13':'ENTER','32':'SPACE','8':'BACKSPACE','38':'UP','40':'DOWN'};
// Settings
App.Settings.PSW_MIN_LEN = 6;
App.Settings.FIELD_MAX_LEN = 32;
App.Settings.DAY_MAX_LEN = 2;
App.Settings.MONTH_MAX_LEN = 2;
@ -28,6 +38,7 @@ App.Settings.WDAY_MAX_LEN = 2;
App.Settings.HOURS_MAX_LEN = 2;
App.Settings.MINUTE_MAX_LEN = 2;
App.Settings.USER_VISIBLE_NS = 2;
App.Settings.USER_VISIBLE_WEB_TPL = 2;
App.Settings.NS_MIN = 2;
App.Settings.NS_MAX = 8;
App.Settings.ajax_url = 1;
@ -36,6 +47,8 @@ App.Settings.popup_conf = { 'centered' : true, 'bgcolor' : '#FF0000', 'l
App.Settings.PASSWORD_IMMUTE = '********';
App.Settings.AJAX_SYNCRONOUS = ['MAIN.getInitial'];
// Messages
App.Messages.total_dns_records = {single: 'total record', plural: 'total records'};
App.Messages.get = function(key, plural) {

View file

@ -1,22 +1,152 @@
App.Actions.authorize = function()
App.Actions.toggle_custom_select = function(evt)
{
if ($('#authorize-form').length > 0) {
return;
var elm = $(evt.target);
elm = elm.hasClass('complex-select') ? elm : elm.parents('.complex-select');
var ref = elm.find('.complex-select-content');
$('.s-c-highlighted').removeClass('s-c-highlighted');
if (ref.hasClass('hidden')) {
ref.removeClass('hidden');
App.Tmp.focusedComplexSelect = elm;
}
else {
ref.addClass('hidden');
}
App.View.popup('login');
}
App.Actions.update_cs_value = function(evt)
{
var elm = $(evt.target);
elm = elm.hasClass('cust-sel-option') ? elm : elm.parents('.cust-sel-option');
var val = elm.find('.c-s-value').val();fb.log(val);
elm.parents('.c-s-box').find('.c-s-title').text(val);
elm.parents('.c-s-box').find('.c-s-value-ref').val(val);
$('.complex-select-content').addClass('hidden');
}
App.Actions.do_change_password = function()
{
var params = {
email: $('#change-email').val(),
captcha: $('#captcha').val()
}
App.Ajax.request('MAIN.requestPassword', params, function(reply){
$('#captcha-img').attr('src', App.Helpers.generateUrl('captcha.php?')+Math.floor(Math.random() * 9999));
$('#captcha').val('');
if (reply.result) {
$('#change-psw-error').html('');
$('#change-psw-error').addClass('hidden');
$('#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');
$('.form-row').remove();
}
else {
$('#change-psw-error').html(reply.message);
$('#change-psw-error').removeClass('hidden');
}
});
}
App.Actions.back_to_login = function()
{
$('body').addClass('page-auth');
var tpl = App.Templates.get('login', 'popup');
tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('body').prepend(tpl.finalize());
$('#change-psw-block').remove();
$('.remember-me').checkBox();
}
App.Actions.change_password = function(evt)
{
evt.preventDefault();
if ($('#change-psw-block').length > 0) {
return $('#change-psw-block').show();
}
var tpl = App.Templates.get('change_psw', 'popup');
tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':CAPTCHA_URL', App.Helpers.generateUrl('captcha.php?')+Math.floor(Math.random() * 9999));
tpl.set(':CAPTCHA_URL_2', App.Helpers.generateUrl('captcha.php'));
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('#auth-block').remove();
$('body').prepend(tpl.finalize());
$('#change-psw-error').html('');
$('#change-psw-error').addClass('hidden');
}
App.Actions.profile_exit = function(evt)
{
evt.preventDefault();
App.Ajax.request('MAIN.logoff', {}, function(reply) {
location.href = '';
});
}
// show auth form
App.Actions.authorize = function()
{
$('#change-psw-block').remove();
if ($('#auth-block').length > 0) {
return;
}
$('#page').addClass('hidden');
$('body').addClass('page-auth');
var tpl = App.Templates.get('login', 'popup');
tpl.set(':LOGO_URL', App.Helpers.generateUrl('images/vesta-logo.png'));
tpl.set(':YEAR', new Date().getFullYear());
tpl.set(':EMAIL_REAL', App.Settings.VestaAbout.company_email);
tpl.set(':EMAIL', App.Settings.VestaAbout.company_name);
tpl.set(':VERSION', App.Settings.VestaAbout.version_name + ' ' + App.Settings.VestaAbout.version);
$('body').prepend(tpl.finalize());
$(document).ready(function(){
$('.remember-me').checkBox();
});
}
/**
* Embeds new item form
* if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm)
* custom method will be executes instead of default one
*/
App.Actions.new_entry = function() {
if ('undefined' != typeof App.Pages[App.Env.world].new_entry) {fb.log(1);
App.Pages[App.Env.world].new_entry();
} else {fb.log(2);
var form_id = App.Constants[App.Env.world + '_FORM_ID'];
$('#'+form_id).remove();
var build_method = App.Env.getWorldName() + '_form';
var tpl = App.HTML.Build[build_method]({}, form_id);
App.Ref.CONTENT.prepend(tpl);
App.Helpers.updateScreen();
}
}
// execute authorisation
App.Actions.do_authorize = function()
{
$('#authorize-error').text('');
App.Ajax.request('MAIN.signin', {'login':$('#authorize-login').val(), 'password':$('#authorize-login'.val())}, function(reply)
$('#auth-error').text('');
$('#auth-form-content').hide();
App.Ajax.request('MAIN.signin', {'login':$('#authorize-login').val(), 'password':$('#authorize-password').val()}, function(reply)
{
if (reply.result) {
if (reply.result == true) {
location.href = '';
}
else {
$('#authorize-error').text(reply.message);
$('#auth-error').text(reply.data.error_msg);
$('#auth-form-content').show();
$('#auth-error').removeClass('hidden');
}
});
}
@ -49,7 +179,20 @@ App.Actions.show_subform = function(evt)
App.Actions.view_template_settings = function(evt)
{
alert('TODO');
var elm = $(evt.target);
var ref = elm.hasClass('tpl-item') ? elm : elm.prev('.tpl-item');
var tpl_name = $(ref).val() || $(ref).text();
fb.log(tpl_name);
App.Helpers.openInnerPopup(elm, App.Env.initialParams.WEB_DOMAIN.TPL[tpl_name].DESCR || tpl_name);
}
App.Actions.view_dns_template_settings = function(evt)
{
var elm = $(evt.target);
var ref = elm.prev('.tpl-item');
var tpl_name = $(ref).val() || $(ref).text();
fb.log(tpl_name);
App.Helpers.openInnerPopup(elm, App.Env.initialParams.DNS.TPL[tpl_name].DESCR || tpl_name);
}
App.Actions.add_subrecord_dns = function(evt)
@ -63,24 +206,6 @@ App.Actions.add_subrecord_dns = function(evt)
}
}
/**
* Embeds new item form
* if exits custom method (App.Pages[ENVIRONMENT_NAME].newForm)
* custom method will be executes instead of default one
*/
App.Actions.new_entry = function() {
if ('undefined' != typeof App.Pages[App.Env.world].new_entry) {
App.Pages[App.Env.world].new_entry();
} else {
var form_id = App.Constants[App.Env.world + '_FORM_ID'];
$('#'+form_id).remove();
var build_method = App.Env.getWorldName() + '_form';
var tpl = App.HTML.Build[build_method]({}, form_id);
App.Ref.CONTENT.prepend(tpl);
App.Helpers.updateScreen();
}
}
// do_action_save
App.Actions.save_form = function(evt) {
var elm = $(evt.target);
@ -111,10 +236,13 @@ App.Actions.save_form = function(evt) {
}
// do_action_edit
App.Actions.edit = function(evt) {
App.Actions.edit = function(evt)
{
if ('undefined' != typeof App.Pages[App.Env.world].edit) {
App.Pages[App.Env.world].edit(evt);
} else {
}
else {
var elm = $(evt.target);
elm = elm.hasClass('row') ? elm : elm.parents('.row');
@ -123,8 +251,8 @@ App.Actions.edit = function(evt) {
var tpl = App.HTML.Build[build_method](options);
elm.replaceWith(tpl);
App.Helpers.disbleNotEditable();
//App.Helpers.updateScreen();
App.Helpers.disableNotEditable();
App.Helpers.updateScreen();
}
}
@ -158,8 +286,6 @@ App.Actions.suspend = function(evt)
var options = row.find('.source').val();
App.Ajax.request(App.Env.world+'.suspend', {spell: options}, function(reply) {
if (reply.result) {
//var tpl = App.Templates.get('SUSPENDED_TPL_SUSPENDED', 'general');
//$(elm).replaceWith(tpl.finalize());
App.Pages.prepareHTML();
App.Helpers.updateScreen();
}
@ -182,8 +308,6 @@ App.Actions.unsuspend = function(evt)
var options = row.find('.source').val();
App.Ajax.request(App.Env.world+'.unsuspend', {spell: options}, function(reply) {
if (reply.result) {
//var tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general');
//$(elm).replaceWith(tpl.finalize());
App.Pages.prepareHTML();
App.Helpers.updateScreen();
}
@ -322,7 +446,8 @@ App.Actions.add_form_ns = function(evt)
var tpl = App.Templates.get('NS_INPUT', 'user');
tpl.set(':NAME', '');
tpl.set(':NS_LABEL', 'NS');
elm.before(tpl.finalize());
var ref = $(elm).hasClass('form-row') ? elm : $(elm).parents('.form-row');
$(ref).before(tpl.finalize());
if ((total_nses + 1) == App.Settings.NS_MAX ) { // added last NS
$('.additional-ns-add', form).addClass('hidden');
@ -337,6 +462,10 @@ App.Actions.add_form_ns = function(evt)
App.Actions.delete_ns = function(evt)
{
var sure = confirm(App.i18n.getMessage('confirm'));
if (!sure) {
return;
}
var elm = $(evt.target);
form = elm.parents('.form:first');
@ -370,7 +499,11 @@ App.Actions.view_template_info = function(evt)
var options = ref.find('.source').val();
App.Ajax.request('DNS.getTemplateInfo', {spell: options}, function(reply) {
if (reply.result) {
App.Helpers.openInnerPopup(elm, reply.data);
var html = '';
$.each(reply.data, function(key) {
html += '<li><strong>'+key+':</strong> '+reply.data[key]+'</li>';
});
App.Helpers.openInnerPopup(elm, '<ul>'+html+'</ul>');
}
});
}
@ -385,3 +518,39 @@ App.Actions.toggle_stats_block = function(evt)
elm.parents('.stats-settings').find('.stats-block').addClass('hidden');
}
}
App.Actions.exec_v_console = function(evt)
{
evt.preventDefault();
App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases');
}
App.Actions.view_profile_settings = function(evt)
{
evt.preventDefault();
App.Helpers.openInnerPopup(evt.target, 'This functionality will be available in next releases');
}
App.Actions.select_all = function(evt)
{
$('.row').addClass('checked-row')
}
App.Actions.deselect_all = function(evt)
{
$('.row').removeClass('checked-row')
}
App.Actions.delete_selected = function(evt)
{
var selected = $('.checked-row');
if (selected.length == 0) {
return App.Helpers.alert('No entry selected. Please select at least one.');
}
var confirmed = confirm('You are about to delete ' + selected.length + ' entrie(s). Are you sure?');
if (!confirmed) {
return;
}
}

View file

@ -4,8 +4,6 @@ window.jsonParse=function(){var r="(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE
j){h=h.match(s);var e,c=h[0],l=false;if("{"===c)e={};else if("["===c)e=[];else{e=[];l=true}for(var b,d=[e],m=1-l,y=h.length;m<y;++m){c=h[m];var a;switch(c.charCodeAt(0)){default:a=d[0];a[b||a.length]=+c;b=void 0;break;case 34:c=c.substring(1,c.length-1);if(c.indexOf("\\")!==-1)c=c.replace(t,v);a=d[0];if(!b)if(a instanceof Array)b=a.length;else{b=c||w;break}a[b]=c;b=void 0;break;case 91:a=d[0];d.unshift(a[b||a.length]=[]);b=void 0;break;case 93:d.shift();break;case 102:a=d[0];a[b||a.length]=false;
b=void 0;break;case 110:a=d[0];a[b||a.length]=null;b=void 0;break;case 116:a=d[0];a[b||a.length]=true;b=void 0;break;case 123:a=d[0];d.unshift(a[b||a.length]={});b=void 0;break;case 125:d.shift();break}}if(l){if(d.length!==1)throw new Error;e=e[0]}else if(d.length)throw new Error;if(j){var p=function(n,o){var f=n[o];if(f&&typeof f==="object"){var i=null;for(var g in f)if(x.call(f,g)&&f!==n){var q=p(f,g);if(q!==void 0)f[g]=q;else{i||(i=[]);i.push(g)}}if(i)for(g=i.length;--g>=0;)delete f[i[g]]}return j.call(n,
o,f)};e=p({"":e},"")}return e}}();
(function($){$.toJSON=function(o)
{if(typeof(JSON)=='object'&&JSON.stringify)
return JSON.stringify(o);var type=typeof(o);if(o===null)
@ -85,11 +83,8 @@ var App = {
Helpers: {},
Filters: {},
i18n: {},
HTML: {
Build: {}
},
HTML: { Build: {}},
View:{
// pages related views
Pages: {
USER: {},
@ -112,7 +107,7 @@ var App = {
CRON: {}
},
Cache: {
clear: function(){} // stub method, will be used later
clear: function() {} // stub method, will be used later
},
Pages: {
USER: {},
@ -124,17 +119,15 @@ var App = {
CRON: {}
},
Ref: {},
Tmp: {},
Tmp: { AJAX_SYNCRONOUS:{} },
Thread: {
run: function(delay, ref)
{
setTimeout(function()
{
run: function(delay, ref) {
setTimeout(function() {
ref();
}, delay*10);
}
},
Settings: {},
Settings: { VestaAbout: { version: '2-1', version_name: 'OGRE', company_email: 'support@vestacp.com', company_name: 'VestaCP' } },
Templates: {
Templator: null,
Tpl: {},
@ -173,8 +166,29 @@ String.prototype.wrapperize = function(key, ns)
return tpl.finalize();
}
String.prototype.trim = function()
{
var str = this;
str = str.replace(/^\s+/, '');
for (var i = str.length - 1; i >= 0; i--) {
if (/\S/.test(str.charAt(i))) {
str = str.substring(0, i + 1);
break;
}
}
return str;
}
App.Ajax.request = function(jedi_method, data, callback)
{
if ($.inArray(jedi_method, App.Settings.AJAX_SYNCRONOUS) != -1) {
if (App.Tmp.AJAX_SYNCRONOUS[jedi_method] == true) {
return false;
}
else {
App.Tmp.AJAX_SYNCRONOUS[jedi_method] = true;
}
}
App.Helpers.beforeAjax(jedi_method);
$.ajax({
url: App.Helpers.getBackendUrl(),
@ -185,6 +199,9 @@ App.Ajax.request = function(jedi_method, data, callback)
async: true,
success: function(reply)
{
if ($.inArray(jedi_method, App.Settings.AJAX_SYNCRONOUS) != -1) {
App.Tmp.AJAX_SYNCRONOUS[jedi_method] = false;
}
reply = reply.replace(/\\'/gi, '');
reply = reply.replace(/\'/gi, '');
@ -196,10 +213,8 @@ App.Ajax.request = function(jedi_method, data, callback)
return App.Actions.authorize();
}
//timer.start();
callback && callback(reply);
App.Helpers.afterAjax();
//timer.stop(jedi_method);
},
error: function()
{
@ -218,16 +233,16 @@ timer.start = function()
timer.start_time = new Date();
}
timer.stop = function( msg )
timer.stop = function(msg)
{
timer.stop_time = new Date();
timer.print( msg );
timer.print(msg);
}
timer.print = function( msg )
timer.print = function(msg)
{
var passed = timer.stop_time - timer.start_time;
fb.info( (msg || '') + ': ' + passed / 1000 );
fb.info((msg || '') + ': ' + passed / 1000);
}

View file

@ -1,50 +1,39 @@
/*App.Core.action_reflector = {
'new_entry': App.Actions.newForm,
'cancel_form': App.Actions.cancelForm,
'save_form': App.Actions.saveForm,//App.Pages.IP.saveIpForm,
'remove': App.Actions.remove,//App.Pages.IP.deleteIp,
'cancel_dns_form': App.Pages.DNS.closeForm,
'save_dns_form': App.Pages.DNS.saveForm,
'edit': App.Actions.edit,
'embed_subform': App.Actions.embedSubform,
'form_help': App.Actions.showFormHelp,
'entry_help': App.Actions.showEntryHelp,
'close_popup': App.View.closePopup
};*/
//
// CORE
//
App.Core.listen = function(){
App.Core.listen = function()
{
fb.log('start listening');
$(document).bind('click', function(evt){
//App.Pages.IP.customListen && App.Pages.IP.customListen(evt);
$(document).bind('click', function(evt) {
App.Helpers.handleItemsRegisteredInBackground(evt);
var elm = $(evt.target);
var action = $(elm).attr('class');
if (!action) {
return fb.log(':)');
return fb.log('No action passed');
}
action = action.split('do_action_');
if(action.length < 2){
if (action.length < 2) {
if (elm.hasClass('check-this')) {
var ref = $(elm).parents('.row');
ref.hasClass('checked-row') ? ref.removeClass('checked-row') : ref.addClass('checked-row');
}
return; // no action found attached to the dom object
}
try{
// retrieve the action itself
action_with_params = action[1].split(' ');
try {
action_with_params = action[1].split(' ');// retrieve the action itself
action = action_with_params[0];
params = elm.find('.prm-'+action).value || null;
// TODO: filter params here
// Call the action
App.Core.__CALL__(evt, action, params);
}catch(e){
fb.error(e)
App.Core.__CALL__(evt, action);// Call the action
}
catch(e) {
fb.error(e);
}
});
$(document).bind('keyup', function(evt) {
fb.log(evt.keyCode);
if ('undefined' != typeof App.Constants.KEY.CODED_NAME[evt.keyCode]) {
var method_name = 'keyboard_' + App.Constants.KEY.CODED_NAME[evt.keyCode];
App.Helpers[method_name] && App.Helpers[method_name](evt);
}
});
}
@ -53,21 +42,24 @@ App.Core.listen = function(){
* Action caller
* if no action registered, execution will stop
*/
App.Core.__CALL__ = function(evt, action, params){
if('undefined' == typeof App.Actions[action]){
return fb.warn('No action registered for: "'+action+'". Stop propagation');
}else{
return App.Actions[action](evt, params);
App.Core.__CALL__ = function(evt, action)
{
if ('undefined' == typeof App.Actions[action]) {
return alert('No action registered for: "'+action+'". Stop propagation');
}
else{
return App.Actions[action](evt);
}
}
App.Core.initMenu = function(){
$('.section').bind('click', function(evt){
App.Core.initMenu = function()
{
$('.section').bind('click', function(evt) {
var elm = $(evt.target);
!elm.hasClass('section') ? elm = elm.parents('.section') : -1;
if(App.Env.world != elm.attr('id')){
if (App.Env.world != elm.attr('id')) {
App.Env.world = elm.attr('id');
App.Pages.init();
fb.warn('Switch page to: ' + App.Env.world);

View file

@ -1,6 +1,48 @@
App.Helpers.formatNumber = function(number, no_commas){
no_commas = no_commas || false;
number = number.toString().replace(/,/g, '');
var nStr = parseFloat(number).toFixed(2);
fb.info(nStr);
nStr = nStr.toString();
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = x.length > 1 ? '.' + x[1] : '';
if(!no_commas){
var rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
}
return x1 + x2;
}
App.Helpers.getHumanTabName = function()
{
if (App.Env.world == 'WEB_DOMAIN') {
return 'WEB DOMAIN';
}
if (App.Env.world == 'MAIL') {
return 'MAIL DOMAIN';
}
if (App.Env.world == 'DNS') {
return 'DNS DOMAIN';
}
if (App.Env.world == 'IP') {
return 'IP ADDRESS';
}
if (App.Env.world == 'CRON') {
return 'CRON JOB';
}
if (App.Env.world == 'DB') {
return 'DATABASE';
}
return App.Env.world;
}
App.Helpers.scrollTo = function(elm)
{
fb.log(elm);
var scroll_to = $(elm).offset().top;
if (scroll_to > 1000) {
var scroll_time = 300;
@ -8,9 +50,7 @@ App.Helpers.scrollTo = function(elm)
else {
var scroll_time = 550;
}
$('html, body').animate({
'scrollTop': scroll_to
}, scroll_time);
$('html, body').animate({ 'scrollTop': scroll_to }, scroll_time);
}
App.Helpers.getMbHumanMeasure = function(val)
@ -31,6 +71,8 @@ App.Helpers.getMbHuman = function(val, only_measure)
var terabyte = gigabyte * 1024;
var precision = 0;
return only_measure ? 'MB' : (bytes / megabyte).toFixed(precision);
/*if ((bytes >= 0) && (bytes < kilobyte)) {
return bytes + ' B';
@ -54,35 +96,20 @@ App.Helpers.getMbHuman = function(val, only_measure)
App.Helpers.getFirst = function(obj)
{
try{ // TODO: remove try / catch
var first = {};
var key = App.Helpers.getFirstKey(obj);
first[key] = obj[key];
return first;
}
catch(e){
fb.error(e);
}
return false;
}
App.Helpers.getFirstKey = function(obj)
{
try{ // TODO: remove try / catch
for (key in obj) break;
return key;
}
catch(e){
fb.error(e);
}
return false;
}
App.Helpers.updateInitial = function()
{
// TODO: need api method
$.each(App.Env.initialParams.totals, function(key) {
var item = App.Env.initialParams.totals[key];
var expr_id = '#'+key;
@ -99,6 +126,8 @@ App.Helpers.updateInitial = function()
}
}
});
$('#user-name').html(App.Env.initialParams.PROFILE.uid);
$('#page').removeClass('hidden');
}
App.Helpers.beforeAjax = function(jedi_method)
@ -137,7 +166,7 @@ App.Helpers.showLoading = function()
App.Helpers.getFirstValue = function(obj)
{
var first = '';
$.each(obj, function(key, i){
$.each(obj, function(key, i) {
return first = obj[key];
});
@ -146,9 +175,6 @@ App.Helpers.getFirstValue = function(obj)
App.Helpers.evalJSON = function(str)
{
/*str = str.replace(/\\'/gi, '');
str = str.replace(/\'/gi, '');
fb.warn(str);*/
return $.parseJSON(str);
}
@ -214,14 +240,13 @@ App.Helpers.getFormValuesFromElement = function(ref)
App.Helpers.updateScreen = function()
{
//Custom.init();
App.Ajax.request('MAIN.getInitial', {}, function(reply){
App.Env.initialParams = reply.data;
App.Helpers.updateInitial();
});
//$(document.body).find('select').each(function(i, o){
// $(o).selectbox();
//});
$('.row:first').addClass('first-row');
Custom.init();
}
App.Helpers.alert = function(msg)
@ -231,18 +256,12 @@ App.Helpers.alert = function(msg)
App.Helpers.isEmpty = function(o)
{
return '({})' == o.toSource() || '[]' == o.toSource();
return jQuery.isEmptyObject(o);
}
App.Helpers.liveValidate = function()
{
//return;
$('input').live('blur', function(evt)
{
fb.log('BLUR');
var elm = $(evt.target);
fb.log(elm.attr('TAGNAME'));
});
}
App.Helpers.generatePassword = function()
@ -284,28 +303,15 @@ App.Helpers.closeInnerPopup = function(evt)
App.Helpers.getUploadUrl = function()
{
var url_parts = location.href.split('#');
if (url_parts.length > 1) {
var tab = url_parts[url_parts.length - 1];
if ($.inArray(tab, App.Constants.TABS) != -1) {
App.Tmp.loadTAB = tab;
}
}
var url_parts = location.href.split('?', 1);
var url = url_parts[0];
url_parts = url.split('/');
if (url_parts[url_parts.length -1] == 'index.html') {
url_parts[url_parts.length -1] = 'vesta/upload.php';
}
else {
url_parts.push('vesta/upload.php');
}
return url_parts.join('/');
return App.Helpers.generateUrl('vesta/upload.php');
}
App.Helpers.getBackendUrl = function()
{
return App.Helpers.generateUrl('dispatch.php');
}
App.Helpers.generateUrl = function(to_file)
{
var url_parts = location.href.split('#');
if (url_parts.length > 1) {
@ -319,16 +325,16 @@ App.Helpers.getBackendUrl = function()
var url = url_parts[0];
url_parts = url.split('/');
if (url_parts[url_parts.length -1] == 'index.html') {
url_parts[url_parts.length -1] = 'dispatch.php';
url_parts[url_parts.length -1] = to_file;
}
else {
url_parts.push('dispatch.php');
url_parts.push(to_file);
}
return url_parts.join('/');
return url_parts.join('/').replace('#', '');
}
App.Helpers.disbleNotEditable = function()
App.Helpers.disableNotEditable = function()
{
if ('undefined' == typeof App.Settings.Imutable[App.Env.world]) {
return false;
@ -345,3 +351,77 @@ App.Helpers.disbleNotEditable = function()
}
});
}
App.Helpers.handleItemsRegisteredInBackground = function(evt)
{
// complex selects
if (!$(evt.target).hasClass('c-s-opt')) { // complex select option
$('.complex-select-content').addClass('hidden');
}
}
//
// HELPERS
//
App.Helpers.keyboard_ESC = function()
{
$('.complex-select-content').addClass('hidden');
App.Tmp.focusedComplexSelect = null;
}
App.Helpers.keyboard_ENTER = function()
{
if (null != App.Tmp.focusedComplexSelectInput) {
var val = App.Tmp.focusedComplexSelectInput.find('.c-s-value').val();
App.Tmp.focusedComplexSelect.find('.c-s-title').text(val);
App.Tmp.focusedComplexSelect.find('.c-s-value-ref').val(val);
$('.complex-select-content').addClass('hidden');
}
}
App.Helpers.keyboard_DOWN = function(evt)
{
if (null != App.Tmp.focusedComplexSelect) {
App.Tmp.focusedComplexSelect.find('.complex-select-content').removeClass('hidden');
$('.s-c-highlighted').removeClass('s-c-highlighted');
if (null == App.Tmp.focusedComplexSelectInput) {
App.Tmp.focusedComplexSelectInput = App.Tmp.focusedComplexSelect.find('.cust-sel-option:first');
App.Tmp.focusedComplexSelectInput.addClass('s-c-highlighted');
}
else {
var ref = App.Tmp.focusedComplexSelectInput.next();
App.Tmp.focusedComplexSelectInput = ref;
if (ref.length == 1) {
ref.addClass('s-c-highlighted');
}
else {
App.Tmp.focusedComplexSelectInput = App.Tmp.focusedComplexSelect.find('.cust-sel-option:first');
App.Tmp.focusedComplexSelectInput.addClass('s-c-highlighted');
}
}
}
}
App.Helpers.keyboard_UP = function(evt)
{
if (null != App.Tmp.focusedComplexSelect) {
App.Tmp.focusedComplexSelect.find('.complex-select-content').removeClass('hidden');
$('.s-c-highlighted').removeClass('s-c-highlighted');
if (null == App.Tmp.focusedComplexSelectInput) {
App.Tmp.focusedComplexSelectInput = App.Tmp.focusedComplexSelect.find('.cust-sel-option:last');
App.Tmp.focusedComplexSelectInput.addClass('s-c-highlighted');
}
else {
var ref = App.Tmp.focusedComplexSelectInput.prev();
App.Tmp.focusedComplexSelectInput = ref;
if (ref.length == 1) {
ref.addClass('s-c-highlighted');
}
else {
App.Tmp.focusedComplexSelectInput = App.Tmp.focusedComplexSelect.find('.cust-sel-option:last');
App.Tmp.focusedComplexSelectInput.addClass('s-c-highlighted');
}
}
}
}

View file

@ -95,7 +95,7 @@ App.HTML.Build.dns_form = function(options, id)
}
App.HTML.Build.ip_form = function(options, id)
{try{
{
if('undefined' == typeof App.Env.initialParams) {
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
}
@ -118,7 +118,7 @@ App.HTML.Build.ip_form = function(options, id)
tpl.set(':NAME', options.NAME || '');
tpl = App.HTML.Build.ip_selects(tpl, options);
}catch(e){fb.error(e);}
return tpl.finalize();
}
@ -162,7 +162,7 @@ App.HTML.Build.dns_entry = function(o, is_new)
var now = new Date();
tpl.set(':DATE', now.format("d.mm.yyyy"));
}
tpl.set(':TPL_VAL', o.TPL);
/*if (App.Constants.SUSPENDED_YES == o.SUSPEND) {
var sub_tpl = App.Templates.get('SUSPENDED_TPL_NOT_SUSPENDED', 'general');
}
@ -179,14 +179,22 @@ App.HTML.Build.user_entry = function(o, key)
{
var processed_data = {
'NICKNAME' : key,
'U_DISK_PERCENTAGE' : o.U_DISK > 0 ? o.U_DISK / o.DISK_QUOTA * 100 : 0.01,
'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? o.U_BANDWIDTH / o.BANDWIDTH * 100 : 0.01,
'U_DISK_PERCENTAGE' : o.U_DISK > 0 ? o.U_DISK / o.DISK_QUOTA * 100 : 1,
'U_BANDWIDTH_PERCENTAGE': o.U_BANDWIDTH > 0 ? o.U_BANDWIDTH / o.BANDWIDTH * 100 : 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(o.DISK_QUOTA),
'BANDWIDTH_MEASURE' : App.Helpers.getMbHumanMeasure(o.BANDWIDTH),
'BANDWIDTH' : App.Helpers.getMbHuman(o.BANDWIDTH),
'DISK_QUOTA' : App.Helpers.getMbHuman(o.DISK_QUOTA)
};
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', 'user');
tpl = App.HTML.setTplKeys(tpl, o);
@ -197,15 +205,18 @@ App.HTML.Build.user_entry = function(o, key)
$([1,2,3,4,5,6,7,8]).each(function(i, index)
{
if (o['NS'+index].trim() != '') {
var key = 'NS'+index;
if ('undefined' != typeof o[key]) {
if (o[key].trim() != '') {
var tpl_ns = App.Templates.get('NS_RECORD', 'user');
tpl_ns.set(':NAME', o['NS'+index]);
tpl_ns.set(':NAME', o[key]);
var tpl_finalized = tpl_ns.finalize();
ns_full[ns_full.length++] = tpl_finalized;
if (i < App.Settings.USER_VISIBLE_NS) {
ns[ns.length++] = tpl_finalized;
}
}
}
});
if (ns_full.length <= App.Settings.USER_VISIBLE_NS) {
@ -219,7 +230,36 @@ App.HTML.Build.user_entry = function(o, key)
tpl.set(':NS', ns_custom.finalize());
}
tpl = App.HTML.Build.user_web_tpl(tpl, o);
tpl.set(':REPORTS_ENABLED', o.REPORTS_ENABLED == 'yes' ? 'enabled' : 'DISABLED');
if (o.U_DISK_PERCENTAGE > 100) {
var tpl_over = App.Templates.get('over_bar', 'general');
var difference = parseInt(o.U_DISK_PERCENTAGE, 10) - 100;
tpl_over.set(':OVER_PERCENTS', difference);
tpl_over.set(':OVER_PERCENTS_2', difference);
tpl.set(':OVER_BAR', tpl_over.finalize());
tpl.set(':U_DISK_PERCENTAGE_3', 100);
tpl.set(':OVER_DRAFT_VALUE', 'overdraft');
}
else {
tpl.set(':OVER_BAR', '');
tpl.set(':OVER_DRAFT_VALUE', '');
}
// OVER BANDWIDTH
if (o.U_BANDWIDTH_PERCENTAGE > 100) {
var tpl_over = App.Templates.get('over_bar', 'general');
var difference = parseInt(o.U_BANDWIDTH_PERCENTAGE, 10) - 100;
tpl_over.set(':OVER_PERCENTS', difference);
tpl_over.set(':OVER_PERCENTS_2', difference);
tpl.set(':OVER_BAR_2', tpl_over.finalize());
tpl.set(':U_BANDWIDTH_PERCENTAGE_3', 100);
tpl.set(':OVER_DRAFT_VALUE_2', 'overdraft');
}
else {
tpl.set(':OVER_BAR_2', '');
tpl.set(':OVER_DRAFT_VALUE_2', '');
}
return tpl.finalize();
}
@ -249,6 +289,10 @@ App.HTML.Build.user_form = function(options, id)
options = !App.Helpers.isEmpty(options) ? options : App.Empty.USER;
if (in_edit == true) {
options.PASSWORD = App.Settings.PASSWORD_IMMUTE;
// NS
var ns = [];
$([3,4,5,6,7,8]).each(function(i, index)
@ -263,8 +307,9 @@ App.HTML.Build.user_form = function(options, id)
ns[ns.length++] = App.Templates.get('PLUS_ONE_NS', 'user').finalize();
tpl.set(':NS', ns.done());
if (in_edit == true) {
options.PASSWORD = App.Settings.PASSWORD_IMMUTE;
}
else {
tpl.set(':NS', '');
}
tpl = App.HTML.setTplKeys(tpl, options, true);
tpl = App.HTML.Build.user_selects(tpl, options);
@ -276,6 +321,10 @@ App.HTML.Build.user_form = function(options, id)
tpl.set(':CHECKED', '');
}
if (!in_edit) {
tpl.set(':REPORTS_ENABLED_EDITABLE', 'hidden');
}
return tpl.finalize();
}
@ -303,6 +352,9 @@ App.HTML.Build.web_domain_entry = function(o, key)
tpl.set(':STATS_AUTH', '');
}
tpl.set(':DISK', App.Env.initialParams.PROFILE.BANDWIDTH);
tpl.set(':BANDWIDTH', App.Env.initialParams.PROFILE.DISK);
return tpl.finalize();
}
@ -452,7 +504,7 @@ App.HTML.Build.cron_entry = function(o, key)
App.HTML.Build.cron_form = function(options, id)
{try{
{
if('undefined' == typeof App.Env.initialParams) {
return alert('PLease wait a bit. Some background processes are not yet executed. Thank you for patience.');
}
@ -472,13 +524,6 @@ App.HTML.Build.cron_form = function(options, id)
options = !App.Helpers.isEmpty(options) ? options : {DAY:'', MONTH: '', WDAY:'',HOUR:'',CMD:'',MIN:''};
tpl = App.HTML.setTplKeys(tpl, options);
/*tpl.set(':id', id || '');
tpl.set(':IP_ADDRESS', options.IP_ADDRESS || '');
tpl.set(':NETMASK', options.NETMASK || '');
tpl.set(':NAME', options.NAME || '');*/
//tpl = App.HTML.Build.ip_selects(tpl, options);
}catch(e){fb.error(e);}
return tpl.finalize();
}
@ -502,7 +547,6 @@ App.HTML.Build.dns_subrecord = function(record)
tpl.set(':RECORD', record.RECORD || '');
tpl.set(':RECORD_VALUE', record.RECORD_VALUE || '');
tpl.set(':RECORD_ID', record.RECORD_ID || '');
//tpl.set(':RECORD_TYPE_VALUE', '');
tpl.set(':RECORD_TYPE', App.HTML.Build.options(App.Env.initialParams.DNS.record.RECORD_TYPE, (record.RECORD_TYPE || -1)));
return tpl;
@ -612,8 +656,11 @@ App.HTML.Build.dns_selects = function(tpl, options)
{
try {
// TPL
var obj = App.Env.initialParams.DNS.TPL;
var opts = App.HTML.Build.options(obj, options.TPL);
var obj = {};
$.each(App.Env.initialParams.DNS.TPL, function(key) {
obj[key] = key;
});
var opts = App.HTML.Build.options(obj, options.PACKAGE);
tpl.set(':TPL', opts);
tpl.set(':TPL_DEFAULT_VALUE', options.TPL || App.Helpers.getFirstKey(obj));
}
@ -633,17 +680,18 @@ App.HTML.Build.web_domain_selects = function(tpl, options)
tpl.set(':IP_OPTIONS', opts);
// TPL
var obj = App.Env.initialParams.WEB_DOMAIN.TPL;
var obj = {};
$.each(App.Env.initialParams.WEB_DOMAIN.TPL, function(key) {
obj[key] = key;
});
//var obj = App.Env.initialParams.WEB_DOMAIN.TPL;
var opts = App.HTML.Build.options(obj, options.TPL);
tpl.set(':TPL_OPTIONS', opts);
// TPL
// STAT
var obj = App.Env.initialParams.WEB_DOMAIN.STAT;
var opts = App.HTML.Build.options(obj, options.STAT);
tpl.set(':STAT_OPTIONS', opts);
//<input type="checkbox" name="STATS" ~!:stats_checked~!="" value="~!:STATS~!" class="not-styled">\
}
catch (e) {
return tpl;
@ -652,6 +700,38 @@ App.HTML.Build.web_domain_selects = function(tpl, options)
return tpl;
}
App.HTML.Build.user_web_tpl = function(tpl, o)
{
var wt = [];
var wt_full = [];
var templates = o.WEB_TPL;
templates = templates.split(',');
if (templates.length == 0) {
templates = templates.split(' ');
}
$(templates).each(function(i, web_tpl) {
var tpl_wt = App.Templates.get('WEB_TPL', 'user');
tpl_wt.set(':NAME', web_tpl);
var tpl_finalized = tpl_wt.finalize();
wt_full[wt_full.length++] = tpl_finalized;
if (i < App.Settings.USER_VISIBLE_WEB_TPL) {
wt[wt.length++] = tpl_finalized;
}
});
if (templates.length <= App.Settings.USER_VISIBLE_NS) {
tpl.set(':WEB_TPL', wt.done());
}
else {
var wt_custom = App.Templates.get('WEB_TPL_MINIMIZED', 'user');
wt_custom.set(':WEB_TPL_MINI', wt.done());
wt_custom.set(':WEB_TPL_FULL', wt_full.done());
wt_custom.set(':MORE_NUMBER', Math.abs(App.Settings.USER_VISIBLE_NS - wt_full.length));
tpl.set(':WEB_TPL', wt_custom.finalize());
}
return tpl;
}

View file

@ -1,132 +0,0 @@
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

View file

@ -1,396 +0,0 @@
/**
* 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;
}
};
}();

View file

@ -1,153 +0,0 @@
/*
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;

View file

@ -1,167 +0,0 @@
/*!
* 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);

View file

@ -1,285 +0,0 @@
/*!
* 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);
;

View file

@ -1,209 +0,0 @@
/*
* $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);

View file

@ -1 +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]).hasClass("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;

View file

@ -21,7 +21,7 @@ App.Model.WEB_DOMAIN.loadList = function()
App.Model.MAIL.loadList = function()
{
//App.Ajax.request('MAIL.getList', {}, App.View.listItems);
App.Ref.CONTENT.html('<center><h1 style="padding-top: 20px; font-size: 28px; position: absolute; margin-left: 351px; color: white; text-shadow: 2px 1px 1px rgb(65, 124, 213);">Under maintanance</h1><img width="900px" src="http://dev.vestacp.com:8083/images/Asteroid_Vesta.jpg"></center>');
App.Ref.CONTENT.html('<center><h1 style="padding-top: 20px; font-size: 28px; position: absolute; margin-left: 351px; color: white; text-shadow: 2px 1px 1px rgb(65, 124, 213);">Under maintanance</h1><img width="900px" src="'+App.Helpers.generateUrl('images/Asteroid_Vesta.jpg')+'"></center>');
}
App.Model.DB.loadList = function()

View file

@ -1,11 +1,10 @@
App.Pages.init = function(){
App.Ajax.request('MAIN.getInitial', {}, function(reply){
App.Pages.init = function()
{
App.Ajax.request('MAIN.getInitial', {}, function(reply) {
App.Env.initialParams = reply.data;
App.Helpers.updateInitial();
});
App.Pages.prepareHTML();
$('.section.active').removeClass('active');
$('#'+App.Env.world).addClass('active');
@ -22,7 +21,8 @@ App.Pages.prepareHTML = function()
else {
App.Model[App.Env.world].loadList();
}
$('#new-entry-keyword').text(App.Env.world.toLowerCase().replace('_', ' '));
$('#new-entry-keyword').text(App.Helpers.getHumanTabName());
document.title = 'Vesta | ' + App.Helpers.getHumanTabName();
}
App.Pages.DNS.showSubform = function(ref)
@ -42,14 +42,6 @@ App.Pages.DNS.showSubform = function(ref)
});
}
App.Pages.DNS.edit = function(elm) {
var options = elm.find('.source').val();
fb.warn(elm);
fb.warn(options);
var tpl = App.HTML.Build.dns_form(options);
elm.replaceWith(tpl);
}
App.Pages.USER.new_entry = function(evt)
{
var form_id = App.Constants[App.Env.world + '_FORM_ID'];
@ -76,6 +68,25 @@ App.Pages.WEB_DOMAIN.new_entry = function(evt)
$('#'+form_id).find('.ssl-cert-input-dummy:first').replaceWith(ssl_cert_upload);
}
App.Pages.WEB_DOMAIN.edit = function(evt)
{
var elm = $(evt.target);
elm = elm.hasClass('row') ? elm : elm.parents('.row');
var options = elm.find('.source').val();
var build_method = App.Env.getWorldName() + '_form';
var tpl = App.HTML.Build[build_method](options);
// ssls uploads
var ssl_key_upload = App.HTML.Build.ssl_key_file();
var ssl_cert_upload = App.HTML.Build.ssl_cert_file();
tpl = tpl.replace('<span class="ssl-key-input-dummy">...</span>', ssl_key_upload);
tpl = tpl.replace('<span class="ssl-cert-input-dummy">...</span>', ssl_cert_upload);
elm.replaceWith(tpl);
App.Helpers.disableNotEditable();
App.Helpers.updateScreen();
}
App.Pages.WEB_DOMAIN.setSSL = function(type, frame)
{
var txt = App.Helpers.evalJSON(content);

View file

@ -1,4 +1,4 @@
App.Ref.init = function(){
App.Ref.CONSOLE_INPUT = $('#console').find('.b-console-field');
App.Ref.CONTENT = $('#content');
App.Ref.CONTENT = $('#content .content-inner');
}

View file

@ -16,8 +16,9 @@ App.Templates.html = {
"Well," the farmer said, "I didn\'t have anymore rope, so I took off my belt and tied her tail to the rafter. In that moment, my pants fell down and my wife walked in ... Some things you just can\'t explain."']
},
general: {
loading: ['<div id="loading" style="top: 0;font-size:19px;font-weight: bol;position:fixed;width: 150px; background-color:yellow;z-index: 9999; padding: 8px;left: 50%;margin-left:-75px;">\
<center>Loading...</center>\
over_bar: ['<span style="width:~!:OVER_PERCENTS~!%;right:-~!:OVER_PERCENTS_2~!%;" class="bar_overdraft"></span>'],
loading: ['<div id="loading" style="border-radius: 0 0 6px 6px;top: 0;font-size:19px;font-weight: bol;position:fixed;width: 150px; background-color:#6E6E62;z-index: 9999; padding: 8px;left: 50%;margin-left:-75px;">\
<center><div style="width: 105px; height:30px;background-image: url(\'../images/loading.png\');"></center>\
</div>'],
popup: ['<div class="black_overlay" id="popup-bg"></div>\
<div class="popup_content" id="popup"><button class="do_action_close_popup">close</button>~!:content~!</div>'],
@ -36,7 +37,74 @@ App.Templates.html = {
},
popup: {
error: ['<div class="error"><center><h1 style="color: red;">Important: An Error Has Occured.</h1><hr></center>&nbsp;&nbsp;&nbsp;&nbsp;Something went wrong and some of your actions can be not saved in system. Mostly, it happens when you have network connection errors.<br>,&nbsp;&nbsp;&nbsp;&nbsp;However, please notify us about the situation. It would be helpfull if you will write us approximate time the error occured and last actions you were performing. You send your petition on <a href="mail_to">this email: BLABLA</a>,<br><br><center><span style="color: rgb(92, 92, 92);">Sorry for inconvinience. (We recommend you to reload the page)</span></center></div>'],
login: ['<div class="error" id="authorize-form"><center><h1 style="color: red;">Please authorize.</h1><hr><div id="auth-error" style="color:red"></div>Login: <input type="text" id="authorize-login" / ><br/>Password: <input type="password" id="authorize-password"/><br /><button class="do_action_do_authorize">Log in</button></center></center></div>']
change_psw: [
'<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="~!:LOGO_URL~!" class="vesta-logo">\
<div class="b-client-title">\
<span class="client-title-wrap">~!:VERSION~!<i class="planets">&nbsp;</i></span>\
</div>\
<form id="change_psw-form" method="post" action="#" class="auth">\
<div class="form-row cc">\
<label for="change-email" class="field-label">Email</label>\
<input type="text" tabindex="1" id="change-email" class="field-text">\
</div>\
<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>\
<input type="text" id="captcha" class="field-text" style="margin-left: 50px; width: 240px;">\
</div>\
<div id="change-psw-success" class="success-box hidden"></div>\
<div id="change-psw-error" class="error-box hidden"></div>\
<div class="form-row cc" style="width: 438px">\
<div class="b-remember">\
<span class="remember-me">&nbsp;</span>\
</div>\
<input type="submit" tabindex="4" value="Send confirmation" class="sumbit-btn do_action_do_change_password">\
</div>\
</form>\
<p class="forgot-pwd"><a href="#" class="forgot-pwd-url do_action_back_to_login">Back to login?</a></p>\
<div class="footnotes cc">\
<p class="additional-info">For questions please contact <a href="mailto:~!:EMAIL_REAL~!" class="questions-url">~!:EMAIL~!</a></p>\
<address class="imprint">&copy; ~!:YEAR~! Vesta Control Panel</address>\
</div>\
</div>\
</div>\
</div>'
],
login: ['<div id="auth-block" class="page2">\
<div class="b-auth-form">\
<div class="b-auth-form-wrap">\
<img width="72" height="24" alt="" src="~!:LOGO_URL~!" class="vesta-logo">\
<div class="b-client-title">\
<span class="client-title-wrap">~!:VERSION~!<i class="planets">&nbsp;</i></span>\
</div>\
<form id="login-form" method="post" action="#" class="auth">\
<div class="form-row cc">\
<label for="email" class="field-label">Email</label>\
<input type="text" tabindex="1" id="authorize-login" class="field-text">\
</div>\
<div class="form-row cc">\
<label for="password" class="field-label">Password</label>\
<input type="password" tabindex="2" id="authorize-password" class="field-text">\
</div>\
<div id="auth-error" class="error-box hidden"></div>\
<div class="form-row last-row cc">\
<div class="b-remember">\
<input type="checkbox" tabindex="3" value="1" name="remember_me" id="remember-me" class="remember-me ui-helper-hidden-accessible">\
<label for="remember-me" class="remember-label ui-checkbox">remember me</label>\
</div>\
<input type="submit" tabindex="4" value="enter" class="sumbit-btn do_action_do_authorize">\
</div>\
</form>\
<p class="forgot-pwd"><a href="#" class="forgot-pwd-url do_action_change_password">forgot password?</a></p>\
<div class="footnotes cc">\
<p class="additional-info">For questions please contact <a href="mailto:~!:EMAIL_REAL~!" class="questions-url">~!:EMAIL~!</a></p>\
<address class="imprint">&copy; ~!:YEAR~! Vesta Control Panel</address>\
</div>\
</div>\
</div>\
</div>']
},
dates: {
'lock_plan_date' : ['<button class="do.savePlanDate(~!:task_id~!)">Lock plan dates</button><button class="do.lockPlanDate(~!:task_id~!)">Lock plan dates</button>'],
@ -65,7 +133,7 @@ App.Templates.html = {
<div class="form-row dns-template-box cc">\
<label for="#" class="field-label">template:</label>\
<span class="select" id="selecttemplate">~!:TPL_DEFAULT_VALUE~!</span>\
<select name="TPL" class="styled">\
<select name="TPL" class="styled tpl-item">\
~!:TPL~!\
</select>\
<span class="context-settings do_action_view_template_settings">View template settings</span>\
@ -111,7 +179,8 @@ App.Templates.html = {
<span class="ip-adr">~!:IP~!</span>\
<span class="prop-box template-box">\
<span class="prop-title">template:</span>\
<span class="prop-value do_action_view_template_info">~!:TPL~!</span>\
<input type="hidden" class="tpl-item" value="~!:TPL_VAL~!"/>\
<span class="prop-value do_action_view_dns_template_settings">~!:TPL~!</span>\
</span>\
</div>\
</div>\
@ -155,7 +224,7 @@ App.Templates.html = {
<div class="field-box dns-type-box">\
<label for="#" class="field-label">type:</label>\
<!-- span class="select RECORD_TYPE" id="selectRECORD_TYPE">~!:RECORD_TYPE_VALUE~!</span -->\
<select name="RECORD_TYPE" class="not-styled" style="width:70px">\
<select name="RECORD_TYPE" class="styled">\
~!:RECORD_TYPE~!\
</select>\
</div>\
@ -180,14 +249,14 @@ App.Templates.html = {
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">owner:</label>\
<select name="OWNER" class="not-styled OWNER">\
<select name="OWNER" class="styled OWNER">\
~!:owner_options~!\
</select>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">status:</label>\
<!-- span class="select" id="select">shared</span -->\
<select class="not-styled status" name="STATUS">\
<select class="styled status" name="STATUS">\
~!:status_options~!\
</select>\
</div>\
@ -198,7 +267,7 @@ App.Templates.html = {
<div class="form-row cc">\
<label for="#" class="field-label">interface:</label>\
<!-- span class="select" id="select">eth1</span -->\
<select class="not-styled interface" name="INTERFACE">\
<select class="styled interface" name="INTERFACE">\
~!:interface_options~!\
</select>\
</div>\
@ -217,7 +286,7 @@ App.Templates.html = {
'],
DOT: ['<span class="dot">.</span>'],
ENTRY: ['\
<div class="row first-row ip-details-row">\
<div class="row ip-details-row">\
<input type="hidden" class="source" name="source" value=\'~!:source~!\' />\
<input type="hidden" class="target" name="target" value="" />\
<div class="row-actions-box cc">\
@ -228,7 +297,7 @@ App.Templates.html = {
</div>\
</div>\
<div class="row-meta">\
<div class="ip-created">~!:DATE~!</div>\
<div class="entry-created">~!:DATE~!</div>\
</div>\
<div class="row-details cc">\
<div class="ip-props-main">\
@ -277,18 +346,27 @@ App.Templates.html = {
SUSPENDED_TPL_DISABLED : ['<span class="ip-status-info ip-suspended-status do_action_delete_ip"><span class="ip-status-text">suspended</span></span>']
},
user: {
WEB_TPL_MINIMIZED: ['~!:WEB_TPL_MINI~!\
<span class="group-switcher">\
<span class="group-values-count do_action_view_full_ns_list">~!:MORE_NUMBER~! more</span>\
</span><span class="hidden ns-full-list"><span class="group-values group-values__bullet">~!:WEB_TPL_FULL~!</span></span>'],
WEB_TPL: ['<span class="prop-value">~!:NAME~!</span>'],
NS_MINIMIZED: ['~!:NS_MINI~!\
<span class="group-switcher">\
<span class="group-values-count do_action_view_full_ns_list">~!:MORE_NUMBER~! more</span>\
</span><span class="hidden ns-full-list"><span class="group-values group-values__bullet">~!:NS_FULL~!</span></span>'],
/*NS_RECORD_POPUP_WRAP: ['<ul class="d-popup-items">~!:CONTENT~!</ul>'],
NS_RECORD_POPUP: ['<li class="item">~!:NAME~!</li>'],*/
NS_RECORD: ['<span class="prop-value">~!:NAME~!</span>'],
NS_INPUT: ['<div class="form-row ns-entry cc"><label for="#" class="field-label">~!:NS_LABEL~!:</label>\
NS_INPUT: ['<div class="form-row ns-entry cc">\
<label for="#" class="field-label">~!:NS_LABEL~!:</label>\
<input type="text" value="~!:NAME~!" name="" class="text-field ns-input rule-required rule-ns">\
<button class="do_action_delete_ns">Delete</button>\
<b class="do_action_delete_ns delete-record"></b>\
</div>'],
PLUS_ONE_NS: ['<div class="form-row cc do_action_add_form_ns additional-ns-add">\
<a href="javascript:void(0);" class="add-ns do_action_add_form_ns">\
<i class="icon do_action_add_form_ns">&nbsp;</i>\
<span class="btn-title do_action_add_form_ns">Add additional NS</span>\
</a>\
</div>'],
PLUS_ONE_NS: ['<button class="additional-ns-add do_action_add_form_ns">Add additional NS</button>'],
ENTRIES_WRAPPER: ['<div class="users-list items-list">~!:content~!</div>'],
FORM: ['<div id="~!:id~!" class="b-new-entry b-new-entry_user form">\
<input type="hidden" name="source" class="source" value=\'~!:source~!\'>\
@ -307,19 +385,19 @@ App.Templates.html = {
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">package:</label>\
<select name="PACKAGE" class="not-styled">\
<select name="PACKAGE" class="styled">\
~!:PACKAGE_OPTIONS~!\
</select>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">shell:</label>\
<select class="not-styled" name="SHELL">\
<select class="styled" name="SHELL">\
~!:SHELL_OPTIONS~!\
</select>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">role:</label>\
<select class="not-styled" name="ROLE">\
<select class="styled" name="ROLE">\
~!:ROLE_OPTIONS~!\
</select>\
</div>\
@ -327,19 +405,19 @@ App.Templates.html = {
<label for="#" class="field-label">contact email:</label>\
<input type="text" name="CONTACT" class="text-field rule-email rule-required" value="~!:CONTACT~!">\
</div>\
<div class="form-row cc">\
<div class="form-row ~!:REPORTS_ENABLED_EDITABLE~! cc">\
<label for="#" class="field-label">reports:</label>\
<input type="checkbox" name="REPORTS_ENABLED" ~!:CHECKED~! class="not-styled" value="~!:REPORTS_ENABLED~!">\
<input type="checkbox" name="REPORTS_ENABLED" ~!:CHECKED~! class="styled" value="~!:REPORTS_ENABLED~!">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">Firstname:</label>\
<input type="text" name="FNAME" class="not-styled text-field rule-abc rule-required" value="~!:FNAME~!">\
<input type="text" name="FNAME" class="text-field rule-abc rule-required" value="~!:FNAME~!">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">Lastname:</label>\
<input type="text" name="LNAME" class="not-styled text-field rule-abc rule-required" value="~!:LNAME~!">\
<input type="text" name="LNAME" class="text-field rule-abc rule-required" value="~!:LNAME~!">\
</div>\
<div class="form-row ns-entry cc">\
<!-- div class="form-row ns-entry cc">\
<label for="#" class="field-label">NS #1:</label>\
<input type="text" value="~!:NS1~!" name="NS1" class="text-field rule-required rule-ns">\
</div>\
@ -347,14 +425,14 @@ App.Templates.html = {
<label for="#" class="field-label">NS #2:</label>\
<input type="text" value="~!:NS2~!" name="NS2" class="text-field rule-required rule-ns">\
</div>\
~!:NS~!\
~!:NS~!\ -->\
<div class="form-row buttons-row cc">\
<input type="submit" value="~!:save_button~!" name="save" class="add-entry-btn do_action_save_form">\
<span class="cancel-btn do_action_cancel_form">Cancel</span>\
<a class="help-btn" href="http://vestacp.com/docs/user/" target="_blank">Help</a>\
</div>\
</div>'],
ENTRY: ['<div class="row first-row user-details-row">\
ENTRY: ['<div class="row user-details-row">\
<input type="hidden" class="source" name="source" value=\'~!:source~!\' />\
<input type="hidden" class="target" name="target" value="" />\
<div class="row-actions-box cc">\
@ -405,35 +483,38 @@ App.Templates.html = {
</div>\
</div>\
<!-- disk usage block -->\
<div class="b-usage-box disk-usage cc">\
\
<div class="b-stats-box">\
<div class="stats-box-title">stats</div> \
<!-- disk usage block -->\
<div class="b-usage-box2 disk-usage cc">\
<span class="prop-title">disk usage:</span>\
<div class="usage-box">\
<div class="usage-box ~!:OVER_DRAFT_VALUE~!">\
<div class="value-box">\
<span class="value">~!:U_DISK~!</span>\
<div class="graph low">\
<span style="width:~!:U_DISK_PERCENTAGE~!%;" class="bar"></span>\
<div class="graph">\
<span style="left:~!:U_DISK_PERCENTAGE_2~!%;" class="value">~!:U_DISK_PERCENTAGE~!% <span class="value-size">(~!:U_DISK~! ~!:DISK_QUOTA_MEASURE~!)</span></span>\
<span style="width:~!:U_DISK_PERCENTAGE_3~!%;" class="bar"></span>\
~!:OVER_BAR~!\
</div>\
</div>\
<div class="max-size">~!:DISK_QUOTA~!<span class="units">~!:DISK_QUOTA_MEASURE~!</span></div>\
<div class="max-size">~!:DISK_QUOTA~! <span class="units">~!:DISK_QUOTA_MEASURE_2~!</span></div>\
</div>\
</div><!-- // disk usage block -->\
<!-- bandwidth usage block -->\
<div style="margin-bottom:25px;" class="b-usage-box bandwidth-box cc">\
</div>\
\
<div class="b-usage-box2 bandwidth-box cc">\
<span class="prop-title">bandwidth:</span>\
<div class="usage-box" style="margin-left: -1px">\
<div class="value-box">\
<span class="value">~!:U_BANDWIDTH~!</span>\
<div class="graph low">\
<span style="width:~!:U_BANDWIDTH_PERCENTAGE~!%;" class="bar"></span>\
<div class="usage-box">\
<div class="value-box ~!:OVER_DRAFT_VALUE_2~!">\
<div class="graph">\
<span style="left:~!:U_BANDWIDTH_PERCENTAGE_2~!%;" class="value">~!:U_BANDWIDTH_PERCENTAGE~!% <span class="value-size">(~!:U_BANDWIDTH~! ~!:BANDWIDTH_MEASURE~!)</span></span>\
<span style="width:~!:U_BANDWIDTH_PERCENTAGE_3~!%;" class="bar"></span>\
~!:OVER_BAR_2~!\
</div>\
</div>\
<div class="max-size">~!:BANDWIDTH~!<span class="units">~!:BANDWIDTH_MEASURE~!</span></div>\
<div class="max-size">~!:BANDWIDTH~! <span class="units">~!:BANDWIDTH_MEASURE_2~!</span></div>\
</div>\
</div>\
</div><!-- // bandwidth usage block -->\
<!-- disk usage block -->\
<!-- // disk usage block -->\
<!-- bandwidth usage block -->\
<!-- // bandwidth usage block -->\
</div>\
<div class="props-additional">\
<span class="prop-box websl-box">\
@ -507,14 +588,14 @@ App.Templates.html = {
<div class="form-row cc">\
<label for="#" class="field-label">ip:</label>\
<div class="">\
<select name="IP">\
<select name="IP" class="styled">\
~!:IP_OPTIONS~!\
</select>\
</div>\
</div>\
<div class="form-row cc adv_opts">\
<label for="#" class="field-label">template:</label>\
<select class="not-styled" name="TPL">\
<select class="styled" name="TPL">\
~!:TPL_OPTIONS~!\
</select>\
</div>\
@ -528,24 +609,24 @@ App.Templates.html = {
<div class="sub_section hidden">\
<div class="form-row cc">\
<label for="#" class="field-label">CGI:</label>\
<input type="checkbox" value="~!:CGI~!" ~!:CHECKED_CGI~! name="CGI" class="not-styled">\
<input type="checkbox" value="~!:CGI~!" ~!:CHECKED_CGI~! name="CGI" class="styled">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">ELOG:</label>\
<input type="checkbox" value="~!:ELOG~!" ~!:CHECKED_ELOG~! name="ELOG" class="not-styled">\
<input type="checkbox" value="~!:ELOG~!" ~!:CHECKED_ELOG~! name="ELOG" class="styled">\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">alias list:</label>\
<textarea name="ALIAS" class="textarea">~!:ALIAS~!</textarea>\
<textarea name="ALIAS" class="textarea rule-alias">~!:ALIAS~!</textarea>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">statistics:</label>\
<select name="STAT">~!:STAT_OPTIONS~!</select>\
<select name="STAT" class="styled">~!:STAT_OPTIONS~!</select>\
</div>\
<div class="stats-settings">\
<div class="form-row cc">\
<label for="#" class="field-label">stats auth:</label>\
<input id="stats-auth-enable" type="checkbox" name="STATS_AUTH" ~!:stats_auth_checked~!="" value="~!:STATS_AUTH~!" class="not-styled do_action_toggle_stats_block">\
<input id="stats-auth-enable" type="checkbox" name="STATS_AUTH" ~!:stats_auth_checked~!="" value="~!:STATS_AUTH~!" class="styled do_action_toggle_stats_block">\
</div>\
<div class="form-row stats-block ~!:ACTIVE_LOGIN~! cc">\
<label for="#" class="field-label">stats login:</label>\
@ -586,7 +667,7 @@ App.Templates.html = {
<div class="sub_section hidden">\
<div class="form-row cc">\
<label for="#" class="field-label">create dns domain:</label>\
<input type="checkbox" value="~!:DNS~!" ~!:CHECKED_DNS~! name="DNS" class="not-styled">\
<input type="checkbox" value="~!:DNS~!" ~!:CHECKED_DNS~! name="DNS" class="styled">\
</div>\
</div><!-- DNS options -->\
<div class="form-options-group hidden">\
@ -598,7 +679,7 @@ App.Templates.html = {
<div class="sub_section hidden">\
<div class="form-row cc">\
<label for="#" class="field-label">create mail domain:</label>\
<input type="checkbox" value="~!:MAIL~!" ~!:CHECKED_MAIL~! name="MAIL" class="not-styled">\
<input type="checkbox" value="~!:MAIL~!" ~!:CHECKED_MAIL~! name="MAIL" class="styled">\
</div>\
</div>\
</div>\
@ -610,7 +691,7 @@ App.Templates.html = {
</div>\
</div>'],
ENTRIES_WRAPPER: ['<div class="domains-list items-list">~!:content~!</div>'],
ENTRY: ['<div class="row first-row domain-details-row">\
ENTRY: ['<div class="row domain-details-row">\
<input type="hidden" class="source" name="source" value=\'~!:source~!\' />\
<input type="hidden" class="target" name="target" value="" />\
<div class="row-actions-box cc">\
@ -634,7 +715,7 @@ App.Templates.html = {
<span class="ip-adr">~!:IP~!</span>\
<span class="prop-box template-box">\
<span class="prop-title">template:</span>\
<span class="prop-value">~!:TPL~!</span>\
<span class="prop-value tpl-item do_action_view_template_settings">~!:TPL~!</span>\
</span>\
</div>\
<!-- disk usage block -->\
@ -721,7 +802,7 @@ App.Templates.html = {
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">db type:</label>\
<select name="TYPE" class="not-styled">~!:TYPE_OPTIONS~!</select>\
<select name="TYPE" class="styled">~!:TYPE_OPTIONS~!</select>\
</div>\
<div class="form-row cc">\
<label for="#" class="field-label">db name:</label>\
@ -740,7 +821,7 @@ App.Templates.html = {
</div>\
<div class="form-row hidden cc">\
<label for="#" class="field-label">db host:</label>\
<select name="HOST">~!:HOST_OPTIONS~!</select>\
<select name="HOST" class="styled">~!:HOST_OPTIONS~!</select>\
</div>\
<div class="form-row buttons-row cc">\
<input type="submit" value="~!:save_button~!" class="add-entry-btn do_action_save_form">\
@ -748,7 +829,7 @@ App.Templates.html = {
<a target="_blank" href="http://vestacp.com/docs/db/" class="help-btn">Help</a>\
</div>\
</div>'],
ENTRY: ['<div class="row ~!:FIRST_ROW_CLASS~! db-details-row">\
ENTRY: ['<div class="row db-details-row">\
<input type="hidden" name="source" class="source" value=\'~!:source~!\'>\
<input type="hidden" name="target" class="target" value=\'\'>\
<div class="row-actions-box cc">\
@ -854,8 +935,8 @@ App.Templates.html = {
<a target="_blank" href="http://vestacp.com/docs/cron/" class="help-btn">Help</a>\
</div>\
</div>'],
ENTRIES_WRAPPER: ['<div class="db-list">~!:content~!</div>'],
ENTRY: ['<div class="row first-row cron-details-row">\
ENTRIES_WRAPPER: ['<div class="cron-list">~!:content~!</div>'],
ENTRY: ['<div class="row cron-details-row">\
<input type="hidden" name="source" class="source" value=\'~!:source~!\'>\
<input type="hidden" name="target" class="target" value=\'\'>\
<div class="row-actions-box cc">\
@ -898,9 +979,7 @@ App.Templates.html = {
<span class="prop-box cron-report-box">\
<span class="prop-title">reported to:</span>\
<span class="prop-value">naumov.socolov@gmail.com,</span>\
<span class="prop-value">vasysualiy.pupkin@gmail.com,</span>\
<span class="prop-value">na-derevniu-dedushke@dachniy-poselok-za-mkadom.com,</span>\
<span class="prop-value">vasysualiy.pupkin@gmail.com</span>\
<span class="prop-value">naumov.socolov@gmail.com,</span>\
</span>\
</div>\
</div><!-- // .row-details -->\
@ -912,23 +991,23 @@ App.Templates.html = {
// Internals
var Tpl = App.Templates;
var Templator = function(){
var init = function(){
var Templator = function()
{
var init = function() {
fb.info('Templator work');
Templator.splitThemAll();
Templator.freezeTplIndexes();
};
/**
* Split the tpl strings into arrays
*/
Templator.splitThemAll = function(){
Templator.splitThemAll = function()
{
fb.info('splitting tpls');
$.each(App.Templates.html, function(o){
$.each(App.Templates.html, function(o) {
var tpls = App.Templates.html[o];
$.each(tpls, function(t){
$.each(tpls, function(t) {
tpls[t] = tpls[t][0].split('~!');
});
});
@ -937,7 +1016,8 @@ var Templator = function(){
/**
* Iterates tpls
*/
Templator.freezeTplIndexes = function(){
Templator.freezeTplIndexes = function()
{
fb.info('freezing tpl keys');
$.each(App.Templates.html, Templator.cacheTplIndexes);
},
@ -945,10 +1025,10 @@ var Templator = function(){
/**
* Grab the tpl group key and process it
*/
Templator.cacheTplIndexes = function(key){
Templator.cacheTplIndexes = function(key)
{
var tpls = App.Templates.html[key];
$.each(tpls, function(o){
$.each(tpls, function(o) {
var tpl = tpls[o];
Templator.catchIndex(key, o, tpl);
});
@ -957,11 +1037,11 @@ var Templator = function(){
/**
* Set the indexes
*/
Templator.catchIndex = function(key, ref_key, tpl){
Templator.catchIndex = function(key, ref_key, tpl)
{
'undefined' == typeof App.Templates._indexes[key] ? App.Templates._indexes[key] = {} : false;
'undefined' == typeof App.Templates._indexes[key][ref_key] ? App.Templates._indexes[key][ref_key] = {} : false;
$(tpl).each(function(index, o){
$(tpl).each(function(index, o) {
if(':' == o.charAt(0)){
App.Templates._indexes[key][ref_key][o.toString()] = index;
}
@ -974,7 +1054,8 @@ var Templator = function(){
init();
return Templator;
};
Templator.getTemplate = function(ns, key){
Templator.getTemplate = function(ns, key)
{
return [
App.Templates._indexes[ns][key],
App.Templates.html[ns][key].slice(0)
@ -982,7 +1063,7 @@ Templator.getTemplate = function(ns, key){
}
// init templator
Tpl.Templator = Templator();
Tpl.get = function(key, group){
Tpl.get = function(key, group)
{
return Tpl.Templator.getTemplate(group, key);
}

View file

@ -1,21 +1,5 @@
/*App.Validate.form = function(values){
if(values.IP_ADDRESS == '') {
return alert('Not correct ip');
}
return true;
}*/
App.Validate.Is = {
ip: function(object) {
var ip_regexp = new RegExp(/\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b/);
return ip_regexp.test() ? false : App.i18n.getMessage('incorrect_ip');
}
};
App.Validate.getFieldName = function(elm)
{
fb.log(elm);
var txt_label = $(elm).prev('label').text();
if (txt_label.trim() == '') {
txt_label = $(elm).parents('.field-box').select('label:first').text();
@ -25,9 +9,20 @@ App.Validate.getFieldName = function(elm)
}
App.Validate.Rule = {
'alias' : function(elm) {
if (!!$('#stats-auth-enable').attr('checked') == true) {
if ($(elm).val().trim() == '' || $(elm).val().search(/[^a-zA-Z\.\-\*\,\ ]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'};
}
if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
}
}
return {VALID: true};
},
'statslogin' : function(elm) {
if (!!$('#stats-auth-enable').attr('checked') == true) {
if ($(elm).val().trim() == '' || $(elm).val().search(/[^a-zA-Z_]+/) != -1) {
if ($(elm).val().trim() == '' || $(elm).val().search(/[^a-zA-Z_0-9]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'};
}
if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
@ -44,11 +39,14 @@ App.Validate.Rule = {
if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too long'};
}
if ($(elm).val().trim() != '' && $(elm).val().length < App.Settings.PSW_MIN_LEN) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' too short'};
}
}
return {VALID: true};
},
'username' : function(elm) {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z_]+/) != -1) {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z_0-9\.\-]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' is invalid'};
}
if ($(elm).val().trim() != '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {
@ -100,13 +98,13 @@ App.Validate.Rule = {
return {VALID: true};
},
'domain': function(elm) {
if ($(elm).val().trim() != '' && (/^([a-z0-9\.])*[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/).test($(elm).val()) == false) {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z0-9\.\-\*]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid domain name'};
}
return {VALID: true};
},
'ns': function(elm) {
if ($(elm).val().trim() != '' && (/^([a-z0-9\.])*[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$/).test($(elm).val()) == false) {
if ($(elm).val().trim() != '' && $(elm).val().search(/[^a-zA-Z0-9\.\-\*]+/) != -1) {
return {VALID: false, ERROR: App.Validate.getFieldName(elm) + ' not a valid NS name'};
}
if ($(elm).val().trim() == '' && $(elm).val().length > App.Settings.FIELD_MAX_LEN) {

View file

@ -40,61 +40,3 @@ App.View.listItems = function(reply){
App.Ref.CONTENT.html(html);
App.Helpers.updateScreen();
}
/*App.View.start = function(){
};
App.View.showDatabases = function(databases){
var tpl = App.HTML.makeDatabases(databases);
$('#navigation').html(tpl.wrapperize('database_wrap', 'database'));
}
App.View.openDatabase = function(data, ref, db_name){
var tpl = App.HTML.makeDbTableList(data);
$('.databases .tables').remove();
$('.databases .active').removeClass('active');
$(ref).after(tpl.wrapperize('database_table_wrap', 'database'));
$(ref).attr('className', 'active do.closeDatabase('+db_name+')"');
}
App.View.openTable = function(data, ref, table_name){
var tpl = App.HTML.makeDbFieldsList(data);
$(ref).next('.fields').remove();
$(ref).after(tpl.wrapperize('database_field_wrap', 'database'));
$(ref).attr('className', 'active do.closeTable('+table_name+')"');
App.Helpers.updateScreen();
}
App.View.resultReturned = function(reply){
if(reply.result){
$('#results').text(reply.data);
}else{
$('#results').text(reply.message);
}
}
App.View.Pages.IP.list = function(reply){
var acc = [];
$(reply.data).each(function(i, o){
acc[acc.length++] = App.HTML.Build.ip_entry(o);
});
var html = acc.done().wrapperize('ENTRIES_WRAPPER', 'ip');
App.Ref.CONTENT.html(html);
App.Helpers.updateScreen();
}
App.View.Pages.DNS.list = function(reply){
var acc = [];
$(reply.data).each(function(i, o){
acc[acc.length++] = App.HTML.Build.dns_entry(o);
});
var html = acc.done().wrapperize('ENTRIES_WRAPPER', 'dns');
App.Ref.CONTENT.html(html);
App.Helpers.updateScreen();
}
*/

View file

@ -41,8 +41,17 @@ class AjaxHandler {
*/
public function dispatch(Request $request)
{
VestaSession::start();
$allowed_actions = array(
'MAIN.signin',
'MAIN.logout',
'MAIN.requestpassword',
'MAIN.resetpassword',
'MAIN.about');
$method = Request::parseAjaxMethod($request);
if (!in_array($method['namespace'].'.'.$method['function'], array('MAIN.signin', 'MAIN.logout'))) {
if (!in_array($method['namespace'].'.'.$method['function'], $allowed_actions)) {
$user = $this->getLoggedUser();
}
@ -84,19 +93,23 @@ class AjaxHandler {
// Error handlers
//
static function generalError($error) {
static function generalError($error)
{
self::renderGlobalError(Message::ERROR, Message::GENERAL_ERROR, $error);
}
static function protectionError($error) {
static function protectionError($error)
{
self::renderGlobalError(Message::ERROR, Message::PROTECTION_ERROR, $error);
}
static function systemError($error) {
static function systemError($error)
{
self::renderGlobalError(Message::ERROR, Message::SYSTEM_ERROR, $error);
}
static function renderGlobalError($type, $message, $error) {
static function renderGlobalError($type, $message, $error)
{
/*$trace = $error->getTrace();
AjaxHandler::makeReply(
AjaxHandler::getInstance()->reply(false, $type, $message . ': ' . $error->getMessage(), $trace[0]['file'] . ' / ' . $trace[0]['line'])

View file

@ -370,8 +370,13 @@ class DNS extends AjaxHandler
public function getTemplateInfoExecute($request)
{
$spell = $request->getParameter('spell');
$result = Vesta::execute('v_list_sys_user_packages', null, self::TEXT);
return $this->reply(true, $result['data']);
$result = Vesta::execute('v_list_sys_user_packages', null, self::JSON);
$reply = $result['data'];
if (isset($spell['PACKAGE'])) {
$reply = $result['data'][$spell['PACKAGE']];
}
return $this->reply(true, $reply);
}
}

View file

@ -19,37 +19,116 @@ class MAIN extends AjaxHandler
protected $templates = null;
/**
* Get Version
*
* @param Request $request
* @return string - Ajax Reply
*/
public function versionExecute(Request $request)
public function aboutExecute($request)
{
$result = array(
'version' => '1.0',
'author' => 'http://vestacp.com/',
'docs' => 'http://vestacp.com/docs'
);
$about = array('version' => '0', 'company_email' => 'support@vestacp.com',
'version_name' => 'OGRE-23-1', 'company_name' => 'vestacp.com');
$config = Vesta::execute(Vesta::V_LIST_SYS_CONFIG, 'json');
if (!empty($config['data']) && !empty($config['data']['config'])) {
$config = $config['data']['config'];
$about['version'] = $config['VERSION'];
$about['version_name'] = $config['VERSION_NAME'];
$about['company_email'] = $config['COMPANY_EMAIL'];
$about['company_name'] = $config['COMPANY_NAME'];
}
return $this->reply(true, $result);
return $this->reply(true, $about);
}
public function requestPasswordExecute($request)
{
if (empty($_SESSION['captcha_key'])
|| $_SESSION['captcha_key'] != $request->getParameter('captcha')) {
return $this->reply(false, null, 'Captcha is invalid ');
}
// TODO: captcha
$users = Vesta::execute(Vesta::V_LIST_SYS_USERS, 'json');
$email_matched_count = array();
if (!preg_match("/^([a-zA-Z0-9])+([a-zA-Z0-9\._-])*@([a-zA-Z0-9_-])+([a-zA-Z0-9\._-]+)+$/",$request->getParameter('email'))) {
return $this->reply(false, null, 'Email is invalid');
}
foreach ($users['data'] as $user) {
if ($user['CONTACT'] == trim($request->getParameter('email'))) {
$email_matched_count[] = $user;
}
}
if (empty($email_matched_count)) {
return $this->reply(false, null, 'There is no such user.');
}
$secret_key = $this->generateResetPasswordKey();
$reset_link = 'https://'.$_SERVER['HTTP_HOST'].'/change_password.php?v='.$secret_key;
$mail_body = <<<MAIL
<div lang="en" style="background-color:#fff;color:#222">
<a target="_blank" href="" style="color:#FFF">
<img width="81" height="22" style="display:block;border:0" src="http://vestacp.com/i/logo.png" alt="Twitter">
</a>
<div style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;font-size:13px;margin:14px">
<h2 style="font-family:'Helvetica Neue', Arial, Helvetica, sans-serif;margin:0 0 16px;font-size:18px;font-weight:normal">
Vesta received a request to reset the password for your account {$user['FNAME']} {$user['LNAME']}?
</h2>
<p>
If you want to reset your password, click on the link below (or copy and paste the URL into your browser):<br>
<a target="_blank" href="{$reset_link}">{$reset_link}</a>
</p>
<p>
If you don't want to reset your password, please ignore this message.
Your password will not be reset.
If you have any concerns, please contact us at support@vestacp.com.
</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">
<span style="font:italic 13px Georgia,serif;color:rgb(102, 102, 102)">VestaCP</span>
</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>
MAIL;
$headers = 'MIME-Version: 1.0' . "\n";
$headers .= 'Content-type: text/html; charset=UTF-8' . "\n";
$to = $request->getParameter('email');
$subject = 'Reset your Vesta password';
$message = $mail_body;
mail($to, $subject, $message, $headers);
return $this->reply(true, array('key_code' => substr($secret_key, 0, 5) . $_SERVER['REQUEST_TIME'] . substr($secret_key, -5)));
}
public function generateResetPasswordKey()
{
$key = sha1($_SERVER['HTTP_USER_AGENT'].$_SERVER['REMOTE_ADDR']);
$key = substr($key, 0, 10) . $_SERVER['REQUEST_TIME'] . substr($key, 10, strlen($key));
return $key;
}
public function signinExecute($request)
{
$login = $request->getParameter('login');
$password = $request->getParameter('password');
$result = Vesta::execute('v_check_sys_user_password', array('USER' => $login, 'PASSWORD' => $password), self::TEXT);
$result = Vesta::execute('v_check_sys_user_password', array('USER' => $login, 'PASSWORD' => $password));
if ($result['status'] == true) {
return $this->reply(VestaSession::authorize($login));
return $this->reply(true, array('v_sd' => VestaSession::authorize($login)));
}
else {
return $this->reply(false, 'Incorrect login / password');
return $this->reply(false, array('error_msg' => 'Incorrect login or password'));
}
}
public function logoffExecute($request)
{
VestaSession::logoff();
return $this->reply(true);
}
/**
* Get Initial params.
* Global constants / variables / configs
@ -95,7 +174,6 @@ class MAIN extends AjaxHandler
$data_db = $rs['data'];
foreach ($data_db as $db) {
$totals['DB']['total'] += 1;
//$db['SUSPENDED'] == 'yes' ? $totals['DB']['blocked'] += 1 : false;
}
// dns
$rs = Vesta::execute(Vesta::V_LIST_DNS_DOMAINS, array('USER' => $user['uid']), self::JSON);
@ -120,13 +198,15 @@ class MAIN extends AjaxHandler
}
$reply = array(
'auth_user' => array('uid' => $this->getLog),
'WEB_DOMAIN' => $this->getWebDomainParams($data_web_domin, $global_data),
'CRON' => $this->getCronParams(),
'IP' => $this->getIpParams($data_ip, $global_data),
'DNS' => $this->getDnsParams(),
'DB' => $this->getDbParams($data_db),
'USERS' => $this->getUsersParams($data_user),
'totals' => $totals
'totals' => $totals,
'PROFILE' => $user
);
return $this->reply(true, $reply);
@ -140,11 +220,10 @@ class MAIN extends AjaxHandler
else {
$user = $this->getLoggedUser();
$this->templates = array();
//v_list_web_templates vesta json
$result = Vesta::execute('v_list_web_templates', array('USER' => $user['uid']), self::JSON);
$result = Vesta::execute(Vesta::V_LIST_WEB_TEMPLATES, array('USER' => $user['uid']), self::JSON);
// TODO: handle errors!
foreach ($result['data'] as $tpl => $description) {
$this->templates[$tpl] = $tpl;
$this->templates[$tpl] = $description;
}
return $this->templates;
@ -237,9 +316,18 @@ class MAIN extends AjaxHandler
*/
public function getDnsParams($data = array())
{
$dns_templates = array();
$user = $this->getLoggedUser();
$this->templates = array();
$result = Vesta::execute(Vesta::V_LIST_DNS_TEMPLATES, null, self::JSON);
// TODO: handle errors!
foreach ($result['data'] as $tpl => $description) {
$dns_templates[$tpl] = $description;
}
return array(
'IP' => @$data['ips'],
'TPL' => $this->getTemplates(),
'TPL' => $dns_templates,
'EXP' => array(),
'SOA' => array(),
'TTL' => array(),
@ -277,7 +365,7 @@ class MAIN extends AjaxHandler
* @params array $data
* @return array
*/
public function getUsersParams($data = array())
public function getUsersParams($data = array(), $global_data)
{
$pckg = array();
// json

View file

@ -105,8 +105,6 @@ class USER extends AjaxHandler
// Reports
$enable_reports = Utils::getCheckboxBooleanValue($spell['REPORTS_ENABLED']);
$reports_result = $this->setUserReports($spell['LOGIN_NAME'], $spell['REPORTS_ENABLED']);
// NS
//$ns_result = $this->setNSentries($spell['LOGIN_NAME'], $spell);
// Set SHELL
$this->setShell($spell['LOGIN_NAME'], $spell['SHELL']);
@ -197,15 +195,6 @@ class USER extends AjaxHandler
$this->errors['NAMES'] = array($result['error_code'] => $result['error_message']);
}
/*if ($_old['SHELL'] != $_new['SHELL']) {
$result = array();
$result = Vesta::execute(Vesta::V_CHANGE_SYS_USER_SHELL, array('USER' => $_USER, 'SHELL' => $_new['SHELL']));
if (!$result['status']) {
$this->status = FALSE;
$this->errors['SHELL'] = array($result['error_code'] => $result['error_message']);
}
}*/
if (!$this->status) {
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']));

View file

@ -1,5 +1,6 @@
<?php
define('VESTA_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR);
define('V_ROOT_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
require_once V_ROOT_DIR . 'config/Config.class.php';
@ -12,8 +13,6 @@ 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';
VestaSession::start();
/**
* App execution
*

View file

@ -8,4 +8,5 @@ vesta_functions_path = /usr/local/vesta/bin/
; common
ui_date_format = 'd.m.Y'
; session
session_dirname = 'vesta_sessions'

View file

@ -13,6 +13,7 @@ class Vesta
{
const SAME_PASSWORD = '********';
const V_LIST_SYS_CONFIG = 'v_list_sys_config';
// IP
const V_LIST_SYS_IPS = 'v_list_sys_ips';
const V_ADD_SYS_IP = 'v_add_sys_ip';
@ -26,6 +27,7 @@ class Vesta
// 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';

View file

@ -5,9 +5,22 @@ class VestaSession
static public $instance = null;
static function start()
static function start($request = null)
{
self::initSessionPath();
session_start();
/*if ($request->hasParameter('v_sd')) {
session_id($request->getParameter('v_sd'));
}*/
}
static function initSessionPath()
{
$sessions_dir = '/tmp/'.Config::get('session_dirname');
if (!is_readable($sessions_dir)) {
mkdir($sessions_dir);
}
session_save_path($sessions_dir);
}
/**
@ -23,17 +36,24 @@ class VestaSession
static function authorize($username)
{
$_SESSION['user'] = $username;
return true;
return session_id();
}
static function logoff()
{
session_destroy();
}
public function getUser()
{
//var_dump($_SESSION);die();
if (isset($_SESSION['user'])) {
return array('uid' => $_SESSION['user']);
$user = array('uid' => $_SESSION['user']);
$user['DISK'] = 10000;
$user['BANDWIDTH'] = 10000;
return $user;
}
print '{"result": "NOT_AUTHORISED"}';
print json_encode(array('result' => "NOT_AUTHORISED"));
exit;
}