7fcd987f2b3287fd7b8b5d944f190fb6fd0c3832

Author: chawbacca

Date: 2009-11-23 02:35:53 -0600

Merge from dreamhost_control_panel.git

diff --git a/.gitignore b/.gitignore index d6fe828..931eccb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ plugins/debug_kit -config/database.php \ No newline at end of file +config/database.php +tmp/* \ No newline at end of file diff --git a/app_controller.php b/app_controller.php index 337f110..f27c788 100644 --- a/app_controller.php +++ b/app_controller.php @@ -1,21 +1,17 @@ <?php class AppController extends Controller { + //var $components = array('DebugKit.Toolbar'); + var $helpers = array('Html', 'Form', 'Javascript'); - var $components = array('DebugKit.Toolbar'); - var $helpers = array('Javascript', 'Form', 'Html'); + function beforeFilter () { + $this->settings(); + } - function bytes ($dsize) { - if (strlen($dsize) <= 9 && strlen($dsize) >= 7) { - $dsize = number_format($dsize / 1048576,1); - return "$dsize MB"; - } elseif (strlen($dsize) >= 10) { - $dsize = number_format($dsize / 1073741824,1); - return "$dsize GB"; - } else { - $dsize = number_format($dsize / 1024,1); - return "$dsize KB"; - } + function settings() { + $settings = ClassRegistry::init('Setting')->settings(); + $this->Session->write('Settings', $settings); + } } ?> \ No newline at end of file diff --git a/config/routes.php b/config/routes.php index 44e4c40..b5ad15f 100644 --- a/config/routes.php +++ b/config/routes.php @@ -31,7 +31,12 @@ * its action called 'display', and we pass a param to select the view file * to use (in this case, /app/views/pages/home.ctp)... */ - Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); + if (file_exists(TMP.'not_installed.txt')) { + Router::connect('/:action', array('controller' => 'installer')); + } else { + Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home')); + } + /** * ...and connect the rest of 'Pages' controller's urls. */ diff --git a/config/sql/app.sql b/config/sql/app.sql new file mode 100644 index 0000000..7cd2d74 --- /dev/null +++ b/config/sql/app.sql @@ -0,0 +1,101 @@ +CREATE TABLE domains ( + id int(20) auto_increment NOT NULL, + user_id int(20) NOT NULL, + account_id varchar(255) NOT NULL, + domain varchar(255) NOT NULL default '', + home varchar(255) NOT NULL default '', + type varchar(255) NOT NULL default '', + unique_ip varchar(255) NOT NULL default '', + hosting_type varchar(255) NOT NULL default '', + path varchar(255) NOT NULL default '', + outside_url varchar(255) NOT NULL default '', + www_or_not varchar(255) NOT NULL default '', + php varchar(255) NOT NULL default '', + security varchar(255) NOT NULL default '', + fastcgi varchar(255) NOT NULL default '', + xcache varchar(255) NOT NULL default '', + php_fcgid varchar(255) NOT NULL default '', + PRIMARY KEY (id) +); + +CREATE TABLE users ( + id int(20) auto_increment NOT NULL, + account_id varchar(255) NOT NULL, + username varchar(255) NOT NULL, + type varchar(255) NOT NULL, + shell varchar(255) NOT NULL, + home varchar(255) NOT NULL, + password varchar(255) NOT NULL, + disk_used_mb varchar(255) NOT NULL, + quota_mb varchar(255) NOT NULL, + gecos varchar(255) NOT NULL, + PRIMARY KEY (id) +); + +CREATE TABLE registered ( + id int(20) auto_increment NOT NULL, + registrant varchar(255) NOT NULL, + tech_zip varchar(255) NOT NULL, + registrant_zip varchar(255) NOT NULL, + tech_city varchar(255) NOT NULL, + registrant_fax varchar(255) NOT NULL, + registrant_street1 varchar(255) NOT NULL, + registrant_org varchar(255) NOT NULL, + billing_street1 varchar(255) NOT NULL, + admin_state varchar(255) NOT NULL, + billing_country varchar(255) NOT NULL, + admin_phone varchar(255) NOT NULL, + registrant_country varchar(255) NOT NULL, + tech_state varchar(255) NOT NULL, + registrant_email varchar(255) NOT NULL, + tech varchar(255) NOT NULL, + registrant_phone varchar(255) NOT NULL, + modified varchar(255) NOT NULL, + account_id varchar(255) NOT NULL, + tech_phone varchar(255) NOT NULL, + admin_org varchar(255) NOT NULL, + billing_org varchar(255) NOT NULL, + admin_zip varchar(255) NOT NULL, + registrant_street2 varchar(255) NOT NULL, + ns1 varchar(255) NOT NULL, + autorenew varchar(255) NOT NULL, + billing_fax varchar(255) NOT NULL, + billing_email varchar(255) NOT NULL, + billing_phone varchar(255) NOT NULL, + tech_email varchar(255) NOT NULL, + billing_street2 varchar(255) NOT NULL, + ns3 varchar(255) NOT NULL, + billing_zip varchar(255) NOT NULL, + tech_fax varchar(255) NOT NULL, + admin_country varchar(255) NOT NULL, + admin_email varchar(255) NOT NULL, + ns4 varchar(255) NOT NULL, + domain varchar(255) NOT NULL, + expired varchar(255) NOT NULL, + admin_street2 varchar(255) NOT NULL, + registrant_state varchar(255) NOT NULL, + admin_fax varchar(255) NOT NULL, + admin_city varchar(255) NOT NULL, + registrant_city varchar(255) NOT NULL, + locked varchar(255) NOT NULL, + admin_street1 varchar(255) NOT NULL, + ns2 varchar(255) NOT NULL, + tech_street2 varchar(255) NOT NULL, + billing_state varchar(255) NOT NULL, + tech_street1 varchar(255) NOT NULL, + tech_country varchar(255) NOT NULL, + tech_org varchar(255) NOT NULL, + created varchar(255) NOT NULL, + billing_city varchar(255) NOT NULL, + admin_registrant varchar(255) NOT NULL, + expires varchar(255) NOT NULL, + billing varchar(255) NOT NULL, + PRIMARY KEY (id) +); + +CREATE TABLE `settings` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `name` varchar(100) DEFAULT NULL, + `value` varchar(100) DEFAULT NULL, + PRIMARY KEY (`id`) +); \ No newline at end of file diff --git a/controllers/databases_controller.php b/controllers/databases_controller.php deleted file mode 100644 index d4fc7a6..0000000 --- a/controllers/databases_controller.php +++ /dev/null @@ -1,58 +0,0 @@ -<?php - -class DatabasesController extends AppController { - - var $name = 'Databases'; - var $uses = array('Database', 'Domain'); - - function beforeFilter() { - parent::beforeFilter(); - } - - function index() { - $data = $this->Database->find('mysql-list_dbs'); - $this->set(compact('data')); - } - - function hostnames() { - $data = $this->Domain->find('mysql-list_hostnames'); - $this->set(compact('data')); - } - - function users() { - $data = $this->Database->find('mysql-list_users'); - $this->set(compact('data')); - } - - function delete_hostname($hostname) { - $response = $this->Database->delete('mysql-remove_hostname', array('hostname' => $hostname)); - switch ($response) { - case 'hostname_removed': - case 'success': - $this->Session->setFlash('Hostname Deleted'); - break; - case 'no_hostname': - case 'invalid_hostname': - case 'internal_error_removing_hostname': - $this->Session->setFlash('Hostname Not Deleted'); - break; - } - $this->redirect('hostnames', null, false); - } - - function add_host() { - if (!empty($this->data)) { - $hostname = implode('.', $this->data['Database']); - $response = $this->Database->save(array('hostname' => $hostname)); - - - $response = str_replace('_', ' ', $response); - $response = ucwords($response); - $this->Session->setFlash($response); - $this->redirect('hostnames', null, false); - } - $domains = $this->Database->domains(); - $this->set(compact('domains')); - } -} -?> \ No newline at end of file diff --git a/controllers/domains_controller.php b/controllers/domains_controller.php deleted file mode 100644 index 55f36eb..0000000 --- a/controllers/domains_controller.php +++ /dev/null @@ -1,22 +0,0 @@ -<?php - -class DomainsController extends AppController { - - var $name = 'Domains'; - var $uses = array('Domain'); - - function beforeFilter() { - parent::beforeFilter(); - } - - function index() { - $data = $this->Domain->active(); - $this->set(compact('data')); - } - - function registered() { - $data = $this->Domain->registered(); - $this->set(compact('data')); - } -} -?> \ No newline at end of file diff --git a/controllers/settings_controller.php b/controllers/settings_controller.php new file mode 100644 index 0000000..47e46ae --- /dev/null +++ b/controllers/settings_controller.php @@ -0,0 +1,16 @@ +<?php + +class SettingsController extends AppController { + + var $name = 'Settings'; + var $uses = array('Setting'); + + function config() { + if (!empty($this->data)) { + if ($this->Setting->save($this->data)) { + $this->redirect(array('controller' => 'crons', 'action' => 'setup'), null, false); + } + } + } +} +?> \ No newline at end of file diff --git a/locale/eng/LC_MESSAGES/empty b/locale/eng/LC_MESSAGES/empty deleted file mode 100644 index e69de29..0000000 diff --git a/models/behaviors/empty b/models/behaviors/empty deleted file mode 100644 index e69de29..0000000 diff --git a/models/database.php b/models/database.php deleted file mode 100644 index d6e1d36..0000000 --- a/models/database.php +++ /dev/null @@ -1,26 +0,0 @@ -<?php - -class Database extends AppModel { - - var $name = 'Database'; - var $useDbConfig = 'dreamhost'; - var $useTable = false; - - function domains() { - $results = $this->find('domain-list_domains'); - foreach ($results as $key => $value) { - if ($this->isDomain($value->domain) == true) { - $domains[$value->domain] = $value->domain; - } - } - ksort($domains); - return $domains; - } - - function isDomain($domain) { - $array = explode('.', $domain); - if (count($array) == 3) return false; - else return true; - } -} -?> \ No newline at end of file diff --git a/models/datasources/dreamhost_source.php b/models/datasources/dreamhost_source.php index ae1bddd..d7e2fb6 100644 --- a/models/datasources/dreamhost_source.php +++ b/models/datasources/dreamhost_source.php @@ -1,40 +1,44 @@ <?php -class DreamhostSource extends DataSource { - - var $description = "Dreamhost Data Source"; - - var $url = 'https://api.dreamhost.com'; - - var $params = array(); - +class DreamhostSource extends DataSource{ + + var $url = 'https://api.dreamhost.com'; + + var $description = "Dreamhost API Data Source"; + function __construct($config) { - parent::__construct($config); + parent::__construct($config); + App::import('HttpSocket'); + $this->Http = new HttpSocket(); + } + + function configs($key, $uuid) { $this->params = array( 'format' => 'json', - 'unique_id' => $this->uuid(), - 'key' => $this->config['key'] + 'unique_id' => $uuid, + 'key' => $key ); - } - - function save($params) { - return $this->connect('mysql-add_hostname', $params); - } - - function delete($cmd, $params) { - return $this->connect($cmd, $params); } - function find($command) { - return $this->connect($command); + function getString($array = array(), $type = 'query') { + $str = ''; + if ($type == 'query') { + foreach ($array as $key => $value) { + $str .= $key . '=' . $value . '&'; + } + } + if ($type == 'string') { + foreach ($array as $key => $value) { + $str .= $key . $value; + } + } + return $str; } function connect($cmd, $conditions = array()) { $this->params['cmd'] = $cmd; $this->params = array_merge($this->params, $conditions); - - $str = $this->getString($this->params); - + $str = $this->getString($this->params); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $this->url . '?' . substr($str, 0, -1)); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); @@ -45,29 +49,5 @@ class DreamhostSource extends DataSource { return $json->data; } - function uuid($prefix = array()) { - $chars = md5(microtime()); - $uuid = substr($chars,0,8) . '-'; - $uuid .= substr($chars,8,4) . '-'; - $uuid .= substr($chars,12,4) . '-'; - $uuid .= substr($chars,16,4) . '-'; - $uuid .= substr($chars,20,12); - return $this->getString($prefix, 'string') . $uuid; - } - - function getString($array = array(), $type = 'query') { - $str = ''; - if ($type == 'query') { - foreach ($array as $key => $value) { - $str .= $key . '=' . $value . '&'; - } - } - if ($type == 'string') { - foreach ($array as $key => $value) { - $str .= $key . $value; - } - } - return $str; - } } ?> \ No newline at end of file diff --git a/models/datasources/github_source.php b/models/datasources/github_source.php new file mode 100644 index 0000000..5cf6d8e --- /dev/null +++ b/models/datasources/github_source.php @@ -0,0 +1,40 @@ +<?php + +App::import('Core', array('Set','Xml','HttpSocket')); +class GithubSource extends DataSource{ + + var $base = 'http://github.com/api/v1/json/'; + var $base2 = 'http://github.com/api/v2/json/'; + + var $description = "Github API Data Source"; + + function __construct($config) { + parent::__construct($config); + App::import('HttpSocket'); + $this->Http = new HttpSocket(); + } + + function repos($owner) { + $this->url = $this->base2 . 'repos/show/' . $owner; + return self::connect(); + } + + function viewCommit($owner, $project, $id) { + $this->url = $this->base2 . 'commits/show/' . $owner . '/' . $project . '/' . $id; + return self::connect(); + } + + function getCommits($owner, $project, $branch) { + $this->url = $this->base . $owner .'/'. $project . '/commits/'. $branch; + return self::connect(); + } + + function connect() { + $result = $this->Http->get($this->url); + $json = json_decode($result); + $Set = new Set(); + return $Set->reverse($json); + } + +} +?> \ No newline at end of file diff --git a/models/domain.php b/models/domain.php deleted file mode 100644 index 3e3d5f7..0000000 --- a/models/domain.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -class Domain extends AppModel { - - var $name = 'Domain'; - var $useDbConfig = 'dreamhost'; - var $useTable = false; - - function domains() { - $results = $this->Dreamhost->find('domain-list_domains'); - foreach ($results as $key => $value) { - if ($this->Dreamhost->isDomain($value->domain) == true) { - $domains[$value->domain] = $value->domain; - } - } - ksort($domains); - return $domains; - } - - function active() { - $results = $this->find('domain-list_domains'); - echo '<pre>'; print_r($results); die; - return $results; - } - - function registered() { - $results = $this->find('domain-list_registrations'); - return $results; - } - - function isDomain($domain) { - $array = explode('.', $domain); - if (count($array) == 3) return false; - else return true; - } -} -?> \ No newline at end of file diff --git a/models/setting.php b/models/setting.php new file mode 100644 index 0000000..e143617 --- /dev/null +++ b/models/setting.php @@ -0,0 +1,15 @@ +<?php + +class Setting extends AppModel { + + var $name = 'Setting'; + + function settings() { + $data = $this->find('all', array('fields' => array('Setting.name', 'Setting.value'))); + foreach ($data as $key => $value) { + $settings[$value['Setting']['name']] = $value['Setting']['value']; + } + return $settings; + } +} +?> \ No newline at end of file diff --git a/plugins/dreamhost/controllers/components/dreamhost.php b/plugins/dreamhost/controllers/components/dreamhost.php new file mode 100644 index 0000000..6f9c21d --- /dev/null +++ b/plugins/dreamhost/controllers/components/dreamhost.php @@ -0,0 +1,53 @@ +<?php + +class DreamhostComponent extends Object { + + var $name = 'Dreamhost'; + var $params = array(); + var $components = array('Session'); + var $key = ''; + + function initialize(&$controller, $settings = array()) { + $this->Settings =& ClassRegistry::init('Setting'); + $this->Settings = $this->Settings->settings(); + $this->key = $this->Settings['dreamhost_key']; + } + + function find($command) { + $this->dreamhost->configs($this->key, $this->uuid()); + return $this->dreamhost->connect($command); + } + + function startup() { + App::import('ConnectionManager'); + $this->dreamhost =& ConnectionManager::getDataSource('dreamhost'); + } + + function uuid($prefix = array()) { + $chars = md5(microtime()); + $uuid = substr($chars,0,8) . '-'; + $uuid .= substr($chars,8,4) . '-'; + $uuid .= substr($chars,12,4) . '-'; + $uuid .= substr($chars,16,4) . '-'; + $uuid .= substr($chars,20,12); + return $this->getString($prefix, 'string') . $uuid; + } + + function getString($array = array(), $type = 'query') { + $str = ''; + if ($type == 'query') { + foreach ($array as $key => $value) { + $str .= $key . '=' . $value . '&'; + } + } + if ($type == 'string') { + foreach ($array as $key => $value) { + $str .= $key . $value; + } + } + return $str; + } + +} + +?> \ No newline at end of file diff --git a/plugins/dreamhost/controllers/fetch_controller.php b/plugins/dreamhost/controllers/fetch_controller.php new file mode 100644 index 0000000..f1b4bb7 --- /dev/null +++ b/plugins/dreamhost/controllers/fetch_controller.php @@ -0,0 +1,54 @@ +<?php + +class FetchController extends DreamhostAppController { + + var $name = 'Fetch'; + var $uses = array(); + var $components = array('Dreamhost.Dreamhost'); + var $helpers = array('Dreamhost.Dreamhost'); + + var $functions = array( + 'announcement_list-list_lists', + 'announcement_list-list_subscribers', + 'domain-list_domains', + 'domain-list_registrations', + 'dns-list_records', + 'mysql-list_dbs', + 'mysql-list_hostnames', + 'mysql-list_users', + 'mail-list_filters', + 'user-list_users', + 'user-list_users_no_pw', + 'dreamhost_ps-list_pending_ps', + 'dreamhost_ps-list_ps', + 'dreamhost_ps-list_settings', + 'dreamhost_ps-list_size_history', + 'dreamhost_ps-list_reboot_history', + 'dreamhost_ps-list_usage', + ); + + function index() { + if (!empty($this->data)) { + $data = $this->Dreamhost->find($this->data['Fetch']['command']); + if (is_array($data)) $this->set('data', $data); + } + $this->set('cmds', $this->commands()); + } + + function commands() { + foreach ($this->functions as $key => $value) { + $clean = str_replace(array('_', '-'), ' ', $value); + $clean = ucwords($clean); + $cmd[$value] = $clean; + } + return $cmd; + } + + + function sFlash($command, $response) { + $this->Session->setFlash(ucwords(str_replace('_', ' ', $response))); + $this->redirect(array('action' => 'fetch', str_replace('remove', 'list', $command) . 's'), null, false); + } + +} +?> \ No newline at end of file diff --git a/plugins/dreamhost/dreamhost_app_controller.php b/plugins/dreamhost/dreamhost_app_controller.php new file mode 100644 index 0000000..6a2d20e --- /dev/null +++ b/plugins/dreamhost/dreamhost_app_controller.php @@ -0,0 +1,7 @@ +<?php + +class DreamhostAppController extends AppController { + //var $components = array('DebugKit.Toolbar'); + var $helpers = array('Html', 'Form', 'Javascript'); +} +?> \ No newline at end of file diff --git a/plugins/dreamhost/views/fetch/index.ctp b/plugins/dreamhost/views/fetch/index.ctp new file mode 100644 index 0000000..894aa94 --- /dev/null +++ b/plugins/dreamhost/views/fetch/index.ctp @@ -0,0 +1,18 @@ +<?php +echo $form->create('Fetch', array('url' => '/dreamhost/fetch')); +echo $form->input('command', array('label' => 'Select a command','type' => 'select', 'options' => $cmds)); +echo $form->end('Submit'); +?> +<h2> + <?php + if (isset($this->params['data']['Fetch']) && !empty($data)) { + echo 'Query: ' . $dreamhost->title($this->params['data']['Fetch']['command']); + } + else echo 'No Results'; + ?> +</h2> +<?php if (!empty($data)): ?> +<table> + <?php echo $dreamhost->table($data); ?> +</table> +<?php endif;?> \ No newline at end of file diff --git a/plugins/dreamhost/views/helpers/dreamhost.php b/plugins/dreamhost/views/helpers/dreamhost.php new file mode 100644 index 0000000..57045d0 --- /dev/null +++ b/plugins/dreamhost/views/helpers/dreamhost.php @@ -0,0 +1,58 @@ +<?php + +class DreamhostHelper extends Helper { + + var $helpers = array('Html'); + + var $ignore = array( + 'php_fcgid', 'unique_ip', 'account_id', 'fastcgi', 'passenger', + 'php', 'xcache', 'security', 'outside_url', 'www_or_not', 'home', 'hosting_type' + ); + + function table($data) { + $keys = $this->getKeys(array_keys((array) $data[0])); + // echo '<pre>'; print_r($keys); die; + $rows = $this->setRows($data, $keys); + $row = ''; + for ($i = 0; $i < count($rows); $i++) { + if ($i == 0) $class = 'row'; + if ($i % 2) $class = 'row'; else $class = 'altrow'; + + $row .= '<tr class="' . $class .'">'; + foreach ($rows[$i] as $key => $value) { + if ($key == 0) $row .= '<th>' . $value . '</th>'; + else $row .= '<td>' . $value . '</td>'; + } + $row .= '</tr>' . "\r"; + } + return $row; + } + + function title($name) { + $clean = str_replace(array('_', '-'), ' ', $name); + return ucwords($clean); + } + + function setRows($data, $keys) { + foreach ($data as $key => $value) { + foreach ($keys as $key2 => $value2) { + $rows[$key2][0] = ucwords(str_replace('_', ' ', $value2)); + if (isset($value->{$value2})) { + $rows[$key2][] = $value->{$value2}; + } + else { + $rows[$key2][] = ''; + } + } + } + return $rows; + } + + function getKeys($data) { + foreach ($data as $key => $value) { + if (!in_array($value, $this->ignore)) $keys[] = $value; + } + return $keys; + } +} +?> \ No newline at end of file diff --git a/plugins/github/config/config.php b/plugins/github/config/config.php new file mode 100644 index 0000000..ebcca8f --- /dev/null +++ b/plugins/github/config/config.php @@ -0,0 +1,3 @@ +<?php +$username = 'jonathanbradley'; +?> \ No newline at end of file diff --git a/plugins/github/controllers/commits_controller.php b/plugins/github/controllers/commits_controller.php new file mode 100644 index 0000000..50f1ce8 --- /dev/null +++ b/plugins/github/controllers/commits_controller.php @@ -0,0 +1,47 @@ +<?php + +class CommitsController extends GithubAppController { + + var $name = 'Commits'; + var $uses = array(); + var $components = array('Github.Github'); + + function view($owner, $project) { + $data = $this->Github->commits($owner, $project); + $commits = $data['commits']; + for ($i = 0; $i < count($commits); $i++) { + $commit[$i]['message'] = $commits[$i]['message']; + $commit[$i]['url'] = $commits[$i]['url']; + $commit[$i]['author'] = $commits[$i]['author']['name']; + $commit[$i]['id'] = $commits[$i]['id']; + $commit[$i]['date'] = $commits[$i]['authored_date']; + } + + $info['owner'] = $this->params['pass'][0]; + $info['project'] = $this->params['pass'][1]; + $this->set('data', $commit); + $this->set('info', $info); + } + + function display($owner, $project, $id) { + $data = $this->Github->viewCommit($owner, $project, $id); + echo '<pre>'; print_r($data); die; + } + + function commands() { + foreach ($this->functions as $key => $value) { + $clean = str_replace(array('_', '-'), ' ', $value); + $clean = ucwords($clean); + $cmd[$value] = $clean; + } + return $cmd; + } + + + function sFlash($command, $response) { + $this->Session->setFlash(ucwords(str_replace('_', ' ', $response))); + $this->redirect(array('action' => 'fetch', str_replace('remove', 'list', $command) . 's'), null, false); + } + +} +?> \ No newline at end of file diff --git a/plugins/github/controllers/components/github.php b/plugins/github/controllers/components/github.php new file mode 100644 index 0000000..a4c0b56 --- /dev/null +++ b/plugins/github/controllers/components/github.php @@ -0,0 +1,39 @@ +<?php + +class GithubComponent extends Object { + + var $name = 'Github'; + var $params = array(); + var $components = array('Session'); + var $key = ''; + + function commits($owner, $project, $branch = 'master') { + return $this->github->getCommits($owner, $project, $branch); + } + + function repos($owner) { + return $this->github->repos($owner); + } + + function viewCommit($owner, $project, $id) { + $data = $this->github->viewCommit($owner, $project, $id); + + foreach ($data['commit']['removed'] as $key => $value) { + $commit['removed'][] = $value['filename']; + } + foreach ($data['commit']['added'] as $key => $value) { + $commit['added'][] = $value['filename']; + } + $commit['info']['date'] = $data['commit']['committed_date']; + $commit['info']['author'] = $data['commit']['author']['name']; + echo '<pre>'; print_r($commit); die; + } + + function startup() { + App::import('ConnectionManager'); + $this->github =& ConnectionManager::getDataSource('github'); + } + +} + +?> \ No newline at end of file diff --git a/plugins/github/controllers/repos_controller.php b/plugins/github/controllers/repos_controller.php new file mode 100644 index 0000000..7f5ad08 --- /dev/null +++ b/plugins/github/controllers/repos_controller.php @@ -0,0 +1,16 @@ +<?php + +class ReposController extends GithubAppController { + + var $name = 'Repos'; + var $uses = array(); + var $components = array('Github.Github'); + + function index() { + include(APP . 'plugins' . DS . $this->params['plugin'] . DS . 'config' . DS . 'config.php'); + $data = $this->Github->repos($username); + $this->set('data', $data['repositories']); + } + +} +?> \ No newline at end of file diff --git a/plugins/github/github_app_controller.php b/plugins/github/github_app_controller.php new file mode 100644 index 0000000..febcf6d --- /dev/null +++ b/plugins/github/github_app_controller.php @@ -0,0 +1,7 @@ +<?php + +class GithubAppController extends AppController { + //var $components = array('DebugKit.Toolbar'); + var $helpers = array('Html', 'Form', 'Javascript'); +} +?> \ No newline at end of file diff --git a/plugins/github/views/commits/view.ctp b/plugins/github/views/commits/view.ctp new file mode 100644 index 0000000..6f451e4 --- /dev/null +++ b/plugins/github/views/commits/view.ctp @@ -0,0 +1,17 @@ +<table> +<?php +echo $html->tableHeaders(array('Date','Author','Message', 'Action')); +foreach ($data as $key => $value) { + echo $html->tableCells( + array( + $value['date'], + $value['author'], + $value['message'], + $html->link('details', array('action' => 'display', $info['owner'], $info['project'], $value['id'])), + ), + array('class' => 'altrow'), + array('class' => 'row') + ); +} +?> +</table> \ No newline at end of file diff --git a/plugins/github/views/repos/index.ctp b/plugins/github/views/repos/index.ctp new file mode 100644 index 0000000..5f72668 --- /dev/null +++ b/plugins/github/views/repos/index.ctp @@ -0,0 +1,19 @@ +<table> +<?php +echo $html->tableHeaders(array('Name','Owner','Description', 'Forks', 'Watchers', 'Actions')); +foreach ($data as $key => $value) { + echo $html->tableCells( + array( + $value['name'], + $value['owner'], + $value['description'], + $value['forks'], + $value['watchers'], + $html->link('commits', array('controller' => 'commits', 'action' => 'view', $value['owner'], $value['name'])), + ), + array('class' => 'altrow'), + array('class' => 'row') + ); +} +?> +</table> \ No newline at end of file diff --git a/readme.textile b/readme.textile deleted file mode 100644 index 207615e..0000000 --- a/readme.textile +++ /dev/null @@ -1,13 +0,0 @@ -h1. Control Panel from Dreamhost - -A CakePHP datasource for interacting with the Dreamhost's new API. http://wiki.dreamhost.com/API - -h2. Project Site - -http://thechaw.com/dreamhost_control_panel - - -h3. Copyright - -Created by Jonathan Bradley <jonathan@sixninellc.com> - diff --git a/tests/cases/behaviors/empty b/tests/cases/behaviors/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/cases/components/empty b/tests/cases/components/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/cases/controllers/empty b/tests/cases/controllers/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/cases/helpers/empty b/tests/cases/helpers/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/cases/models/empty b/tests/cases/models/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/fixtures/empty b/tests/fixtures/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tests/groups/empty b/tests/groups/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tmp/cache/models/empty b/tmp/cache/models/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tmp/cache/persistent/empty b/tmp/cache/persistent/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tmp/cache/views/empty b/tmp/cache/views/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tmp/logs/debug.log b/tmp/logs/debug.log index d9f53c8..c3f96ba 100644 --- a/tmp/logs/debug.log +++ b/tmp/logs/debug.log @@ -1,39 +1,163 @@ -2009-07-19 22:01:31 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:01:31 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 18] -2009-07-19 22:02:59 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:02:59 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 18] -2009-07-19 22:03:32 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:03:32 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 18] -2009-07-19 22:03:45 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:03:45 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 18] -2009-07-19 22:09:53 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:09:53 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 18] -2009-07-19 22:10:28 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 16] -2009-07-19 22:10:28 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 19] -2009-07-19 22:17:11 Debug: Notice (8): Trying to get property of non-object in [APP\controllers\dreamhost_controller.php, line 16] -2009-07-19 22:17:11 Debug: Notice (8): Undefined variable: list in [APP\controllers\dreamhost_controller.php, line 19] -2009-07-19 23:31:48 Debug: Notice (8): Undefined index: database in [CORE\cake\libs\model\datasources\datasource.php, line 211] -2009-07-19 23:32:38 Debug: Notice (8): Undefined variable: HttpSocket in [APP\models\datasources\dreamhost_source.php, line 13] -2009-07-19 23:34:13 Debug: Notice (8): Undefined variable: HttpSocket in [APP\models\datasources\dreamhost_source.php, line 23] -2009-07-19 23:40:49 Debug: Notice (8): Undefined variable: str in [APP\models\datasources\dreamhost_source.php, line 26] -2009-07-19 23:44:30 Debug: Notice (8): Undefined variable: query in [APP\models\datasources\dreamhost_source.php, line 29] -2009-07-19 23:48:05 Debug: Notice (8): Undefined variable: query in [APP\models\datasources\dreamhost_source.php, line 29] -2009-07-19 23:52:41 Debug: Notice (8): Undefined variable: url in [CORE\cake\libs\http_socket.php, line 607] -2009-07-20 00:22:38 Debug: Notice (8): Undefined property: DatabasesController::$Database in [APP\controllers\databases_controller.php, line 15] -2009-07-20 00:32:05 Debug: Notice (8): Undefined variable: params in [APP\models\datasources\dreamhost_source.php, line 24] -2009-07-20 00:32:08 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 33] -2009-07-20 00:41:13 Debug: Notice (8): Undefined variable: domans in [APP\views\databases\hostnames.ctp, line 9] -2009-07-20 00:43:32 Debug: Notice (8): Undefined variable: params in [APP\models\database.php, line 18] -2009-07-20 00:43:35 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 33] -2009-07-20 01:22:35 Debug: Notice (8): Undefined variable: cssMenu in [APP\views\layouts\default.ctp, line 47] -2009-07-20 02:50:12 Debug: Notice (8): Undefined offset: -1 in [APP\app_controller.php, line 27] -2009-07-20 03:03:05 Debug: Notice (8): Undefined property: stdClass::$disk_usage_mb in [APP\views\databases\users.ctp, line 17] -2009-07-20 03:03:05 Debug: Notice (8): Undefined property: stdClass::$description in [APP\views\databases\users.ctp, line 24] -2009-07-20 03:03:23 Debug: Notice (8): Undefined property: stdClass::$description in [APP\views\databases\users.ctp, line 24] -2009-07-20 21:33:56 Debug: Notice (8): Undefined variable: domains in [APP\models\domain.php, line 29] -2009-07-20 21:33:59 Debug: Notice (8): Undefined variable: domains in [APP\models\domain.php, line 29] -2009-07-20 21:34:14 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\domains\index.ctp, line 12] -2009-07-20 21:34:14 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\domains\index.ctp, line 13] -2009-07-20 22:17:36 Debug: Notice (8): Undefined property: Domain::$Dreamhost in [APP\models\domain.php, line 21] -2009-07-20 22:18:13 Debug: Notice (8): Undefined property: Domain::$Dreamhost in [APP\models\domain.php, line 21] -2009-07-20 22:18:26 Debug: Notice (8): Undefined property: Domain::$Dreamhost in [APP\models\domain.php, line 21] +2009-07-26 02:22:04 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 49] +2009-07-26 02:33:35 Debug: Notice (8): Undefined variable: action in [APP\controllers\dreamhost_controller.php, line 10] +2009-07-26 02:36:44 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\dreamhost\domain-list_domains.ctp, line 13] +2009-07-26 02:36:44 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\dreamhost\domain-list_domains.ctp, line 15] +2009-07-26 02:37:03 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\dreamhost\domain-list_domains.ctp, line 15] +2009-07-26 02:47:50 Debug: Notice (8): Undefined property: stdClass::$id in [APP\views\dreamhost\mysql-list_hostnames.ctp, line 15] +2009-07-26 02:50:55 Debug: Notice (8): Undefined offset: 0 in [APP\controllers\dreamhost_controller.php, line 11] +2009-07-26 02:52:38 Debug: Notice (8): Undefined variable: cmd in [APP\controllers\components\dreamhost.php, line 24] +2009-07-26 02:52:40 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 49] +2009-07-26 02:52:45 Debug: Notice (8): Undefined variable: cmd in [APP\controllers\components\dreamhost.php, line 24] +2009-07-26 02:52:45 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 49] +2009-07-26 02:52:46 Debug: Notice (8): Undefined variable: cmd in [APP\controllers\components\dreamhost.php, line 24] +2009-07-26 02:52:48 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 49] +2009-07-26 02:59:21 Debug: Notice (8): Undefined variable: data in [APP\controllers\dreamhost_controller.php, line 33] +2009-07-26 03:16:38 Debug: Notice (8): Undefined variable: header in [APP\views\dreamhost\fetch.ctp, line 5] +2009-07-26 03:20:21 Debug: Notice (8): Trying to get property of non-object in [APP\models\datasources\dreamhost_source.php, line 49] +2009-07-26 03:20:21 Debug: Notice (8): Undefined variable: header in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:31:05 Debug: Notice (8): Undefined property: stdClass::$Domain in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:31:05 Debug: Notice (8): Undefined property: stdClass::$Home in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:31:05 Debug: Notice (8): Undefined property: stdClass::$Accountid in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:35:29 Debug: Notice (8): Undefined offset: 0 in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:35:29 Debug: Notice (8): Trying to get property of non-object in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:35:29 Debug: Notice (8): Undefined offset: 1 in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:35:29 Debug: Notice (8): Undefined offset: 2 in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:35:29 Debug: Notice (8): Undefined offset: 3 in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:36:12 Debug: Notice (8): Undefined variable: i in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:36:12 Debug: Notice (8): Undefined index: in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:36:12 Debug: Notice (8): Trying to get property of non-object in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:36:21 Debug: Notice (8): Trying to get property of non-object in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:36:33 Debug: Notice (8): Trying to get property of non-object in [APP\views\helpers\dreamhost.php, line 19] +2009-07-26 03:38:49 Debug: Notice (8): Undefined offset: 0 in [APP\views\helpers\dreamhost.php, line 11] +2009-07-26 03:42:03 Debug: Notice (8): Undefined variable: row in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:03 Debug: Notice (8): Undefined offset: 1 in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:03 Debug: Notice (8): Undefined offset: 2 in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:06 Debug: Notice (8): Undefined variable: row in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:06 Debug: Notice (8): Undefined offset: 1 in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:06 Debug: Notice (8): Undefined offset: 2 in [APP\views\helpers\dreamhost.php, line 12] +2009-07-26 03:42:18 Debug: Notice (8): Undefined offset: 1 in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 03:42:18 Debug: Notice (8): Undefined offset: 2 in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 03:42:21 Debug: Notice (8): Undefined offset: 1 in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 03:42:21 Debug: Notice (8): Undefined offset: 2 in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$php_fcgid in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$hosting_type in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$outside_url in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$fastcgi in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$www_or_not in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$passenger in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$php in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$xcache in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$security in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:13 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$php_fcgid in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$hosting_type in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$outside_url in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$fastcgi in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$www_or_not in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$passenger in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$php in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$xcache in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$security in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:43:34 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\helpers\dreamhost.php, line 34] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$php_fcgid in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$hosting_type in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$outside_url in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$fastcgi in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$www_or_not in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$passenger in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$php in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$xcache in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$security in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:16 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:33 Debug: Notice (8): Undefined property: stdClass::$php_fcgid in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:33 Debug: Notice (8): Undefined property: stdClass::$hosting_type in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:33 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:33 Debug: Notice (8): Undefined property: stdClass::$outside_url in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$fastcgi in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$www_or_not in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$passenger in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$php in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$xcache in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$security in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:44:34 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:48:44 Debug: Notice (8): Trying to get property of non-object in [APP\views\helpers\dreamhost.php, line 31] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$php_fcgid in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$hosting_type in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$path in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$outside_url in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$fastcgi in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$www_or_not in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$passenger in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$php in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$xcache in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$security in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:51:14 Debug: Notice (8): Undefined property: stdClass::$user in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 04:06:34 Debug: Notice (8): Object of class stdClass to string conversion in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:11:05 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 21] +2009-07-26 04:19:56 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:19:59 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:20:16 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 15] +2009-07-26 04:20:19 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 15] +2009-07-26 04:20:39 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:20:42 Debug: Notice (8): Undefined variable: class in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:22:40 Debug: Notice (8): Undefined variable: count in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:22:43 Debug: Notice (8): Undefined variable: count in [APP\views\helpers\dreamhost.php, line 13] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 14] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 15] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 16] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 19] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 22] +2009-07-26 04:42:14 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 26] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: data in [APP\views\dreamhost\fetch.ctp, line 4] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 50] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 43] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 14] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 15] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 16] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 19] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 22] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 26] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: data in [APP\views\dreamhost\fetch.ctp, line 4] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 50] +2009-07-26 04:42:15 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 43] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 14] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 15] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 16] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 19] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 22] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 26] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: data in [APP\views\dreamhost\fetch.ctp, line 4] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 50] +2009-07-26 04:42:45 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 43] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 14] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 15] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 16] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 19] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 22] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 26] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: data in [APP\views\dreamhost\fetch.ctp, line 4] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 50] +2009-07-26 04:42:48 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 43] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 35] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 36] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 37] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 40] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 43] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 47] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: commands in [APP\controllers\dreamhost_controller.php, line 56] +2009-07-26 04:46:13 Debug: Notice (8): Undefined variable: cmd in [APP\controllers\dreamhost_controller.php, line 61] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 35] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 36] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: command in [APP\controllers\dreamhost_controller.php, line 37] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 40] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 43] +2009-07-26 04:46:22 Debug: Notice (8): Undefined variable: type in [APP\controllers\dreamhost_controller.php, line 47] +2009-07-26 04:47:39 Debug: Notice (8): Undefined variable: data in [APP\views\dreamhost\fetch.ctp, line 4] +2009-07-26 04:47:39 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 50] +2009-07-26 04:47:39 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 43] +2009-07-26 04:54:46 Debug: Notice (8): Undefined variable: value in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:56:37 Debug: Notice (8): Undefined variable: keys in [APP\views\helpers\dreamhost.php, line 55] +2009-07-26 04:56:37 Debug: Notice (8): Undefined variable: rows in [APP\views\helpers\dreamhost.php, line 48] diff --git a/tmp/logs/empty b/tmp/logs/empty deleted file mode 100644 index e69de29..0000000 diff --git a/tmp/logs/error.log b/tmp/logs/error.log index ebd2f1a..a8a3fe6 100644 --- a/tmp/logs/error.log +++ b/tmp/logs/error.log @@ -1,41 +1,30 @@ -2009-07-19 22:00:20 Error: Fatal Error (256): Unable to load DataSource file dreamhost_source.php in [CORE\cake\libs\model\connection_manager.php, line 179] -2009-07-19 22:01:11 Error: Fatal Error (256): Unable to load DataSource file dreamhost_source.php in [CORE\cake\libs\model\connection_manager.php, line 179] -2009-07-19 22:01:31 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:02:59 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:03:32 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:03:45 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:09:53 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 15] -2009-07-19 22:10:28 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 16] -2009-07-19 22:17:11 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 16] -2009-07-20 00:27:13 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:27:13 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:32:05 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\datasources\dreamhost_source.php, line 49] -2009-07-20 00:33:57 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:33:57 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:34:29 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:34:29 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:34:54 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:34:54 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:37:32 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:37:32 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:41:13 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\databases\hostnames.ctp, line 9] -2009-07-20 00:43:32 Warning: Warning (2): array_merge() [<a href='http://php.net/function.array-merge'>function.array-merge</a>]: Argument #2 is not an array in [APP\models\datasources\dreamhost_source.php, line 22] -2009-07-20 00:43:32 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\datasources\dreamhost_source.php, line 49] -2009-07-20 00:46:39 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:46:39 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 00:48:24 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\models\domain.php, line 13] -2009-07-20 00:48:24 Warning: Warning (2): ksort() expects parameter 1 to be array, null given in [APP\models\domain.php, line 18] -2009-07-20 02:46:05 Warning: Warning (2): key() [<a href='http://php.net/function.key'>function.key</a>]: Passed variable is not an array or object in [APP\controllers\databases_controller.php, line 15] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.0078125 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for unknown file size in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.3828125 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.8671875 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.44140625 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 1.046875 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.03125 in [APP\app_controller.php, line 14] -2009-07-20 02:47:44 Warning: Warning (2): filesize() [<a href='http://php.net/function.filesize'>function.filesize</a>]: stat failed for 0.53125 in [APP\app_controller.php, line 14] -2009-07-20 21:33:56 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\domains\index.ctp, line 9] -2009-07-20 21:33:59 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\domains\index.ctp, line 9] -2009-07-20 22:16:39 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\databases\index.ctp, line 8] -2009-07-20 22:17:11 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\databases\index.ctp, line 8] -2009-07-20 22:18:44 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\domains\index.ctp, line 9] +2009-07-26 02:18:45 Warning: Warning (2): mysql_connect() [<a href='http://php.net/function.mysql-connect'>function.mysql-connect</a>]: Can't connect to MySQL server on 'localhost' (10061) in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 374] +2009-07-26 02:18:45 Warning: Warning (2): mysql_select_db(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 379] +2009-07-26 02:18:45 Warning: Warning (2): mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 387] +2009-07-26 02:18:45 Warning: Warning (2): mysql_query(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 411] +2009-07-26 02:19:15 Warning: Warning (2): mysql_connect() [<a href='http://php.net/function.mysql-connect'>function.mysql-connect</a>]: Can't connect to MySQL server on 'localhost' (10061) in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 374] +2009-07-26 02:19:15 Warning: Warning (2): mysql_select_db(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 379] +2009-07-26 02:19:15 Warning: Warning (2): mysql_get_server_info(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 387] +2009-07-26 02:19:15 Warning: Warning (2): mysql_query(): supplied argument is not a valid MySQL-Link resource in [CORE\cake\libs\model\datasources\dbo\dbo_mysql.php, line 411] +2009-07-26 03:20:21 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 8] +2009-07-26 03:20:21 Warning: Warning (2): Invalid argument supplied for foreach() in [CORE\cake\libs\view\helpers\html.php, line 472] +2009-07-26 03:38:49 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 17] +2009-07-26 03:42:03 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 20] +2009-07-26 03:42:06 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 20] +2009-07-26 03:42:18 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 21] +2009-07-26 03:42:21 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 21] +2009-07-26 03:50:00 Warning: Warning (2): key() [<a href='http://php.net/function.key'>function.key</a>]: Passed variable is not an array or object in [APP\views\helpers\dreamhost.php, line 31] +2009-07-26 03:50:43 Warning: Warning (2): key() [<a href='http://php.net/function.key'>function.key</a>]: Passed variable is not an array or object in [APP\views\helpers\dreamhost.php, line 33] +2009-07-26 03:58:17 Warning: Warning (2): array_keys() [<a href='http://php.net/function.array-keys'>function.array-keys</a>]: The first argument should be an array in [APP\views\helpers\dreamhost.php, line 46] +2009-07-26 03:58:48 Warning: Warning (2): array_keys() [<a href='http://php.net/function.array-keys'>function.array-keys</a>]: The first argument should be an array in [APP\views\helpers\dreamhost.php, line 9] +2009-07-26 03:59:10 Warning: Warning (2): array_keys() [<a href='http://php.net/function.array-keys'>function.array-keys</a>]: The first argument should be an array in [APP\views\helpers\dreamhost.php, line 9] +2009-07-26 04:02:19 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 21] +2009-07-26 04:06:34 Warning: Warning (4096): Object of class stdClass could not be converted to string in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:42:15 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:42:15 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:42:45 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:42:48 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:46:13 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\controllers\dreamhost_controller.php, line 56] +2009-07-26 04:47:39 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 32] +2009-07-26 04:56:37 Warning: Warning (2): Invalid argument supplied for foreach() in [APP\views\helpers\dreamhost.php, line 37] +2009-07-27 00:11:37 Error: Fatal Error (256): ConnectionManager::getDataSource - Non-existent data source github in [CORE\cake\libs\model\connection_manager.php, line 109] diff --git a/vendors/shells/tasks/empty b/vendors/shells/tasks/empty deleted file mode 100644 index e69de29..0000000 diff --git a/vendors/shells/templates/empty b/vendors/shells/templates/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/databases/add_host.ctp b/views/databases/add_host.ctp deleted file mode 100644 index f6837bf..0000000 --- a/views/databases/add_host.ctp +++ /dev/null @@ -1,8 +0,0 @@ -<h2>Add MySQL Hostname</h2> - -<?php -echo $form->create('Database', array('action' => 'add_host')); -echo $form->input('prefix'); -echo $form->input('domain', array('type' => 'select', 'empty' => 'Select Domain', 'options' => $domains)); -echo $form->end('Add Hostname'); -?> \ No newline at end of file diff --git a/views/databases/hostnames.ctp b/views/databases/hostnames.ctp deleted file mode 100644 index 98bd073..0000000 --- a/views/databases/hostnames.ctp +++ /dev/null @@ -1,20 +0,0 @@ -<h2>Current Hostnames</h2> -<?php echo $html->link('Add Hostname', array('action' =>'add_host'), null, null, false) ?> -<table> - <tr> - <th>Domain</th> - <th>Server</th> - <th>Action</th> - </tr> - <?php foreach($data as $key => $value) { ?> - <tr> - <td><?php echo $value->domain; ?></td> - <td><?php echo $value->home; ?></td> - <td> - <?php - echo $html->link('Delete', array('action' =>'delete_hostname', $value->domain), null, 'Are you sure?', false) - ?> - </td> - </tr> - <?php } ?> -</table> \ No newline at end of file diff --git a/views/databases/index.ctp b/views/databases/index.ctp deleted file mode 100644 index 727d9c2..0000000 --- a/views/databases/index.ctp +++ /dev/null @@ -1,15 +0,0 @@ -<h2>Current Databases</h2> -<table> - <tr> - <th>Name</th> - <th>Disk Usuage (MB)</th> - <th>Type</th> - </tr> - <?php foreach($data as $key => $value) { ?> - <tr> - <td><?php echo $value->db; ?></td> - <td><?php echo $value->disk_usage_mb; ?></td> - <td><?php echo $value->description; ?></td> - </tr> - <?php } ?> -</table> \ No newline at end of file diff --git a/views/databases/users.ctp b/views/databases/users.ctp deleted file mode 100644 index edd3af5..0000000 --- a/views/databases/users.ctp +++ /dev/null @@ -1,36 +0,0 @@ -<h2>Current Databases Users</h2> -<table> - <tr> - <th>Username</th> - <th>Database</th> - <th>Hostname</th> - <th>Alter</th> - <th>Index</th> - <th>Create</th> - <th>Update</th> - <th>Select</th> - <th>Insert</th> - <th>Drop</th> - <th>Delete</th> - </tr> - <?php foreach($data as $key => $value) { ?> - <tr> - <td><?php echo $value->username; ?></td> - <td><?php echo $value->db; ?></td> - <td> - <?php - if ($value->host == '') echo 'localhost'; - else echo $value->host; - ?> - </td> - <td><?php echo $value->alter_priv; ?></td> - <td><?php echo $value->index_priv; ?></td> - <td><?php echo $value->create_priv; ?></td> - <td><?php echo $value->update_priv; ?></td> - <td><?php echo $value->select_priv; ?></td> - <td><?php echo $value->insert_priv; ?></td> - <td><?php echo $value->drop_priv; ?></td> - <td><?php echo $value->delete_priv; ?></td> - </tr> - <?php } ?> -</table> \ No newline at end of file diff --git a/views/domains/index.ctp b/views/domains/index.ctp deleted file mode 100644 index 7076728..0000000 --- a/views/domains/index.ctp +++ /dev/null @@ -1,17 +0,0 @@ -<h2>Active Domains</h2> -<table> - <tr> - <th>Name</th> - <th>Path</th> - <th>User</th> - <th>Server</th> - </tr> - <?php foreach($data as $key => $value) { ?> - <tr> - <td><?php echo $value->domain; ?></td> - <td><?php if (isset($value->path)) echo $value->path; ?></td> - <td><?php if (isset($value->user)) echo $value->user; ?></td> - <td><?php echo $value->home; ?></td> - </tr> - <?php } ?> -</table> \ No newline at end of file diff --git a/views/domains/registered.ctp b/views/domains/registered.ctp deleted file mode 100644 index 7b23a6e..0000000 --- a/views/domains/registered.ctp +++ /dev/null @@ -1,23 +0,0 @@ -<h2>Registered Domains</h2> -<table> - <tr> - <th>Name</th> - <th>Created</th> - <th>Updated</th> - <th>Expires</th> - <th>DNS (Primary)</th> - <th>DNS (Secondary)</th> - <th>DNS (Tietary)</th> - </tr> - <?php foreach($data as $key => $value) { ?> - <tr> - <td><?php echo $value->domain; ?></td> - <td><?php echo $value->modified; ?></td> - <td><?php echo $value->created; ?></td> - <td><?php echo $value->expires; ?></td> - <td><?php echo $value->ns1; ?></td> - <td><?php echo $value->ns2; ?></td> - <td><?php echo $value->ns3; ?></td> - </tr> - <?php } ?> -</table> \ No newline at end of file diff --git a/views/elements/empty b/views/elements/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/elements/menu.ctp b/views/elements/menu.ctp index a0ad28b..86bf8c6 100644 --- a/views/elements/menu.ctp +++ b/views/elements/menu.ctp @@ -1,26 +1,6 @@ <div id="menu"> <ul id="navmenu-h"> - <li><a href="/">Home</a></li> - <li><a href="#">Domains &raquo;</a> - <ul> - <li><?php echo $html->link('Active List', array('controller' => 'domains', 'action' => 'index'), null, null, false); ?></li> - <li><?php echo $html->link('Registered', array('controller' => 'domains', 'action' => 'registered'), null, null, false); ?></li> - </ul> - </li> - <li><a href="#">MySQL &raquo;</a> - <ul> - <li><?php echo $html->link('Databases', array('controller' => 'databases', 'action' => 'index'), null, null, false); ?></li> - <li><?php echo $html->link('Hostnames &raquo;', array('controller' => 'databases', 'action' => 'hostnames'), null, null, false); ?> - <ul> - <li><?php echo $html->link('Add New Hostname', array('controller' => 'databases', 'action' => 'add_host'), null, null, false); ?></li> - </ul> - </li> - <li><?php echo $html->link('Users &raquo;', array('controller' => 'databases', 'action' => 'users'), null, null, false); ?> - <ul> - <li><?php echo $html->link('Add New User', array('controller' => 'databases', 'action' => 'add_user'), null, null, false); ?></li> - </ul> - </li> - </ul> - </li> - </ul> + <li><a href="/">Home</a></li> + <li><a href="/dreamhost/fetch">Dreamhost</a></li> + </ul> </div> \ No newline at end of file diff --git a/views/errors/empty b/views/errors/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/helpers/css_menu.php b/views/helpers/css_menu.php deleted file mode 100644 index 5e57683..0000000 --- a/views/helpers/css_menu.php +++ /dev/null @@ -1,51 +0,0 @@ -<?php -/* - * CSS menu helper. - * Author: John Reeves. - */ -class CssMenuHelper extends Helper{ - - var $helpers = array('Html'); - - /* - * display a menu list. - * @arg $data: a nested associative array. The keys are the text that - * is displayed for that menu item. If the value is an array, it is - * treated as a sub menu, with the same format. Otherwise it is - * interpreted as a URL to be used for a link. - * @arg $type: the type of array. Can be right, left, or down. - */ - function menu($data=array(), $type='right'){ - global $cm_css_inc; - $out =''; - if($cm_css_inc != true){ - $cm_css_inc = true; - $out .= $this->Html->css('css_menu'); - } - return $this->output($out . $this->_cm_render($data, $type)); - } - - /* render a menu. - * This is a helper for recursion. The arguments are the - * same as for $this->menu(). - */ - function _cm_render($data=array(), $type='right'){ - $out=''; - if($data == array()) return; - if(is_array($data)){ - $out .= "<ul class=\"css_menu cm_$type\">\n"; - foreach($data as $key => $item){ - if(is_array($item)){ - $out .= '<li class="parent">'. $key. "\n"; - $out .= $this->_cm_render($item, $type); - $out .= "</li>\n"; - }else{ - $out .= '<li><a href="'. $item. '">'. $key. '</a></li>'. "\n"; - } - } - $out .= "</ul>\n"; - } - return $out; - } -} -?> \ No newline at end of file diff --git a/views/helpers/html_cleaner.php b/views/helpers/html_cleaner.php deleted file mode 100644 index 1ea1792..0000000 --- a/views/helpers/html_cleaner.php +++ /dev/null @@ -1,205 +0,0 @@ -<?php -/** - * Created: Sat February 26 EDT 2008 - * - * A class to balance out html tags in texts. Makes your texts ready for excerpts with the TextHelper's truncate function. - * - * - * Copyright (c) Debuggable Ltd. <http://debuggable.com> - * - * Licensed under The MIT License - * Redistributions of files must retain the above copyright notice. - * - * Example: - * $bogusHtml = $htmlCleaner->clean($bogusHtml); - * - * It also replaces the single closed tags with their proper xhtml equivalents. Like <br> --> <br /> - * - * - * @copyright Copyright (c) 2008, Debuggable Ltd. <http://debuggable.com> - * @link http://www.debuggable.com - * @license http://www.opensource.org/licenses/mit-license.php The MIT License - */ -class HtmlCleanerHelper extends Helper { -/** - * An array of html tags that are singled ended: <img /> - * - * @var string - */ - var $singleTags = array('br', 'hr', 'img', 'input'); -/** - * An array of nestable html tags - * - * @var string - */ - var $nestableTags = array('blockquote', 'div', 'span'); -/** - * Keeps track of which tags are in the text and thus need to be ended - * - * @var string - */ - var $tagStack = array(); -/** - * String of closing tags that is appended to the text to close all unclosed open tags - * - * @var string - */ - var $tagQueue = ''; -/** - * Resets stack and queue for a new processing - * - * @return void - */ - function reset() { - $this->tagStack = array(); - $this->tagQueue = ''; - } -/** - * Main function of this helper: clean and balance out html tags for a given string - * - * @param string $txt - * @return void - */ - function clean($txt) { - $this->reset(); - $result = ''; - - // just to cache the stack size and to prevent countless count()s - $stackSize = 0; - - $txt = $this->takeOutComments($txt); - $txt = $this->clearUnclosedTagsAtEnd($txt); - - while (preg_match("#<(/?\w*)\s*([^>]*)>#", $txt, $matches)) { - $result .= $this->tagQueue; - $this->tagQueue = ''; - - $tagPos = strpos($txt, $matches[0]); - $tagLength = strlen($matches[0]); - $isStartingTag = $matches[1][0] != "/"; - - if ($isStartingTag) { - $tag = low($matches[1]); - - $isSingleTag = in_array($tag, $this->singleTags); - $tagNotEmpty = (substr($matches[2], -1) != '/' && $tag != ''); - - if ($tagNotEmpty && $isSingleTag) { - $matches[2] .= '/'; - } else { - $isNoNestableTag = !in_array($tag, $this->nestableTags); - $isLastTag = ($stackSize > 0 && $this->tagStack[$stackSize - 1] == $tag); - - if ($isNoNestableTag && $isLastTag) { - $this->tagQueue = '</'.array_pop($this->tagStack).'>'; - } - $stackSize = array_push($this->tagStack, $tag); - } - - $attributes = $matches[2]; - if ($attributes) { - $attributes = ' ' . $attributes; - } - $tag = '<' . $tag . $attributes . '>'; - - if (!empty($this->tagQueue)) { - $this->tagQueue .= $tag; - $tag = ''; - } - } else { - $tag = low(substr($matches[1], 1)); - - if ($stackSize <= 0) { - $tag = ''; - } elseif ($this->tagStack[$stackSize - 1] == $tag) { - $tag = '</' . $tag . '>'; - array_pop($this->tagStack); - $stackSize--; - } else { - for ($j = $stackSize - 1; $j >= 0; $j--) { - if ($this->tagStack[$j] == $tag) { - for ($k = $stackSize - 1; $k >= $j; $k--) { - $this->tagQueue .= '</' . array_pop($this->tagStack) . '>'; - $stackSize--; - } - break; - } - } - $tag = ''; - } - } - $result .= substr($txt, 0, $tagPos).$tag; - $txt = substr($txt, $tagPos + $tagLength); - } - $result .= $this->tagQueue . $txt; - - $result = $this->addRemainingTags($result); - $result = $this->reAddComments($result); - - return $result; - } -/** - * Closes all tags in the text that are in the tag stack - * - * @param string $txt - * @return void - */ - function addRemainingTags($txt) { - while ($x = array_pop($this->tagStack)) { - $txt .= '</' . $x . '>'; - } - return $txt; - } -/** - * Clean up shitty comments ;p No idea for a better name for this... - * It basically replaces comments temporarily with something else, so comments are not balanced out. - * Haha how would that work anyway? - * - * @param string $txt - * @return void - */ - function takeOutComments($txt) { - $txt = r('< !--', '< !--', $txt); - $txt = preg_replace('#<([0-9]{1})#', '&lt;$1', $txt); - return $txt; - } -/** - * Re-replace the comments. : ) - * - * @param string $txt - * @return void - */ - function reAddComments($txt) { - $txt = r('< !--', '<!--', $txt); - $txt = r('< !--', '< !--', $txt); - return $txt; - } -/** - * Well cleans the '<div ' in <span>lala</span><div '. This is useful when you use CakePHP's truncate function - * (from TextHelper) to build text excerpts, but use html in these texts. ; / Truncate could cut a html tag in two. ; / - * - * @param string $txt - * @return void - */ - function clearUnclosedTagsAtEnd($txt) { - $tags = array('a', 'form', 'input', 'textarea', 'select', 'option', 'optiongroup', 'img', - 'table', 'th', 'tr', 'td', 'div', 'span', 'p', 'label', 'fieldset', 'legend', - 'style', 'ul', 'ol', 'li' - ); - - foreach ($tags as $tag) { - $length = strlen($tag); - - for ($i = 0; $i < $length - 1; $i++) { - $current = substr($tag, 0, $i); - $pattern = '/^(.*?)<'.$current.'\s*([^>]*)$/im'; - if (preg_match($pattern, $txt)) { - $txt = preg_replace($pattern, '$1', $txt); - } - } - } - - return $txt; - } -} -?> \ No newline at end of file diff --git a/views/layouts/default.ctp b/views/layouts/default.ctp index fc95330..6d5cf21 100644 --- a/views/layouts/default.ctp +++ b/views/layouts/default.ctp @@ -34,6 +34,7 @@ echo $html->meta('icon'); echo $html->css(array('reset','cake.generic','styles','menu')); + echo $javascript->link(array('jquery-1.3.2.min.js', 'app.js')); echo $scripts_for_layout; ?> diff --git a/views/layouts/js/empty b/views/layouts/js/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/layouts/rss/empty b/views/layouts/rss/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/layouts/xml/empty b/views/layouts/xml/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/scaffolds/empty b/views/scaffolds/empty deleted file mode 100644 index e69de29..0000000 diff --git a/views/settings/config.ctp b/views/settings/config.ctp new file mode 100644 index 0000000..c28f1dc --- /dev/null +++ b/views/settings/config.ctp @@ -0,0 +1,7 @@ +<h2>Setup Dreamhost API Key +<?php +echo $form->create('Setting', array('action' => 'config')); +echo $form->input('name', array('type' => 'hidden', 'value' => 'key')); +echo $form->input('value'); +echo $form->end('Save Settings'); +?> \ No newline at end of file diff --git a/webroot/css/styles.css b/webroot/css/styles.css index cbe1c80..8a10aa3 100644 --- a/webroot/css/styles.css +++ b/webroot/css/styles.css @@ -1,5 +1,24 @@ +* { + font-size: 8pt; +} body { background: #ccc; + font-size: 8pt; +} + +table, th, td { + + font-size: 8pt; +} + +table { + min-width: 100%; +} + +th { + min-width: 150px; + text-align: left; + text-indent: 10px; } #header { @@ -27,4 +46,11 @@ a, a:hover { margin: 0; padding: 0; height: 34px; +} +form div { + margin: 0; +} + +form div.submit { + margin: 0; } \ No newline at end of file diff --git a/webroot/js/app.js b/webroot/js/app.js new file mode 100644 index 0000000..e69de29 diff --git a/webroot/js/jquery-1.3.2.min.js b/webroot/js/jquery-1.3.2.min.js new file mode 100644 index 0000000..b1ae21d --- /dev/null +++ b/webroot/js/jquery-1.3.2.min.js @@ -0,0 +1,19 @@ +/* + * jQuery JavaScript Library v1.3.2 + * http://jquery.com/ + * + * Copyright (c) 2009 John Resig + * Dual licensed under the MIT and GPL licenses. + * http://docs.jquery.com/License + * + * Date: 2009-02-19 17:34:21 -0500 (Thu, 19 Feb 2009) + * Revision: 6246 + */ +(function(){var l=this,g,y=l.jQuery,p=l.$,o=l.jQuery=l.$=function(E,F){return new o.fn.init(E,F)},D=/^[^<]*(<(.|\s)+>)[^>]*$|^#([\w-]+)$/,f=/^.[^:#\[\.,]*$/;o.fn=o.prototype={init:function(E,H){E=E||document;if(E.nodeType){this[0]=E;this.length=1;this.context=E;return this}if(typeof E==="string"){var G=D.exec(E);if(G&&(G[1]||!H)){if(G[1]){E=o.clean([G[1]],H)}else{var I=document.getElementById(G[3]);if(I&&I.id!=G[3]){return o().find(E)}var F=o(I||[]);F.context=document;F.selector=E;return F}}else{return o(H).find(E)}}else{if(o.isFunction(E)){return o(document).ready(E)}}if(E.selector&&E.context){this.selector=E.selector;this.context=E.context}return this.setArray(o.isArray(E)?E:o.makeArray(E))},selector:"",jquery:"1.3.2",size:function(){return this.length},get:function(E){return E===g?Array.prototype.slice.call(this):this[E]},pushStack:function(F,H,E){var G=o(F);G.prevObject=this;G.context=this.context;if(H==="find"){G.selector=this.selector+(this.selector?" ":"")+E}else{if(H){G.selector=this.selector+"."+H+"("+E+")"}}return G},setArray:function(E){this.length=0;Array.prototype.push.apply(this,E);return this},each:function(F,E){return o.each(this,F,E)},index:function(E){return o.inArray(E&&E.jquery?E[0]:E,this)},attr:function(F,H,G){var E=F;if(typeof F==="string"){if(H===g){return this[0]&&o[G||"attr"](this[0],F)}else{E={};E[F]=H}}return this.each(function(I){for(F in E){o.attr(G?this.style:this,F,o.prop(this,E[F],G,I,F))}})},css:function(E,F){if((E=="width"||E=="height")&&parseFloat(F)<0){F=g}return this.attr(E,F,"curCSS")},text:function(F){if(typeof F!=="object"&&F!=null){return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(F))}var E="";o.each(F||this,function(){o.each(this.childNodes,function(){if(this.nodeType!=8){E+=this.nodeType!=1?this.nodeValue:o.fn.text([this])}})});return E},wrapAll:function(E){if(this[0]){var F=o(E,this[0].ownerDocument).clone();if(this[0].parentNode){F.insertBefore(this[0])}F.map(function(){var G=this;while(G.firstChild){G=G.firstChild}return G}).append(this)}return this},wrapInner:function(E){return this.each(function(){o(this).contents().wrapAll(E)})},wrap:function(E){return this.each(function(){o(this).wrapAll(E)})},append:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.appendChild(E)}})},prepend:function(){return this.domManip(arguments,true,function(E){if(this.nodeType==1){this.insertBefore(E,this.firstChild)}})},before:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this)})},after:function(){return this.domManip(arguments,false,function(E){this.parentNode.insertBefore(E,this.nextSibling)})},end:function(){return this.prevObject||o([])},push:[].push,sort:[].sort,splice:[].splice,find:function(E){if(this.length===1){var F=this.pushStack([],"find",E);F.length=0;o.find(E,this[0],F);return F}else{return this.pushStack(o.unique(o.map(this,function(G){return o.find(E,G)})),"find",E)}},clone:function(G){var E=this.map(function(){if(!o.support.noCloneEvent&&!o.isXMLDoc(this)){var I=this.outerHTML;if(!I){var J=this.ownerDocument.createElement("div");J.appendChild(this.cloneNode(true));I=J.innerHTML}return o.clean([I.replace(/ jQuery\d+="(?:\d+|null)"/g,"").replace(/^\s*/,"")])[0]}else{return this.cloneNode(true)}});if(G===true){var H=this.find("*").andSelf(),F=0;E.find("*").andSelf().each(function(){if(this.nodeName!==H[F].nodeName){return}var I=o.data(H[F],"events");for(var K in I){for(var J in I[K]){o.event.add(this,K,I[K][J],I[K][J].data)}}F++})}return E},filter:function(E){return this.pushStack(o.isFunction(E)&&o.grep(this,function(G,F){return E.call(G,F)})||o.multiFilter(E,o.grep(this,function(F){return F.nodeType===1})),"filter",E)},closest:function(E){var G=o.expr.match.POS.test(E)?o(E):null,F=0;return this.map(function(){var H=this;while(H&&H.ownerDocument){if(G?G.index(H)>-1:o(H).is(E)){o.data(H,"closest",F);return H}H=H.parentNode;F++}})},not:function(E){if(typeof E==="string"){if(f.test(E)){return this.pushStack(o.multiFilter(E,this,true),"not",E)}else{E=o.multiFilter(E,this)}}var F=E.length&&E[E.length-1]!==g&&!E.nodeType;return this.filter(function(){return F?o.inArray(this,E)<0:this!=E})},add:function(E){return this.pushStack(o.unique(o.merge(this.get(),typeof E==="string"?o(E):o.makeArray(E))))},is:function(E){return !!E&&o.multiFilter(E,this).length>0},hasClass:function(E){return !!E&&this.is("."+E)},val:function(K){if(K===g){var E=this[0];if(E){if(o.nodeName(E,"option")){return(E.attributes.value||{}).specified?E.value:E.text}if(o.nodeName(E,"select")){var I=E.selectedIndex,L=[],M=E.options,H=E.type=="select-one";if(I<0){return null}for(var F=H?I:0,J=H?I+1:M.length;F<J;F++){var G=M[F];if(G.selected){K=o(G).val();if(H){return K}L.push(K)}}return L}return(E.value||"").replace(/\r/g,"")}return g}if(typeof K==="number"){K+=""}return this.each(function(){if(this.nodeType!=1){return}if(o.isArray(K)&&/radio|checkbox/.test(this.type)){this.checked=(o.inArray(this.value,K)>=0||o.inArray(this.name,K)>=0)}else{if(o.nodeName(this,"select")){var N=o.makeArray(K);o("option",this).each(function(){this.selected=(o.inArray(this.value,N)>=0||o.inArray(this.text,N)>=0)});if(!N.length){this.selectedIndex=-1}}else{this.value=K}}})},html:function(E){return E===g?(this[0]?this[0].innerHTML.replace(/ jQuery\d+="(?:\d+|null)"/g,""):null):this.empty().append(E)},replaceWith:function(E){return this.after(E).remove()},eq:function(E){return this.slice(E,+E+1)},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments),"slice",Array.prototype.slice.call(arguments).join(","))},map:function(E){return this.pushStack(o.map(this,function(G,F){return E.call(G,F,G)}))},andSelf:function(){return this.add(this.prevObject)},domManip:function(J,M,L){if(this[0]){var I=(this[0].ownerDocument||this[0]).createDocumentFragment(),F=o.clean(J,(this[0].ownerDocument||this[0]),I),H=I.firstChild;if(H){for(var G=0,E=this.length;G<E;G++){L.call(K(this[G],H),this.length>1||G>0?I.cloneNode(true):I)}}if(F){o.each(F,z)}}return this;function K(N,O){return M&&o.nodeName(N,"table")&&o.nodeName(O,"tr")?(N.getElementsByTagName("tbody")[0]||N.appendChild(N.ownerDocument.createElement("tbody"))):N}}};o.fn.init.prototype=o.fn;function z(E,F){if(F.src){o.ajax({url:F.src,async:false,dataType:"script"})}else{o.globalEval(F.text||F.textContent||F.innerHTML||"")}if(F.parentNode){F.parentNode.removeChild(F)}}function e(){return +new Date}o.extend=o.fn.extend=function(){var J=arguments[0]||{},H=1,I=arguments.length,E=false,G;if(typeof J==="boolean"){E=J;J=arguments[1]||{};H=2}if(typeof J!=="object"&&!o.isFunction(J)){J={}}if(I==H){J=this;--H}for(;H<I;H++){if((G=arguments[H])!=null){for(var F in G){var K=J[F],L=G[F];if(J===L){continue}if(E&&L&&typeof L==="object"&&!L.nodeType){J[F]=o.extend(E,K||(L.length!=null?[]:{}),L)}else{if(L!==g){J[F]=L}}}}}return J};var b=/z-?index|font-?weight|opacity|zoom|line-?height/i,q=document.defaultView||{},s=Object.prototype.toString;o.extend({noConflict:function(E){l.$=p;if(E){l.jQuery=y}return o},isFunction:function(E){return s.call(E)==="[object Function]"},isArray:function(E){return s.call(E)==="[object Array]"},isXMLDoc:function(E){return E.nodeType===9&&E.documentElement.nodeName!=="HTML"||!!E.ownerDocument&&o.isXMLDoc(E.ownerDocument)},globalEval:function(G){if(G&&/\S/.test(G)){var F=document.getElementsByTagName("head")[0]||document.documentElement,E=document.createElement("script");E.type="text/javascript";if(o.support.scriptEval){E.appendChild(document.createTextNode(G))}else{E.text=G}F.insertBefore(E,F.firstChild);F.removeChild(E)}},nodeName:function(F,E){return F.nodeName&&F.nodeName.toUpperCase()==E.toUpperCase()},each:function(G,K,F){var E,H=0,I=G.length;if(F){if(I===g){for(E in G){if(K.apply(G[E],F)===false){break}}}else{for(;H<I;){if(K.apply(G[H++],F)===false){break}}}}else{if(I===g){for(E in G){if(K.call(G[E],E,G[E])===false){break}}}else{for(var J=G[0];H<I&&K.call(J,H,J)!==false;J=G[++H]){}}}return G},prop:function(H,I,G,F,E){if(o.isFunction(I)){I=I.call(H,F)}return typeof I==="number"&&G=="curCSS"&&!b.test(E)?I+"px":I},className:{add:function(E,F){o.each((F||"").split(/\s+/),function(G,H){if(E.nodeType==1&&!o.className.has(E.className,H)){E.className+=(E.className?" ":"")+H}})},remove:function(E,F){if(E.nodeType==1){E.className=F!==g?o.grep(E.className.split(/\s+/),function(G){return !o.className.has(F,G)}).join(" "):""}},has:function(F,E){return F&&o.inArray(E,(F.className||F).toString().split(/\s+/))>-1}},swap:function(H,G,I){var E={};for(var F in G){E[F]=H.style[F];H.style[F]=G[F]}I.call(H);for(var F in G){H.style[F]=E[F]}},css:function(H,F,J,E){if(F=="width"||F=="height"){var L,G={position:"absolute",visibility:"hidden",display:"block"},K=F=="width"?["Left","Right"]:["Top","Bottom"];function I(){L=F=="width"?H.offsetWidth:H.offsetHeight;if(E==="border"){return}o.each(K,function(){if(!E){L-=parseFloat(o.curCSS(H,"padding"+this,true))||0}if(E==="margin"){L+=parseFloat(o.curCSS(H,"margin"+this,true))||0}else{L-=parseFloat(o.curCSS(H,"border"+this+"Width",true))||0}})}if(H.offsetWidth!==0){I()}else{o.swap(H,G,I)}return Math.max(0,Math.round(L))}return o.curCSS(H,F,J)},curCSS:function(I,F,G){var L,E=I.style;if(F=="opacity"&&!o.support.opacity){L=o.attr(E,"opacity");return L==""?"1":L}if(F.match(/float/i)){F=w}if(!G&&E&&E[F]){L=E[F]}else{if(q.getComputedStyle){if(F.match(/float/i)){F="float"}F=F.replace(/([A-Z])/g,"-$1").toLowerCase();var M=q.getComputedStyle(I,null);if(M){L=M.getPropertyValue(F)}if(F=="opacity"&&L==""){L="1"}}else{if(I.currentStyle){var J=F.replace(/\-(\w)/g,function(N,O){return O.toUpperCase()});L=I.currentStyle[F]||I.currentStyle[J];if(!/^\d+(px)?$/i.test(L)&&/^\d/.test(L)){var H=E.left,K=I.runtimeStyle.left;I.runtimeStyle.left=I.currentStyle.left;E.left=L||0;L=E.pixelLeft+"px";E.left=H;I.runtimeStyle.left=K}}}}return L},clean:function(F,K,I){K=K||document;if(typeof K.createElement==="undefined"){K=K.ownerDocument||K[0]&&K[0].ownerDocument||document}if(!I&&F.length===1&&typeof F[0]==="string"){var H=/^<(\w+)\s*\/?>$/.exec(F[0]);if(H){return[K.createElement(H[1])]}}var G=[],E=[],L=K.createElement("div");o.each(F,function(P,S){if(typeof S==="number"){S+=""}if(!S){return}if(typeof S==="string"){S=S.replace(/(<(\w+)[^>]*?)\/>/g,function(U,V,T){return T.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?U:V+"></"+T+">"});var O=S.replace(/^\s+/,"").substring(0,10).toLowerCase();var Q=!O.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!O.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||O.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!O.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!O.indexOf("<td")||!O.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!O.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||!o.support.htmlSerialize&&[1,"div<div>","</div>"]||[0,"",""];L.innerHTML=Q[1]+S+Q[2];while(Q[0]--){L=L.lastChild}if(!o.support.tbody){var R=/<tbody/i.test(S),N=!O.indexOf("<table")&&!R?L.firstChild&&L.firstChild.childNodes:Q[1]=="<table>"&&!R?L.childNodes:[];for(var M=N.length-1;M>=0;--M){if(o.nodeName(N[M],"tbody")&&!N[M].childNodes.length){N[M].parentNode.removeChild(N[M])}}}if(!o.support.leadingWhitespace&&/^\s/.test(S)){L.insertBefore(K.createTextNode(S.match(/^\s*/)[0]),L.firstChild)}S=o.makeArray(L.childNodes)}if(S.nodeType){G.push(S)}else{G=o.merge(G,S)}});if(I){for(var J=0;G[J];J++){if(o.nodeName(G[J],"script")&&(!G[J].type||G[J].type.toLowerCase()==="text/javascript")){E.push(G[J].parentNode?G[J].parentNode.removeChild(G[J]):G[J])}else{if(G[J].nodeType===1){G.splice.apply(G,[J+1,0].concat(o.makeArray(G[J].getElementsByTagName("script"))))}I.appendChild(G[J])}}return E}return G},attr:function(J,G,K){if(!J||J.nodeType==3||J.nodeType==8){return g}var H=!o.isXMLDoc(J),L=K!==g;G=H&&o.props[G]||G;if(J.tagName){var F=/href|src|style/.test(G);if(G=="selected"&&J.parentNode){J.parentNode.selectedIndex}if(G in J&&H&&!F){if(L){if(G=="type"&&o.nodeName(J,"input")&&J.parentNode){throw"type property can't be changed"}J[G]=K}if(o.nodeName(J,"form")&&J.getAttributeNode(G)){return J.getAttributeNode(G).nodeValue}if(G=="tabIndex"){var I=J.getAttributeNode("tabIndex");return I&&I.specified?I.value:J.nodeName.match(/(button|input|object|select|textarea)/i)?0:J.nodeName.match(/^(a|area)$/i)&&J.href?0:g}return J[G]}if(!o.support.style&&H&&G=="style"){return o.attr(J.style,"cssText",K)}if(L){J.setAttribute(G,""+K)}var E=!o.support.hrefNormalized&&H&&F?J.getAttribute(G,2):J.getAttribute(G);return E===null?g:E}if(!o.support.opacity&&G=="opacity"){if(L){J.zoom=1;J.filter=(J.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(K)+""=="NaN"?"":"alpha(opacity="+K*100+")")}return J.filter&&J.filter.indexOf("opacity=")>=0?(parseFloat(J.filter.match(/opacity=([^)]*)/)[1])/100)+"":""}G=G.replace(/-([a-z])/ig,function(M,N){return N.toUpperCase()});if(L){J[G]=K}return J[G]},trim:function(E){return(E||"").replace(/^\s+|\s+$/g,"")},makeArray:function(G){var E=[];if(G!=null){var F=G.length;if(F==null||typeof G==="string"||o.isFunction(G)||G.setInterval){E[0]=G}else{while(F){E[--F]=G[F]}}}return E},inArray:function(G,H){for(var E=0,F=H.length;E<F;E++){if(H[E]===G){return E}}return -1},merge:function(H,E){var F=0,G,I=H.length;if(!o.support.getAll){while((G=E[F++])!=null){if(G.nodeType!=8){H[I++]=G}}}else{while((G=E[F++])!=null){H[I++]=G}}return H},unique:function(K){var F=[],E={};try{for(var G=0,H=K.length;G<H;G++){var J=o.data(K[G]);if(!E[J]){E[J]=true;F.push(K[G])}}}catch(I){F=K}return F},grep:function(F,J,E){var G=[];for(var H=0,I=F.length;H<I;H++){if(!E!=!J(F[H],H)){G.push(F[H])}}return G},map:function(E,J){var F=[];for(var G=0,H=E.length;G<H;G++){var I=J(E[G],G);if(I!=null){F[F.length]=I}}return F.concat.apply([],F)}});var C=navigator.userAgent.toLowerCase();o.browser={version:(C.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[0,"0"])[1],safari:/webkit/.test(C),opera:/opera/.test(C),msie:/msie/.test(C)&&!/opera/.test(C),mozilla:/mozilla/.test(C)&&!/(compatible|webkit)/.test(C)};o.each({parent:function(E){return E.parentNode},parents:function(E){return o.dir(E,"parentNode")},next:function(E){return o.nth(E,2,"nextSibling")},prev:function(E){return o.nth(E,2,"previousSibling")},nextAll:function(E){return o.dir(E,"nextSibling")},prevAll:function(E){return o.dir(E,"previousSibling")},siblings:function(E){return o.sibling(E.parentNode.firstChild,E)},children:function(E){return o.sibling(E.firstChild)},contents:function(E){return o.nodeName(E,"iframe")?E.contentDocument||E.contentWindow.document:o.makeArray(E.childNodes)}},function(E,F){o.fn[E]=function(G){var H=o.map(this,F);if(G&&typeof G=="string"){H=o.multiFilter(G,H)}return this.pushStack(o.unique(H),E,G)}});o.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(E,F){o.fn[E]=function(G){var J=[],L=o(G);for(var K=0,H=L.length;K<H;K++){var I=(K>0?this.clone(true):this).get();o.fn[F].apply(o(L[K]),I);J=J.concat(I)}return this.pushStack(J,E,G)}});o.each({removeAttr:function(E){o.attr(this,E,"");if(this.nodeType==1){this.removeAttribute(E)}},addClass:function(E){o.className.add(this,E)},removeClass:function(E){o.className.remove(this,E)},toggleClass:function(F,E){if(typeof E!=="boolean"){E=!o.className.has(this,F)}o.className[E?"add":"remove"](this,F)},remove:function(E){if(!E||o.filter(E,[this]).length){o("*",this).add([this]).each(function(){o.event.remove(this);o.removeData(this)});if(this.parentNode){this.parentNode.removeChild(this)}}},empty:function(){o(this).children().remove();while(this.firstChild){this.removeChild(this.firstChild)}}},function(E,F){o.fn[E]=function(){return this.each(F,arguments)}});function j(E,F){return E[0]&&parseInt(o.curCSS(E[0],F,true),10)||0}var h="jQuery"+e(),v=0,A={};o.extend({cache:{},data:function(F,E,G){F=F==l?A:F;var H=F[h];if(!H){H=F[h]=++v}if(E&&!o.cache[H]){o.cache[H]={}}if(G!==g){o.cache[H][E]=G}return E?o.cache[H][E]:H},removeData:function(F,E){F=F==l?A:F;var H=F[h];if(E){if(o.cache[H]){delete o.cache[H][E];E="";for(E in o.cache[H]){break}if(!E){o.removeData(F)}}}else{try{delete F[h]}catch(G){if(F.removeAttribute){F.removeAttribute(h)}}delete o.cache[H]}},queue:function(F,E,H){if(F){E=(E||"fx")+"queue";var G=o.data(F,E);if(!G||o.isArray(H)){G=o.data(F,E,o.makeArray(H))}else{if(H){G.push(H)}}}return G},dequeue:function(H,G){var E=o.queue(H,G),F=E.shift();if(!G||G==="fx"){F=E[0]}if(F!==g){F.call(H)}}});o.fn.extend({data:function(E,G){var H=E.split(".");H[1]=H[1]?"."+H[1]:"";if(G===g){var F=this.triggerHandler("getData"+H[1]+"!",[H[0]]);if(F===g&&this.length){F=o.data(this[0],E)}return F===g&&H[1]?this.data(H[0]):F}else{return this.trigger("setData"+H[1]+"!",[H[0],G]).each(function(){o.data(this,E,G)})}},removeData:function(E){return this.each(function(){o.removeData(this,E)})},queue:function(E,F){if(typeof E!=="string"){F=E;E="fx"}if(F===g){return o.queue(this[0],E)}return this.each(function(){var G=o.queue(this,E,F);if(E=="fx"&&G.length==1){G[0].call(this)}})},dequeue:function(E){return this.each(function(){o.dequeue(this,E)})}}); +/* + * Sizzle CSS Selector Engine - v0.9.3 + * Copyright 2009, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var R=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?/g,L=0,H=Object.prototype.toString;var F=function(Y,U,ab,ac){ab=ab||[];U=U||document;if(U.nodeType!==1&&U.nodeType!==9){return[]}if(!Y||typeof Y!=="string"){return ab}var Z=[],W,af,ai,T,ad,V,X=true;R.lastIndex=0;while((W=R.exec(Y))!==null){Z.push(W[1]);if(W[2]){V=RegExp.rightContext;break}}if(Z.length>1&&M.exec(Y)){if(Z.length===2&&I.relative[Z[0]]){af=J(Z[0]+Z[1],U)}else{af=I.relative[Z[0]]?[U]:F(Z.shift(),U);while(Z.length){Y=Z.shift();if(I.relative[Y]){Y+=Z.shift()}af=J(Y,af)}}}else{var ae=ac?{expr:Z.pop(),set:E(ac)}:F.find(Z.pop(),Z.length===1&&U.parentNode?U.parentNode:U,Q(U));af=F.filter(ae.expr,ae.set);if(Z.length>0){ai=E(af)}else{X=false}while(Z.length){var ah=Z.pop(),ag=ah;if(!I.relative[ah]){ah=""}else{ag=Z.pop()}if(ag==null){ag=U}I.relative[ah](ai,ag,Q(U))}}if(!ai){ai=af}if(!ai){throw"Syntax error, unrecognized expression: "+(ah||Y)}if(H.call(ai)==="[object Array]"){if(!X){ab.push.apply(ab,ai)}else{if(U.nodeType===1){for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&(ai[aa]===true||ai[aa].nodeType===1&&K(U,ai[aa]))){ab.push(af[aa])}}}else{for(var aa=0;ai[aa]!=null;aa++){if(ai[aa]&&ai[aa].nodeType===1){ab.push(af[aa])}}}}}else{E(ai,ab)}if(V){F(V,U,ab,ac);if(G){hasDuplicate=false;ab.sort(G);if(hasDuplicate){for(var aa=1;aa<ab.length;aa++){if(ab[aa]===ab[aa-1]){ab.splice(aa--,1)}}}}}return ab};F.matches=function(T,U){return F(T,null,null,U)};F.find=function(aa,T,ab){var Z,X;if(!aa){return[]}for(var W=0,V=I.order.length;W<V;W++){var Y=I.order[W],X;if((X=I.match[Y].exec(aa))){var U=RegExp.leftContext;if(U.substr(U.length-1)!=="\\"){X[1]=(X[1]||"").replace(/\\/g,"");Z=I.find[Y](X,T,ab);if(Z!=null){aa=aa.replace(I.match[Y],"");break}}}}if(!Z){Z=T.getElementsByTagName("*")}return{set:Z,expr:aa}};F.filter=function(ad,ac,ag,W){var V=ad,ai=[],aa=ac,Y,T,Z=ac&&ac[0]&&Q(ac[0]);while(ad&&ac.length){for(var ab in I.filter){if((Y=I.match[ab].exec(ad))!=null){var U=I.filter[ab],ah,af;T=false;if(aa==ai){ai=[]}if(I.preFilter[ab]){Y=I.preFilter[ab](Y,aa,ag,ai,W,Z);if(!Y){T=ah=true}else{if(Y===true){continue}}}if(Y){for(var X=0;(af=aa[X])!=null;X++){if(af){ah=U(af,Y,X,aa);var ae=W^!!ah;if(ag&&ah!=null){if(ae){T=true}else{aa[X]=false}}else{if(ae){ai.push(af);T=true}}}}}if(ah!==g){if(!ag){aa=ai}ad=ad.replace(I.match[ab],"");if(!T){return[]}break}}}if(ad==V){if(T==null){throw"Syntax error, unrecognized expression: "+ad}else{break}}V=ad}return aa};var I=F.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\(\)]*)+)\2\))?/},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(T){return T.getAttribute("href")}},relative:{"+":function(aa,T,Z){var X=typeof T==="string",ab=X&&!/\W/.test(T),Y=X&&!ab;if(ab&&!Z){T=T.toUpperCase()}for(var W=0,V=aa.length,U;W<V;W++){if((U=aa[W])){while((U=U.previousSibling)&&U.nodeType!==1){}aa[W]=Y||U&&U.nodeName===T?U||false:U===T}}if(Y){F.filter(T,aa,true)}},">":function(Z,U,aa){var X=typeof U==="string";if(X&&!/\W/.test(U)){U=aa?U:U.toUpperCase();for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){var W=Y.parentNode;Z[V]=W.nodeName===U?W:false}}}else{for(var V=0,T=Z.length;V<T;V++){var Y=Z[V];if(Y){Z[V]=X?Y.parentNode:Y.parentNode===U}}if(X){F.filter(U,Z,true)}}},"":function(W,U,Y){var V=L++,T=S;if(!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("parentNode",U,V,W,X,Y)},"~":function(W,U,Y){var V=L++,T=S;if(typeof U==="string"&&!U.match(/\W/)){var X=U=Y?U:U.toUpperCase();T=P}T("previousSibling",U,V,W,X,Y)}},find:{ID:function(U,V,W){if(typeof V.getElementById!=="undefined"&&!W){var T=V.getElementById(U[1]);return T?[T]:[]}},NAME:function(V,Y,Z){if(typeof Y.getElementsByName!=="undefined"){var U=[],X=Y.getElementsByName(V[1]);for(var W=0,T=X.length;W<T;W++){if(X[W].getAttribute("name")===V[1]){U.push(X[W])}}return U.length===0?null:U}},TAG:function(T,U){return U.getElementsByTagName(T[1])}},preFilter:{CLASS:function(W,U,V,T,Z,aa){W=" "+W[1].replace(/\\/g,"")+" ";if(aa){return W}for(var X=0,Y;(Y=U[X])!=null;X++){if(Y){if(Z^(Y.className&&(" "+Y.className+" ").indexOf(W)>=0)){if(!V){T.push(Y)}}else{if(V){U[X]=false}}}}return false},ID:function(T){return T[1].replace(/\\/g,"")},TAG:function(U,T){for(var V=0;T[V]===false;V++){}return T[V]&&Q(T[V])?U[1]:U[1].toUpperCase()},CHILD:function(T){if(T[1]=="nth"){var U=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(T[2]=="even"&&"2n"||T[2]=="odd"&&"2n+1"||!/\D/.test(T[2])&&"0n+"+T[2]||T[2]);T[2]=(U[1]+(U[2]||1))-0;T[3]=U[3]-0}T[0]=L++;return T},ATTR:function(X,U,V,T,Y,Z){var W=X[1].replace(/\\/g,"");if(!Z&&I.attrMap[W]){X[1]=I.attrMap[W]}if(X[2]==="~="){X[4]=" "+X[4]+" "}return X},PSEUDO:function(X,U,V,T,Y){if(X[1]==="not"){if(X[3].match(R).length>1||/^\w/.test(X[3])){X[3]=F(X[3],null,null,U)}else{var W=F.filter(X[3],U,V,true^Y);if(!V){T.push.apply(T,W)}return false}}else{if(I.match.POS.test(X[0])||I.match.CHILD.test(X[0])){return true}}return X},POS:function(T){T.unshift(true);return T}},filters:{enabled:function(T){return T.disabled===false&&T.type!=="hidden"},disabled:function(T){return T.disabled===true},checked:function(T){return T.checked===true},selected:function(T){T.parentNode.selectedIndex;return T.selected===true},parent:function(T){return !!T.firstChild},empty:function(T){return !T.firstChild},has:function(V,U,T){return !!F(T[3],V).length},header:function(T){return/h\d/i.test(T.nodeName)},text:function(T){return"text"===T.type},radio:function(T){return"radio"===T.type},checkbox:function(T){return"checkbox"===T.type},file:function(T){return"file"===T.type},password:function(T){return"password"===T.type},submit:function(T){return"submit"===T.type},image:function(T){return"image"===T.type},reset:function(T){return"reset"===T.type},button:function(T){return"button"===T.type||T.nodeName.toUpperCase()==="BUTTON"},input:function(T){return/input|select|textarea|button/i.test(T.nodeName)}},setFilters:{first:function(U,T){return T===0},last:function(V,U,T,W){return U===W.length-1},even:function(U,T){return T%2===0},odd:function(U,T){return T%2===1},lt:function(V,U,T){return U<T[3]-0},gt:function(V,U,T){return U>T[3]-0},nth:function(V,U,T){return T[3]-0==U},eq:function(V,U,T){return T[3]-0==U}},filter:{PSEUDO:function(Z,V,W,aa){var U=V[1],X=I.filters[U];if(X){return X(Z,W,V,aa)}else{if(U==="contains"){return(Z.textContent||Z.innerText||"").indexOf(V[3])>=0}else{if(U==="not"){var Y=V[3];for(var W=0,T=Y.length;W<T;W++){if(Y[W]===Z){return false}}return true}}}},CHILD:function(T,W){var Z=W[1],U=T;switch(Z){case"only":case"first":while(U=U.previousSibling){if(U.nodeType===1){return false}}if(Z=="first"){return true}U=T;case"last":while(U=U.nextSibling){if(U.nodeType===1){return false}}return true;case"nth":var V=W[2],ac=W[3];if(V==1&&ac==0){return true}var Y=W[0],ab=T.parentNode;if(ab&&(ab.sizcache!==Y||!T.nodeIndex)){var X=0;for(U=ab.firstChild;U;U=U.nextSibling){if(U.nodeType===1){U.nodeIndex=++X}}ab.sizcache=Y}var aa=T.nodeIndex-ac;if(V==0){return aa==0}else{return(aa%V==0&&aa/V>=0)}}},ID:function(U,T){return U.nodeType===1&&U.getAttribute("id")===T},TAG:function(U,T){return(T==="*"&&U.nodeType===1)||U.nodeName===T},CLASS:function(U,T){return(" "+(U.className||U.getAttribute("class"))+" ").indexOf(T)>-1},ATTR:function(Y,W){var V=W[1],T=I.attrHandle[V]?I.attrHandle[V](Y):Y[V]!=null?Y[V]:Y.getAttribute(V),Z=T+"",X=W[2],U=W[4];return T==null?X==="!=":X==="="?Z===U:X==="*="?Z.indexOf(U)>=0:X==="~="?(" "+Z+" ").indexOf(U)>=0:!U?Z&&T!==false:X==="!="?Z!=U:X==="^="?Z.indexOf(U)===0:X==="$="?Z.substr(Z.length-U.length)===U:X==="|="?Z===U||Z.substr(0,U.length+1)===U+"-":false},POS:function(X,U,V,Y){var T=U[2],W=I.setFilters[T];if(W){return W(X,V,U,Y)}}}};var M=I.match.POS;for(var O in I.match){I.match[O]=RegExp(I.match[O].source+/(?![^\[]*\])(?![^\(]*\))/.source)}var E=function(U,T){U=Array.prototype.slice.call(U);if(T){T.push.apply(T,U);return T}return U};try{Array.prototype.slice.call(document.documentElement.childNodes)}catch(N){E=function(X,W){var U=W||[];if(H.call(X)==="[object Array]"){Array.prototype.push.apply(U,X)}else{if(typeof X.length==="number"){for(var V=0,T=X.length;V<T;V++){U.push(X[V])}}else{for(var V=0;X[V];V++){U.push(X[V])}}}return U}}var G;if(document.documentElement.compareDocumentPosition){G=function(U,T){var V=U.compareDocumentPosition(T)&4?-1:U===T?0:1;if(V===0){hasDuplicate=true}return V}}else{if("sourceIndex" in document.documentElement){G=function(U,T){var V=U.sourceIndex-T.sourceIndex;if(V===0){hasDuplicate=true}return V}}else{if(document.createRange){G=function(W,U){var V=W.ownerDocument.createRange(),T=U.ownerDocument.createRange();V.selectNode(W);V.collapse(true);T.selectNode(U);T.collapse(true);var X=V.compareBoundaryPoints(Range.START_TO_END,T);if(X===0){hasDuplicate=true}return X}}}}(function(){var U=document.createElement("form"),V="script"+(new Date).getTime();U.innerHTML="<input name='"+V+"'/>";var T=document.documentElement;T.insertBefore(U,T.firstChild);if(!!document.getElementById(V)){I.find.ID=function(X,Y,Z){if(typeof Y.getElementById!=="undefined"&&!Z){var W=Y.getElementById(X[1]);return W?W.id===X[1]||typeof W.getAttributeNode!=="undefined"&&W.getAttributeNode("id").nodeValue===X[1]?[W]:g:[]}};I.filter.ID=function(Y,W){var X=typeof Y.getAttributeNode!=="undefined"&&Y.getAttributeNode("id");return Y.nodeType===1&&X&&X.nodeValue===W}}T.removeChild(U)})();(function(){var T=document.createElement("div");T.appendChild(document.createComment(""));if(T.getElementsByTagName("*").length>0){I.find.TAG=function(U,Y){var X=Y.getElementsByTagName(U[1]);if(U[1]==="*"){var W=[];for(var V=0;X[V];V++){if(X[V].nodeType===1){W.push(X[V])}}X=W}return X}}T.innerHTML="<a href='#'></a>";if(T.firstChild&&typeof T.firstChild.getAttribute!=="undefined"&&T.firstChild.getAttribute("href")!=="#"){I.attrHandle.href=function(U){return U.getAttribute("href",2)}}})();if(document.querySelectorAll){(function(){var T=F,U=document.createElement("div");U.innerHTML="<p class='TEST'></p>";if(U.querySelectorAll&&U.querySelectorAll(".TEST").length===0){return}F=function(Y,X,V,W){X=X||document;if(!W&&X.nodeType===9&&!Q(X)){try{return E(X.querySelectorAll(Y),V)}catch(Z){}}return T(Y,X,V,W)};F.find=T.find;F.filter=T.filter;F.selectors=T.selectors;F.matches=T.matches})()}if(document.getElementsByClassName&&document.documentElement.getElementsByClassName){(function(){var T=document.createElement("div");T.innerHTML="<div class='test e'></div><div class='test'></div>";if(T.getElementsByClassName("e").length===0){return}T.lastChild.className="e";if(T.getElementsByClassName("e").length===1){return}I.order.splice(1,0,"CLASS");I.find.CLASS=function(U,V,W){if(typeof V.getElementsByClassName!=="undefined"&&!W){return V.getElementsByClassName(U[1])}}})()}function P(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1&&!ac){T.sizcache=Y;T.sizset=W}if(T.nodeName===Z){X=T;break}T=T[U]}ad[W]=X}}}function S(U,Z,Y,ad,aa,ac){var ab=U=="previousSibling"&&!ac;for(var W=0,V=ad.length;W<V;W++){var T=ad[W];if(T){if(ab&&T.nodeType===1){T.sizcache=Y;T.sizset=W}T=T[U];var X=false;while(T){if(T.sizcache===Y){X=ad[T.sizset];break}if(T.nodeType===1){if(!ac){T.sizcache=Y;T.sizset=W}if(typeof Z!=="string"){if(T===Z){X=true;break}}else{if(F.filter(Z,[T]).length>0){X=T;break}}}T=T[U]}ad[W]=X}}}var K=document.compareDocumentPosition?function(U,T){return U.compareDocumentPosition(T)&16}:function(U,T){return U!==T&&(U.contains?U.contains(T):true)};var Q=function(T){return T.nodeType===9&&T.documentElement.nodeName!=="HTML"||!!T.ownerDocument&&Q(T.ownerDocument)};var J=function(T,aa){var W=[],X="",Y,V=aa.nodeType?[aa]:aa;while((Y=I.match.PSEUDO.exec(T))){X+=Y[0];T=T.replace(I.match.PSEUDO,"")}T=I.relative[T]?T+"*":T;for(var Z=0,U=V.length;Z<U;Z++){F(T,V[Z],W)}return F.filter(X,W)};o.find=F;o.filter=F.filter;o.expr=F.selectors;o.expr[":"]=o.expr.filters;F.selectors.filters.hidden=function(T){return T.offsetWidth===0||T.offsetHeight===0};F.selectors.filters.visible=function(T){return T.offsetWidth>0||T.offsetHeight>0};F.selectors.filters.animated=function(T){return o.grep(o.timers,function(U){return T===U.elem}).length};o.multiFilter=function(V,T,U){if(U){V=":not("+V+")"}return F.matches(V,T)};o.dir=function(V,U){var T=[],W=V[U];while(W&&W!=document){if(W.nodeType==1){T.push(W)}W=W[U]}return T};o.nth=function(X,T,V,W){T=T||1;var U=0;for(;X;X=X[V]){if(X.nodeType==1&&++U==T){break}}return X};o.sibling=function(V,U){var T=[];for(;V;V=V.nextSibling){if(V.nodeType==1&&V!=U){T.push(V)}}return T};return;l.Sizzle=F})();o.event={add:function(I,F,H,K){if(I.nodeType==3||I.nodeType==8){return}if(I.setInterval&&I!=l){I=l}if(!H.guid){H.guid=this.guid++}if(K!==g){var G=H;H=this.proxy(G);H.data=K}var E=o.data(I,"events")||o.data(I,"events",{}),J=o.data(I,"handle")||o.data(I,"handle",function(){return typeof o!=="undefined"&&!o.event.triggered?o.event.handle.apply(arguments.callee.elem,arguments):g});J.elem=I;o.each(F.split(/\s+/),function(M,N){var O=N.split(".");N=O.shift();H.type=O.slice().sort().join(".");var L=E[N];if(o.event.specialAll[N]){o.event.specialAll[N].setup.call(I,K,O)}if(!L){L=E[N]={};if(!o.event.special[N]||o.event.special[N].setup.call(I,K,O)===false){if(I.addEventListener){I.addEventListener(N,J,false)}else{if(I.attachEvent){I.attachEvent("on"+N,J)}}}}L[H.guid]=H;o.event.global[N]=true});I=null},guid:1,global:{},remove:function(K,H,J){if(K.nodeType==3||K.nodeType==8){return}var G=o.data(K,"events"),F,E;if(G){if(H===g||(typeof H==="string"&&H.charAt(0)==".")){for(var I in G){this.remove(K,I+(H||""))}}else{if(H.type){J=H.handler;H=H.type}o.each(H.split(/\s+/),function(M,O){var Q=O.split(".");O=Q.shift();var N=RegExp("(^|\\.)"+Q.slice().sort().join(".*\\.")+"(\\.|$)");if(G[O]){if(J){delete G[O][J.guid]}else{for(var P in G[O]){if(N.test(G[O][P].type)){delete G[O][P]}}}if(o.event.specialAll[O]){o.event.specialAll[O].teardown.call(K,Q)}for(F in G[O]){break}if(!F){if(!o.event.special[O]||o.event.special[O].teardown.call(K,Q)===false){if(K.removeEventListener){K.removeEventListener(O,o.data(K,"handle"),false)}else{if(K.detachEvent){K.detachEvent("on"+O,o.data(K,"handle"))}}}F=null;delete G[O]}}})}for(F in G){break}if(!F){var L=o.data(K,"handle");if(L){L.elem=null}o.removeData(K,"events");o.removeData(K,"handle")}}},trigger:function(I,K,H,E){var G=I.type||I;if(!E){I=typeof I==="object"?I[h]?I:o.extend(o.Event(G),I):o.Event(G);if(G.indexOf("!")>=0){I.type=G=G.slice(0,-1);I.exclusive=true}if(!H){I.stopPropagation();if(this.global[G]){o.each(o.cache,function(){if(this.events&&this.events[G]){o.event.trigger(I,K,this.handle.elem)}})}}if(!H||H.nodeType==3||H.nodeType==8){return g}I.result=g;I.target=H;K=o.makeArray(K);K.unshift(I)}I.currentTarget=H;var J=o.data(H,"handle");if(J){J.apply(H,K)}if((!H[G]||(o.nodeName(H,"a")&&G=="click"))&&H["on"+G]&&H["on"+G].apply(H,K)===false){I.result=false}if(!E&&H[G]&&!I.isDefaultPrevented()&&!(o.nodeName(H,"a")&&G=="click")){this.triggered=true;try{H[G]()}catch(L){}}this.triggered=false;if(!I.isPropagationStopped()){var F=H.parentNode||H.ownerDocument;if(F){o.event.trigger(I,K,F,true)}}},handle:function(K){var J,E;K=arguments[0]=o.event.fix(K||l.event);K.currentTarget=this;var L=K.type.split(".");K.type=L.shift();J=!L.length&&!K.exclusive;var I=RegExp("(^|\\.)"+L.slice().sort().join(".*\\.")+"(\\.|$)");E=(o.data(this,"events")||{})[K.type];for(var G in E){var H=E[G];if(J||I.test(H.type)){K.handler=H;K.data=H.data;var F=H.apply(this,arguments);if(F!==g){K.result=F;if(F===false){K.preventDefault();K.stopPropagation()}}if(K.isImmediatePropagationStopped()){break}}}},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(H){if(H[h]){return H}var F=H;H=o.Event(F);for(var G=this.props.length,J;G;){J=this.props[--G];H[J]=F[J]}if(!H.target){H.target=H.srcElement||document}if(H.target.nodeType==3){H.target=H.target.parentNode}if(!H.relatedTarget&&H.fromElement){H.relatedTarget=H.fromElement==H.target?H.toElement:H.fromElement}if(H.pageX==null&&H.clientX!=null){var I=document.documentElement,E=document.body;H.pageX=H.clientX+(I&&I.scrollLeft||E&&E.scrollLeft||0)-(I.clientLeft||0);H.pageY=H.clientY+(I&&I.scrollTop||E&&E.scrollTop||0)-(I.clientTop||0)}if(!H.which&&((H.charCode||H.charCode===0)?H.charCode:H.keyCode)){H.which=H.charCode||H.keyCode}if(!H.metaKey&&H.ctrlKey){H.metaKey=H.ctrlKey}if(!H.which&&H.button){H.which=(H.button&1?1:(H.button&2?3:(H.button&4?2:0)))}return H},proxy:function(F,E){E=E||function(){return F.apply(this,arguments)};E.guid=F.guid=F.guid||E.guid||this.guid++;return E},special:{ready:{setup:B,teardown:function(){}}},specialAll:{live:{setup:function(E,F){o.event.add(this,F[0],c)},teardown:function(G){if(G.length){var E=0,F=RegExp("(^|\\.)"+G[0]+"(\\.|$)");o.each((o.data(this,"events").live||{}),function(){if(F.test(this.type)){E++}});if(E<1){o.event.remove(this,G[0],c)}}}}}};o.Event=function(E){if(!this.preventDefault){return new o.Event(E)}if(E&&E.type){this.originalEvent=E;this.type=E.type}else{this.type=E}this.timeStamp=e();this[h]=true};function k(){return false}function u(){return true}o.Event.prototype={preventDefault:function(){this.isDefaultPrevented=u;var E=this.originalEvent;if(!E){return}if(E.preventDefault){E.preventDefault()}E.returnValue=false},stopPropagation:function(){this.isPropagationStopped=u;var E=this.originalEvent;if(!E){return}if(E.stopPropagation){E.stopPropagation()}E.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=u;this.stopPropagation()},isDefaultPrevented:k,isPropagationStopped:k,isImmediatePropagationStopped:k};var a=function(F){var E=F.relatedTarget;while(E&&E!=this){try{E=E.parentNode}catch(G){E=this}}if(E!=this){F.type=F.data;o.event.handle.apply(this,arguments)}};o.each({mouseover:"mouseenter",mouseout:"mouseleave"},function(F,E){o.event.special[E]={setup:function(){o.event.add(this,F,a,E)},teardown:function(){o.event.remove(this,F,a)}}});o.fn.extend({bind:function(F,G,E){return F=="unload"?this.one(F,G,E):this.each(function(){o.event.add(this,F,E||G,E&&G)})},one:function(G,H,F){var E=o.event.proxy(F||H,function(I){o(this).unbind(I,E);return(F||H).apply(this,arguments)});return this.each(function(){o.event.add(this,G,E,F&&H)})},unbind:function(F,E){return this.each(function(){o.event.remove(this,F,E)})},trigger:function(E,F){return this.each(function(){o.event.trigger(E,F,this)})},triggerHandler:function(E,G){if(this[0]){var F=o.Event(E);F.preventDefault();F.stopPropagation();o.event.trigger(F,G,this[0]);return F.result}},toggle:function(G){var E=arguments,F=1;while(F<E.length){o.event.proxy(G,E[F++])}return this.click(o.event.proxy(G,function(H){this.lastToggle=(this.lastToggle||0)%F;H.preventDefault();return E[this.lastToggle++].apply(this,arguments)||false}))},hover:function(E,F){return this.mouseenter(E).mouseleave(F)},ready:function(E){B();if(o.isReady){E.call(document,o)}else{o.readyList.push(E)}return this},live:function(G,F){var E=o.event.proxy(F);E.guid+=this.selector+G;o(document).bind(i(G,this.selector),this.selector,E);return this},die:function(F,E){o(document).unbind(i(F,this.selector),E?{guid:E.guid+this.selector+F}:null);return this}});function c(H){var E=RegExp("(^|\\.)"+H.type+"(\\.|$)"),G=true,F=[];o.each(o.data(this,"events").live||[],function(I,J){if(E.test(J.type)){var K=o(H.target).closest(J.data)[0];if(K){F.push({elem:K,fn:J})}}});F.sort(function(J,I){return o.data(J.elem,"closest")-o.data(I.elem,"closest")});o.each(F,function(){if(this.fn.call(this.elem,H,this.fn.data)===false){return(G=false)}});return G}function i(F,E){return["live",F,E.replace(/\./g,"`").replace(/ /g,"|")].join(".")}o.extend({isReady:false,readyList:[],ready:function(){if(!o.isReady){o.isReady=true;if(o.readyList){o.each(o.readyList,function(){this.call(document,o)});o.readyList=null}o(document).triggerHandler("ready")}}});var x=false;function B(){if(x){return}x=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);o.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);o.ready()}});if(document.documentElement.doScroll&&l==l.top){(function(){if(o.isReady){return}try{document.documentElement.doScroll("left")}catch(E){setTimeout(arguments.callee,0);return}o.ready()})()}}}o.event.add(l,"load",o.ready)}o.each(("blur,focus,load,resize,scroll,unload,click,dblclick,mousedown,mouseup,mousemove,mouseover,mouseout,mouseenter,mouseleave,change,select,submit,keydown,keypress,keyup,error").split(","),function(F,E){o.fn[E]=function(G){return G?this.bind(E,G):this.trigger(E)}});o(l).bind("unload",function(){for(var E in o.cache){if(E!=1&&o.cache[E].handle){o.event.remove(o.cache[E].handle.elem)}}});(function(){o.support={};var F=document.documentElement,G=document.createElement("script"),K=document.createElement("div"),J="script"+(new Date).getTime();K.style.display="none";K.innerHTML=' <link/><table></table><a href="/a" style="color:red;float:left;opacity:.5;">a</a><select><option>text</option></select><object><param/></object>';var H=K.getElementsByTagName("*"),E=K.getElementsByTagName("a")[0];if(!H||!H.length||!E){return}o.support={leadingWhitespace:K.firstChild.nodeType==3,tbody:!K.getElementsByTagName("tbody").length,objectAll:!!K.getElementsByTagName("object")[0].getElementsByTagName("*").length,htmlSerialize:!!K.getElementsByTagName("link").length,style:/red/.test(E.getAttribute("style")),hrefNormalized:E.getAttribute("href")==="/a",opacity:E.style.opacity==="0.5",cssFloat:!!E.style.cssFloat,scriptEval:false,noCloneEvent:true,boxModel:null};G.type="text/javascript";try{G.appendChild(document.createTextNode("window."+J+"=1;"))}catch(I){}F.insertBefore(G,F.firstChild);if(l[J]){o.support.scriptEval=true;delete l[J]}F.removeChild(G);if(K.attachEvent&&K.fireEvent){K.attachEvent("onclick",function(){o.support.noCloneEvent=false;K.detachEvent("onclick",arguments.callee)});K.cloneNode(true).fireEvent("onclick")}o(function(){var L=document.createElement("div");L.style.width=L.style.paddingLeft="1px";document.body.appendChild(L);o.boxModel=o.support.boxModel=L.offsetWidth===2;document.body.removeChild(L).style.display="none"})})();var w=o.support.cssFloat?"cssFloat":"styleFloat";o.props={"for":"htmlFor","class":"className","float":w,cssFloat:w,styleFloat:w,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",tabindex:"tabIndex"};o.fn.extend({_load:o.fn.load,load:function(G,J,K){if(typeof G!=="string"){return this._load(G)}var I=G.indexOf(" ");if(I>=0){var E=G.slice(I,G.length);G=G.slice(0,I)}var H="GET";if(J){if(o.isFunction(J)){K=J;J=null}else{if(typeof J==="object"){J=o.param(J);H="POST"}}}var F=this;o.ajax({url:G,type:H,dataType:"html",data:J,complete:function(M,L){if(L=="success"||L=="notmodified"){F.html(E?o("<div/>").append(M.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(E):M.responseText)}if(K){F.each(K,[M.responseText,L,M])}}});return this},serialize:function(){return o.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?o.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password|search/i.test(this.type))}).map(function(E,F){var G=o(this).val();return G==null?null:o.isArray(G)?o.map(G,function(I,H){return{name:F.name,value:I}}):{name:F.name,value:G}}).get()}});o.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(E,F){o.fn[F]=function(G){return this.bind(F,G)}});var r=e();o.extend({get:function(E,G,H,F){if(o.isFunction(G)){H=G;G=null}return o.ajax({type:"GET",url:E,data:G,success:H,dataType:F})},getScript:function(E,F){return o.get(E,null,F,"script")},getJSON:function(E,F,G){return o.get(E,F,G,"json")},post:function(E,G,H,F){if(o.isFunction(G)){H=G;G={}}return o.ajax({type:"POST",url:E,data:G,success:H,dataType:F})},ajaxSetup:function(E){o.extend(o.ajaxSettings,E)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return l.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest()},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(M){M=o.extend(true,M,o.extend(true,{},o.ajaxSettings,M));var W,F=/=\?(&|$)/g,R,V,G=M.type.toUpperCase();if(M.data&&M.processData&&typeof M.data!=="string"){M.data=o.param(M.data)}if(M.dataType=="jsonp"){if(G=="GET"){if(!M.url.match(F)){M.url+=(M.url.match(/\?/)?"&":"?")+(M.jsonp||"callback")+"=?"}}else{if(!M.data||!M.data.match(F)){M.data=(M.data?M.data+"&":"")+(M.jsonp||"callback")+"=?"}}M.dataType="json"}if(M.dataType=="json"&&(M.data&&M.data.match(F)||M.url.match(F))){W="jsonp"+r++;if(M.data){M.data=(M.data+"").replace(F,"="+W+"$1")}M.url=M.url.replace(F,"="+W+"$1");M.dataType="script";l[W]=function(X){V=X;I();L();l[W]=g;try{delete l[W]}catch(Y){}if(H){H.removeChild(T)}}}if(M.dataType=="script"&&M.cache==null){M.cache=false}if(M.cache===false&&G=="GET"){var E=e();var U=M.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+E+"$2");M.url=U+((U==M.url)?(M.url.match(/\?/)?"&":"?")+"_="+E:"")}if(M.data&&G=="GET"){M.url+=(M.url.match(/\?/)?"&":"?")+M.data;M.data=null}if(M.global&&!o.active++){o.event.trigger("ajaxStart")}var Q=/^(\w+:)?\/\/([^\/?#]+)/.exec(M.url);if(M.dataType=="script"&&G=="GET"&&Q&&(Q[1]&&Q[1]!=location.protocol||Q[2]!=location.host)){var H=document.getElementsByTagName("head")[0];var T=document.createElement("script");T.src=M.url;if(M.scriptCharset){T.charset=M.scriptCharset}if(!W){var O=false;T.onload=T.onreadystatechange=function(){if(!O&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){O=true;I();L();T.onload=T.onreadystatechange=null;H.removeChild(T)}}}H.appendChild(T);return g}var K=false;var J=M.xhr();if(M.username){J.open(G,M.url,M.async,M.username,M.password)}else{J.open(G,M.url,M.async)}try{if(M.data){J.setRequestHeader("Content-Type",M.contentType)}if(M.ifModified){J.setRequestHeader("If-Modified-Since",o.lastModified[M.url]||"Thu, 01 Jan 1970 00:00:00 GMT")}J.setRequestHeader("X-Requested-With","XMLHttpRequest");J.setRequestHeader("Accept",M.dataType&&M.accepts[M.dataType]?M.accepts[M.dataType]+", */*":M.accepts._default)}catch(S){}if(M.beforeSend&&M.beforeSend(J,M)===false){if(M.global&&!--o.active){o.event.trigger("ajaxStop")}J.abort();return false}if(M.global){o.event.trigger("ajaxSend",[J,M])}var N=function(X){if(J.readyState==0){if(P){clearInterval(P);P=null;if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}}else{if(!K&&J&&(J.readyState==4||X=="timeout")){K=true;if(P){clearInterval(P);P=null}R=X=="timeout"?"timeout":!o.httpSuccess(J)?"error":M.ifModified&&o.httpNotModified(J,M.url)?"notmodified":"success";if(R=="success"){try{V=o.httpData(J,M.dataType,M)}catch(Z){R="parsererror"}}if(R=="success"){var Y;try{Y=J.getResponseHeader("Last-Modified")}catch(Z){}if(M.ifModified&&Y){o.lastModified[M.url]=Y}if(!W){I()}}else{o.handleError(M,J,R)}L();if(X){J.abort()}if(M.async){J=null}}}};if(M.async){var P=setInterval(N,13);if(M.timeout>0){setTimeout(function(){if(J&&!K){N("timeout")}},M.timeout)}}try{J.send(M.data)}catch(S){o.handleError(M,J,null,S)}if(!M.async){N()}function I(){if(M.success){M.success(V,R)}if(M.global){o.event.trigger("ajaxSuccess",[J,M])}}function L(){if(M.complete){M.complete(J,R)}if(M.global){o.event.trigger("ajaxComplete",[J,M])}if(M.global&&!--o.active){o.event.trigger("ajaxStop")}}return J},handleError:function(F,H,E,G){if(F.error){F.error(H,E,G)}if(F.global){o.event.trigger("ajaxError",[H,F,G])}},active:0,httpSuccess:function(F){try{return !F.status&&location.protocol=="file:"||(F.status>=200&&F.status<300)||F.status==304||F.status==1223}catch(E){}return false},httpNotModified:function(G,E){try{var H=G.getResponseHeader("Last-Modified");return G.status==304||H==o.lastModified[E]}catch(F){}return false},httpData:function(J,H,G){var F=J.getResponseHeader("content-type"),E=H=="xml"||!H&&F&&F.indexOf("xml")>=0,I=E?J.responseXML:J.responseText;if(E&&I.documentElement.tagName=="parsererror"){throw"parsererror"}if(G&&G.dataFilter){I=G.dataFilter(I,H)}if(typeof I==="string"){if(H=="script"){o.globalEval(I)}if(H=="json"){I=l["eval"]("("+I+")")}}return I},param:function(E){var G=[];function H(I,J){G[G.length]=encodeURIComponent(I)+"="+encodeURIComponent(J)}if(o.isArray(E)||E.jquery){o.each(E,function(){H(this.name,this.value)})}else{for(var F in E){if(o.isArray(E[F])){o.each(E[F],function(){H(F,this)})}else{H(F,o.isFunction(E[F])?E[F]():E[F])}}}return G.join("&").replace(/%20/g,"+")}});var m={},n,d=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];function t(F,E){var G={};o.each(d.concat.apply([],d.slice(0,E)),function(){G[this]=F});return G}o.fn.extend({show:function(J,L){if(J){return this.animate(t("show",3),J,L)}else{for(var H=0,F=this.length;H<F;H++){var E=o.data(this[H],"olddisplay");this[H].style.display=E||"";if(o.css(this[H],"display")==="none"){var G=this[H].tagName,K;if(m[G]){K=m[G]}else{var I=o("<"+G+" />").appendTo("body");K=I.css("display");if(K==="none"){K="block"}I.remove();m[G]=K}o.data(this[H],"olddisplay",K)}}for(var H=0,F=this.length;H<F;H++){this[H].style.display=o.data(this[H],"olddisplay")||""}return this}},hide:function(H,I){if(H){return this.animate(t("hide",3),H,I)}else{for(var G=0,F=this.length;G<F;G++){var E=o.data(this[G],"olddisplay");if(!E&&E!=="none"){o.data(this[G],"olddisplay",o.css(this[G],"display"))}}for(var G=0,F=this.length;G<F;G++){this[G].style.display="none"}return this}},_toggle:o.fn.toggle,toggle:function(G,F){var E=typeof G==="boolean";return o.isFunction(G)&&o.isFunction(F)?this._toggle.apply(this,arguments):G==null||E?this.each(function(){var H=E?G:o(this).is(":hidden");o(this)[H?"show":"hide"]()}):this.animate(t("toggle",3),G,F)},fadeTo:function(E,G,F){return this.animate({opacity:G},E,F)},animate:function(I,F,H,G){var E=o.speed(F,H,G);return this[E.queue===false?"each":"queue"](function(){var K=o.extend({},E),M,L=this.nodeType==1&&o(this).is(":hidden"),J=this;for(M in I){if(I[M]=="hide"&&L||I[M]=="show"&&!L){return K.complete.call(this)}if((M=="height"||M=="width")&&this.style){K.display=o.css(this,"display");K.overflow=this.style.overflow}}if(K.overflow!=null){this.style.overflow="hidden"}K.curAnim=o.extend({},I);o.each(I,function(O,S){var R=new o.fx(J,K,O);if(/toggle|show|hide/.test(S)){R[S=="toggle"?L?"show":"hide":S](I)}else{var Q=S.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),T=R.cur(true)||0;if(Q){var N=parseFloat(Q[2]),P=Q[3]||"px";if(P!="px"){J.style[O]=(N||1)+P;T=((N||1)/R.cur(true))*T;J.style[O]=T+P}if(Q[1]){N=((Q[1]=="-="?-1:1)*N)+T}R.custom(T,N,P)}else{R.custom(T,S,"")}}});return true})},stop:function(F,E){var G=o.timers;if(F){this.queue([])}this.each(function(){for(var H=G.length-1;H>=0;H--){if(G[H].elem==this){if(E){G[H](true)}G.splice(H,1)}}});if(!E){this.dequeue()}return this}});o.each({slideDown:t("show",1),slideUp:t("hide",1),slideToggle:t("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(E,F){o.fn[E]=function(G,H){return this.animate(F,G,H)}});o.extend({speed:function(G,H,F){var E=typeof G==="object"?G:{complete:F||!F&&H||o.isFunction(G)&&G,duration:G,easing:F&&H||H&&!o.isFunction(H)&&H};E.duration=o.fx.off?0:typeof E.duration==="number"?E.duration:o.fx.speeds[E.duration]||o.fx.speeds._default;E.old=E.complete;E.complete=function(){if(E.queue!==false){o(this).dequeue()}if(o.isFunction(E.old)){E.old.call(this)}};return E},easing:{linear:function(G,H,E,F){return E+F*G},swing:function(G,H,E,F){return((-Math.cos(G*Math.PI)/2)+0.5)*F+E}},timers:[],fx:function(F,E,G){this.options=E;this.elem=F;this.prop=G;if(!E.orig){E.orig={}}}});o.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(o.fx.step[this.prop]||o.fx.step._default)(this);if((this.prop=="height"||this.prop=="width")&&this.elem.style){this.elem.style.display="block"}},cur:function(F){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var E=parseFloat(o.css(this.elem,this.prop,F));return E&&E>-10000?E:parseFloat(o.curCSS(this.elem,this.prop))||0},custom:function(I,H,G){this.startTime=e();this.start=I;this.end=H;this.unit=G||this.unit||"px";this.now=this.start;this.pos=this.state=0;var E=this;function F(J){return E.step(J)}F.elem=this.elem;if(F()&&o.timers.push(F)&&!n){n=setInterval(function(){var K=o.timers;for(var J=0;J<K.length;J++){if(!K[J]()){K.splice(J--,1)}}if(!K.length){clearInterval(n);n=g}},13)}},show:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.show=true;this.custom(this.prop=="width"||this.prop=="height"?1:0,this.cur());o(this.elem).show()},hide:function(){this.options.orig[this.prop]=o.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(H){var G=e();if(H||G>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var E=true;for(var F in this.options.curAnim){if(this.options.curAnim[F]!==true){E=false}}if(E){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(o.css(this.elem,"display")=="none"){this.elem.style.display="block"}}if(this.options.hide){o(this.elem).hide()}if(this.options.hide||this.options.show){for(var I in this.options.curAnim){o.attr(this.elem.style,I,this.options.orig[I])}}this.options.complete.call(this.elem)}return false}else{var J=G-this.startTime;this.state=J/this.options.duration;this.pos=o.easing[this.options.easing||(o.easing.swing?"swing":"linear")](this.state,J,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update()}return true}};o.extend(o.fx,{speeds:{slow:600,fast:200,_default:400},step:{opacity:function(E){o.attr(E.elem.style,"opacity",E.now)},_default:function(E){if(E.elem.style&&E.elem.style[E.prop]!=null){E.elem.style[E.prop]=E.now+E.unit}else{E.elem[E.prop]=E.now}}}});if(document.documentElement.getBoundingClientRect){o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}var G=this[0].getBoundingClientRect(),J=this[0].ownerDocument,F=J.body,E=J.documentElement,L=E.clientTop||F.clientTop||0,K=E.clientLeft||F.clientLeft||0,I=G.top+(self.pageYOffset||o.boxModel&&E.scrollTop||F.scrollTop)-L,H=G.left+(self.pageXOffset||o.boxModel&&E.scrollLeft||F.scrollLeft)-K;return{top:I,left:H}}}else{o.fn.offset=function(){if(!this[0]){return{top:0,left:0}}if(this[0]===this[0].ownerDocument.body){return o.offset.bodyOffset(this[0])}o.offset.initialized||o.offset.initialize();var J=this[0],G=J.offsetParent,F=J,O=J.ownerDocument,M,H=O.documentElement,K=O.body,L=O.defaultView,E=L.getComputedStyle(J,null),N=J.offsetTop,I=J.offsetLeft;while((J=J.parentNode)&&J!==K&&J!==H){M=L.getComputedStyle(J,null);N-=J.scrollTop,I-=J.scrollLeft;if(J===G){N+=J.offsetTop,I+=J.offsetLeft;if(o.offset.doesNotAddBorder&&!(o.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(J.tagName))){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}F=G,G=J.offsetParent}if(o.offset.subtractsBorderForOverflowNotVisible&&M.overflow!=="visible"){N+=parseInt(M.borderTopWidth,10)||0,I+=parseInt(M.borderLeftWidth,10)||0}E=M}if(E.position==="relative"||E.position==="static"){N+=K.offsetTop,I+=K.offsetLeft}if(E.position==="fixed"){N+=Math.max(H.scrollTop,K.scrollTop),I+=Math.max(H.scrollLeft,K.scrollLeft)}return{top:N,left:I}}}o.offset={initialize:function(){if(this.initialized){return}var L=document.body,F=document.createElement("div"),H,G,N,I,M,E,J=L.style.marginTop,K='<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>';M={position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"};for(E in M){F.style[E]=M[E]}F.innerHTML=K;L.insertBefore(F,L.firstChild);H=F.firstChild,G=H.firstChild,I=H.nextSibling.firstChild.firstChild;this.doesNotAddBorder=(G.offsetTop!==5);this.doesAddBorderForTableAndCells=(I.offsetTop===5);H.style.overflow="hidden",H.style.position="relative";this.subtractsBorderForOverflowNotVisible=(G.offsetTop===-5);L.style.marginTop="1px";this.doesNotIncludeMarginInBodyOffset=(L.offsetTop===0);L.style.marginTop=J;L.removeChild(F);this.initialized=true},bodyOffset:function(E){o.offset.initialized||o.offset.initialize();var G=E.offsetTop,F=E.offsetLeft;if(o.offset.doesNotIncludeMarginInBodyOffset){G+=parseInt(o.curCSS(E,"marginTop",true),10)||0,F+=parseInt(o.curCSS(E,"marginLeft",true),10)||0}return{top:G,left:F}}};o.fn.extend({position:function(){var I=0,H=0,F;if(this[0]){var G=this.offsetParent(),J=this.offset(),E=/^body|html$/i.test(G[0].tagName)?{top:0,left:0}:G.offset();J.top-=j(this,"marginTop");J.left-=j(this,"marginLeft");E.top+=j(G,"borderTopWidth");E.left+=j(G,"borderLeftWidth");F={top:J.top-E.top,left:J.left-E.left}}return F},offsetParent:function(){var E=this[0].offsetParent||document.body;while(E&&(!/^body|html$/i.test(E.tagName)&&o.css(E,"position")=="static")){E=E.offsetParent}return o(E)}});o.each(["Left","Top"],function(F,E){var G="scroll"+E;o.fn[G]=function(H){if(!this[0]){return null}return H!==g?this.each(function(){this==l||this==document?l.scrollTo(!F?H:o(l).scrollLeft(),F?H:o(l).scrollTop()):this[G]=H}):this[0]==l||this[0]==document?self[F?"pageYOffset":"pageXOffset"]||o.boxModel&&document.documentElement[G]||document.body[G]:this[0][G]}});o.each(["Height","Width"],function(I,G){var E=I?"Left":"Top",H=I?"Right":"Bottom",F=G.toLowerCase();o.fn["inner"+G]=function(){return this[0]?o.css(this[0],F,false,"padding"):null};o.fn["outer"+G]=function(K){return this[0]?o.css(this[0],F,false,K?"margin":"border"):null};var J=G.toLowerCase();o.fn[J]=function(K){return this[0]==l?document.compatMode=="CSS1Compat"&&document.documentElement["client"+G]||document.body["client"+G]:this[0]==document?Math.max(document.documentElement["client"+G],document.body["scroll"+G],document.documentElement["scroll"+G],document.body["offset"+G],document.documentElement["offset"+G]):K===g?(this.length?o.css(this[0],J):null):this.css(J,typeof K==="string"?K:K+"px")}})})(); \ No newline at end of file