major rewrite of the web interface

This commit is contained in:
SJ 2012-09-06 15:27:20 +02:00
parent e3bd0b987a
commit 853c4ab4f1
88 changed files with 1707 additions and 3839 deletions

View File

@ -57,8 +57,9 @@ source tag
sql_pass = piler
sql_query_pre = SET NAMES utf8
sql_query = SELECT `id`, `uid`, `tag` FROM `tag`
sql_query = SELECT `_id`, `id`, `uid`, `tag` FROM `tag`
sql_attr_uint = id
sql_attr_uint = uid
}
@ -73,8 +74,9 @@ source note
sql_pass = piler
sql_query_pre = SET NAMES utf8
sql_query = SELECT `id`, `uid`, `note` FROM `note`
sql_query = SELECT `_id`, `id`, `uid`, `note` FROM `note`
sql_attr_uint = id
sql_attr_uint = uid
}

View File

@ -11,9 +11,9 @@
#define PROGNAME "piler"
#define VERSION "0.1.20"
#define VERSION "0.1.21"
#define BUILD 697
#define BUILD 701
#define HOSTID "mailarchiver"

View File

@ -103,10 +103,12 @@ create view `v_attachment` AS select `id` as `i`, `piler_id`, `attachment_id`, `
drop table if exists `tag`;
create table if not exists `tag` (
`_id` bigint unsigned auto_increment not null,
`id` bigint not null,
`uid` int not null,
`tag` char(255) default null,
unique(`id`, `uid`)
unique(`id`, `uid`),
key (`_id`)
) ENGINE=InnoDB;
@ -247,12 +249,21 @@ create table if not exists `folder` (
) Engine=InnoDB;
create table if not exists `folder_user` (
`id` bigint unsigned not null,
`uid` int unsigned not null,
key `folder_user_idx` (`id`),
key `folder_user_idx2` (`uid`)
) ENGINE=InnoDB;
create table if not exists `note` (
`_id` bigint unsigned auto_increment not null,
`id` bigint unsigned not null,
`uid` int not null,
`note` text default null,
unique(`id`, `uid`),
key (`id`)
key (`_id`)
) ENGINE=InnoDB;

View File

@ -14,6 +14,7 @@ define('ENABLE_HISTORY', 1);
define('ENABLE_REMOTE_IMAGES', '0');
define('ENABLE_ON_THE_FLY_VERIFICATION', 1);
define('ENABLE_LDAP_IMPORT_FEATURE', 0);
define('ENABLE_FOLDER_RESTRICTIONS', 0);
define('REMOTE_IMAGE_REPLACEMENT', '/view/theme/default/images/remote.gif');
define('ICON_ARROW_UP', '/view/theme/default/images/arrowup.gif');
@ -84,6 +85,8 @@ define('TABLE_USER', 'user');
define('TABLE_GROUP', 'group');
define('TABLE_GROUP_USER', 'group_user');
define('TABLE_GROUP_EMAIL', 'group_email');
define('TABLE_FOLDER', 'folder');
define('TABLE_FOLDER_USER', 'folder_user');
define('TABLE_EMAIL', 'email');
define('TABLE_META', 'metadata');
define('TABLE_ATTACHMENT', 'attachment');

View File

@ -7,7 +7,7 @@ class ControllerAuditAudit extends Controller {
$this->id = "content";
$this->template = "audit/audit.tpl";
$this->layout = "common/layout-search";
$this->layout = "common/layout";
$request = Registry::get('request');
$db = Registry::get('db');

View File

@ -1,26 +0,0 @@
<?php
class ControllerCommonLayoutHealth extends Controller {
protected function index() {
$this->data['title'] = $this->document->title;
$this->template = "common/layout-health.tpl";
$this->children = array(
"common/menu",
"common/footer"
);
$this->render();
}
}
?>

View File

@ -1,26 +0,0 @@
<?php
class ControllerCommonLayoutMinimal extends Controller {
protected function index() {
$this->data['title'] = $this->document->title;
$this->template = "common/layout-minimal.tpl";
$this->children = array(
"common/menu",
"common/footer"
);
$this->render();
}
}
?>

View File

@ -1,13 +1,13 @@
<?php
class ControllerCommonLayoutSearch extends Controller {
class ControllerCommonLayoutNew extends Controller {
protected function index() {
$this->data['title'] = $this->document->title;
$this->template = "common/layout-search.tpl";
$this->template = "common/layout-new.tpl";
$this->data['search_args'] = '';
@ -23,6 +23,8 @@ class ControllerCommonLayoutSearch extends Controller {
$this->children = array(
"common/menu",
"search/folder",
"search/popup",
"common/footer"
);

View File

@ -0,0 +1,48 @@
<?php
class ControllerFolderFolder extends Controller {
private $error = array();
public function index(){
$this->id = "content";
$this->template = "user/list.tpl";
$this->layout = "common/layout-empty";
$request = Registry::get('request');
$db = Registry::get('db');
$language = Registry::get('language');
$this->load->model('folder/folder');
$this->data['term'] = '';
if(!isset($this->request->get['term']) || strlen($this->request->get['term']) < 2) { die("no data"); }
/* check if we are admin */
if(Registry::get('admin_user') == 1) {
$results = $this->model_folder_folder->get_folders_by_string($this->request->get['term']);
$i = 0;
$s = '[ ';
foreach($results as $result) {
$i++;
$s .= '{ "id": "' . $i . '", "value": "' . $result['name'] . '" },';
}
$s = preg_replace("/,$/", "", $s) . " ]";
print $s;
}
}
}
?>

View File

@ -7,7 +7,7 @@ class ControllerHealthHealth extends Controller {
$this->id = "content";
$this->template = "health/health.tpl";
$this->layout = "common/layout-health";
$this->layout = "common/layout";
$this->load->model('health/health');

View File

@ -18,6 +18,7 @@ class ControllerLoginLogin extends Controller {
$this->load->model('user/auth');
$this->load->model('user/user');
$this->load->model('user/prefs');
$this->load->model('folder/folder');
$this->document->title = $this->data['text_login'];
@ -29,6 +30,11 @@ class ControllerLoginLogin extends Controller {
LOGGER('logged in');
if(isAdminUser() == 1) {
header("Location: " . SITE_URL . "index.php?route=health/health");
exit;
}
if(isset($_POST['relocation']) && $_POST['relocation']) {
header("Location: " . SITE_URL . $_POST['relocation']);
} else {

View File

@ -8,7 +8,7 @@ class ControllerLoginLogout extends Controller {
$this->id = "content";
$this->template = "login/logout.tpl";
$this->layout = "common/layout-minimal";
$this->layout = "common/layout";
$request = Registry::get('request');

View File

@ -23,7 +23,7 @@ class ControllerMessageBulkrestore extends Controller {
if(!isset($this->request->post['idlist']) || $this->request->post['idlist'] == '') { die("no idlist parameter given"); }
list($a, $idlist) = $this->model_search_search->check_your_permission_by_id_list(explode(",", $this->request->post['idlist']));
$idlist = $this->model_search_search->check_your_permission_by_id_list(explode(",", $this->request->post['idlist']));
$download = $this->request->post['download'];
@ -55,10 +55,14 @@ class ControllerMessageBulkrestore extends Controller {
array_push($rcpt, $_SESSION['email']);
}
$x = $this->model_mail_mail->send_smtp_email(SMARTHOST, SMARTHOST_PORT, SMTP_DOMAIN, SMTP_FROMADDR, $rcpt,
"Received: by piler" . EOL . PILER_HEADER_FIELD . $id . EOL . $this->model_search_message->get_raw_message($id) );
if(count($rcpt) > 0) {
$piler_id = $this->model_search_message->get_piler_id_by_id($id);
if($x == 1) { $this->data['restored']++; }
$x = $this->model_mail_mail->send_smtp_email(SMARTHOST, SMARTHOST_PORT, SMTP_DOMAIN, SMTP_FROMADDR, $rcpt,
"Received: by piler" . EOL . PILER_HEADER_FIELD . $id . EOL . $this->model_search_message->get_raw_message($piler_id) );
if($x == 1) { $this->data['restored']++; }
}
}

View File

@ -20,11 +20,11 @@ class ControllerMessageDownload extends Controller {
$this->data['id'] = @$this->request->get['id'];
if(!verify_piler_id($this->data['id'])) {
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown piler id: ' . $this->data['id']);
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown id: ' . $this->data['id']);
die("invalid id: " . $this->data['id']);
}
if(!$this->model_search_search->check_your_permission_by_piler_id($this->data['id'])) {
if(!$this->model_search_search->check_your_permission_by_id($this->data['id'])) {
AUDIT(ACTION_UNAUTHORIZED_VIEW_MESSAGE, '', '', $this->data['id'], '');
die("no permission for " . $this->data['id']);
}
@ -32,13 +32,16 @@ class ControllerMessageDownload extends Controller {
AUDIT(ACTION_DOWNLOAD_MESSAGE, '', '', $this->data['id'], '');
$this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']);
header("Cache-Control: public, must-revalidate");
header("Pragma: no-cache");
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=" . $this->data['id'] . ".eml");
header("Content-Disposition: attachment; filename=" . $this->data['piler_id'] . ".eml");
header("Content-Transfer-Encoding: binary\n");
print $this->model_search_message->get_raw_message($this->data['id']);
print $this->model_search_message->get_raw_message($this->data['piler_id']);
exit;
$this->render();

View File

@ -22,18 +22,20 @@ class ControllerMessageHeaders extends Controller {
$this->data['id'] = @$this->request->get['id'];
if(!verify_piler_id($this->data['id'])) {
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown piler id: ' . $this->data['id']);
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown id: ' . $this->data['id']);
die("invalid id: " . $this->data['id']);
}
if(!$this->model_search_search->check_your_permission_by_piler_id($this->data['id'])) {
if(!$this->model_search_search->check_your_permission_by_id($this->data['id'])) {
AUDIT(ACTION_UNAUTHORIZED_VIEW_MESSAGE, '', '', $this->data['id'], '');
die("no permission for " . $this->data['id']);
}
AUDIT(ACTION_VIEW_HEADER, '', '', $this->data['id'], '');
$this->data['data'] = $this->model_search_message->get_message_headers($this->data['id']);
$this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']);
$this->data['data'] = $this->model_search_message->get_message_headers($this->data['piler_id']);
$this->render();
}

View File

@ -0,0 +1,30 @@
<?php
class ControllerMessageNote extends Controller {
private $error = array();
public function index(){
$this->id = "content";
$this->template = "message/note.tpl";
$this->layout = "common/layout-empty";
$request = Registry::get('request');
$db = Registry::get('db');
$this->load->model('search/search');
$this->load->model('search/message');
if(isset($this->request->post['note']) && isset($this->request->post['id'])) {
if($this->model_search_search->check_your_permission_by_id($this->request->post['id']) == 1) {
$this->model_search_message->add_message_note($this->request->post['id'], $_SESSION['uid'], $this->request->post['note']);
}
}
}
}
?>

View File

@ -27,7 +27,7 @@ class ControllerMessageRestore extends Controller {
die("invalid id: " . $this->data['id']);
}
if(!$this->model_search_search->check_your_permission_by_piler_id($this->data['id'])) {
if(!$this->model_search_search->check_your_permission_by_id($this->data['id'])) {
AUDIT(ACTION_UNAUTHORIZED_VIEW_MESSAGE, '', '', $this->data['id'], '');
die("no permission for " . $this->data['id']);
}
@ -42,16 +42,18 @@ class ControllerMessageRestore extends Controller {
/* send the email to all the recipients of the original email if we are admin or auditor users */
if(Registry::get('auditor_user') == 1) {
if(Registry::get('admin_user') == 1 || Registry::get('auditor_user') == 1) {
$rcpt = $this->model_search_search->get_message_recipients($this->data['id']);
}
else {
array_push($rcpt, $_SESSION['email']);
}
$this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']);
$x = $this->model_mail_mail->send_smtp_email(SMARTHOST, SMARTHOST_PORT, SMTP_DOMAIN, SMTP_FROMADDR, $rcpt,
"Received: by piler" . EOL . PILER_HEADER_FIELD . $this->data['id'] . EOL . $this->model_search_message->get_raw_message($this->data['id']) );
"Received: by piler" . EOL . PILER_HEADER_FIELD . $this->data['id'] . EOL . $this->model_search_message->get_raw_message($this->data['piler_id']) );
if($x == 1) { $this->data['data'] = $this->data['text_restored']; }
else { $this->data['data'] = $this->data['text_failed_to_restore']; }

View File

@ -30,11 +30,11 @@ class ControllerMessageView extends Controller {
if(!verify_piler_id($this->data['id'])) {
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown piler id: ' . $this->data['id']);
AUDIT(ACTION_UNKNOWN, '', '', $this->data['id'], 'unknown id: ' . $this->data['id']);
die("invalid id: " . $this->data['id']);
}
if(!$this->model_search_search->check_your_permission_by_piler_id($this->data['id'])) {
if(!$this->model_search_search->check_your_permission_by_id($this->data['id'])) {
AUDIT(ACTION_UNAUTHORIZED_VIEW_MESSAGE, '', '', $this->data['id'], '');
die("no permission for " . $this->data['id']);
}
@ -57,9 +57,11 @@ class ControllerMessageView extends Controller {
exit;
}
$this->data['piler_id'] = $this->model_search_message->get_piler_id_by_id($this->data['id']);
$this->data['message'] = $this->model_search_message->extract_message($this->data['id']);
$this->data['message'] = $this->model_search_message->extract_message($this->data['piler_id']);
$this->data['message']['tag'] = $this->model_search_message->get_message_tag($this->data['id'], $_SESSION['uid']);
$this->data['message']['note'] = $this->model_search_message->get_message_note($this->data['id'], $_SESSION['uid']);
$this->render();
}

View File

@ -0,0 +1,24 @@
<?php
class ControllerSearchFolder extends Controller {
protected function index() {
$this->id = "folder";
$this->template = "search/folder.tpl";
$request = Registry::get('request');
$db = Registry::get('db');
$this->load->model('folder/folder');
$this->data['folders'] = $this->model_folder_folder->get_folders_for_user();
$this->render();
}
}
?>

View File

@ -4,14 +4,8 @@
class ControllerSearchHelper extends Controller {
private $error = array();
private $a = array(
'o_from' => '',
'f_from' => '',
'o_to' => '',
'f_to' => '',
'from' => '',
'to' => '',
'from_domain' => '',
'to_domain' => '',
'subject' => '',
'body' => '',
'date1' => '',
@ -20,7 +14,9 @@ class ControllerSearchHelper extends Controller {
'size' => '',
'attachment_type' => '',
'tag' => '',
'note' => '',
'ref' => '',
'folders' => '',
'any' => ''
);
@ -49,27 +45,26 @@ class ControllerSearchHelper extends Controller {
$this->data['n'] = -1;
if($this->request->post['searchtype'] == 'advanced') {
if($this->request->post['searchtype'] == 'expert'){
if(isset($this->request->post['search']) && preg_match("/(from|to|subject|body|direction|size|date1|date2|attachment|tagnote)\:/", $this->request->post['search'])) {
$this->preprocess_post_expert_request($this->request->post);
}
else {
$this->naive_preprocess_post_expert_request($this->request->post);
}
$this->preprocess_post_advanced_request($this->request->post);
$this->fixup_post_request();
list ($this->data['n'], $this->data['all_ids'], $this->data['messages']) = $this->model_search_search->search_messages($this->a, ADVANCED_SEARCH, $this->data['page']);
}
else if($this->request->post['searchtype'] == 'expert'){
$this->preprocess_post_expert_request($this->request->post);
$this->fixup_post_request();
list ($this->data['n'], $this->data['all_ids'], $this->data['messages']) = $this->model_search_search->search_messages($this->a, ADVANCED_SEARCH, $this->data['page']);
list ($this->data['n'], $this->data['all_ids'], $this->data['messages']) = $this->model_search_search->search_messages($this->a, $this->data['page']);
}
else {
$this->fixup_post_simple_request();
list ($this->data['n'], $this->data['all_ids'], $this->data['messages']) = $this->model_search_search->search_messages($this->request->post, SIMPLE_SEARCH, $this->data['page']);
list ($this->data['n'], $this->data['all_ids'], $this->data['messages']) = $this->model_search_search->search_messages($this->request->post, $this->data['page']);
}
if($this->a['ref']) { $this->data['_ref'] = $this->a['ref']; }
if(isset($this->request->post['ref']) && $this->request->post['ref']) { $this->data['_ref'] = $this->request->post['ref']; }
@ -97,24 +92,43 @@ class ControllerSearchHelper extends Controller {
private function fixup_post_request() {
$this->a['o_from'] = substr($this->a['o_from'], 1, strlen($this->a['o_from']));
$this->a['f_from'] = substr($this->a['f_from'], 1, strlen($this->a['f_from']));
$this->a['o_to'] = substr($this->a['o_to'], 1, strlen($this->a['o_to']));
$this->a['f_to'] = substr($this->a['f_to'], 1, strlen($this->a['f_to']));
$this->a['from'] = substr($this->a['from'], 1, strlen($this->a['from']));
$this->a['to'] = substr($this->a['to'], 1, strlen($this->a['to']));
$this->a['from_domain'] = substr($this->a['from_domain'], 1, strlen($this->a['from_domain']));
$this->a['to_domain'] = substr($this->a['to_domain'], 1, strlen($this->a['to_domain']));
if(isset($this->request->post['ref'])) { $this->a['ref'] = $this->request->post['ref']; }
if(isset($this->request->post['folders'])) { $this->a['folders'] = $this->request->post['folders']; }
$this->a['sort'] = $this->request->post['sort'];
$this->a['order'] = $this->request->post['order'];
}
private function naive_preprocess_post_expert_request($data = array()) {
$ndate = 0;
if(!isset($data['search'])) { return; }
$b = preg_split("/\s/", $data['search']);
while(list($k, $v) = each($b)) {
if($v == '') { continue; }
if(preg_match("/\d{4}\-\d{1,2}\-\d{1,2}/", $v)) {
$ndate++;
$this->a["date$ndate"] = $v;
}
else if(strchr($v, '@')) {
$this->a['from'] .= " $v";
}
else { $this->a['any'] .= ' ' . $v; }
}
if($this->a['date1'] && $this->a['date2'] == '') { $this->a['date2'] = $this->a['date1']; }
if($this->a['any'] == ' ' . $this->data['text_enter_search_terms']) { $this->a['any'] = ''; }
}
private function preprocess_post_expert_request($data = array()) {
$token = '';
$ndate = 0;
if(!isset($data['search'])) { return; }
@ -137,41 +151,37 @@ class ControllerSearchHelper extends Controller {
else if($v == 'attachment:' || $v == 'a:') { $token = 'attachment_type'; continue; }
else if($v == 'size') { $token = 'size'; continue; }
else if($v == 'tag:') { $token = 'tag'; continue; }
else if($v == 'note:') { $token = 'note'; continue; }
else if($v == 'ref:') { $token = 'ref'; continue; }
else { $this->a['any'] .= ' ' . $v; }
else {
if(preg_match("/\d{4}\-\d{1,2}\-\d{1,2}/", $v)) {
$ndate++;
$this->a["date$ndate"] = $v;
}
}
if($token == 'from') {
$v = fix_email_address($v);
if(substr($v, 0, 1) == '@') { $this->a['from_domain'] .= "|$v"; }
else if(strstr($v, '@')) {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_from'] .= "|$v"; } else { $this->a['f_from'] .= "|$v"; }
}
else {
$this->a['from'] .= " $v";
}
if($v == 'OR') { continue; }
$this->a['from'] .= " $v";
}
else if($token == 'to') {
$v = fix_email_address($v);
if(substr($v, 0, 1) == '@') { $this->a['to_domain'] .= "|$v"; }
else if(strstr($v, '@')) {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_to'] .= "|$v"; } else { $this->a['f_to'] .= "|$v"; }
}
else {
$this->a['to'] .= " $v";
}
if($v == 'OR') { continue; }
$this->a['to'] .= " $v";
}
else if($token == 'subject') { $this->a['subject'] .= ' ' . $v; }
else if($token == 'body') { $this->a['body'] .= ' ' . $v; }
else if($token == 'date1') { $this->a['date1'] = ' ' . $v; }
else if($token == 'date2') { $this->a['date2'] = ' ' . $v; }
else if($token == 'attachment_type') { $this->a['attachment_type'] .= '|' . $v; }
else if($token == 'tag') { $this->a['tag'] .= ' ' . $v; }
else if($token == 'note') { $this->a['note'] .= ' ' . $v; }
else if($token == 'ref') { $this->a['ref'] = ' ' . $v; }
else if($token == 'direction') {
if($v == 'inbound') { $this->a['direction'] = 0; }
if($v == 'inbound') { $this->a['direction'] = "0"; }
else if($v == 'outbound') { $this->a['direction'] = 2; }
else if($v == 'internal') { $this->a['direction'] = 1; }
}
@ -205,52 +215,6 @@ class ControllerSearchHelper extends Controller {
}
private function preprocess_post_advanced_request($data = array()) {
if(isset($data['f'])) {
foreach($data['f'] as $f) {
$v = array_shift($data['v']);
if($v == '') { continue; }
if($f == 'from') {
$v = fix_email_address($v);
if(substr($v, 0, 1) == '@') { $this->a['from_domain'] .= "|$v"; }
else if(strstr($v, '@')) {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_from'] .= "|$v"; } else { $this->a['f_from'] .= "|$v"; }
}
else {
$this->a['from'] .= " $v";
}
}
if($f == 'to') {
$v = fix_email_address($v);
if(substr($v, 0, 1) == '@') { $this->a['to_domain'] .= "|$v"; }
else if(strstr($v, '@')) {
if(in_array($v, $_SESSION['emails'])) { $this->a['o_to'] .= "|$v"; } else { $this->a['f_to'] .= "|$v"; }
}
else {
$this->a['to'] .= " $v";
}
}
if($f == 'subject') { $this->a['subject'] .= ' ' . $v; }
if($f == 'body') { $this->a['body'] .= ' ' . $v; }
}
}
if(isset($data['attachment_type'])) { $this->a['attachment_type'] = $data['attachment_type']; }
if(isset($data['direction'])) { $this->a['direction'] = $data['direction']; }
if(isset($data['tag'])) { $this->a['tag'] = $data['tag']; }
if(isset($data['date1'])) { $this->a['date1'] = $data['date1']; }
if(isset($data['date2'])) { $this->a['date2'] = $data['date2']; }
}
}
?>

View File

@ -0,0 +1,17 @@
<?php
class ControllerSearchPopup extends Controller {
protected function index() {
$this->id = "popup";
$this->template = "search/popup.tpl";
$this->render();
}
}
?>

View File

@ -7,31 +7,16 @@ class ControllerSearchSearch extends Controller {
$this->id = "content";
$this->template = "search/search.tpl";
$this->layout = "common/layout-search";
$this->layout = "common/layout-new";
$request = Registry::get('request');
$db = Registry::get('db');
$this->load->model('search/search');
$this->document->title = $this->data['text_simple_search'];
$this->document->title = $this->data['text_search'];
$this->data['searchtype'] = 'simple';
if(isset($this->request->get['type'])) {
if($this->request->get['type'] == 'advanced') {
$this->template = "search/advanced.tpl";
$this->data['searchtype'] = 'advanced';
$this->document->title = $this->data['text_advanced_search'];
}
if($this->request->get['type'] == 'expert') {
$this->template = "search/expert.tpl";
$this->data['searchtype'] = 'expert';
$this->document->title = $this->data['text_expert_search'];
}
}
$this->data['searchtype'] = 'expert';
if(isset($this->request->post['searchterm'])) {
$this->fixup_post_request();
@ -63,30 +48,6 @@ class ControllerSearchSearch extends Controller {
if(isset($a['sort'])) { $this->data['sort'] = $a['sort']; }
if(isset($a['order'])) { $this->data['order'] = $a['order']; }
if(isset($a['f'])) {
foreach($a['f'] as $f) {
$val = array_shift($a['v']);
if($val == '') { continue; }
if($i == 0) {
$this->data['key0'] = 0;
if($f == 'from') { $this->data['key0'] = 0; }
else if($f == 'to') { $this->data['key0'] = 1; }
else if($f == 'subject') { $this->data['key0'] = 2; }
else if($f == 'body') { $this->data['key0'] = 3; }
$this->data['val0'] = $val;
}
else {
array_push($this->data['blocks'], array('key' => $f, 'val' => $val));
}
$i++;
}
}
if(isset($a['date1'])) { $this->data['date1'] = $a['date1']; }
if(isset($a['date2'])) { $this->data['date2'] = $a['date2']; }

View File

@ -19,11 +19,12 @@ class ControllerSearchTag extends Controller {
if(isset($this->request->post['tag']) && isset($this->request->post['idlist'])) {
$idlist = explode(",", $this->request->post['idlist']);
if(count($idlist) > 0) {
$q = '';
list($ids, $a) = $this->model_search_search->check_your_permission_by_id_list($idlist);
$ids = $this->model_search_search->check_your_permission_by_id_list($idlist);
for($i=0; $i<count($ids); $i++) { $q .= ",?"; }
$q = preg_replace("/^\,/", "", $q);
@ -31,10 +32,6 @@ class ControllerSearchTag extends Controller {
$this->model_search_message->bulk_add_message_tag($ids, $_SESSION['uid'], $this->request->post['tag'], $q);
}
}
/*$this->data['message'] = 'I tagged this!';
$this->render();*/
}
}

View File

@ -17,6 +17,7 @@ class ControllerUserAdd extends Controller {
$this->load->model('user/user');
$this->load->model('group/group');
$this->load->model('folder/folder');
$this->document->title = $this->data['text_add_new_user_alias'];
@ -61,6 +62,7 @@ class ControllerUserAdd extends Controller {
else {
$this->data['next_user_id'] = $this->model_user_user->get_next_uid();
$this->data['groups'] = $this->model_group_group->get_groups();
$this->data['folders'] = $this->model_folder_folder->get_folders();
}
}
else {

View File

@ -20,6 +20,7 @@ class ControllerUserEdit extends Controller {
$this->load->model('user/user');
$this->load->model('group/group');
$this->load->model('folder/folder');
$this->document->title = $language->get('text_edit_user');
@ -74,6 +75,7 @@ class ControllerUserEdit extends Controller {
$this->data['user']['group_membership'] = $this->model_user_user->get_additional_uids($this->data['uid']);
$this->data['user']['group'] = $this->model_group_group->get_groups_by_uid($this->data['uid']);
$this->data['user']['folder'] = $this->model_folder_folder->get_folders_by_uid($this->data['uid']);
$this->data['emails'] = $this->model_user_user->get_emails($this->data['user']['username']);

View File

@ -17,9 +17,7 @@ class ControllerUserSettings extends Controller {
$this->load->model('user/auth');
$this->load->model('user/prefs');
$this->document->title = $this->data['text_home'];
$this->document->title = $this->data['text_settings'];
if(isset($this->request->post['pagelen']) && isset($this->request->post['lang']) && isset($this->request->post['theme'])) {
$this->model_user_prefs->set_user_preferences(Registry::get('username'), $this->request->post);

View File

@ -20,6 +20,7 @@ $_['text_any'] = "any";
$_['text_archive_size'] = "Archive size";
$_['text_archived_messages'] = "Archived messages";
$_['text_archiving_rules'] = "Archiving rules";
$_['text_attachment'] = "Attachment";
$_['text_attachment_size'] = "Attachment size";
$_['text_attachment_type'] = "Attachment type";
$_['text_audit'] = "Audit";
@ -111,6 +112,7 @@ $_['text_failed_to_remove'] = "Failed to remove";
$_['text_failed_to_restore'] = "Failed to restore";
$_['text_failed_to_update'] = "Failed to update";
$_['text_first'] = "First";
$_['text_folders'] = "Folders";
$_['text_from'] = "From";
$_['text_from_domain'] = "From domain";
@ -186,6 +188,7 @@ $_['text_no_subject'] = "no subject";
$_['text_no_such_policy'] = "No such policy";
$_['text_non_existent_queue_directory'] = "The queue directory you have specified does not exist";
$_['text_non_existing_user'] = "Non existing user";
$_['text_notes'] = "Notes";
$_['text_not_found'] = "Not found";
$_['text_not_running'] = "not running";
$_['text_not_spam'] = "not spam";
@ -233,6 +236,7 @@ $_['text_remove_this_policy'] = "Remove this policy";
$_['text_remove_this_group'] = "Remove this group";
$_['text_remove_this_user'] = "Remove this user";
$_['text_reset_counters'] = "Reset counters";
$_['text_restored'] = "Restored";
$_['text_restore_message'] = "restore message";
$_['text_restore_to_mailbox'] = "Restore message to mailbox";
$_['text_restored'] = "Restored";
@ -242,6 +246,7 @@ $_['text_role'] = "Role";
$_['text_running'] = "running";
$_['text_save'] = "Save";
$_['text_saved'] = "Saved";
$_['text_save_search'] = "save search";
$_['text_save_search_terms'] = "Save search terms";
$_['text_saved_search_terms'] = "Saved search terms";
@ -249,6 +254,8 @@ $_['text_search'] = "Search";
$_['text_search2'] = "search";
$_['text_search_emails'] = "Search email addresses";
$_['text_search_email_to_add'] = "Search email to add";
$_['text_search_folders'] = "Search folders";
$_['text_search_folder_to_add'] = "Search folder to add";
$_['text_search_groups'] = "Search groups";
$_['text_search_group_to_add'] = "Search group to add";
$_['text_search_terms'] = "Search terms";
@ -280,6 +287,7 @@ $_['text_successfully_updated'] = "Successfully modified";
$_['text_swap_usage'] = "Swap usage";
$_['text_tag_search_results'] = "Tag search results";
$_['text_tagged'] = "Tagged";
$_['text_tags'] = "Tags";
$_['text_text'] = "Text";
$_['text_text2'] = "text";

View File

@ -20,6 +20,7 @@ $_['text_any'] = "mindegy";
$_['text_archive_size'] = "Archívum méret";
$_['text_archived_messages'] = "Archivált levelek";
$_['text_archiving_rules'] = "Archiválási szabályok";
$_['text_attachment'] = "Melléklet";
$_['text_attachment_size'] = "Melléklet méret";
$_['text_attachment_type'] = "Melléklet típus";
$_['text_audit'] = "Audit";
@ -111,6 +112,7 @@ $_['text_failed_to_remove'] = "Hiba az elt
$_['text_failed_to_restore'] = "Hiba a visszaállítás során";
$_['text_failed_to_update'] = "Nem sikerült módosítani";
$_['text_first'] = "Első";
$_['text_folders'] = "Mappák";
$_['text_from'] = "Feladó";
$_['text_from_domain'] = "Feladó domain";
@ -187,6 +189,7 @@ $_['text_no_subject'] = "nincs t
$_['text_no_such_policy'] = "Nincs ilyen házirend";
$_['text_non_existent_queue_directory'] = "A megadott queue könyvtár nem létezik";
$_['text_non_existing_user'] = "Nem létező felhasználó";
$_['text_notes'] = "Megjegyzések";
$_['text_not_found'] = "Nincs találat";
$_['text_not_running'] = "nem fut";
$_['text_not_spam'] = "nem spam";
@ -234,6 +237,7 @@ $_['text_remove_this_group'] = "Csoport t
$_['text_remove_this_policy'] = "Házirend törlése";
$_['text_remove_this_user'] = "Felhasználó törlése";
$_['text_reset_counters'] = "Számlálók nullázása";
$_['text_restored'] = "Visszaállítva";
$_['text_restore_message'] = "levél visszaállítása";
$_['text_restore_to_mailbox'] = "Levél visszaállítása postafiókba";
$_['text_restored'] = "Visszaállítva";
@ -243,6 +247,7 @@ $_['text_role'] = "Felhaszn
$_['text_running'] = "fut";
$_['text_save'] = "Mentés";
$_['text_saved'] = "Elmentve";
$_['text_save_search'] = "keresés mentése";
$_['text_save_search_terms'] = "Keresési feltétel mentése";
$_['text_saved_search_terms'] = "Elmentett keresések";
@ -250,6 +255,8 @@ $_['text_search'] = "Keres
$_['text_search2'] = "keresés";
$_['text_search_emails'] = "Email címek keresése";
$_['text_search_email_to_add'] = "írja be az email cím elejét";
$_['text_search_folders'] = "Mappák keresése";
$_['text_search_folder_to_add'] = "Írja be a mappa elejét";
$_['text_search_groups'] = "Csoportok keresése";
$_['text_search_group_to_add'] = "írja be a csoport nevének elejét";
$_['text_search_terms'] = "Keresési feltételek";
@ -281,6 +288,7 @@ $_['text_successfully_updated'] = "Sikeresen m
$_['text_swap_usage'] = "Swap használat";
$_['text_tag_search_results'] = "Keresés eredményének címkézése";
$_['text_tagged'] = "Címkézve";
$_['text_tags'] = "Címkék";
$_['text_text'] = "Szöveg";
$_['text_text2'] = "szöveg";

View File

@ -20,6 +20,7 @@ $_['text_any'] = "mindegy";
$_['text_archive_size'] = "Archívum méret";
$_['text_archived_messages'] = "Archivált levelek";
$_['text_archiving_rules'] = "Archiválási szabályok";
$_['text_attachment'] = "Melléklet";
$_['text_attachment_size'] = "Melléklet méret";
$_['text_attachment_type'] = "Melléklet típus";
$_['text_audit'] = "Audit";
@ -111,6 +112,7 @@ $_['text_failed_to_remove'] = "Hiba az eltávolításkor";
$_['text_failed_to_restore'] = "Hiba a visszaállítás során";
$_['text_failed_to_update'] = "Nem sikerült módosítani";
$_['text_first'] = "Első";
$_['text_folders'] = "Mappák";
$_['text_from'] = "Feladó";
$_['text_from_domain'] = "Feladó domain";
@ -187,6 +189,7 @@ $_['text_no_subject'] = "nincs tárgy";
$_['text_no_such_policy'] = "Nincs ilyen házirend";
$_['text_non_existent_queue_directory'] = "A megadott queue könyvtár nem létezik";
$_['text_non_existing_user'] = "Nem létező felhasználó";
$_['text_notes'] = "Megjegyzések";
$_['text_not_found'] = "Nincs találat";
$_['text_not_running'] = "nem fut";
$_['text_not_spam'] = "nem spam";
@ -234,6 +237,7 @@ $_['text_remove_this_group'] = "Csoport törlése";
$_['text_remove_this_policy'] = "Házirend törlése";
$_['text_remove_this_user'] = "Felhasználó törlése";
$_['text_reset_counters'] = "Számlálók nullázása";
$_['text_restored'] = "Visszaállítva";
$_['text_restore_message'] = "levél visszaállítása";
$_['text_restore_to_mailbox'] = "Levél visszaállítása postafiókba";
$_['text_restored'] = "Visszaállítva";
@ -243,6 +247,7 @@ $_['text_role'] = "Felhasználótípus";
$_['text_running'] = "fut";
$_['text_save'] = "Mentés";
$_['text_saved'] = "Elmentve";
$_['text_save_search'] = "keresés mentése";
$_['text_save_search_terms'] = "Keresési feltétel mentése";
$_['text_saved_search_terms'] = "Elmentett keresések";
@ -250,6 +255,8 @@ $_['text_search'] = "Keresés";
$_['text_search2'] = "keresés";
$_['text_search_emails'] = "Email címek keresése";
$_['text_search_email_to_add'] = "írja be az email cím elejét";
$_['text_search_folders'] = "Mappák keresése";
$_['text_search_folder_to_add'] = "Írja be a mappa elejét";
$_['text_search_groups'] = "Csoportok keresése";
$_['text_search_group_to_add'] = "írja be a csoport nevének elejét";
$_['text_search_terms'] = "Keresési feltételek";
@ -281,6 +288,7 @@ $_['text_successfully_updated'] = "Sikeresen módosítva";
$_['text_swap_usage'] = "Swap használat";
$_['text_tag_search_results'] = "Keresés eredményének címkézése";
$_['text_tagged'] = "Címkézve";
$_['text_tags'] = "Címkék";
$_['text_text'] = "Szöveg";
$_['text_text2'] = "szöveg";

View File

@ -0,0 +1,111 @@
<?php
class ModelFolderFolder extends Model {
public function get_folders($search = '', $page = 0, $page_len = 0, $sort = 'name', $order = 0) {
$where_cond = '';
$_order = "";
$groups = array();
$Q = array();
$limit = "";
$from = (int)$page * (int)$page_len;
$search = preg_replace("/\s{1,}/", "", $search) . '%';
if($search){
$where_cond .= " WHERE `name` like ?";
array_push($Q, $search);
}
/* sort order */
if($order == 0) { $order = "ASC"; }
else { $order = "DESC"; }
$_order = "ORDER BY `$sort` $order";
if($page_len > 0) { $limit = " LIMIT " . (int)$from . ", " . (int)$page_len; }
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER . "` $where_cond $_order $limit", $Q);
foreach ($query->rows as $q) {
$groups[] = array(
'id' => $q['id'],
'foldername' => $q['name']
);
}
return $groups;
}
public function get_folders_for_user() {
$q = str_repeat("?,", count($_SESSION['folders']));
$q = preg_replace("/\,$/", "", $q);
$query = $this->db->query("SELECT `id`, `name` FROM `" . TABLE_FOLDER . "` WHERE id IN ($q)", $_SESSION['folders']);
if(isset($query->rows)) { return $query->rows; }
return array();
}
public function get_all_folder_ids($uid = 0) {
$arr = array();
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER_USER . "` WHERE uid=?", array($uid));
if(isset($query->rows)) {
foreach ($query->rows as $q) {
array_push($arr, $q['id']);
$this->get_sub_folders($q['id'], &$arr);
}
}
return $arr;
}
private function get_sub_folders($id = 0, $arr = array()) {
$query = $this->db->query("SELECT id FROM `" . TABLE_FOLDER . "` WHERE parent_id=?", array($id));
if(isset($query->rows)) {
foreach ($query->rows as $q) {
array_push($arr, $q['id']);
$this->get_sub_folders($q['id'], &$arr);
}
}
}
public function get_folders_by_string($s = '') {
if(strlen($s) < 2) { return array(); }
$query = $this->db->query("SELECT name FROM `" . TABLE_FOLDER . "` WHERE name LIKE ? ORDER BY name ASC", array($s . "%") );
if(isset($query->rows)) { return $query->rows; }
return array();
}
public function get_folders_by_uid($uid = 0) {
$folders = '';
$query = $this->db->query("SELECT `" . TABLE_FOLDER_USER . "`.id, name FROM `" . TABLE_FOLDER_USER . "`, `" . TABLE_FOLDER . "` WHERE `" . TABLE_FOLDER_USER . "`.id=`" . TABLE_FOLDER . "`.id AND uid=?", array($uid) );
if(isset($query->rows)) {
foreach ($query->rows as $q) { $folders .= "\n" . $q['name']; }
}
return preg_replace("/^\n/", "", $folders);
}
}
?>

View File

@ -14,8 +14,10 @@ class ModelMessageRestore extends Model {
if($zip->open($filename, ZIPARCHIVE::CREATE) != true) { exit("cannot open <$filename>\n"); }
foreach($idlist as $id) {
$rawemail = $this->model_search_message->get_raw_message($id);
$zip->addFromString($id . ".eml", $rawemail);
$piler_id = $this->model_search_message->get_piler_id_by_id($id);
$rawemail = $this->model_search_message->get_raw_message($piler_id);
$zip->addFromString($piler_id . ".eml", $rawemail);
AUDIT(ACTION_DOWNLOAD_MESSAGE, '', '', $id, '');
}

View File

@ -375,10 +375,17 @@ class ModelSearchMessage extends Model {
}
public function get_piler_id_by_id($id = 0) {
$query = $this->db->query("SELECT `piler_id` FROM `" . TABLE_META . "` WHERE id=?", array($id));
if(isset($query->row['piler_id'])) { return $query->row['piler_id']; }
return '';
}
public function get_message_tag($id = '', $uid = 0) {
if($id == '' || $uid <= 0) { return ''; }
$query = $this->db->query("SELECT `tag` FROM " . TABLE_TAG . "," . TABLE_META . " WHERE " . TABLE_TAG . ".id=" . TABLE_META . ".id AND uid=? AND piler_id=?", array($uid, $id));
$query = $this->db->query("SELECT `tag` FROM " . TABLE_TAG . " WHERE uid=? AND id=?", array($uid, $id));
if(isset($query->row['tag'])) { return $query->row['tag']; }
@ -389,25 +396,16 @@ class ModelSearchMessage extends Model {
public function add_message_tag($id = '', $uid = 0, $tag = '') {
if($id == '' || $uid <= 0) { return 0; }
$query = $this->db->query("SELECT `id` FROM " . TABLE_META . " WHERE piler_id=?", array($id));
if(isset($query->row['id']) && $query->row['id'] > 0) {
$id = $query->row['id'];
if($tag == '') {
$query = $this->db->query("DELETE FROM " . TABLE_TAG . " WHERE uid=? AND id=?", array($uid, $id));
} else {
$query = $this->db->query("UPDATE " . TABLE_TAG . " SET tag=? WHERE uid=? AND id=?", array($tag, $uid, $id));
if($this->db->countAffected() == 0) {
$query = $this->db->query("INSERT INTO " . TABLE_TAG . " (id, uid, tag) VALUES(?,?,?)", array($id, $uid, $tag));
}
if($tag == '') {
$query = $this->db->query("DELETE FROM " . TABLE_TAG . " WHERE uid=? AND id=?", array($uid, $id));
} else {
$query = $this->db->query("UPDATE " . TABLE_TAG . " SET tag=? WHERE uid=? AND id=?", array($tag, $uid, $id));
if($this->db->countAffected() == 0) {
$query = $this->db->query("INSERT INTO " . TABLE_TAG . " (id, uid, tag) VALUES(?,?,?)", array($id, $uid, $tag));
}
return 1;
}
return 0;
return 1;
}
@ -423,6 +421,35 @@ class ModelSearchMessage extends Model {
}
}
public function get_message_note($id = '', $uid = 0) {
if($id == '' || $uid <= 0) { return ''; }
$query = $this->db->query("SELECT `note` FROM " . TABLE_NOTE . " WHERE uid=? AND id=?", array($uid, $id));
if(isset($query->row['note'])) { return $query->row['note']; }
return '';
}
public function add_message_note($id = '', $uid = 0, $note = '') {
if($id == '' || $uid <= 0) { return 0; }
if($note == '') {
$query = $this->db->query("DELETE FROM " . TABLE_NOTE . " WHERE uid=? AND id=?", array($uid, $id));
} else {
$query = $this->db->query("UPDATE " . TABLE_NOTE . " SET note=? WHERE uid=? AND id=?", array($note, $uid, $id));
if($this->db->countAffected() == 0) {
$query = $this->db->query("INSERT INTO " . TABLE_NOTE . " (id, uid, note) VALUES(?,?,?)", array($id, $uid, $note));
}
}
return 1;
}
}
?>

View File

@ -2,7 +2,7 @@
class ModelSearchSearch extends Model {
public function search_messages($data = array(), $search_type = SIMPLE_SEARCH, $page = 0) {
public function search_messages($data = array(), $page = 0) {
$one_page_of_ids = array();
$total_hits = 0;
$sort = "sent";
@ -48,21 +48,13 @@ class ModelSearchSearch extends Model {
$all_ids = $this->query_all_possible_IDs_by_reference($data['ref'], $cache_key);
}
else {
if($search_type == SIMPLE_SEARCH) {
$conditions = $this->assemble_simple_query_conditions($data);
}
else {
$conditions = $this->assemble_advanced_query_conditions($data);
}
$all_ids = $this->query_all_possible_IDs($data, $conditions, $sort, $order, $sortorder, $cache_key);
$all_ids = $this->query_all_possible_IDs($data, $sort, $order, $sortorder, $cache_key);
}
}
$total_hits = count($all_ids);
$all_ids_csv = implode(",", $all_ids);
$data['page_len'] = get_page_length();
@ -83,182 +75,183 @@ class ModelSearchSearch extends Model {
}
$all_ids_csv = substr($all_ids_csv, 1, strlen($all_ids_csv));
return array($total_hits, $all_ids_csv, $this->get_meta_data($one_page_of_ids, $q, $sortorder));
}
private function assemble_advanced_query_conditions($data = array()) {
$f1 = $f2 = $t1 = $t2 = $fd = $td = '';
$incoming = $outgoing = '';
$email = $match = '';
$n_fc = $n_tc = 0;
private function assemble_email_address_condition($from = '', $to = '') {
$s = '';
$f_from = $f_fromdomain = $f_to = $f_todomain = '';
$o_from = $o_fromdomain = $o_to = $o_todomain = '';
$f_f = $o_f = $f_t = $o_t = '';
$f = $t = $fdomain = $tdomain = '';
$data['f_from'] = $this->fix_email_address_for_sphinx($data['f_from']);
$data['o_from'] = $this->fix_email_address_for_sphinx($data['o_from']);
$data['f_to'] = $this->fix_email_address_for_sphinx($data['f_to']);
$data['o_to'] = $this->fix_email_address_for_sphinx($data['o_to']);
$data['from_domain'] = $this->fix_email_address_for_sphinx($data['from_domain']);
$data['to_domain'] = $this->fix_email_address_for_sphinx($data['to_domain']);
$session_emails = $this->fix_email_address_for_sphinx($_SESSION['emails']);
$data['body'] = $this->fixup_sphinx_operators($data['body']);
$data['subject'] = $this->fixup_sphinx_operators($data['subject']);
$all_your_addresses = $this->get_all_your_address();
$data['any'] = $this->fixup_sphinx_operators($data['any']);
$data['any'] = $this->fix_email_address_for_sphinx($data['any']);
$from = preg_replace("/OR/", "", $from);
$to = preg_replace("/OR/", "", $to);
if($from) {
$e = preg_split("/\s/", $from);
foreach ($e as $email) {
if($email == '') { continue; }
if(Registry::get('auditor_user') == 1) {
if($data['f_from']) { $f1 .= "|" . $data['f_from']; $n_fc++; }
if($data['o_from']) { $f1 .= "|" . $data['o_from']; $n_fc++; }
if($data['from_domain']) { $fd .= "(@fromdomain " . substr($data['from_domain'], 1, strlen($data['from_domain'])) . ")"; $n_fc++; }
if($data['from']) { $f1 .= "|" . $this->fixup_sphinx_operators($data['from']); $n_fc++; }
$email = $this->fix_email_address_for_sphinx($email);
if($data['f_to']) { $t1 .= "|" . $data['f_to']; $n_tc++; }
if($data['o_to']) { $t1 .= "|" . $data['o_to']; $n_tc++; }
if($data['to_domain']) { $td .= "(@todomain " . substr($data['to_domain'], 1, strlen($data['to_domain'])) . ")"; $n_tc++; }
if($data['to']) { $f2 .= "|" . $this->fixup_sphinx_operators($data['to']); $n_tc++; }
$field = 'from';
if($email[0] == 'X') {
$email = substr($email, 1, strlen($email));
if($f1) { $f1 = "(@from " . substr($f1, 1, strlen($f1)) . ")"; }
if($t1) { $t1 = "(@to " . substr($t1, 1, strlen($t1)) . ")"; }
}
else {
$all_your_addresses = $this->get_all_your_address();
if($data['f_from']) { $f1 = "(@from " . $data['f_from'] . " @to $all_your_addresses)"; $n_fc++; }
if($data['o_from']) { $f2 = "(@from " . $data['o_from'] . ")"; $n_fc++; }
if($data['from_domain']) { $fd = "(@fromdomain " . substr($data['from_domain'], 1, strlen($data['from_domain'])) . " @to $all_your_addresses)"; $n_fc++; }
if($data['from']) { $fd = "(@from " . $this->fixup_sphinx_operators($data['from']) . " @to $all_your_addresses)"; $n_fc++; }
if($data['f_to']) { $t1 = "(@to " . $data['f_to'] . " @from $all_your_addresses)"; $n_tc++; }
if($data['o_to']) { $t2 = "(@to " . $data['o_to'] . ")"; $n_tc++; }
if($data['to_domain']) { $td = "(@todomain " . substr($data['to_domain'], 1, strlen($data['to_domain'])) . " @from $all_your_addresses)"; $n_tc++; }
if($data['to']) { $fd = "(@to " . $this->fixup_sphinx_operators($data['to']) . " @from $all_your_addresses)"; $n_tc++; }
if($n_fc == 0 && $n_tc == 0 && $data['from_domain'] == '' && $data['to_domain'] == '') {
if($data['direction'] == 2) {
$f1 = " (@from " . $all_your_addresses . ")";
} else {
$t1 = " (@to " . $all_your_addresses . ")";
$field = 'fromdomain';
$fdomain .= "|$email";
}
}
}
if($f1) { $incoming .= "|$f1"; }
if($f2) { $incoming .= "|$f2"; }
if($fd) { $incoming .= "|$fd"; }
if($t1) { $outgoing .= "|$t1"; }
if($t2) { $outgoing .= "|$t2"; }
if($td) { $outgoing .= "|$td"; }
if($incoming) { $incoming = substr($incoming, 1, strlen($incoming)); if($n_fc > 1) { $incoming = "($incoming)"; } }
if($outgoing) { $outgoing = substr($outgoing, 1, strlen($outgoing)); if($n_tc > 1) { $outgoing = "($outgoing)"; } }
if($incoming) {
$email = $incoming;
if($outgoing) { $email = $incoming . " & " . $outgoing; }
} else if($outgoing) {
$email = $outgoing;
}
if($email) { $match = $email; }
if($data['body']) { if($match) { $match .= " & "; } $match .= "(@body " . $data['body'] . ") "; }
if($data['subject']) { if($match) { $match .= " & "; } $match .= "(@subject " . $data['subject'] . ") "; }
if($data['attachment_type'] && $data['attachment_type'] != "any") { if($match) { $match .= " & "; } $match .= "(@attachment_types " . $data['attachment_type'] . ") "; }
if($data['any']) { if($match) { $match .= " & "; } $match .= "(" . $data['any'] . ") "; }
return $match;
}
private function assemble_simple_query_conditions($data = array(), $sort = 'sent', $order = 'DESC', $sortorder = '', $cache_key = '') {
$email = $match = "";
if(Registry::get('auditor_user') == 0) {
$all_your_addresses = $this->get_all_your_address();
if(isset($data['from'])) { $data['from'] = fix_email_address($data['from']); }
if(isset($data['to'])) { $data['to'] = fix_email_address($data['to']); }
// missing From: address
if(!isset($data['from'])) {
if(isset($data['to']) && substr($data['to'], 0, 1) == '@') {
$email = "@from $all_your_addresses @todomain " . $this->fix_email_address_for_sphinx(substr($data['to'], 1, strlen($data['to'])));
}
else if(isset($data['to']) && !strstr($data['to'], '@')) { $email = "@from $all_your_addresses @to " . $this->fixup_sphinx_operators($this->fix_email_address_for_sphinx($data['to'])); }
else if(!isset($data['to'])) { $email = "@to $all_your_addresses"; }
else if(!in_array($data['to'], $_SESSION['emails'])) { $email = "@from $all_your_addresses @to " . $this->fix_email_address_for_sphinx($data['to']); }
else { $email = "@to " . $this->fix_email_address_for_sphinx($data['to']); }
}
// missing To: address
else if(!isset($data['to'])) {
if(isset($data['from']) && substr($data['from'], 0, 1) == '@') {
$email = "@to $all_your_addresses @fromdomain " . $this->fix_email_address_for_sphinx(substr($data['from'], 1, strlen($data['from'])));
}
else if(isset($data['from']) && !strstr($data['from'], '@')) { $email = "@to $all_your_addresses @from " . $this->fixup_sphinx_operators($this->fix_email_address_for_sphinx($data['from'])); }
else if(!in_array($data['from'], $_SESSION['emails'])) { $email = "@to $all_your_addresses @from " . $this->fix_email_address_for_sphinx($data['from']); }
else { $email = "@from " . $this->fix_email_address_for_sphinx($data['from']); }
}
else if(isset($data['from']) && isset($data['to'])) {
if(
(!in_array($data['from'], $_SESSION['emails']) && in_array($data['to'], $_SESSION['emails'])) ||
(!in_array($data['to'], $_SESSION['emails']) && in_array($data['from'], $_SESSION['emails']))
) {
$email = "@from " . $this->fix_email_address_for_sphinx($data['from']) . " @to " . $this->fix_email_address_for_sphinx($data['to']);
}
else {
$email = " @to INVALID ";
$f .= "|$email";
}
}
if(in_array($email, $session_emails)) {
$a = "o_$field";
}
else {
$a = "f_$field";
}
if($$a) { $$a .= "|"; }
$$a .= "$email";
}
}
else {
if(isset($data['from'])) {
if(substr($data['from'], 0, 1) == '@') { $match .= " @fromdomain " . $this->fix_email_address_for_sphinx(substr($data['from'], 1, strlen($data['from']))); }
else { $match .= " @from " . $this->fixup_sphinx_operators($this->fix_email_address_for_sphinx($data['from'])); }
}
if(isset($data['to'])) {
if(substr($data['to'], 0, 1) == '@') { $match .= " @todomain " . $this->fix_email_address_for_sphinx(substr($data['to'], 1, strlen($data['to']))); }
else { $match .= " @to " . $this->fixup_sphinx_operators($this->fix_email_address_for_sphinx($data['to'])); }
}
if($to) {
$e = preg_split("/\s/", $to);
foreach ($e as $email) {
if($email == '') { continue; }
$email = $this->fix_email_address_for_sphinx($email);
$field = 'to';
if($email[0] == 'X') {
$email = substr($email, 1, strlen($email));
$field = 'todomain';
$tdomain .= "|$email";
}
else {
$t .= "|$email";
}
if(in_array($email, $session_emails)) {
$a = "o_$field";
}
else {
$a = "f_$field";
}
if($$a) { $$a .= "|"; }
$$a .= "$email";
}
}
if($f) { $f = preg_replace("/^\|/", "@from ", $f); }
if(isset($data['subject'])) {
$data['subject'] = $this->fixup_sphinx_operators($data['subject']);
$match .= " @(subject,body) " . $data['subject'];
if($fdomain) {
$fdomain = preg_replace("/^\|/", "@fromdomain ", $fdomain);
if($f) { $f = "(($f)|($fdomain))"; }
else { $f = "($fdomain)"; }
}
if($t) { $t = preg_replace("/^\|/", "@to ", $t); }
if($tdomain) {
$tdomain = preg_replace("/^\|/", "@todomain ", $tdomain);
if($t) { $t = "(($t)|($tdomain))"; }
else { $t = "($tdomain)"; }
}
if($email) { $match = " $email " . $match; }
if(Registry::get('auditor_user') == 1 || ENABLE_FOLDER_RESTRICTIONS == 1) {
if($from == '' && $to == '') { return ""; }
if($f && $t) { return "($f & $t)"; }
else if($f) { return "($f)"; }
else if($t) { return "($t)"; }
}
if($f_from) { $f_f = "@from $f_from"; }
if($f_fromdomain) { if($f_f) { $f_f = "($f_f | @fromdomain $f_fromdomain)"; } else { $f_f = "@fromdomain $f_fromdomain"; } }
if($o_from) { $o_f = "@from $o_from"; }
if($f_to) { $f_t = "@to $f_to"; }
if($f_todomain) { if($f_t) { $f_t = "($f_t | @todomain $f_todomain)"; } else { $f_t = "@todomain $f_todomain"; } }
if($o_to) { $o_t = "@to $o_to"; }
if($f_f == '' && $o_f == '' && $f_t == '' && $o_t == '') { return "@to $all_your_addresses"; }
if($f_f == '' && $o_f == '' && $f_t == '' && $o_t ) { return "$o_t"; }
if($f_f == '' && $o_f == '' && $f_t && $o_t == '') { return "(@from $all_your_addresses & $f_t)"; }
if($f_f == '' && $o_f == '' && $f_t && $o_t ) { return "($o_t | (@from $all_your_addresses & $f_t))"; }
if($f_f == '' && $o_f && $f_t == '' && $o_t == '') { return "$o_f"; }
if($f_f == '' && $o_f && $f_t == '' && $o_t ) { return "($o_f & $o_t)"; }
if($f_f == '' && $o_f && $f_t && $o_t == '') { return "($o_f & $f_t)"; }
if($f_f == '' && $o_f && $f_t && $o_t ) { return "(($o_f & $f_t) | ($o_f & $o_t))"; }
if($f_f && $o_f == '' && $f_t == '' && $o_t == '') { return "($f_f & @to $all_your_addresses)"; }
if($f_f && $o_f == '' && $f_t == '' && $o_t ) { return "($f_f & $o_t)"; }
if($f_f && $o_f == '' && $f_t && $o_t == '') { return "@from INVALID"; }
if($f_f && $o_f == '' && $f_t && $o_t ) { return "($f_f & $o_t)"; }
if($f_f && $o_f && $f_t == '' && $o_t == '') { return "(($f_f & @to $all_your_addresses)|$o_f)"; }
if($f_f && $o_f && $f_t == '' && $o_t ) { return "(($f_f & $o_t)|($o_f & $o_t))"; }
if($f_f && $o_f && $f_t && $o_t == '') { return "($o_f & $f_t)"; }
if($f_f && $o_f && $f_t && $o_t ) { return "(($f_f & $o_t)|($o_f & $f_t))"; }
return "(@from $all_your_addresses | @to $all_your_addresses)";
return $match;
}
private function query_all_possible_IDs($data = array(), $conditions = '', $sort = 'sent', $order = 'DESC', $sortorder = '', $cache_key = '') {
private function query_all_possible_IDs($data = array(), $sort = 'sent', $order = 'DESC', $sortorder = '', $cache_key = '') {
$ids = array();
$direction = $size = '';
$__folders = array();
$match = '';
$direction = $attachment = $size = $folders = '';
$tag_id_list = '';
$a = "";
$match = $this->assemble_email_address_condition($data['from'], $data['to']);
if($data['body']) {
$data['body'] = $this->fixup_sphinx_operators($data['body']);
if($match) { $match .= " & "; } $match .= "(@body " . $data['body'] . ") ";
}
if($data['subject']) {
$data['subject'] = $this->fixup_sphinx_operators($data['subject']);
if($match) { $match .= " & "; } $match .= "(@subject " . $data['subject'] . ") ";
}
if($data['attachment_type'] && $data['attachment_type'] != "any") { if($match) { $match .= " & "; } $match .= "(@attachment_types " . $data['attachment_type'] . ") "; }
if($data['any']) {
$data['any'] = $this->fixup_sphinx_operators($data['any']);
$data['any'] = $this->fix_email_address_for_sphinx($data['any']);
if($match) { $match = "($match) & "; } $match .= "(" . $data['any'] . ") ";
}
if($data['sort'] == 'from' || $data['sort'] == 'subj') { $sortorder = ''; }
$date = fixup_date_condition('sent', $data['date1'], $data['date2']);
@ -273,20 +266,31 @@ class ModelSearchSearch extends Model {
}
if(isset($data['attachment_type']) && $data['attachment_type'] == 'any') { $a = "attachments > 0 AND "; }
else if(isset($data['has_attachment']) && $data['has_attachment'] == 1) { $attachment = "attachments > 0 AND "; }
if(isset($data['tag']) && $data['tag']) {
$data['tag'] = $this->fixup_sphinx_operators($data['tag']);
$aa = $this->sphx->query("SELECT id FROM " . SPHINX_TAG_INDEX . " WHERE uid=" . $_SESSION['uid'] . " AND MATCH('@tag " . $data['tag'] . " ') ");
foreach($aa->rows as $a) {
$tag_id_list .= "," . $a['id'];
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$s = explode(" ", $data['folders']);
while(list($k,$v) = each($s)) {
if(in_array($v, $_SESSION['folders'])) {
array_push($__folders, $v);
}
}
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE id IN (" . substr($tag_id_list, 1, strlen($tag_id_list)) . ") $sortorder LIMIT 0," . MAX_SEARCH_HITS);
$folders = "folder IN (" . implode(",", $__folders) . ") AND ";
}
if(isset($data['tag']) && $data['tag']) {
$id_list = $this->get_sphinx_id_list($data['tag'], SPHINX_TAG_INDEX, 'tag');
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $folders id IN ($id_list) $sortorder LIMIT 0," . MAX_SEARCH_HITS);
}
else if(isset($data['note']) && $data['note']) {
$id_list = $this->get_sphinx_id_list($data['note'], SPHINX_NOTE_INDEX, 'note');
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $folders id IN ($id_list) $sortorder LIMIT 0," . MAX_SEARCH_HITS);
}
else {
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $date $direction $size MATCH('$conditions') $sortorder LIMIT 0," . MAX_SEARCH_HITS);
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE $a $date $attachment $direction $size $folders MATCH('$match') $sortorder LIMIT 0," . MAX_SEARCH_HITS);
}
//print $query->query; print "<p>" . $query->exec_time . "</p>\n";
@ -331,7 +335,6 @@ class ModelSearchSearch extends Model {
$memcache->add($cache_key, array('ts' => time(), 'total_hits' => count($ids), 'ids' => $ids), 0, MEMCACHED_TTL);
}
return $ids;
}
@ -347,6 +350,15 @@ class ModelSearchSearch extends Model {
array_push($ids, $q['id']);
}
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$query = $this->sphx->query("SELECT id, folder FROM " . SPHINX_MAIN_INDEX . " WHERE id IN (" . implode(",", $ids) . ")");
$ids = array();
foreach($query->rows as $q) {
if(isset($q['folder']) && in_array($q['folder'], $_SESSION['folders'])) { array_push($ids, $q['id']); }
}
}
if(MEMCACHED_ENABLED && $cache_key) {
$memcache = Registry::get('memcache');
$memcache->add($cache_key, array('ts' => time(), 'total_hits' => count($ids), 'ids' => $ids), 0, MEMCACHED_TTL);
@ -356,10 +368,27 @@ class ModelSearchSearch extends Model {
}
private function get_sphinx_id_list($s = '', $sphx_table = '', $field = '') {
$id_list = '';
$s = $this->fixup_sphinx_operators($s);
$q = $this->sphx->query("SELECT id FROM $sphx_table WHERE uid=" . $_SESSION['uid'] . " AND MATCH('@$field $s') ");
foreach($q->rows as $a) {
$id_list .= "," . $a['id'];
}
if($id_list) { $id_list = substr($id_list, 1, strlen($id_list)); }
return $id_list;
}
private function get_meta_data($ids = array(), $q = '', $sortorder = '') {
$messages = array();
$tag = array();
$note = array();
if(count($ids) == 0) return $messages;
@ -376,6 +405,11 @@ class ModelSearchSearch extends Model {
$tag[$t['id']] = $t['tag'];
}
$notes = $this->db->query("SELECT `id`, `note` FROM " . TABLE_NOTE . " WHERE `uid`=? AND `id` IN ($q)", $ids);
foreach ($notes->rows as $n) {
$note[$n['id']] = $n['note'];
}
$lang = Registry::get('language');
@ -399,6 +433,7 @@ class ModelSearchSearch extends Model {
}
if(isset($tag[$m['id']])) { $m['tag'] = $tag[$m['id']]; } else { $m['tag'] = ''; }
if(isset($note[$m['id']])) { $m['note'] = $note[$m['id']]; } else { $m['note'] = ''; }
array_push($messages, $m);
}
@ -419,7 +454,7 @@ class ModelSearchSearch extends Model {
array_push($domains, $q['domain']);
}
$query = $this->db->query("SELECT `to` FROM " . VIEW_MESSAGES . " WHERE piler_id=?", array($id));
$query = $this->db->query("SELECT `to` FROM " . VIEW_MESSAGES . " WHERE id=?", array($id));
foreach($query->rows as $q) {
$mydomain = 0;
@ -449,7 +484,7 @@ class ModelSearchSearch extends Model {
}
public function check_your_permission_by_piler_id($id = '') {
public function check_your_permission_by_id($id = '') {
$q = '';
$arr = $a = array();
@ -470,9 +505,14 @@ class ModelSearchSearch extends Model {
$arr = array_merge($arr, $a, $a);
$query = $this->db->query("SELECT * FROM " . VIEW_MESSAGES . " WHERE piler_id=? AND ( `from` IN ($q) OR `to` IN ($q) )", $arr);
if(isset($query->row['id'])) { return 1; }
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$query = $this->sphx->query("SELECT folder FROM " . SPHINX_MAIN_INDEX . " WHERE id=" . (int)$id);
if(isset($query->row['folder']) && in_array($query->row['folder'], $_SESSION['folders'])) { return 1; }
}
else {
$query = $this->db->query("SELECT id FROM " . VIEW_MESSAGES . " WHERE id=? AND ( `from` IN ($q) OR `to` IN ($q) )", $arr);
if(isset($query->row['id'])) { return 1; }
}
return 0;
}
@ -480,9 +520,9 @@ class ModelSearchSearch extends Model {
public function check_your_permission_by_id_list($id = array()) {
$q = $q2 = '';
$arr = $a = $result = $result2 = array();
$arr = $a = $result = array();
if(count($id) < 1) { return array($result, $result2); }
if(count($id) < 1) { return $result; }
$arr = $id;
@ -490,6 +530,7 @@ class ModelSearchSearch extends Model {
$q2 .= ",?";
}
$q2 = preg_replace("/^\,/", "", $q2);
if(Registry::get('auditor_user') == 0) {
@ -505,21 +546,30 @@ class ModelSearchSearch extends Model {
$q = preg_replace("/^\,/", "", $q);
if(Registry::get('auditor_user') == 1) {
$query = $this->db->query("SELECT distinct id, piler_id FROM " . VIEW_MESSAGES . " WHERE `id` IN ($q2)", $arr);
$query = $this->db->query("SELECT id FROM `" . TABLE_META . "` WHERE `id` IN ($q2)", $arr);
} else {
$arr = array_merge($arr, $a, $a);
$query = $this->db->query("SELECT distinct id, piler_id FROM " . VIEW_MESSAGES . " WHERE `id` IN ($q2) AND ( `from` IN ($q) OR `to` IN ($q) )", $arr);
}
if($query->num_rows > 0) {
foreach ($query->rows as $q) {
array_push($result, $q['id']);
array_push($result2, $q['piler_id']);
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
$query = $this->sphx->query("SELECT id FROM " . SPHINX_MAIN_INDEX . " WHERE id IN (" . implode(",", $id) . ")");
}
else {
$arr = array_merge($arr, $a, $a);
$query = $this->db->query("SELECT id FROM `" . VIEW_MESSAGES . "` WHERE `id` IN ($q2) AND ( `from` IN ($q) OR `to` IN ($q) )", $arr);
}
}
return array($result, $result2);
if($query->num_rows > 0) {
foreach ($query->rows as $q) {
if(ENABLE_FOLDER_RESTRICTIONS == 1) {
if(in_array($q['folder'], $_SESSION['folders'])) { array_push($result, $q['id']); }
}
else {
array_push($result, $q['id']);
}
}
}
return $result;
}
@ -566,6 +616,7 @@ class ModelSearchSearch extends Model {
$s = preg_replace("/ OR /", "|", $s);
$s = preg_replace("/(\-)/", " ", $s);
$s = preg_replace("/\'/", '"', $s);
$a = explode(" ", $s);
$s = '';

View File

@ -20,6 +20,7 @@ class ModelUserAuth extends Model {
$_SESSION['realname'] = $query->row['realname'];
$_SESSION['emails'] = $this->model_user_user->get_users_all_email_addresses($query->row['uid']);
$_SESSION['folders'] = $this->model_folder_folder->get_all_folder_ids($query->row['uid']);
AUDIT(ACTION_LOGIN, $username, '', '', 'successful auth against user table');

View File

@ -302,6 +302,7 @@ class ModelUserUser extends Model {
}
$this->update_group_settings((int)$user['uid'], $user['group']);
$this->update_folder_settings((int)$user['uid'], $user['folder']);
return 1;
}
@ -378,6 +379,7 @@ class ModelUserUser extends Model {
}
$this->update_group_settings((int)$user['uid'], $user['group']);
$this->update_folder_settings((int)$user['uid'], $user['folder']);
return 1;
}
@ -413,6 +415,36 @@ class ModelUserUser extends Model {
}
private function update_folder_settings($uid = -1, $folder = '') {
$__g = array();
if($uid <= 0) { return 0; }
$query = $this->db->query("DELETE FROM `" . TABLE_FOLDER_USER . "` WHERE uid=?", array($uid));
$query = $this->db->query("SELECT id, name FROM `" . TABLE_FOLDER . "`");
$folders = array();
foreach ($query->rows as $q) {
$folders[$q['name']] = $q['id'];
}
$folder = explode("\n", $folder);
foreach($folder as $g) {
$g = rtrim($g);
if($g && !isset($__g[$folders[$g]])) {
$query = $this->db->query("INSERT INTO `" . TABLE_FOLDER_USER . "` (id, uid) VALUES(?,?)", array($folders[$g], (int)$uid));
$__g[$folders[$g]] = 1;
}
}
return 1;
}
public function delete_user($uid) {
if(!$this->check_uid($uid)){ return 0; }

View File

@ -1,888 +0,0 @@
// ColorBox v1.3.19 - jQuery lightbox plugin
// (c) 2011 Jack Moore - jacklmoore.com
// License: http://www.opensource.org/licenses/mit-license.php
(function ($, document, window) {
var
// Default settings object.
// See http://jacklmoore.com/colorbox for details.
defaults = {
transition: "elastic",
speed: 300,
width: false,
initialWidth: "600",
innerWidth: false,
maxWidth: false,
height: false,
initialHeight: "450",
innerHeight: false,
maxHeight: false,
scalePhotos: true,
scrolling: true,
inline: false,
html: false,
iframe: false,
fastIframe: true,
photo: false,
href: false,
title: false,
rel: false,
opacity: 0.9,
preloading: true,
current: "image {current} of {total}",
previous: "previous",
next: "next",
close: "close",
open: false,
returnFocus: true,
reposition: true,
loop: true,
slideshow: false,
slideshowAuto: true,
slideshowSpeed: 2500,
slideshowStart: "start slideshow",
slideshowStop: "stop slideshow",
onOpen: false,
onLoad: false,
onComplete: false,
onCleanup: false,
onClosed: false,
overlayClose: true,
escKey: true,
arrowKey: true,
top: false,
bottom: false,
left: false,
right: false,
fixed: false,
data: undefined
},
// Abstracting the HTML and event identifiers for easy rebranding
colorbox = 'colorbox',
prefix = 'cbox',
boxElement = prefix + 'Element',
// Events
event_open = prefix + '_open',
event_load = prefix + '_load',
event_complete = prefix + '_complete',
event_cleanup = prefix + '_cleanup',
event_closed = prefix + '_closed',
event_purge = prefix + '_purge',
// Special Handling for IE
isIE = !$.support.opacity && !$.support.style, // IE7 & IE8
isIE6 = isIE && !window.XMLHttpRequest, // IE6
event_ie6 = prefix + '_IE6',
// Cached jQuery Object Variables
$overlay,
$box,
$wrap,
$content,
$topBorder,
$leftBorder,
$rightBorder,
$bottomBorder,
$related,
$window,
$loaded,
$loadingBay,
$loadingOverlay,
$title,
$current,
$slideshow,
$next,
$prev,
$close,
$groupControls,
// Variables for cached values or use across multiple functions
settings,
interfaceHeight,
interfaceWidth,
loadedHeight,
loadedWidth,
element,
index,
photo,
open,
active,
closing,
loadingTimer,
publicMethod,
div = "div",
init;
// ****************
// HELPER FUNCTIONS
// ****************
// Convience function for creating new jQuery objects
function $tag(tag, id, css) {
var element = document.createElement(tag);
if (id) {
element.id = prefix + id;
}
if (css) {
element.style.cssText = css;
}
return $(element);
}
// Determine the next and previous members in a group.
function getIndex(increment) {
var
max = $related.length,
newIndex = (index + increment) % max;
return (newIndex < 0) ? max + newIndex : newIndex;
}
// Convert '%' and 'px' values to integers
function setSize(size, dimension) {
return Math.round((/%/.test(size) ? ((dimension === 'x' ? $window.width() : $window.height()) / 100) : 1) * parseInt(size, 10));
}
// Checks an href to see if it is a photo.
// There is a force photo option (photo: true) for hrefs that cannot be matched by this regex.
function isImage(url) {
return settings.photo || /\.(gif|png|jpe?g|bmp|ico)((#|\?).*)?$/i.test(url);
}
// Assigns function results to their respective properties
function makeSettings() {
var i;
settings = $.extend({}, $.data(element, colorbox));
for (i in settings) {
if ($.isFunction(settings[i]) && i.slice(0, 2) !== 'on') { // checks to make sure the function isn't one of the callbacks, they will be handled at the appropriate time.
settings[i] = settings[i].call(element);
}
}
settings.rel = settings.rel || element.rel || 'nofollow';
settings.href = settings.href || $(element).attr('href');
settings.title = settings.title || element.title;
if (typeof settings.href === "string") {
settings.href = $.trim(settings.href);
}
}
function trigger(event, callback) {
$.event.trigger(event);
if (callback) {
callback.call(element);
}
}
// Slideshow functionality
function slideshow() {
var
timeOut,
className = prefix + "Slideshow_",
click = "click." + prefix,
start,
stop,
clear;
if (settings.slideshow && $related[1]) {
start = function () {
$slideshow
.text(settings.slideshowStop)
.unbind(click)
.bind(event_complete, function () {
if (settings.loop || $related[index + 1]) {
timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
}
})
.bind(event_load, function () {
clearTimeout(timeOut);
})
.one(click + ' ' + event_cleanup, stop);
$box.removeClass(className + "off").addClass(className + "on");
timeOut = setTimeout(publicMethod.next, settings.slideshowSpeed);
};
stop = function () {
clearTimeout(timeOut);
$slideshow
.text(settings.slideshowStart)
.unbind([event_complete, event_load, event_cleanup, click].join(' '))
.one(click, function () {
publicMethod.next();
start();
});
$box.removeClass(className + "on").addClass(className + "off");
};
if (settings.slideshowAuto) {
start();
} else {
stop();
}
} else {
$box.removeClass(className + "off " + className + "on");
}
}
function launch(target) {
if (!closing) {
element = target;
makeSettings();
$related = $(element);
index = 0;
if (settings.rel !== 'nofollow') {
$related = $('.' + boxElement).filter(function () {
var relRelated = $.data(this, colorbox).rel || this.rel;
return (relRelated === settings.rel);
});
index = $related.index(element);
// Check direct calls to ColorBox.
if (index === -1) {
$related = $related.add(element);
index = $related.length - 1;
}
}
if (!open) {
open = active = true; // Prevents the page-change action from queuing up if the visitor holds down the left or right keys.
$box.show();
if (settings.returnFocus) {
$(element).blur().one(event_closed, function () {
$(this).focus();
});
}
// +settings.opacity avoids a problem in IE when using non-zero-prefixed-string-values, like '.5'
$overlay.css({"opacity": +settings.opacity, "cursor": settings.overlayClose ? "pointer" : "auto"}).show();
// Opens inital empty ColorBox prior to content being loaded.
settings.w = setSize(settings.initialWidth, 'x');
settings.h = setSize(settings.initialHeight, 'y');
publicMethod.position();
if (isIE6) {
$window.bind('resize.' + event_ie6 + ' scroll.' + event_ie6, function () {
$overlay.css({width: $window.width(), height: $window.height(), top: $window.scrollTop(), left: $window.scrollLeft()});
}).trigger('resize.' + event_ie6);
}
trigger(event_open, settings.onOpen);
$groupControls.add($title).hide();
$close.html(settings.close).show();
}
publicMethod.load(true);
}
}
// ColorBox's markup needs to be added to the DOM prior to being called
// so that the browser will go ahead and load the CSS background images.
function appendHTML() {
if (!$box && document.body) {
init = false;
$window = $(window);
$box = $tag(div).attr({id: colorbox, 'class': isIE ? prefix + (isIE6 ? 'IE6' : 'IE') : ''}).hide();
$overlay = $tag(div, "Overlay", isIE6 ? 'position:absolute' : '').hide();
$wrap = $tag(div, "Wrapper");
$content = $tag(div, "Content").append(
$loaded = $tag(div, "LoadedContent", 'width:0; height:0; overflow:hidden'),
$loadingOverlay = $tag(div, "LoadingOverlay").add($tag(div, "LoadingGraphic")),
$title = $tag(div, "Title"),
$current = $tag(div, "Current"),
$next = $tag(div, "Next"),
$prev = $tag(div, "Previous"),
$slideshow = $tag(div, "Slideshow").bind(event_open, slideshow),
$close = $tag(div, "Close")
);
$wrap.append( // The 3x3 Grid that makes up ColorBox
$tag(div).append(
$tag(div, "TopLeft"),
$topBorder = $tag(div, "TopCenter"),
$tag(div, "TopRight")
),
$tag(div, false, 'clear:left').append(
$leftBorder = $tag(div, "MiddleLeft"),
$content,
$rightBorder = $tag(div, "MiddleRight")
),
$tag(div, false, 'clear:left').append(
$tag(div, "BottomLeft"),
$bottomBorder = $tag(div, "BottomCenter"),
$tag(div, "BottomRight")
)
).find('div div').css({'float': 'left'});
$loadingBay = $tag(div, false, 'position:absolute; width:9999px; visibility:hidden; display:none');
$groupControls = $next.add($prev).add($current).add($slideshow);
$(document.body).append($overlay, $box.append($wrap, $loadingBay));
}
}
// Add ColorBox's event bindings
function addBindings() {
if ($box) {
if (!init) {
init = true;
// Cache values needed for size calculations
interfaceHeight = $topBorder.height() + $bottomBorder.height() + $content.outerHeight(true) - $content.height();//Subtraction needed for IE6
interfaceWidth = $leftBorder.width() + $rightBorder.width() + $content.outerWidth(true) - $content.width();
loadedHeight = $loaded.outerHeight(true);
loadedWidth = $loaded.outerWidth(true);
// Setting padding to remove the need to do size conversions during the animation step.
$box.css({"padding-bottom": interfaceHeight, "padding-right": interfaceWidth});
// Anonymous functions here keep the public method from being cached, thereby allowing them to be redefined on the fly.
$next.click(function () {
publicMethod.next();
});
$prev.click(function () {
publicMethod.prev();
});
$close.click(function () {
publicMethod.close();
});
$overlay.click(function () {
if (settings.overlayClose) {
publicMethod.close();
}
});
// Key Bindings
$(document).bind('keydown.' + prefix, function (e) {
var key = e.keyCode;
if (open && settings.escKey && key === 27) {
e.preventDefault();
publicMethod.close();
}
if (open && settings.arrowKey && $related[1]) {
if (key === 37) {
e.preventDefault();
$prev.click();
} else if (key === 39) {
e.preventDefault();
$next.click();
}
}
});
$('.' + boxElement, document).live('click', function (e) {
// ignore non-left-mouse-clicks and clicks modified with ctrl / command, shift, or alt.
// See: http://jacklmoore.com/notes/click-events/
if (!(e.which > 1 || e.shiftKey || e.altKey || e.metaKey)) {
e.preventDefault();
launch(this);
}
});
}
return true;
}
return false;
}
// Don't do anything if ColorBox already exists.
if ($.colorbox) {
return;
}
// Append the HTML when the DOM loads
$(appendHTML);
// ****************
// PUBLIC FUNCTIONS
// Usage format: $.fn.colorbox.close();
// Usage from within an iframe: parent.$.fn.colorbox.close();
// ****************
publicMethod = $.fn[colorbox] = $[colorbox] = function (options, callback) {
var $this = this;
options = options || {};
appendHTML();
if (addBindings()) {
if (!$this[0]) {
if ($this.selector) { // if a selector was given and it didn't match any elements, go ahead and exit.
return $this;
}
// if no selector was given (ie. $.colorbox()), create a temporary element to work with
$this = $('<a/>');
options.open = true; // assume an immediate open
}
if (callback) {
options.onComplete = callback;
}
$this.each(function () {
$.data(this, colorbox, $.extend({}, $.data(this, colorbox) || defaults, options));
}).addClass(boxElement);
if (($.isFunction(options.open) && options.open.call($this)) || options.open) {
launch($this[0]);
}
}
return $this;
};
publicMethod.position = function (speed, loadedCallback) {
var
top = 0,
left = 0,
offset = $box.offset(),
scrollTop = $window.scrollTop(),
scrollLeft = $window.scrollLeft();
$window.unbind('resize.' + prefix);
// remove the modal so that it doesn't influence the document width/height
$box.css({top: -9e4, left: -9e4});
if (settings.fixed && !isIE6) {
offset.top -= scrollTop;
offset.left -= scrollLeft;
$box.css({position: 'fixed'});
} else {
top = scrollTop;
left = scrollLeft;
$box.css({position: 'absolute'});
}
// keeps the top and left positions within the browser's viewport.
if (settings.right !== false) {
left += Math.max($window.width() - settings.w - loadedWidth - interfaceWidth - setSize(settings.right, 'x'), 0);
} else if (settings.left !== false) {
left += setSize(settings.left, 'x');
} else {
left += Math.round(Math.max($window.width() - settings.w - loadedWidth - interfaceWidth, 0) / 2);
}
if (settings.bottom !== false) {
top += Math.max($window.height() - settings.h - loadedHeight - interfaceHeight - setSize(settings.bottom, 'y'), 0);
} else if (settings.top !== false) {
top += setSize(settings.top, 'y');
} else {
top += Math.round(Math.max($window.height() - settings.h - loadedHeight - interfaceHeight, 0) / 2);
}
$box.css({top: offset.top, left: offset.left});
// setting the speed to 0 to reduce the delay between same-sized content.
speed = ($box.width() === settings.w + loadedWidth && $box.height() === settings.h + loadedHeight) ? 0 : speed || 0;
// this gives the wrapper plenty of breathing room so it's floated contents can move around smoothly,
// but it has to be shrank down around the size of div#colorbox when it's done. If not,
// it can invoke an obscure IE bug when using iframes.
$wrap[0].style.width = $wrap[0].style.height = "9999px";
function modalDimensions(that) {
$topBorder[0].style.width = $bottomBorder[0].style.width = $content[0].style.width = that.style.width;
$content[0].style.height = $leftBorder[0].style.height = $rightBorder[0].style.height = that.style.height;
}
$box.dequeue().animate({width: settings.w + loadedWidth, height: settings.h + loadedHeight, top: top, left: left}, {
duration: speed,
complete: function () {
modalDimensions(this);
active = false;
// shrink the wrapper down to exactly the size of colorbox to avoid a bug in IE's iframe implementation.
$wrap[0].style.width = (settings.w + loadedWidth + interfaceWidth) + "px";
$wrap[0].style.height = (settings.h + loadedHeight + interfaceHeight) + "px";
if (settings.reposition) {
setTimeout(function () { // small delay before binding onresize due to an IE8 bug.
$window.bind('resize.' + prefix, publicMethod.position);
}, 1);
}
if (loadedCallback) {
loadedCallback();
}
},
step: function () {
modalDimensions(this);
}
});
};
publicMethod.resize = function (options) {
if (open) {
options = options || {};
if (options.width) {
settings.w = setSize(options.width, 'x') - loadedWidth - interfaceWidth;
}
if (options.innerWidth) {
settings.w = setSize(options.innerWidth, 'x');
}
$loaded.css({width: settings.w});
if (options.height) {
settings.h = setSize(options.height, 'y') - loadedHeight - interfaceHeight;
}
if (options.innerHeight) {
settings.h = setSize(options.innerHeight, 'y');
}
if (!options.innerHeight && !options.height) {
$loaded.css({height: "auto"});
settings.h = $loaded.height();
}
$loaded.css({height: settings.h});
publicMethod.position(settings.transition === "none" ? 0 : settings.speed);
}
};
publicMethod.prep = function (object) {
if (!open) {
return;
}
var callback, speed = settings.transition === "none" ? 0 : settings.speed;
$loaded.remove();
$loaded = $tag(div, 'LoadedContent').append(object);
function getWidth() {
settings.w = settings.w || $loaded.width();
settings.w = settings.mw && settings.mw < settings.w ? settings.mw : settings.w;
return settings.w;
}
function getHeight() {
settings.h = settings.h || $loaded.height();
settings.h = settings.mh && settings.mh < settings.h ? settings.mh : settings.h;
return settings.h;
}
$loaded.hide()
.appendTo($loadingBay.show())// content has to be appended to the DOM for accurate size calculations.
.css({width: getWidth(), overflow: settings.scrolling ? 'auto' : 'hidden'})
.css({height: getHeight()})// sets the height independently from the width in case the new width influences the value of height.
.prependTo($content);
$loadingBay.hide();
// floating the IMG removes the bottom line-height and fixed a problem where IE miscalculates the width of the parent element as 100% of the document width.
//$(photo).css({'float': 'none', marginLeft: 'auto', marginRight: 'auto'});
$(photo).css({'float': 'none'});
// Hides SELECT elements in IE6 because they would otherwise sit on top of the overlay.
if (isIE6) {
$('select').not($box.find('select')).filter(function () {
return this.style.visibility !== 'hidden';
}).css({'visibility': 'hidden'}).one(event_cleanup, function () {
this.style.visibility = 'inherit';
});
}
callback = function () {
var preload, i, total = $related.length, iframe, frameBorder = 'frameBorder', allowTransparency = 'allowTransparency', complete, src, img;
if (!open) {
return;
}
function removeFilter() {
if (isIE) {
$box[0].style.removeAttribute('filter');
}
}
complete = function () {
clearTimeout(loadingTimer);
$loadingOverlay.hide();
trigger(event_complete, settings.onComplete);
};
if (isIE) {
//This fadeIn helps the bicubic resampling to kick-in.
if (photo) {
$loaded.fadeIn(100);
}
}
$title.html(settings.title).add($loaded).show();
if (total > 1) { // handle grouping
if (typeof settings.current === "string") {
$current.html(settings.current.replace('{current}', index + 1).replace('{total}', total)).show();
}
$next[(settings.loop || index < total - 1) ? "show" : "hide"]().html(settings.next);
$prev[(settings.loop || index) ? "show" : "hide"]().html(settings.previous);
if (settings.slideshow) {
$slideshow.show();
}
// Preloads images within a rel group
if (settings.preloading) {
preload = [
getIndex(-1),
getIndex(1)
];
while (i = $related[preload.pop()]) {
src = $.data(i, colorbox).href || i.href;
if ($.isFunction(src)) {
src = src.call(i);
}
if (isImage(src)) {
img = new Image();
img.src = src;
}
}
}
} else {
$groupControls.hide();
}
if (settings.iframe) {
iframe = $tag('iframe')[0];
if (frameBorder in iframe) {
iframe[frameBorder] = 0;
}
if (allowTransparency in iframe) {
iframe[allowTransparency] = "true";
}
// give the iframe a unique name to prevent caching
iframe.name = prefix + (+new Date());
if (settings.fastIframe) {
complete();
} else {
$(iframe).one('load', complete);
}
iframe.src = settings.href;
if (!settings.scrolling) {
iframe.scrolling = "no";
}
$(iframe).addClass(prefix + 'Iframe').appendTo($loaded).one(event_purge, function () {
iframe.src = "//about:blank";
});
} else {
complete();
}
if (settings.transition === 'fade') {
$box.fadeTo(speed, 1, removeFilter);
} else {
removeFilter();
}
};
if (settings.transition === 'fade') {
$box.fadeTo(speed, 0, function () {
publicMethod.position(0, callback);
});
} else {
publicMethod.position(speed, callback);
}
};
publicMethod.load = function (launched) {
var href, setResize, prep = publicMethod.prep;
active = true;
photo = false;
element = $related[index];
if (!launched) {
makeSettings();
}
trigger(event_purge);
trigger(event_load, settings.onLoad);
settings.h = settings.height ?
setSize(settings.height, 'y') - loadedHeight - interfaceHeight :
settings.innerHeight && setSize(settings.innerHeight, 'y');
settings.w = settings.width ?
setSize(settings.width, 'x') - loadedWidth - interfaceWidth :
settings.innerWidth && setSize(settings.innerWidth, 'x');
// Sets the minimum dimensions for use in image scaling
settings.mw = settings.w;
settings.mh = settings.h;
// Re-evaluate the minimum width and height based on maxWidth and maxHeight values.
// If the width or height exceed the maxWidth or maxHeight, use the maximum values instead.
if (settings.maxWidth) {
settings.mw = setSize(settings.maxWidth, 'x') - loadedWidth - interfaceWidth;
settings.mw = settings.w && settings.w < settings.mw ? settings.w : settings.mw;
}
if (settings.maxHeight) {
settings.mh = setSize(settings.maxHeight, 'y') - loadedHeight - interfaceHeight;
settings.mh = settings.h && settings.h < settings.mh ? settings.h : settings.mh;
}
href = settings.href;
loadingTimer = setTimeout(function () {
$loadingOverlay.show();
}, 100);
if (settings.inline) {
// Inserts an empty placeholder where inline content is being pulled from.
// An event is bound to put inline content back when ColorBox closes or loads new content.
$tag(div).hide().insertBefore($(href)[0]).one(event_purge, function () {
$(this).replaceWith($loaded.children());
});
prep($(href));
} else if (settings.iframe) {
// IFrame element won't be added to the DOM until it is ready to be displayed,
// to avoid problems with DOM-ready JS that might be trying to run in that iframe.
prep(" ");
} else if (settings.html) {
prep(settings.html);
} else if (isImage(href)) {
$(photo = new Image())
.addClass(prefix + 'Photo')
.error(function () {
settings.title = false;
prep($tag(div, 'Error').text('This image could not be loaded'));
})
.load(function () {
var percent;
photo.onload = null; //stops animated gifs from firing the onload repeatedly.
if (settings.scalePhotos) {
setResize = function () {
photo.height -= photo.height * percent;
photo.width -= photo.width * percent;
};
if (settings.mw && photo.width > settings.mw) {
percent = (photo.width - settings.mw) / photo.width;
setResize();
}
if (settings.mh && photo.height > settings.mh) {
percent = (photo.height - settings.mh) / photo.height;
setResize();
}
}
if (settings.h) {
photo.style.marginTop = Math.max(settings.h - photo.height, 0) / 2 + 'px';
}
if ($related[1] && (settings.loop || $related[index + 1])) {
photo.style.cursor = 'pointer';
photo.onclick = function () {
publicMethod.next();
};
}
if (isIE) {
photo.style.msInterpolationMode = 'bicubic';
}
setTimeout(function () { // A pause because Chrome will sometimes report a 0 by 0 size otherwise.
prep(photo);
}, 1);
});
setTimeout(function () { // A pause because Opera 10.6+ will sometimes not run the onload function otherwise.
photo.src = href;
}, 1);
} else if (href) {
$loadingBay.load(href, settings.data, function (data, status, xhr) {
prep(status === 'error' ? $tag(div, 'Error').text('Request unsuccessful: ' + xhr.statusText) : $(this).contents());
});
}
};
// Navigates to the next page/image in a set.
publicMethod.next = function () {
if (!active && $related[1] && (settings.loop || $related[index + 1])) {
index = getIndex(1);
publicMethod.load();
}
};
publicMethod.prev = function () {
if (!active && $related[1] && (settings.loop || index)) {
index = getIndex(-1);
publicMethod.load();
}
};
// Note: to use this within an iframe use the following format: parent.$.fn.colorbox.close();
publicMethod.close = function () {
if (open && !closing) {
closing = true;
open = false;
trigger(event_cleanup, settings.onCleanup);
$window.unbind('.' + prefix + ' .' + event_ie6);
$overlay.fadeTo(200, 0);
$box.stop().fadeTo(300, 0, function () {
$box.add($overlay).css({'opacity': 1, cursor: 'auto'}).hide();
trigger(event_purge);
$loaded.remove();
setTimeout(function () {
closing = false;
trigger(event_closed, settings.onClosed);
}, 1);
});
}
};
// Removes changes ColorBox made to the document, but does not remove the plugin
// from jQuery.
publicMethod.remove = function () {
$([]).add($box).add($overlay).remove();
$box = null;
$('.' + boxElement)
.removeData(colorbox)
.removeClass(boxElement)
.die();
};
// A method for fetching the current element ColorBox is referencing.
// returns a jQuery object.
publicMethod.element = function () {
return $(element);
};
publicMethod.settings = defaults;
}(jQuery, document, this));

View File

@ -1,154 +0,0 @@
/*!
* jQuery JavaScript Library v1.4.2
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Sat Feb 13 22:33:48 2010 -0500
*/
(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o<i;o++)e(a[o],b,f?d.call(a[o],o,e(a[o],b)):d,j);return a}return i?
e(a[0],b):w}function J(){return(new Date).getTime()}function Y(){return false}function Z(){return true}function na(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function oa(a){var b,d=[],f=[],e=arguments,j,i,o,k,n,r;i=c.data(this,"events");if(!(a.liveFired===this||!i||!i.live||a.button&&a.type==="click")){a.liveFired=this;var u=i.live.slice(0);for(k=0;k<u.length;k++){i=u[k];i.origType.replace(O,"")===a.type?f.push(i.selector):u.splice(k--,1)}j=c(a.target).closest(f,a.currentTarget);n=0;for(r=
j.length;n<r;n++)for(k=0;k<u.length;k++){i=u[k];if(j[n].selector===i.selector){o=j[n].elem;f=null;if(i.preType==="mouseenter"||i.preType==="mouseleave")f=c(a.relatedTarget).closest(i.selector)[0];if(!f||f!==o)d.push({elem:o,handleObj:i})}}n=0;for(r=d.length;n<r;n++){j=d[n];a.currentTarget=j.elem;a.data=j.handleObj.data;a.handleObj=j.handleObj;if(j.handleObj.origHandler.apply(j.elem,e)===false){b=false;break}}return b}}function pa(a,b){return"live."+(a&&a!=="*"?a+".":"")+b.replace(/\./g,"`").replace(/ /g,
"&")}function qa(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function ra(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var f=c.data(a[d++]),e=c.data(this,f);if(f=f&&f.events){delete e.handle;e.events={};for(var j in f)for(var i in f[j])c.event.add(this,j,f[j][i],f[j][i].data)}}})}function sa(a,b,d){var f,e,j;b=b&&b[0]?b[0].ownerDocument||b[0]:s;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===s&&!ta.test(a[0])&&(c.support.checkClone||!ua.test(a[0]))){e=
true;if(j=c.fragments[a[0]])if(j!==1)f=j}if(!f){f=b.createDocumentFragment();c.clean(a,b,f,d)}if(e)c.fragments[a[0]]=j?f:1;return{fragment:f,cacheable:e}}function K(a,b){var d={};c.each(va.concat.apply([],va.slice(0,b)),function(){d[this]=a});return d}function wa(a){return"scrollTo"in a&&a.document?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var c=function(a,b){return new c.fn.init(a,b)},Ra=A.jQuery,Sa=A.$,s=A.document,T,Ta=/^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b<d;b++)if((e=arguments[b])!=null)for(j in e){i=a[j];o=e[j];if(a!==o)if(f&&o&&(c.isPlainObject(o)||c.isArray(o))){i=i&&(c.isPlainObject(i)||
c.isArray(i))?i:c.isArray(o)?[]:{};a[j]=c.extend(f,i,o)}else if(o!==w)a[j]=o}return a};c.extend({noConflict:function(a){A.$=Sa;if(a)A.jQuery=Ra;return c},isReady:false,ready:function(){if(!c.isReady){if(!s.body)return setTimeout(c.ready,13);c.isReady=true;if(Q){for(var a,b=0;a=Q[b++];)a.call(s,c);Q=null}c.fn.triggerHandler&&c(s).triggerHandler("ready")}},bindReady:function(){if(!xa){xa=true;if(s.readyState==="complete")return c.ready();if(s.addEventListener){s.addEventListener("DOMContentLoaded",
L,false);A.addEventListener("load",c.ready,false)}else if(s.attachEvent){s.attachEvent("onreadystatechange",L);A.attachEvent("onload",c.ready);var a=false;try{a=A.frameElement==null}catch(b){}s.documentElement.doScroll&&a&&ma()}}},isFunction:function(a){return $.call(a)==="[object Function]"},isArray:function(a){return $.call(a)==="[object Array]"},isPlainObject:function(a){if(!a||$.call(a)!=="[object Object]"||a.nodeType||a.setInterval)return false;if(a.constructor&&!aa.call(a,"constructor")&&!aa.call(a.constructor.prototype,
"isPrototypeOf"))return false;var b;for(b in a);return b===w||aa.call(a,b)},isEmptyObject:function(a){for(var b in a)return false;return true},error:function(a){throw a;},parseJSON:function(a){if(typeof a!=="string"||!a)return null;a=c.trim(a);if(/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,"@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,"]").replace(/(?:^|:|,)(?:\s*\[)+/g,"")))return A.JSON&&A.JSON.parse?A.JSON.parse(a):(new Function("return "+
a))();else c.error("Invalid JSON: "+a)},noop:function(){},globalEval:function(a){if(a&&Va.test(a)){var b=s.getElementsByTagName("head")[0]||s.documentElement,d=s.createElement("script");d.type="text/javascript";if(c.support.scriptEval)d.appendChild(s.createTextNode(a));else d.text=a;b.insertBefore(d,b.firstChild);b.removeChild(d)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,b,d){var f,e=0,j=a.length,i=j===w||c.isFunction(a);if(d)if(i)for(f in a){if(b.apply(a[f],
d)===false)break}else for(;e<j;){if(b.apply(a[e++],d)===false)break}else if(i)for(f in a){if(b.call(a[f],f,a[f])===false)break}else for(d=a[0];e<j&&b.call(d,e,d)!==false;d=a[++e]);return a},trim:function(a){return(a||"").replace(Wa,"")},makeArray:function(a,b){b=b||[];if(a!=null)a.length==null||typeof a==="string"||c.isFunction(a)||typeof a!=="function"&&a.setInterval?ba.call(b,a):c.merge(b,a);return b},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var d=0,f=b.length;d<f;d++)if(b[d]===
a)return d;return-1},merge:function(a,b){var d=a.length,f=0;if(typeof b.length==="number")for(var e=b.length;f<e;f++)a[d++]=b[f];else for(;b[f]!==w;)a[d++]=b[f++];a.length=d;return a},grep:function(a,b,d){for(var f=[],e=0,j=a.length;e<j;e++)!d!==!b(a[e],e)&&f.push(a[e]);return f},map:function(a,b,d){for(var f=[],e,j=0,i=a.length;j<i;j++){e=b(a[j],j,d);if(e!=null)f[f.length]=e}return f.concat.apply([],f)},guid:1,proxy:function(a,b,d){if(arguments.length===2)if(typeof b==="string"){d=a;a=d[b];b=w}else if(b&&
!c.isFunction(b)){d=b;b=w}if(!b&&a)b=function(){return a.apply(d||this,arguments)};if(a)b.guid=a.guid=a.guid||b.guid||c.guid++;return b},uaMatch:function(a){a=a.toLowerCase();a=/(webkit)[ \/]([\w.]+)/.exec(a)||/(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a)||/(msie) ([\w.]+)/.exec(a)||!/compatible/.test(a)&&/(mozilla)(?:.*? rv:([\w.]+))?/.exec(a)||[];return{browser:a[1]||"",version:a[2]||"0"}},browser:{}});P=c.uaMatch(P);if(P.browser){c.browser[P.browser]=true;c.browser.version=P.version}if(c.browser.webkit)c.browser.safari=
true;if(ya)c.inArray=function(a,b){return ya.call(b,a)};T=c(s);if(s.addEventListener)L=function(){s.removeEventListener("DOMContentLoaded",L,false);c.ready()};else if(s.attachEvent)L=function(){if(s.readyState==="complete"){s.detachEvent("onreadystatechange",L);c.ready()}};(function(){c.support={};var a=s.documentElement,b=s.createElement("script"),d=s.createElement("div"),f="script"+J();d.style.display="none";d.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1)if(e.className){for(var j=" "+e.className+" ",
i=e.className,o=0,k=b.length;o<k;o++)if(j.indexOf(" "+b[o]+" ")<0)i+=" "+b[o];e.className=c.trim(i)}else e.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(k){var n=c(this);n.removeClass(a.call(this,k,n.attr("class")))});if(a&&typeof a==="string"||a===w)for(var b=(a||"").split(ca),d=0,f=this.length;d<f;d++){var e=this[d];if(e.nodeType===1&&e.className)if(a){for(var j=(" "+e.className+" ").replace(Aa," "),i=0,o=b.length;i<o;i++)j=j.replace(" "+b[i]+" ",
" ");e.className=c.trim(j)}else e.className=""}return this},toggleClass:function(a,b){var d=typeof a,f=typeof b==="boolean";if(c.isFunction(a))return this.each(function(e){var j=c(this);j.toggleClass(a.call(this,e,j.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var e,j=0,i=c(this),o=b,k=a.split(ca);e=k[j++];){o=f?o:!i.hasClass(e);i[o?"addClass":"removeClass"](e)}else if(d==="undefined"||d==="boolean"){this.className&&c.data(this,"__className__",this.className);this.className=
this.className||a===false?"":c.data(this,"__className__")||""}})},hasClass:function(a){a=" "+a+" ";for(var b=0,d=this.length;b<d;b++)if((" "+this[b].className+" ").replace(Aa," ").indexOf(a)>-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j<d;j++){var i=
e[j];if(i.selected){a=c(i).val();if(b)return a;f.push(a)}}return f}if(Ba.test(b.type)&&!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Za,"")}return w}var o=c.isFunction(a);return this.each(function(k){var n=c(this),r=a;if(this.nodeType===1){if(o)r=a.call(this,k,n.val());if(typeof r==="number")r+="";if(c.isArray(r)&&Ba.test(this.type))this.checked=c.inArray(n.val(),r)>=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B<r.length;B++){u=r[B];if(d.guid===u.guid){if(i||k.test(u.namespace)){f==null&&r.splice(B--,1);n.remove&&n.remove.call(a,u)}if(f!=
null)break}}if(r.length===0||f!=null&&r.length===1){if(!n.teardown||n.teardown.call(a,o)===false)Ca(a,e,z.handle);delete C[e]}}else for(var B=0;B<r.length;B++){u=r[B];if(i||k.test(u.namespace)){c.event.remove(a,n,u.handler,B);r.splice(B--,1)}}}if(c.isEmptyObject(C)){if(b=z.handle)b.elem=null;delete z.events;delete z.handle;c.isEmptyObject(z)&&c.removeData(a)}}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=
e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e<j;e++){var i=d[e];if(b||f.test(i.namespace)){a.handler=i.handler;a.data=i.data;a.handleObj=i;i=i.handler.apply(this,arguments);if(i!==w){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||s;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=s.documentElement;d=s.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop||
d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==w)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a){c.event.add(this,a.origType,c.extend({},a,{handler:oa}))},remove:function(a){var b=true,d=a.origType.replace(O,"");c.each(c.data(this,
"events").live||[],function(){if(d===this.origType.replace(O,""))return b=false});b&&c.event.remove(this,a.origType,oa)}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};var Ca=s.removeEventListener?function(a,b,d){a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent("on"+b,d)};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=
a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,
isImmediatePropagationStopped:Y};var Da=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},Ea=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ea:Da,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ea:Da)}}});if(!c.support.submitBubbles)c.event.special.submit=
{setup:function(){if(this.nodeName.toLowerCase()!=="form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length)return na("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13)return na("submit",this,arguments)})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};
if(!c.support.changeBubbles){var da=/textarea|input|select/i,ea,Fa=function(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j<o;j++)c.event.add(this[j],d,i,f)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&
!a.preventDefault)for(var d in a)this.unbind(d,a[d]);else{d=0;for(var f=this.length;d<f;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,f){return this.live(b,d,f,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},
toggle:function(a){for(var b=arguments,d=1;d<b.length;)c.proxy(a,b[d++]);return this.click(c.proxy(a,function(f){var e=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,e+1);f.preventDefault();return b[e].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Ga={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,f,e,j){var i,o=0,k,n,r=j||this.selector,
u=j?this:c(this.context);if(c.isFunction(f)){e=f;f=w}for(d=(d||"").split(" ");(i=d[o++])!=null;){j=O.exec(i);k="";if(j){k=j[0];i=i.replace(O,"")}if(i==="hover")d.push("mouseenter"+k,"mouseleave"+k);else{n=i;if(i==="focus"||i==="blur"){d.push(Ga[i]+k);i+=k}else i=(Ga[i]||i)+k;b==="live"?u.each(function(){c.event.add(this,pa(i,r),{data:f,selector:r,handler:e,origType:i,origHandler:e,preType:n})}):u.unbind(pa(i,r),e)}}return this}});c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),
function(a,b){c.fn[b]=function(d){return d?this.bind(b,d):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});A.attachEvent&&!A.addEventListener&&A.attachEvent("onunload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}});(function(){function a(g){for(var h="",l,m=0;g[m];m++){l=g[m];if(l.nodeType===3||l.nodeType===4)h+=l.nodeValue;else if(l.nodeType!==8)h+=a(l.childNodes)}return h}function b(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];
if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1&&!p){t.sizcache=l;t.sizset=q}if(t.nodeName.toLowerCase()===h){y=t;break}t=t[g]}m[q]=y}}}function d(g,h,l,m,q,p){q=0;for(var v=m.length;q<v;q++){var t=m[q];if(t){t=t[g];for(var y=false;t;){if(t.sizcache===l){y=m[t.sizset];break}if(t.nodeType===1){if(!p){t.sizcache=l;t.sizset=q}if(typeof h!=="string"){if(t===h){y=true;break}}else if(k.filter(h,[t]).length>0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h<g.length;h++)g[h]===g[h-1]&&g.splice(h--,1)}return g};k.matches=function(g,h){return k(g,null,null,h)};k.find=function(g,h,l){var m,q;if(!g)return[];
for(var p=0,v=n.order.length;p<v;p++){var t=n.order[p];if(q=n.leftMatch[t].exec(g)){var y=q[1];q.splice(1,1);if(y.substr(y.length-1)!=="\\"){q[1]=(q[1]||"").replace(/\\/g,"");m=n.find[t](q,h,l);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=h.getElementsByTagName("*"));return{set:m,expr:g}};k.filter=function(g,h,l,m){for(var q=g,p=[],v=h,t,y,S=h&&h[0]&&x(h[0]);g&&h.length;){for(var H in n.filter)if((t=n.leftMatch[H].exec(g))!=null&&t[2]){var M=n.filter[H],I,D;D=t[1];y=false;t.splice(1,1);if(D.substr(D.length-
1)!=="\\"){if(v===p)p=[];if(n.preFilter[H])if(t=n.preFilter[H](t,v,l,p,m,S)){if(t===true)continue}else y=I=true;if(t)for(var U=0;(D=v[U])!=null;U++)if(D){I=M(D,t,U,v);var Ha=m^!!I;if(l&&I!=null)if(Ha)y=true;else v[U]=false;else if(Ha){p.push(D);y=true}}if(I!==w){l||(v=p);g=g.replace(n.match[H],"");if(!y)return[];break}}}if(g===q)if(y==null)k.error(g);else break;q=g}return v};k.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
CLASS:/\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(g){return g.getAttribute("href")}},
relative:{"+":function(g,h){var l=typeof h==="string",m=l&&!/\W/.test(h);l=l&&!m;if(m)h=h.toLowerCase();m=0;for(var q=g.length,p;m<q;m++)if(p=g[m]){for(;(p=p.previousSibling)&&p.nodeType!==1;);g[m]=l||p&&p.nodeName.toLowerCase()===h?p||false:p===h}l&&k.filter(h,g,true)},">":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m<q;m++){var p=g[m];if(p){l=p.parentNode;g[m]=l.nodeName.toLowerCase()===h?l:false}}}else{m=0;for(q=g.length;m<q;m++)if(p=g[m])g[m]=
l?p.parentNode:p.parentNode===h;l&&k.filter(h,g,true)}},"":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("parentNode",h,m,g,p,l)},"~":function(g,h,l){var m=e++,q=d;if(typeof h==="string"&&!/\W/.test(h)){var p=h=h.toLowerCase();q=b}q("previousSibling",h,m,g,p,l)}},find:{ID:function(g,h,l){if(typeof h.getElementById!=="undefined"&&!l)return(g=h.getElementById(g[1]))?[g]:[]},NAME:function(g,h){if(typeof h.getElementsByName!=="undefined"){var l=[];
h=h.getElementsByName(g[1]);for(var m=0,q=h.length;m<q;m++)h[m].getAttribute("name")===g[1]&&l.push(h[m]);return l.length===0?null:l}},TAG:function(g,h){return h.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,h,l,m,q,p){g=" "+g[1].replace(/\\/g,"")+" ";if(p)return g;p=0;for(var v;(v=h[p])!=null;p++)if(v)if(q^(v.className&&(" "+v.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return h<l[3]-0},gt:function(g,h,l){return h>l[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
h[3];l=0;for(m=h.length;l<m;l++)if(h[l]===g)return false;return true}else k.error("Syntax error, unrecognized expression: "+q)},CHILD:function(g,h){var l=h[1],m=g;switch(l){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(l==="first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":l=h[2];var q=h[3];if(l===1&&q===0)return true;h=h[0];var p=g.parentNode;if(p&&(p.sizcache!==h||!g.nodeIndex)){var v=0;for(m=p.firstChild;m;m=
m.nextSibling)if(m.nodeType===1)m.nodeIndex=++v;p.sizcache=h}g=g.nodeIndex-q;return l===0?g===0:g%l===0&&g/l>=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l<m;l++)h.push(g[l]);else for(l=0;g[l];l++)h.push(g[l]);return h}}var B;if(s.documentElement.compareDocumentPosition)B=function(g,h){if(!g.compareDocumentPosition||
!h.compareDocumentPosition){if(g==h)i=true;return g.compareDocumentPosition?-1:1}g=g.compareDocumentPosition(h)&4?-1:g===h?0:1;if(g===0)i=true;return g};else if("sourceIndex"in s.documentElement)B=function(g,h){if(!g.sourceIndex||!h.sourceIndex){if(g==h)i=true;return g.sourceIndex?-1:1}g=g.sourceIndex-h.sourceIndex;if(g===0)i=true;return g};else if(s.createRange)B=function(g,h){if(!g.ownerDocument||!h.ownerDocument){if(g==h)i=true;return g.ownerDocument?-1:1}var l=g.ownerDocument.createRange(),m=
h.ownerDocument.createRange();l.setStart(g,0);l.setEnd(g,0);m.setStart(h,0);m.setEnd(h,0);g=l.compareBoundaryPoints(Range.START_TO_END,m);if(g===0)i=true;return g};(function(){var g=s.createElement("div"),h="script"+(new Date).getTime();g.innerHTML="<a name='"+h+"'/>";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML="<a href='#'></a>";
if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="<p class='TEST'></p>";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
(function(){var g=s.createElement("div");g.innerHTML="<div class='test e'></div><div class='test'></div>";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q<p;q++)k(g,h[q],l);return k.filter(m,l)};c.find=k;c.expr=k.selectors;c.expr[":"]=c.expr.filters;c.unique=k.uniqueSort;c.text=a;c.isXMLDoc=x;c.contains=E})();var eb=/Until$/,fb=/^(?:parents|prevUntil|prevAll)/,
gb=/,/;R=Array.prototype.slice;var Ia=function(a,b,d){if(c.isFunction(b))return c.grep(a,function(e,j){return!!b.call(e,j,e)===d});else if(b.nodeType)return c.grep(a,function(e){return e===b===d});else if(typeof b==="string"){var f=c.grep(a,function(e){return e.nodeType===1});if(Ua.test(b))return c.filter(b,f,!d);else b=c.filter(b,f)}return c.grep(a,function(e){return c.inArray(e,b)>=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f<e;f++){d=b.length;
c.find(a,this[f],b);if(f>0)for(var j=d;j<b.length;j++)for(var i=0;i<d;i++)if(b[i]===b[j]){b.splice(j--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,f=b.length;d<f;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(Ia(this,a,false),"not",a)},filter:function(a){return this.pushStack(Ia(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
{},i;if(f&&a.length){e=0;for(var o=a.length;e<o;e++){i=a[e];j[i]||(j[i]=c.expr.match.POS.test(i)?c(i,b||this.context):i)}for(;f&&f.ownerDocument&&f!==b;){for(i in j){e=j[i];if(e.jquery?e.index(f)>-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/<tbody/i,jb=/<|&#?\w+;/,ta=/<script|<object|<embed|<option|<style/i,ua=/checked\s*(?:[^=]|=\s*.checked.)/i,Ma=function(a,b,d){return hb.test(d)?
a:b+"></"+d+">"},F={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div<div>","</div>"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b<d;b++)if(this[b].nodeType===1){c.cleanData(this[b].getElementsByTagName("*"));this[b].innerHTML=a}}catch(f){this.empty().append(a)}}else c.isFunction(a)?this.each(function(e){var j=c(this),i=j.html();j.empty().append(function(){return a.call(this,e,i)})}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&
this[0].parentNode){if(c.isFunction(a))return this.each(function(b){var d=c(this),f=d.html();d.replaceWith(a.call(this,b,f))});if(typeof a!=="string")a=c(a).detach();return this.each(function(){var b=this.nextSibling,d=this.parentNode;c(this).remove();b?c(b).before(a):c(d).append(a)})}else return this.pushStack(c(c.isFunction(a)?a():a),"replaceWith",a)},detach:function(a){return this.remove(a,true)},domManip:function(a,b,d){function f(u){return c.nodeName(u,"table")?u.getElementsByTagName("tbody")[0]||
u.appendChild(u.ownerDocument.createElement("tbody")):u}var e,j,i=a[0],o=[],k;if(!c.support.checkClone&&arguments.length===3&&typeof i==="string"&&ua.test(i))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(i))return this.each(function(u){var z=c(this);a[0]=i.call(this,u,b?z.html():w);z.domManip(a,b,d)});if(this[0]){e=i&&i.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:sa(a,this,o);k=e.fragment;if(j=k.childNodes.length===
1?(k=k.firstChild):k.firstChild){b=b&&c.nodeName(j,"tr");for(var n=0,r=this.length;n<r;n++)d.call(b?f(this[n],j):this[n],n>0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
return this}else{e=0;for(var j=d.length;e<j;e++){var i=(e>0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]==="<table>"&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/<script(.|\s)*?\/script>/gi,ub=/select|textarea/i,vb=/color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,N=/=\?(&|$)/,ka=/\?/,wb=/(\?|&)_=.*?(&|$)/,xb=/^(\w+:)?\/\/([^\/?#]+)/,yb=/%20/g,zb=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!==
"string")return zb.call(this,a);else if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var e=a.slice(f,a.length);a=a.slice(0,f)}f="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);f="POST"}var j=this;c.ajax({url:a,type:f,dataType:"html",data:b,complete:function(i,o){if(o==="success"||o==="notmodified")j.html(e?c("<div />").append(i.responseText.replace(tb,"")).find(e):i.responseText);d&&j.each(d,[i.responseText,o,i])}});return this},
serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||ub.test(this.nodeName)||vb.test(this.type))}).map(function(a,b){a=c(this).val();return a==null?null:c.isArray(a)?c.map(a,function(d){return{name:b.name,value:d}}):{name:b.name,value:a}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),
function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:f})},getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,f){if(c.isFunction(b)){f=f||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:f})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,
global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:A.XMLHttpRequest&&(A.location.protocol!=="file:"||!A.ActiveXObject)?function(){return new A.XMLHttpRequest}:function(){try{return new A.ActiveXObject("Microsoft.XMLHTTP")}catch(a){}},accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},etag:{},ajax:function(a){function b(){e.success&&
e.success.call(k,o,i,x);e.global&&f("ajaxSuccess",[x,e])}function d(){e.complete&&e.complete.call(k,x,i);e.global&&f("ajaxComplete",[x,e]);e.global&&!--c.active&&c.event.trigger("ajaxStop")}function f(q,p){(e.context?c(e.context):c.event).trigger(q,p)}var e=c.extend(true,{},c.ajaxSettings,a),j,i,o,k=a&&a.context||e,n=e.type.toUpperCase();if(e.data&&e.processData&&typeof e.data!=="string")e.data=c.param(e.data,e.traditional);if(e.dataType==="jsonp"){if(n==="GET")N.test(e.url)||(e.url+=(ka.test(e.url)?
"&":"?")+(e.jsonp||"callback")+"=?");else if(!e.data||!N.test(e.data))e.data=(e.data?e.data+"&":"")+(e.jsonp||"callback")+"=?";e.dataType="json"}if(e.dataType==="json"&&(e.data&&N.test(e.data)||N.test(e.url))){j=e.jsonpCallback||"jsonp"+sb++;if(e.data)e.data=(e.data+"").replace(N,"="+j+"$1");e.url=e.url.replace(N,"="+j+"$1");e.dataType="script";A[j]=A[j]||function(q){o=q;b();d();A[j]=w;try{delete A[j]}catch(p){}z&&z.removeChild(C)}}if(e.dataType==="script"&&e.cache===null)e.cache=false;if(e.cache===
false&&n==="GET"){var r=J(),u=e.url.replace(wb,"$1_="+r+"$2");e.url=u+(u===e.url?(ka.test(e.url)?"&":"?")+"_="+r:"")}if(e.data&&n==="GET")e.url+=(ka.test(e.url)?"&":"?")+e.data;e.global&&!c.active++&&c.event.trigger("ajaxStart");r=(r=xb.exec(e.url))&&(r[1]&&r[1]!==location.protocol||r[2]!==location.host);if(e.dataType==="script"&&n==="GET"&&r){var z=s.getElementsByTagName("head")[0]||s.documentElement,C=s.createElement("script");C.src=e.url;if(e.scriptCharset)C.charset=e.scriptCharset;if(!j){var B=
false;C.onload=C.onreadystatechange=function(){if(!B&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){B=true;b();d();C.onload=C.onreadystatechange=null;z&&C.parentNode&&z.removeChild(C)}}}z.insertBefore(C,z.firstChild);return w}var E=false,x=e.xhr();if(x){e.username?x.open(n,e.url,e.async,e.username,e.password):x.open(n,e.url,e.async);try{if(e.data||a&&a.contentType)x.setRequestHeader("Content-Type",e.contentType);if(e.ifModified){c.lastModified[e.url]&&x.setRequestHeader("If-Modified-Since",
c.lastModified[e.url]);c.etag[e.url]&&x.setRequestHeader("If-None-Match",c.etag[e.url])}r||x.setRequestHeader("X-Requested-With","XMLHttpRequest");x.setRequestHeader("Accept",e.dataType&&e.accepts[e.dataType]?e.accepts[e.dataType]+", */*":e.accepts._default)}catch(ga){}if(e.beforeSend&&e.beforeSend.call(k,x,e)===false){e.global&&!--c.active&&c.event.trigger("ajaxStop");x.abort();return false}e.global&&f("ajaxSend",[x,e]);var g=x.onreadystatechange=function(q){if(!x||x.readyState===0||q==="abort"){E||
d();E=true;if(x)x.onreadystatechange=c.noop}else if(!E&&x&&(x.readyState===4||q==="timeout")){E=true;x.onreadystatechange=c.noop;i=q==="timeout"?"timeout":!c.httpSuccess(x)?"error":e.ifModified&&c.httpNotModified(x,e.url)?"notmodified":"success";var p;if(i==="success")try{o=c.httpData(x,e.dataType,e)}catch(v){i="parsererror";p=v}if(i==="success"||i==="notmodified")j||b();else c.handleError(e,x,i,p);d();q==="timeout"&&x.abort();if(e.async)x=null}};try{var h=x.abort;x.abort=function(){x&&h.call(x);
g("abort")}}catch(l){}e.async&&e.timeout>0&&setTimeout(function(){x&&!E&&g("timeout")},e.timeout);try{x.send(n==="POST"||n==="PUT"||n==="DELETE"?e.data:null)}catch(m){c.handleError(e,x,null,m);d()}e.async||g();return x}},handleError:function(a,b,d,f){if(a.error)a.error.call(a.context||a,b,d,f);if(a.global)(a.context?c(a.context):c.event).trigger("ajaxError",[b,a,f])},active:0,httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===
1223||a.status===0}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),f=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(f)c.etag[b]=f;return a.status===304||a.status===0},httpData:function(a,b,d){var f=a.getResponseHeader("content-type")||"",e=b==="xml"||!b&&f.indexOf("xml")>=0;a=e?a.responseXML:a.responseText;e&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b===
"json"||!b&&f.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&f.indexOf("javascript")>=0)c.globalEval(a);return a},param:function(a,b){function d(i,o){if(c.isArray(o))c.each(o,function(k,n){b||/\[\]$/.test(i)?f(i,n):d(i+"["+(typeof n==="object"||c.isArray(n)?k:"")+"]",n)});else!b&&o!=null&&typeof o==="object"?c.each(o,function(k,n){d(i+"["+k+"]",n)}):f(i,o)}function f(i,o){o=c.isFunction(o)?o():o;e[e.length]=encodeURIComponent(i)+"="+encodeURIComponent(o)}var e=[];if(b===w)b=c.ajaxSettings.traditional;
if(c.isArray(a)||a.jquery)c.each(a,function(){f(this.name,this.value)});else for(var j in a)d(j,a[j]);return e.join("&").replace(yb,"+")}});var la={},Ab=/toggle|show|hide/,Bb=/^([+-]=)?([\d+-.]+)(.*)$/,W,va=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b){if(a||a===0)return this.animate(K("show",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");
this[a].style.display=d||"";if(c.css(this[a],"display")==="none"){d=this[a].nodeName;var f;if(la[d])f=la[d];else{var e=c("<"+d+" />").appendTo("body");f=e.css("display");if(f==="none")f="block";e.remove();la[d]=f}c.data(this[a],"olddisplay",f)}}a=0;for(b=this.length;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b){if(a||a===0)return this.animate(K("hide",3),a,b);else{a=0;for(b=this.length;a<b;a++){var d=c.data(this[a],"olddisplay");!d&&d!=="none"&&c.data(this[a],
"olddisplay",c.css(this[a],"display"))}a=0;for(b=this.length;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b){var d=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||d?this.each(function(){var f=d?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(K("toggle",3),a,b);return this},fadeTo:function(a,b,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d)},
animate:function(a,b,d,f){var e=c.speed(b,d,f);if(c.isEmptyObject(a))return this.each(e.complete);return this[e.queue===false?"each":"queue"](function(){var j=c.extend({},e),i,o=this.nodeType===1&&c(this).is(":hidden"),k=this;for(i in a){var n=i.replace(ia,ja);if(i!==n){a[n]=a[i];delete a[i];i=n}if(a[i]==="hide"&&o||a[i]==="show"&&!o)return j.complete.call(this);if((i==="height"||i==="width")&&this.style){j.display=c.css(this,"display");j.overflow=this.style.overflow}if(c.isArray(a[i])){(j.specialEasing=
j.specialEasing||{})[i]=a[i][1];a[i]=a[i][0]}}if(j.overflow!=null)this.style.overflow="hidden";j.curAnim=c.extend({},a);c.each(a,function(r,u){var z=new c.fx(k,j,r);if(Ab.test(u))z[u==="toggle"?o?"show":"hide":u](a);else{var C=Bb.exec(u),B=z.cur(true)||0;if(C){u=parseFloat(C[2]);var E=C[3]||"px";if(E!=="px"){k.style[r]=(u||1)+E;B=(u||1)/z.cur(true)*B;k.style[r]=B+E}if(C[1])u=(C[1]==="-="?-1:1)*u+B;z.custom(B,u,E)}else z.custom(B,u,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);
this.each(function(){for(var f=d.length-1;f>=0;f--)if(d[f].elem===this){b&&d[f](true);d.splice(f,1)}});b||this.dequeue();return this}});c.each({slideDown:K("show",1),slideUp:K("hide",1),slideToggle:K("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,f){return this.animate(b,d,f)}});c.extend({speed:function(a,b,d){var f=a&&typeof a==="object"?a:{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};f.duration=c.fx.off?0:typeof f.duration===
"number"?f.duration:c.fx.speeds[f.duration]||c.fx.speeds._default;f.old=f.complete;f.complete=function(){f.queue!==false&&c(this).dequeue();c.isFunction(f.old)&&f.old.call(this)};return f},easing:{linear:function(a,b,d,f){return d+f*a},swing:function(a,b,d,f){return(-Math.cos(a*Math.PI)/2+0.5)*f+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||
c.fx.step._default)(this);if((this.prop==="height"||this.prop==="width")&&this.elem.style)this.elem.style.display="block"},cur:function(a){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];return(a=parseFloat(c.css(this.elem,this.prop,a)))&&a>-10000?a:parseFloat(c.curCSS(this.elem,this.prop))||0},custom:function(a,b,d){function f(j){return e.step(j)}this.startTime=J();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;
this.pos=this.state=0;var e=this;f.elem=this.elem;if(f()&&c.timers.push(f)&&!W)W=setInterval(c.fx.tick,13)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(a){var b=J(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=
this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var f in this.options.curAnim)if(this.options.curAnim[f]!==true)d=false;if(d){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;a=c.data(this.elem,"olddisplay");this.elem.style.display=a?a:this.options.display;if(c.css(this.elem,"display")==="none")this.elem.style.display="block"}this.options.hide&&c(this.elem).hide();if(this.options.hide||this.options.show)for(var e in this.options.curAnim)c.style(this.elem,
e,this.options.orig[e]);this.options.complete.call(this.elem)}return false}else{e=b-this.startTime;this.state=e/this.options.duration;a=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||a](this.state,e,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a=c.timers,b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||
c.fx.stop()},stop:function(){clearInterval(W);W=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){c.style(a.elem,"opacity",a.now)},_default:function(a){if(a.elem.style&&a.elem.style[a.prop]!=null)a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;else a.elem[a.prop]=a.now}}});if(c.expr&&c.expr.filters)c.expr.filters.animated=function(a){return c.grep(c.timers,function(b){return a===b.elem}).length};c.fn.offset="getBoundingClientRect"in s.documentElement?
function(a){var b=this[0];if(a)return this.each(function(e){c.offset.setOffset(this,a,e)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);var d=b.getBoundingClientRect(),f=b.ownerDocument;b=f.body;f=f.documentElement;return{top:d.top+(self.pageYOffset||c.support.boxModel&&f.scrollTop||b.scrollTop)-(f.clientTop||b.clientTop||0),left:d.left+(self.pageXOffset||c.support.boxModel&&f.scrollLeft||b.scrollLeft)-(f.clientLeft||b.clientLeft||0)}}:function(a){var b=
this[0];if(a)return this.each(function(r){c.offset.setOffset(this,a,r)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);c.offset.initialize();var d=b.offsetParent,f=b,e=b.ownerDocument,j,i=e.documentElement,o=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;for(var k=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==o&&b!==i;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;j=e?e.getComputedStyle(b,null):b.currentStyle;
k-=b.scrollTop;n-=b.scrollLeft;if(b===d){k+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&/^t(able|d|h)$/i.test(b.nodeName))){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=d;d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&j.overflow!=="visible"){k+=parseFloat(j.borderTopWidth)||0;n+=parseFloat(j.borderLeftWidth)||0}f=j}if(f.position==="relative"||f.position==="static"){k+=o.offsetTop;n+=o.offsetLeft}if(c.offset.supportsFixedPosition&&
f.position==="fixed"){k+=Math.max(i.scrollTop,o.scrollTop);n+=Math.max(i.scrollLeft,o.scrollLeft)}return{top:k,left:n}};c.offset={initialize:function(){var a=s.body,b=s.createElement("div"),d,f,e,j=parseFloat(c.curCSS(a,"marginTop",true))||0;c.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"});b.innerHTML="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
a.insertBefore(b,a.firstChild);d=b.firstChild;f=d.firstChild;e=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=f.offsetTop!==5;this.doesAddBorderForTableAndCells=e.offsetTop===5;f.style.position="fixed";f.style.top="20px";this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15;f.style.position=f.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==j;a.removeChild(b);
c.offset.initialize=c.noop},bodyOffset:function(a){var b=a.offsetTop,d=a.offsetLeft;c.offset.initialize();if(c.offset.doesNotIncludeMarginInBodyOffset){b+=parseFloat(c.curCSS(a,"marginTop",true))||0;d+=parseFloat(c.curCSS(a,"marginLeft",true))||0}return{top:b,left:d}},setOffset:function(a,b,d){if(/static/.test(c.curCSS(a,"position")))a.style.position="relative";var f=c(a),e=f.offset(),j=parseInt(c.curCSS(a,"top",true),10)||0,i=parseInt(c.curCSS(a,"left",true),10)||0;if(c.isFunction(b))b=b.call(a,
d,e);d={top:b.top-e.top+j,left:b.left-e.left+i};"using"in b?b.using.call(a,d):f.css(d)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),f=/^body|html$/i.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.curCSS(a,"marginTop",true))||0;d.left-=parseFloat(c.curCSS(a,"marginLeft",true))||0;f.top+=parseFloat(c.curCSS(b[0],"borderTopWidth",true))||0;f.left+=parseFloat(c.curCSS(b[0],"borderLeftWidth",true))||0;return{top:d.top-
f.top,left:d.left-f.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||s.body;a&&!/^body|html$/i.test(a.nodeName)&&c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(f){var e=this[0],j;if(!e)return null;if(f!==w)return this.each(function(){if(j=wa(this))j.scrollTo(!a?f:c(j).scrollLeft(),a?f:c(j).scrollTop());else this[d]=f});else return(j=wa(e))?"pageXOffset"in j?j[a?"pageYOffset":
"pageXOffset"]:c.support.boxModel&&j.document.documentElement[d]||j.document.body[d]:e[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();c.fn["inner"+b]=function(){return this[0]?c.css(this[0],d,false,"padding"):null};c.fn["outer"+b]=function(f){return this[0]?c.css(this[0],d,false,f?"margin":"border"):null};c.fn[d]=function(f){var e=this[0];if(!e)return f==null?null:this;if(c.isFunction(f))return this.each(function(j){var i=c(this);i[d](f.call(this,j,i[d]()))});return"scrollTo"in
e&&e.document?e.document.compatMode==="CSS1Compat"&&e.document.documentElement["client"+b]||e.document.body["client"+b]:e.nodeType===9?Math.max(e.documentElement["client"+b],e.body["scroll"+b],e.documentElement["scroll"+b],e.body["offset"+b],e.documentElement["offset"+b]):f===w?c.css(e,d):this.css(d,typeof f==="string"?f:f+"px")}});A.jQuery=A.$=c})(window);

View File

@ -69,7 +69,39 @@ function load_ajax_url(url) {
function load_search_results(url, params, page) {
document.getElementById('AS').innerHTML = '<div id="resultscontainer" class="empty"><img src="/view/theme/default/images/spinner.gif" id="spinner" alt="spinner" /></div>';
document.getElementById('messagelistcontainer').innerHTML = '<img src="/view/theme/default/images/spinner.gif" id="spinner" alt="spinner" />';
var http = getXMLHttp();
if(http == null) { alert("Error creating XMLHttpRequest"); return; }
http.open("POST", url, true);
params = params + "&page=" + page;
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");
http.onreadystatechange = function() {
if(http.readyState == 4) {
if(http.status == 200) {
document.getElementById('mailcontframe').innerHTML = http.responseText;
}
else {
alert("Problem retrieving XML data:" + http.statusText);
}
}
}
http.send(params);
}
function load_audit_results(url, params, page) {
document.getElementById('AS').innerHTML = '<img src="/view/theme/default/images/spinner.gif" id="spinner" alt="spinner" />';
var http = getXMLHttp();
@ -88,9 +120,6 @@ function load_search_results(url, params, page) {
if(http.readyState == 4) {
if(http.status == 200) {
document.getElementById('AS').innerHTML = http.responseText;
$(".messagelink").colorbox({iframe:true, width:"80%", height:"80%" });
}
else {
alert("Problem retrieving XML data:" + http.statusText);
@ -102,7 +131,30 @@ function load_search_results(url, params, page) {
}
function send_ajax_post_request(url, params, id) {
function load_url_with_get(url, id) {
var http = getXMLHttp();
if(http == null) { alert("Error creating XMLHttpRequest"); return; }
http.onreadystatechange = function() {
if(http.readyState == 4) {
if(http.status == 200){
document.getElementById(id).innerHTML = http.responseText;
}
else alert("Problem retrieving XML data:" + http.statusText);
}
}
http.open("GET", url, true);
http.send(null);
document.body.style.cursor = 'default';
}
function send_ajax_post_request(url, params) {
var http = getXMLHttp();
if(http == null) { alert("Error creating XMLHttpRequest"); return; }
@ -117,7 +169,6 @@ function send_ajax_post_request(url, params, id) {
http.onreadystatechange = function() {
if(http.readyState == 4) {
if(http.status == 200) {
document.getElementById(id).innerHTML = http.responseText;
}
else {
alert("Problem retrieving XML data:" + http.statusText);
@ -135,26 +186,30 @@ function add_message_reference_to_form(s) {
}
function assemble_search_term(n) {
function assemble_search_term(n, prefix) {
var data = '';
var attachment_type = '';
var e;
var folders = '';
e = document.getElementById('searchtype');
e = document.getElementById(prefix + 'searchtype');
if(e && e.value) { data = data + "searchtype=" + e.value; }
e = document.getElementById('_search');
e = document.getElementById(prefix + '_search');
if(e && e.value) { data = data + "&search=" + e.value; }
e = document.getElementById('from');
e = document.getElementById(prefix + 'from');
if(e && e.value) { data = data + "&from=" + e.value; }
e = document.getElementById('to');
e = document.getElementById(prefix + 'to');
if(e && e.value) { data = data + "&to=" + e.value; }
e = document.getElementById('subject');
e = document.getElementById(prefix + 'subject');
if(e && e.value) { data = data + "&subject=" + e.value; }
e = document.getElementById(prefix + 'body');
if(e && e.value) { data = data + "&body=" + e.value; }
for(i=0; i<=n; i++) {
var a = 'key' + i;
var b = 'val' + i;
@ -175,10 +230,10 @@ function assemble_search_term(n) {
e = document.getElementById('date2');
if(e && e.value) { data = data + "&date2=" + e.value; }
e = document.getElementById('direction');
e = document.getElementById(prefix + 'direction');
if(e && e.value) { data = data + "&direction=" + e.value; }
e = document.getElementById('action');
e = document.getElementById(prefix + 'action');
if(e && e.value) { data = data + "&action=" + e.value; }
for(i=0; i<attachment_types.length; i++) {
@ -188,15 +243,39 @@ function assemble_search_term(n) {
if(attachment_type) { data = data + "&attachment_type=" + attachment_type.substring(1,attachment_type.length); }
e = document.getElementById('ref');
e = document.getElementById(prefix + 'tag');
if(e && e.value) { data = data + "&tag=" + e.value; }
e = document.getElementById(prefix + 'note');
if(e && e.value) { data = data + "&note=" + e.value; }
e = document.getElementById(prefix + 'has_attachment');
if(e && e.checked == 1) { data = data + "&has_attachment=1"; }
e = document.getElementById(prefix + 'ref');
if(e && e.value) { data = data + "&ref=" + e.value; }
e = document.getElementById('sort');
e = document.getElementById(prefix + 'sort');
if(e && e.value) { data = data + "&sort=" + e.value; }
e = document.getElementById('order');
e = document.getElementById(prefix + 'order');
if(e && e.value) { data = data + "&order=" + e.value; }
var a = document.getElementById('folders');
if(a) {
for(i=0; i<a.childNodes.length; i++) {
b = a.childNodes[i];
if(b.name && b.name.substring(0, 7) == 'folder_' && b.checked) {
folders = folders + "+" + b.name.substring(7);
}
}
}
if(folders) {
folders = folders.substring(1);
data = data + "&folders=" + folders;
}
//alert("data: " + data);
@ -235,9 +314,13 @@ function reset_simple_form() {
a = document.getElementById('date1'); a.value = '';
a = document.getElementById('date2'); a.value = '';
a = document.getElementById('from'); a.value = '';
a = document.getElementById('to'); a.value = '';
a = document.getElementById('subject'); a.value = '';
a = document.getElementById('xfrom'); a.value = '';
a = document.getElementById('xto'); a.value = '';
a = document.getElementById('xsubject'); a.value = '';
a = document.getElementById('xbody'); a.value = '';
a = document.getElementById('xtag'); a.value = '';
a = document.getElementById('xnote'); a.value = '';
a = document.getElementById('xhas_attachment'); a.checked = 0;
a = document.getElementById('ref');
if(a) { a.value = ''; }
@ -356,13 +439,12 @@ function removeme(id) {
function tag_search_results(url){
var idlist = '';
var idlist = assemble_idlist();
var tag_keys = document.getElementById('tag_keys').value;
var tag_value = document.getElementById('tag_value').value;
if(tag_keys) {
params = "idlist=" + tag_keys + "&tag=" + encodeURI(tag_value);
if(idlist) {
params = "idlist=" + idlist + "&tag=" + encodeURI(tag_value);
var http = getXMLHttp();
@ -420,8 +502,6 @@ function restore_selected_emails(url) {
if(http == null) { alert("Error creating XMLHttpRequest"); return; }
document.getElementById('A1').innerHTML = '<div class="restore_spinner"><img src="/view/theme/default/images/spinner.gif" id="spinner_restore" alt="spinner" /></div>';
http.open("POST", url, true);
params = "idlist=" + idlist + "&download=0";
@ -434,7 +514,6 @@ function restore_selected_emails(url) {
http.onreadystatechange = function() {
if(http.readyState == 4) {
if(http.status == 200) {
document.getElementById('A1').innerHTML = http.responseText;
}
else {
alert("Problem retrieving XML data:" + http.statusText);
@ -526,10 +605,6 @@ $(document).ready(function() {
$("#date1").datepicker( { dateFormat: 'yy-mm-dd' } );
$("#date2").datepicker( { dateFormat: 'yy-mm-dd' } );
$(".messagelink").colorbox({iframe:true, width:"80%", height:"80%" });
$(".savedsearch").colorbox({iframe:true, width:"400px", height:"300px", top:"50px", left:"50%"});
});
@ -570,6 +645,23 @@ $(document).ready(function() {
}
});
$("#s_piler_folder").autocomplete({
source: folder_search_url,
minLength: 2,
select: function( event, ui ) {
if(ui.item){
var prefix = '\n';
var a = document.getElementById("folder");
if(a && a.value == '') prefix = '';
$('#folder').val($('#folder').val() + prefix + ui.item.value);
}
ui.item.value = '';
}
});
});
@ -585,3 +677,10 @@ function toggle_hint(id, s, focus) {
}
function show_message(id, msg, timeout){
document.getElementById(id).innerHTML = msg;
document.getElementById(id).style.display = '';
setTimeout(function() { document.getElementById(id).style.display = 'none'; }, timeout*1000);
}

View File

@ -0,0 +1,188 @@
function roundcube_browser() {
var a = navigator;
this.ver = parseFloat(a.appVersion);
this.appver = a.appVersion;
this.agent = a.userAgent;
this.agent_lc = a.userAgent.toLowerCase();
this.name = a.appName;
this.vendor = a.vendor ? a.vendor : "";
this.vendver = a.vendorSub ? parseFloat(a.vendorSub) : 0;
this.product = a.product ? a.product : "";
this.platform = String(a.platform).toLowerCase();
this.lang = a.language ? a.language.substring(0, 2) : a.browserLanguage ? a.browserLanguage.substring(0, 2) : a.systemLanguage ? a.systemLanguage.substring(0, 2) : "en";
this.win = this.platform.indexOf("win") >= 0;
this.mac = this.platform.indexOf("mac") >= 0;
this.linux = this.platform.indexOf("linux") >= 0;
this.unix = this.platform.indexOf("unix") >= 0;
this.dom = document.getElementById ? !0 : !1;
this.dom2 = document.addEventListener && document.removeEventListener;
this.ie4 = (this.ie = document.all && !window.opera) && !this.dom;
this.ie5 = this.dom && this.appver.indexOf("MSIE 5") > 0;
this.ie8 = this.dom && this.appver.indexOf("MSIE 8") > 0;
this.ie7 = this.dom && this.appver.indexOf("MSIE 7") > 0;
this.ie6 = this.dom && !this.ie8 && !this.ie7 && this.appver.indexOf("MSIE 6") > 0;
this.mz = this.dom && this.ver >= 5;
this.ns6 = (this.ns = this.ver < 5 && this.name == "Netscape" || this.ver >= 5 && this.vendor.indexOf("Netscape") >= 0) && parseInt(this.vendver) == 6;
this.ns7 = this.ns && parseInt(this.vendver) == 7;
this.chrome = this.agent_lc.indexOf("chrome") > 0;
this.safari = !this.chrome && (this.agent_lc.indexOf("safari") > 0 || this.agent_lc.indexOf("applewebkit") > 0);
this.konq = this.agent_lc.indexOf("konqueror") > 0;
this.iphone = this.safari && this.agent_lc.indexOf("iphone") > 0;
this.ipad = this.safari && this.agent_lc.indexOf("ipad") > 0;
if ((this.opera = window.opera ? !0 : !1) && window.RegExp) this.vendver = /opera(\s|\/)([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$2) : -1;
else if (this.chrome && window.RegExp) this.vendver = /chrome\/([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$1) : 0;
else if (!this.vendver && this.safari) this.vendver = /(safari|applewebkit)\/([0-9]+)/.test(this.agent_lc) ? parseInt(RegExp.$2) : 0;
else if (!this.vendver && this.mz || this.agent.indexOf("Camino") > 0) this.vendver = /rv:([0-9\.]+)/.test(this.agent) ? parseFloat(RegExp.$1) : 0;
else if (this.ie && window.RegExp) this.vendver = /msie\s+([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$1) : 0;
else if (this.konq && window.RegExp) this.vendver = /khtml\/([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$1) : 0;
if (this.safari && /;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)) this.lang = RegExp.$1;
this.dhtml = this.ie4 && this.win || this.ie5 || this.ie6 || this.ns4 || this.mz;
this.vml = this.win && this.ie && this.dom && !this.opera;
this.pngalpha = this.mz || this.opera && this.vendver >= 6 || this.ie && this.mac && this.vendver >= 5 || this.ie && this.win && this.vendver >= 5.5 || this.safari;
this.opacity = this.mz || this.ie && this.vendver >= 5.5 && !this.opera || this.safari && this.vendver >= 100;
this.cookies = a.cookieEnabled;
this.xmlhttp_test = function () {
var a = new Function("try{var o=new ActiveXObject('Microsoft.XMLHTTP');return true;}catch(err){return false;}");
return this.xmlhttp = window.XMLHttpRequest || window.ActiveXObject && a()
};
this.set_html_class = function () {
var a = " js";
this.ie ? (a += " ie", this.ie5 ? a += " ie5" : this.ie6 ? a += " ie6" : this.ie7 ? a += " ie7" : this.ie8 && (a += " ie8")) : this.opera ? a += " opera" : this.konq ? a += " konqueror" : this.safari && (a += " safari");
this.chrome ? a += " chrome" : this.iphone ? a += " iphone" : this.ipad ? a += " ipad" : this.ns6 ? a += " netscape6" : this.ns7 && (a += " netscape7");
document.documentElement && (document.documentElement.className += a)
}
}
function rcube_layer(a, b) {
this.name = a;
this.create = function (c) {
var b = c.x ? c.x : 0,
e = c.y ? c.y : 0,
f = c.width,
g = c.height,
i = c.zindex,
j = c.vis,
c = c.parent,
h = document.createElement("DIV");
with(h) {
a = this.name;
with(style) position = "absolute", visibility = j ? j == 2 ? "inherit" : "visible" : "hidden", left = b + "px", top = e + "px", f && (width = f.toString().match(/\%$/) ? f : f + "px"), g && (height = g.toString().match(/\%$/) ? g : g + "px"), i && (zIndex = i)
}
c ? c.appendChild(h) : document.body.appendChild(h);
this.elm = h
};
b != null ? (this.create(b), this.name = this.elm.id) : this.elm = document.getElementById(a);
if (!this.elm) return !1;
this.css = this.elm.style;
this.event = this.elm;
this.width = this.elm.offsetWidth;
this.height = this.elm.offsetHeight;
this.x = parseInt(this.elm.offsetLeft);
this.y = parseInt(this.elm.offsetTop);
this.visible = this.css.visibility == "visible" || this.css.visibility == "show" || this.css.visibility == "inherit" ? !0 : !1;
this.move = function (a, b) {
this.x = a;
this.y = b;
this.css.left = Math.round(this.x) + "px";
this.css.top = Math.round(this.y) + "px"
};
this.resize = function (a, b) {
this.css.width = a + "px";
this.css.height = b + "px";
this.width = a;
this.height = b
};
this.show = function (a) {
a == 1 ? (this.css.visibility = "visible", this.visible = !0) : a == 2 ? (this.css.visibility = "inherit", this.visible = !0) : (this.css.visibility = "hidden", this.visible = !1)
};
this.write = function (a) {
this.elm.innerHTML = a
}
}
var rcube_event = {
get_target: function (a) {
return (a = a || window.event) && a.target ? a.target : a.srcElement
},
get_keycode: function (a) {
return (a = a || window.event) && a.keyCode ? a.keyCode : a && a.which ? a.which : 0
},
get_button: function (a) {
return (a = a || window.event) && typeof a.button != "undefined" ? a.button : a && a.which ? a.which : 0
},
get_modifier: function (a) {
var b = 0,
a = a || window.event;
if (bw.mac && a) return b += (a.metaKey && CONTROL_KEY) + (a.shiftKey && SHIFT_KEY), b;
if (a) return b += (a.ctrlKey && CONTROL_KEY) + (a.shiftKey && SHIFT_KEY), b
},
get_mouse_pos: function (a) {
if (!a) a = window.event;
var b = a.pageX ? a.pageX : a.clientX,
c = a.pageY ? a.pageY : a.clientY;
document.body && document.all && (b += document.body.scrollLeft, c += document.body.scrollTop);
a._offset && (b += a._offset.left, c += a._offset.top);
return {
x: b,
y: c
}
},
add_listener: function (a) {
if (a.object && a.method) {
if (!a.element) a.element = document;
if (!a.object._rc_events) a.object._rc_events = [];
var b = a.event + "*" + a.method;
a.object._rc_events[b] || (a.object._rc_events[b] = function (c) {
return a.object[a.method](c)
});
a.element.addEventListener ? a.element.addEventListener(a.event,
a.object._rc_events[b], !1) : a.element.attachEvent ? (a.element.detachEvent("on" + a.event, a.object._rc_events[b]), a.element.attachEvent("on" + a.event, a.object._rc_events[b])) : a.element["on" + a.event] = a.object._rc_events[b]
}
},
remove_listener: function (a) {
if (!a.element) a.element = document;
var b = a.event + "*" + a.method;
a.object && a.object._rc_events && a.object._rc_events[b] && (a.element.removeEventListener ? a.element.removeEventListener(a.event, a.object._rc_events[b], !1) : a.element.detachEvent ? a.element.detachEvent("on" + a.event, a.object._rc_events[b]) : a.element["on" + a.event] = null)
},
cancel: function (a) {
a = a ? a : window.event;
a.preventDefault && a.preventDefault();
a.stopPropagation && a.stopPropagation();
a.cancelBubble = !0;
return a.returnValue = !1
},
touchevent: function (a) {
return {
pageX: a.pageX,
pageY: a.pageY,
offsetX: a.pageX - a.target.offsetLeft,
offsetY: a.pageY - a.target.offsetTop,
target: a.target,
istouch: !0
}
}
};
function setCookie(a, b, c, d, e, f) {
a = a + "=" + escape(b) + (c ? "; expires=" + c.toGMTString() : "") + (d ? "; path=" + d : "") + (e ? "; domain=" + e : "") + (f ? "; secure" : "");
document.cookie = a
}
function getCookie(a) {
var b = document.cookie;
a += "=";
var c = b.indexOf("; " + a);
if (c == -1) {
if (c = b.indexOf(a), c != 0) return null
} else c += 2;
var d = document.cookie.indexOf(";", c);
if (d == -1) d = b.length;
return unescape(b.substring(c + a.length, d))
}
var bw = new roundcube_browser;
roundcube_browser.prototype.set_cookie = setCookie;
roundcube_browser.prototype.get_cookie = getCookie;

View File

@ -0,0 +1,87 @@
function rcube_webmail() {
this.env = {};
this.labels = {};
this.buttons = {};
this.buttons_sel = {};
this.gui_objects = {};
this.gui_containers = {};
this.commands = {};
this.command_handlers = {};
this.onloads = [];
this.messages = {};
this.ref = "rcmail";
var j = this;
this.dblclick_time = 500;
this.message_time = 2E3;
this.identifier_expr = RegExp("[^0-9a-z-_]", "gi");
this.mimetypes = "text/plain,text/html,text/xml,image/jpeg,image/gif,image/png,application/x-javascript,application/pdf,application/x-shockwave-flash".split(",");
this.env.keep_alive = 60;
this.env.request_timeout = 180;
this.env.draft_autosave = 0;
this.env.comm_path = "./";
this.env.blankpage = "program/blank.gif";
$.ajaxSetup({
cache: !1,
error: function (a, b, d) {
j.http_error(a, b, d)
},
beforeSend: function (a) {
a.setRequestHeader("X-Roundcube-Request", j.env.request_token)
}
});
this.set_env = function (a, b) {
if (a != null && typeof a == "object" && !b) for (var d in a) this.env[d] = a[d];
else this.env[a] = b
};
this.add_label = function (a, b) {
this.labels[a] = b
};
this.register_button = function (a, b, d, e, f, g) {
this.buttons[a] || (this.buttons[a] = []);
b = {
id: b,
type: d
};
if (e) b.act = e;
if (f) b.sel = f;
if (g) b.over = g;
this.buttons[a].push(b)
};
this.gui_object = function (a, b) {
this.gui_objects[a] = b
};
this.gui_container = function (a, b) {
this.gui_containers[a] = b
};
this.add_element = function (a, b) {
this.gui_containers[b] && this.gui_containers[b].jquery && this.gui_containers[b].append(a)
};
this.register_command = function (a, b, d) {
this.command_handlers[a] = b;
d && this.enable_command(a, !0)
};
this.add_onload = function (a) {
this.onloads.push(a)
};
this.init = function () {
var a = this;
this.task = this.env.task;
if (!bw.dom || !bw.xmlhttp_test()) this.goto_url("error", "_code=0x199");
else {
for (var b in this.gui_containers) this.gui_containers[b] = $("#" + this.gui_containers[b]);
for (b in this.gui_objects) this.gui_objects[b] = rcube_find_object(this.gui_objects[b]);
this.loaded = !0;
this.pending_message && this.display_message(this.pending_message[0], this.pending_message[1]);
if (this.gui_objects.folderlist) this.gui_containers.foldertray = $(this.gui_objects.folderlist);
/*this.triggerEvent("init", {
task: this.task,
action: this.env.action
});*/
for (var d in this.onloads) if (typeof this.onloads[d] == "string") eval(this.onloads[d]);
else if (typeof this.onloads[d] == "function") this.onloads[d]();
//this.start_keepalive()
}
};
}

View File

@ -0,0 +1,199 @@
/**
* Roundcube splitter GUI class
*
* @constructor
*/
function rcube_splitter(attrib)
{
this.p1id = attrib.p1;
this.p2id = attrib.p2;
this.id = attrib.id ? attrib.id : this.p1id + '_' + this.p2id + '_splitter';
this.orientation = attrib.orientation;
this.horizontal = (this.orientation == 'horizontal' || this.orientation == 'h');
this.offset = bw.ie6 ? 2 : 0;
this.pos = attrib.start ? attrib.start * 1 : 0;
this.relative = attrib.relative ? true : false;
this.drag_active = false;
this.init = function()
{
this.p1 = document.getElementById(this.p1id);
this.p2 = document.getElementById(this.p2id);
// create and position the handle for this splitter
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
if (this.horizontal) {
var top = this.p1pos.top + this.p1.offsetHeight;
this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10,
width: '100%', vis: 1, parent: this.p1.parentNode});
}
else {
var left = this.p1pos.left + this.p1.offsetWidth;
this.layer = new rcube_layer(this.id, {x: left, y: 0, width: 10,
height: '100%', vis: 1, parent: this.p1.parentNode});
}
this.elm = this.layer.elm;
this.elm.className = 'splitter '+(this.horizontal ? 'splitter-h' : 'splitter-v');
this.elm.unselectable = 'on';
// add the mouse event listeners
rcube_event.add_listener({element: this.elm, event:'mousedown', object:this, method:'onDragStart'});
if (bw.ie)
rcube_event.add_listener({element: window, event:'resize', object:this, method:'onResize'});
// read saved position from cookie
var cookie = bw.get_cookie(this.id);
if (cookie && !isNaN(cookie)) {
this.pos = parseFloat(cookie);
this.resize();
}
else if (this.pos) {
this.resize();
this.set_cookie();
}
};
/**
* Set size and position of all DOM objects
* according to the saved splitter position
*/
this.resize = function()
{
if (this.horizontal) {
var lh = this.layer.height - this.offset * 2;
this.p1.style.height = Math.floor(this.pos - this.p1pos.top - lh / 2) + 'px';
this.p2.style.top = Math.ceil(this.pos + lh / 2) + 'px';
this.layer.move(this.layer.x, Math.round(this.pos - lh / 2 + 1));
if (bw.ie) {
var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
this.p2.style.height = (new_height > 0 ? new_height : 0) + 'px';
}
}
else {
this.p1.style.width = Math.floor(this.pos - this.p1pos.left - this.layer.width / 2) + 'px';
this.p2.style.left = Math.ceil(this.pos + this.layer.width / 2) + 'px';
this.layer.move(Math.round(this.pos - this.layer.width / 2 + 1), this.layer.y);
if (bw.ie) {
var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10) ;
this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
}
}
$(this.p2).resize();
$(this.p1).resize();
};
/**
* Handler for mousedown events
*/
this.onDragStart = function(e)
{
// disable text selection while dragging the splitter
if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'none';
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
this.drag_active = true;
// start listening to mousemove events
rcube_event.add_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
rcube_event.add_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
// enable dragging above iframes
$('iframe').each(function() {
$('<div class="iframe-splitter-fix"></div>')
.css({background: '#fff',
width: this.offsetWidth+'px', height: this.offsetHeight+'px',
position: 'absolute', opacity: '0.001', zIndex: 1000
})
.css($(this).offset())
.appendTo('body');
});
};
/**
* Handler for mousemove events
*/
this.onDrag = function(e)
{
if (!this.drag_active)
return false;
var pos = rcube_event.get_mouse_pos(e);
if (this.relative) {
var parent = $(this.p1.parentNode).offset();
pos.x -= parent.left;
pos.y -= parent.top;
}
if (this.horizontal) {
if (((pos.y - this.layer.height * 1.5) > this.p1pos.top) && ((pos.y + this.layer.height * 1.5) < (this.p2pos.top + this.p2.offsetHeight))) {
this.pos = pos.y;
this.resize();
}
}
else {
if (((pos.x - this.layer.width * 1.5) > this.p1pos.left) && ((pos.x + this.layer.width * 1.5) < (this.p2pos.left + this.p2.offsetWidth))) {
this.pos = pos.x;
this.resize();
}
}
this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset();
this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset();
return false;
};
/**
* Handler for mouseup events
*/
this.onDragStop = function(e)
{
// resume the ability to highlight text
if (bw.konq || bw.chrome || bw.safari)
document.body.style.webkitUserSelect = 'auto';
// cancel the listening for drag events
rcube_event.remove_listener({element:document, event:'mousemove', object:this, method:'onDrag'});
rcube_event.remove_listener({element:document, event:'mouseup', object:this, method:'onDragStop'});
this.drag_active = false;
// remove temp divs
$('div.iframe-splitter-fix').each(function() { this.parentNode.removeChild(this); });
this.set_cookie();
return bw.safari ? true : rcube_event.cancel(e);
};
/**
* Handler for window resize events
*/
this.onResize = function(e)
{
if (this.horizontal) {
var new_height = parseInt(this.p2.parentNode.offsetHeight, 10) - parseInt(this.p2.style.top, 10) - (bw.ie8 ? 2 : 0);
this.p2.style.height = (new_height > 0 ? new_height : 0) +'px';
}
else {
var new_width = parseInt(this.p2.parentNode.offsetWidth, 10) - parseInt(this.p2.style.left, 10);
this.p2.style.width = (new_width > 0 ? new_width : 0) + 'px';
}
};
/**
* Saves splitter position in cookie
*/
this.set_cookie = function()
{
var exp = new Date();
exp.setYear(exp.getFullYear() + 1);
bw.set_cookie(this.id, this.pos, exp);
};
} // end class rcube_splitter

View File

@ -1,221 +0,0 @@
/*
tip_balloon.js v. 1.81
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de
Initial author: Walter Zorn
Last modified: 2.2.2009
Extension for the tooltip library wz_tooltip.js.
Implements balloon tooltips.
*/
// Make sure that the core file wz_tooltip.js is included first
if(typeof config == "undefined")
alert("Error:\nThe core tooltip script file 'wz_tooltip.js' must be included first, before the plugin files!");
// Here we define new global configuration variable(s) (as members of the
// predefined "config." class).
// From each of these config variables, wz_tooltip.js will automatically derive
// a command which can be passed to Tip() or TagToTip() in order to customize
// tooltips individually. These command names are just the config variable
// name(s) translated to uppercase,
// e.g. from config. Balloon a command BALLOON will automatically be
// created.
//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
config. Balloon = false // true or false - set to true if you want this to be the default behaviour
config. BalloonImgPath = "view/javascript/tip_balloon/" // Path to images (border, corners, stem), in quotes. Path must be relative to your HTML file.
// Sizes of balloon images
config. BalloonEdgeSize = 6 // Integer - sidelength of quadratic corner images
config. BalloonStemWidth = 15 // Integer
config. BalloonStemHeight = 19 // Integer
config. BalloonStemOffset = -7 // Integer - horizontal offset of left stem edge from mouse (recommended: -stemwidth/2 to center the stem above the mouse)
config. BalloonImgExt = "gif";// File name extension of default balloon images, e.g. "gif" or "png"
//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
// Create a new tt_Extension object (make sure that the name of that object,
// here balloon, is unique amongst the extensions available for wz_tooltips.js):
var balloon = new tt_Extension();
// Implement extension eventhandlers on which our extension should react
balloon.OnLoadConfig = function()
{
if(tt_aV[BALLOON])
{
// Turn off native style properties which are not appropriate
balloon.padding = Math.max(tt_aV[PADDING] - tt_aV[BALLOONEDGESIZE], 0);
balloon.width = tt_aV[WIDTH];
//if(tt_bBoxOld)
// balloon.width += (balloon.padding << 1);
tt_aV[BORDERWIDTH] = 0;
tt_aV[WIDTH] = 0;
tt_aV[PADDING] = 0;
tt_aV[BGCOLOR] = "";
tt_aV[BGIMG] = "";
tt_aV[SHADOW] = false;
// Append slash to img path if missing
if(tt_aV[BALLOONIMGPATH].charAt(tt_aV[BALLOONIMGPATH].length - 1) != '/')
tt_aV[BALLOONIMGPATH] += "/";
return true;
}
return false;
};
balloon.OnCreateContentString = function()
{
if(!tt_aV[BALLOON])
return false;
var aImg, sImgZ, sCssCrn, sVaT, sVaB, sCss0;
// Cache balloon images in advance:
// Either use the pre-cached default images...
if(tt_aV[BALLOONIMGPATH] == config.BalloonImgPath)
aImg = balloon.aDefImg;
// ...or load images from different directory
else
aImg = Balloon_CacheImgs(tt_aV[BALLOONIMGPATH], tt_aV[BALLOONIMGEXT]);
sCss0 = 'padding:0;margin:0;border:0;line-height:0;overflow:hidden;';
sCssCrn = ' style="position:relative;width:' + tt_aV[BALLOONEDGESIZE] + 'px;' + sCss0 + 'overflow:hidden;';
sVaT = 'vertical-align:top;" valign="top"';
sVaB = 'vertical-align:bottom;" valign="bottom"';
sImgZ = '" style="' + sCss0 + '" />';
tt_sContent = '<table border="0" cellpadding="0" cellspacing="0" style="width:auto;padding:0;margin:0;left:0;top:0;"><tr>'
// Left-top corner
+ '<td' + sCssCrn + sVaB + '>'
+ '<img src="' + aImg[1].src + '" width="' + tt_aV[BALLOONEDGESIZE] + '" height="' + tt_aV[BALLOONEDGESIZE] + sImgZ
+ '</td>'
// Top border
+ '<td valign="bottom" style="position:relative;' + sCss0 + '">'
+ '<img id="bALlOOnT" style="position:relative;top:1px;z-index:1;display:none;' + sCss0 + '" src="' + aImg[9].src + '" width="' + tt_aV[BALLOONSTEMWIDTH] + '" height="' + tt_aV[BALLOONSTEMHEIGHT] + '" />'
+ '<div style="position:relative;z-index:0;top:0;' + sCss0 + 'width:auto;height:' + tt_aV[BALLOONEDGESIZE] + 'px;background-image:url(' + aImg[2].src + ');">'
+ '</div>'
+ '</td>'
// Right-top corner
+ '<td' + sCssCrn + sVaB + '>'
+ '<img src="' + aImg[3].src + '" width="' + tt_aV[BALLOONEDGESIZE] + '" height="' + tt_aV[BALLOONEDGESIZE] + sImgZ
+ '</td>'
+ '</tr><tr>'
// Left border (background-repeat fix courtesy Dirk Schnitzler)
+ '<td style="position:relative;background-repeat:repeat;' + sCss0 + 'width:' + tt_aV[BALLOONEDGESIZE] + 'px;background-image:url(' + aImg[8].src + ');">'
// Redundant image for bugous old Geckos which won't auto-expand TD height to 100%
+ '<img width="' + tt_aV[BALLOONEDGESIZE] + '" height="100%" src="' + aImg[8].src + sImgZ
+ '</td>'
// Content
+ '<td id="bALlO0nBdY" style="position:relative;line-height:normal;background-repeat:repeat;'
+ ';background-image:url(' + aImg[0].src + ')'
+ ';color:' + tt_aV[FONTCOLOR]
+ ';font-family:' + tt_aV[FONTFACE]
+ ';font-size:' + tt_aV[FONTSIZE]
+ ';font-weight:' + tt_aV[FONTWEIGHT]
+ ';text-align:' + tt_aV[TEXTALIGN]
+ ';padding:' + balloon.padding + 'px'
+ ';width:' + ((balloon.width > 0) ? (balloon.width + 'px') : 'auto')
+ ';">' + tt_sContent + '</td>'
// Right border
+ '<td style="position:relative;background-repeat:repeat;' + sCss0 + 'width:' + tt_aV[BALLOONEDGESIZE] + 'px;background-image:url(' + aImg[4].src + ');">'
// Image redundancy for bugous old Geckos that won't auto-expand TD height to 100%
+ '<img width="' + tt_aV[BALLOONEDGESIZE] + '" height="100%" src="' + aImg[4].src + sImgZ
+ '</td>'
+ '</tr><tr>'
// Left-bottom corner
+ '<td' + sCssCrn + sVaT + '>'
+ '<img src="' + aImg[7].src + '" width="' + tt_aV[BALLOONEDGESIZE] + '" height="' + tt_aV[BALLOONEDGESIZE] + sImgZ
+ '</td>'
// Bottom border
+ '<td valign="top" style="position:relative;' + sCss0 + '">'
+ '<div style="position:relative;left:0;top:0;' + sCss0 + 'width:auto;height:' + tt_aV[BALLOONEDGESIZE] + 'px;background-image:url(' + aImg[6].src + ');"></div>'
+ '<img id="bALlOOnB" style="position:relative;top:-1px;left:2px;z-index:1;display:none;' + sCss0 + '" src="' + aImg[10].src + '" width="' + tt_aV[BALLOONSTEMWIDTH] + '" height="' + tt_aV[BALLOONSTEMHEIGHT] + '" />'
+ '</td>'
// Right-bottom corner
+ '<td' + sCssCrn + sVaT + '>'
+ '<img src="' + aImg[5].src + '" width="' + tt_aV[BALLOONEDGESIZE] + '" height="' + tt_aV[BALLOONEDGESIZE] + sImgZ
+ '</td>'
+ '</tr></table>';//alert(tt_sContent);
return true;
};
balloon.OnSubDivsCreated = function()
{
if(tt_aV[BALLOON])
{
var bdy = tt_GetElt("bALlO0nBdY");
// Insert a TagToTip() HTML element into the central body TD
if (tt_t2t && !tt_aV[COPYCONTENT] && bdy)
tt_MovDomNode(tt_t2t, tt_GetDad(tt_t2t), bdy);
balloon.iStem = tt_aV[ABOVE] * 1;
balloon.aStem = [tt_GetElt("bALlOOnT"), tt_GetElt("bALlOOnB")];
balloon.aStem[balloon.iStem].style.display = "inline";
if (balloon.width < -1)
Balloon_MaxW(bdy);
return true;
}
return false;
};
// Display the stem appropriately
balloon.OnMoveAfter = function()
{
if(tt_aV[BALLOON])
{
var iStem = (tt_aV[ABOVE] != tt_bJmpVert) * 1;
// Tooltip position vertically flipped?
if(iStem != balloon.iStem)
{
// Display opposite stem
balloon.aStem[balloon.iStem].style.display = "none";
balloon.aStem[iStem].style.display = "inline";
balloon.iStem = iStem;
}
balloon.aStem[iStem].style.left = Balloon_CalcStemX() + "px";
return true;
}
return false;
};
function Balloon_CalcStemX()
{
var x = tt_musX - tt_x + tt_aV[BALLOONSTEMOFFSET] - tt_aV[BALLOONEDGESIZE];
return Math.max(Math.min(x, tt_w - tt_aV[BALLOONSTEMWIDTH] - (tt_aV[BALLOONEDGESIZE] << 1) - 2), 2);
}
function Balloon_CacheImgs(sPath, sExt)
{
var asImg = ["background", "lt", "t", "rt", "r", "rb", "b", "lb", "l", "stemt", "stemb"],
n = asImg.length,
aImg = new Array(n),
img;
while(n)
{--n;
img = aImg[n] = new Image();
img.src = sPath + asImg[n] + "." + sExt;
}
return aImg;
}
function Balloon_MaxW(bdy)
{
if (bdy)
{
var iAdd = tt_bBoxOld ? (balloon.padding << 1) : 0, w = tt_GetDivW(bdy);
if (w > -balloon.width + iAdd)
bdy.style.width = (-balloon.width + iAdd) + "px";
}
}
// This mechanism pre-caches the default images specified by
// congif.BalloonImgPath, so, whenever a balloon tip using these default images
// is created, no further server connection is necessary.
function Balloon_PreCacheDefImgs()
{
// Append slash to img path if missing
if(config.BalloonImgPath.charAt(config.BalloonImgPath.length - 1) != '/')
config.BalloonImgPath += "/";
// Preload default images into array
balloon.aDefImg = Balloon_CacheImgs(config.BalloonImgPath, config.BalloonImgExt);
}
Balloon_PreCacheDefImgs();

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 85 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 B

View File

@ -1,104 +0,0 @@
/*
tip_centerwindow.js v. 1.21
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de
Initial author: Walter Zorn
Last modified: 3.6.2008
Extension for the tooltip library wz_tooltip.js.
Centers a sticky tooltip in the window's visible clientarea,
optionally even if the window is being scrolled or resized.
*/
// Make sure that the core file wz_tooltip.js is included first
if(typeof config == "undefined")
alert("Error:\nThe core tooltip script file 'wz_tooltip.js' must be included first, before the plugin files!");
// Here we define new global configuration variable(s) (as members of the
// predefined "config." class).
// From each of these config variables, wz_tooltip.js will automatically derive
// a command which can be passed to Tip() or TagToTip() in order to customize
// tooltips individually. These command names are just the config variable
// name(s) translated to uppercase,
// e.g. from config. CenterWindow a command CENTERWINDOW will automatically be
// created.
//=================== GLOBAL TOOLTIP CONFIGURATION =========================//
config. CenterWindow = false // true or false - set to true if you want this to be the default behaviour
config. CenterAlways = false // true or false - recenter if window is resized or scrolled
//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
// Create a new tt_Extension object (make sure that the name of that object,
// here ctrwnd, is unique amongst the extensions available for
// wz_tooltips.js):
var ctrwnd = new tt_Extension();
// Implement extension eventhandlers on which our extension should react
ctrwnd.OnLoadConfig = function()
{
if(tt_aV[CENTERWINDOW])
{
// Permit CENTERWINDOW only if the tooltip is sticky
if(tt_aV[STICKY])
{
if(tt_aV[CENTERALWAYS])
{
// IE doesn't support style.position "fixed"
if(tt_ie)
tt_AddEvtFnc(window, "scroll", Ctrwnd_DoCenter);
else
tt_aElt[0].style.position = "fixed";
tt_AddEvtFnc(window, "resize", Ctrwnd_DoCenter);
}
return true;
}
tt_aV[CENTERWINDOW] = false;
}
return false;
};
// We react on the first OnMouseMove event to center the tip on that occasion
ctrwnd.OnMoveBefore = Ctrwnd_DoCenter;
ctrwnd.OnKill = function()
{
if(tt_aV[CENTERWINDOW] && tt_aV[CENTERALWAYS])
{
tt_RemEvtFnc(window, "resize", Ctrwnd_DoCenter);
if(tt_ie)
tt_RemEvtFnc(window, "scroll", Ctrwnd_DoCenter);
else
tt_aElt[0].style.position = "absolute";
}
return false;
};
// Helper function
function Ctrwnd_DoCenter()
{
if(tt_aV[CENTERWINDOW])
{
var x, y, dx, dy;
// Here we use some functions and variables (tt_w, tt_h) which the
// extension API of wz_tooltip.js provides for us
if(tt_ie || !tt_aV[CENTERALWAYS])
{
dx = tt_GetScrollX();
dy = tt_GetScrollY();
}
else
{
dx = 0;
dy = 0;
}
// Position the tip, offset from the center by OFFSETX and OFFSETY
x = (tt_GetClientW() - tt_w) / 2 + dx + tt_aV[OFFSETX];
y = (tt_GetClientH() - tt_h) / 2 + dy + tt_aV[OFFSETY];
tt_SetTipPos(x, y);
return true;
}
return false;
}

View File

@ -1,88 +0,0 @@
/*
tip_followscroll.js v. 1.11
The latest version is available at
http://www.walterzorn.com
or http://www.devira.com
or http://www.walterzorn.de
Initial author: Walter Zorn
Last modified: 3.6.2008
Extension for the tooltip library wz_tooltip.js.
Lets a "sticky" tooltip keep its position inside the clientarea if the window
is scrolled.
*/
// Make sure that the core file wz_tooltip.js is included first
if(typeof config == "undefined")
alert("Error:\nThe core tooltip script file 'wz_tooltip.js' must be included first, before the plugin files!");
// Here we define new global configuration variable(s) (as members of the
// predefined "config." class).
// From each of these config variables, wz_tooltip.js will automatically derive
// a command which can be passed to Tip() or TagToTip() in order to customize
// tooltips individually. These command names are just the config variable
// name(s) translated to uppercase,
// e.g. from config. FollowScroll a command FOLLOWSCROLL will automatically be
// created.
//=================== GLOBAL TOOLTIP CONFIGURATION ======================//
config. FollowScroll = false // true or false - set to true if you want this to be the default behaviour
//======= END OF TOOLTIP CONFIG, DO NOT CHANGE ANYTHING BELOW ==============//
// Create a new tt_Extension object (make sure that the name of that object,
// here fscrl, is unique amongst the extensions available for
// wz_tooltips.js):
var fscrl = new tt_Extension();
// Implement extension eventhandlers on which our extension should react
fscrl.OnShow = function()
{
if(tt_aV[FOLLOWSCROLL])
{
// Permit FOLLOWSCROLL only if the tooltip is sticky
if(tt_aV[STICKY])
{
var x = tt_x - tt_GetScrollX(), y = tt_y - tt_GetScrollY();
if(tt_ie)
{
fscrl.MoveOnScrl.offX = x;
fscrl.MoveOnScrl.offY = y;
fscrl.AddRemEvtFncs(tt_AddEvtFnc);
}
else
{
tt_SetTipPos(x, y);
tt_aElt[0].style.position = "fixed";
}
return true;
}
tt_aV[FOLLOWSCROLL] = false;
}
return false;
};
fscrl.OnHide = function()
{
if(tt_aV[FOLLOWSCROLL])
{
if(tt_ie)
fscrl.AddRemEvtFncs(tt_RemEvtFnc);
else
tt_aElt[0].style.position = "absolute";
}
};
// Helper functions (encapsulate in the class to avoid conflicts with other
// extensions)
fscrl.MoveOnScrl = function()
{
tt_SetTipPos(fscrl.MoveOnScrl.offX + tt_GetScrollX(), fscrl.MoveOnScrl.offY + tt_GetScrollY());
};
fscrl.AddRemEvtFncs = function(PAddRem)
{
PAddRem(window, "resize", fscrl.MoveOnScrl);
PAddRem(window, "scroll", fscrl.MoveOnScrl);
};

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 174 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 768 B

View File

@ -1,37 +0,0 @@
/*
ColorBox Core Style:
The following CSS is consistent between example themes and should not be altered.
*/
#colorbox, #cboxOverlay, #cboxWrapper{position:absolute; top:0; left:0; z-index:9999; overflow:hidden;}
#cboxOverlay{position:fixed; width:100%; height:100%;}
#cboxMiddleLeft, #cboxBottomLeft{clear:left;}
#cboxContent{position:relative;}
#cboxLoadedContent{overflow:auto;}
#cboxTitle{margin:0;}
#cboxLoadingOverlay, #cboxLoadingGraphic{position:absolute; top:0; left:0; width:100%; height:100%;}
#cboxPrevious, #cboxNext, #cboxClose, #cboxSlideshow{cursor:pointer;}
.cboxPhoto{float:left; margin:auto; border:0; display:block;}
.cboxIframe{width:100%; height:100%; display:block; border:0;}
/*
User Style:
Change the following styles to modify the appearance of ColorBox. They are
ordered & tabbed in a way that represents the nesting of the generated HTML.
*/
#cboxOverlay{background:#000;}
#colorbox{}
#cboxContent{margin-top:20px;}
.cboxIframe{background:#fff;}
#cboxError{padding:50px; border:1px solid #ccc;}
#cboxLoadedContent{border:5px solid #000; background:#fff;}
#cboxTitle{position:absolute; top:-20px; left:0; color:#ccc;}
#cboxCurrent{position:absolute; top:-20px; right:0px; color:#ccc;}
#cboxSlideshow{position:absolute; top:-20px; right:90px; color:#fff;}
#cboxPrevious{position:absolute; top:50%; left:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top left; width:28px; height:65px; text-indent:-9999px;}
#cboxPrevious:hover{background-position:bottom left;}
#cboxNext{position:absolute; top:50%; right:5px; margin-top:-32px; background:url(images/controls.png) no-repeat top right; width:28px; height:65px; text-indent:-9999px;}
#cboxNext:hover{background-position:bottom right;}
#cboxLoadingOverlay{background:#000;}
#cboxLoadingGraphic{background:url(images/loading.gif) no-repeat center center;}
#cboxClose{position:absolute; top:5px; right:5px; display:block; background:url(images/controls.png) no-repeat top center; width:38px; height:19px; text-indent:-9999px;}
#cboxClose:hover{background-position:bottom center;}

View File

@ -0,0 +1,56 @@
#taskbar { position: absolute; top: 0px; right: 0px; height: 24px; width: 100%; padding: 10px 4px 5px 0px; text-align: right; white-space: nowrap; z-index: 2; }
#header { position: absolute; top: 8px; left: 19px; width: 170px; height: 40px; z-index: 100; }
#mainscreen { position: absolute; top: 85px; right: 20px; bottom: 20px; left: 20px; }
#mailleftcontainer { position: absolute; top: 0; left: 0; bottom: 0; width: 195px; }
#mailboxlist-container { position: absolute; top: 0; left: 0; width: 100%; bottom: 0; border: 1px solid #999; background-color: #F9F9F9; overflow: hidden; }
.boxtitle { height: 12px !important; padding: 2px 10px 5px 5px; border-bottom: 1px solid #999; color: #333; font-size: 11px; font-weight: bold; overflow: hidden; }
.boxlistcontent { position: absolute; top: 20px; bottom: 22px; left: 0; right: 0; width: 100%; overflow-y: auto; overflow-x: hidden; }
.boxfooter { position: absolute; bottom: 0px; left: 0px; right: 0px; overflow: hidden; height: 22px; border-top: 1px solid #999; background: url(/view/theme/default/images/listheader.gif) top left repeat-x #CCC; }
#mailboxlist { position:relative; height: auto; margin: 0px; padding: 0px; list-style-image: none; list-style-type: none; overflow: hidden; white-space: nowrap; background-color: #FFF; }
#mailrightcontainer { position: absolute; top: 0; left: 170px; bottom: 0; right: 0; min-width: 400px; }
#mailrightcontent { position: absolute; top: 0; left: 0; right: 0; bottom: 0; }
#mailcontframe { position: absolute; width: 100%; top: 0; bottom: 0; border: 1px solid #999999; background-color: #F9F9F9; overflow: hidden; }
#mailpreviewframe { position: absolute; width: 100%; top: 205px; bottom: 0px; border: 1px solid #999999; background-color: #F9F9F9; }
#messagecontframe { position: relative; top: 0px; left: 0px; right: 0px; bottom: 0px; width: 100%; height: 100%; }
.boxfooter a.button,
.boxfooter a.buttonPas
{
display: block;
float: left;
width: 34px;
height: 22px;
padding: 0px;
margin: 0;
overflow: hidden;
background: url(/view/theme/default/images/groupactions.png) 0 0 no-repeat transparent;
opacity: 0.99; /* this is needed to make buttons appear correctly in Chrome */
}
.boxfooter a.groupactions
{
background-position: 0 -26px;
}
.boxfooter a.buttonPas
{
opacity: 0.35;
}
.splitter { user-select: none; -moz-user-select: none; -khtml-user-select: none; position: absolute; background: url(/view/theme/default/images/dimple.png) center no-repeat; }
.splitter-h { cursor: n-resize; cursor: row-resize; background-position: center 2px; }
.splitter-v { cursor: e-resize; cursor: col-resize; background-position: 2px center; }

View File

@ -10,9 +10,11 @@
body { background-color: #6D6D6D; margin: 0 auto; padding: 15px 0; text-align: center; font: normal 12px Arial, sans-serif; color: #3d3d3d; }
#wrap { margin: 0 auto; padding: 0; width: 1070px; background-color: white; border: 3px solid black; text-align: left; }
#fuku1 { width: 1200px; height: 830px; background: #ffffff; border: 3px solid black; position: relative; margin-left: auto; margin-right: auto; }
#menu { display: table; margin: 0px 40px 15px 40px; padding: 10px 0 0px 0px; width: 990px; border-bottom: 1px solid gray; }
#wrap { position: relative; margin: 0 auto; padding: 0; width: 1270px; background-color: white; border: 3px solid black; text-align: left; }
#menu { display: table; margin: 0px 10px 15px 20px; padding: 10px 0 0px 0px; width: 1160px; border-bottom: 1px solid gray; }
#menu .leftcell { display: table-cell; width: 490px; text-align: justify; }
#menu .rightcell { display: table-cell; width: 490px; text-align: right; font: normal 12px Arial, sans-serif; margin: 0; padding: 0; }
#menu .logout22 { float: right; text-align: right; }
@ -28,6 +30,10 @@
#main { margin: 0px 40px 20px 40px; width: 990px; float: left; clear: both; }
.aoo { cursor: pointer; position: absolute; left: 915px; top: 0px; width: 10px; margin-left: -5px; }
.aoq { height: 4px; padding: 11px 5px; width: 7px; background: url("/view/theme/default/images/dark-grey-disclosure-arrow-down.png") no-repeat scroll center center transparent; }
#footer { clear: both; text-align: left; margin: 0; padding: 0 36px; }
#A1 { text-align: right; }
@ -50,17 +56,16 @@
#ss1 { display: table; border-collapse: collapse; margin: 0; padding: 0;}
#resultscontainer { float: left; width: 990px; padding: 0; padding-bottom: 5px; margin-top: 0px; margin-bottom: 0px; border-top: 3px solid black; border-bottom: 3px solid black; }
#resultscontainer.empty { border-bottom: 0px solid black; height: 580px; }
#resultscontainer { float: left; width: 990px; padding: 0; padding-bottom: 5px; height: auto; margin-top: 0px; margin-bottom: 0px; border-top: 3px solid black; border-bottom: 3px solid black; overflow:auto; }
#resultscontainer.empty { border-bottom: 0px solid black; height: auto; overflow:auto; }
/*#results { float: left; width: 990px; height: 580px; margin-top: 0px; margin-bottom: 0px; border-collapse: collapse; display: table; clear: both; }*/
#results { float: left; width: 990px; margin-top: 0px; margin-bottom: 0px; border-collapse: collapse; display: table; clear: both; }
#results { float: left; width: 950px; margin-top: 0px; margin-bottom: 0px; border-collapse: collapse; display: table; clear: both; }
#auditresultscontainer { float: left; width: 990px; padding: 0; margin-top: 0px; margin-bottom: 0px; border-top: 3px solid black; border-bottom: 3px solid black; }
#auditresultscontainer { float: left; width: 990px; padding: 0; margin-top: 0px; margin-bottom: 0px; border-top: 3px solid black; border-bottom: 3px solid black; height: 580px; overflow: auto; }
#auditresultscontainer.empty { border-bottom: 0px solid black; height: 580px; }
#spinner { margin-left: 480px; margin-top: 275px; }
#spinner { margin: auto; margin-top: 100px; }
#spinner_restore { border: 0px solid red; margin-top: 60px; }
.restore_spinner { text-align: center; border: 0px solid black; }
@ -74,7 +79,7 @@
.row { display: table-row; }
.row.savedsearch { display: table-row; text-align: right; }
.resultrow { display: table-row; height: 25px; }
.resultrow { display: table-row; height: 18px; }
.resultrow.odd { background: #f5f5f5; }
.resultrow.spam { color: #aaa; }
@ -92,7 +97,7 @@
.cell4 { display: table-cell; width: 490px; height: 15px; margin: 0; padding: 0; }
.cell5 { display: table-cell; height: 25px; text-align: left; padding-bottom: 0px; padding-right: 3px; vertical-align: middle; }
.cell5 { display: table-cell; height: 18px; text-align: left; padding-bottom: 0px; padding-right: 3px; vertical-align: middle; }
.cell5.restore { text-align: left; border: 0px solid blue; }
.cell5.id { text-align: center; border: 0px solid red; }

View File

@ -64,7 +64,7 @@
<div class="row">
<div class="cell1s">&nbsp;</div>
<div class="cell2">
<button id="button_search" class="active" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0);"><?php print $text_search; ?></button>
<button id="button_search" class="active" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0);"><?php print $text_search; ?></button>
</div>
</div>

View File

@ -3,8 +3,8 @@
<div class="navrow">
<?php if($n >= $page_len){ ?>
<div id="pagingleft">
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
</div>
<div id="pagingcenter">
@ -12,8 +12,8 @@
</div>
<div id="pagingright">
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
</div>
<?php } else { ?>&nbsp;<?php } ?>
@ -23,7 +23,7 @@
<div id="auditresultscontainer"<?php if($n <= 0) { ?> class="empty"<?php } ?>>
<div id="auditresultscontainer"<?php if($n <= 0) { ?> class="empty"<?php } ?> style="border: 3px solid red;">
<div id="results">
@ -32,30 +32,30 @@
<?php if($n > 0){ ?>
<div class="cellaudit title">
<?php print $text_date; ?>
<a href="#" onclick="script:fix_search_order('date', 1); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 0); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 1); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 0); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cellaudit title">
<?php print $text_user; ?>
<a href="#" onclick="script:fix_search_order('user', 1); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('user', 0); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('user', 1); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('user', 0); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cellaudit title">
<?php print $text_ipaddr; ?>
<a href="#" onclick="script:fix_search_order('ipaddr', 1); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('ipaddr', 0); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('ipaddr', 1); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('ipaddr', 0); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cellaudit title">
<?php print $text_action; ?>
<a href="#" onclick="script:fix_search_order('action', 1); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('action', 0); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('action', 1); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('action', 0); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cellaudit title">
<?php print $text_description; ?>
<a href="#" onclick="script:fix_search_order('description', 1); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('description', 0); load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('description', 1); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('description', 0); load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cellaudit title">
@ -97,8 +97,8 @@
<div class="navrow">
<?php if($n >= $page_len){ ?>
<div id="pagingleft">
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
</div>
<div id="pagingcenter">
@ -106,8 +106,8 @@
</div>
<div id="pagingright">
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_search_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_audit_results('<?php print AUDIT_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
</div>
<?php } else { ?>&nbsp;<?php } ?>

View File

@ -1,60 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title>piler | <?php print $title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta name="keywords" content="clapf, webui, web ui, spam, anti-spam, email, e-mail, mail, unsolicited commercial bulk email, blacklist, software, filtering, service, Bayes, Bayesian" />
<meta name="description" content="clapf, webui, web ui, spam, anti-spam, antispam" />
<meta name="rating" content="general" />
<meta name="robots" content="all" />
<link rel="stylesheet" type="text/css" href="view/theme/default/stylesheet/style-<?php print THEME; ?>.css" />
<script type="text/javascript" src="view/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="view/javascript/jquery.dropdownPlain.js"></script>
<script type="text/javascript">
var health_worker_url = "<?php print HEALTH_WORKER_URL; ?>";
var piler_ui_lang = '<?php if(LANG == 'en') { ?>en-GB<?php } else { print LANG; } ?>';
</script>
</head>
<body onload="loadHealth(); setInterval('loadHealth()', <?php print HEALTH_REFRESH; ?> * 1000)" style="cursor: wait">
<script type="text/javascript" src="view/javascript/wz_tooltip.js"></script>
<script type="text/javascript" src="view/javascript/tip_balloon.js"></script>
<script type="text/javascript" src="view/javascript/piler.js"></script>
<div id="wrap">
<div id="menu">
<ul id="menulist">
<?php print $menu; ?>
</ul>
</div> <!-- menu -->
<div id="main">
<h3><?php print $title; ?></h3>
<?php print $content; ?>
</div> <!-- main -->
<div id="footer">
<?php print $footer; ?>
</div>
</div> <!-- wrap -->
</body>
</html>

View File

@ -1,47 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title>piler | <?php print $title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta name="keywords" content="piler email archiver" />
<meta name="description" content="piler email archiver" />
<meta name="rating" content="general" />
<meta name="robots" content="all" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/style-<?php print THEME; ?>.css" />
<script type="text/javascript">
var piler_ui_lang = '<?php if(LANG == 'en') { ?>en-GB<?php } else { print LANG; } ?>';
</script>
</head>
<body>
<div id="wrap">
<div id="menu">
<?php print $menu; ?>
</div> <!-- menu -->
<div id="main">
<?php if($title) { ?><h3><?php print $title; ?></h3><?php } ?>
<?php print $content; ?>
</div> <!-- main -->
<div id="footer">
<?php print $footer; ?>
</div>
</div> <!-- wrap -->
</body>
</html>

View File

@ -0,0 +1,142 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title><?php print $title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta name="keywords" content="piler email archiver" />
<meta name="description" content="piler email archiver" />
<meta name="rating" content="general" />
<meta name="robots" content="all" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/mini.css" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/style-<?php print THEME; ?>.css" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/jquery.ui.all.css" />
<script type="text/javascript" src="/view/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery.dropdownPlain.js"></script>
<script type="text/javascript">
var piler_ui_lang = '<?php if(LANG == 'en') { ?>en-GB<?php } else { print LANG; } ?>';
var email_search_url = '<?php print SITE_URL; ?>/index.php?route=group/email&';
var group_search_url = '<?php print SITE_URL; ?>/index.php?route=group/group&';
var folder_search_url = '<?php print SITE_URL; ?>/index.php?route=folder/folder&';
</script>
<script type="text/javascript" src="/view/javascript/piler.js"></script>
<script type="text/javascript" src="/view/javascript/splitter.js"></script>
<script type="text/javascript" src="/view/javascript/rc1.js"></script>
<script type="text/javascript" src="/view/javascript/rc2.js"></script>
<style type="text/css">
/*#mailcontframe { height: 341px; }
#mailpreviewframe { top: 351px; }
#mailleftcontainer { width: 160px; }
#mailrightcontainer { left: 170px; min-height: 200px; }*/
</style>
<script type="text/javascript">
var split = new rcube_webmail();
</script>
<script>
</script>
</head>
<body <?php if($open_saved_search_box == 1) { ?> onload="load_ajax_url('<?php print SAVE_SEARCH_URL; ?>&<?php print $search_args; ?>');" style="cursor: wait"<?php } ?>>
<div id="messagebox1" style="position: absolute; top: 0px; left: 50%; border: 3px solid red; display: none; background: orange; color: #000000; font-weight: bold; padding: 15px; z-index: 1;"></div>
<div id="fuku1">
<div id="menu">
<?php print $menu; ?>
</div>
<div style="position: absolute; border: 1px solid black; right: 20px; left: 20px; text-align: right; ">
<input type="hidden" name="searchtype" id="searchtype" value="expert" />
<input type="hidden" name="sort" id="sort" value="date" />
<input type="hidden" name="order" id="order" value="0" />
<input type="hidden" name="ref" id="ref" value="" />
<span style="font-weight: bold;"><?php print $text_search; ?>:</span>
<input type="text" id="_search" name="_search" class="advtext<?php if(!isset($_search)) { ?>grey<?php } ?>" style="width: 500px;margin: 0px;" value="<?php if(isset($_search)) { print $_search; } else { print $text_enter_search_terms; ?>" onclick="if(expsrc==0){this.value=''; this.className = 'advtext'; expsrc++;}<?php } ?>" />
<div class="aoo" onclick="javascript: document.getElementById('searchpopup1').style.display = ''; return false;">
<div class="aoq"></div>
</div>
<button id="button_search" class="active" style="margin-left: 10px; margin-right: 0px; height: 20px; width: 70px;" onclick="script:var a=document.getElementById('ref'); if(a) a.value=''; load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0);"><?php print $text_search; ?></button>
<input type="button" class="advsecondary" style="height: 20px; width: 70px;" onclick="javascript:var a=document.getElementById('_search'); a.value=''; a = document.getElementById('ref'); a.value=''; return false;" value="<?php print $text_cancel; ?>" />
<input type="button" class="advsecondary" style="height: 20px; width: 70px;" value="<?php print $text_save; ?>" onclick="javascript:send_ajax_post_request('<?php print SAVE_SEARCH_URL; ?>', assemble_search_term(0, '') + '&save=1'); show_message('messagebox1', '<p><?php print $text_saved; ?></p>', 0.85);" />
<?php print $popup; ?>
</div>
<div id="mainscreen">
<div id="mailleftcontainer">
<div id="mailboxlist-container">
<?php print $folder; ?>
</div>
<script type="text/javascript">
var mailviewsplitv = new rcube_splitter({id:'splitter1', p1: 'mailleftcontainer', p2: 'mailrightcontainer', orientation: 'v', relative: true, start: 165});
split.add_onload('mailviewsplitv.init()');
</script>
</div>
<div id="mailrightcontainer">
<div id="mailrightcontent">
<div id="mailcontframe">
<div id="messagelistcontainer" class="boxlistcontent" style="top:0; height:auto;">
<?php print $content; ?>
</div>
</div>
<script type="text/javascript">
var mailviewsplit = new rcube_splitter({id:'splitter2', p1: 'mailcontframe', p2: 'mailpreviewframe', orientation: 'h', relative: true, start: 205});
split.add_onload('mailviewsplit.init()');
</script>
<div id="mailpreviewframe" style="text-align: left; overflow:auto;">
</div>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function(){
split.init();
});
</script>
</body>
</html>

View File

@ -1,59 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="hu" lang="hu">
<head>
<title><?php print $title; ?></title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Language" content="en" />
<meta name="keywords" content="piler email archiver" />
<meta name="description" content="piler email archiver" />
<meta name="rating" content="general" />
<meta name="robots" content="all" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/style-<?php print THEME; ?>.css" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/jquery.ui.all.css" />
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/colorbox.css" />
<script type="text/javascript" src="/view/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery.dropdownPlain.js"></script>
<script type="text/javascript" src="/view/javascript/colorbox.js"></script>
<script type="text/javascript">
var piler_ui_lang = '<?php if(LANG == 'en') { ?>en-GB<?php } else { print LANG; } ?>';
</script>
<script type="text/javascript" src="/view/javascript/piler.js"></script>
</head>
<body<?php if($open_saved_search_box == 1) { ?> onload="load_ajax_url('<?php print SAVE_SEARCH_URL; ?>&<?php print $search_args; ?>');" style="cursor: wait"<?php } ?>>
<script type="text/javascript" src="/view/javascript/wz_tooltip.js"></script>
<script type="text/javascript" src="/view/javascript/tip_balloon.js"></script>
<div id="wrap">
<div id="menu">
<?php print $menu; ?>
</div> <!-- menu -->
<div id="main">
<?php print $content; ?>
</div> <!-- main -->
<div id="footer">
<?php print $footer; ?>
</div>
</div> <!-- wrap -->
</body>
</html>

View File

@ -16,42 +16,37 @@
<script type="text/javascript" src="/view/javascript/jquery-1.7.1.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery-ui-1.8.13.custom.min.js"></script>
<script type="text/javascript" src="/view/javascript/jquery.dropdownPlain.js"></script>
<script type="text/javascript" src="/view/javascript/colorbox.js"></script>
<script type="text/javascript">
var piler_ui_lang = '<?php if(LANG == 'en') { ?>en-GB<?php } else { print LANG; } ?>';
var email_search_url = '<?php print SITE_URL; ?>/index.php?route=group/email&';
var group_search_url = '<?php print SITE_URL; ?>/index.php?route=group/group&';
var folder_search_url = '<?php print SITE_URL; ?>/index.php?route=folder/folder&';
var health_worker_url = "<?php print HEALTH_WORKER_URL; ?>";
</script>
<script type="text/javascript" src="/view/javascript/piler.js"></script>
</head>
<body>
<body<?php if($this->request->get['route'] == 'health/health') { ?> onload="loadHealth(); setInterval('loadHealth()', <?php print HEALTH_REFRESH; ?> * 1000)" style="cursor: wait"<?php } ?>>
<div id="wrap">
<div id="fuku1">
<div id="menu">
<div id="menu"><?php print $menu; ?></div>
<?php print $menu; ?>
<div id="main" align="center" style="border: 0px solid red; text-align: left; margin-left: 20px; margin-right: 20px; width: 1160px;">
</div> <!-- menu -->
<?php if($title) { ?><h3><?php print $title; ?></h3><?php } ?>
<div id="main">
<?php print $content; ?>
<?php if($title) { ?><h3><?php print $title; ?></h3><?php } ?>
<?php print $content; ?>
</div> <!-- main -->
<div id="footer">
<?php print $footer; ?>
</div>
<div id="footer"><?php print $footer; ?></div>
</div> <!-- wrap -->
</div>
</body>
</html>

View File

@ -1,19 +1,14 @@
<?php if(Registry::get('username')) { ?>
<div class="row">
<div class="row" style="z-index: 2;">
<div class="leftcell">
<div id="ss1">
<div class="row">
<div class="mcell" style="width: 80px;">
</div>
<div class="mcell" style="width: 350px; border: 0px solid red;">
<div class="mcell" style="width: 350px; border: 0px solid red; z-index: 3;">
<ul class="dropdown">
<li class="search_li" style="font: 11px normal Arial, sans-serif;"><a href="search.php"<?php if($_SERVER['REQUEST_URI'] == '/' || strstr($_SERVER['REQUEST_URI'], "search.php")){ ?> id="active"<?php } ?>><?php print $text_simple; ?></a>&nbsp;/&nbsp;</li>
<li class="search_li" style="font: 11px normal Arial, sans-serif;"><a href="advanced.php"<?php if(strstr($_SERVER['REQUEST_URI'], "advanced.php")){ ?> id="active"<?php } ?>><?php print $text_advanced; ?></a>&nbsp;</li>
<li class="no_search_li" style="font: 11px normal Arial, sans-serif;"><?php print $text_search2; ?> | </li>
<li class="search_li" style="font: 11px normal Arial, sans-serif;"><a class="hide" href="#"<?php if(strstr($_SERVER['QUERY_STRING'], "stat/") || strstr($_SERVER['QUERY_STRING'], "health/") || strstr($_SERVER['QUERY_STRING'], "audit/") ) { ?> id="active"<?php } ?>><?php print $text_monitor; ?></a> |
<ul class="sub_menu">
@ -23,7 +18,7 @@
</ul>
</li>
<li class="search_li" style="font: 11px normal Arial, sans-serif;"><a class="hide" href="#"<?php if(strstr($_SERVER['QUERY_STRING'], "domain/") || ($_SERVER['QUERY_STRING'] != "route=user/settings" && strstr($_SERVER['QUERY_STRING'], "user/")) || strstr($_SERVER['QUERY_STRING'], "policy/") || strstr($_SERVER['QUERY_STRING'], "import/")) { ?> id="active"<?php } ?>><?php print $text_administration; ?></a>
<li class="search_li" style="font: 11px normal Arial, sans-serif;"><a class="hide" href="#"<?php if(strstr($_SERVER['QUERY_STRING'], "domain/") || ($_SERVER['QUERY_STRING'] != "route=user/settings" && strstr($_SERVER['QUERY_STRING'], "user/")) || strstr($_SERVER['QUERY_STRING'], "policy/") || strstr($_SERVER['QUERY_STRING'], "import/")) { ?> id="active"<?php } ?>><?php print $text_administration; ?></a> |
<ul class="sub_menu">
<li><a href="index.php?route=user/list"><?php print $text_users; ?></a></li>
<li><a href="index.php?route=group/list"><?php print $text_groups; ?></a></li>
@ -33,11 +28,7 @@
</ul>
</li>
</ul>
</div>
<div class="mcell" style="width: 60px; border: 0px solid red;">
<ul class="dropdown">
<li class="last_li" style="text-align: right; float: right; font: 11px normal Arial, sans-serif;"><a href="settings.php"<?php if(strstr($_SERVER['REQUEST_URI'], "settings.php")){ ?> id="active"<?php } ?>><?php print $text_settings; ?></a></li>
<li class="last_li" style="text-align: left; font: 11px normal Arial, sans-serif;"><a href="settings.php"<?php if(strstr($_SERVER['REQUEST_URI'], "settings.php")){ ?> id="active"<?php } ?>><?php print $text_settings; ?></a></li>
</ul>
</div>
</div>

View File

@ -1,37 +1,11 @@
<?php if(Registry::get('username')) { ?>
<div class="row">
<div class="leftcell">
<div id="ss1">
<div class="row">
<div class="mcell" style="width: 80px;">
</div>
<div class="mcell" style="width: 315px;">
<ul class="dropdown">
<li class="search_li"><a href="search.php"<?php if($_SERVER['REQUEST_URI'] == '/' || strstr($_SERVER['REQUEST_URI'], "search.php")){ ?> id="active"<?php } ?>><?php print $text_simple_search; ?></a> |&nbsp;</li>
<li class="search_li"><a href="advanced.php"<?php if(strstr($_SERVER['REQUEST_URI'], "advanced.php")){ ?> id="active"<?php } ?>><?php print $text_advanced_search; ?></a></li>
</ul>
</div>
<div class="mcell" style="width: 95px;">
<ul class="dropdown">
<li class="last_li" style="text-align: right; float: right;"><a href="settings.php"<?php if(strstr($_SERVER['REQUEST_URI'], "settings.php")){ ?> id="active"<?php } ?>><?php print $text_settings; ?></a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="rightcell">
<div class="logout22">
<?php if(isset($_SESSION['realname'])) { print $text_realname; ?>: <?php print $_SESSION['realname']; ?>, <?php } ?> <a class="logout" href="logout.php"<?php if(strstr($_SERVER['QUERY_STRING'], "login/logout")){ ?> id="active"<?php } ?>><?php print $text_logout; ?></a>
<a href="search.php"<?php if($_SERVER['REQUEST_URI'] == '/' || strstr($_SERVER['REQUEST_URI'], "search.php")){ ?> id="active"<?php } ?>><?php print $text_search; ?></a> |
<a href="/settings.php"<?php if(strstr($_SERVER['REQUEST_URI'], "settings.php")){ ?> id="active"<?php } ?>><?php print $text_settings; ?></a> |
<?php if(isset($_SESSION['realname'])) { print $text_realname; ?>: <?php print $_SESSION['realname']; ?> | <?php } ?>
<a href="/logout.php"<?php if(strstr($_SERVER['QUERY_STRING'], "login/logout")){ ?> id="active"<?php } ?>><?php print $text_logout; ?></a>
</div>
</div>
</div>
<?php } ?>

View File

@ -24,7 +24,7 @@
</div>
<div id="ss1" style="margin-top: 10px;">
<div id="ss1" style="margin-top: 10px; clear: both;">
<div class="domainrow">
<div class="domaincell"><?php print $text_groupname; ?> <a href="index.php?route=group/list&amp;sort=groupname&amp;order=0"><img src="<?php print ICON_ARROW_UP; ?>" border="0"></a> <a href="index.php?route=group/list&amp;sort=groupname&amp;order=1"><img src="<?php print ICON_ARROW_DOWN; ?>" border="0"></a></div>
<div class="domaincell">&nbsp;</div>

View File

@ -9,8 +9,8 @@
<p>
<a class="messagelink" href="/index.php?route=message/download&amp;id=<?php print $id; ?>"><?php print $text_download_message; ?></a> |
<a class="messagelink" href="/index.php?route=message/restore&amp;id=<?php print $id; ?>"><?php print $text_restore_to_mailbox; ?></a> |
<a class="messagelink" href="/message.php/<?php print $id; ?>"><?php print $text_view_message; ?></a>
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>index.php?route=message/restore&amp;id=<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_restore_to_mailbox; ?></a> |
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>message.php/<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_view_message; ?></a>
</p>
<pre><?php print $data; ?></pre>

View File

@ -9,8 +9,8 @@
<p>
<a class="messagelink" href="/index.php?route=message/download&amp;id=<?php print $id; ?>"><?php print $text_download_message; ?></a> |
<a class="messagelink" href="/message.php/<?php print $id; ?>"><?php print $text_view_message; ?></a> |
<a class="messagelink" href="/index.php?route=message/headers&amp;id=<?php print $id; ?>"><?php print $text_view_headers; ?></a>
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>message.php/<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_view_message; ?></a> |
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>/index.php?route=message/headers&amp;id=<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_view_headers; ?></a>
</p>
<p><?php print $data; ?></p>

View File

@ -1,33 +1,14 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="/view/theme/default/stylesheet/style-<?php print THEME; ?>.css" />
</head>
<body style="background: white;">
<div id="messagepopup">
<p>
<a class="messagelink" href="/index.php?route=message/download&amp;id=<?php print $id; ?>"><?php print $text_download_message; ?></a> |
<a class="messagelink" href="/index.php?route=message/restore&amp;id=<?php print $id; ?>"><?php print $text_restore_to_mailbox; ?></a> |
<a class="messagelink" href="/index.php?route=message/headers&amp;id=<?php print $id; ?>"><?php print $text_view_headers; ?></a>
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>/index.php?route=message/restore&amp;id=<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_restore_to_mailbox; ?></a> |
<a class="messagelink" href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>/index.php?route=message/headers&amp;id=<?php print $id; ?>', 'mailpreviewframe'); return false;"><?php print $text_view_headers; ?></a>
</p>
<strong><?php if($message['subject'] == "" || $message['subject'] == "Subject:") { print "&lt;" . $text_no_subject . "&gt;"; } else { print $message['subject']; } ?></strong><br />
<strong><?php print $message['from']; ?></strong><br />
<strong><?php print $message['to']; ?></strong><br />
<strong><?php print $message['date']; ?></strong><br />
<form action="/index.php?route=message/view" method="post" name="tag">
<input type="hidden" name="id" value="<?php print $id; ?>" />
<p><?php print $text_tags; ?>: <input type="text" name="tag" id="tag" value="<?php print $message['tag']; ?>" size="50" /> <input type="submit" value="<?php print $text_submit; ?>" /></p>
</form>
<strong><?php print $message['date']; ?></strong> <?php print $text_notes; ?>: <input type="text" size="60" id="note" name="note" class="advtextgrey" style="width: 500px;margin: 0px; color: #000000; height:10px;" value="<?php print $message['note']; ?>" /> <input type="button" value="<?php print $text_save; ?>" style="vertical-align: middle; font: bold 11px Arial, sans-serif; height:16px;" onclick="javascript:var p = 'id=<?php print $id; ?>&note=' + encodeURI(document.getElementById('note').value); send_ajax_post_request('<?php print MESSAGE_NOTE_URL; ?>', p); show_message('messagebox1', '<p>SAVED</p>', 0.85); " /><br />
<hr />
<?php print $message['message']; ?><br />
</div>
</body>
</html>

View File

@ -3,7 +3,7 @@
<form method="post" name="add1" action="index.php?route=policy/archiving" style="margin-bottom: 30px;">
<div id="ss1" style="margin-top: 10px; width: 600px; border: 1px solid red;">
<div id="ss1" style="margin-top: 10px; width: 600px;">
<div class="row">
<div class="domaincell"><?php print $text_from; ?>:</div>
@ -70,7 +70,7 @@
<?php if(isset($rules)){ ?>
<div id="ss1" style="margin-top: 10px; border: 1px solid red;">
<div id="ss1" style="margin-top: 10px;">
<div class="domainrow">
<div class="domaincell"><?php print $text_from; ?></div>
<div class="domaincell"><?php print $text_to; ?></div>

View File

@ -3,7 +3,7 @@
<form method="post" name="add1" action="index.php?route=policy/retention" style="margin-bottom: 30px;">
<div id="ss1" style="margin-top: 10px; width: 600px; border: 1px solid red;">
<div id="ss1" style="margin-top: 10px;">
<div class="row">
<div class="domaincell"><?php print $text_from; ?>:</div>
@ -74,7 +74,7 @@
<?php if(isset($rules)){ ?>
<div id="ss1" style="margin-top: 10px; border: 1px solid red;">
<div id="ss1" style="margin-top: 10px;">
<div class="domainrow">
<div class="domaincell"><?php print $text_from; ?></div>
<div class="domaincell"><?php print $text_to; ?></div>

View File

@ -1,130 +0,0 @@
<div id="search">
<div id="search1">
<div id="ss1" style="border: 0px solid red;">
<input type="hidden" name="searchtype" id="searchtype" value="advanced" />
<input type="hidden" name="sort" id="sort" value="date" />
<input type="hidden" name="order" id="order" value="0" />
<input type="hidden" name="ref" id="ref" value="" />
<div id="myid">
<div id="myid0" class="row" style="margin:0; padding:0; border: 0px solid blue; float: left;">
<div class="cell1s">
<select name="f[]" id="key0" class="advselect">
<option value="from"<?php if(isset($key0) && $key0 == 0) { ?> selected="selected"<?php } ?>><?php print $text_from; ?></option>
<option value="to"<?php if(isset($key0) && $key0 == 1) { ?> selected="selected"<?php } ?>><?php print $text_to; ?></option>
<option value="subject"<?php if(isset($key0) && $key0 == 2) { ?> selected="selected"<?php } ?>><?php print $text_subject; ?></option>
<option value="body"<?php if(isset($key0) && $key0 == 3) { ?> selected="selected"<?php } ?>><?php print $text_body; ?></option>
</select>
</div>
<div class="cell2">
<input type="text" class="advtext" name="v[]" id="val0" value="<?php if(isset($val0)) { print $val0; } ?>" />
<input type="button" class="short" value="+" onclick="javascript:addblock('', '', '<?php print $text_from; ?>', '<?php print $text_to; ?>', '<?php print $text_subject; ?>', '<?php print $text_body; ?>'); return false;" />
<input type="button" class="short" value="-" onclick="javascript:removeme('myid0'); return false;" />
</div>
</div>
</div>
</div>
<div id="ss1" style="border: 0px solid blue;">
<div class="row">
<div class="cell1" style="border: 0px solid blue; width: 87px;"><?php print $text_date; ?>: </div>
<div class="cell2"><input type="text" name="date1" id="date1" size="11" value="<?php if(isset($date1)) { print $date1; } ?>" /> <input type="text" name="date2" id="date2" size="11" value="<?php if(isset($date2)) { print $date2; } ?>" style="width: 170px;"/></div>
</div>
</div>
<div id="ss1" style="border: 0px solid blue;">
<div class="row">
<div class="cell1s"><?php print $text_direction; ?>: </div>
<div class="cell2">
<select name="direction" id="direction" class="advselect2">
<option value=""><?php print $text_any; ?></option>
<option value="0"<?php if(isset($direction) && $direction == 0) { ?> selected="selected"<?php } ?>><?php print $text_inbound; ?></option>
<option value="2"<?php if(isset($direction) && $direction == 2) { ?> selected="selected"<?php } ?>><?php print $text_outbound; ?></option>
<option value="1"<?php if(isset($direction) && $direction == 1) { ?> selected="selected"<?php } ?>><?php print $text_internal; ?></option>
</select>
</div>
</div>
</div>
<div id="ss1" style="border: 0px solid blue;">
<div class="row">
<div class="cell1s"><?php print $text_attachment_type; ?>: </div>
<div class="cell2">
<div id="atypes" style="display: table;">
<div class="row">
<div class="cell5"><input type="checkbox" name="attachment_type_word" class="attachmenttype" id="attachment_type_word" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/doc.png" /> word</div>
<div class="cell5"><input type="checkbox" name="attachment_type_excel" class="attachmenttype" id="attachment_type_excel" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/xls.png" /> excel</div>
<div class="cell5"><input type="checkbox" name="attachment_type_powerpoint" class="attachmenttype" id="attachment_type_powerpoint" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/ppt.png" alt="powerpoint" /> powerpoint</div>
<div class="cell5"><input type="checkbox" name="attachment_type_pdf" class="attachmenttype" id="attachment_type_pdf" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/pdf.png" /> pdf</div>
</div>
<div class="row">
<div class="cell5"><input type="checkbox" name="attachment_type_compressed" class="attachmenttype" id="attachment_type_compressed" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/rar.png" /> <?php print $text_compressed; ?></div>
<div class="cell5"><input type="checkbox" name="attachment_type_text" class="attachmenttype" id="attachment_type_text" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/txt.png" /> <?php print $text_text2; ?></div>
<div class="cell5"><input type="checkbox" name="attachment_type_odf" class="attachmenttype" id="attachment_type_odf" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/odf.png" /> odf</div>
<div class="cell5"><input type="checkbox" name="attachment_type_image" class="attachmenttype" id="attachment_type_image" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/image.png" /> <?php print $text_image; ?></div>
</div>
<div class="row">
<div class="cell5"><input type="checkbox" name="attachment_type_audio" class="attachmenttype" id="attachment_type_audio" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/audio.png" /> audio</div>
<div class="cell5"><input type="checkbox" name="attachment_type_video" class="attachmenttype" id="attachment_type_video" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/video.png" /> video</div>
<div class="cell5"><input type="checkbox" name="attachment_type_flash" class="attachmenttype" id="attachment_type_flash" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/swf.png" /> flash</div>
<div class="cell5"><input type="checkbox" name="attachment_type_other" class="attachmenttype" id="attachment_type_other" /> <img src="/view/theme/<?php print THEME; ?>/images/fileicons/file.png" /> <?php print $text_other; ?></div>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="cell1s">&nbsp;</div>
<div class="cell2">
<button id="button_search" class="active" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);"><?php print $text_search; ?></button>
<input type="button" class="advsecondary" onclick="javascript:reset_adv_form(count); return false;" value="<?php print $text_cancel; ?>" />
<input type="button" class="advsecondary" value="<?php print $text_save; ?>" onclick="javascript:send_ajax_post_request('<?php print SAVE_SEARCH_URL; ?>', assemble_search_term(count) + '&save=1', 'A1');" />
<input type="button" class="load" name="load" onclick="javascript:load_ajax_url('<?php print SAVE_SEARCH_URL; ?>&<?php if(isset($search_args)) { print $search_args; } ?>');" value="<?php print $text_load; ?>..." />
</div>
</div>
<input type="hidden" name="tag" value="" />
</div>
<div id="search2">
<div id="A1"><a href="expert.php"><?php print $text_expert_search; ?></a></div>
</div>
</div>
<div id="AS">
<div id="resultscontainer" class="empty"></div>
</div>
<?php if(isset($searchterm)) { ?>
<script>
<?php foreach($blocks as $block) { ?>
addblock('<?php print $block['key']; ?>', '<?php print $block['val']; ?>', '<?php print $text_from; ?>', '<?php print $text_to; ?>', '<?php print $text_subject; ?>', '<?php print $text_body; ?>');
<?php } ?>
fix_search_order('<?php print $sort; ?>', '<?php print $order; ?>');
load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);
load_ajax_url('<?php print SAVE_SEARCH_URL; ?>');
</script>
<?php } ?>

View File

@ -1,59 +0,0 @@
<div id="search">
<div id="search1">
<div id="ss1">
<input type="hidden" name="searchtype" id="searchtype" value="expert" />
<input type="hidden" name="sort" id="sort" value="date" />
<input type="hidden" name="order" id="order" value="0" />
<input type="hidden" name="ref" id="ref" value="" />
</div>
<div id="ss1">
<div class="row">
<div class="cell1s" style="width: 75px;"><?php print $text_search; ?>: </div>
<div class="cell2"><input type="text" id="_search" name="_search" class="advtext<?php if(!isset($_search)) { ?>grey<?php } ?>" style="width: 100%;" value="<?php if(isset($_search)) { print $_search; } else { print $text_enter_search_terms; ?>" onclick="if(expsrc==0){this.value=''; this.className = 'advtext'; expsrc++;}<?php } ?>" /></div>
</div>
</div>
<div class="row">
<div class="cell1s">&nbsp;</div>
<div class="cell2">
<button id="button_search" class="active" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);"><?php print $text_search; ?></button>
<input type="button" class="advsecondary" onclick="javascript:var a=document.getElementById('_search'); a.value=''; a = document.getElementById('ref'); a.value=''; return false;" value="<?php print $text_cancel; ?>" />
<input type="button" class="advsecondary" value="<?php print $text_save; ?>" onclick="javascript:send_ajax_post_request('<?php print SAVE_SEARCH_URL; ?>', assemble_search_term(0) + '&save=1', 'A1');" />
<input type="button" class="load" name="load" onclick="javascript:load_ajax_url('<?php print SAVE_SEARCH_URL; ?>&<?php if(isset($search_args)) { print $search_args; } ?>');" value="<?php print $text_load; ?>..." />
</div>
</div>
<input type="hidden" name="tag" value="" />
</div>
<div id="search2">
<div id="A1"></div>
</div>
</div>
<div id="AS">
<div id="resultscontainer" class="empty"></div>
</div>
<?php if(isset($searchterm)) { ?>
<script>
fix_search_order('<?php print $sort; ?>', '<?php print $order; ?>');
load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);
load_ajax_url('<?php print SAVE_SEARCH_URL; ?>');
</script>
<?php } ?>

View File

@ -0,0 +1,12 @@
<p style="text-align:left; font-weight: bold; "><?php print $text_folders; ?>:</p>
<div id="folders" style="text-align:left;">
<?php foreach ($folders as $folder) { ?>
<input type="checkbox" id="folder_<?php print $folder['id']; ?>" name="folder_<?php print $folder['id']; ?>" /> <?php print $folder['name']; ?><br />
<?php } ?>
</div>

View File

@ -1,67 +1,35 @@
<div id="pagenav">
<div class="navrow">
<?php if($n >= $page_len){ ?>
<div id="pagingleft">
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
</div>
<div id="pagingcenter">
<?php print $hits_from; ?>-<?php print $hits_to; ?>, <?php print $text_total; ?>: <?php print $n; ?>
</div>
<div id="pagingright">
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
</div>
<?php } if($n > 0){ ?>
<div id="tagbox"<?php if($n < $page_len) { ?> style="margin-left: 265px;"<?php } ?>>
<input type="hidden" id="tag_keys" name="tag_keys" value="<?php print $all_ids; ?>" />
<input type="hidden" id="_ref" name="_ref" value="<?php if(isset($_ref)) { print $_ref; } ?>" />
<input type="button" class="restore" value="<?php print $text_bulk_restore_selected_emails; ?>" onclick="javascript: restore_selected_emails('<?php print BULK_RESTORE_URL; ?>');" /> &nbsp;
<?php print $text_tag_search_results; ?>: <input type="text" id="tag_value" name="tag_value" class="tagtext" /> <input type="button" class="tag" onclick="javascript: tag_search_results('<?php print SEARCH_TAG_URL; ?>'); var __ref = document.getElementById('_ref').value; if(__ref) { add_message_reference_to_form(__ref); } load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;" value="OK" />
</div>
<?php } else { ?>&nbsp;<?php } ?>
</div>
</div>
<div id="resultscontainer"<?php if($n <= 0) { ?> class="empty"<?php } ?>>
<div id="messagelistcontainer" class="boxlistcontent" style="top:0">
<div id="results">
<div class="resultrow">
<?php if($n > 0){ ?>
<div class="cell1r" style="vertical-align:middle;"><input type="checkbox" id="bulkcheck" name="bulkcheck" value="1" checked="checked" class="restorebox" onchange="javascript:toggle_bulk_check(); return false;" /></div>
<div class="cell1q" style="text-align: center;"><a href="#" onclick="javascript: download_selected_emails('<?php print BULK_RESTORE_URL; ?>'); return false;"><img style="margin: 0px 0 -2px 0; border: 0px solid black;" src="<?php print ICON_DOWNLOAD; ?>" width="18" height="18" alt="aaa" border="0"></a></div>
<div class="cell3 date">
<?php print $text_date; ?>
<a href="#" onclick="script:fix_search_order('date', 1); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 0); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 1); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('date', 0); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cell3 title">
<?php print $text_from; ?>
<a href="#" onclick="script:fix_search_order('from', 1); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('from', 0); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('from', 1); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('from', 0); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cell3 title">
<?php print $text_subject; ?>
<a href="#" onclick="script:fix_search_order('subj', 1); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('subj', 0); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('subj', 1); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('subj', 0); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cell3 title">
<?php print $text_size; ?>
<a href="#" onclick="script:fix_search_order('size', 1); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('size', 0); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('size', 1); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_UP; ?>" alt="" border="0"></a>
<a href="#" onclick="script:fix_search_order('size', 0); <?php if(isset($_POST['ref'])) { ?>add_message_reference_to_form('<?php print $_POST['ref']; ?>');<?php } ?> load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;"><img src="<?php print ICON_ARROW_DOWN; ?>" alt="" border="0"></a>
</div>
<div class="cell3">&nbsp;</div>
<div class="cell3">&nbsp;</div>
<div class="cell3">&nbsp;</div>
<?php if(ENABLE_ON_THE_FLY_VERIFICATION == 1) { ?>
<div class="cell3">&nbsp;</div>
<?php } ?>
@ -76,13 +44,15 @@
<div id="e_<?php print $message['id']; ?>" class="resultrow<?php if($i % 2) { ?> odd<?php } ?><?php if($message['spam'] == 1) { ?> spam<?php } ?>">
<div class="cell5 restore"><input type="checkbox" id="r_<?php print $message['id']; ?>" name="r_<?php print $message['id']; ?>" value="iiii" checked="checked" class="restorebox" /></div>
<div class="cell5 id"><?php print ($page*$page_len) + $i; ?>.</div>
<div class="cell5 id"><a href="#" onclick="script:load_url_with_get('<?php print SITE_URL; ?>message.php/<?php print $message['id']; ?>', 'mailpreviewframe'); return false;"><?php print ($page*$page_len) + $i; ?>.</a></div>
<div class="cell5 date"><?php print $message['date']; ?></div>
<div class="cell5 from"><?php if($message['from'] != $message['shortfrom']) { ?><span onmouseover="Tip('<?php print preg_replace("/&/", "&amp;", $message['from']); ?>', BALLOON, true, ABOVE, true)" onmouseout="UnTip();"><?php print $message['shortfrom']; ?></span><?php } else { print $message['from']; } ?></div>
<div class="cell5 subject"><a class="messagelink<?php if($message['spam'] == 1) { ?> spam<?php } ?>" href="<?php print SITE_URL; ?>message.php/<?php print $message['piler_id']; ?>"><?php if($message['subject'] != $message['shortsubject']) { ?><span onmouseover="Tip('<?php print preg_replace("/&/", "&amp;", $message['subject']); ?>', BALLOON, true, ABOVE, true)" onmouseout="UnTip();"><?php print $message['shortsubject']; ?></span><?php } else { print $message['subject']; } ?></a><?php if($message['reference']) { ?> <a href="#" onclick="script:add_message_reference_to_form('<?php print $message['reference']; ?>'); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); a = document.getElementById('ref'); a.value=''; return false;"><span onmouseover="Tip('<?php print $text_conversation_available; ?>', BALLOON, true, ABOVE, true);" onmouseout="UnTip();">[+]</span></a><?php } ?></div>
<div class="cell5 from"><?php if($message['from'] != $message['shortfrom']) { ?><a href="#" title="<?php print preg_replace("/&/", "&amp;", $message['from']); ?>"><?php print $message['shortfrom']; ?></a><?php } else { print $message['from']; } ?></div>
<div class="cell5 subject"><a href="#" <?php if($message['subject'] != $message['shortsubject']) { ?>title="<?php print preg_replace("/&/", "&amp;", $message['subject']); ?>"<?php } ?> onclick="script:load_url_with_get('<?php print SITE_URL; ?>message.php/<?php print $message['id']; ?>', 'mailpreviewframe'); return false;"><?php if($message['subject'] != $message['shortsubject']) { print $message['shortsubject']; } else { print $message['subject']; } ?></a><?php if($message['reference']) { ?> <a href="#" title="<?php print $text_conversation_available; ?>" onclick="script:add_message_reference_to_form('<?php print $message['reference']; ?>'); load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); a = document.getElementById('ref'); a.value=''; return false;">[+]</span></a><?php } ?></div>
<div class="cell5 size"><?php print $message['size']; ?></div>
<div class="cell5"><?php if($message['attachments'] > 0) { ?><img src="<?php print ICON_ATTACHMENT; ?>" alt="" width="16" height="18" /><?php } else { ?>&nbsp;<?php } ?></div>
<div class="cell5"><?php if($message['tag']) { ?><span onmouseover="Tip('<?php print $message['tag']; ?>', BALLOON, true, ABOVE, true)" onmouseout="UnTip();"><img src="<?php print ICON_TAG; ?>" alt="" /></span><?php } else { ?>&nbsp;<?php } ?></div>
<div class="cell5"><?php if($message['note']) { ?><a href="#" title="<?php print preg_replace("/\"/", "&quot;", $message['note']); ?>"><img src="<?php print ICON_NOTES; ?>" alt="akakaka" width="16" height="16" /></a><?php } else { ?>&nbsp;<?php } ?></div>
<div class="cell5"><?php if($message['tag']) { ?><a href="#" title="<?php print preg_replace("/\"/", "&quot;", $message['tag']); ?>"><img src="<?php print ICON_TAG; ?>" alt="" /></a><?php } else { ?>&nbsp;<?php } ?></div>
<?php if(ENABLE_ON_THE_FLY_VERIFICATION == 1) { ?>
<div class="cell5 verification"><img src="<?php if($message['verification'] == 1){ print ICON_GREEN_OK; } else { print ICON_RED_X; } ?>" alt="verification status" /></div>
<?php } ?>
@ -92,22 +62,18 @@
<?php if($n > 0) { for($i=$i; $i<$page_len;$i++){ ?>
<div class="resultrow"></div>
<?php if($i == 20) { break; } ?>
<?php } } ?>
</div>
</div>
</div>
<div class="boxfooter" style="border: 1px solid black;">
<div id="pagenav">
<div class="navrow">
<?php if($n >= $page_len){ ?>
<div id="pagingleft">
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;">&lt;&lt;</a> &nbsp; <?php } else { ?><span class="navlink">&lt;&lt; &nbsp; </span><?php } ?>
<?php if($page > 0) { ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), <?php print $prev_page; ?>); return false;"> &lt; </a> <?php } else { ?><span class="navlink"> &lt; </span><?php } ?>
</div>
<div id="pagingcenter">
@ -115,13 +81,21 @@
</div>
<div id="pagingright">
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
<?php if($next_page <= $total_pages){ ?><a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), <?php print $next_page; ?>); return false;">&gt; </a> <?php } else { ?><span class="navlink">&gt; </span><?php } ?>
<?php if($page < $total_pages) { ?> &nbsp; <a href="#" class="navlink" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), <?php print $total_pages; ?>); return false;"> &gt;&gt; </a><?php } else { ?> <span class="navlink"> &nbsp; &gt;&gt;</span><?php } ?>
</div>
<?php } else { ?>&nbsp;<?php } ?>
<input type="hidden" id="tag_keys" name="tag_keys" value="<?php print $all_ids; ?>" />
<input type="hidden" id="_ref" name="_ref" value="<?php if(isset($_ref)) { print $_ref; } ?>" />
<input type="button" class="restore" value="<?php print $text_bulk_restore_selected_emails; ?>" onclick="javascript: restore_selected_emails('<?php print BULK_RESTORE_URL; ?>'); show_message('messagebox1', '<p><?php print $text_restored; ?></p>', 0.8); " />
<?php print $text_tag_search_results; ?>: <input type="text" id="tag_value" name="tag_value" class="tagtext" /> <input type="button" class="tag" onclick="javascript: tag_search_results('<?php print SEARCH_TAG_URL; ?>'); show_message('messagebox1', '<p><?php print $text_tagged; ?></p>', 0.8); var __ref = document.getElementById('_ref').value; if(__ref) { add_message_reference_to_form(__ref); } load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0); return false;" value="OK" />
</div>
</div>

View File

@ -0,0 +1,69 @@
<div id="searchpopup1" style="position: absolute; top: 22px; right: 233px; border: 1px solid #999999; display: none; background: #f8f8f8; color: #000000; font-weight: bold; padding: 15px; z-index: 1;">
<input type="hidden" name="xsearchtype" id="xsearchtype" value="simple" />
<input type="hidden" name="xsort" id="xsort" value="date" />
<input type="hidden" name="xorder" id="xorder" value="0" />
<input type="hidden" name="xref" id="xref" value="" />
<div style="position: absolute; right: 10px; top: 5px; margin: 10px; " onclick="javascript:document.getElementById('searchpopup1').style.display = 'none'; return false; "> X </div>
<div id="ss1">
<div class="row">
<div class="cell1"></div>
<div class="cell2"></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_from; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xfrom" id="xfrom" value="<?php if(isset($from)) { print $from; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_to; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xto" id="xto" value="<?php if(isset($to)) { print $to; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_subject; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xsubject" id="xsubject" value="<?php if(isset($subject)) { print $subject; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_body; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xbody" id="xbody" value="<?php if(isset($body)) { print $body; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_tags; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xtag" id="xtag" value="<?php if(isset($tag)) { print $tag; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_notes; ?>:</div>
<div class="cell2"><input type="text" class="text" name="xnote" id="xnote" value="<?php if(isset($note)) { print $note; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_attachment; ?>:</div>
<div class="cell2" style="text-align: left;"><input type="checkbox" class="checkbox" style="margin:0;" name="xhas_attachment" id="xhas_attachment" <?php if(isset($has_attachment) && $has_attachment == 1) { ?>checked="checked"<? } ?> /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_date; ?>: </div>
<div class="cell2"><input type="text" name="date1" id="date1" size="11" value="<?php if(isset($date1)) { print $date1; } ?>" /> <input type="text" name="date2" id="date2" size="11" value="<?php if(isset($date2)) { print $date2; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"></div>
<div class="cell2" style="text-align: left;">
<button id="button_search" class="active" style="width: 100px; margin: 0px;" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, 'x'), 0); document.getElementById('searchpopup1').style.display = 'none'; document.getElementById('_search').value='';"><?php print $text_search; ?></button> <input type="button" class="advsecondary" onclick="javascript:reset_simple_form(); return false;" value="<?php print $text_cancel; ?>" />
</div>
</div>
</div>
</div>

View File

@ -1,68 +1,11 @@
<div id="search">
<div id="search1">
<input type="hidden" name="searchtype" id="searchtype" value="simple" />
<input type="hidden" name="sort" id="sort" value="date" />
<input type="hidden" name="order" id="order" value="0" />
<input type="hidden" name="ref" id="ref" value="" />
<div id="ss1">
<div class="row">
<div class="cell1"><?php print $text_from; ?>:</div>
<div class="cell2"><input type="text" class="text" name="from" id="from" value="<?php if(isset($from)) { print $from; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_to; ?>:</div>
<div class="cell2"><input type="text" class="text" name="to" id="to" value="<?php if(isset($to)) { print $to; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_text; ?>:</div>
<div class="cell2"><input type="text" class="text" name="subject" id="subject" value="<?php if(isset($subject)) { print $subject; } ?>" /></div>
</div>
<div class="row">
<div class="cell1"><?php print $text_date; ?>: </div>
<div class="cell2"><input type="text" name="date1" id="date1" size="11" value="<?php if(isset($date1)) { print $date1; } ?>" /> <input type="text" name="date2" id="date2" size="11" value="<?php if(isset($date2)) { print $date2; } ?>" /></div>
</div>
<div class="row">
<div class="cell1">&nbsp;</div>
<div class="cell2">
<button id="button_search" class="active" onclick="script:load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);"><?php print $text_search; ?></button>
<input type="button" class="advsecondary" onclick="javascript:reset_simple_form(); return false;" value="<?php print $text_cancel; ?>" />
<input type="button" class="advsecondary" value="<?php print $text_save; ?>" onclick="javascript:send_ajax_post_request('<?php print SAVE_SEARCH_URL; ?>', assemble_search_term(count) + '&save=1', 'A1');" />
<input type="button" class="load" name="load" onclick="javascript:load_ajax_url('<?php print SAVE_SEARCH_URL; ?>&<?php if(isset($search_args)) { print $search_args; } ?>');" value="<?php print $text_load; ?>..." />
</div>
</div>
<input type="hidden" name="tag" value="" />
</div>
</div>
<div id="search2">
<div id="A1"></div>
</div>
</div>
<div id="AS">
<div id="resultscontainer" class="empty">
</div>
</div>
<div id="resultscontainer" class="empty" style="width: 990px; border:0px solid green; "></div>
<?php if(isset($searchterm)) { ?>
<script>
fix_search_order('<?php print $sort; ?>', '<?php print $order; ?>');
load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count), 0);
load_search_results('<?php print SEARCH_HELPER_URL; ?>', assemble_search_term(count, ''), 0);
load_ajax_url('<?php print SAVE_SEARCH_URL; ?>');
</script>

View File

@ -43,6 +43,17 @@
</div>
<div class="domainrow">
<div class="domaincell"><?php print $text_search_folders; ?>*:</div>
<div class="domaincell"><input type="text" id="s_piler_folder" name="s_piler_folder" value="<?php print $text_search_folder_to_add; ?>" class="autocompletetext" onfocus="javascript:toggle_hint('s_piler_folder', '<?php print $text_search_folder_to_add; ?>', 1);" onblur="javascript:toggle_hint('s_piler_folder', '<?php print $text_search_folder_to_add; ?>', 0);" /></div>
</div>
<div class="domainrow">
<div class="domaincell"><?php print $text_folders; ?>**:</div>
<div class="domaincell"><textarea style="height:80px;" name="folder" id="folder" class="domain"><?php if(isset($user['folder'])){ print $user['folder']; } ?></textarea></div>
</div>
<?php if(ENABLE_LDAP_IMPORT_FEATURE == 1) { ?>
<div class="domainrow">
<div class="domaincell">LDAP DN:</div>

View File

@ -44,6 +44,20 @@
<div class="domaincell"><textarea style="height:80px;" name="group" id="group" class="domain"><?php if(isset($user['group'])){ print $user['group']; } ?></textarea></div>
</div>
<div class="domainrow">
<div class="domaincell"><?php print $text_search_folders; ?>*:</div>
<div class="domaincell"><input type="text" id="s_piler_folder" name="s_piler_folder" value="<?php print $text_search_folder_to_add; ?>" class="autocompletetext" onfocus="javascript:toggle_hint('s_piler_folder', '<?php print $text_search_folder_to_add; ?>', 1);" onblur="javascript:toggle_hint('s_piler_folder', '<?php print $text_search_folder_to_add; ?>', 0);" /></div>
</div>
<div class="domainrow">
<div class="domaincell"><?php print $text_folders; ?>**:</div>
<div class="domaincell"><textarea style="height:80px;" name="folder" id="folder" class="domain"><?php if(isset($user['folder'])){ print $user['folder']; } ?></textarea></div>
</div>
<?php if(ENABLE_LDAP_IMPORT_FEATURE == 1) { ?>
<div class="domainrow">
<div class="domaincell">LDAP DN:</div>