diff options
136 files changed, 27255 insertions, 1871 deletions
diff --git a/Zotlabs/Module/Block.php b/Zotlabs/Module/Block.php index 062befdb5..45e61e4ea 100644 --- a/Zotlabs/Module/Block.php +++ b/Zotlabs/Module/Block.php @@ -52,8 +52,8 @@ class Block extends \Zotlabs\Web\Controller { require_once('include/security.php'); $sql_options = item_permissions_sql($u[0]['channel_id']); - $r = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid = '%s' and service = 'BUILDBLOCK' and + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and iconfig.k = 'BUILDBLOCK' and item_type = %d $sql_options $revision limit 1", intval($u[0]['channel_id']), dbesc($page_id), @@ -64,8 +64,8 @@ class Block extends \Zotlabs\Web\Controller { // Check again with no permissions clause to see if it is a permissions issue - $x = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid = '%s' and service = 'BUILDBLOCK' and + $x = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and iconfig.k = 'BUILDBLOCK' and item_type = %d $revision limit 1", intval($u[0]['channel_id']), dbesc($page_id), diff --git a/Zotlabs/Module/Blocks.php b/Zotlabs/Module/Blocks.php index 32650a090..475cfa6b3 100644 --- a/Zotlabs/Module/Blocks.php +++ b/Zotlabs/Module/Blocks.php @@ -27,7 +27,7 @@ class Blocks extends \Zotlabs\Web\Controller { } - function get() { + function get() { if(! \App::$profile) { notice( t('Requested profile is not available.') . EOL ); @@ -111,8 +111,11 @@ class Blocks extends \Zotlabs\Web\Controller { $editor = status_editor($a,$x); - $r = q("select iid, sid, mid, title, body, mimetype, created, edited from item_id left join item on item_id.iid = item.id - where item_id.uid = %d and service = 'BUILDBLOCK' and item_type = %d order by item.created desc", + + $r = q("select iconfig.iid, iconfig.k, iconfig.v, mid, title, body, mimetype, created, edited from iconfig + left join item on iconfig.iid = item.id + where uid = %d and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' + and item_type = %d order by item.created desc", intval($owner), intval(ITEM_TYPE_BLOCK) ); @@ -129,12 +132,12 @@ class Blocks extends \Zotlabs\Web\Controller { 'created' => $rr['created'], 'edited' => $rr['edited'], 'mimetype' => $rr['mimetype'], - 'pagetitle' => $rr['sid'], + 'pagetitle' => $rr['v'], 'mid' => $rr['mid'] ); $pages[$rr['iid']][] = array( 'url' => $rr['iid'], - 'name' => $rr['sid'], + 'name' => $rr['v'], 'title' => $rr['title'], 'created' => $rr['created'], 'edited' => $rr['edited'], diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php index 33deac4c8..3feba5370 100644 --- a/Zotlabs/Module/Connedit.php +++ b/Zotlabs/Module/Connedit.php @@ -16,14 +16,14 @@ require_once('include/zot.php'); require_once('include/widgets.php'); require_once('include/photos.php'); -/* @brief Initialize the connection-editor - * - * - */ - class Connedit extends \Zotlabs\Web\Controller { + /* @brief Initialize the connection-editor + * + * + */ + function init() { if(! local_channel()) @@ -51,7 +51,7 @@ class Connedit extends \Zotlabs\Web\Controller { * */ - function post() { + function post() { if(! local_channel()) return; @@ -357,7 +357,7 @@ class Connedit extends \Zotlabs\Web\Controller { * */ - function get() { + function get() { $sort_type = 0; $o = ''; @@ -418,7 +418,13 @@ class Connedit extends \Zotlabs\Web\Controller { goaway(z_root() . '/connedit/' . $contact_id); } - + if($cmd === 'resetphoto') { + q("update xchan set xchan_photo_date = '2001-01-01 00:00:00' where xchan_hash = '%s' limit 1", + dbesc($orig_record[0]['xchan_hash']) + ); + $cmd = 'refresh'; + } + if($cmd === 'refresh') { if($orig_record[0]['xchan_network'] === 'zot') { if(! zot_refresh($orig_record[0],\App::get_channel())) diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php index c1a0d84bc..d1d4edc7d 100644 --- a/Zotlabs/Module/Display.php +++ b/Zotlabs/Module/Display.php @@ -106,12 +106,13 @@ class Display extends \Zotlabs\Web\Controller { $x = q("select * from channel where channel_id = %d limit 1", intval($target_item['uid']) ); - $y = q("select * from item_id where uid = %d and service = 'WEBPAGE' and iid = %d limit 1", + $y = q("select * from iconfig left join item on iconfig.iid = item.id + where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item.id = %d limit 1", intval($target_item['uid']), intval($target_item['id']) ); if($x && $y) { - goaway(z_root() . '/page/' . $x[0]['channel_address'] . '/' . $y[0]['sid']); + goaway(z_root() . '/page/' . $x[0]['channel_address'] . '/' . $y[0]['v']); } else { notice( t('Page not found.') . EOL); diff --git a/Zotlabs/Module/Editblock.php b/Zotlabs/Module/Editblock.php index fb86557f2..1d6ef7a0a 100644 --- a/Zotlabs/Module/Editblock.php +++ b/Zotlabs/Module/Editblock.php @@ -85,11 +85,11 @@ class Editblock extends \Zotlabs\Web\Controller { intval($owner) ); if($itm) { - $item_id = q("select * from item_id where service = 'BUILDBLOCK' and iid = %d limit 1", + $item_id = q("select * from iconfig where cat = 'system' and k = 'BUILDBLOCK' and iid = %d limit 1", intval($itm[0]['id']) ); if($item_id) - $block_title = $item_id[0]['sid']; + $block_title = $item_id[0]['v']; } else { notice( t('Item not found') . EOL); diff --git a/Zotlabs/Module/Editlayout.php b/Zotlabs/Module/Editlayout.php index 5028882d2..fe794b5fd 100644 --- a/Zotlabs/Module/Editlayout.php +++ b/Zotlabs/Module/Editlayout.php @@ -96,11 +96,12 @@ class Editlayout extends \Zotlabs\Web\Controller { intval($owner) ); - $item_id = q("select * from item_id where service = 'PDL' and iid = %d limit 1", + $item_id = q("select * from iconfig where cat = 'system' and k = 'PDL' and iid = %d limit 1", intval($itm[0]['id']) ); if($item_id) - $layout_title = $item_id[0]['sid']; + $layout_title = $item_id[0]['v']; + $rp = 'layouts/' . $which; diff --git a/Zotlabs/Module/Editwebpage.php b/Zotlabs/Module/Editwebpage.php index 1b5c320a0..6d67c08e7 100644 --- a/Zotlabs/Module/Editwebpage.php +++ b/Zotlabs/Module/Editwebpage.php @@ -114,11 +114,11 @@ class Editwebpage extends \Zotlabs\Web\Controller { $itm[0]['body'] = crypto_unencapsulate(json_decode_plus($itm[0]['body']),$key); } - $item_id = q("select * from item_id where service = 'WEBPAGE' and iid = %d limit 1", + $item_id = q("select * from iconfig where cat = 'system' and k = 'WEBPAGE' and iid = %d limit 1", intval($itm[0]['id']) ); if($item_id) - $page_title = $item_id[0]['sid']; + $page_title = $item_id[0]['v']; $mimetype = $itm[0]['mimetype']; diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php new file mode 100644 index 000000000..2cd420664 --- /dev/null +++ b/Zotlabs/Module/Embedphotos.php @@ -0,0 +1,180 @@ +<?php +namespace Zotlabs\Module; + +/** + * + * This is the POST destination for the embedphotos button + * + */ + + +class Embedphotos extends \Zotlabs\Web\Controller { + + function get() { + + } + + function post() { + + if (argc() > 1 && argv(1) === 'album') { + // API: /embedphotos/album + $name = (x($_POST,'name') ? $_POST['name'] : null ); + if (!$name) { + json_return_and_die(array('errormsg' => 'Error retrieving album', 'status' => false)); + } + $album = $this->embedphotos_widget_album(array('channel' => \App::get_channel(), 'album' => $name)); + json_return_and_die(array('status' => true, 'content' => $album)); + + } + if (argc() > 1 && argv(1) === 'albumlist') { + // API: /embedphotos/albumlist + $album_list = $this->embedphotos_album_list($a); + json_return_and_die(array('status' => true, 'albumlist' => $album_list)); + + } + if (argc() > 1 && argv(1) === 'photolink') { + // API: /embedphotos/photolink + $href = (x($_POST,'href') ? $_POST['href'] : null ); + if (!$href) { + json_return_and_die(array('errormsg' => 'Error retrieving link ' . $href, 'status' => false)); + } + $resource_id = array_pop(explode("/", $href)); + $r = q("SELECT obj from item where resource_type = 'photo' and resource_id = '%s' limit 1", + dbesc($resource_id) + ); + if(!$r) { + json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false)); + } + $obj = json_decode($r[0]['obj'], true); + if(x($obj,'body')) { + $photolink = $obj['body']; + } elseif (x($obj,'bbcode')) { + $photolink = $obj['bbcode']; + } else { + json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false)); + } + json_return_and_die(array('status' => true, 'photolink' => $photolink)); + + } + } + + +/** + * Copied from include/widgets.php::widget_album() with a modification to get the profile_uid from + * the input array as in widget_item() + * @param type $name + * @return string + */ +function embedphotos_widget_album($args) { + + $channel_id = 0; + if(array_key_exists('channel',$args)) + $channel = $args['channel']; + $channel_id = intval($channel['channel_id']); + if(! $channel_id) + $channel_id = \App::$profile_uid; + if(! $channel_id) + return ''; + $owner_uid = $channel_id; + require_once('include/security.php'); + $sql_extra = permissions_sql($channel_id); + + if(! perm_is_allowed($channel_id,get_observer_hash(),'view_storage')) + return ''; + + if($args['album']) + $album = $args['album']; + if($args['title']) + $title = $args['title']; + + /** + * This may return incorrect permissions if you have multiple directories of the same name. + * It is a limitation of the photo table using a name for a photo album instead of a folder hash + */ + + if($album) { + $x = q("select hash from attach where filename = '%s' and uid = %d limit 1", + dbesc($album), + intval($owner_uid) + ); + if($x) { + $y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']); + if(! $y) + return ''; + } + } + + $order = 'DESC'; + + $r = q("SELECT p.resource_id, p.id, p.filename, p.mimetype, p.imgscale, p.description, p.created FROM photo p INNER JOIN + (SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph + ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale) + ORDER BY created $order", + intval($owner_uid), + dbesc($album), + intval(PHOTO_NORMAL), + intval(PHOTO_PROFILE) + ); + + $photos = array(); + if(count($r)) { + $twist = 'rotright'; + foreach($r as $rr) { + + if($twist == 'rotright') + $twist = 'rotleft'; + else + $twist = 'rotright'; + + $ext = $phototypes[$rr['mimetype']]; + + $imgalt_e = $rr['filename']; + $desc_e = $rr['description']; + + $imagelink = (z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id'] + . (($_GET['order'] === 'posted') ? '?f=&order=posted' : '')); + + $photos[] = array( + 'id' => $rr['id'], + 'twist' => ' ' . $twist . rand(2,4), + 'link' => $imagelink, + 'title' => t('View Photo'), + 'src' => z_root() . '/photo/' . $rr['resource_id'] . '-' . $rr['imgscale'] . '.' .$ext, + 'alt' => $imgalt_e, + 'desc'=> $desc_e, + 'ext' => $ext, + 'hash'=> $rr['resource_id'], + 'unknown' => t('Unknown') + ); + } + } + + $tpl = get_markup_template('photo_album.tpl'); + $o .= replace_macros($tpl, array( + '$photos' => $photos, + '$album' => (($title) ? $title : $album), + '$album_id' => rand(), + '$album_edit' => array(t('Edit Album'), $album_edit), + '$can_post' => false, + '$upload' => array(t('Upload'), z_root() . '/photos/' . \App::$profile['channel_address'] . '/upload/' . bin2hex($album)), + '$order' => false, + '$upload_form' => $upload_form, + '$usage' => $usage_message + )); + + return $o; +} + + +function embedphotos_album_list($a) { + $o = ''; + require_once('include/photos.php'); + $p = photos_albums_list(\App::get_channel(), \App::get_observer()); + if ($p['success']) { + return $p['albums']; + } else { + return null; + } +} + +} diff --git a/Zotlabs/Module/Impel.php b/Zotlabs/Module/Impel.php index e326f7818..735c311d0 100644 --- a/Zotlabs/Module/Impel.php +++ b/Zotlabs/Module/Impel.php @@ -137,9 +137,7 @@ class Impel extends \Zotlabs\Web\Controller { require_once('library/urlify/URLify.php'); $pagetitle = strtolower(\URLify::transliterate($j['pagetitle'])); } - - - + // Verify ability to use html or php!!! $execflag = false; @@ -154,21 +152,14 @@ class Impel extends \Zotlabs\Web\Controller { } } - $remote_id = 0; - - $z = q("select * from item_id where sid = '%s' and service = '%s' and uid = %d limit 1", - dbesc($pagetitle), - dbesc($namespace), - intval(local_channel()) - ); - $i = q("select id, edited, item_deleted from item where mid = '%s' and uid = %d limit 1", dbesc($arr['mid']), intval(local_channel()) ); + + \Zotlabs\Lib\IConfig::Set($arr,'system',$namespace,(($pagetitle) ? $pagetitle : substr($arr['mid'],0,16)),true); - if($z && $i) { - $remote_id = $z[0]['id']; + if($i) { $arr['id'] = $i[0]['id']; // don't update if it has the same timestamp as the original if($arr['edited'] > $i[0]['edited']) @@ -182,12 +173,12 @@ class Impel extends \Zotlabs\Web\Controller { intval(local_channel()) ); } - $x = item_store($arr,$execflag); + else + $x = item_store($arr,$execflag); } - if($x['success']) { + if($x && $x['success']) { $item_id = $x['item_id']; - update_remote_id($channel,$item_id,$arr['item_type'],$pagetitle,$namespace,$remote_id,$arr['mid']); } } @@ -199,7 +190,8 @@ class Impel extends \Zotlabs\Web\Controller { notice( sprintf( t('%s element installation failed'), $installed_type)); } - //??? should perhaps return ret? + //??? should perhaps return ret? + json_return_and_die(true); } diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php index 2601feb0a..272da7971 100644 --- a/Zotlabs/Module/Item.php +++ b/Zotlabs/Module/Item.php @@ -1,4 +1,5 @@ <?php + namespace Zotlabs\Module; /** @@ -229,7 +230,7 @@ class Item extends \Zotlabs\Web\Controller { if($namespace && $remote_id) { // It wasn't an internally generated post - see if we've got an item matching this remote service id - $i = q("select iid from item_id where service = '%s' and sid = '%s' limit 1", + $i = q("select iid from iconfig where cat = 'system' and k = '%s' and v = '%s' limit 1", dbesc($namespace), dbesc($remote_id) ); @@ -880,13 +881,21 @@ class Item extends \Zotlabs\Web\Controller { } } + if($webpage) { + Zlib\IConfig::Set($datarray,'system', webpage_to_namespace($webpage), + (($pagetitle) ? $pagetitle : substr($datarray['mid'],0,16)),true); + } + elseif($namespace) { + Zlib\IConfig::Set($datarray,'system', $namespace, + (($remote_id) ? $remote_id : substr($datarray['mid'],0,16)),true); + } + + if($orig_post) { $datarray['id'] = $post_id; item_store_update($datarray,$execflag); - update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid); - if(! $parent) { $r = q("select * from item where id = %d", intval($post_id) @@ -894,10 +903,7 @@ class Item extends \Zotlabs\Web\Controller { if($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - $rid = q("select * from item_id where iid = %d", - intval($post_id) - ); - build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)),'item_id' => $rid)); + build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)))); } } if(! $nopush) @@ -978,10 +984,7 @@ class Item extends \Zotlabs\Web\Controller { goaway(z_root() . "/" . $return_path ); // NOTREACHED } - - - update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid); - + if(($parent) && ($parent != $post_id)) { // Store the comment signature information in case we need to relay to Diaspora //$ditem = $datarray; @@ -995,10 +998,7 @@ class Item extends \Zotlabs\Web\Controller { if($r) { xchan_query($r); $sync_item = fetch_post_tags($r); - $rid = q("select * from item_id where iid = %d", - intval($post_id) - ); - build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)),'item_id' => $rid)); + build_sync_packet($uid,array('item' => array(encode_item($sync_item[0],true)))); } } diff --git a/Zotlabs/Module/Layouts.php b/Zotlabs/Module/Layouts.php index 9b9fc22f3..a0b1c31cc 100644 --- a/Zotlabs/Module/Layouts.php +++ b/Zotlabs/Module/Layouts.php @@ -90,13 +90,14 @@ class Layouts extends \Zotlabs\Web\Controller { return; } - //This feature is not exposed in redbasic ui since it is not clear why one would want to - //download a json encoded pdl file - we dont have a possibility to import it. - //Use the buildin share/install feature instead. + // This feature is not exposed in redbasic ui since it is not clear why one would want to + // download a json encoded pdl file - we dont have a possibility to import it. + // Use the buildin share/install feature instead. + if((argc() > 3) && (argv(2) === 'share') && (argv(3))) { - $r = q("select sid, service, mimetype, title, body from item_id - left join item on item.id = item_id.iid - where item_id.uid = %d and item.mid = '%s' and service = 'PDL' order by sid asc", + $r = q("select iconfig.v, iconfig.k, mimetype, title, body from iconfig + left join item on item.id = iconfig.iid + where uid = %d and mid = '%s' and iconfig.cat = 'system' and iconfig.k = 'PDL' order by iconfig.v asc", intval($owner), dbesc(argv(3)) ); @@ -141,8 +142,9 @@ class Layouts extends \Zotlabs\Web\Controller { $editor = status_editor($a,$x); - $r = q("select iid, sid, mid, title, body, mimetype, created, edited, item_type from item_id left join item on item_id.iid = item.id - where item_id.uid = %d and service = 'PDL' and item_type = %d order by item.created desc", + $r = q("select iconfig.iid, iconfig.v, mid, title, body, mimetype, created, edited, item_type from iconfig + left join item on iconfig.iid = item.id + where uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' and item_type = %d order by item.created desc", intval($owner), intval(ITEM_TYPE_PDL) ); @@ -164,7 +166,7 @@ class Layouts extends \Zotlabs\Web\Controller { ); $pages[$rr['iid']][] = array( 'url' => $rr['iid'], - 'title' => $rr['sid'], + 'title' => $rr['v'], 'descr' => $rr['title'], 'mid' => $rr['mid'], 'created' => $rr['created'], diff --git a/Zotlabs/Module/Page.php b/Zotlabs/Module/Page.php index 14273614c..deb23da68 100644 --- a/Zotlabs/Module/Page.php +++ b/Zotlabs/Module/Page.php @@ -65,9 +65,10 @@ class Page extends \Zotlabs\Web\Controller { require_once('include/security.php'); $sql_options = item_permissions_sql($u[0]['channel_id']); - $r = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid = '%s' and item.item_delayed = 0 and (( service = 'WEBPAGE' and item_type = %d ) - OR ( service = 'PDL' AND item_type = %d )) $sql_options $revision limit 1", + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and item.item_delayed = 0 + and (( iconfig.k = 'WEBPAGE' and item_type = %d ) + OR ( iconfig.k = 'PDL' AND item_type = %d )) $sql_options $revision limit 1", intval($u[0]['channel_id']), dbesc($page_id), intval(ITEM_TYPE_WEBPAGE), @@ -77,9 +78,9 @@ class Page extends \Zotlabs\Web\Controller { // Check again with no permissions clause to see if it is a permissions issue - $x = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid = '%s' and item.item_delayed = 0 and service = 'WEBPAGE' and - item_type = %d $revision limit 1", + $x = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' and item.item_delayed = 0 + and iconfig.k = 'WEBPAGE' and item_type = %d $revision limit 1", intval($u[0]['channel_id']), dbesc($page_id), intval(ITEM_TYPE_WEBPAGE) @@ -119,11 +120,8 @@ class Page extends \Zotlabs\Web\Controller { \App::$data['webpage'] = $r; } - - - - - function get() { + + function get() { $r = \App::$data['webpage']; if(! $r) diff --git a/Zotlabs/Module/README.md b/Zotlabs/Module/README.md new file mode 100644 index 000000000..3b870dd7b --- /dev/null +++ b/Zotlabs/Module/README.md @@ -0,0 +1,80 @@ +Zotlabs/Module +============== + + +This directory contains controller modules for handling web requests. The +lowercase class name indicates the head of the URL path which this module +handles. There are other methods of attaching (routing) URL paths to +controllers, but this is the primary method used in this project. + +Module controllers MUST reside in this directory and namespace to be +autoloaded (unless other specific routing methods are employed). They +typically use and extend the class definition in Zotlabs/Web/Controller +as a template. + +Template: + + <?php + + namespace Zotlabs\Web; + + + class Controller { + + function init() {} + function post() {} + function get() {} + + } + + +Typical Module declaration for the '/foo' URL route: + + + <?php + namespace Zotlabs\Module; + + class Foo extends \Zotlabs\Web\Controller { + + function init() { + // init() handler goes here + } + + function post() { + // post handler goes here + } + + function get() { + return 'Hello world.' . EOL; + } + + } + +This model provides callbacks for public functions named init(), post(), +and get(). init() is always called. post() is called if $_POST variables +are present, and get() is called if none of the prior functions terminated +the handler. The get() method typically retuns a string which represents +the contents of the content region of the resulting page. Modules which emit +json, xml or other machine-readable formats typically emit their contents +inside the init() function and call 'killme()' to terminate the Module. + +Modules are passed the URL path as argc,argv arguments. For a path such as + + https://mysite.something/foo/bar/baz + +The app will typically invoke the Module class 'Foo' and pass it + + $x = argc(); // $x = 3 + + $x = argv(0); // $x = 'foo' + $x = argv(1); // $x = 'bar' + $x = argv(2); // $x = 'baz' + +These are handled in a similar fashion to their counterparts in the Unix shell +or C/C++ languages. Do not confuse the argc(),argv() functions with the +global variables $argc,$argv which are passed to command line programs. These +are handled separately by command line and Zotlabs/Daemon class functions. + + + +
\ No newline at end of file diff --git a/Zotlabs/Module/Webpages.php b/Zotlabs/Module/Webpages.php index bb8d454c8..fc292be6f 100644 --- a/Zotlabs/Module/Webpages.php +++ b/Zotlabs/Module/Webpages.php @@ -28,7 +28,7 @@ class Webpages extends \Zotlabs\Web\Controller { } - function get() { + function get() { if(! \App::$profile) { notice( t('Requested profile is not available.') . EOL ); @@ -138,11 +138,19 @@ class Webpages extends \Zotlabs\Web\Controller { $sql_extra = item_permissions_sql($owner); - $r = q("select * from item_id left join item on item_id.iid = item.id - where item_id.uid = %d and service = 'WEBPAGE' and item_type = %d $sql_extra order by item.created desc", + + $r = q("select * from iconfig left join item on iconfig.iid = item.id + where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' and item_type = %d + $sql_extra order by item.created desc", intval($owner), intval(ITEM_TYPE_WEBPAGE) ); + +// $r = q("select * from item_id left join item on item_id.iid = item.id +// where item_id.uid = %d and service = 'WEBPAGE' and item_type = %d $sql_extra order by item.created desc", +// intval($owner), +// intval(ITEM_TYPE_WEBPAGE) +// ); $pages = null; @@ -160,13 +168,13 @@ class Webpages extends \Zotlabs\Web\Controller { 'created' => $rr['created'], 'edited' => $rr['edited'], 'mimetype' => $rr['mimetype'], - 'pagetitle' => $rr['sid'], + 'pagetitle' => $rr['v'], 'mid' => $rr['mid'], 'layout_mid' => $rr['layout_mid'] ); $pages[$rr['iid']][] = array( 'url' => $rr['iid'], - 'pagetitle' => $rr['sid'], + 'pagetitle' => $rr['v'], 'title' => $rr['title'], 'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']), 'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited']), diff --git a/Zotlabs/Module/Wiki.php b/Zotlabs/Module/Wiki.php index 1e6446904..9e7d151b5 100644 --- a/Zotlabs/Module/Wiki.php +++ b/Zotlabs/Module/Wiki.php @@ -1,6 +1,6 @@ -<?php +<?php /** @file */ -namespace Zotlabs\Module;/** @file */ +namespace Zotlabs\Module; class Wiki extends \Zotlabs\Web\Controller { @@ -72,7 +72,8 @@ class Wiki extends \Zotlabs\Web\Controller { switch (argc()) { case 2: // Configure page template - $wikiheader = t('Wiki Sandbox'); + $wikiheaderName = t('Wiki'); + $wikiheaderPage = t('Sandbox'); $content = '"# Wiki Sandbox\n\nContent you **edit** and **preview** here *will not be saved*."'; $hide_editor = false; $showPageControls = false; @@ -113,7 +114,8 @@ class Wiki extends \Zotlabs\Web\Controller { } else { $wiki_editor = true; } - $wikiheader = urldecode($wikiUrlName) . ': ' . urldecode($pageUrlName); // show wiki name and page + $wikiheaderName = urldecode($wikiUrlName); + $wikiheaderPage = urldecode($pageUrlName); $p = wiki_get_page_content(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName)); if(!$p['success']) { notice('Error retrieving page content' . EOL); @@ -135,7 +137,8 @@ class Wiki extends \Zotlabs\Web\Controller { require_once('library/markdown.php'); $o .= replace_macros(get_markup_template('wiki.tpl'),array( - '$wikiheader' => $wikiheader, + '$wikiheaderName' => $wikiheaderName, + '$wikiheaderPage' => $wikiheaderPage, '$hideEditor' => $hide_editor, '$showPageControls' => $showPageControls, '$showNewWikiButton'=> $showNewWikiButton, @@ -152,6 +155,7 @@ class Wiki extends \Zotlabs\Web\Controller { '$renderedContent' => Markdown(json_decode($content)), '$wikiName' => array('wikiName', t('Enter the name of your new wiki:'), '', ''), '$pageName' => array('pageName', t('Enter the name of the new page:'), '', ''), + '$pageRename' => array('pageRename', t('Enter the new name:'), '', ''), '$commitMsg' => array('commitMsg', '', '', '', '', 'placeholder="(optional) Enter a custom message when saving the page..."'), '$pageHistory' => $pageHistory['history'] )); @@ -377,7 +381,7 @@ class Wiki extends \Zotlabs\Web\Controller { if($deleted['success']) { $ob = \App::get_observer(); $commit = wiki_git_commit(array( - 'commit_msg' => 'Deleted ' . $pageHtmlName, + 'commit_msg' => 'Deleted ' . $pageUrlName, 'resource_id' => $resource_id, 'observer' => $ob, 'files' => null @@ -416,6 +420,48 @@ class Wiki extends \Zotlabs\Web\Controller { } } + // Rename a page + if ((argc() === 4) && (argv(2) === 'rename') && (argv(3) === 'page')) { + $resource_id = $_POST['resource_id']; + $pageUrlName = $_POST['oldName']; + $pageNewName = $_POST['newName']; + if ($pageUrlName === 'Home') { + json_return_and_die(array('message' => 'Cannot rename Home','success' => false)); + } + if(urlencode(escape_tags($pageNewName)) === '') { + json_return_and_die(array('message' => 'Error renaming page. Invalid name.', 'success' => false)); + } + // Determine if observer has permission to rename pages + $nick = argv(1); + $channel = get_channel_by_nick($nick); + if (local_channel() !== intval($channel['channel_id'])) { + $observer_hash = get_observer_hash(); + $perms = wiki_get_permissions($resource_id, intval($channel['channel_id']), $observer_hash); + if(!$perms['write']) { + logger('Wiki write permission denied. ' . EOL); + json_return_and_die(array('success' => false)); + } + } + $renamed = wiki_rename_page(array('resource_id' => $resource_id, 'pageUrlName' => $pageUrlName, 'pageNewName' => $pageNewName)); + logger('$renamed: ' . json_encode($renamed)); + if($renamed['success']) { + $ob = \App::get_observer(); + $commit = wiki_git_commit(array( + 'commit_msg' => 'Renamed ' . urldecode($pageUrlName) . ' to ' . $renamed['page']['htmlName'], + 'resource_id' => $resource_id, + 'observer' => $ob, + 'files' => array($pageUrlName . '.md', $renamed['page']['fileName']), + 'all' => true + )); + if($commit['success']) { + json_return_and_die(array('name' => $renamed['page'], 'message' => 'Wiki git repo commit made', 'success' => true)); + } else { + json_return_and_die(array('message' => 'Error making git commit','success' => false)); + } + } else { + json_return_and_die(array('message' => 'Error renaming page', 'success' => false)); + } + } //notice('You must be authenticated.'); json_return_and_die(array('message' => 'You must be authenticated.', 'success' => false)); diff --git a/Zotlabs/Render/Comanche.php b/Zotlabs/Render/Comanche.php index 1017ec6aa..820897ee9 100644 --- a/Zotlabs/Render/Comanche.php +++ b/Zotlabs/Render/Comanche.php @@ -179,7 +179,8 @@ class Comanche { $channel_id = $this->get_channel_id(); if($channel_id) { - $r = q("select * from item inner join item_id on iid = item.id and item_id.uid = item.uid and item.uid = %d and service = 'BUILDBLOCK' and sid = '%s' limit 1", + $r = q("select * from item inner join iconfig on iconfig.iid = item.id and item.uid = %d + and iconfig.cat = 'system' and iconfig.k = 'BUILDBLOCK' and iconfig.v = '%s' limit 1", intval($channel_id), dbesc($name) ); @@ -282,12 +283,12 @@ class Comanche { /** - * Widgets will have to get any operational arguments from the session, the - * global app environment, or config storage until we implement argument passing + * Render a widget * * @param string $name * @param string $text */ + function widget($name, $text) { $vars = array(); $matches = array(); @@ -314,7 +315,7 @@ class Comanche { require_once(theme_include($theme_widget)); } - if (function_exists($func)) + if(function_exists($func)) return $func($vars); } diff --git a/Zotlabs/Storage/BasicAuth.php b/Zotlabs/Storage/BasicAuth.php index 121a9c3a1..60fc2c988 100644 --- a/Zotlabs/Storage/BasicAuth.php +++ b/Zotlabs/Storage/BasicAuth.php @@ -3,6 +3,8 @@ namespace Zotlabs\Storage; use Sabre\DAV; +use Sabre\HTTP\RequestInterface; +use Sabre\HTTP\ResponseInterface; /** * @brief Authentication backend class for DAV. @@ -145,6 +147,57 @@ class BasicAuth extends DAV\Auth\Backend\AbstractBasic { return true; } + /** + * When this method is called, the backend must check if authentication was + * successful. + * + * The returned value must be one of the following + * + * [true, "principals/username"] + * [false, "reason for failure"] + * + * If authentication was successful, it's expected that the authentication + * backend returns a so-called principal url. + * + * Examples of a principal url: + * + * principals/admin + * principals/user1 + * principals/users/joe + * principals/uid/123457 + * + * If you don't use WebDAV ACL (RFC3744) we recommend that you simply + * return a string such as: + * + * principals/users/[username] + * + * @param RequestInterface $request + * @param ResponseInterface $response + * @return array + */ + function check(RequestInterface $request, ResponseInterface $response) { + + if(local_channel()) { + return [ true, $this->principalPrefix . $this->channel_name ]; + } + + $auth = new \Sabre\HTTP\Auth\Basic( + $this->realm, + $request, + $response + ); + + $userpass = $auth->getCredentials(); + if (!$userpass) { + return [false, "No 'Authorization: Basic' header found. Either the client didn't send one, or the server is misconfigured"]; + } + if (!$this->validateUserPass($userpass[0], $userpass[1])) { + return [false, "Username or password was incorrect"]; + } + return [true, $this->principalPrefix . $userpass[0]]; + + } + protected function check_module_access($channel_id) { if($channel_id && \App::$module === 'cdav') { $x = get_pconfig($channel_id,'cdav','enabled'); diff --git a/Zotlabs/Web/Controller.php b/Zotlabs/Web/Controller.php index ac835e008..2d0f58891 100644 --- a/Zotlabs/Web/Controller.php +++ b/Zotlabs/Web/Controller.php @@ -9,4 +9,5 @@ class Controller { function post() {} function get() {} -}
\ No newline at end of file +} + @@ -48,7 +48,7 @@ define ( 'PLATFORM_NAME', 'hubzilla' ); define ( 'STD_VERSION', '1.8' ); define ( 'ZOT_REVISION', '1.1' ); -define ( 'DB_UPDATE_VERSION', 1176 ); +define ( 'DB_UPDATE_VERSION', 1178 ); /** @@ -771,6 +771,7 @@ class App { public static $groups; public static $language; public static $langsave; + public static $rtl = false; public static $plugins_admin; public static $module_loaded = false; public static $query_string; @@ -2282,6 +2283,12 @@ function construct_page(&$a) { $page = App::$page; $profile = App::$profile; + // There's some experimental support for right-to-left text in the view/php/default.php page template. + // In v1.9 we started providing direction preference in the per language hstrings.php file + // This requires somebody with fluency in a RTL language to make happen + + $page['direction'] = 0; // ((App::$rtl) ? 1 : 0); + header("Content-type: text/html; charset=utf-8"); // security headers - see https://securityheaders.io diff --git a/doc/bbcode.html b/doc/bbcode.html index 5a51135ea..7a2c969eb 100644 --- a/doc/bbcode.html +++ b/doc/bbcode.html @@ -14,6 +14,7 @@ <li>[img float=right]https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg[/img] <img src="https://zothub.com/images/default_profile_photos/rainbow_man/48.jpg" style="float:right;" alt="Image/photo" /><br /> <div style="clear:both;"></div> <li>[code]code[/code] <code>code</code><br /> +<li>[code=xxx]syntax highlighted code[/code] <code>supported languages php, css, mysql, sql, abap, diff, html, perl, ruby, vbscript, avrc, dtd, java, xml, cpp, python, javascript, js, json, sh</code><br /> <li>[quote]quote[/quote] <blockquote>quote</blockquote><br /> <li>[quote=Author]Author? Me? No, no, no...[/quote] <br /><strong class="author">Author wrote:</strong><blockquote>Author? Me? No, no, no...</blockquote><br /> <li> [nobb] may be used to escape bbcode.</ul><br /> @@ -83,7 +84,7 @@ or<br /><br />[dl terms="b"]<br />[*= First element term] First element descript <li>[spoiler] for hiding spoilers<br /><br /></li> <li>[rpost=title]Text to post[/rpost] The observer will be returned to their home hub to enter a post with the specified title and body. Both are optional</li> -<li>[qr]text to post[/qr] - create a QR code.</li> +<li>[qr]text to post[/qr] - create a QR code (if the qrator plugin is installed).</li> <li>[toc] - create a table of content in a webpage. Please refer to the <a href="http://ndabas.github.io/toc/" target="_blank">original jquery toc</a> to get more explanations. <ul> <li>Optional param: 'data-toc'. If ommited the default is 'body'</li> diff --git a/doc/context/de/wiki/help.html b/doc/context/de/wiki/help.html new file mode 100644 index 000000000..e203ee221 --- /dev/null +++ b/doc/context/de/wiki/help.html @@ -0,0 +1,10 @@ +<dl class="dl-horizontal"> + <dt>Allgemein</dt> + <dd>Jedes Wiki ist eine Sammlung aus mit Markdown formatierten Seiten.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki_list", 1); return false;' title="Click to highlight element...">Wiki Liste</a></dt> + <dd>Wikis die dem eigenen Kanal gehören und <i>mit der Berechtigung zum Anschauen</i>, sind in der Seitenleiste gelistet.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element...">Seiten Versionen</a></dt> + <dd>Jede Änderung einer Seite wird gespeichert, um eine schnelle Berichtigung zu ermöglichen. Klick auf das <b>Versionsgeschichte</b> Tab um den Verlauf der Seitenbearbeitung zu sehen, einschließlich Datum und Autor. Der Zurück-Knopf lädt die ausgewählte Änderung, aber ohne die Seite automatisch zu spreichern.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Click to highlight element...">Seiten</a></dt> + <dd>Die Seiten des Wikis werden in <b>Wiki Seiten</b> gelistet. Vor dem Speichern einer Seite über das <b>Seiten</b> Dropdown Menu, hast Du die Möglichkeit eine <a href="#" onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Click to highlight element...">Zusammenfassung der Änderungen</a> einzutragen. Dieser Text wird anschließend unter <a href="#" onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element..."><b>Seiten Versionen</b></a> in der Versionsgeschichte angezeigt.</dd> +</dl>
\ No newline at end of file diff --git a/doc/context/en/wiki/help.html b/doc/context/en/wiki/help.html new file mode 100644 index 000000000..314a9d60b --- /dev/null +++ b/doc/context/en/wiki/help.html @@ -0,0 +1,10 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Each wiki is a collection of pages, composed as Markdown-formatted text files.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki_list", 1); return false;' title="Click to highlight element...">Wiki List</a></dt> + <dd>Wikis owned by the channel <i>that you have permission to view</i> are listed in the side panel.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element...">Page History</a></dt> + <dd>Every revision of a page is saved to allow quick reversion. Click the <b>History</b> tab to view a history of page revisions, including the date and author of each. The revert button will load the selected revision but will not automatically save the page.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Click to highlight element...">Pages</a></dt> + <dd>The list of pages in the wiki are listed in the <b>Wiki Pages</b> panel. Prior to saving page edits using the <b>Page</b> control dropdown menu, you may <a href='#' onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Click to highlight element...">enter a custom message</a> to be displayed in the <a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Click to highlight element..."><b>Page History</b></a> viewer along with the revision.</dd> +</dl>
\ No newline at end of file diff --git a/doc/context/es-es/wiki/help.html b/doc/context/es-es/wiki/help.html new file mode 100644 index 000000000..fdae1f095 --- /dev/null +++ b/doc/context/es-es/wiki/help.html @@ -0,0 +1,10 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Cada wiki es una colección de páginas, compuestas como ficheros de texto formateados en Markdown.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki_list", 1); return false;' title="Pulsar para resaltar el elemento...">Lista de wikis</a></dt> + <dd>Las páginas wiki propiedad del canal <i>que esté autorizado a ver</i> aparecen en el panel lateral.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Pulsar para resaltar el elemento...">Historial de la página</a></dt> + <dd>Cada revisión de una página se salva para permitir su rápida recuperación. Pulsar en la pestaña <b>Historial</b> para ver las revisiones de la página, incluyendo la fecha y el autor de cada una. El botón de reversión cargará la revisión seleccionada, pero no salvará automáticamente la página.</dd> + <dt><a href='#' onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Pulsar para resaltar el elemento...">Páginas</a></dt> + <dd>La lista de páginas en el wiki aparece en el panel <b>Páginas del wiki</b>. Antes de salvar las páginas editadas usando el control <b>Página</b> en el menú desplegable, puede <a href='#' onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Pulsar para resaltar el elemento...">escribir un mensaje personalizado</a> que se verá en el visor <a href='#' onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Pulsar para resaltar el elemento..."><b>Historial de la página</b></a> junto con la revisión.</dd> +</dl> diff --git a/doc/context/it/wiki/help.html b/doc/context/it/wiki/help.html new file mode 100644 index 000000000..e93e18eb4 --- /dev/null +++ b/doc/context/it/wiki/help.html @@ -0,0 +1,10 @@ +<dl class="dl-horizontal"> + <dt>General</dt> + <dd>Ogni wiki è una raccolta di pagine, composta di file di testo formattati con Markdown.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki_list", 1); return false;' title="Fai click per evidenziare l'elemento...">Elenco dei Wiki</a></dt> + <dd>I Wiki del canale <i>che sei abilitato a vedere</i> sono elencati nel pannello laterale.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Fai click per evidenziare l'elemento...">Cronologia della pagina</a></dt> + <dd>Le revisioni di ogni pagina vengono salvate per rendere possibile un ripristino veloce. Fai click sulla tab <b>Cronologia</b> per vedere l'elenco delle revisioni, con autore e data delle stesse. Il bottone di ripristino riporterà alla revisione selezionata, senza salvare automaticamente la pagina.</dd> + <dt><a href="#" onclick='contextualHelpFocus("#wiki_page_list", 1); return false;' title="Fai click per evidenziare l'elemento...">Pagine</a></dt> + <dd>L'elenco delle pagine del wiki si trova nel pannello <b>Pagine del wiki</b>. Prima di salvare le modifiche con il menu a discela <b>Pagina</b>, puoi <a href="#" onclick='contextualHelpFocus("#id_commitMsg", 0); return false;' title="Fai click per evidenziare l'elemento...">inserire un messaggio</a> che verrà visualizzato nella visualizzazione della <a href="#" onclick='contextualHelpFocus("#wiki-get-history", 0); return false;' title="Fai click per evidenziare l'elemento..."><b>storia della pagina</b></a> insieme alla revisione.</dd> +</dl>
\ No newline at end of file diff --git a/doc/database.bb b/doc/database.bb index d327adbdc..02a70e2c7 100644 --- a/doc/database.bb +++ b/doc/database.bb @@ -1,6 +1,7 @@ [h2]Database Tables[/h2] [table] [tr][th]Table[/th][th]Description[/th][/tr] +[tr][td][zrl=[baseurl]/help/database/db_abconfig]abconfig[/zrl][/td][td]arbitrary storage for connections of local channels[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_abook]abook[/zrl][/td][td]connections of local channels[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_account]account[/zrl][/td][td]service provider account[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_addon]addon[/zrl][/td][td]registered plugins[/td][/tr] @@ -8,6 +9,7 @@ [tr][td][zrl=[baseurl]/help/database/db_attach]attach[/zrl][/td][td]file attachments[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_auth_codes]auth_codes[/zrl][/td][td]OAuth usage[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_cache]cache[/zrl][/td][td]OEmbed cache[/td][/tr] +[tr][td][zrl=[baseurl]/help/database/db_cal]cal[/zrl][/td][td]CalDAV containers for events[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_channel]channel[/zrl][/td][td]local channels[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_chat]chat[/zrl][/td][td]chat room content[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_chatpresence]chatpresence[/zrl][/td][td]channel presence information for chat[/td][/tr] @@ -16,17 +18,14 @@ [tr][td][zrl=[baseurl]/help/database/db_config]config[/zrl][/td][td]main configuration storage[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_conv]conv[/zrl][/td][td]Diaspora private messages meta conversation structure[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_event]event[/zrl][/td][td]Events[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_fcontact]fcontact[/zrl][/td][td]friend suggestion stuff (obsolete)[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_ffinder]ffinder[/zrl][/td][td]friend suggestion stuff (obsolete)[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_fserver]fserver[/zrl][/td][td]obsolete[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_fsuggest]fsuggest[/zrl][/td][td]friend suggestion stuff (unused)[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_group_member]group_member[/zrl][/td][td]privacy groups (collections), group info[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_groups]groups[/zrl][/td][td]privacy groups (collections), member info[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_hook]hook[/zrl][/td][td]plugin hook registry[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_hubloc]hubloc[/zrl][/td][td]xchan location storage, ties a hub location to an xchan[/td][/tr] +[tr][td][zrl=[baseurl]/help/database/db_iconfig]iconfig[/zrl][/td][td]extensible arbitrary storage for items[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_issue]issue[/zrl][/td][td]future bug/issue database[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_item]item[/zrl][/td][td]all posts and webpages[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_item_id]item_id[/zrl][/td][td]other identifiers on other services for posts[/td][/tr] +[tr][td][zrl=[baseurl]/help/database/db_item_id]item_id[/zrl][/td][td](deprecated by iconfig) other identifiers on other services for posts[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_likes]likes[/zrl][/td][td]likes of 'things'[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_mail]mail[/zrl][/td][td]private messages[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_menu]menu[/zrl][/td][td]webpage menu data[/td][/tr] @@ -48,7 +47,6 @@ [tr][td][zrl=[baseurl]/help/database/db_sign]sign[/zrl][/td][td]Diaspora signatures. To be phased out.[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_site]site[/zrl][/td][td]site table to find directory peers[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_source]source[/zrl][/td][td]channel sources data[/td][/tr] -[tr][td][zrl=[baseurl]/help/database/db_spam]spam[/zrl][/td][td]unfinished[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_sys_perms]sys_perms[/zrl][/td][td]extensible permissions for OAuth[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_term]term[/zrl][/td][td]item taxonomy (categories, tags, etc.) table[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_tokens]tokens[/zrl][/td][td]OAuth usage[/td][/tr] @@ -60,6 +58,7 @@ [tr][td][zrl=[baseurl]/help/database/db_xconfig]xconfig[/zrl][/td][td]as pconfig but for channels with no local account[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_xign]xign[/zrl][/td][td]channels ignored by friend suggestions[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_xlink]xlink[/zrl][/td][td]"friends of friends" linkages derived from poco, also ratings storage[/td][/tr] +[tr][td][zrl=[baseurl]/help/database/db_xperm]xperm[/zrl][/td][td]OAuth/OpenID-Connect extensible permissions permissions storage[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_xprof]xprof[/zrl][/td][td]if this hub is a directory server, contains basic public profile info of everybody in the network[/td][/tr] [tr][td][zrl=[baseurl]/help/database/db_xtag]xtag[/zrl][/td][td]if this hub is a directory server, contains tags or interests of everybody in the network[/td][/tr] [/table] diff --git a/doc/database/db_abook.bb b/doc/database/db_abook.bb index 364429884..a346480d7 100644 --- a/doc/database/db_abook.bb +++ b/doc/database/db_abook.bb @@ -15,10 +15,6 @@ [/td][/tr] [tr][td]abook_closeness[/td][td]"closeness" value for optional affinity tool, 0-99[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]99[/td][td] [/td][/tr] -[tr][td]abook_rating[/td][td]The channel owner's (public) rating of this connection -10 to +10, default 0 or unrated[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] -[/td][/tr] -[tr][td]abook_rating_text[/td][td]The channel owner's (public) rating of this connection free form text[/td][td]text[/td][td]NO[/td][td]MUL[/td][td][/td][td] -[/td][/tr] [tr][td]abook_created[/td][td]Datetime this record was created[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] [/td][/tr] [tr][td]abook_updated[/td][td]Datetime this record was modified[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] @@ -32,16 +28,27 @@ [tr][td]abook_profile[/td][td]profile.guid of profile to display to this connection if authenticated[/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td][/td][td] [/td][/tr] [tr][td]abook_blocked[/td][td]Bi-directional communications with this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_ignored[/td][td]Incoming communications from this channel are blocked, regardless of other permissions. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_hidden[/td][td]This connection will not be shown as a connection to anybody but the channel owner[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_archived[/td][td]This connection is likely non-functioning and the entry and conversations are preserved, but further polled communications will not be attempted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_pending[/td][td]A connection request was received from this channel but has not been approved by the channel owner, public communications may still be visible but no additional permissions have been granted. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_unconnected[/td][td]currently unused. Projected usage is to indicate "one-way" connections which were insitgated on this end but are still pending on the remote end. [/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_self[/td][td]is a special case where the owner is the target. Every channel has one abook entry with abook_self and with a target abook_xchan set to channel.channel_hash . When this flag is present, abook_my_perms is the default permissions granted to all new connections and several other fields are unused.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_feed[/td][td]indicates this connection is an RSS/Atom feed and may trigger special handling.[/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_incl[/td][td]connection filter allow rules separated by LF[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_excl[/td][td]connection filter deny rules separated by LF[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]abook_instance[/td][td]comma separated list of site urls of all channel clones that this connection is connected with (used only for singleton networks which don't support cloning)[/td][td]text[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [/table] diff --git a/doc/database/db_addon.bb b/doc/database/db_addon.bb index afa06d56c..bccd295f5 100644 --- a/doc/database/db_addon.bb +++ b/doc/database/db_addon.bb @@ -3,7 +3,7 @@ [/th][/tr] [tr][td]id[/td][td][/td]generated index[td]int(11)[/td][td]NO[/td][td]PRI[/td][td]NULL[/td][td]auto_increment [/td][/tr] -[tr][td]name[/td][td]plugin base (file)name[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]aname[/td][td]plugin base (file)name[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] [tr][td]version[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] @@ -11,7 +11,7 @@ [/td][/tr] [tr][td]hidden[/td][td]currently unused[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]timestamp[/td][td]file timestamp to check for reloads[/td][td]bigint(20)[/td][td]NO[/td][td][/td][td]0[/td][td] +[tr][td]tstamp[/td][td]file timestamp to check for reloads[/td][td]bigint(20)[/td][td]NO[/td][td][/td][td]0[/td][td] [/td][/tr] [tr][td]plugin_admin[/td][td]1 = has admin config, 0 = has no admin config[/td][td]tinyint(1)[/td][td]NO[/td][td][/td][td]0[/td][td] [/td][/tr] diff --git a/doc/database/db_app.bb b/doc/database/db_app.bb index 7076bffdd..09df473ee 100644 --- a/doc/database/db_app.bb +++ b/doc/database/db_app.bb @@ -27,8 +27,20 @@ [/td][/tr] [tr][td]app_page[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td] [/td][/tr] -[tr][td]app_requires[/td][td]currently unused[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td] +[tr][td]app_requires[/td][td]access rules[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td] [/td][/tr] + +[tr][td]app_created[/td][td]datetime of app creation[/td][td]datetime[/td][td]NO[/td][td][/td][td][/td][td] +[/td][/tr] +[tr][td]app_edited[/td][td]datetime of last app edit[/td][td]datetime[/td][td]NO[/td][td][/td][td][/td][td] +[/td][/tr] + +[tr][td]app_deleted[/td][td]1 = deleted, 0 = normal[/td][td]int(11)[/td][td]NO[/td][td][/td][td][/td][td] +[/td][/tr] +[tr][td]app_system[/td][td]1 = imported system app, 0 = member created app[/td][td]int(11)[/td][td]NO[/td][td][/td][td][/td][td] +[/td][/tr] + + [/table] Storage for personal apps diff --git a/doc/database/db_attach.bb b/doc/database/db_attach.bb index 7d2befb47..5098401de 100644 --- a/doc/database/db_attach.bb +++ b/doc/database/db_attach.bb @@ -29,9 +29,11 @@ [/td][/tr] [tr][td]os_storage[/td][td]if 0, data contains content; if 1 data contains path to content (always 1 in hubzilla)[/td][td]tinyint[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] +[tr][td]os_path[/td][td]under construction, store the system path[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[/td][/tr] [tr][td]display_path[/td][td]under construction, store the human readable path[/td][td]mediumtext[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]data[/td][td]file data or pathname to stored data if ATTACH_FLAG_OS[/td][td]longblob[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]content[/td][td]file data or pathname to stored data if ATTACH_FLAG_OS[/td][td]longblob[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]created[/td][td]creation time[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] [/td][/tr] diff --git a/doc/database/db_channel.bb b/doc/database/db_channel.bb index 6f53517d8..518ff0978 100644 --- a/doc/database/db_channel.bb +++ b/doc/database/db_channel.bb @@ -35,6 +35,8 @@ [/td][/tr] [tr][td]channel_dirdate[/td][td]time when directory was last pinged. Must do this once a month[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] [/td][/tr] +[tr][td]channel_lastpost[/td][td]date of last post for this channel. May not be fully implemented[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] +[/td][/tr] [tr][td]channel_deleted[/td][td]time when channel was deleted[/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]0000-00-00 00:00:00[/td][td] [/td][/tr] [tr][td]channel_max_anon_mail[/td][td]unused[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]10[/td][td] @@ -95,6 +97,8 @@ [/td][/tr] [tr][td]channel_system[/td][td]if 1, this is the special system channel on this site[/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]128[/td][td] [/td][/tr] +[tr][td]channel_moved[/td][td]URL of relocated channel, making this instance abandoned if set[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td][/td][td] +[/td][/tr] [/table] Return to [zrl=[baseurl]/help/database]database documentation[/zrl] diff --git a/doc/database/db_chatpresence.bb b/doc/database/db_chatpresence.bb index 28cd6f207..0a7f666c9 100644 --- a/doc/database/db_chatpresence.bb +++ b/doc/database/db_chatpresence.bb @@ -11,7 +11,7 @@ [/td][/tr] [tr][td]cp_status[/td][td]text status description e.g. "online"[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] -[tr][td]cp_client[/td][td][/td]IP address of this client[td]char(128)[/td][td]NO[/td][td][/td][td][/td][td] +[tr][td]cp_client[/td][td]IP address of this client[/td][td]char(128)[/td][td]NO[/td][td][/td][td][/td][td] [/td][/tr] [/table] diff --git a/doc/database/db_clients.bb b/doc/database/db_clients.bb index d342b529f..0c66a4fc2 100644 --- a/doc/database/db_clients.bb +++ b/doc/database/db_clients.bb @@ -7,7 +7,7 @@ [/td][/tr] [tr][td]redirect_uri[/td][td][/td][td]varchar(200)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]name[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td] +[tr][td]clname[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]icon[/td][td][/td][td]text[/td][td]YES[/td][td][/td][td]NULL[/td][td] [/td][/tr] diff --git a/doc/database/db_event.bb b/doc/database/db_event.bb index 7c31d7fde..ad3c15789 100644 --- a/doc/database/db_event.bb +++ b/doc/database/db_event.bb @@ -15,9 +15,9 @@ [/td][/tr] [tr][td]edited[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]start[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]dtstart[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] -[tr][td]finish[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]dtend[/td][td][/td][td]datetime[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] [tr][td]summary[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] @@ -25,13 +25,13 @@ [/td][/tr] [tr][td]location[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]type[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]etype[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] [tr][td]nofinish[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] [tr][td]adjust[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]1[/td][td] [/td][/tr] -[tr][td]ignore[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[tr][td]dismissed[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] [tr][td]allow_cid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] @@ -41,6 +41,24 @@ [/td][/tr] [tr][td]deny_gid[/td][td][/td][td]mediumtext[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] + +[tr][td]event_status[/td][td][/td][td]charr(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_status_date[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_percent[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_repeat[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_sequence[/td][td][/td][td]smallint[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_priority[/td][td][/td][td]smallint[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]event_vdata[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] +[tr][td]cal_id[/td][td][/td][td]int(10)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[/td][/tr] + [/table] Return to [zrl=[baseurl]/help/database]database documentation[/zrl]
\ No newline at end of file diff --git a/doc/database/db_groups.bb b/doc/database/db_groups.bb index 078d96464..73265b90e 100644 --- a/doc/database/db_groups.bb +++ b/doc/database/db_groups.bb @@ -11,7 +11,7 @@ [/td][/tr] [tr][td]deleted[/td][td]1 indicates the group has been deleted[/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]name[/td][td]human readable name of group[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]gname[/td][td]human readable name of group[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [/table] diff --git a/doc/database/db_hook.bb b/doc/database/db_hook.bb index 0812b1b41..233062f98 100644 --- a/doc/database/db_hook.bb +++ b/doc/database/db_hook.bb @@ -7,9 +7,11 @@ [/td][/tr] [tr][td]file[/td][td]relative filename of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]function[/td][td]function name of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]fn[/td][td]function name of hook handler[/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]priority[/td][td]not yet implemented - can be used to sort conflicts in hook handling by calling handlers in priority order[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td] +[tr][td]priority[/td][td]can be used to sort conflicts in hook handling by calling handlers in priority order[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td] +[/td][/tr] +[tr][td]hook_version[/td][td]version 0 hooks must have two arguments, the App and the hook data. version 1 hooks have 1 argument - the hook data[/td][td]int(11) unsigned[/td][td]NO[/td][td][/td][td]0[/td][td] [/td][/tr] [/table] diff --git a/doc/database/db_item.bb b/doc/database/db_item.bb index e4e594196..6383e13f8 100644 --- a/doc/database/db_item.bb +++ b/doc/database/db_item.bb @@ -51,7 +51,7 @@ [/td][/tr] [tr][td]obj_type[/td][td]ActivityStreams object type (old style URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td] [/td][/tr] -[tr][td]object[/td][td]JSON encoded object structure unless it is an implied object (normal post)[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]obj[/td][td]JSON encoded object structure unless it is an implied object (normal post)[/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]tgt_type[/td][td]ActivityStreams target type if applicable (URI)[/td][td]char(255)[/td][td]NO[/td][td][/td][td][/td][td] [/td][/tr] diff --git a/doc/database/db_notify.bb b/doc/database/db_notify.bb index 42f9350e5..4787266cd 100644 --- a/doc/database/db_notify.bb +++ b/doc/database/db_notify.bb @@ -5,7 +5,7 @@ [/td][/tr] [tr][td]hash[/td][td][/td][td]char(64)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] -[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]xname[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]url[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] @@ -25,7 +25,7 @@ [/td][/tr] [tr][td]seen[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]type[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]ntype[/td][td][/td][td]int(11)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] [tr][td]verb[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] diff --git a/doc/database/db_photo.bb b/doc/database/db_photo.bb index 6a0cdf362..91840ec1e 100644 --- a/doc/database/db_photo.bb +++ b/doc/database/db_photo.bb @@ -23,15 +23,15 @@ [/td][/tr] [tr][td]filename[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]type[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]image/jpeg[/td][td] +[tr][td]mimetype[/td][td][/td][td]char(128)[/td][td]NO[/td][td]MUL[/td][td]image/jpeg[/td][td] [/td][/tr] [tr][td]height[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]width[/td][td][/td][td]smallint(6)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]size[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] +[tr][td]filesize[/td][td][/td][td]int(10) unsigned[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]data[/td][td][/td][td]mediumblob[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]content[/td][td][/td][td]mediumblob[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]scale[/td][td][/td][td]tinyint(3)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] diff --git a/doc/database/db_profile.bb b/doc/database/db_profile.bb index 83db75713..717fae585 100644 --- a/doc/database/db_profile.bb +++ b/doc/database/db_profile.bb @@ -15,7 +15,7 @@ [/td][/tr] [tr][td]hide_friends[/td][td][/td][td]tinyint(1)[/td][td]NO[/td][td]MUL[/td][td]0[/td][td] [/td][/tr] -[tr][td]name[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]fullname[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]pdesc[/td][td][/td][td]char(255)[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] @@ -41,7 +41,7 @@ [/td][/tr] [tr][td]marital[/td][td][/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] -[tr][td]with[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]partner[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]howlong[/td][td][/td][td]datetime[/td][td]NO[/td][td][/td][td]0000-00-00 00:00:00[/td][td] [/td][/tr] @@ -73,7 +73,7 @@ [/td][/tr] [tr][td]romance[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] -[tr][td]work[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] +[tr][td]employment[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] [tr][td]education[/td][td][/td][td]text[/td][td]NO[/td][td][/td][td]NULL[/td][td] [/td][/tr] diff --git a/doc/database/db_term.bb b/doc/database/db_term.bb index e1f6415fa..bd155fe21 100644 --- a/doc/database/db_term.bb +++ b/doc/database/db_term.bb @@ -11,7 +11,7 @@ [/td][/tr] [tr][td]otype[/td][td]type of linked thing[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] -[tr][td]type[/td][td]taxonomy type (See Tag/term types in boot.php)[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] +[tr][td]ttype[/td][td]taxonomy type (See Tag/term types in boot.php)[/td][td]tinyint(3) unsigned[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] [tr][td]term[/td][td]the actual taxonomy term[/td][td]char(255)[/td][td]NO[/td][td]MUL[/td][td]NULL[/td][td] [/td][/tr] diff --git a/include/api.php b/include/api.php index be525f7e9..df6aba957 100644 --- a/include/api.php +++ b/include/api.php @@ -839,7 +839,7 @@ require_once('include/api_auth.php'); $_REQUEST['parent_mid'] = $parent; if($_REQUEST['namespace'] && $parent) { - $x = q("select iid from item_id where service = '%s' and sid = '%s' limit 1", + $x = q("select iid from iconfig where cat = 'system' and k = '%s' and v = '%s' limit 1", dbesc($_REQUEST['namespace']), dbesc($parent) ); @@ -967,20 +967,10 @@ require_once('include/api_auth.php'); $ret = array(); $tmp = array(); - $str = ''; foreach($i as $ii) { $tmp[] = encode_item($ii,true); - if($str) - $str .= ','; - $str .= $ii['id']; } $ret['item'] = $tmp; - if($str) { - $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item.id in ( $str ) "); - - if($r) - $ret['item_id'] = $r; - } json_return_and_die($ret); } @@ -1462,7 +1452,8 @@ require_once('include/api_auth.php'); } else { if($_REQUEST['namespace'] && $_REQUEST['remote_id']) { - $r = q("select * from item_id where service = '%s' and sid = '%s' and uid = %d limit 1", + $r = q("select * from iconfig left join item on iconfig.iid = item.id + where cat = 'system' and k = '%s' and v = '%s' and item.uid = %d limit 1", dbesc($_REQUEST['namespace']), dbesc($_REQUEST['remote_id']), intval($user_info['uid']) @@ -1472,7 +1463,7 @@ require_once('include/api_auth.php'); $id = $r[0]['iid']; } if($_REQUEST['namespace'] && $_REQUEST['comment_id']) { - $r = q("select * from item_id left join item on item.id = item_id.iid where service = '%s' and sid = '%s' and uid = %d and item.id != item.parent limit 1", + $r = q("select * from iconfig left join item on item.id = iconfig.iid where cat = 'system' and k = '%s' and v = '%s' and uid = %d and item.id != item.parent limit 1", dbesc($_REQUEST['namespace']), dbesc($_REQUEST['comment_id']), intval($user_info['uid']) diff --git a/include/attach.php b/include/attach.php index 78efde51f..33545b12a 100644 --- a/include/attach.php +++ b/include/attach.php @@ -423,6 +423,8 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { $observer = array(); + $dosync = ((array_key_exists('nosync',$arr) && $arr['nosync']) ? 0 : 1); + if($observer_hash) { $x = q("select * from xchan where xchan_hash = '%s' limit 1", dbesc($observer_hash) @@ -829,6 +831,8 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { if($arr['description']) $args['description'] = $arr['description']; + $args['deliver'] = $dosync; + $p = photo_upload($channel,$observer,$args); if($p['success']) { $ret['body'] = $p['body']; @@ -865,10 +869,12 @@ function attach_store($channel, $observer_hash, $options = '', $arr = null) { call_hooks('photo_upload_end',$ret); } - $sync = attach_export_data($channel,$hash); + if($dosync) { + $sync = attach_export_data($channel,$hash); - if($sync) - build_sync_packet($channel['channel_id'],array('file' => array($sync))); + if($sync) + build_sync_packet($channel['channel_id'],array('file' => array($sync))); + } return $ret; } diff --git a/include/bbcode.php b/include/bbcode.php index 42741b392..0bf326506 100644 --- a/include/bbcode.php +++ b/include/bbcode.php @@ -242,6 +242,13 @@ function bb_ShareAttributes($match) { if ($matches[1] != "") $message_id = $matches[1]; + if(! $message_id) { + preg_match("/guid='(.*?)'/ism", $attributes, $matches); + if ($matches[1] != "") + $message_id = $matches[1]; + } + + $reldate = '<span class="autotime" title="' . datetime_convert('UTC', date_default_timezone_get(), $posted, 'c') . '" >' . datetime_convert('UTC', date_default_timezone_get(), $posted, 'r') . '</span>'; $headline = '<div class="shared_container"> <div class="shared_header">'; @@ -484,6 +491,12 @@ function bb_code($match) { return '<code class="inline-code">' . trim($match[1]) . '</code>'; } +function bb_highlight($match) { + if(in_array(strtolower($match[1]),['php','css','mysql','sql','abap','diff','html','perl','ruby', + 'vbscript','avrc','dtd','java','xml','cpp','python','javascript','js','json','sh'])) + return text_highlight($match[2],strtolower($match[1])); + return $match[0]; +} // BBcode 2 HTML was written by WAY2WEB.net @@ -559,6 +572,15 @@ function bbcode($Text, $preserve_nl = false, $tryoembed = true, $cache = false) $Text = str_replace(">", ">", $Text); + // Check for [code] text here, before the linefeeds are messed with. + // The highlighter will unescape and re-escape the content. + + if (strpos($Text,'[code=') !== false) { + $Text = preg_replace_callback("/\[code=(.*?)\](.*?)\[\/code\]/ism", 'bb_highlight', $Text); + } + + + // Convert new line chars to html <br /> tags // nlbr seems to be hopelessly messed up diff --git a/include/channel.php b/include/channel.php index 087bd4162..90dfb2bf6 100644 --- a/include/channel.php +++ b/include/channel.php @@ -16,7 +16,7 @@ require_once('include/menu.php'); * @param int $account_id * Account_id used for this request * - * @returns assoziative array with: + * @returns associative array with: * * \e boolean \b success boolean true if creating a new channel is allowed for this account * * \e string \b message (optional) if success is false, optional error text * * \e int \b total_identities @@ -676,14 +676,6 @@ function identity_basic_export($channel_id, $items = false) { $ret['mail'] = $m; } - $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d", - intval($channel_id) - ); - - if($r) - $ret['item_id'] = $r; - - //$key = get_config('system','prvkey'); /** @warning this may run into memory limits on smaller systems */ @@ -746,17 +738,6 @@ function identity_export_year($channel_id,$year,$month = 0) { $ret['item'][] = encode_item($rr,true); } - $r = q("select item_id.*, item.mid from item_id left join item on item_id.iid = item.id where item_id.uid = %d - and item.created >= '%s' and item.created < '%s' order by created ", - intval($channel_id), - dbesc($mindate), - dbesc($maxdate) - ); - - if($r) - $ret['item_id'] = $r; - - return $ret; } @@ -1243,6 +1224,7 @@ function advanced_profile(&$a) { $things = get_things(App::$profile['profile_guid'],App::$profile['profile_uid']); + // logger('mod_profile: things: ' . print_r($things,true), LOGGER_DATA); return replace_macros($tpl, array( diff --git a/include/connections.php b/include/connections.php index 2d10b8354..ed4526a09 100644 --- a/include/connections.php +++ b/include/connections.php @@ -283,18 +283,30 @@ function channel_remove($channel_id, $local = true, $unset_session=false) { Zotlabs\Daemon\Master::Summon(array('Notifier','purge_all',$channel_id)); } + + $r = q("select * from iconfig left join item on item.id = iconfig.iid + where item.uid = %d", + intval($channel_id) + ); + if($r) { + foreach($r as $rr) { + q("delete from iconfig where iid = %d", + intval($rr['iid']) + ); + } + } + + q("DELETE FROM `groups` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `group_member` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `event` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `item` WHERE `uid` = %d", intval($channel_id)); - q("DELETE FROM `item_id` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `mail` WHERE `channel_id` = %d", intval($channel_id)); q("DELETE FROM `notify` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `photo` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `attach` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `profile` WHERE `uid` = %d", intval($channel_id)); q("DELETE FROM `pconfig` WHERE `uid` = %d", intval($channel_id)); - q("DELETE FROM `spam` WHERE `uid` = %d", intval($channel_id)); // @FIXME At this stage we need to remove the file resources located under /store/$nickname diff --git a/include/conversation.php b/include/conversation.php index 518193b08..d2d4ffca0 100644 --- a/include/conversation.php +++ b/include/conversation.php @@ -403,9 +403,12 @@ function count_descendants($item) { * @return boolean */ function visible_activity($item) { - $hidden_activities = array(ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE); + $hidden_activities = [ ACTIVITY_LIKE, ACTIVITY_DISLIKE, ACTIVITY_AGREE, ACTIVITY_DISAGREE, ACTIVITY_ABSTAIN, ACTIVITY_ATTEND, ACTIVITY_ATTENDNO, ACTIVITY_ATTENDMAYBE ]; - $post_types = array(ACTIVITY_OBJ_NOTE,ACTIVITY_OBJ_COMMENT,basename(ACTIVITY_OBJ_NOTE),basename(ACTIVITY_OBJ_COMMENT)); + $post_types = [ ACTIVITY_OBJ_NOTE, ACTIVITY_OBJ_COMMENT, basename(ACTIVITY_OBJ_NOTE), basename(ACTIVITY_OBJ_COMMENT)]; + + if(intval($item['item_notshown'])) + return false; foreach ($hidden_activities as $act) { if ((activity_match($item['verb'], $act)) && ($item['mid'] != $item['parent_mid'])) { @@ -1143,6 +1146,8 @@ function status_editor($a, $x, $popup = false) { $weblink = (($mimetype === 'text/bbcode') ? t('Insert web link') : false); if(x($x, 'hide_weblink')) $weblink = false; + + $embedPhotos = t('Embed image from photo albums'); $writefiles = (($mimetype === 'text/bbcode') ? perm_is_allowed($x['profile_uid'], get_observer_hash(), 'write_storage') : false); if(x($x, 'hide_attach')) @@ -1178,6 +1183,12 @@ function status_editor($a, $x, $popup = false) { '$whereareu' => t('Where are you right now?'), '$editor_autocomplete'=> ((x($x,'editor_autocomplete')) ? $x['editor_autocomplete'] : ''), '$bbco_autocomplete'=> ((x($x,'bbco_autocomplete')) ? $x['bbco_autocomplete'] : ''), + '$modalchooseimages' => t('Choose images to embed'), + '$modalchoosealbum' => t('Choose an album'), + '$modaldiffalbum' => t('Choose a different album...'), + '$modalerrorlist' => t('Error getting album list'), + '$modalerrorlink' => t('Error getting photo link'), + '$modalerroralbum' => t('Error getting album'), )); $tpl = get_markup_template('jot.tpl'); @@ -1219,6 +1230,10 @@ function status_editor($a, $x, $popup = false) { '$code' => t('Code'), '$attach' => t('Attach file'), '$weblink' => $weblink, + '$embedPhotos' => $embedPhotos, + '$embedPhotosModalTitle' => t('Embed an image from your albums'), + '$embedPhotosModalCancel' => t('Cancel'), + '$embedPhotosModalOK' => t('OK'), '$setloc' => $setloc, '$voting' => t('Toggle voting'), '$feature_voting' => $feature_voting, diff --git a/include/group.php b/include/group.php index a4938b848..10853ff6b 100644 --- a/include/group.php +++ b/include/group.php @@ -17,7 +17,7 @@ function group_add($uid,$name,$public = 0) { $z = q("SELECT * FROM `groups` WHERE `id` = %d LIMIT 1", intval($r) ); - if(count($z) && $z[0]['deleted']) { + if(($z) && $z[0]['deleted']) { /*$r = q("UPDATE `groups` SET `deleted` = 0 WHERE `uid` = %d AND `gname` = '%s' LIMIT 1", intval($uid), dbesc($name) @@ -129,7 +129,7 @@ function group_byname($uid,$name) { intval($uid), dbesc($name) ); - if(count($r)) + if($r) return $r[0]['id']; return false; } @@ -178,11 +178,11 @@ function group_add_member($uid,$name,$member,$gid = 0) { intval($gid), dbesc($member) ); - if(count($r)) + if($r) return true; // You might question this, but // we indicate success because the group member was in fact created // -- It was just created at another time - if(! count($r)) + if(! $r) $r = q("INSERT INTO `group_member` (`uid`, `gid`, `xchan`) VALUES( %d, %d, '%s' ) ", intval($uid), @@ -205,7 +205,7 @@ function group_get_members($gid) { intval(local_channel()), intval(local_channel()) ); - if(count($r)) + if($r) $ret = $r; } return $ret; @@ -218,7 +218,7 @@ function group_get_members_xchan($gid) { intval($gid), intval(local_channel()) ); - if(count($r)) { + if($r) { foreach($r as $rr) { $ret[] = $rr['xchan']; } @@ -236,7 +236,7 @@ function mini_group_select($uid,$group = '') { intval($uid) ); $grps[] = array('name' => '', 'hash' => '0', 'selected' => ''); - if(count($r)) { + if($r) { foreach($r as $rr) { $grps[] = array('name' => $rr['gname'], 'id' => $rr['hash'], 'selected' => (($group == $rr['hash']) ? 'true' : '')); } @@ -279,7 +279,7 @@ function group_side($every="connections",$each="group",$edit = false, $group_id $member_of = groups_containing(local_channel(),$cid); } - if(count($r)) { + if($r) { foreach($r as $rr) { $selected = (($group_id == $rr['id']) ? ' group-selected' : ''); @@ -356,7 +356,7 @@ function groups_containing($uid,$c) { ); $ret = array(); - if(count($r)) { + if($r) { foreach($r as $rr) $ret[] = $rr['gid']; } diff --git a/include/help.php b/include/help.php index 5518eeb70..7f57f3334 100644 --- a/include/help.php +++ b/include/help.php @@ -30,7 +30,8 @@ function search_doc_files($s) { $regexop = db_getfunc('REGEXP'); - $r = q("select item_id.sid, item.* from item left join item_id on item.id = item_id.iid where service = 'docfile' and + $r = q("select iconfig.v, item.* from item left join iconfig on item.id = iconfig.iid + where iconfig.cat = 'system' and iconfig.k = 'docfile' and body $regexop '%s' and item_type = %d $pager_sql", dbesc($s), intval(ITEM_TYPE_DOC) @@ -50,7 +51,7 @@ function search_doc_files($s) { } } } - if(stristr($r[$x]['sid'],$s)) + if(stristr($r[$x]['v'],$s)) $r[$x]['rank'] ++; $r[$x]['rank'] += substr_count(strtolower($r[$x]['text']),strtolower($s)); // bias the results to the observer's native language @@ -123,12 +124,15 @@ function store_doc_file($s) { $item['owner_xchan'] = $item['author_xchan'] = $sys['channel_hash']; $item['item_type'] = ITEM_TYPE_DOC; - $r = q("select item.* from item left join item_id on item.id = item_id.iid where service = 'docfile' and - sid = '%s' and item_type = %d limit 1", + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where iconfig.cat = 'system' and iconfig.k = 'docfile' and + iconfig.v = '%s' and item_type = %d limit 1", dbesc($s), intval(ITEM_TYPE_DOC) ); + \Zotlabs\Lib\IConfig::Set($item,'system','docfile',$s); + if($r) { $item['id'] = $r[0]['id']; $item['mid'] = $item['parent_mid'] = $r[0]['mid']; @@ -139,10 +143,7 @@ function store_doc_file($s) { $x = item_store($item); } - if($x['success']) { - update_remote_id($sys,$x['item_id'],ITEM_TYPE_DOC,$s,'docfile',0,$item['mid']); - } - + return $x; } diff --git a/include/import.php b/include/import.php index be456bfa9..0f52f3ff8 100644 --- a/include/import.php +++ b/include/import.php @@ -624,19 +624,14 @@ function import_item_ids($channel,$itemids) { ); if(! $r) continue; - $z = q("select * from item_id where service = '%s' and sid = '%s' and iid = %d and uid = %d limit 1", + $z = q("select * from iconfig where iconfig.cat = 'system' and iconfig.k = '%s' + and iconfig.v = '%s' and iid = %d limit 1", dbesc($i['service']), dbesc($i['sid']), - intval($r[0]['id']), - intval($channel['channel_id']) + intval($r[0]['id']) ); if(! $z) { - q("insert into item_id (iid,uid,sid,service) values(%d,%d,'%s','%s')", - intval($r[0]['id']), - intval($channel['channel_id']), - dbesc($i['sid']), - dbesc($i['service']) - ); + \Zotlabs\Lib\IConfig::Set($r[0]['id'],'system',$i['service'],$i['sid'],true); } } } diff --git a/include/items.php b/include/items.php index 93385c6e6..a844cd1f6 100755 --- a/include/items.php +++ b/include/items.php @@ -677,13 +677,23 @@ function get_item_elements($x,$allow_code = false) { $arr['item_flags'] = 0; - if(array_key_exists('flags',$x) && in_array('consensus',$x['flags'])) - $arr['item_consensus'] = 1; + if(array_key_exists('flags',$x)) { - if(array_key_exists('flags',$x) && in_array('deleted',$x['flags'])) - $arr['item_deleted'] = 1; - if(array_key_exists('flags',$x) && in_array('hidden',$x['flags'])) - $arr['item_hidden'] = 1; + if(in_array('consensus',$x['flags'])) + $arr['item_consensus'] = 1; + + if(in_array('deleted',$x['flags'])) + $arr['item_deleted'] = 1; + + if(in_array('notshown',$x['flags'])) + $arr['item_notshown'] = 1; + + // hidden item are no longer propagated - notshown may be a suitable alternative + + if(in_array('hidden',$x['flags'])) + $arr['item_hidden'] = 1; + + } // Here's the deal - the site might be down or whatever but if there's a new person you've never // seen before sending stuff to your stream, we MUST be able to look them up and import their data from their @@ -1339,6 +1349,8 @@ function encode_item_flags($item) { $ret[] = 'deleted'; if(intval($item['item_hidden'])) $ret[] = 'hidden'; + if(intval($item['item_notshown'])) + $ret[] = 'notshown'; if(intval($item['item_thread_top'])) $ret[] = 'thread_parent'; if(intval($item['item_nsfw'])) @@ -3537,9 +3549,8 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) { intval($item['id']) ); - q("delete from item_id where iid = %d and uid = %d", - intval($item['id']), - intval($item['uid']) + q("delete from iconfig where iid = %d", + intval($item['id']) ); q("delete from term where oid = %d and otype = %d", @@ -4105,6 +4116,23 @@ function items_fetch($arr,$channel = null,$observer_hash = null,$client_mode = C return $items; } +function webpage_to_namespace($webpage) { + + if($webpage == ITEM_TYPE_WEBPAGE) + $page_type = 'WEBPAGE'; + elseif($webpage == ITEM_TYPE_BLOCK) + $page_type = 'BUILDBLOCK'; + elseif($webpage == ITEM_TYPE_PDL) + $page_type = 'PDL'; + elseif($webpage == ITEM_TYPE_DOC) + $page_type = 'docfile'; + else + $page_type = 'unknown'; + return $page_type; + +} + + function update_remote_id($channel,$post_id,$webpage,$pagetitle,$namespace,$remote_id,$mid) { diff --git a/include/network.php b/include/network.php index 0dd10e29b..062f2c2bf 100644 --- a/include/network.php +++ b/include/network.php @@ -21,15 +21,18 @@ function get_capath() { * TRUE if asked to return binary results (file download) * @param int $redirects default 0 * internal use, recursion counter - * @param array $opts (optional parameters) assoziative array with: + * @param array $opts (optional parameters) associative array with: * * \b accept_content => supply Accept: header with 'accept_content' as the value * * \b timeout => int seconds, default system config value or 60 seconds * * \b http_auth => username:password * * \b novalidate => do not validate SSL certs, default is to validate using our CA list * * \b nobody => only return the header * * \b filep => stream resource to write body to. header and body are not returned when using this option. + * * \b custom => custom request method: e.g. 'PUT', 'DELETE' + * * \b cookiejar => cookie file (write) + * * \B cookiefile => cookie file (read) * - * @return array an assoziative array with: + * @return array an associative array with: * * \e int \b return_code => HTTP return code or 0 if timeout or failure * * \e boolean \b success => boolean true (if HTTP 2xx result) or false * * \e string \b header => HTTP headers @@ -59,12 +62,17 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_HEADER, $false); } + + if(x($opts,'headers')) @curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']); if(x($opts,'nobody')) @curl_setopt($ch, CURLOPT_NOBODY, $opts['nobody']); + if(x($opts,'custom')) + @curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $opts['custom']); + if(x($opts,'timeout') && intval($opts['timeout'])) { @curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']); } @@ -78,6 +86,11 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { @curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']); } + if(x($opts,'cookiejar')) + @curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']); + if(x($opts,'cookiefile')) + @curl_setopt($ch, CURLOPT_COOKIEFILE, $opts['cookiefile']); + @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true)); @@ -165,7 +178,9 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { * 'http_auth' => username:password * 'novalidate' => do not validate SSL certs, default is to validate using our CA list * 'filep' => stream resource to write body to. header and body are not returned when using this option. - * @return array an assoziative array with: + * 'custom' => custom request method: e.g. 'PUT', 'DELETE' + * + * @return array an associative array with: * * \e int \b return_code => HTTP return code or 0 if timeout or failure * * \e boolean \b success => boolean true (if HTTP 2xx result) or false * * \e string \b header => HTTP headers @@ -174,6 +189,10 @@ function z_fetch_url($url, $binary = false, $redirects = 0, $opts = array()) { */ function z_post_url($url,$params, $redirects = 0, $opts = array()) { +// logger('url: ' . $url); +// logger('params: ' . print_r($params,true)); +// logger('opts: ' . print_r($opts,true)); + $ret = array('return_code' => 0, 'success' => false, 'header' => "", 'body' => ""); $ch = curl_init($url); @@ -199,12 +218,17 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) { if(x($opts,'headers')) { @curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']); -logger('headers: ' . print_r($opts['headers'],true) . 'redir: ' . $redirects); } if(x($opts,'nobody')) @curl_setopt($ch, CURLOPT_NOBODY, $opts['nobody']); + if(x($opts,'custom')) { + @curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $opts['custom']); + @curl_setopt($ch, CURLOPT_POST,0); + } + + if(x($opts,'timeout') && intval($opts['timeout'])) { @curl_setopt($ch, CURLOPT_TIMEOUT, $opts['timeout']); } @@ -218,6 +242,12 @@ logger('headers: ' . print_r($opts['headers'],true) . 'redir: ' . $redirects); @curl_setopt($ch, CURLOPT_USERPWD, $opts['http_auth']); } + + if(x($opts,'cookiejar')) + @curl_setopt($ch, CURLOPT_COOKIEJAR, $opts['cookiejar']); + if(x($opts,'cookiefile')) + @curl_setopt($ch, CURLOPT_COOKIEFILE, $opts['cookiefile']); + @curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, ((x($opts,'novalidate') && intval($opts['novalidate'])) ? false : true)); diff --git a/include/page_widgets.php b/include/page_widgets.php index 49d1439be..3270de4a3 100644 --- a/include/page_widgets.php +++ b/include/page_widgets.php @@ -1,7 +1,8 @@ <?php // A basic toolbar for observers with write_pages permissions -function writepages_widget ($who,$which){ + +function writepages_widget ($who,$which) { return replace_macros(get_markup_template('write_pages.tpl'), array( '$new' => t('New Page'), '$newurl' => "webpages/$who", @@ -13,9 +14,11 @@ function writepages_widget ($who,$which){ // Chan is channel_id, $which is channel_address - we'll need to pass observer later too. -function pagelist_widget ($owner,$which){ - $r = q("select * from item_id left join item on item_id.iid = item.id where item_id.uid = %d and service = 'WEBPAGE' order by item.created desc", +function pagelist_widget ($owner,$which) { + + $r = q("select * from iconfig left join item on iconfig.iid = item.id where item_id.uid = %d + and iconfig.cat = 'system' and iconfig.k = 'WEBPAGE' order by item.created desc", intval($owner) ); @@ -24,7 +27,7 @@ function pagelist_widget ($owner,$which){ if($r) { $pages = array(); foreach($r as $rr) { - $pages[$rr['iid']][] = array('url' => $rr['iid'],'pagetitle' => $rr['sid'],'title' => $rr['title'],'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']),'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited'])); + $pages[$rr['iid']][] = array('url' => $rr['iid'],'pagetitle' => $rr['v'],'title' => $rr['title'],'created' => datetime_convert('UTC',date_default_timezone_get(),$rr['created']),'edited' => datetime_convert('UTC',date_default_timezone_get(),$rr['edited'])); } } diff --git a/include/photos.php b/include/photos.php index c64d662ea..da6118b38 100644 --- a/include/photos.php +++ b/include/photos.php @@ -41,6 +41,10 @@ function photo_upload($channel, $observer, $args) { else $visible = 0; + $deliver = true; + if(array_key_exists('deliver',$args)) + $deliver = intval($args['deliver']); + // Set to default channel permissions. If the parent directory (album) has permissions set, // use those instead. If we have specific permissions supplied, they take precedence over // all other settings. 'allow_cid' being passed from an external source takes priority over channel settings. @@ -330,7 +334,7 @@ function photo_upload($channel, $observer, $args) { if($item['mid'] === $item['parent_mid']) { - $item['body'] = $args['body']; + $item['body'] = $summary; $item['obj_type'] = ACTIVITY_OBJ_PHOTO; $item['obj'] = json_encode($object); @@ -355,14 +359,14 @@ function photo_upload($channel, $observer, $args) { if(($item['edited'] > $r[0]['edited']) || $force) { $item['id'] = $r[0]['id']; $item['uid'] = $channel['channel_id']; - item_store_update($item); + item_store_update($item,false,$deliver); continue; } } else { $item['aid'] = $channel['channel_account_id']; $item['uid'] = $channel['channel_id']; - $item_result = item_store($item); + $item_result = item_store($item,false,$deliver); } } } @@ -414,10 +418,10 @@ function photo_upload($channel, $observer, $args) { - $result = item_store($arr); + $result = item_store($arr,false,$deliver); $item_id = $result['item_id']; - if($visible) + if($visible && $deliver) Zotlabs\Daemon\Master::Summon(array('Notifier', 'wall-new', $item_id)); } diff --git a/include/plugin.php b/include/plugin.php index be4e92f03..9b84039a6 100755 --- a/include/plugin.php +++ b/include/plugin.php @@ -593,26 +593,37 @@ function script_path() { return $scheme . '://' . $hostname; } -function head_add_js($src) { - App::$js_sources[] = $src; +function head_add_js($src, $priority = 0) { + if(! is_array(App::$js_sources[$priority])) + App::$js_sources[$priority] = array(); + App::$js_sources[$priority][] = $src; } -function head_remove_js($src) { +function head_remove_js($src, $priority = 0) { - $index = array_search($src, App::$js_sources); + $index = array_search($src, App::$js_sources[$priority]); if($index !== false) - unset(App::$js_sources[$index]); + unset(App::$js_sources[$priority][$index]); } +// We should probably try to register main.js with a high priority, but currently we handle it +// separately and put it at the end of the html head block in case any other javascript is +// added outside the head_add_js construct. + function head_get_js() { + $str = ''; - $sources = App::$js_sources; - if(count($sources)) - foreach($sources as $source) { - if($source === 'main.js') - continue; - $str .= format_js_if_exists($source); + if(App::$js_sources) { + foreach(App::$js_sources as $sources) { + if(count($sources)) { + foreach($sources as $source) { + if($src === 'main.js') + continue; + $str .= format_js_if_exists($source); + } + } } + } return $str; } diff --git a/include/taxonomy.php b/include/taxonomy.php index 177215fe8..067bd3246 100644 --- a/include/taxonomy.php +++ b/include/taxonomy.php @@ -400,7 +400,7 @@ function get_things($profile_hash,$uid) { if(! $things[$rr['obj_verb']]) $things[$rr['obj_verb']] = array(); - $things[$rr['obj_verb']][] = array('term' => $rr['obj_term'],'url' => $rr['obj_url'],'img' => $rr['obj_imgurl'], 'profile' => $rr['profile_name'],'term_hash' => $rr['obj_obj'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun')); + $things[$rr['obj_verb']][] = array('term' => $rr['obj_term'],'url' => $rr['obj_url'],'img' => $rr['obj_imgurl'], 'editurl' => z_root() . '/thing/' . $rr['obj_obj'], 'profile' => $rr['profile_name'],'term_hash' => $rr['obj_obj'], 'likes' => $l,'like_count' => count($l),'like_label' => tt('Like','Likes',count($l),'noun')); } $sorted_things = array(); if($things) { diff --git a/include/text.php b/include/text.php index 1bc19da34..22f4556a8 100644 --- a/include/text.php +++ b/include/text.php @@ -1743,7 +1743,8 @@ function unamp($s) { } function layout_select($channel_id, $current = '') { - $r = q("select mid,sid from item left join item_id on iid = item.id where service = 'PDL' and item.uid = item_id.uid and item_id.uid = %d and item_type = %d ", + $r = q("select mid, v from item left join iconfig on iconfig.iid = item.id + where iconfig.cat = 'system' and iconfig.k = 'PDL' and item.uid = %d and item_type = %d ", intval($channel_id), intval(ITEM_TYPE_PDL) ); @@ -1753,7 +1754,7 @@ function layout_select($channel_id, $current = '') { $options .= '<option value="" ' . $empty_selected . '>' . t('default') . '</option>'; foreach($r as $rr) { $selected = (($rr['mid'] == $current) ? ' selected="selected" ' : ''); - $options .= '<option value="' . $rr['mid'] . '"' . $selected . '>' . $rr['sid'] . '</option>'; + $options .= '<option value="' . $rr['mid'] . '"' . $selected . '>' . $rr['v'] . '</option>'; } } @@ -2821,13 +2822,16 @@ function expand_acl($s) { // If it has a pdl we'll load it as we know the mid and pass the body through comanche_parser() which will generate the // page layout from the given description +// @FIXME - there is apparently a very similar function called layout_select; this one should probably take precedence +// and the other should be checked for compatibility and removed function pdl_selector($uid, $current="") { $o = ''; $sql_extra = item_permissions_sql($uid); - $r = q("select item_id.*, mid from item_id left join item on iid = item.id where item_id.uid = %d and item_id.uid = item.uid and service = 'PDL' $sql_extra order by sid asc", + $r = q("select iconfig.*, mid from item_id left join item on iconfig.iid = item.id + where item.uid = %d and iconfig.cat = 'system' and iconfig.k = 'PDL' $sql_extra order by v asc", intval($uid) ); @@ -2841,7 +2845,7 @@ function pdl_selector($uid, $current="") { $entries[] = array('title' => t('Default'), 'mid' => ''); foreach($entries as $selection) { $selected = (($selection == $current) ? ' selected="selected" ' : ''); - $o .= "<option value=\"{$selection['mid']}\" $selected >{$selection['sid']}</option>"; + $o .= "<option value=\"{$selection['mid']}\" $selected >{$selection['v']}</option>"; } $o .= '</select>'; @@ -2877,3 +2881,54 @@ function flatten_array_recursive($arr) { } return($ret); } + +function text_highlight($s,$lang) { + + if($lang === 'js') + $lang = 'javascript'; + + if($lang === 'json') { + $lang = 'javascript'; + if(! strpos(trim($s),"\n")) + $s = jindent($s); + } + + if(! strpos('Text_Highlighter',get_include_path())) { + set_include_path(get_include_path() . PATH_SEPARATOR . 'library/Text_Highlighter'); + } + require_once('library/Text_Highlighter/Text/Highlighter.php'); + require_once('library/Text_Highlighter/Text/Highlighter/Renderer/Html.php'); + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 4, + ); + $tag_added = false; + $s = trim(html_entity_decode($s,ENT_COMPAT)); + $s = str_replace(" ","\t",$s); + + // The highlighter library insists on an opening php tag for php code blocks. If + // it isn't present, nothing is highlighted. So we're going to see if it's present. + // If not, we'll add it, and then quietly remove it after we get the processed output back. + + if($lang === 'php') { + if(strpos('<?php',$s) !== 0) { + $s = '<?php' . "\n" . $s; + $tag_added = true; + } + + } + $renderer = new Text_Highlighter_Renderer_HTML($options); + $hl = Text_Highlighter::factory($lang); + $hl->setRenderer($renderer); + $o = $hl->highlight($s); + $o = str_replace([" ","\n"],[" ",''],$o); + + if($tag_added) { + $b = substr($o,0,strpos($o,'<li>')); + $e = substr($o,strpos($o,'</li>')); + $o = $b . $e; + } + + return('<code>' . $o . '</code>'); +} + diff --git a/include/widgets.php b/include/widgets.php index 3ca189af0..cdd5d72ab 100644 --- a/include/widgets.php +++ b/include/widgets.php @@ -994,8 +994,9 @@ function widget_item($arr) { $sql_extra = item_permissions_sql($channel_id); if($arr['title']) { - $r = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid = '%s' and service = 'WEBPAGE' and item_type = %d $sql_options $revision limit 1", + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v = '%s' + and iconfig.k = 'WEBPAGE' and item_type = %d $sql_options $revision limit 1", intval($channel_id), dbesc($arr['title']), intval(ITEM_TYPE_WEBPAGE) @@ -1253,8 +1254,8 @@ function widget_random_block($arr) { $randfunc = db_getfunc('RAND'); - $r = q("select item.* from item left join item_id on item.id = item_id.iid - where item.uid = %d and sid like '%s' and service = 'BUILDBLOCK' and + $r = q("select item.* from item left join iconfig on item.id = iconfig.iid + where item.uid = %d and iconfig.cat = 'system' and iconfig.v like '%s' and iconfig.k = 'BUILDBLOCK' and item_type = %d $sql_options order by $randfunc limit 1", intval($channel_id), dbesc('%' . $contains . '%'), diff --git a/include/wiki.php b/include/wiki.php index 4aa3fc1b4..d60f4a3a7 100644 --- a/include/wiki.php +++ b/include/wiki.php @@ -231,6 +231,34 @@ function wiki_create_page($name, $resource_id) { } +function wiki_rename_page($arr) { + $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : ''); + $pageNewName = ((array_key_exists('pageNewName',$arr)) ? $arr['pageNewName'] : ''); + $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); + $w = wiki_get_wiki($resource_id); + if (!$w['path']) { + return array('message' => 'Wiki not found.', 'success' => false); + } + $page_path_old = $w['path'].'/'.$pageUrlName.'.md'; + logger('$page_path_old: ' . $page_path_old); + if (!is_readable($page_path_old) === true) { + return array('message' => 'Cannot read wiki page: ' . $page_path_old, 'success' => false); + } + $page = array('rawName' => $pageNewName, 'htmlName' => escape_tags($pageNewName), 'urlName' => urlencode(escape_tags($pageNewName)), 'fileName' => urlencode(escape_tags($pageNewName)).'.md'); + $page_path_new = $w['path'] . '/' . $page['fileName'] ; + logger('$page_path_new: ' . $page_path_new); + if (is_file($page_path_new)) { + return array('message' => 'Page already exists.', 'success' => false); + } + // Rename the page file in the wiki repo + if(!rename($page_path_old, $page_path_new)) { + return array('message' => 'Error renaming page file.', 'success' => false); + } else { + return array('page' => $page, 'message' => '', 'success' => true); + } + +} + function wiki_get_page_content($arr) { $pageUrlName = ((array_key_exists('pageUrlName',$arr)) ? $arr['pageUrlName'] : ''); $resource_id = ((array_key_exists('resource_id',$arr)) ? $arr['resource_id'] : ''); @@ -342,7 +370,7 @@ function wiki_revert_page($arr) { } } } catch (\PHPGit\Exception\GitException $e) { - json_return_and_die(array('content' => $content, 'message' => 'GitRepo error thrown', 'success' => false)); + return array('content' => $content, 'message' => 'GitRepo error thrown', 'success' => false); } return array('content' => $content, 'message' => '', 'success' => true); } else { @@ -352,9 +380,18 @@ function wiki_revert_page($arr) { function wiki_git_commit($arr) { $files = ((array_key_exists('files', $arr)) ? $arr['files'] : null); + $all = ((array_key_exists('all', $arr)) ? $arr['all'] : false); $commit_msg = ((array_key_exists('commit_msg', $arr)) ? $arr['commit_msg'] : 'Repo updated'); - $resource_id = ((array_key_exists('resource_id', $arr)) ? $arr['resource_id'] : json_return_and_die(array('message' => 'Wiki resource_id required for git commit', 'success' => false))); - $observer = ((array_key_exists('observer', $arr)) ? $arr['observer'] : json_return_and_die(array('message' => 'Observer required for git commit', 'success' => false))); + if(array_key_exists('resource_id', $arr)) { + $resource_id = $arr['resource_id']; + } else { + return array('message' => 'Wiki resource_id required for git commit', 'success' => false); + } + if(array_key_exists('observer', $arr)) { + $observer = $arr['observer']; + } else { + return array('message' => 'Observer required for git commit', 'success' => false); + } $w = wiki_get_wiki($resource_id); if (!$w['path']) { return array('message' => 'Error reading wiki', 'success' => false); @@ -369,23 +406,23 @@ function wiki_git_commit($arr) { if ($files === null) { $options = array('all' => true); // git commit option to include all changes } else { - $options = array(); // git commit options + $options = array('all' => $all); // git commit options\ foreach ($files as $file) { if (!$git->git->add($file)) { // add specified files to the git repo stage if (!$git->git->reset->hard()) { - json_return_and_die(array('message' => 'Error adding file to git stage: ' . $file . '. Error resetting git repo.', 'success' => false)); + return array('message' => 'Error adding file to git stage: ' . $file . '. Error resetting git repo.', 'success' => false); } - json_return_and_die(array('message' => 'Error adding file to git stage: ' . $file, 'success' => false)); + return array('message' => 'Error adding file to git stage: ' . $file, 'success' => false); } } } if ($git->commit($commit_msg, $options)) { - json_return_and_die(array('message' => 'Wiki repo commit succeeded', 'success' => true)); + return array('message' => 'Wiki repo commit succeeded', 'success' => true); } else { - json_return_and_die(array('message' => 'Wiki repo commit failed', 'success' => false)); + return array('message' => 'Wiki repo commit failed', 'success' => false); } } catch (\PHPGit\Exception\GitException $e) { - json_return_and_die(array('message' => 'GitRepo error thrown', 'success' => false)); + return array('message' => 'GitRepo error thrown', 'success' => false); } } diff --git a/install/schema_mysql.sql b/install/schema_mysql.sql index a536c3f9a..13fc54aba 100644 --- a/install/schema_mysql.sql +++ b/install/schema_mysql.sql @@ -199,6 +199,26 @@ CREATE TABLE IF NOT EXISTS `cache` ( PRIMARY KEY (`k`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; +CREATE TABLE IF NOT EXISTS `cal` ( + `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cal_aid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_uid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_hash` varchar(255) NOT NULL DEFAULT '', + `cal_name` varchar(255) NOT NULL DEFAULT '', + `uri` varchar(255) NOT NULL DEFAULT '', + `logname` varchar(255) NOT NULL DEFAULT '', + `pass` varchar(255) NOT NULL DEFAULT '', + `ctag` varchar(255) NOT NULL DEFAULT '', + `synctoken` varchar(255) NOT NULL DEFAULT '', + `cal_types` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`cal_id`), + KEY `cal_aid` (`cal_aid`), + KEY `cal_uid` (`cal_uid`), + KEY `cal_hash` (`cal_hash`), + KEY `cal_name` (`cal_name`), + KEY `cal_types` (`cal_types`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + CREATE TABLE IF NOT EXISTS `channel` ( `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `channel_account_id` int(10) unsigned NOT NULL DEFAULT '0', @@ -394,6 +414,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `id` int(11) NOT NULL AUTO_INCREMENT, `aid` int(10) unsigned NOT NULL DEFAULT '0', `uid` int(11) NOT NULL DEFAULT '0', + `cal_id` int(11) unsigned NOT NULL DEFAULT '0', `event_xchan` char(255) NOT NULL DEFAULT '', `event_hash` char(255) NOT NULL DEFAULT '', `created` datetime NOT NULL DEFAULT '0000-00-00 00:00:00', @@ -420,6 +441,7 @@ CREATE TABLE IF NOT EXISTS `event` ( `event_vdata` text NOT NULL, PRIMARY KEY (`id`), KEY `uid` (`uid`), + KEY `cal_id` (`cal_id`), KEY `etype` (`etype`), KEY `dtstart` (`dtstart`), KEY `dtend` (`dtend`), diff --git a/install/schema_postgres.sql b/install/schema_postgres.sql index b637fea43..9473252e6 100644 --- a/install/schema_postgres.sql +++ b/install/schema_postgres.sql @@ -193,6 +193,26 @@ CREATE TABLE "cache" ( "updated" timestamp NOT NULL, PRIMARY KEY ("k") ); +CREATE TABLE "cal" ( + "cal_id" serial NOT NULL, + "cal_aid" bigint NOT NULL DEFAULT '0', + "cal_uid" bigint NOT NULL DEFAULT '0', + "cal_hash" text NOT NULL, + "cal_name" text NOT NULL, + "uri" text NOT NULL, + "logname" text NOT NULL, + "pass" text NOT NULL, + "ctag" text NOT NULL, + "synctoken" text NOT NULL, + "cal_types" text NOT NULL DEFAULT "0", + PRIMARY KEY ("cal_id") +); +create index "cal_hash_idx" on cal ("cal_hash"); +create index "cal_name_idx" on cal ("cal_name"); +create index "cal_types_idx" on cal ("cal_types"); +create index "cal_aid_idx" on cal ("cal_aid"); +create index "cal_uid_idx" on cal ("cal_uid"); + CREATE TABLE "channel" ( "channel_id" serial NOT NULL, "channel_account_id" bigint NOT NULL DEFAULT '0', @@ -380,14 +400,11 @@ create index "dreport_xchan" on dreport ("dreport_xchan"); create index "dreport_queue" on dreport ("dreport_queue"); create index "dreport_channel" on dreport ("dreport_channel"); - - - - CREATE TABLE "event" ( "id" serial NOT NULL, "aid" bigint NOT NULL DEFAULT '0', "uid" bigint NOT NULL, + "cal_id" bigint NOT NULL DEFAULT '0', "event_xchan" text NOT NULL DEFAULT '', "event_hash" text NOT NULL DEFAULT '', "created" timestamp NOT NULL DEFAULT '0001-01-01 00:00:00', @@ -415,6 +432,7 @@ CREATE TABLE "event" ( PRIMARY KEY ("id") ); create index "event_uid_idx" on event ("uid"); +create index "event_cal_idx" on event ("cal_id"); create index "event_etype_idx" on event ("etype"); create index "event_dtstart_idx" on event ("dtstart"); create index "event_dtend_idx" on event ("dtend"); diff --git a/install/update.php b/install/update.php index 908f60498..241de78e1 100644 --- a/install/update.php +++ b/install/update.php @@ -1,6 +1,6 @@ <?php -define( 'UPDATE_VERSION' , 1176 ); +define( 'UPDATE_VERSION' , 1178 ); /** * @@ -2254,3 +2254,74 @@ function update_r1175() { return UPDATE_FAILED; } + + +function update_r1176() { + + $r = q("select * from item_id where true"); + if($r) { + foreach($r as $rr) { + \Zotlabs\Lib\IConfig::Set($rr['iid'],'system',$rr['service'],$rr['sid'],true); + } + } + return UPDATE_SUCCESS; + +} + +function update_r1177() { + + if(ACTIVE_DBTYPE == DBTYPE_POSTGRES) { + $r1 = q("alter table event add cal_id bigint NOT NULL DEFAULT '0'"); + $r2 = q("create index \"event_cal_idx\" on event (\"cal_id\") "); + + $r3 = q("CREATE TABLE \"cal\" ( + \"cal_id\" serial NOT NULL, + \"cal_aid\" bigint NOT NULL DEFAULT '0', + \"cal_uid\" bigint NOT NULL DEFAULT '0', + \"cal_hash\" text NOT NULL, + \"cal_name\" text NOT NULL, + \"uri\" text NOT NULL, + \"logname\" text NOT NULL, + \"pass\" text NOT NULL, + \"ctag\" text NOT NULL, + \"synctoken\" text NOT NULL, + \"cal_types\" text NOT NULL, + PRIMARY KEY (\"cal_id\") "); + $r4 = q("create index \"cal_hash_idx\" on cal (\"cal_hash\") "); + $r5 = q("create index \"cal_name_idx\" on cal (\"cal_name\") "); + $r6 = q("create index \"cal_types_idx\" on cal (\"cal_types\") "); + $r7 = q("create index \"cal_aid_idx\" on cal (\"cal_aid\") "); + $r8 = q("create index \"cal_uid_idx\" on cal (\"cal_uid\") "); + $r = $r1 && $r2 && $r3 && $r4 && $r5 && $r6 && $r7 && $r8; + } + else { + $r1 = q("alter table event add cal_id int(10) unsigned NOT NULL DEFAULT '0', + add index ( cal_id ) "); + + $r2 = q("CREATE TABLE IF NOT EXISTS `cal` ( + `cal_id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `cal_aid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_uid` int(10) unsigned NOT NULL DEFAULT '0', + `cal_hash` varchar(255) NOT NULL DEFAULT '', + `cal_name` varchar(255) NOT NULL DEFAULT '', + `uri` varchar(255) NOT NULL DEFAULT '', + `logname` varchar(255) NOT NULL DEFAULT '', + `pass` varchar(255) NOT NULL DEFAULT '', + `ctag` varchar(255) NOT NULL DEFAULT '', + `synctoken` varchar(255) NOT NULL DEFAULT '', + `cal_types` varchar(255) NOT NULL DEFAULT '', + PRIMARY KEY (`cal_id`), + KEY `cal_aid` (`cal_aid`), + KEY `cal_uid` (`cal_uid`), + KEY `cal_hash` (`cal_hash`), + KEY `cal_name` (`cal_name`), + KEY `cal_types` (`cal_types`) + ) ENGINE=MyISAM DEFAULT CHARSET=utf8 "); + + $r = $r1 && $r2; + } + + if($r) + return UPDATE_SUCCESS; + return UPDATE_FAILED; +} diff --git a/library/Text_Highlighter/README b/library/Text_Highlighter/README new file mode 100644 index 000000000..88f71aed2 --- /dev/null +++ b/library/Text_Highlighter/README @@ -0,0 +1,455 @@ +# $Id$ + +Introduction +============ + +Text_Highlighter is a class for syntax highlighting. The main idea is to +simplify creation of subclasses implementing syntax highlighting for +particular language. Subclasses do not implement any new functioanality, they +just provide syntax highlighting rules. The rules sources are in XML format. +To create a highlighter for a language, there is no need to code a new class +manually. Simply describe the rules in XML file and use Text_Highlighter_Generator +to create a new class. + + +This document does not contain a formal description of API - it is very +simple, and I believe providing some examples of code is sufficient. + + +Highlighter XML source +====================== + +Basics +------ + +Creating a new syntax highlighter begins with describing the highlighting +rules. There are two basic elements: block and region. A block is just a +portion of text matching a regular expression and highlighted with a single +color. Keyword is an example of a block. A region is defined by two regular +expressions: one for start of region, and another for the end. The main +difference from a block is that a region can contain blocks and regions +(including same-named regions). An example of a region is a group of +statements enclosed in curly brackets (this is used in many languages, for +example PHP and C). Also, characters matching start and end of a region may be +highlighted with their own color, and region contents with another. + +Blocks and regions may be declared as contained. Contained blocks and regions +can only appear inside regions. If a region or a block is not declared as +contained, it can appear both on top level and inside regions. Block or region +declared as not-contained can only appear on top level. + +For any region, a list of blocks and regions that can appear inside this +region can be specified. + +In this document, the term "color group" is used. Chunks of text assigned to +same color group will be highlighted with same color. Note that in versions +prior 0.5.0 color goups were refered as CSS classes, but since 0.5.0 not only +HTML output is supported, so "color group" is more appropriate term. + +Elements +-------- + +The toplevel element is <highlight>. Attribute lang is required and denotes +the name of the language. Its value is used as a part of generated class name, +and must only contain letters, digits and underscores. Optional attribute +case, when given value yes, makes the language case sensitive (default is case +insensitive). Allowed subelements are: + + * <authors>: Information about the authors of the file. + <author>: Information about a single author of the file. (May be used + multiple times, one per author.) + - name="...": Author's name. Required. + - email="...": Author's email address. Optional. + + * <default>: Default color group. + - innerGroup="...": color group name. Required. + + * <region>: Region definition + - name="...": Region name. Required. + - innerGroup="...": Default color group of region contents. Required. + - delimGroup="...": color group of start and end of region. Optional, + defaults to value of innerGroup attribute. + - start="...", end="...": Regular expression matching start and end + of region. Required. Regular expression delimiters are optional, but + if you need to specify delimiter, use /. The only case when the + delimiters are needed, is specifying regular expression modifiers, + such as m or U. Examples: \/\* or /$/m. + - contained="yes": Marks region as contained. + - never-contained="yes": Marks region as not-contained. + - <contains>: Elements allowed inside this region. + - all="yes" Region can contain any other region or block + (except not-contained). May be used multiple times. + - <but> Do not allow certain regions or blocks. + - region="..." Name of region not allowed within + current region. + - block="..." Name of block not allowed within + current region. + - region="..." Name of region allowed within current region. + - block="..." Name of block allowed within current region. + - <onlyin> Only allow this region within certain regions. May be + used multiple times. + - block="..." Name of parent region + + * <block>: Block definition + - name="...": Block name. Required. + - innerGroup="...": color group of block contents. Optional. If not + specified, color group of parent region or default color group will be + used. One would only want to omit this attribute if there are + keyword groups (see below) inherited from this block, and no special + highlighting should apply when the block does not match the keyword. + - match="..." Regular expression matching the block. Required. + Regular expression delimiters are optional, but if you need to + specify delimiter, use /. The only case when the delimiters are + needed, is specifying regular expression modifiers, such as m or U. + Examples: #|\/\/ or /$/m. + - contained="yes": Marks block as contained. + - never-contained="yes": Marks block as not-contained. + - <onlyin> Only allow this block within certain regions. May be used + multiple times. + - block="..." Name of parent region + - multiline="yes": Marks block as multi-line. By default, whole + blocks are assumed to reside in a single line. This make the things + faster. If you need to declare a multi-line block, use this + attribute. + - <partgroup>: Assigns another color group to a part of the block that + matched a subpattern. + - index="n": Subpattern index. Required. + - innerGroup="...": color group name. Required. + + This is an example from CSS highlighter: the measure is matched as + a whole, but the measurement units are highlighted with different + color. + + <block name="measure" match="\d*\.?\d+(\%|em|ex|pc|pt|px|in|mm|cm)" + innerGroup="number" contained="yes"> + <onlyin region="property"/> + <partGroup index="1" innerGroup="string" /> + </block> + + * <keywords>: Keyword group definition. Keyword groups are useful when you + want to highlight some words that match a condition for a block with a + different color. Keywords are defined with literal match, not regular + expressions. For example, you have a block named identifier matching a + general identifier, and want to highlight reserved words (which match + this block as well) with different color. You inherit a keyword group + "reserved" from "identifier" block. + - name="...": Keyword group. Required. + - ifdef="...", ifndef="..." : Conditional declaration. See + "Conditions" below. + - inherits="...": Inherited block name. Required. + - innerGroup="...": color group of keyword group. Required. + - case="yes|no": Overrides case-sensitivity of the language. + Optional, defaults to global value. + - <keyword>: Single keyword definition. + - match="..." The keyword. Note: this is not a regular + expression, but literal match (possibly case insensitive). + +Note that for BC reasons element partClass is alias for partGroup, and +attributes innerClass and delimClass are aliases of innerGroup and +delimGroup, respectively. + + +Conditions +---------- + +Conditional declarations allow enabling or disabling certain highlighting +rules at runtime. For example, Java highlighter has a very big list of +keywords matching Java standard classes. Finding a match in this list can take +much time. For that reason, corresponding keyword group is declared with +"ifdef" attribute : + + <keywords name="builtin" inherits="identifier" innerClass="builtin" + case="yes" ifdef="java.builtins"> + <keyword match="AbstractAction" /> + <keyword match="AbstractBorder" /> + <keyword match="AbstractButton" /> + ... + ... + <keyword match="_Remote_Stub" /> + <keyword match="_ServantActivatorStub" /> + <keyword match="_ServantLocatorStub" /> + </keywords> + +This keyword group will be only enabled when "java.builtins" is passed as an +element of "defines" option: + + $options = array( + 'defines' => array( + 'java.builtins', + ), + 'numbers' => HL_NUMBERS_TABLE, + ); + $highlighter = Text_Highlighter::factory('java', $options); + +"ifndef" attribute has reverse meaning. + +Currently, "ifdef" and "ifndef" attributes are only supported for <keywords> +tag. + + + +Class generation +================ + +Creating XML description of highlighting rules is the most complicated part of +the process. To generate the class, you need just few lines of code: + + <?php + require_once 'Text/Highlighter/Generator.php'; + $generator = new Text_Highlighter_Generator('php.xml'); + $generator->generate(); + $generator->saveCode('PHP.php'); + ?> + + + +Command-line class generation tool +================================== + +Example from previous section looks pretty simple, but it does not handle any +errors which may occur during parsing of XML source. The package provides a +command-line script to make generation of classes even more simple, and takes +care of possible errors. It is called generate (on Unix/Linux) or generate.bat +(on Windows). This script is able to process multiple files in one run, and +also to process XML from standard input and write generated code to standard +output. + + Usage: + generate options + + Options: + -x filename, --xml=filename + source XML file. Multiple input files can be specified, in which + case each -x option must be followed by -p unless -d is specified + Defaults to stdin + -p filename, --php=filename + destination PHP file. Defaults to stdout. If specied multiple times, + each -p must follow -x + -d dirname, --dir=dirname + Default destination directory. File names will be taken from XML input + ("lang" attribute of <highlight> tag) + -h, --help + This help + +Examples + + Read from php.xml, write to PHP.php + + generate -x php.xml -p PHP.php + + Read from php.xml, write to standard output + + generate -x php.xml + + Read from php.xml, write to PHP.php, read from xml.xml, write to XML.php + + generate -x php.xml -p PHP.php -x xml.xml -p XML.php + + Read from php.xml, write to /some/dir/PHP.php, read from xml.xml, write to + /some/dir/XML.php (assuming that xml.xml contains <highlight lang="xml">, and + php.xml contains <highlight lang="php">) + + generate -x php.xml -x xml.xml -d /some/dir/ + + + +Renderers +========= + +Introduction +------------ + +Text_Highlighter supports renderes. Using renderers, you can get output in +different formats. Two renderers are included in the package: + + - HTML renderer. Generates HTML output. A style sheet should be linked to + the document to display colored text + + - Console renderer. Can be used to output highlighted text to + color-capable terminals, either directly or trough less -r + + +Renderers API +------------- + +Renderers are subclasses of Text_Highlighter_Renderer. Renderer should +override at least two methods - acceptToken and getOutput. Overriding other +methods is optional, depending on the nature of renderer's output and details +of implementation. + + string reset() + resets renderer state. This method is called every time before a new + source file is highlighted. + + string preprocess(string $code) + preprocesses code. Can be used, for example, to normalize whitespace + before highlighting. Returns preprocessed string. + + void acceptToken(string $group, string $content) + the core method of the renderer. Highlighter passes chunks of text to + this method in $content, and color group in $group + + void finalize() + signals the renderer that no more tokens are available. + + mixed getOutput() + returns generated output. + + +Setting renderer options +-------------------------------- + +Renderers accept an optional argument to their constructor - options array. +Elements of this array are renderer-specific. + +HTML renderer +------------- + +HTML renderer produces HTML output with optional line numbering. The renderer +itself does not provide information about actual colors of highlighted text. +Instead, <span class="hl-XXX"> is used, where XXX is replaced with color group +name (hl-var, hl-string, etc.). It is up to you to create a CSS stylesheet. +If 'use_language' option with value evaluating to true was passed, class names +will be formatted as "LANG-hl-XXX", where LANG is language name as defined in +highlighter XML source ("lang" attribute of <highlight> tag) in lower case. + +There are 3 special CSS classes: + + hl-main - this class applies to whole output or right table column, + depending on 'numbers' option + hl-gutter - applies to left column in table + hl-table - applies to whole table + +HTML renderer accepts following options (each being optional): + + * numbers - line numbering style. + 0 - no numbering (default) + HL_NUMBERS_LI - use <ol></ol> for line numbering + HL_NUMBERS_TABLE - create a 2-column table, with line numbers in left + column and highlighted text in right column + + * tabsize - tabulation size. Defaults to 4 + + Example: + + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + +Console renderer +---------------- + +Console renderer produces output for displaying on a color-capable terminal, +either directly or through less -r, using ANSI escape sequences. By default, +this renderer only highlights most common color groups. Additional colors +can be specified using 'colors' option. This renderer also accepts 'numbers' +option - a boolean value, and 'tabsize' option. + + Example : + + require_once 'Text/Highlighter/Renderer/Console.php'; + $colors = array( + 'prepro' => "\033[35m", + 'types' => "\033[32m", + ); + $options = array( + 'numbers' => true, + 'tabsize' => 8, + 'colors' => $colors, + ); + $renderer = new Text_Highlighter_Renderer_Console($options); + + +ANSI color escape sequences have the following format: + + ESC[#;#;....;#m + +where ESC is character with ASCII code 27 (033 octal, 0x1B hexadecimal). # is +one of the following: + + 0 for normal display + 1 for bold on + 4 underline (mono only) + 5 blink on + 7 reverse video on + 8 nondisplayed (invisible) + 30 black foreground + 31 red foreground + 32 green foreground + 33 yellow foreground + 34 blue foreground + 35 magenta foreground + 36 cyan foreground + 37 white foreground + 40 black background + 41 red background + 42 green background + 43 yellow background + 44 blue background + 45 magenta background + 46 cyan background + 47 white background + + +How to use Text_Highlighter class +================================= + +Creating a highlighter object +----------------------------- + +To create a highlighter for a certain language, use Text_Highlighter::factory() +static method: + + require_once 'Text/Highlighter.php'; + $hl = Text_Highlighter::factory('php'); + + +Setting a renderer +------------------ + +Actual output is produced by a renderer. + + require_once 'Text/Highlighter.php'; + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + $hl = Text_Highlighter::factory('php'); + $hl->setRenderer($renderer); + +Note that for BC reasons, it is possible to use highlighter without setting a +renderer. If no renderer is set, HTML renderer will be used by default. In +this case, you should pass options as second parameter to factory method. The +following example works exactly as previous one: + + require_once 'Text/Highlighter.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $hl = Text_Highlighter::factory('php', $options); + + +Getting output +-------------- + +And finally, do the highlighting and get the output: + + require_once 'Text/Highlighter.php'; + require_once 'Text/Highlighter/Renderer/Html.php'; + $options = array( + 'numbers' => HL_NUMBERS_LI, + 'tabsize' => 8, + ); + $renderer = new Text_Highlighter_Renderer_HTML($options); + $hl = Text_Highlighter::factory('php'); + $hl->setRenderer($renderer); + $html = $hl->highlight(file_get_contents('example.php')); + +# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */ + diff --git a/library/Text_Highlighter/TODO b/library/Text_Highlighter/TODO new file mode 100644 index 000000000..77a148b8a --- /dev/null +++ b/library/Text_Highlighter/TODO @@ -0,0 +1,12 @@ +# $Id$ + +Major issues to solve (but I currently have no idea how) : + +- speedup highlighting process + +- switching between highlighters depending on context, for example : + PHP code -> HTML -> (JavaScript|CSS) + + +# vim: set autoindent tabstop=4 shiftwidth=4 softtabstop=4 tw=78: */ + diff --git a/library/Text_Highlighter/Text/Highlighter.php b/library/Text_Highlighter/Text/Highlighter.php new file mode 100644 index 000000000..480113c16 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter.php @@ -0,0 +1,398 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * Highlighter base class + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +// require_once 'PEAR.php'; + +// {{{ BC constants + +// BC trick : define constants related to default +// renderer if needed +if (!defined('HL_NUMBERS_LI')) { + /**#@+ + * Constant for use with $options['numbers'] + * @see Text_Highlighter_Renderer_Html::_init() + */ + /** + * use numbered list + */ + define ('HL_NUMBERS_LI' , 1); + /** + * Use 2-column table with line numbers in left column and code in right column. + * Forces $options['tag'] = HL_TAG_PRE + */ + define ('HL_NUMBERS_TABLE' , 2); + /**#@-*/ +} + +// }}} +// {{{ constants +/** + * for our purpose, it is infinity + */ +define ('HL_INFINITY', 1000000000); + +// }}} + +/** + * Text highlighter base class + * + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ + +// {{{ Text_Highlighter + +/** + * Text highlighter base class + * + * This class implements all functions necessary for highlighting, + * but it does not contain highlighting rules. Actual highlighting is + * done using a descendent of this class. + * + * One is not supposed to manually create descendent classes. + * Instead, describe highlighting rules in XML format and + * use {@link Text_Highlighter_Generator} to create descendent class. + * Alternatively, an instance of a descendent class can be created + * directly. + * + * Use {@link Text_Highlighter::factory()} to create an + * object for particular language highlighter + * + * Usage example + * <code> + *require_once 'Text/Highlighter.php'; + *$hlSQL = Text_Highlighter::factory('SQL',array('numbers'=>true)); + *echo $hlSQL->highlight('SELECT * FROM table a WHERE id = 12'); + * </code> + * + * @author Andrey Demenev <demenev@gmail.com> + * @package Text_Highlighter + * @access public + */ + +class Text_Highlighter +{ + // {{{ members + + /** + * Syntax highlighting rules. + * Auto-generated classes set this var + * + * @access protected + * @see _init + * @var array + */ + var $_syntax; + + /** + * Renderer object. + * + * @access private + * @var array + */ + var $_renderer; + + /** + * Options. Keeped for BC + * + * @access protected + * @var array + */ + var $_options = array(); + + /** + * Conditionds + * + * @access protected + * @var array + */ + var $_conditions = array(); + + /** + * Disabled keywords + * + * @access protected + * @var array + */ + var $_disabled = array(); + + /** + * Language + * + * @access protected + * @var string + */ + var $_language = ''; + + // }}} + // {{{ _checkDefines + + /** + * Called by subclssses' constructors to enable/disable + * optional highlighter rules + * + * @param array $defines Conditional defines + * + * @access protected + */ + function _checkDefines() + { + if (isset($this->_options['defines'])) { + $defines = $this->_options['defines']; + } else { + $defines = array(); + } + foreach ($this->_conditions as $name => $actions) { + foreach($actions as $action) { + $present = in_array($name, $defines); + if (!$action[1]) { + $present = !$present; + } + if ($present) { + unset($this->_disabled[$action[0]]); + } else { + $this->_disabled[$action[0]] = true; + } + } + } + } + + // }}} + // {{{ factory + + /** + * Create a new Highlighter object for specified language + * + * @param string $lang language, for example "SQL" + * @param array $options Rendering options. This + * parameter is only keeped for BC reasons, use + * {@link Text_Highlighter::setRenderer()} instead + * + * @return mixed a newly created Highlighter object, or + * a PEAR error object on error + * + * @static + * @access public + */ + function &factory($lang, $options = array()) + { + $lang = strtoupper($lang); + @include_once 'Text/Highlighter/' . $lang . '.php'; + + $classname = 'Text_Highlighter_' . $lang; + + if (!class_exists($classname)) { + return PEAR::raiseError('Highlighter for ' . $lang . ' not found'); + } + + $obj = new $classname($options); + + return $obj; + } + + // }}} + // {{{ setRenderer + + /** + * Set renderer object + * + * @param object $renderer Text_Highlighter_Renderer + * + * @access public + */ + function setRenderer(&$renderer) + { + $this->_renderer = $renderer; + } + + // }}} + + /** + * Helper function to find matching brackets + * + * @access private + */ + function _matchingBrackets($str) + { + return strtr($str, '()<>[]{}', ')(><][}{'); + } + + + + + function _getToken() + { + if (!empty($this->_tokenStack)) { + return array_pop($this->_tokenStack); + } + if ($this->_pos >= $this->_len) { + return NULL; + } + + if ($this->_state != -1 && preg_match($this->_endpattern, $this->_str, $m, PREG_OFFSET_CAPTURE, $this->_pos)) { + $endpos = $m[0][1]; + $endmatch = $m[0][0]; + } else { + $endpos = -1; + } + preg_match ($this->_regs[$this->_state], $this->_str, $m, PREG_OFFSET_CAPTURE, $this->_pos); + $n = 1; + + + foreach ($this->_counts[$this->_state] as $i=>$count) { + if (!isset($m[$n])) { + break; + } + if ($m[$n][1]>-1 && ($endpos == -1 || $m[$n][1] < $endpos)) { + if ($this->_states[$this->_state][$i] != -1) { + $this->_tokenStack[] = array($this->_delim[$this->_state][$i], $m[$n][0]); + } else { + $inner = $this->_inner[$this->_state][$i]; + if (isset($this->_parts[$this->_state][$i])) { + $parts = array(); + $partpos = $m[$n][1]; + for ($j=1; $j<=$count; $j++) { + if ($m[$j+$n][1] < 0) { + continue; + } + if (isset($this->_parts[$this->_state][$i][$j])) { + if ($m[$j+$n][1] > $partpos) { + array_unshift($parts, array($inner, substr($this->_str, $partpos, $m[$j+$n][1]-$partpos))); + } + array_unshift($parts, array($this->_parts[$this->_state][$i][$j], $m[$j+$n][0])); + } + $partpos = $m[$j+$n][1] + strlen($m[$j+$n][0]); + } + if ($partpos < $m[$n][1] + strlen($m[$n][0])) { + array_unshift($parts, array($inner, substr($this->_str, $partpos, $m[$n][1] - $partpos + strlen($m[$n][0])))); + } + $this->_tokenStack = array_merge($this->_tokenStack, $parts); + } else { + foreach ($this->_keywords[$this->_state][$i] as $g => $re) { + if (isset($this->_disabled[$g])) { + continue; + } + if (preg_match($re, $m[$n][0])) { + $inner = $this->_kwmap[$g]; + break; + } + } + $this->_tokenStack[] = array($inner, $m[$n][0]); + } + } + if ($m[$n][1] > $this->_pos) { + $this->_tokenStack[] = array($this->_lastinner, substr($this->_str, $this->_pos, $m[$n][1]-$this->_pos)); + } + $this->_pos = $m[$n][1] + strlen($m[$n][0]); + if ($this->_states[$this->_state][$i] != -1) { + $this->_stack[] = array($this->_state, $this->_lastdelim, $this->_lastinner, $this->_endpattern); + $this->_lastinner = $this->_inner[$this->_state][$i]; + $this->_lastdelim = $this->_delim[$this->_state][$i]; + $l = $this->_state; + $this->_state = $this->_states[$this->_state][$i]; + $this->_endpattern = $this->_end[$this->_state]; + if ($this->_subst[$l][$i]) { + for ($k=0; $k<=$this->_counts[$l][$i]; $k++) { + if (!isset($m[$i+$k])) { + break; + } + $quoted = preg_quote($m[$n+$k][0], '/'); + $this->_endpattern = str_replace('%'.$k.'%', $quoted, $this->_endpattern); + $this->_endpattern = str_replace('%b'.$k.'%', $this->_matchingBrackets($quoted), $this->_endpattern); + } + } + } + return array_pop($this->_tokenStack); + } + $n += $count + 1; + } + + if ($endpos > -1) { + $this->_tokenStack[] = array($this->_lastdelim, $endmatch); + if ($endpos > $this->_pos) { + $this->_tokenStack[] = array($this->_lastinner, substr($this->_str, $this->_pos, $endpos-$this->_pos)); + } + list($this->_state, $this->_lastdelim, $this->_lastinner, $this->_endpattern) = array_pop($this->_stack); + $this->_pos = $endpos + strlen($endmatch); + return array_pop($this->_tokenStack); + } + $p = $this->_pos; + $this->_pos = HL_INFINITY; + return array($this->_lastinner, substr($this->_str, $p)); + } + + + + + // {{{ highlight + + /** + * Highlights code + * + * @param string $str Code to highlight + * @access public + * @return string Highlighted text + * + */ + + function highlight($str) + { + if (!($this->_renderer)) { + include_once('Text/Highlighter/Renderer/Html.php'); + $this->_renderer = new Text_Highlighter_Renderer_Html($this->_options); + } + $this->_state = -1; + $this->_pos = 0; + $this->_stack = array(); + $this->_tokenStack = array(); + $this->_lastinner = $this->_defClass; + $this->_lastdelim = $this->_defClass; + $this->_endpattern = ''; + $this->_renderer->reset(); + $this->_renderer->setCurrentLanguage($this->_language); + $this->_str = $this->_renderer->preprocess($str); + $this->_len = strlen($this->_str); + while ($token = $this->_getToken()) { + $this->_renderer->acceptToken($token[0], $token[1]); + } + $this->_renderer->finalize(); + return $this->_renderer->getOutput(); + } + + // }}} + +} + +// }}} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/ABAP.php b/library/Text_Highlighter/Text/Highlighter/ABAP.php new file mode 100644 index 000000000..b2f7bda94 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/ABAP.php @@ -0,0 +1,519 @@ +<?php +/** + * Auto-generated class. ABAP syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : abap.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Stoyan Stefanov <ssttoo@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. ABAP syntax highlighting + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_ABAP extends Text_Highlighter +{ + var $_language = 'abap'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_ABAP($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)[a-z_\\-]\\w*)/', + 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/', + 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/', + 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)^\\*|")|((?i)\')|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)[a-z_\\-]\\w*)/', + 3 => '//', + 4 => '//', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 0 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => '', + ), + 0 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + ), + 1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + ), + 2 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'identifier', + ), + 0 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'identifier', + ), + 1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'identifier', + ), + 2 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'identifier', + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_end = array ( + 0 => '/(?i)\\}/', + 1 => '/(?i)\\)/', + 2 => '/(?i)\\]/', + 3 => '/(?mi)$/', + 4 => '/(?i)\'/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + ), + 0 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/', + 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/', + 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/', + ), + ), + 0 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/', + 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/', + 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/', + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/', + 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/', + 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/', + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + 'sy' => '/^((?i)screen-name|screen-group1|screen-group2|screen-group3|screen-group4|screen-required|screen-input|screen-output|screen-intensified|screen-invisible|screen-length|screen-active|sy-index|sy-pagno|sy-tabix|sy-tfill|sy-tlopc|sy-tmaxl|sy-toccu|sy-ttabc|sy-tstis|sy-ttabi|sy-dbcnt|sy-fdpos|sy-colno|sy-linct|sy-linno|sy-linsz|sy-pagct|sy-macol|sy-marow|sy-tleng|sy-sfoff|sy-willi|sy-lilli|sy-subrc|sy-fleng|sy-cucol|sy-curow|sy-lsind|sy-listi|sy-stepl|sy-tpagi|sy-winx1|sy-winy1|sy-winx2|sy-winy2|sy-winco|sy-winro|sy-windi|sy-srows|sy-scols|sy-loopc|sy-folen|sy-fodec|sy-tzone|sy-dayst|sy-ftype|sy-appli|sy-fdayw|sy-ccurs|sy-ccurt|sy-debug|sy-ctype|sy-input|sy-langu|sy-modno|sy-batch|sy-binpt|sy-calld|sy-dynnr|sy-dyngr|sy-newpa|sy-pri40|sy-rstrt|sy-wtitl|sy-cpage|sy-dbnam|sy-mandt|sy-prefx|sy-fmkey|sy-pexpi|sy-prini|sy-primm|sy-prrel|sy-playo|sy-prbig|sy-playp|sy-prnew|sy-prlog|sy-pdest|sy-plist|sy-pauth|sy-prdsn|sy-pnwpa|sy-callr|sy-repi2|sy-rtitl|sy-prrec|sy-prtxt|sy-prabt|sy-lpass|sy-nrpag|sy-paart|sy-prcop|sy-batzs|sy-bspld|sy-brep4|sy-batzo|sy-batzd|sy-batzw|sy-batzm|sy-ctabl|sy-dbsys|sy-dcsys|sy-macdb|sy-sysid|sy-opsys|sy-pfkey|sy-saprl|sy-tcode|sy-ucomm|sy-cfwae|sy-chwae|sy-spono|sy-sponr|sy-waers|sy-cdate|sy-datum|sy-slset|sy-subty|sy-subcs|sy-group|sy-ffile|sy-uzeit|sy-dsnam|sy-repid|sy-tabid|sy-tfdsn|sy-uname|sy-lstat|sy-abcde|sy-marky|sy-sfnam|sy-tname|sy-msgli|sy-title|sy-entry|sy-lisel|sy-uline|sy-xcode|sy-cprog|sy-xprog|sy-xform|sy-ldbpg|sy-tvar0|sy-tvar1|sy-tvar2|sy-tvar3|sy-tvar4|sy-tvar5|sy-tvar6|sy-tvar7|sy-tvar8|sy-tvar9|sy-msgid|sy-msgty|sy-msgno|sy-msgv1|sy-msgv2|sy-msgv3|sy-msgv4|sy-oncom|sy-vline|sy-winsl|sy-staco|sy-staro|sy-datar|sy-host|sy-locdb|sy-locop|sy-datlo|sy-timlo|sy-zonlo|syst-index|syst-pagno|syst-tabix|syst-tfill|syst-tlopc|syst-tmaxl|syst-toccu|syst-ttabc|syst-tstis|syst-ttabi|syst-dbcnt|syst-fdpos|syst-colno|syst-linct|syst-linno|syst-linsz|syst-pagct|syst-macol|syst-marow|syst-tleng|syst-sfoff|syst-willi|syst-lilli|syst-subrc|syst-fleng|syst-cucol|syst-curow|syst-lsind|syst-listi|syst-stepl|syst-tpagi|syst-winx1|syst-winy1|syst-winx2|syst-winy2|syst-winco|syst-winro|syst-windi|syst-srows|syst-scols|syst-loopc|syst-folen|syst-fodec|syst-tzone|syst-dayst|syst-ftype|syst-appli|syst-fdayw|syst-ccurs|syst-ccurt|syst-debug|syst-ctype|syst-input|syst-langu|syst-modno|syst-batch|syst-binpt|syst-calld|syst-dynnr|syst-dyngr|syst-newpa|syst-pri40|syst-rstrt|syst-wtitl|syst-cpage|syst-dbnam|syst-mandt|syst-prefx|syst-fmkey|syst-pexpi|syst-prini|syst-primm|syst-prrel|syst-playo|syst-prbig|syst-playp|syst-prnew|syst-prlog|syst-pdest|syst-plist|syst-pauth|syst-prdsn|syst-pnwpa|syst-callr|syst-repi2|syst-rtitl|syst-prrec|syst-prtxt|syst-prabt|syst-lpass|syst-nrpag|syst-paart|syst-prcop|syst-batzs|syst-bspld|syst-brep4|syst-batzo|syst-batzd|syst-batzw|syst-batzm|syst-ctabl|syst-dbsys|syst-dcsys|syst-macdb|syst-sysid|syst-opsys|syst-pfkey|syst-saprl|syst-tcode|syst-ucomm|syst-cfwae|syst-chwae|syst-spono|syst-sponr|syst-waers|syst-cdate|syst-datum|syst-slset|syst-subty|syst-subcs|syst-group|syst-ffile|syst-uzeit|syst-dsnam|syst-repid|syst-tabid|syst-tfdsn|syst-uname|syst-lstat|syst-abcde|syst-marky|syst-sfnam|syst-tname|syst-msgli|syst-title|syst-entry|syst-lisel|syst-uline|syst-xcode|syst-cprog|syst-xprog|syst-xform|syst-ldbpg|syst-tvar0|syst-tvar1|syst-tvar2|syst-tvar3|syst-tvar4|syst-tvar5|syst-tvar6|syst-tvar7|syst-tvar8|syst-tvar9|syst-msgid|syst-msgty|syst-msgno|syst-msgv1|syst-msgv2|syst-msgv3|syst-msgv4|syst-oncom|syst-vline|syst-winsl|syst-staco|syst-staro|syst-datar|syst-host|syst-locdb|syst-locop|syst-datlo|syst-timlo|syst-zonlo)$/', + 'reserved' => '/^((?i)abs|acos|add|add-corresponding|adjacent|after|aliases|all|analyzer|and|any|append|as|ascending|asin|assign|assigned|assigning|at|atan|authority-check|avg|back|before|begin|binary|bit|bit-and|bit-not|bit-or|bit-xor|blank|block|break-point|buffer|by|c|call|case|catch|ceil|centered|chain|change|changing|check|checkbox|class|class-data|class-events|class-methods|class-pool|clear|client|close|cnt|code|collect|color|comment|commit|communication|compute|concatenate|condense|constants|context|contexts|continue|control|controls|convert|copy|corresponding|cos|cosh|count|country|create|currency|cursor|customer-function|data|database|dataset|delete|decimals|default|define|demand|descending|describe|dialog|distinct|div|divide|divide-corresponding|do|duplicates|dynpro|edit|editor-call|else|elseif|end|end-of-definition|end-of-page|end-of-selection|endat|endcase|endcatch|endchain|endclass|enddo|endexec|endform|endfunction|endif|endinterface|endloop|endmethod|endmodule|endon|endprovide|endselect|endwhile|entries|events|exec|exit|exit-command|exp|exponent|export|exporting|exceptions|extended|extract|fetch|field|field-groups|field-symbols|fields|floor|for|form|format|frac|frame|free|from|function|function-pool|generate|get|group|hashed|header|help-id|help-request|hide|hotspot|icon|id|if|import|importing|include|index|infotypes|initialization|inner|input|insert|intensified|interface|interface-pool|interfaces|into|inverse|join|key|language|last|leave|left|left-justified|like|line|line-count|line-selection|line-size|lines|list-processing|load|load-of-program|local|locale|log|log10|loop|m|margin|mask|matchcode|max|memory|message|message-id|messages|method|methods|min|mod|mode|modif|modify|module|move|move-corresponding|multiply|multiply-corresponding|new|new-line|new-page|next|no|no-gap|no-gaps|no-heading|no-scrolling|no-sign|no-title|no-zero|nodes|non-unique|o|object|obligatory|occurs|of|off|on|open|or|order|others|outer|output|overlay|pack|page|parameter|parameters|perform|pf-status|position|print|print-control|private|process|program|property|protected|provide|public|put|radiobutton|raise|raising|range|ranges|read|receive|refresh|reject|replace|report|requested|reserve|reset|right-justified|rollback|round|rows|rtti|run|scan|screen|search|separated|scroll|scroll-boundary|select|select-options|selection-screen|selection-table|set|shared|shift|sign|sin|single|sinh|size|skip|sort|sorted|split|sql|sqrt|stamp|standard|start-of-selection|statics|stop|string|strlen|structure|submit|subtract|subtract-corresponding|sum|supply|suppress|symbol|syntax-check|syntax-trace|system-call|system-exceptions|table|table_line|tables|tan|tanh|text|textpool|time|times|title|titlebar|to|top-of-page|transaction|transfer|translate|transporting|trunc|type|type-pool|type-pools|types|uline|under|unique|unit|unpack|up|update|user-command|using|value|value-request|values|vary|when|where|while|window|with|with-title|work|write|x|xstring|z|zone)$/', + 'constants' => '/^((?i)initial|null|space|col_background|col_heading|col_normal|col_total|col_key|col_positive|col_negative|col_group)$/', + ), + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'sy' => 'reserved', + 'reserved' => 'reserved', + 'constants' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/AVRC.php b/library/Text_Highlighter/Text/Highlighter/AVRC.php new file mode 100644 index 000000000..de4b82ccd --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/AVRC.php @@ -0,0 +1,894 @@ + +<?php +/** + * Auto-generated class. AVRC syntax highlighting + * + * + * C/C++ highlighter specific to Atmel AVR microcontrollers + * + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: avrc.xml + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. AVRC syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_AVRC extends Text_Highlighter +{ + var $_language = 'avrc'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_AVRC($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 0 => '/((?i)\\\\)/', + 1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 2 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 3 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 4 => '//', + 5 => '/((?i)")|((?i)<)/', + 6 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 7 => '/((?i)\\$\\w+\\s*:.+\\$)/', + 8 => '/((?i)\\$\\w+\\s*:.+\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 0 => + array ( + 0 => 0, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 2, + 8 => 0, + 9 => 0, + ), + 7 => + array ( + 0 => 0, + ), + 8 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => '', + ), + 1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'quotes', + 1 => 'quotes', + ), + 6 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => '', + ), + 8 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => 'special', + ), + 1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'string', + 1 => 'string', + ), + 6 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'identifier', + 4 => 'number', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => 'inlinedoc', + ), + 8 => + array ( + 0 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)"/', + 1 => '/(?i)\\}/', + 2 => '/(?i)\\)/', + 3 => '/(?i)\\]/', + 4 => '/(?i)>/', + 5 => '/(?mi)(?<!\\\\)$/', + 6 => '/(?mi)(?<!\\\\)$/', + 7 => '/(?i)\\*\\//', + 8 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 0 => + array ( + 0 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 4, + ), + 6 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => 7, + 9 => 8, + ), + 7 => + array ( + 0 => -1, + ), + 8 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 0 => + array ( + 0 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => -1, + 1 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'registers' => '/^(ACSR|ADCH|ADCL|ADCSRA|ADMUX|ASSR|DDRA|DDRB|DDRC|DDRD|DDRE|DDRF|DDRG|EEARH|EEARL|EECR|EEDR|EICRA|EICRB|EIFR|EIMSK|ETIFR|ETIMSK|GICR|GIFR|ICR1H|ICR1L|ICR3H|ICR3L|MCUCR|MCUCSR|OCDR|OCR0|OCR1AH|OCR1AL|OCR1BH|OCR1BL|OCR1CH|OCR1CL|OCR2|OCR3AH|OCR3AL|OCR3BH|OCR3BL|OCR3CH|OCR3CL|OSCCAL|PINA|PINB|PINC|PIND|PINE|PINF|PING|PORTA|PORTB|PORTC|PORTD|PORTE|PORTF|PORTG|RAMPZ|SFIOR|SPCR|SPDR|SPH|SPL|SPMCR|SPMCSR|SPSR|SREG|TCCR0|TCCR1A|TCCR1B|TCCR1C|TCCR2|TCCR3A|TCCR3B|TCCR3C|TCNT0|TCNT1H|TCNT1L|TCNT2|TCNT3H|TCNT3L|TIFR|TIMSK|TWAR|TWBR|TWCR|TWDR|TWSR|UBRR0H|UBRR0L|UBRR1H|UBRR1L|UBRRH|UBRRL|UCSR0A|UCSR0B|UCSR0C|UCSR1A|UCSR1B|UCSR1C|UCSRA|UCSRB|UCSRC|UDR|UDR0|UDR1|WDTCR|XDIV|XMCRA|XMCRB)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 4 => + array ( + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => -1, + 9 => -1, + ), + 7 => + array ( + 0 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 7 => + array ( + 0 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 0 => + array ( + 0 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => false, + 1 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 7 => + array ( + 0 => false, + ), + 8 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'registers' => 'reserved', + 'types' => 'types', + 'Common Macros' => 'prepro', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/CPP.php b/library/Text_Highlighter/Text/Highlighter/CPP.php new file mode 100644 index 000000000..eaa47c575 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/CPP.php @@ -0,0 +1,891 @@ + +<?php +/** + * Auto-generated class. CPP syntax highlighting + * + * + * Thanks to Aaron Kalin for initial + * implementation of this highlighter + * + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: cpp.xml + * @author Aaron Kalin + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. CPP syntax highlighting + * + * @author Aaron Kalin + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_CPP extends Text_Highlighter +{ + var $_language = 'cpp'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_CPP($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 0 => '/((?i)\\\\)/', + 1 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 2 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 3 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?mi)^[ \\t]*#include)|((?mii)^[ \\t]*#[ \\t]*[a-z]+)|((?i)\\d*\\.?\\d+)|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 4 => '//', + 5 => '/((?i)")|((?i)<)/', + 6 => '/((?i)")|((?i)\\{)|((?i)\\()|((?i)[a-z_]\\w*)|((?i)\\b0[xX][\\da-f]+)|((?i)\\b\\d\\d*|\\b0\\b)|((?i)\\b0[0-7]+)|((?i)\\b(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\/\\*)|((?i)\\/\\/.+)/', + 7 => '/((?i)\\$\\w+\\s*:.+\\$)/', + 8 => '/((?i)\\$\\w+\\s*:.+\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 0 => + array ( + 0 => 0, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 2, + 9 => 0, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 2, + 8 => 0, + 9 => 0, + ), + 7 => + array ( + 0 => 0, + ), + 8 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => '', + ), + 1 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => 'prepro', + 10 => 'prepro', + 11 => '', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'quotes', + 1 => 'quotes', + ), + 6 => + array ( + 0 => 'quotes', + 1 => 'brackets', + 2 => 'brackets', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => '', + ), + 8 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 0 => + array ( + 0 => 'special', + ), + 1 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 2 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 3 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'identifier', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'number', + 9 => 'prepro', + 10 => 'code', + 11 => 'number', + 12 => 'mlcomment', + 13 => 'comment', + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 'string', + 1 => 'string', + ), + 6 => + array ( + 0 => 'string', + 1 => 'code', + 2 => 'code', + 3 => 'identifier', + 4 => 'number', + 5 => 'number', + 6 => 'number', + 7 => 'number', + 8 => 'mlcomment', + 9 => 'comment', + ), + 7 => + array ( + 0 => 'inlinedoc', + ), + 8 => + array ( + 0 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)"/', + 1 => '/(?i)\\}/', + 2 => '/(?i)\\)/', + 3 => '/(?i)\\]/', + 4 => '/(?i)>/', + 5 => '/(?mi)(?<!\\\\)$/', + 6 => '/(?mi)(?<!\\\\)$/', + 7 => '/(?i)\\*\\//', + 8 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 0 => + array ( + 0 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => 5, + 10 => 6, + 11 => -1, + 12 => 7, + 13 => 8, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => 0, + 1 => 4, + ), + 6 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => 7, + 9 => 8, + ), + 7 => + array ( + 0 => -1, + ), + 8 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 0 => + array ( + 0 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => -1, + 10 => -1, + 11 => + array ( + ), + 12 => -1, + 13 => -1, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => -1, + 1 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + 'reserved' => '/^(and|and_eq|asm|bitand|bitor|break|case|catch|compl|const_cast|continue|default|delete|do|dynamic_cast|else|for|fortran|friend|goto|if|new|not|not_eq|operator|or|or_eq|private|protected|public|reinterpret_cast|return|sizeof|static_cast|switch|this|throw|try|typeid|using|while|xor|xor_eq|false|true)$/', + 'types' => '/^(auto|bool|char|class|const|double|enum|explicit|export|extern|float|inline|int|long|mutable|namespace|register|short|signed|static|struct|template|typedef|typename|union|unsigned|virtual|void|volatile|wchar_t)$/', + 'Common Macros' => '/^(NULL|TRUE|FALSE|MAX|MIN|__LINE__|__DATA__|__FILE__|__TIME__|__STDC__)$/', + ), + 4 => + array ( + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => -1, + 9 => -1, + ), + 7 => + array ( + 0 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + ), + 7 => + array ( + 0 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 0 => + array ( + 0 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + ), + 4 => + array ( + ), + 5 => + array ( + 0 => false, + 1 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + ), + 7 => + array ( + 0 => false, + ), + 8 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'types' => 'types', + 'Common Macros' => 'prepro', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/CSS.php b/library/Text_Highlighter/Text/Highlighter/CSS.php new file mode 100644 index 000000000..51757c88e --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/CSS.php @@ -0,0 +1,437 @@ +<?php +/** + * Auto-generated class. CSS syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: css.xml + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. CSS syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_CSS extends Text_Highlighter +{ + var $_language = 'css'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_CSS($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\/\\*)|((?i)(@[a-z\\d]+))|((?i)(((\\.|#)?[a-z]+[a-z\\d\\-]*(?![a-z\\d\\-]))|(\\*))(?!\\s*:\\s*[\\s\\{]))|((?i):[a-z][a-z\\d\\-]*)|((?i)\\[)|((?i)\\{)/', + 0 => '//', + 1 => '/((?i)\\d*\\.?\\d+(\\%|em|ex|pc|pt|px|in|mm|cm))|((?i)\\d*\\.?\\d+)|((?i)[a-z][a-z\\d\\-]*)|((?i)#([\\da-f]{6}|[\\da-f]{3})\\b)/', + 2 => '/((?i)\')|((?i)")|((?i)[\\w\\-\\:]+)/', + 3 => '/((?i)\\/\\*)|((?i)[a-z][a-z\\d\\-]*\\s*:)|((?i)(((\\.|#)?[a-z]+[a-z\\d\\-]*(?![a-z\\d\\-]))|(\\*))(?!\\s*:\\s*[\\s\\{]))|((?i)\\{)/', + 4 => '/((?i)\\\\[\\\\(\\\\)\\\\])/', + 5 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 6 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`|\\\\t|\\\\n|\\\\r)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 4, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 1, + 1 => 0, + 2 => 0, + 3 => 1, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 4, + 3 => 0, + ), + 4 => + array ( + 0 => 0, + ), + 5 => + array ( + 0 => 0, + ), + 6 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'comment', + 1 => '', + 2 => '', + 3 => '', + 4 => 'brackets', + 5 => 'brackets', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 2 => + array ( + 0 => 'quotes', + 1 => 'quotes', + 2 => '', + ), + 3 => + array ( + 0 => 'comment', + 1 => 'reserved', + 2 => '', + 3 => 'brackets', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => '', + ), + 6 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'var', + 2 => 'identifier', + 3 => 'special', + 4 => 'code', + 5 => 'code', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'number', + 1 => 'number', + 2 => 'code', + 3 => 'var', + ), + 2 => + array ( + 0 => 'string', + 1 => 'string', + 2 => 'var', + ), + 3 => + array ( + 0 => 'comment', + 1 => 'code', + 2 => 'identifier', + 3 => 'code', + ), + 4 => + array ( + 0 => 'string', + ), + 5 => + array ( + 0 => 'special', + ), + 6 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)\\*\\//', + 1 => '/(?i)(?=;|\\})/', + 2 => '/(?i)\\]/', + 3 => '/(?i)\\}/', + 4 => '/(?i)\\)/', + 5 => '/(?i)\'/', + 6 => '/(?i)"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => 2, + 5 => 3, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 2 => + array ( + 0 => 5, + 1 => 6, + 2 => -1, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + 3 => 3, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => -1, + ), + 6 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => -1, + 5 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 'propertyValue' => '/^((?i)far-left|left|center-left|center-right|center|far-right|right-side|right|behind|leftwards|rightwards|inherit|scroll|fixed|transparent|none|repeat-x|repeat-y|repeat|no-repeat|collapse|separate|auto|top|bottom|both|open-quote|close-quote|no-open-quote|no-close-quote|crosshair|default|pointer|move|e-resize|ne-resize|nw-resize|n-resize|se-resize|sw-resize|s-resize|text|wait|help|ltr|rtl|inline|block|list-item|run-in|compact|marker|table|inline-table|table-row-group|table-header-group|table-footer-group|table-row|table-column-group|table-column|table-cell|table-caption|below|level|above|higher|lower|show|hide|caption|icon|menu|message-box|small-caption|status-bar|normal|wider|narrower|ultra-condensed|extra-condensed|condensed|semi-condensed|semi-expanded|expanded|extra-expanded|ultra-expanded|italic|oblique|small-caps|bold|bolder|lighter|inside|outside|disc|circle|square|decimal|decimal-leading-zero|lower-roman|upper-roman|lower-greek|lower-alpha|lower-latin|upper-alpha|upper-latin|hebrew|armenian|georgian|cjk-ideographic|hiragana|katakana|hiragana-iroha|katakana-iroha|crop|cross|invert|visible|hidden|always|avoid|x-low|low|medium|high|x-high|mix?|repeat?|static|relative|absolute|portrait|landscape|spell-out|once|digits|continuous|code|x-slow|slow|fast|x-fast|faster|slower|justify|underline|overline|line-through|blink|capitalize|uppercase|lowercase|embed|bidi-override|baseline|sub|super|text-top|middle|text-bottom|silent|x-soft|soft|loud|x-loud|pre|nowrap|serif|sans-serif|cursive|fantasy|monospace|empty|string|strict|loose|char|true|false|dotted|dashed|solid|double|groove|ridge|inset|outset|larger|smaller|xx-small|x-small|small|large|x-large|xx-large|all|newspaper|distribute|distribute-all-lines|distribute-center-last|inter-word|inter-ideograph|inter-cluster|kashida|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|keep-all|break-all|break-word|lr-tb|tb-rl|thin|thick|inline-block|w-resize|hand|distribute-letter|distribute-space|whitespace|male|female|child)$/', + 'namedcolor' => '/^((?i)aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow|activeborder|activecaption|appworkspace|background|buttonface|buttonhighlight|buttonshadow|buttontext|captiontext|graytext|highlight|highlighttext|inactiveborder|inactivecaption|inactivecaptiontext|infobackground|infotext|menu|menutext|scrollbar|threeddarkshadow|threedface|threedhighlight|threedlightshadow|threedshadow|window|windowframe|windowtext)$/', + ), + 3 => + array ( + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => -1, + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + 1 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + 6 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + ), + 6 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'propertyValue' => 'string', + 'namedcolor' => 'var', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +} diff --git a/library/Text_Highlighter/Text/Highlighter/DIFF.php b/library/Text_Highlighter/Text/Highlighter/DIFF.php new file mode 100644 index 000000000..2bb25a453 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/DIFF.php @@ -0,0 +1,384 @@ +<?php +/** + * Auto-generated class. DIFF syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : diff.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. DIFF syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_DIFF extends Text_Highlighter +{ + var $_language = 'diff'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_DIFF($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?m)^\\\\\\sNo\\snewline.+$)|((?m)^\\-\\-\\-$)|((?m)^(diff\\s+\\-|Only\\s+|Index).*$)|((?m)^(\\-\\-\\-|\\+\\+\\+)\\s.+$)|((?m)^\\*.*$)|((?m)^\\+.*$)|((?m)^!.*$)|((?m)^\\<\\s.*$)|((?m)^\\>\\s.*$)|((?m)^\\d+(\\,\\d+)?[acd]\\d+(,\\d+)?$)|((?m)^\\-.*$)|((?m)^\\+.*$)|((?m)^@@.+@@$)|((?m)^d\\d+\\s\\d+$)|((?m)^a\\d+\\s\\d+$)|((?m)^(\\d+)(,\\d+)?(a)$)|((?m)^(\\d+)(,\\d+)?(c)$)|((?m)^(\\d+)(,\\d+)?(d)$)|((?m)^a(\\d+)(\\s\\d+)?$)|((?m)^c(\\d+)(\\s\\d+)?$)|((?m)^d(\\d+)(\\s\\d+)?$)/', + 0 => '//', + 1 => '//', + 2 => '//', + 3 => '//', + 4 => '//', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 1, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 2, + 10 => 0, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 3, + 16 => 3, + 17 => 3, + 18 => 2, + 19 => 2, + 20 => 2, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => 'code', + 15 => 'code', + 16 => 'code', + 17 => '', + 18 => 'code', + 19 => 'code', + 20 => '', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'special', + 1 => 'code', + 2 => 'var', + 3 => 'reserved', + 4 => 'quotes', + 5 => 'string', + 6 => 'inlinedoc', + 7 => 'quotes', + 8 => 'string', + 9 => 'code', + 10 => 'quotes', + 11 => 'string', + 12 => 'code', + 13 => 'code', + 14 => 'var', + 15 => 'string', + 16 => 'inlinedoc', + 17 => 'code', + 18 => 'string', + 19 => 'inlinedoc', + 20 => 'code', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_end = array ( + 0 => '/(?m)(?=^[ad]\\d+\\s\\d+)/', + 1 => '/(?m)^(\\.)$/', + 2 => '/(?m)^(\\.)$/', + 3 => '/(?m)^(\\.)$/', + 4 => '/(?m)^(\\.)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => 0, + 15 => 1, + 16 => 2, + 17 => -1, + 18 => 3, + 19 => 4, + 20 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => -1, + 15 => -1, + 16 => -1, + 17 => + array ( + ), + 18 => -1, + 19 => -1, + 20 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + ); + $this->_defClass = 'default'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/DTD.php b/library/Text_Highlighter/Text/Highlighter/DTD.php new file mode 100644 index 000000000..41b0faa78 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/DTD.php @@ -0,0 +1,426 @@ +<?php +/** + * Auto-generated class. DTD syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : dtd.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. DTD syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_DTD extends Text_Highlighter +{ + var $_language = 'dtd'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_DTD($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/(\\<!--)|(\\<\\!\\[)|((\\&|\\%)[\\w\\-\\.]+;)/', + 0 => '//', + 1 => '/(\\<!--)|(\\<)|(#PCDATA\\b)|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/', + 2 => '/(\\<!--)|(\\()|(\')|(")|((?<=\\<)!(ENTITY|ATTLIST|ELEMENT|NOTATION)\\b)|(\\s(#(IMPLIED|REQUIRED|FIXED))|CDATA|ENTITY|NOTATION|NMTOKENS?|PUBLIC|SYSTEM\\b)|(#PCDATA\\b)|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/', + 3 => '/(\\()|((\\&|\\%)[\\w\\-\\.]+;)|((?i)[a-z][a-z\\d\\-\\,:]+)/', + 4 => '/((\\&|\\%)[\\w\\-\\.]+;)/', + 5 => '/((\\&|\\%)[\\w\\-\\.]+;)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 1, + 4 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 1, + 5 => 2, + 6 => 0, + 7 => 1, + 8 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + ), + 4 => + array ( + 0 => 1, + ), + 5 => + array ( + 0 => 1, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'brackets', + 2 => '', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'comment', + 1 => 'brackets', + 2 => '', + 3 => '', + 4 => '', + ), + 2 => + array ( + 0 => 'comment', + 1 => 'brackets', + 2 => 'quotes', + 3 => 'quotes', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + ), + 3 => + array ( + 0 => 'brackets', + 1 => '', + 2 => '', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'code', + 2 => 'special', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'comment', + 1 => 'code', + 2 => 'reserved', + 3 => 'special', + 4 => 'identifier', + ), + 2 => + array ( + 0 => 'comment', + 1 => 'code', + 2 => 'string', + 3 => 'string', + 4 => 'var', + 5 => 'reserved', + 6 => 'reserved', + 7 => 'special', + 8 => 'identifier', + ), + 3 => + array ( + 0 => 'code', + 1 => 'special', + 2 => 'identifier', + ), + 4 => + array ( + 0 => 'special', + ), + 5 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/--\\>/', + 1 => '/\\]\\]\\>/', + 2 => '/\\>/', + 3 => '/\\)/', + 4 => '/\'/', + 5 => '/"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 0, + 1 => 2, + 2 => -1, + 3 => -1, + 4 => -1, + ), + 2 => + array ( + 0 => 0, + 1 => 3, + 2 => 4, + 3 => 5, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + ), + 3 => + array ( + 0 => 3, + 1 => -1, + 2 => -1, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + ), + 5 => + array ( + ), + 6 => + array ( + ), + 7 => + array ( + ), + 8 => + array ( + ), + ), + 3 => + array ( + 0 => -1, + 1 => + array ( + ), + 2 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/Generator.php b/library/Text_Highlighter/Text/Highlighter/Generator.php new file mode 100644 index 000000000..39c4edccb --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Generator.php @@ -0,0 +1,1291 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** +* Syntax highlighter class generator +* +* To simplify the process of creating new syntax highlighters +* for different languages, {@link Text_Highlighter_Generator} class is +* provided. It takes highlighting rules from XML file and generates +* a code of a class inherited from {@link Text_Highlighter}. +* +* PHP versions 4 and 5 +* +* LICENSE: This source file is subject to version 3.0 of the PHP license +* that is available through the world-wide-web at the following URI: +* http://www.php.net/license/3_0.txt. If you did not receive a copy of +* the PHP License and are unable to obtain it through the web, please +* send a note to license@php.net so we can mail you a copy immediately. +* +* @category Text +* @package Text_Highlighter +* @author Andrey Demenev <demenev@gmail.com> +* @copyright 2004-2006 Andrey Demenev +* @license http://www.php.net/license/3_0.txt PHP License +* @version CVS: $Id$ +* @link http://pear.php.net/package/Text_Highlighter +*/ + +/** +* @ignore +*/ +require_once 'PEAR.php'; +require_once 'XML/Parser.php'; + +// {{{ error codes + +define ('TEXT_HIGHLIGHTER_EMPTY_RE', 1); +define ('TEXT_HIGHLIGHTER_INVALID_RE', 2); +define ('TEXT_HIGHLIGHTER_EMPTY_OR_MISSING', 3); +define ('TEXT_HIGHLIGHTER_EMPTY', 4); +define ('TEXT_HIGHLIGHTER_REGION_REGION', 5); +define ('TEXT_HIGHLIGHTER_REGION_BLOCK', 6); +define ('TEXT_HIGHLIGHTER_BLOCK_REGION', 7); +define ('TEXT_HIGHLIGHTER_KEYWORD_BLOCK', 8); +define ('TEXT_HIGHLIGHTER_KEYWORD_INHERITS', 9); +define ('TEXT_HIGHLIGHTER_PARSE', 10); +define ('TEXT_HIGHLIGHTER_FILE_WRITE', 11); +define ('TEXT_HIGHLIGHTER_FILE_READ', 12); +// }}} + +/** +* Syntax highliter class generator class +* +* This class is used to generate PHP classes +* from XML files with highlighting rules +* +* Usage example +* <code> +*require_once 'Text/Highlighter/Generator.php'; +*$generator = new Text_Highlighter_Generator('php.xml'); +*$generator->generate(); +*$generator->saveCode('PHP.php'); +* </code> +* +* A command line script <b>generate</b> is provided for +* class generation (installs in scripts/Text/Highlighter). +* +* @author Andrey Demenev <demenev@gmail.com> +* @copyright 2004-2006 Andrey Demenev +* @license http://www.php.net/license/3_0.txt PHP License +* @version Release: @package_version@ +* @link http://pear.php.net/package/Text_Highlighter +*/ + +class Text_Highlighter_Generator extends XML_Parser +{ + // {{{ properties + /** + * Whether to do case folding. + * We have to declare it here, because XML_Parser + * sets case folding in constructor + * + * @var boolean + */ + var $folding = false; + + /** + * Holds name of file with highlighting rules + * + * @var string + * @access private + */ + var $_syntaxFile; + + /** + * Current element being processed + * + * @var array + * @access private + */ + var $_element; + + /** + * List of regions + * + * @var array + * @access private + */ + var $_regions = array(); + + /** + * List of blocks + * + * @var array + * @access private + */ + var $_blocks = array(); + + /** + * List of keyword groups + * + * @var array + * @access private + */ + var $_keywords = array(); + + /** + * List of authors + * + * @var array + * @access private + */ + var $_authors = array(); + + /** + * Name of language + * + * @var string + * @access public + */ + var $language = ''; + + /** + * Generated code + * + * @var string + * @access private + */ + var $_code = ''; + + /** + * Default class + * + * @var string + * @access private + */ + var $_defClass = 'default'; + + /** + * Comment + * + * @var string + * @access private + */ + var $_comment = ''; + + /** + * Flag for comment processing + * + * @var boolean + * @access private + */ + var $_inComment = false; + + /** + * Sorting order of current block/region + * + * @var integer + * @access private + */ + var $_blockOrder = 0; + + /** + * Generation errors + * + * @var array + * @access private + */ + var $_errors; + + // }}} + // {{{ constructor + + /** + * PHP4 compatable constructor + * + * @param string $syntaxFile Name of XML file + * with syntax highlighting rules + * + * @access public + */ + + function Text_Highlighter_Generator($syntaxFile = '') + { + return $this->__construct($syntaxFile); + } + + /** + * Constructor + * + * @param string $syntaxFile Name of XML file + * with syntax highlighting rules + * + * @access public + */ + + function __construct($syntaxFile = '') + { + XML_Parser::XML_Parser(null, 'func'); + $this->_errors = array(); + $this->_declareErrorMessages(); + if ($syntaxFile) { + $this->setInputFile($syntaxFile); + } + } + + // }}} + // {{{ _formatError + + /** + * Format error message + * + * @param int $code error code + * @param string $params parameters + * @param string $fileName file name + * @param int $lineNo line number + * @return array + * @access public + */ + function _formatError($code, $params, $fileName, $lineNo) + { + $template = $this->_templates[$code]; + $ret = call_user_func_array('sprintf', array_merge(array($template), $params)); + if ($fileName) { + $ret = '[' . $fileName . '] ' . $ret; + } + if ($lineNo) { + $ret .= ' (line ' . $lineNo . ')'; + } + return $ret; + } + + // }}} + // {{{ declareErrorMessages + + /** + * Set up error message templates + * + * @access private + */ + function _declareErrorMessages() + { + $this->_templates = array ( + TEXT_HIGHLIGHTER_EMPTY_RE => 'Empty regular expression', + TEXT_HIGHLIGHTER_INVALID_RE => 'Invalid regular expression : %s', + TEXT_HIGHLIGHTER_EMPTY_OR_MISSING => 'Empty or missing %s', + TEXT_HIGHLIGHTER_EMPTY => 'Empty %s', + TEXT_HIGHLIGHTER_REGION_REGION => 'Region %s refers undefined region %s', + TEXT_HIGHLIGHTER_REGION_BLOCK => 'Region %s refers undefined block %s', + TEXT_HIGHLIGHTER_BLOCK_REGION => 'Block %s refers undefined region %s', + TEXT_HIGHLIGHTER_KEYWORD_BLOCK => 'Keyword group %s refers undefined block %s', + TEXT_HIGHLIGHTER_KEYWORD_INHERITS => 'Keyword group %s inherits undefined block %s', + TEXT_HIGHLIGHTER_PARSE => '%s', + TEXT_HIGHLIGHTER_FILE_WRITE => 'Error writing file %s', + TEXT_HIGHLIGHTER_FILE_READ => '%s' + ); + } + + // }}} + // {{{ setInputFile + + /** + * Sets the input xml file to be parsed + * + * @param string Filename (full path) + * @return boolean + * @access public + */ + function setInputFile($file) + { + $this->_syntaxFile = $file; + $ret = parent::setInputFile($file); + if (PEAR::isError($ret)) { + $this->_error(TEXT_HIGHLIGHTER_FILE_READ, $ret->message); + return false; + } + return true; + } + + // }}} + // {{{ generate + + /** + * Generates class code + * + * @access public + */ + + function generate() + { + $this->_regions = array(); + $this->_blocks = array(); + $this->_keywords = array(); + $this->language = ''; + $this->_code = ''; + $this->_defClass = 'default'; + $this->_comment = ''; + $this->_inComment = false; + $this->_authors = array(); + $this->_blockOrder = 0; + $this->_errors = array(); + + $ret = $this->parse(); + if (PEAR::isError($ret)) { + $this->_error(TEXT_HIGHLIGHTER_PARSE, $ret->message); + return false; + } + return true; + } + + // }}} + // {{{ getCode + + /** + * Returns generated code as a string. + * + * @return string Generated code + * @access public + */ + + function getCode() + { + return $this->_code; + } + + // }}} + // {{{ saveCode + + /** + * Saves generated class to file. Note that {@link Text_Highlighter::factory()} + * assumes that filename is uppercase (SQL.php, DTD.php, etc), and file + * is located in Text/Highlighter + * + * @param string $filename Name of file to write the code to + * @return boolean true on success, false on failure + * @access public + */ + + function saveCode($filename) + { + $f = @fopen($filename, 'wb'); + if (!$f) { + $this->_error(TEXT_HIGHLIGHTER_FILE_WRITE, array('outfile'=>$filename)); + return false; + } + fwrite ($f, $this->_code); + fclose($f); + return true; + } + + // }}} + // {{{ hasErrors + + /** + * Reports if there were errors + * + * @return boolean + * @access public + */ + + function hasErrors() + { + return count($this->_errors) > 0; + } + + // }}} + // {{{ getErrors + + /** + * Returns errors + * + * @return array + * @access public + */ + + function getErrors() + { + return $this->_errors; + } + + // }}} + // {{{ _sortBlocks + + /** + * Sorts blocks + * + * @access private + */ + + function _sortBlocks($b1, $b2) { + return $b1['order'] - $b2['order']; + } + + // }}} + // {{{ _sortLookFor + /** + * Sort 'look for' list + * @return int + * @param string $b1 + * @param string $b2 + */ + function _sortLookFor($b1, $b2) { + $o1 = isset($this->_blocks[$b1]) ? $this->_blocks[$b1]['order'] : $this->_regions[$b1]['order']; + $o2 = isset($this->_blocks[$b2]) ? $this->_blocks[$b2]['order'] : $this->_regions[$b2]['order']; + return $o1 - $o2; + } + + // }}} + // {{{ _makeRE + + /** + * Adds delimiters and modifiers to regular expression if necessary + * + * @param string $text Original RE + * @return string Final RE + * @access private + */ + function _makeRE($text, $case = false) + { + if (!strlen($text)) { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_RE); + } + if (!strlen($text) || $text{0} != '/') { + $text = '/' . $text . '/'; + } + if (!$case) { + $text .= 'i'; + } + $php_errormsg = ''; + @preg_match($text, ''); + if ($php_errormsg) { + $this->_error(TEXT_HIGHLIGHTER_INVALID_RE, $php_errormsg); + } + preg_match ('#^/(.+)/(.*)$#', $text, $m); + if (@$m[2]) { + $text = '(?' . $m[2] . ')' . $m[1]; + } else { + $text = $m[1]; + } + return $text; + } + + // }}} + // {{{ _exportArray + + /** + * Exports array as PHP code + * + * @param array $array + * @return string Code + * @access private + */ + function _exportArray($array) + { + $array = var_export($array, true); + return trim(preg_replace('~^(\s*)~m',' \1\1',$array)); + } + + // }}} + // {{{ _countSubpatterns + /** + * Find number of capturing suppaterns in regular expression + * @return int + * @param string $re Regular expression (without delimiters) + */ + function _countSubpatterns($re) + { + preg_match_all('/' . $re . '/', '', $m); + return count($m)-1; + } + + // }}} + + /**#@+ + * @access private + * @param resource $xp XML parser resource + * @param string $elem XML element name + * @param array $attribs XML element attributes + */ + + // {{{ xmltag_Default + + /** + * start handler for <default> element + */ + function xmltag_Default($xp, $elem, $attribs) + { + $this->_aliasAttributes($attribs); + if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup'); + } + $this->_defClass = @$attribs['innerGroup']; + } + + // }}} + // {{{ xmltag_Region + + /** + * start handler for <region> element + */ + function xmltag_Region($xp, $elem, $attribs) + { + $this->_aliasAttributes($attribs); + if (!isset($attribs['name']) || $attribs['name'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'region name'); + } + if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup'); + } + $this->_element = array('name' => $attribs['name']); + $this->_element['line'] = xml_get_current_line_number($this->parser); + if (isset($attribs['case'])) { + $this->_element['case'] = $attribs['case'] == 'yes'; + } else { + $this->_element['case'] = $this->_case; + } + $this->_element['innerGroup'] = $attribs['innerGroup']; + $this->_element['delimGroup'] = isset($attribs['delimGroup']) ? + $attribs['delimGroup'] : + $attribs['innerGroup']; + $this->_element['start'] = $this->_makeRE(@$attribs['start'], $this->_element['case']); + $this->_element['end'] = $this->_makeRE(@$attribs['end'], $this->_element['case']); + $this->_element['contained'] = @$attribs['contained'] == 'yes'; + $this->_element['never-contained'] = @$attribs['never-contained'] == 'yes'; + $this->_element['remember'] = @$attribs['remember'] == 'yes'; + if (isset($attribs['startBOL']) && $attribs['startBOL'] == 'yes') { + $this->_element['startBOL'] = true; + } + if (isset($attribs['endBOL']) && $attribs['endBOL'] == 'yes') { + $this->_element['endBOL'] = true; + } + if (isset($attribs['neverAfter'])) { + $this->_element['neverafter'] = $this->_makeRE($attribs['neverAfter']); + } + } + + // }}} + // {{{ xmltag_Block + + /** + * start handler for <block> element + */ + function xmltag_Block($xp, $elem, $attribs) + { + $this->_aliasAttributes($attribs); + if (!isset($attribs['name']) || $attribs['name'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'block name'); + } + if (isset($attribs['innerGroup']) && $attribs['innerGroup'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY, 'innerGroup'); + } + $this->_element = array('name' => $attribs['name']); + $this->_element['line'] = xml_get_current_line_number($this->parser); + if (isset($attribs['case'])) { + $this->_element['case'] = $attribs['case'] == 'yes'; + } else { + $this->_element['case'] = $this->_case; + } + if (isset($attribs['innerGroup'])) { + $this->_element['innerGroup'] = @$attribs['innerGroup']; + } + $this->_element['match'] = $this->_makeRE($attribs['match'], $this->_element['case']); + $this->_element['contained'] = @$attribs['contained'] == 'yes'; + $this->_element['multiline'] = @$attribs['multiline'] == 'yes'; + if (isset($attribs['BOL']) && $attribs['BOL'] == 'yes') { + $this->_element['BOL'] = true; + } + if (isset($attribs['neverAfter'])) { + $this->_element['neverafter'] = $this->_makeRE($attribs['neverAfter']); + } + } + + // }}} + // {{{ cdataHandler + + /** + * Character data handler. Used for comment + */ + function cdataHandler($xp, $cdata) + { + if ($this->_inComment) { + $this->_comment .= $cdata; + } + } + + // }}} + // {{{ xmltag_Comment + + /** + * start handler for <comment> element + */ + function xmltag_Comment($xp, $elem, $attribs) + { + $this->_comment = ''; + $this->_inComment = true; + } + + // }}} + // {{{ xmltag_PartGroup + + /** + * start handler for <partgroup> element + */ + function xmltag_PartGroup($xp, $elem, $attribs) + { + $this->_aliasAttributes($attribs); + if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup'); + } + $this->_element['partClass'][$attribs['index']] = @$attribs['innerGroup']; + } + + // }}} + // {{{ xmltag_PartClass + + /** + * start handler for <partclass> element + */ + function xmltag_PartClass($xp, $elem, $attribs) + { + $this->xmltag_PartGroup($xp, $elem, $attribs); + } + + // }}} + // {{{ xmltag_Keywords + + /** + * start handler for <keywords> element + */ + function xmltag_Keywords($xp, $elem, $attribs) + { + $this->_aliasAttributes($attribs); + if (!isset($attribs['name']) || $attribs['name'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'keyword group name'); + } + if (!isset($attribs['innerGroup']) || $attribs['innerGroup'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'innerGroup'); + } + if (!isset($attribs['inherits']) || $attribs['inherits'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'inherits'); + } + $this->_element = array('name'=>@$attribs['name']); + $this->_element['line'] = xml_get_current_line_number($this->parser); + $this->_element['innerGroup'] = @$attribs['innerGroup']; + if (isset($attribs['case'])) { + $this->_element['case'] = $attribs['case'] == 'yes'; + } else { + $this->_element['case'] = $this->_case; + } + $this->_element['inherits'] = @$attribs['inherits']; + if (isset($attribs['otherwise'])) { + $this->_element['otherwise'] = $attribs['otherwise']; + } + if (isset($attribs['ifdef'])) { + $this->_element['ifdef'] = $attribs['ifdef']; + } + if (isset($attribs['ifndef'])) { + $this->_element['ifndef'] = $attribs['ifndef']; + } + } + + // }}} + // {{{ xmltag_Keyword + + /** + * start handler for <keyword> element + */ + function xmltag_Keyword($xp, $elem, $attribs) + { + if (!isset($attribs['match']) || $attribs['match'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'match'); + } + $keyword = @$attribs['match']; + if (!$this->_element['case']) { + $keyword = strtolower($keyword); + } + $this->_element['match'][$keyword] = true; + } + + // }}} + // {{{ xmltag_Contains + + /** + * start handler for <contains> element + */ + function xmltag_Contains($xp, $elem, $attribs) + { + $this->_element['contains-all'] = @$attribs['all'] == 'yes'; + if (isset($attribs['region'])) { + $this->_element['contains']['region'][$attribs['region']] = + xml_get_current_line_number($this->parser); + } + if (isset($attribs['block'])) { + $this->_element['contains']['block'][$attribs['block']] = + xml_get_current_line_number($this->parser); + } + } + + // }}} + // {{{ xmltag_But + + /** + * start handler for <but> element + */ + function xmltag_But($xp, $elem, $attribs) + { + if (isset($attribs['region'])) { + $this->_element['not-contains']['region'][$attribs['region']] = true; + } + if (isset($attribs['block'])) { + $this->_element['not-contains']['block'][$attribs['block']] = true; + } + } + + // }}} + // {{{ xmltag_Onlyin + + /** + * start handler for <onlyin> element + */ + function xmltag_Onlyin($xp, $elem, $attribs) + { + if (!isset($attribs['region']) || $attribs['region'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'region'); + } + $this->_element['onlyin'][$attribs['region']] = xml_get_current_line_number($this->parser); + } + + // }}} + // {{{ xmltag_Author + + /** + * start handler for <author> element + */ + function xmltag_Author($xp, $elem, $attribs) + { + if (!isset($attribs['name']) || $attribs['name'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'author name'); + } + $this->_authors[] = array( + 'name' => @$attribs['name'], + 'email' => (string)@$attribs['email'] + ); + } + + // }}} + // {{{ xmltag_Highlight + + /** + * start handler for <highlight> element + */ + function xmltag_Highlight($xp, $elem, $attribs) + { + if (!isset($attribs['lang']) || $attribs['lang'] === '') { + $this->_error(TEXT_HIGHLIGHTER_EMPTY_OR_MISSING, 'language name'); + } + $this->_code = ''; + $this->language = strtoupper(@$attribs['lang']); + $this->_case = @$attribs['case'] == 'yes'; + } + + // }}} + + /**#@-*/ + + // {{{ _error + + /** + * Add an error message + * + * @param integer $code Error code + * @param mixed $message Error message or array with error message parameters + * @param integer $lineNo Source code line number + * @access private + */ + function _error($code, $params = array(), $lineNo = 0) + { + if (!$lineNo && !empty($this->parser)) { + $lineNo = xml_get_current_line_number($this->parser); + } + $this->_errors[] = $this->_formatError($code, $params, $this->_syntaxFile, $lineNo); + } + + // }}} + // {{{ _aliasAttributes + + /** + * BC trick + * + * @param array $attrs attributes + */ + function _aliasAttributes(&$attrs) + { + if (isset($attrs['innerClass']) && !isset($attrs['innerGroup'])) { + $attrs['innerGroup'] = $attrs['innerClass']; + } + if (isset($attrs['delimClass']) && !isset($attrs['delimGroup'])) { + $attrs['delimGroup'] = $attrs['delimClass']; + } + if (isset($attrs['partClass']) && !isset($attrs['partGroup'])) { + $attrs['partGroup'] = $attrs['partClass']; + } + } + + // }}} + + /**#@+ + * @access private + * @param resource $xp XML parser resource + * @param string $elem XML element name + */ + + // {{{ xmltag_Comment_ + + /** + * end handler for <comment> element + */ + function xmltag_Comment_($xp, $elem) + { + $this->_inComment = false; + } + + // }}} + // {{{ xmltag_Region_ + + /** + * end handler for <region> element + */ + function xmltag_Region_($xp, $elem) + { + $this->_element['type'] = 'region'; + $this->_element['order'] = $this->_blockOrder ++; + $this->_regions[$this->_element['name']] = $this->_element; + } + + // }}} + // {{{ xmltag_Keywords_ + + /** + * end handler for <keywords> element + */ + function xmltag_Keywords_($xp, $elem) + { + $this->_keywords[$this->_element['name']] = $this->_element; + } + + // }}} + // {{{ xmltag_Block_ + + /** + * end handler for <block> element + */ + function xmltag_Block_($xp, $elem) + { + $this->_element['type'] = 'block'; + $this->_element['order'] = $this->_blockOrder ++; + $this->_blocks[$this->_element['name']] = $this->_element; + } + + // }}} + // {{{ xmltag_Highlight_ + + /** + * end handler for <highlight> element + */ + function xmltag_Highlight_($xp, $elem) + { + $conditions = array(); + $toplevel = array(); + foreach ($this->_blocks as $i => $current) { + if (!$current['contained'] && !isset($current['onlyin'])) { + $toplevel[] = $i; + } + foreach ((array)@$current['onlyin'] as $region => $lineNo) { + if (!isset($this->_regions[$region])) { + $this->_error(TEXT_HIGHLIGHTER_BLOCK_REGION, + array( + 'block' => $current['name'], + 'region' => $region + )); + } + } + } + foreach ($this->_regions as $i=>$current) { + if (!$current['contained'] && !isset($current['onlyin'])) { + $toplevel[] = $i; + } + foreach ((array)@$current['contains']['region'] as $region => $lineNo) { + if (!isset($this->_regions[$region])) { + $this->_error(TEXT_HIGHLIGHTER_REGION_REGION, + array( + 'region1' => $current['name'], + 'region2' => $region + )); + } + } + foreach ((array)@$current['contains']['block'] as $region => $lineNo) { + if (!isset($this->_blocks[$region])) { + $this->_error(TEXT_HIGHLIGHTER_REGION_BLOCK, + array( + 'block' => $current['name'], + 'region' => $region + )); + } + } + foreach ((array)@$current['onlyin'] as $region => $lineNo) { + if (!isset($this->_regions[$region])) { + $this->_error(TEXT_HIGHLIGHTER_REGION_REGION, + array( + 'region1' => $current['name'], + 'region2' => $region + )); + } + } + foreach ($this->_regions as $j => $region) { + if (isset($region['onlyin'])) { + $suits = isset($region['onlyin'][$current['name']]); + } elseif (isset($current['not-contains']['region'][$region['name']])) { + $suits = false; + } elseif (isset($current['contains']['region'][$region['name']])) { + $suits = true; + } else { + $suits = @$current['contains-all'] && @!$region['never-contained']; + } + if ($suits) { + $this->_regions[$i]['lookfor'][] = $j; + } + } + foreach ($this->_blocks as $j=>$region) { + if (isset($region['onlyin'])) { + $suits = isset($region['onlyin'][$current['name']]); + } elseif (isset($current['not-contains']['block'][$region['name']])) { + $suits = false; + } elseif (isset($current['contains']['block'][$region['name']])) { + $suits = true; + } else { + $suits = @$current['contains-all'] && @!$region['never-contained']; + } + if ($suits) { + $this->_regions[$i]['lookfor'][] = $j; + } + } + } + foreach ($this->_blocks as $i=>$current) { + unset ($this->_blocks[$i]['never-contained']); + unset ($this->_blocks[$i]['contained']); + unset ($this->_blocks[$i]['contains-all']); + unset ($this->_blocks[$i]['contains']); + unset ($this->_blocks[$i]['onlyin']); + unset ($this->_blocks[$i]['line']); + } + + foreach ($this->_regions as $i=>$current) { + unset ($this->_regions[$i]['never-contained']); + unset ($this->_regions[$i]['contained']); + unset ($this->_regions[$i]['contains-all']); + unset ($this->_regions[$i]['contains']); + unset ($this->_regions[$i]['onlyin']); + unset ($this->_regions[$i]['line']); + } + + foreach ($this->_keywords as $name => $keyword) { + if (isset($keyword['ifdef'])) { + $conditions[$keyword['ifdef']][] = array($name, true); + } + if (isset($keyword['ifndef'])) { + $conditions[$keyword['ifndef']][] = array($name, false); + } + unset($this->_keywords[$name]['line']); + if (!isset($this->_blocks[$keyword['inherits']])) { + $this->_error(TEXT_HIGHLIGHTER_KEYWORD_INHERITS, + array( + 'keyword' => $keyword['name'], + 'block' => $keyword['inherits'] + )); + } + if (isset($keyword['otherwise']) && !isset($this->_blocks[$keyword['otherwise']]) ) { + $this->_error(TEXT_HIGHLIGHTER_KEYWORD_BLOCK, + array( + 'keyword' => $keyword['name'], + 'block' => $keyword['inherits'] + )); + } + } + + $syntax=array( + 'keywords' => $this->_keywords, + 'blocks' => array_merge($this->_blocks, $this->_regions), + 'toplevel' => $toplevel, + ); + uasort($syntax['blocks'], array(&$this, '_sortBlocks')); + foreach ($syntax['blocks'] as $name => $block) { + if ($block['type'] == 'block') { + continue; + } + if (is_array(@$syntax['blocks'][$name]['lookfor'])) { + usort($syntax['blocks'][$name]['lookfor'], array(&$this, '_sortLookFor')); + } + } + usort($syntax['toplevel'], array(&$this, '_sortLookFor')); + $syntax['case'] = $this->_case; + $this->_code = <<<CODE +<?php +/** + * Auto-generated class. {$this->language} syntax highlighting +CODE; + + if ($this->_comment) { + $comment = preg_replace('~^~m',' * ',$this->_comment); + $this->_code .= "\n * \n" . $comment; + } + + $this->_code .= <<<CODE + + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: $this->_syntaxFile + +CODE; + + foreach ($this->_authors as $author) { + $this->_code .= ' * @author ' . $author['name']; + if ($author['email']) { + $this->_code .= ' <' . $author['email'] . '>'; + } + $this->_code .= "\n"; + } + + $this->_code .= <<<CODE + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. {$this->language} syntax highlighting + * + +CODE; + foreach ($this->_authors as $author) { + $this->_code .= ' * @author ' . $author['name']; + if ($author['email']) { + $this->_code .= ' <' . $author['email']. '>'; + } + $this->_code .= "\n"; + } + + + $this->_code .= <<<CODE + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_{$this->language} extends Text_Highlighter +{ + +CODE; + $this->_code .= 'var $_language = \'' . strtolower($this->language) . "';\n\n"; + $array = var_export($syntax, true); + $array = trim(preg_replace('~^(\s*)~m',' \1\1',$array)); + // \$this->_syntax = $array; + $this->_code .= <<<CODE + /** + * PHP4 Compatible Constructor + * + * @param array \$options + * @access public + */ + function Text_Highlighter_{$this->language}(\$options=array()) + { + \$this->__construct(\$options); + } + + + /** + * Constructor + * + * @param array \$options + * @access public + */ + function __construct(\$options=array()) + { + +CODE; + $this->_code .= <<<CODE + + \$this->_options = \$options; +CODE; + $states = array(); + $i = 0; + foreach ($syntax['blocks'] as $name => $block) { + if ($block['type'] == 'region') { + $states[$name] = $i++; + } + } + $regs = array(); + $counts = array(); + $delim = array(); + $inner = array(); + $end = array(); + $stat = array(); + $keywords = array(); + $parts = array(); + $kwmap = array(); + $subst = array(); + $re = array(); + $ce = array(); + $rd = array(); + $in = array(); + $st = array(); + $kw = array(); + $sb = array(); + foreach ($syntax['toplevel'] as $name) { + $block = $syntax['blocks'][$name]; + if ($block['type'] == 'block') { + $kwm = array(); + $re[] = '(' . $block['match'] . ')'; + $ce[] = $this->_countSubpatterns($block['match']); + $rd[] = ''; + $sb[] = false;; + $st[] = -1; + foreach ($syntax['keywords'] as $kwname => $kwgroup) { + if ($kwgroup['inherits'] != $name) { + continue; + } + $gre = implode('|', array_keys($kwgroup['match'])); + if (!$kwgroup['case']) { + $gre = '(?i)' . $gre; + } + $kwm[$kwname][] = $gre; + $kwmap[$kwname] = $kwgroup['innerGroup']; + } + foreach ($kwm as $g => $ma) { + $kwm[$g] = '/^(' . implode(')|(', $ma) . ')$/'; + } + $kw[] = $kwm; + } else { + $kw[] = -1; + $re[] = '(' . $block['start'] . ')'; + $ce[] = $this->_countSubpatterns($block['start']); + $rd[] = $block['delimGroup']; + $st[] = $states[$name]; + $sb[] = $block['remember']; + } + $in[] = $block['innerGroup']; + } + $re = implode('|', $re); + $regs[-1] = '/' . $re . '/'; + $counts[-1] = $ce; + $delim[-1] = $rd; + $inner[-1] = $in; + $stat[-1] = $st; + $keywords[-1] = $kw; + $subst[-1] = $sb; + + foreach ($syntax['blocks'] as $ablock) { + if ($ablock['type'] != 'region') { + continue; + } + $end[] = '/' . $ablock['end'] . '/'; + $re = array(); + $ce = array(); + $rd = array(); + $in = array(); + $st = array(); + $kw = array(); + $pc = array(); + $sb = array(); + foreach ((array)@$ablock['lookfor'] as $name) { + $block = $syntax['blocks'][$name]; + if (isset($block['partClass'])) { + $pc[] = $block['partClass']; + } else { + $pc[] = null; + } + if ($block['type'] == 'block') { + $kwm = array();; + $re[] = '(' . $block['match'] . ')'; + $ce[] = $this->_countSubpatterns($block['match']); + $rd[] = ''; + $sb[] = false; + $st[] = -1; + foreach ($syntax['keywords'] as $kwname => $kwgroup) { + if ($kwgroup['inherits'] != $name) { + continue; + } + $gre = implode('|', array_keys($kwgroup['match'])); + if (!$kwgroup['case']) { + $gre = '(?i)' . $gre; + } + $kwm[$kwname][] = $gre; + $kwmap[$kwname] = $kwgroup['innerGroup']; + } + foreach ($kwm as $g => $ma) { + $kwm[$g] = '/^(' . implode(')|(', $ma) . ')$/'; + } + $kw[] = $kwm; + } else { + $sb[] = $block['remember']; + $kw[] = -1; + $re[] = '(' . $block['start'] . ')'; + $ce[] = $this->_countSubpatterns($block['start']); + $rd[] = $block['delimGroup']; + $st[] = $states[$name]; + } + $in[] = $block['innerGroup']; + } + $re = implode('|', $re); + $regs[] = '/' . $re . '/'; + $counts[] = $ce; + $delim[] = $rd; + $inner[] = $in; + $stat[] = $st; + $keywords[] = $kw; + $parts[] = $pc; + $subst[] = $sb; + } + + + $this->_code .= "\n \$this->_regs = " . $this->_exportArray($regs); + $this->_code .= ";\n \$this->_counts = " .$this->_exportArray($counts); + $this->_code .= ";\n \$this->_delim = " .$this->_exportArray($delim); + $this->_code .= ";\n \$this->_inner = " .$this->_exportArray($inner); + $this->_code .= ";\n \$this->_end = " .$this->_exportArray($end); + $this->_code .= ";\n \$this->_states = " .$this->_exportArray($stat); + $this->_code .= ";\n \$this->_keywords = " .$this->_exportArray($keywords); + $this->_code .= ";\n \$this->_parts = " .$this->_exportArray($parts); + $this->_code .= ";\n \$this->_subst = " .$this->_exportArray($subst); + $this->_code .= ";\n \$this->_conditions = " .$this->_exportArray($conditions); + $this->_code .= ";\n \$this->_kwmap = " .$this->_exportArray($kwmap); + $this->_code .= ";\n \$this->_defClass = '" .$this->_defClass . '\''; + $this->_code .= <<<CODE +; + \$this->_checkDefines(); + } + +} +CODE; +} + +// }}} +} + + +/* +* Local variables: +* tab-width: 4 +* c-basic-offset: 4 +* c-hanging-comment-ender-p: nil +* End: +*/ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/HTML.php b/library/Text_Highlighter/Text/Highlighter/HTML.php new file mode 100644 index 000000000..14d0a783f --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/HTML.php @@ -0,0 +1,234 @@ +<?php +/** + * Auto-generated class. HTML syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : html.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. HTML syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_HTML extends Text_Highlighter +{ + var $_language = 'html'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_HTML($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\<!--)|((?i)\\<[\\?\\/]?)|((?i)(&)[\\w\\-\\.]+;)/', + 0 => '//', + 1 => '/((?i)(?<=[\\<\\/?])[\\w\\-\\:]+)|((?i)[\\w\\-\\:]+)|((?i)")/', + 2 => '/((?i)(&)[\\w\\-\\.]+;)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 2 => + array ( + 0 => 1, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'brackets', + 2 => '', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => '', + 1 => '', + 2 => 'quotes', + ), + 2 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'code', + 2 => 'special', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'reserved', + 1 => 'var', + 2 => 'string', + ), + 2 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)--\\>/', + 1 => '/(?i)[\\/\\?]?\\>/', + 2 => '/(?i)"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => 2, + ), + 2 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => -1, + ), + 2 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 2 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 2 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/JAVA.php b/library/Text_Highlighter/Text/Highlighter/JAVA.php new file mode 100644 index 000000000..46c0b8851 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/JAVA.php @@ -0,0 +1,802 @@ +<?php +/** + * Auto-generated class. JAVA syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : java.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. JAVA syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_JAVA extends Text_Highlighter +{ + var $_language = 'java'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_JAVA($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0[xX][\\da-f]+)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 3 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/', + 4 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])/', + 5 => '/((?i)\\\\.)/', + 6 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 0, + 11 => 2, + 12 => 5, + ), + 0 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 0, + 11 => 2, + 12 => 5, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 0, + 11 => 2, + 12 => 5, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 0, + 11 => 2, + 12 => 5, + ), + 3 => + array ( + 0 => 0, + 1 => 3, + 2 => 1, + 3 => 0, + 4 => 0, + ), + 4 => + array ( + 0 => 0, + ), + 5 => + array ( + 0 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 3, + 2 => 1, + 3 => 0, + 4 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + ), + 0 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + ), + 1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + ), + 2 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + ), + 3 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => '', + ), + 6 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + ), + 0 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + ), + 1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + ), + 2 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + ), + 3 => + array ( + 0 => 'inlinedoc', + 1 => 'url', + 2 => 'url', + 3 => 'inlinedoc', + 4 => 'inlinedoc', + ), + 4 => + array ( + 0 => 'special', + ), + 5 => + array ( + 0 => 'special', + ), + 6 => + array ( + 0 => 'inlinedoc', + 1 => 'url', + 2 => 'url', + 3 => 'inlinedoc', + 4 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)\\}/', + 1 => '/(?i)\\)/', + 2 => '/(?i)\\]/', + 3 => '/(?i)\\*\\//', + 4 => '/(?i)"/', + 5 => '/(?i)\'/', + 6 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + ), + 0 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/', + 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/', + 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + ), + 0 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/', + 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/', + 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/', + 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/', + 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'types' => '/^(boolean|byte|char|const|double|final|float|int|long|short|static|void)$/', + 'reserved' => '/^(import|package|abstract|break|case|catch|class|continue|default|do|else|extends|false|finally|for|goto|if|implements|instanceof|interface|native|new|null|private|protected|public|return|super|strictfp|switch|synchronized|this|throws|throw|transient|true|try|volatile|while)$/', + 'builtin' => '/^(AbstractAction|AbstractBorder|AbstractButton|AbstractCellEditor|AbstractCollection|AbstractColorChooserPanel|AbstractDocument|AbstractInterruptibleChannel|AbstractLayoutCache|AbstractList|AbstractListModel|AbstractMap|AbstractMethodError|AbstractPreferences|AbstractSelectableChannel|AbstractSelectionKey|AbstractSelector|AbstractSequentialList|AbstractSet|AbstractSpinnerModel|AbstractTableModel|AbstractUndoableEdit|AbstractWriter|AccessControlContext|AccessControlException|AccessController|AccessException|Accessible|AccessibleAction|AccessibleBundle|AccessibleComponent|AccessibleContext|AccessibleEditableText|AccessibleExtendedComponent|AccessibleExtendedTable|AccessibleHyperlink|AccessibleHypertext|AccessibleIcon|AccessibleKeyBinding|AccessibleObject|AccessibleRelation|AccessibleRelationSet|AccessibleResourceBundle|AccessibleRole|AccessibleSelection|AccessibleState|AccessibleStateSet|AccessibleTable|AccessibleTableModelChange|AccessibleText|AccessibleValue|AccountExpiredException|Acl|AclEntry|AclNotFoundException|Action|ActionEvent|ActionListener|ActionMap|ActionMapUIResource|Activatable|ActivateFailedException|ActivationDesc|ActivationException|ActivationGroup|ActivationGroup_Stub|ActivationGroupDesc|ActivationGroupID|ActivationID|ActivationInstantiator|ActivationMonitor|ActivationSystem|Activator|ActiveEvent|AdapterActivator|AdapterActivatorOperations|AdapterAlreadyExists|AdapterAlreadyExistsHelper|AdapterInactive|AdapterInactiveHelper|AdapterNonExistent|AdapterNonExistentHelper|AddressHelper|Adjustable|AdjustmentEvent|AdjustmentListener|Adler32|AffineTransform|AffineTransformOp|AlgorithmParameterGenerator|AlgorithmParameterGeneratorSpi|AlgorithmParameters|AlgorithmParameterSpec|AlgorithmParametersSpi|AllPermission|AlphaComposite|AlreadyBound|AlreadyBoundException|AlreadyBoundHelper|AlreadyBoundHolder|AlreadyConnectedException|AncestorEvent|AncestorListener|Annotation|Any|AnyHolder|AnySeqHelper|AnySeqHolder|AppConfigurationEntry|Applet|AppletContext|AppletInitializer|AppletStub|ApplicationException|Arc2D|Area|AreaAveragingScaleFilter|ARG_IN|ARG_INOUT|ARG_OUT|ArithmeticException|Array|ArrayIndexOutOfBoundsException|ArrayList|Arrays|ArrayStoreException|AssertionError|AsyncBoxView|AsynchronousCloseException|Attr|Attribute|AttributedCharacterIterator|AttributedString|AttributeException|AttributeInUseException|AttributeList|AttributeListImpl|AttributeModificationException|Attributes|AttributeSet|AttributeSetUtilities|AttributesImpl|AudioClip|AudioFileFormat|AudioFileReader|AudioFileWriter|AudioFormat|AudioInputStream|AudioPermission|AudioSystem|AuthenticationException|AuthenticationNotSupportedException|Authenticator|AuthPermission|Autoscroll|AWTError|AWTEvent|AWTEventListener|AWTEventListenerProxy|AWTEventMulticaster|AWTException|AWTKeyStroke|AWTPermission|BackingStoreException|BAD_CONTEXT|BAD_INV_ORDER|BAD_OPERATION|BAD_PARAM|BAD_POLICY|BAD_POLICY_TYPE|BAD_POLICY_VALUE|BAD_TYPECODE|BadKind|BadLocationException|BadPaddingException|BandCombineOp|BandedSampleModel|BasicArrowButton|BasicAttribute|BasicAttributes|BasicBorders|BasicButtonListener|BasicButtonUI|BasicCheckBoxMenuItemUI|BasicCheckBoxUI|BasicColorChooserUI|BasicComboBoxEditor|BasicComboBoxRenderer|BasicComboBoxUI|BasicComboPopup|BasicDesktopIconUI|BasicDesktopPaneUI|BasicDirectoryModel|BasicEditorPaneUI|BasicFileChooserUI|BasicFormattedTextFieldUI|BasicGraphicsUtils|BasicHTML|BasicIconFactory|BasicInternalFrameTitlePane|BasicInternalFrameUI|BasicLabelUI|BasicListUI|BasicLookAndFeel|BasicMenuBarUI|BasicMenuItemUI|BasicMenuUI|BasicOptionPaneUI|BasicPanelUI|BasicPasswordFieldUI|BasicPermission|BasicPopupMenuSeparatorUI|BasicPopupMenuUI|BasicProgressBarUI|BasicRadioButtonMenuItemUI|BasicRadioButtonUI|BasicRootPaneUI|BasicScrollBarUI|BasicScrollPaneUI|BasicSeparatorUI|BasicSliderUI|BasicSpinnerUI|BasicSplitPaneDivider|BasicSplitPaneUI|BasicStroke|BasicTabbedPaneUI|BasicTableHeaderUI|BasicTableUI|BasicTextAreaUI|BasicTextFieldUI|BasicTextPaneUI|BasicTextUI|BasicToggleButtonUI|BasicToolBarSeparatorUI|BasicToolBarUI|BasicToolTipUI|BasicTreeUI|BasicViewportUI|BatchUpdateException|BeanContext|BeanContextChild|BeanContextChildComponentProxy|BeanContextChildSupport|BeanContextContainerProxy|BeanContextEvent|BeanContextMembershipEvent|BeanContextMembershipListener|BeanContextProxy|BeanContextServiceAvailableEvent|BeanContextServiceProvider|BeanContextServiceProviderBeanInfo|BeanContextServiceRevokedEvent|BeanContextServiceRevokedListener|BeanContextServices|BeanContextServicesListener|BeanContextServicesSupport|BeanContextSupport|BeanDescriptor|BeanInfo|Beans|BevelBorder|Bidi|BigDecimal|BigInteger|BinaryRefAddr|BindException|Binding|BindingHelper|BindingHolder|BindingIterator|BindingIteratorHelper|BindingIteratorHolder|BindingIteratorOperations|BindingIteratorPOA|BindingListHelper|BindingListHolder|BindingType|BindingTypeHelper|BindingTypeHolder|BitSet|Blob|BlockView|Book|Boolean|BooleanControl|BooleanHolder|BooleanSeqHelper|BooleanSeqHolder|Border|BorderFactory|BorderLayout|BorderUIResource|BoundedRangeModel|Bounds|Box|BoxedValueHelper|BoxLayout|BoxView|BreakIterator|Buffer|BufferCapabilities|BufferedImage|BufferedImageFilter|BufferedImageOp|BufferedInputStream|BufferedOutputStream|BufferedReader|BufferedWriter|BufferOverflowException|BufferStrategy|BufferUnderflowException|Button|ButtonGroup|ButtonModel|ButtonUI|Byte|ByteArrayInputStream|ByteArrayOutputStream|ByteBuffer|ByteChannel|ByteHolder|ByteLookupTable|ByteOrder|Calendar|CallableStatement|Callback|CallbackHandler|CancelablePrintJob|CancelledKeyException|CannotProceed|CannotProceedException|CannotProceedHelper|CannotProceedHolder|CannotRedoException|CannotUndoException|Canvas|CardLayout|Caret|CaretEvent|CaretListener|CDATASection|CellEditor|CellEditorListener|CellRendererPane|Certificate|CertificateEncodingException|CertificateException|CertificateExpiredException|CertificateFactory|CertificateFactorySpi|CertificateNotYetValidException|CertificateParsingException|CertPath|CertPathBuilder|CertPathBuilderException|CertPathBuilderResult|CertPathBuilderSpi|CertPathParameters|CertPathValidator|CertPathValidatorException|CertPathValidatorResult|CertPathValidatorSpi|CertSelector|CertStore|CertStoreException|CertStoreParameters|CertStoreSpi|ChangedCharSetException|ChangeEvent|ChangeListener|Channel|ChannelBinding|Channels|Character|CharacterCodingException|CharacterData|CharacterIterator|CharArrayReader|CharArrayWriter|CharBuffer|CharConversionException|CharHolder|CharSeqHelper|CharSeqHolder|CharSequence|Charset|CharsetDecoder|CharsetEncoder|CharsetProvider|Checkbox|CheckboxGroup|CheckboxMenuItem|CheckedInputStream|CheckedOutputStream|Checksum|Choice|ChoiceCallback|ChoiceFormat|Chromaticity|Cipher|CipherInputStream|CipherOutputStream|CipherSpi|Class|ClassCastException|ClassCircularityError|ClassDesc|ClassFormatError|ClassLoader|ClassNotFoundException|ClientRequestInfo|ClientRequestInfoOperations|ClientRequestInterceptor|ClientRequestInterceptorOperations|Clip|Clipboard|ClipboardOwner|Clob|Cloneable|CloneNotSupportedException|ClosedByInterruptException|ClosedChannelException|ClosedSelectorException|CMMException|Codec|CodecFactory|CodecFactoryHelper|CodecFactoryOperations|CodecOperations|CoderMalfunctionError|CoderResult|CodeSets|CodeSource|CodingErrorAction|CollationElementIterator|CollationKey|Collator|Collection|CollectionCertStoreParameters|Collections|Color|ColorChooserComponentFactory|ColorChooserUI|ColorConvertOp|ColorModel|ColorSelectionModel|ColorSpace|ColorSupported|ColorUIResource|ComboBoxEditor|ComboBoxModel|ComboBoxUI|ComboPopup|COMM_FAILURE|Comment|CommunicationException|Comparable|Comparator|Compiler|CompletionStatus|CompletionStatusHelper|Component|ComponentAdapter|ComponentColorModel|ComponentEvent|ComponentIdHelper|ComponentInputMap|ComponentInputMapUIResource|ComponentListener|ComponentOrientation|ComponentSampleModel|ComponentUI|ComponentView|Composite|CompositeContext|CompositeName|CompositeView|CompoundBorder|CompoundControl|CompoundEdit|CompoundName|Compression|ConcurrentModificationException|Configuration|ConfigurationException|ConfirmationCallback|ConnectException|ConnectIOException|Connection|ConnectionEvent|ConnectionEventListener|ConnectionPendingException|ConnectionPoolDataSource|ConsoleHandler|Constructor|Container|ContainerAdapter|ContainerEvent|ContainerListener|ContainerOrderFocusTraversalPolicy|ContentHandler|ContentHandlerFactory|ContentModel|Context|ContextList|ContextNotEmptyException|ContextualRenderedImageFactory|Control|ControlFactory|ControllerEventListener|ConvolveOp|CookieHolder|Copies|CopiesSupported|CRC32|CredentialExpiredException|CRL|CRLException|CRLSelector|CropImageFilter|CSS|CTX_RESTRICT_SCOPE|CubicCurve2D|Currency|Current|CurrentHelper|CurrentHolder|CurrentOperations|Cursor|Customizer|CustomMarshal|CustomValue|DATA_CONVERSION|DatabaseMetaData|DataBuffer|DataBufferByte|DataBufferDouble|DataBufferFloat|DataBufferInt|DataBufferShort|DataBufferUShort|DataFlavor|DataFormatException|DatagramChannel|DatagramPacket|DatagramSocket|DatagramSocketImpl|DatagramSocketImplFactory|DataInput|DataInputStream|DataLine|DataOutput|DataOutputStream|DataSource|DataTruncation|Date|DateFormat|DateFormatSymbols|DateFormatter|DateTimeAtCompleted|DateTimeAtCreation|DateTimeAtProcessing|DateTimeSyntax|DebugGraphics|DecimalFormat|DecimalFormatSymbols|DeclHandler|DefaultBoundedRangeModel|DefaultButtonModel|DefaultCaret|DefaultCellEditor|DefaultColorSelectionModel|DefaultComboBoxModel|DefaultDesktopManager|DefaultEditorKit|DefaultFocusManager|DefaultFocusTraversalPolicy|DefaultFormatter|DefaultFormatterFactory|DefaultHandler|DefaultHighlighter|DefaultKeyboardFocusManager|DefaultListCellRenderer|DefaultListModel|DefaultListSelectionModel|DefaultMenuLayout|DefaultMetalTheme|DefaultMutableTreeNode|DefaultPersistenceDelegate|DefaultSingleSelectionModel|DefaultStyledDocument|DefaultTableCellRenderer|DefaultTableColumnModel|DefaultTableModel|DefaultTextUI|DefaultTreeCellEditor|DefaultTreeCellRenderer|DefaultTreeModel|DefaultTreeSelectionModel|DefinitionKind|DefinitionKindHelper|Deflater|DeflaterOutputStream|Delegate|DelegationPermission|DESedeKeySpec|DesignMode|DESKeySpec|DesktopIconUI|DesktopManager|DesktopPaneUI|Destination|Destroyable|DestroyFailedException|DGC|DHGenParameterSpec|DHKey|DHParameterSpec|DHPrivateKey|DHPrivateKeySpec|DHPublicKey|DHPublicKeySpec|Dialog|Dictionary|DigestException|DigestInputStream|DigestOutputStream|Dimension|Dimension2D|DimensionUIResource|DirContext|DirectColorModel|DirectoryManager|DirObjectFactory|DirStateFactory|DisplayMode|DnDConstants|Doc|DocAttribute|DocAttributeSet|DocFlavor|DocPrintJob|Document|DocumentBuilder|DocumentBuilderFactory|DocumentEvent|DocumentFilter|DocumentFragment|DocumentHandler|DocumentListener|DocumentName|DocumentParser|DocumentType|DomainCombiner|DomainManager|DomainManagerOperations|DOMException|DOMImplementation|DOMLocator|DOMResult|DOMSource|Double|DoubleBuffer|DoubleHolder|DoubleSeqHelper|DoubleSeqHolder|DragGestureEvent|DragGestureListener|DragGestureRecognizer|DragSource|DragSourceAdapter|DragSourceContext|DragSourceDragEvent|DragSourceDropEvent|DragSourceEvent|DragSourceListener|DragSourceMotionListener|Driver|DriverManager|DriverPropertyInfo|DropTarget|DropTargetAdapter|DropTargetContext|DropTargetDragEvent|DropTargetDropEvent|DropTargetEvent|DropTargetListener|DSAKey|DSAKeyPairGenerator|DSAParameterSpec|DSAParams|DSAPrivateKey|DSAPrivateKeySpec|DSAPublicKey|DSAPublicKeySpec|DTD|DTDConstants|DTDHandler|DuplicateName|DuplicateNameHelper|DynamicImplementation|DynAny|DynAnyFactory|DynAnyFactoryHelper|DynAnyFactoryOperations|DynAnyHelper|DynAnyOperations|DynAnySeqHelper|DynArray|DynArrayHelper|DynArrayOperations|DynEnum|DynEnumHelper|DynEnumOperations|DynFixed|DynFixedHelper|DynFixedOperations|DynSequence|DynSequenceHelper|DynSequenceOperations|DynStruct|DynStructHelper|DynStructOperations|DynUnion|DynUnionHelper|DynUnionOperations|DynValue|DynValueBox|DynValueBoxOperations|DynValueCommon|DynValueCommonOperations|DynValueHelper|DynValueOperations|EditorKit|Element|ElementIterator|Ellipse2D|EmptyBorder|EmptyStackException|EncodedKeySpec|Encoder|Encoding|ENCODING_CDR_ENCAPS|EncryptedPrivateKeyInfo|Entity|EntityReference|EntityResolver|EnumControl|Enumeration|EnumSyntax|Environment|EOFException|Error|ErrorHandler|ErrorListener|ErrorManager|EtchedBorder|Event|EventContext|EventDirContext|EventHandler|EventListener|EventListenerList|EventListenerProxy|EventObject|EventQueue|EventSetDescriptor|Exception|ExceptionInInitializerError|ExceptionList|ExceptionListener|ExemptionMechanism|ExemptionMechanismException|ExemptionMechanismSpi|ExpandVetoException|ExportException|Expression|ExtendedRequest|ExtendedResponse|Externalizable|FactoryConfigurationError|FailedLoginException|FeatureDescriptor|Fidelity|Field|FieldNameHelper|FieldPosition|FieldView|File|FileCacheImageInputStream|FileCacheImageOutputStream|FileChannel|FileChooserUI|FileDescriptor|FileDialog|FileFilter|FileHandler|FileImageInputStream|FileImageOutputStream|FileInputStream|FileLock|FileLockInterruptionException|FilenameFilter|FileNameMap|FileNotFoundException|FileOutputStream|FilePermission|FileReader|FileSystemView|FileView|FileWriter|Filter|FilteredImageSource|FilterInputStream|FilterOutputStream|FilterReader|FilterWriter|Finishings|FixedHeightLayoutCache|FixedHolder|FlatteningPathIterator|FlavorException|FlavorMap|FlavorTable|Float|FloatBuffer|FloatControl|FloatHolder|FloatSeqHelper|FloatSeqHolder|FlowLayout|FlowView|FocusAdapter|FocusEvent|FocusListener|FocusManager|FocusTraversalPolicy|Font|FontFormatException|FontMetrics|FontRenderContext|FontUIResource|Format|FormatConversionProvider|FormatMismatch|FormatMismatchHelper|Formatter|FormView|ForwardRequest|ForwardRequestHelper|Frame|FREE_MEM|GapContent|GatheringByteChannel|GeneralPath|GeneralSecurityException|GlyphJustificationInfo|GlyphMetrics|GlyphVector|GlyphView|GradientPaint|GraphicAttribute|Graphics|Graphics2D|GraphicsConfigTemplate|GraphicsConfiguration|GraphicsDevice|GraphicsEnvironment|GrayFilter|GregorianCalendar|GridBagConstraints|GridBagLayout|GridLayout|Group|GSSContext|GSSCredential|GSSException|GSSManager|GSSName|Guard|GuardedObject|GZIPInputStream|GZIPOutputStream|Handler|HandlerBase|HandshakeCompletedEvent|HandshakeCompletedListener|HasControls|HashAttributeSet|HashDocAttributeSet|HashMap|HashPrintJobAttributeSet|HashPrintRequestAttributeSet|HashPrintServiceAttributeSet|HashSet|Hashtable|HeadlessException|HierarchyBoundsAdapter|HierarchyBoundsListener|HierarchyEvent|HierarchyListener|Highlighter|HostnameVerifier|HTML|HTMLDocument|HTMLEditorKit|HTMLFrameHyperlinkEvent|HTMLWriter|HttpsURLConnection|HttpURLConnection|HyperlinkEvent|HyperlinkListener|ICC_ColorSpace|ICC_Profile|ICC_ProfileGray|ICC_ProfileRGB|Icon|IconUIResource|IconView|ID_ASSIGNMENT_POLICY_ID|ID_UNIQUENESS_POLICY_ID|IdAssignmentPolicy|IdAssignmentPolicyOperations|IdAssignmentPolicyValue|IdentifierHelper|Identity|IdentityHashMap|IdentityScope|IDLEntity|IDLType|IDLTypeHelper|IDLTypeOperations|IdUniquenessPolicy|IdUniquenessPolicyOperations|IdUniquenessPolicyValue|IIOByteBuffer|IIOException|IIOImage|IIOInvalidTreeException|IIOMetadata|IIOMetadataController|IIOMetadataFormat|IIOMetadataFormatImpl|IIOMetadataNode|IIOParam|IIOParamController|IIOReadProgressListener|IIOReadUpdateListener|IIOReadWarningListener|IIORegistry|IIOServiceProvider|IIOWriteProgressListener|IIOWriteWarningListener|IllegalAccessError|IllegalAccessException|IllegalArgumentException|IllegalBlockingModeException|IllegalBlockSizeException|IllegalCharsetNameException|IllegalComponentStateException|IllegalMonitorStateException|IllegalPathStateException|IllegalSelectorException|IllegalStateException|IllegalThreadStateException|Image|ImageCapabilities|ImageConsumer|ImageFilter|ImageGraphicAttribute|ImageIcon|ImageInputStream|ImageInputStreamImpl|ImageInputStreamSpi|ImageIO|ImageObserver|ImageOutputStream|ImageOutputStreamImpl|ImageOutputStreamSpi|ImageProducer|ImageReader|ImageReaderSpi|ImageReaderWriterSpi|ImageReadParam|ImageTranscoder|ImageTranscoderSpi|ImageTypeSpecifier|ImageView|ImageWriteParam|ImageWriter|ImageWriterSpi|ImagingOpException|IMP_LIMIT|IMPLICIT_ACTIVATION_POLICY_ID|ImplicitActivationPolicy|ImplicitActivationPolicyOperations|ImplicitActivationPolicyValue|IncompatibleClassChangeError|InconsistentTypeCode|InconsistentTypeCodeHelper|IndexColorModel|IndexedPropertyDescriptor|IndexOutOfBoundsException|IndirectionException|Inet4Address|Inet6Address|InetAddress|InetSocketAddress|Inflater|InflaterInputStream|InheritableThreadLocal|InitialContext|InitialContextFactory|InitialContextFactoryBuilder|InitialDirContext|INITIALIZE|InitialLdapContext|InlineView|InputContext|InputEvent|InputMap|InputMapUIResource|InputMethod|InputMethodContext|InputMethodDescriptor|InputMethodEvent|InputMethodHighlight|InputMethodListener|InputMethodRequests|InputSource|InputStream|InputStreamReader|InputSubset|InputVerifier|Insets|InsetsUIResource|InstantiationError|InstantiationException|Instrument|InsufficientResourcesException|IntBuffer|Integer|IntegerSyntax|Interceptor|InterceptorOperations|INTERNAL|InternalError|InternalFrameAdapter|InternalFrameEvent|InternalFrameFocusTraversalPolicy|InternalFrameListener|InternalFrameUI|InternationalFormatter|InterruptedException|InterruptedIOException|InterruptedNamingException|InterruptibleChannel|INTF_REPOS|IntHolder|IntrospectionException|Introspector|INV_FLAG|INV_IDENT|INV_OBJREF|INV_POLICY|Invalid|INVALID_TRANSACTION|InvalidAddress|InvalidAddressHelper|InvalidAddressHolder|InvalidAlgorithmParameterException|InvalidAttributeIdentifierException|InvalidAttributesException|InvalidAttributeValueException|InvalidClassException|InvalidDnDOperationException|InvalidKeyException|InvalidKeySpecException|InvalidMarkException|InvalidMidiDataException|InvalidName|InvalidNameException|InvalidNameHelper|InvalidNameHolder|InvalidObjectException|InvalidParameterException|InvalidParameterSpecException|InvalidPolicy|InvalidPolicyHelper|InvalidPreferencesFormatException|InvalidSearchControlsException|InvalidSearchFilterException|InvalidSeq|InvalidSlot|InvalidSlotHelper|InvalidTransactionException|InvalidTypeForEncoding|InvalidTypeForEncodingHelper|InvalidValue|InvalidValueHelper|InvocationEvent|InvocationHandler|InvocationTargetException|InvokeHandler|IOException|IOR|IORHelper|IORHolder|IORInfo|IORInfoOperations|IORInterceptor|IORInterceptorOperations|IRObject|IRObjectOperations|IstringHelper|ItemEvent|ItemListener|ItemSelectable|Iterator|IvParameterSpec|JApplet|JarEntry|JarException|JarFile|JarInputStream|JarOutputStream|JarURLConnection|JButton|JCheckBox|JCheckBoxMenuItem|JColorChooser|JComboBox|JComponent|JDesktopPane|JDialog|JEditorPane|JFileChooser|JFormattedTextField|JFrame|JInternalFrame|JLabel|JLayeredPane|JList|JMenu|JMenuBar|JMenuItem|JobAttributes|JobHoldUntil|JobImpressions|JobImpressionsCompleted|JobImpressionsSupported|JobKOctets|JobKOctetsProcessed|JobKOctetsSupported|JobMediaSheets|JobMediaSheetsCompleted|JobMediaSheetsSupported|JobMessageFromOperator|JobName|JobOriginatingUserName|JobPriority|JobPrioritySupported|JobSheets|JobState|JobStateReason|JobStateReasons|JOptionPane|JPanel|JPasswordField|JPEGHuffmanTable|JPEGImageReadParam|JPEGImageWriteParam|JPEGQTable|JPopupMenu|JProgressBar|JRadioButton|JRadioButtonMenuItem|JRootPane|JScrollBar|JScrollPane|JSeparator|JSlider|JSpinner|JSplitPane|JTabbedPane|JTable|JTableHeader|JTextArea|JTextComponent|JTextField|JTextPane|JToggleButton|JToolBar|JToolTip|JTree|JViewport|JWindow|KerberosKey|KerberosPrincipal|KerberosTicket|Kernel|Key|KeyAdapter|KeyAgreement|KeyAgreementSpi|KeyboardFocusManager|KeyEvent|KeyEventDispatcher|KeyEventPostProcessor|KeyException|KeyFactory|KeyFactorySpi|KeyGenerator|KeyGeneratorSpi|KeyListener|KeyManagementException|KeyManager|KeyManagerFactory|KeyManagerFactorySpi|Keymap|KeyPair|KeyPairGenerator|KeyPairGeneratorSpi|KeySpec|KeyStore|KeyStoreException|KeyStoreSpi|KeyStroke|Label|LabelUI|LabelView|LanguageCallback|LastOwnerException|LayeredHighlighter|LayoutFocusTraversalPolicy|LayoutManager|LayoutManager2|LayoutQueue|LDAPCertStoreParameters|LdapContext|LdapReferralException|Lease|Level|LexicalHandler|LIFESPAN_POLICY_ID|LifespanPolicy|LifespanPolicyOperations|LifespanPolicyValue|LimitExceededException|Line|Line2D|LineBorder|LineBreakMeasurer|LineEvent|LineListener|LineMetrics|LineNumberInputStream|LineNumberReader|LineUnavailableException|LinkageError|LinkedHashMap|LinkedHashSet|LinkedList|LinkException|LinkLoopException|LinkRef|List|ListCellRenderer|ListDataEvent|ListDataListener|ListIterator|ListModel|ListResourceBundle|ListSelectionEvent|ListSelectionListener|ListSelectionModel|ListUI|ListView|LoaderHandler|Locale|LocalObject|LocateRegistry|LOCATION_FORWARD|Locator|LocatorImpl|Logger|LoggingPermission|LoginContext|LoginException|LoginModule|LogManager|LogRecord|LogStream|Long|LongBuffer|LongHolder|LongLongSeqHelper|LongLongSeqHolder|LongSeqHelper|LongSeqHolder|LookAndFeel|LookupOp|LookupTable|Mac|MacSpi|MalformedInputException|MalformedLinkException|MalformedURLException|ManagerFactoryParameters|Manifest|Map|MappedByteBuffer|MARSHAL|MarshalException|MarshalledObject|MaskFormatter|Matcher|Math|MatteBorder|Media|MediaName|MediaPrintableArea|MediaSize|MediaSizeName|MediaTracker|MediaTray|Member|MemoryCacheImageInputStream|MemoryCacheImageOutputStream|MemoryHandler|MemoryImageSource|Menu|MenuBar|MenuBarUI|MenuComponent|MenuContainer|MenuDragMouseEvent|MenuDragMouseListener|MenuElement|MenuEvent|MenuItem|MenuItemUI|MenuKeyEvent|MenuKeyListener|MenuListener|MenuSelectionManager|MenuShortcut|MessageDigest|MessageDigestSpi|MessageFormat|MessageProp|MetaEventListener|MetalBorders|MetalButtonUI|MetalCheckBoxIcon|MetalCheckBoxUI|MetalComboBoxButton|MetalComboBoxEditor|MetalComboBoxIcon|MetalComboBoxUI|MetalDesktopIconUI|MetalFileChooserUI|MetalIconFactory|MetalInternalFrameTitlePane|MetalInternalFrameUI|MetalLabelUI|MetalLookAndFeel|MetalPopupMenuSeparatorUI|MetalProgressBarUI|MetalRadioButtonUI|MetalRootPaneUI|MetalScrollBarUI|MetalScrollButton|MetalScrollPaneUI|MetalSeparatorUI|MetalSliderUI|MetalSplitPaneUI|MetalTabbedPaneUI|MetalTextFieldUI|MetalTheme|MetalToggleButtonUI|MetalToolBarUI|MetalToolTipUI|MetalTreeUI|MetaMessage|Method|MethodDescriptor|MidiChannel|MidiDevice|MidiDeviceProvider|MidiEvent|MidiFileFormat|MidiFileReader|MidiFileWriter|MidiMessage|MidiSystem|MidiUnavailableException|MimeTypeParseException|MinimalHTMLWriter|MissingResourceException|Mixer|MixerProvider|ModificationItem|Modifier|MouseAdapter|MouseDragGestureRecognizer|MouseEvent|MouseInputAdapter|MouseInputListener|MouseListener|MouseMotionAdapter|MouseMotionListener|MouseWheelEvent|MouseWheelListener|MultiButtonUI|MulticastSocket|MultiColorChooserUI|MultiComboBoxUI|MultiDesktopIconUI|MultiDesktopPaneUI|MultiDoc|MultiDocPrintJob|MultiDocPrintService|MultiFileChooserUI|MultiInternalFrameUI|MultiLabelUI|MultiListUI|MultiLookAndFeel|MultiMenuBarUI|MultiMenuItemUI|MultiOptionPaneUI|MultiPanelUI|MultiPixelPackedSampleModel|MultipleComponentProfileHelper|MultipleComponentProfileHolder|MultipleDocumentHandling|MultipleMaster|MultiPopupMenuUI|MultiProgressBarUI|MultiRootPaneUI|MultiScrollBarUI|MultiScrollPaneUI|MultiSeparatorUI|MultiSliderUI|MultiSpinnerUI|MultiSplitPaneUI|MultiTabbedPaneUI|MultiTableHeaderUI|MultiTableUI|MultiTextUI|MultiToolBarUI|MultiToolTipUI|MultiTreeUI|MultiViewportUI|MutableAttributeSet|MutableComboBoxModel|MutableTreeNode|Name|NameAlreadyBoundException|NameCallback|NameClassPair|NameComponent|NameComponentHelper|NameComponentHolder|NamedNodeMap|NamedValue|NameDynAnyPair|NameDynAnyPairHelper|NameDynAnyPairSeqHelper|NameHelper|NameHolder|NameNotFoundException|NameParser|NamespaceChangeListener|NamespaceSupport|NameValuePair|NameValuePairHelper|NameValuePairSeqHelper|Naming|NamingContext|NamingContextExt|NamingContextExtHelper|NamingContextExtHolder|NamingContextExtOperations|NamingContextExtPOA|NamingContextHelper|NamingContextHolder|NamingContextOperations|NamingContextPOA|NamingEnumeration|NamingEvent|NamingException|NamingExceptionEvent|NamingListener|NamingManager|NamingSecurityException|NavigationFilter|NegativeArraySizeException|NetPermission|NetworkInterface|NO_IMPLEMENT|NO_MEMORY|NO_PERMISSION|NO_RESOURCES|NO_RESPONSE|NoClassDefFoundError|NoConnectionPendingException|NoContext|NoContextHelper|Node|NodeChangeEvent|NodeChangeListener|NodeList|NoInitialContextException|NoninvertibleTransformException|NonReadableChannelException|NonWritableChannelException|NoPermissionException|NoRouteToHostException|NoServant|NoServantHelper|NoSuchAlgorithmException|NoSuchAttributeException|NoSuchElementException|NoSuchFieldError|NoSuchFieldException|NoSuchMethodError|NoSuchMethodException|NoSuchObjectException|NoSuchPaddingException|NoSuchProviderException|NotActiveException|Notation|NotBoundException|NotContextException|NotEmpty|NotEmptyHelper|NotEmptyHolder|NotFound|NotFoundHelper|NotFoundHolder|NotFoundReason|NotFoundReasonHelper|NotFoundReasonHolder|NotOwnerException|NotSerializableException|NotYetBoundException|NotYetConnectedException|NullCipher|NullPointerException|Number|NumberFormat|NumberFormatException|NumberFormatter|NumberOfDocuments|NumberOfInterveningJobs|NumberUp|NumberUpSupported|NumericShaper|NVList|OBJ_ADAPTER|Object|OBJECT_NOT_EXIST|ObjectAlreadyActive|ObjectAlreadyActiveHelper|ObjectChangeListener|ObjectFactory|ObjectFactoryBuilder|ObjectHelper|ObjectHolder|ObjectIdHelper|ObjectImpl|ObjectInput|ObjectInputStream|ObjectInputValidation|ObjectNotActive|ObjectNotActiveHelper|ObjectOutput|ObjectOutputStream|ObjectStreamClass|ObjectStreamConstants|ObjectStreamException|ObjectStreamField|ObjectView|ObjID|Observable|Observer|OctetSeqHelper|OctetSeqHolder|Oid|OMGVMCID|OpenType|Operation|OperationNotSupportedException|Option|OptionalDataException|OptionPaneUI|ORB|ORBInitializer|ORBInitializerOperations|ORBInitInfo|ORBInitInfoOperations|OrientationRequested|OutOfMemoryError|OutputDeviceAssigned|OutputKeys|OutputStream|OutputStreamWriter|OverlappingFileLockException|OverlayLayout|Owner|Package|PackedColorModel|Pageable|PageAttributes|PageFormat|PageRanges|PagesPerMinute|PagesPerMinuteColor|Paint|PaintContext|PaintEvent|Panel|PanelUI|Paper|ParagraphView|Parameter|ParameterBlock|ParameterDescriptor|ParameterMetaData|ParameterMode|ParameterModeHelper|ParameterModeHolder|ParseException|ParsePosition|Parser|ParserAdapter|ParserConfigurationException|ParserDelegator|ParserFactory|PartialResultException|PasswordAuthentication|PasswordCallback|PasswordView|Patch|PathIterator|Pattern|PatternSyntaxException|PBEKey|PBEKeySpec|PBEParameterSpec|PDLOverrideSupported|Permission|PermissionCollection|Permissions|PERSIST_STORE|PersistenceDelegate|PhantomReference|Pipe|PipedInputStream|PipedOutputStream|PipedReader|PipedWriter|PixelGrabber|PixelInterleavedSampleModel|PKCS8EncodedKeySpec|PKIXBuilderParameters|PKIXCertPathBuilderResult|PKIXCertPathChecker|PKIXCertPathValidatorResult|PKIXParameters|PlainDocument|PlainView|POA|POAHelper|POAManager|POAManagerOperations|POAOperations|Point|Point2D|Policy|PolicyError|PolicyErrorCodeHelper|PolicyErrorHelper|PolicyErrorHolder|PolicyFactory|PolicyFactoryOperations|PolicyHelper|PolicyHolder|PolicyListHelper|PolicyListHolder|PolicyNode|PolicyOperations|PolicyQualifierInfo|PolicyTypeHelper|Polygon|PooledConnection|Popup|PopupFactory|PopupMenu|PopupMenuEvent|PopupMenuListener|PopupMenuUI|Port|PortableRemoteObject|PortableRemoteObjectDelegate|PortUnreachableException|Position|PreferenceChangeEvent|PreferenceChangeListener|Preferences|PreferencesFactory|PreparedStatement|PresentationDirection|Principal|PrincipalHolder|Printable|PrinterAbortException|PrinterException|PrinterGraphics|PrinterInfo|PrinterIOException|PrinterIsAcceptingJobs|PrinterJob|PrinterLocation|PrinterMakeAndModel|PrinterMessageFromOperator|PrinterMoreInfo|PrinterMoreInfoManufacturer|PrinterName|PrinterResolution|PrinterState|PrinterStateReason|PrinterStateReasons|PrinterURI|PrintEvent|PrintException|PrintGraphics|PrintJob|PrintJobAdapter|PrintJobAttribute|PrintJobAttributeEvent|PrintJobAttributeListener|PrintJobAttributeSet|PrintJobEvent|PrintJobListener|PrintQuality|PrintRequestAttribute|PrintRequestAttributeSet|PrintService|PrintServiceAttribute|PrintServiceAttributeEvent|PrintServiceAttributeListener|PrintServiceAttributeSet|PrintServiceLookup|PrintStream|PrintWriter|PRIVATE_MEMBER|PrivateCredentialPermission|PrivateKey|PrivilegedAction|PrivilegedActionException|PrivilegedExceptionAction|Process|ProcessingInstruction|ProfileDataException|ProfileIdHelper|ProgressBarUI|ProgressMonitor|ProgressMonitorInputStream|Properties|PropertyChangeEvent|PropertyChangeListener|PropertyChangeListenerProxy|PropertyChangeSupport|PropertyDescriptor|PropertyEditor|PropertyEditorManager|PropertyEditorSupport|PropertyPermission|PropertyResourceBundle|PropertyVetoException|ProtectionDomain|ProtocolException|Provider|ProviderException|Proxy|PSSParameterSpec|PUBLIC_MEMBER|PublicKey|PushbackInputStream|PushbackReader|QuadCurve2D|QueuedJobCount|Random|RandomAccess|RandomAccessFile|Raster|RasterFormatException|RasterOp|RC2ParameterSpec|RC5ParameterSpec|ReadableByteChannel|Reader|ReadOnlyBufferException|Receiver|Rectangle|Rectangle2D|RectangularShape|Ref|RefAddr|Reference|Referenceable|ReferenceQueue|ReferenceUriSchemesSupported|ReferralException|ReflectPermission|Refreshable|RefreshFailedException|RegisterableService|Registry|RegistryHandler|RemarshalException|Remote|RemoteCall|RemoteException|RemoteObject|RemoteRef|RemoteServer|RemoteStub|RenderableImage|RenderableImageOp|RenderableImageProducer|RenderContext|RenderedImage|RenderedImageFactory|Renderer|RenderingHints|RepaintManager|ReplicateScaleFilter|RepositoryIdHelper|Request|REQUEST_PROCESSING_POLICY_ID|RequestInfo|RequestInfoOperations|RequestingUserName|RequestProcessingPolicy|RequestProcessingPolicyOperations|RequestProcessingPolicyValue|RescaleOp|ResolutionSyntax|Resolver|ResolveResult|ResourceBundle|ResponseHandler|Result|ResultSet|ResultSetMetaData|ReverbType|RGBImageFilter|RMIClassLoader|RMIClassLoaderSpi|RMIClientSocketFactory|RMIFailureHandler|RMISecurityException|RMISecurityManager|RMIServerSocketFactory|RMISocketFactory|Robot|RootPaneContainer|RootPaneUI|RoundRectangle2D|RowMapper|RowSet|RowSetEvent|RowSetInternal|RowSetListener|RowSetMetaData|RowSetReader|RowSetWriter|RSAKey|RSAKeyGenParameterSpec|RSAMultiPrimePrivateCrtKey|RSAMultiPrimePrivateCrtKeySpec|RSAOtherPrimeInfo|RSAPrivateCrtKey|RSAPrivateCrtKeySpec|RSAPrivateKey|RSAPrivateKeySpec|RSAPublicKey|RSAPublicKeySpec|RTFEditorKit|RuleBasedCollator|Runnable|Runtime|RunTime|RuntimeException|RunTimeOperations|RuntimePermission|SampleModel|Savepoint|SAXException|SAXNotRecognizedException|SAXNotSupportedException|SAXParseException|SAXParser|SAXParserFactory|SAXResult|SAXSource|SAXTransformerFactory|ScatteringByteChannel|SchemaViolationException|Scrollable|Scrollbar|ScrollBarUI|ScrollPane|ScrollPaneAdjustable|ScrollPaneConstants|ScrollPaneLayout|ScrollPaneUI|SealedObject|SearchControls|SearchResult|SecretKey|SecretKeyFactory|SecretKeyFactorySpi|SecretKeySpec|SecureClassLoader|SecureRandom|SecureRandomSpi|Security|SecurityException|SecurityManager|SecurityPermission|Segment|SelectableChannel|SelectionKey|Selector|SelectorProvider|SeparatorUI|Sequence|SequenceInputStream|Sequencer|Serializable|SerializablePermission|Servant|SERVANT_RETENTION_POLICY_ID|ServantActivator|ServantActivatorHelper|ServantActivatorOperations|ServantActivatorPOA|ServantAlreadyActive|ServantAlreadyActiveHelper|ServantLocator|ServantLocatorHelper|ServantLocatorOperations|ServantLocatorPOA|ServantManager|ServantManagerOperations|ServantNotActive|ServantNotActiveHelper|ServantObject|ServantRetentionPolicy|ServantRetentionPolicyOperations|ServantRetentionPolicyValue|ServerCloneException|ServerError|ServerException|ServerNotActiveException|ServerRef|ServerRequest|ServerRequestInfo|ServerRequestInfoOperations|ServerRequestInterceptor|ServerRequestInterceptorOperations|ServerRuntimeException|ServerSocket|ServerSocketChannel|ServerSocketFactory|ServiceContext|ServiceContextHelper|ServiceContextHolder|ServiceContextListHelper|ServiceContextListHolder|ServiceDetail|ServiceDetailHelper|ServiceIdHelper|ServiceInformation|ServiceInformationHelper|ServiceInformationHolder|ServicePermission|ServiceRegistry|ServiceUI|ServiceUIFactory|ServiceUnavailableException|Set|SetOfIntegerSyntax|SetOverrideType|SetOverrideTypeHelper|Severity|Shape|ShapeGraphicAttribute|SheetCollate|Short|ShortBuffer|ShortBufferException|ShortHolder|ShortLookupTable|ShortMessage|ShortSeqHelper|ShortSeqHolder|Sides|Signature|SignatureException|SignatureSpi|SignedObject|Signer|SimpleAttributeSet|SimpleBeanInfo|SimpleDateFormat|SimpleDoc|SimpleFormatter|SimpleTimeZone|SinglePixelPackedSampleModel|SingleSelectionModel|Size2DSyntax|SizeLimitExceededException|SizeRequirements|SizeSequence|Skeleton|SkeletonMismatchException|SkeletonNotFoundException|SliderUI|Socket|SocketAddress|SocketChannel|SocketException|SocketFactory|SocketHandler|SocketImpl|SocketImplFactory|SocketOptions|SocketPermission|SocketSecurityException|SocketTimeoutException|SoftBevelBorder|SoftReference|SortedMap|SortedSet|SortingFocusTraversalPolicy|Soundbank|SoundbankReader|SoundbankResource|Source|SourceDataLine|SourceLocator|SpinnerDateModel|SpinnerListModel|SpinnerModel|SpinnerNumberModel|SpinnerUI|SplitPaneUI|Spring|SpringLayout|SQLData|SQLException|SQLInput|SQLOutput|SQLPermission|SQLWarning|SSLContext|SSLContextSpi|SSLException|SSLHandshakeException|SSLKeyException|SSLPeerUnverifiedException|SSLPermission|SSLProtocolException|SSLServerSocket|SSLServerSocketFactory|SSLSession|SSLSessionBindingEvent|SSLSessionBindingListener|SSLSessionContext|SSLSocket|SSLSocketFactory|Stack|StackOverflowError|StackTraceElement|StartTlsRequest|StartTlsResponse|State|StateEdit|StateEditable|StateFactory|Statement|Streamable|StreamableValue|StreamCorruptedException|StreamHandler|StreamPrintService|StreamPrintServiceFactory|StreamResult|StreamSource|StreamTokenizer|StrictMath|String|StringBuffer|StringBufferInputStream|StringCharacterIterator|StringContent|StringHolder|StringIndexOutOfBoundsException|StringNameHelper|StringReader|StringRefAddr|StringSelection|StringSeqHelper|StringSeqHolder|StringTokenizer|StringValueHelper|StringWriter|Stroke|Struct|StructMember|StructMemberHelper|Stub|StubDelegate|StubNotFoundException|Style|StyleConstants|StyleContext|StyledDocument|StyledEditorKit|StyleSheet|Subject|SubjectDomainCombiner|SUCCESSFUL|SupportedValuesAttribute|SwingConstants|SwingPropertyChangeSupport|SwingUtilities|SYNC_WITH_TRANSPORT|SyncFailedException|SyncScopeHelper|Synthesizer|SysexMessage|System|SYSTEM_EXCEPTION|SystemColor|SystemException|SystemFlavorMap|TabableView|TabbedPaneUI|TabExpander|TableCellEditor|TableCellRenderer|TableColumn|TableColumnModel|TableColumnModelEvent|TableColumnModelListener|TableHeaderUI|TableModel|TableModelEvent|TableModelListener|TableUI|TableView|TabSet|TabStop|TAG_ALTERNATE_IIOP_ADDRESS|TAG_CODE_SETS|TAG_INTERNET_IOP|TAG_JAVA_CODEBASE|TAG_MULTIPLE_COMPONENTS|TAG_ORB_TYPE|TAG_POLICIES|TagElement|TaggedComponent|TaggedComponentHelper|TaggedComponentHolder|TaggedProfile|TaggedProfileHelper|TaggedProfileHolder|TargetDataLine|TCKind|Templates|TemplatesHandler|Text|TextAction|TextArea|TextAttribute|TextComponent|TextEvent|TextField|TextHitInfo|TextInputCallback|TextLayout|TextListener|TextMeasurer|TextOutputCallback|TextSyntax|TextUI|TexturePaint|Thread|THREAD_POLICY_ID|ThreadDeath|ThreadGroup|ThreadLocal|ThreadPolicy|ThreadPolicyOperations|ThreadPolicyValue|Throwable|Tie|TileObserver|Time|TimeLimitExceededException|Timer|TimerTask|Timestamp|TimeZone|TitledBorder|ToolBarUI|Toolkit|ToolTipManager|ToolTipUI|TooManyListenersException|Track|TRANSACTION_REQUIRED|TRANSACTION_ROLLEDBACK|TransactionRequiredException|TransactionRolledbackException|TransactionService|Transferable|TransferHandler|TransformAttribute|Transformer|TransformerConfigurationException|TransformerException|TransformerFactory|TransformerFactoryConfigurationError|TransformerHandler|TRANSIENT|Transmitter|Transparency|TRANSPORT_RETRY|TreeCellEditor|TreeCellRenderer|TreeExpansionEvent|TreeExpansionListener|TreeMap|TreeModel|TreeModelEvent|TreeModelListener|TreeNode|TreePath|TreeSelectionEvent|TreeSelectionListener|TreeSelectionModel|TreeSet|TreeUI|TreeWillExpandListener|TrustAnchor|TrustManager|TrustManagerFactory|TrustManagerFactorySpi|TypeCode|TypeCodeHolder|TypeMismatch|TypeMismatchHelper|Types|UID|UIDefaults|UIManager|UIResource|ULongLongSeqHelper|ULongLongSeqHolder|ULongSeqHelper|ULongSeqHolder|UndeclaredThrowableException|UndoableEdit|UndoableEditEvent|UndoableEditListener|UndoableEditSupport|UndoManager|UnexpectedException|UnicastRemoteObject|UnionMember|UnionMemberHelper|UNKNOWN|UnknownEncoding|UnknownEncodingHelper|UnknownError|UnknownException|UnknownGroupException|UnknownHostException|UnknownObjectException|UnknownServiceException|UnknownUserException|UnknownUserExceptionHelper|UnknownUserExceptionHolder|UnmappableCharacterException|UnmarshalException|UnmodifiableSetException|UnrecoverableKeyException|Unreferenced|UnresolvedAddressException|UnresolvedPermission|UnsatisfiedLinkError|UnsolicitedNotification|UnsolicitedNotificationEvent|UnsolicitedNotificationListener|UNSUPPORTED_POLICY|UNSUPPORTED_POLICY_VALUE|UnsupportedAddressTypeException|UnsupportedAudioFileException|UnsupportedCallbackException|UnsupportedCharsetException|UnsupportedClassVersionError|UnsupportedEncodingException|UnsupportedFlavorException|UnsupportedLookAndFeelException|UnsupportedOperationException|URI|URIException|URIResolver|URISyntax|URISyntaxException|URL|URLClassLoader|URLConnection|URLDecoder|URLEncoder|URLStreamHandler|URLStreamHandlerFactory|URLStringHelper|USER_EXCEPTION|UserException|UShortSeqHelper|UShortSeqHolder|UTFDataFormatException|Util|UtilDelegate|Utilities|ValueBase|ValueBaseHelper|ValueBaseHolder|ValueFactory|ValueHandler|ValueMember|ValueMemberHelper|VariableHeightLayoutCache|Vector|VerifyError|VersionSpecHelper|VetoableChangeListener|VetoableChangeListenerProxy|VetoableChangeSupport|View|ViewFactory|ViewportLayout|ViewportUI|VirtualMachineError|Visibility|VisibilityHelper|VM_ABSTRACT|VM_CUSTOM|VM_NONE|VM_TRUNCATABLE|VMID|VoiceStatus|Void|VolatileImage|WCharSeqHelper|WCharSeqHolder|WeakHashMap|WeakReference|Window|WindowAdapter|WindowConstants|WindowEvent|WindowFocusListener|WindowListener|WindowStateListener|WrappedPlainView|WritableByteChannel|WritableRaster|WritableRenderedImage|WriteAbortedException|Writer|WrongAdapter|WrongAdapterHelper|WrongPolicy|WrongPolicyHelper|WrongTransaction|WrongTransactionHelper|WrongTransactionHolder|WStringSeqHelper|WStringSeqHolder|WStringValueHelper|X500Principal|X500PrivateCredential|X509Certificate|X509CertSelector|X509CRL|X509CRLEntry|X509CRLSelector|X509EncodedKeySpec|X509Extension|X509KeyManager|X509TrustManager|XAConnection|XADataSource|XAException|XAResource|Xid|XMLDecoder|XMLEncoder|XMLFilter|XMLFilterImpl|XMLFormatter|XMLReader|XMLReaderAdapter|XMLReaderFactory|ZipEntry|ZipException|ZipFile|ZipInputStream|ZipOutputStream|ZoneView|_BindingIteratorImplBase|_BindingIteratorStub|_DynAnyFactoryStub|_DynAnyStub|_DynArrayStub|_DynEnumStub|_DynFixedStub|_DynSequenceStub|_DynStructStub|_DynUnionStub|_DynValueStub|_IDLTypeStub|_NamingContextExtStub|_NamingContextImplBase|_NamingContextStub|_PolicyStub|_Remote_Stub|_ServantActivatorStub|_ServantLocatorStub)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + ); + $this->_conditions = array ( + 'java.builtins' => + array ( + 0 => + array ( + 0 => 'builtin', + 1 => true, + ), + ), + ); + $this->_kwmap = array ( + 'types' => 'types', + 'reserved' => 'reserved', + 'builtin' => 'builtin', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/JAVASCRIPT.php b/library/Text_Highlighter/Text/Highlighter/JAVASCRIPT.php new file mode 100644 index 000000000..51eae8f62 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/JAVASCRIPT.php @@ -0,0 +1,631 @@ +<?php +/** + * Auto-generated class. JAVASCRIPT syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: javascript.xml + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. JAVASCRIPT syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_JAVASCRIPT extends Text_Highlighter +{ + var $_language = 'javascript'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_JAVASCRIPT($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0x\\d*|\\d*\\.?\\d+)/', + 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0x\\d*|\\d*\\.?\\d+)/', + 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0x\\d*|\\d*\\.?\\d+)/', + 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)\')|((?i)\\/\\/)|((?i)[a-z_]\\w*)|((?i)0x\\d*|\\d*\\.?\\d+)/', + 3 => '/((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\b(note|fixme):)|((?i)\\$\\w+:.+\\$)/', + 4 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`|\\\\t|\\\\n|\\\\r)/', + 5 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 6 => '/((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\b(note|fixme):)|((?i)\\$\\w+:.+\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + ), + 0 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 0, + ), + 3 => + array ( + 0 => 3, + 1 => 1, + 2 => 1, + 3 => 0, + ), + 4 => + array ( + 0 => 0, + ), + 5 => + array ( + 0 => 0, + ), + 6 => + array ( + 0 => 3, + 1 => 1, + 2 => 1, + 3 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + ), + 0 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + ), + 1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + ), + 2 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'comment', + 7 => '', + 8 => '', + ), + 3 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => '', + ), + 6 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + ), + 0 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + ), + 1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + ), + 2 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'comment', + 7 => 'identifier', + 8 => 'number', + ), + 3 => + array ( + 0 => 'url', + 1 => 'url', + 2 => 'inlinedoc', + 3 => 'inlinedoc', + ), + 4 => + array ( + 0 => 'special', + ), + 5 => + array ( + 0 => 'special', + ), + 6 => + array ( + 0 => 'url', + 1 => 'url', + 2 => 'inlinedoc', + 3 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)\\}/', + 1 => '/(?i)\\)/', + 2 => '/(?i)\\]/', + 3 => '/(?i)\\*\\//', + 4 => '/(?i)"/', + 5 => '/(?i)\'/', + 6 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + ), + 0 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + ), + 1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + ), + 2 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => 6, + 7 => -1, + 8 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/', + 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/', + ), + 8 => + array ( + ), + ), + 0 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/', + 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/', + ), + 8 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/', + 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/', + ), + 8 => + array ( + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + 'builtin' => '/^(String|Array|RegExp|Function|Math|Number|Date|Image|window|document|navigator|onAbort|onBlur|onChange|onClick|onDblClick|onDragDrop|onError|onFocus|onKeyDown|onKeyPress|onKeyUp|onLoad|onMouseDown|onMouseOver|onMouseOut|onMouseMove|onMouseUp|onMove|onReset|onResize|onSelect|onSubmit|onUnload)$/', + 'reserved' => '/^(break|continue|do|while|export|for|in|if|else|import|return|label|switch|case|var|with|delete|new|this|typeof|void|abstract|boolean|byte|catch|char|class|const|debugger|default|double|enum|extends|false|final|finally|float|function|implements|goto|instanceof|int|interface|long|native|null|package|private|protected|public|short|static|super|synchronized|throw|throws|transient|true|try|volatile)$/', + ), + 8 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'builtin' => 'builtin', + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +} diff --git a/library/Text_Highlighter/Text/Highlighter/MYSQL.php b/library/Text_Highlighter/Text/Highlighter/MYSQL.php new file mode 100644 index 000000000..bdd74cc8b --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/MYSQL.php @@ -0,0 +1,434 @@ +<?php +/** + * Auto-generated class. MYSQL syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : mysql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. MYSQL syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_MYSQL extends Text_Highlighter +{ + var $_language = 'mysql'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_MYSQL($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/', + 0 => '//', + 1 => '//', + 2 => '/((?i)\\\\.)/', + 3 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/', + 4 => '/((?i)\\\\.)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 5, + 9 => 2, + 10 => 0, + 11 => 0, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 5, + 9 => 2, + 10 => 0, + 11 => 0, + ), + 4 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'comment', + 2 => '', + 3 => '', + 4 => '', + 5 => 'quotes', + 6 => 'brackets', + 7 => 'quotes', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => '', + ), + 3 => + array ( + 0 => 'quotes', + 1 => 'comment', + 2 => '', + 3 => '', + 4 => '', + 5 => 'quotes', + 6 => 'brackets', + 7 => 'quotes', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + ), + 4 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'identifier', + 1 => 'comment', + 2 => 'comment', + 3 => 'identifier', + 4 => 'identifier', + 5 => 'string', + 6 => 'code', + 7 => 'string', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 'special', + ), + 3 => + array ( + 0 => 'identifier', + 1 => 'comment', + 2 => 'comment', + 3 => 'identifier', + 4 => 'identifier', + 5 => 'string', + 6 => 'code', + 7 => 'string', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + ), + 4 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)`/', + 1 => '/(?i)\\*\\//', + 2 => '/(?i)"/', + 3 => '/(?i)\\)/', + 4 => '/(?i)\'/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => 2, + 6 => 3, + 7 => 4, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => -1, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => 2, + 6 => 3, + 7 => 4, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + ), + 4 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => + array ( + 'function' => '/^((?i)abs|acos|adddate|ascii|asin|atan|atan2|avg|benchmark|bin|ceiling|char|coalesce|concat|conv|cos|cot|count|curdate|curtime|database|dayname|dayofmonth|dayofweek|dayofyear|decode|degrees|elt|encode|encrypt|exp|extract|field|floor|format|greatest|hex|hour|if|ifnull|insert|instr|interval|isnull|lcase|least|left|length|locate|log|log10|lower|lpad|ltrim|max|md5|mid|min|minute|mod|month|monthname|now|nullif|oct|ord|password|pi|position|pow|power|prepare|quarter|radians|rand|repeat|replace|reverse|right|round|rpad|rtrim|second|sign|sin|soundex|space|sqrt|std|stddev|strcmp|subdate|substring|sum|sysdate|tan|trim|truncate|ucase|upper|user|version|week|weekday|year)$/', + ), + 4 => + array ( + 'reserved' => '/^((?i)action|add|aggregate|all|alter|after|and|as|asc|avg|avg_row_length|auto_increment|between|bigint|bit|binary|blob|bool|both|by|cascade|case|char|character|change|check|checksum|column|columns|comment|constraint|create|cross|current_date|current_time|current_timestamp|data|database|databases|date|datetime|day|day_hour|day_minute|day_second|dayofmonth|dayofweek|dayofyear|dec|decimal|default|delayed|delay_key_write|delete|desc|describe|distinct|distinctrow|double|drop|end|else|escape|escaped|enclosed|enum|explain|exists|fields|file|first|float|float4|float8|flush|foreign|from|for|full|function|global|grant|grants|group|having|heap|high_priority|hour|hour_minute|hour_second|hosts|identified|ignore|in|index|infile|inner|insert|insert_id|int|integer|interval|int1|int2|int3|int4|int8|into|if|is|isam|join|key|keys|kill|last_insert_id|leading|left|length|like|lines|limit|load|local|lock|logs|long|longblob|longtext|low_priority|max|max_rows|match|mediumblob|mediumtext|mediumint|middleint|min_rows|minute|minute_second|modify|month|monthname|myisam|natural|numeric|no|not|null|on|optimize|option|optionally|or|order|outer|outfile|pack_keys|partial|password|precision|primary|procedure|process|processlist|privileges|read|real|references|reload|regexp|rename|replace|restrict|returns|revoke|rlike|row|rows|second|select|set|show|shutdown|smallint|soname|sql_big_tables|sql_big_selects|sql_low_priority_updates|sql_log_off|sql_log_update|sql_select_limit|sql_small_result|sql_big_result|sql_warnings|straight_join|starting|status|string|table|tables|temporary|terminated|text|then|time|timestamp|tinyblob|tinytext|tinyint|trailing|to|type|use|using|unique|unlock|unsigned|update|usage|values|varchar|variables|varying|varbinary|with|write|when|where|year|year_month|zerofill)$/', + ), + 5 => -1, + 6 => -1, + 7 => -1, + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => + array ( + ), + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => + array ( + 'function' => '/^((?i)abs|acos|adddate|ascii|asin|atan|atan2|avg|benchmark|bin|ceiling|char|coalesce|concat|conv|cos|cot|count|curdate|curtime|database|dayname|dayofmonth|dayofweek|dayofyear|decode|degrees|elt|encode|encrypt|exp|extract|field|floor|format|greatest|hex|hour|if|ifnull|insert|instr|interval|isnull|lcase|least|left|length|locate|log|log10|lower|lpad|ltrim|max|md5|mid|min|minute|mod|month|monthname|now|nullif|oct|ord|password|pi|position|pow|power|prepare|quarter|radians|rand|repeat|replace|reverse|right|round|rpad|rtrim|second|sign|sin|soundex|space|sqrt|std|stddev|strcmp|subdate|substring|sum|sysdate|tan|trim|truncate|ucase|upper|user|version|week|weekday|year)$/', + ), + 4 => + array ( + 'reserved' => '/^((?i)action|add|aggregate|all|alter|after|and|as|asc|avg|avg_row_length|auto_increment|between|bigint|bit|binary|blob|bool|both|by|cascade|case|char|character|change|check|checksum|column|columns|comment|constraint|create|cross|current_date|current_time|current_timestamp|data|database|databases|date|datetime|day|day_hour|day_minute|day_second|dayofmonth|dayofweek|dayofyear|dec|decimal|default|delayed|delay_key_write|delete|desc|describe|distinct|distinctrow|double|drop|end|else|escape|escaped|enclosed|enum|explain|exists|fields|file|first|float|float4|float8|flush|foreign|from|for|full|function|global|grant|grants|group|having|heap|high_priority|hour|hour_minute|hour_second|hosts|identified|ignore|in|index|infile|inner|insert|insert_id|int|integer|interval|int1|int2|int3|int4|int8|into|if|is|isam|join|key|keys|kill|last_insert_id|leading|left|length|like|lines|limit|load|local|lock|logs|long|longblob|longtext|low_priority|max|max_rows|match|mediumblob|mediumtext|mediumint|middleint|min_rows|minute|minute_second|modify|month|monthname|myisam|natural|numeric|no|not|null|on|optimize|option|optionally|or|order|outer|outfile|pack_keys|partial|password|precision|primary|procedure|process|processlist|privileges|read|real|references|reload|regexp|rename|replace|restrict|returns|revoke|rlike|row|rows|second|select|set|show|shutdown|smallint|soname|sql_big_tables|sql_big_selects|sql_low_priority_updates|sql_log_off|sql_log_update|sql_select_limit|sql_small_result|sql_big_result|sql_warnings|straight_join|starting|status|string|table|tables|temporary|terminated|text|then|time|timestamp|tinyblob|tinytext|tinyint|trailing|to|type|use|using|unique|unlock|unsigned|update|usage|values|varchar|variables|varying|varbinary|with|write|when|where|year|year_month|zerofill)$/', + ), + 5 => -1, + 6 => -1, + 7 => -1, + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + ), + 4 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'function' => 'reserved', + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/PERL.php b/library/Text_Highlighter/Text/Highlighter/PERL.php new file mode 100644 index 000000000..277a5ba45 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/PERL.php @@ -0,0 +1,1352 @@ +<?php +/** + * Auto-generated class. PERL syntax highlighting + * + * This highlighter is EXPERIMENTAL, so that it may work incorrectly. + * Most rules were created by Mariusz Jakubowski, and extended by me. + * My knowledge of Perl is poor, and Perl syntax seems too + * complicated to me. + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : perl.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Mariusz 'kg' Jakubowski <kg@alternatywa.info> + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. PERL syntax highlighting + * + * @author Mariusz 'kg' Jakubowski <kg@alternatywa.info> + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_PERL extends Text_Highlighter +{ + var $_language = 'perl'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_PERL($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 0 => '//', + 1 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 2 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|((?i)([a-z1-9_]+)(\\s*=>))|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 3 => '/((?m)^(#!)(.*))|((?m)^=\\w+)|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|([& ](\\w{2,}::)+\\w{2,})|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(&|\\w+)\'[\\w_\']+\\b)|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 4 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/', + 5 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 6 => '/(\\\\\\/)/', + 7 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 8 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 9 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 2, + 6 => 1, + 7 => 9, + 8 => 9, + 9 => 0, + 10 => 8, + 11 => 5, + 12 => 0, + 13 => 0, + 14 => 3, + 15 => 1, + 16 => 1, + 17 => 3, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 2, + 6 => 1, + 7 => 9, + 8 => 9, + 9 => 0, + 10 => 8, + 11 => 5, + 12 => 0, + 13 => 0, + 14 => 3, + 15 => 1, + 16 => 1, + 17 => 3, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + ), + 2 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 2, + 6 => 1, + 7 => 9, + 8 => 9, + 9 => 0, + 10 => 8, + 11 => 5, + 12 => 0, + 13 => 2, + 14 => 0, + 15 => 3, + 16 => 1, + 17 => 1, + 18 => 3, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + 24 => 0, + ), + 3 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 2, + 6 => 1, + 7 => 9, + 8 => 9, + 9 => 0, + 10 => 8, + 11 => 5, + 12 => 0, + 13 => 0, + 14 => 3, + 15 => 1, + 16 => 1, + 17 => 3, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + 22 => 0, + 23 => 0, + ), + 4 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + 5 => + array ( + 0 => 0, + ), + 6 => + array ( + 0 => 0, + ), + 7 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + 8 => + array ( + 0 => 0, + ), + 9 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => '', + 1 => 'comment', + 2 => 'brackets', + 3 => 'brackets', + 4 => 'brackets', + 5 => '', + 6 => '', + 7 => 'quotes', + 8 => 'quotes', + 9 => '', + 10 => '', + 11 => '', + 12 => 'quotes', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => 'quotes', + 20 => 'quotes', + 21 => 'quotes', + 22 => '', + 23 => '', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => '', + 1 => 'comment', + 2 => 'brackets', + 3 => 'brackets', + 4 => 'brackets', + 5 => '', + 6 => '', + 7 => 'quotes', + 8 => 'quotes', + 9 => '', + 10 => '', + 11 => '', + 12 => 'quotes', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => 'quotes', + 20 => 'quotes', + 21 => 'quotes', + 22 => '', + 23 => '', + ), + 2 => + array ( + 0 => '', + 1 => 'comment', + 2 => 'brackets', + 3 => 'brackets', + 4 => 'brackets', + 5 => '', + 6 => '', + 7 => 'quotes', + 8 => 'quotes', + 9 => '', + 10 => '', + 11 => '', + 12 => 'quotes', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => '', + 20 => 'quotes', + 21 => 'quotes', + 22 => 'quotes', + 23 => '', + 24 => '', + ), + 3 => + array ( + 0 => '', + 1 => 'comment', + 2 => 'brackets', + 3 => 'brackets', + 4 => 'brackets', + 5 => '', + 6 => '', + 7 => 'quotes', + 8 => 'quotes', + 9 => '', + 10 => '', + 11 => '', + 12 => 'quotes', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + 18 => '', + 19 => 'quotes', + 20 => 'quotes', + 21 => 'quotes', + 22 => '', + 23 => '', + ), + 4 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 5 => + array ( + 0 => '', + ), + 6 => + array ( + 0 => '', + ), + 7 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 8 => + array ( + 0 => '', + ), + 9 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'special', + 1 => 'comment', + 2 => 'code', + 3 => 'code', + 4 => 'code', + 5 => 'special', + 6 => 'special', + 7 => 'string', + 8 => 'string', + 9 => 'comment', + 10 => 'string', + 11 => 'string', + 12 => 'string', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'var', + 17 => 'var', + 18 => 'var', + 19 => 'string', + 20 => 'string', + 21 => 'string', + 22 => 'identifier', + 23 => 'number', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'special', + 1 => 'comment', + 2 => 'code', + 3 => 'code', + 4 => 'code', + 5 => 'special', + 6 => 'special', + 7 => 'string', + 8 => 'string', + 9 => 'comment', + 10 => 'string', + 11 => 'string', + 12 => 'string', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'var', + 17 => 'var', + 18 => 'var', + 19 => 'string', + 20 => 'string', + 21 => 'string', + 22 => 'identifier', + 23 => 'number', + ), + 2 => + array ( + 0 => 'special', + 1 => 'comment', + 2 => 'code', + 3 => 'code', + 4 => 'code', + 5 => 'special', + 6 => 'special', + 7 => 'string', + 8 => 'string', + 9 => 'comment', + 10 => 'string', + 11 => 'string', + 12 => 'string', + 13 => 'string', + 14 => 'var', + 15 => 'var', + 16 => 'var', + 17 => 'var', + 18 => 'var', + 19 => 'var', + 20 => 'string', + 21 => 'string', + 22 => 'string', + 23 => 'identifier', + 24 => 'number', + ), + 3 => + array ( + 0 => 'special', + 1 => 'comment', + 2 => 'code', + 3 => 'code', + 4 => 'code', + 5 => 'special', + 6 => 'special', + 7 => 'string', + 8 => 'string', + 9 => 'comment', + 10 => 'string', + 11 => 'string', + 12 => 'string', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'var', + 17 => 'var', + 18 => 'var', + 19 => 'string', + 20 => 'string', + 21 => 'string', + 22 => 'identifier', + 23 => 'number', + ), + 4 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + 5 => + array ( + 0 => 'special', + ), + 6 => + array ( + 0 => 'string', + ), + 7 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + 8 => + array ( + 0 => 'special', + ), + 9 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?m)^=cut[^\\n]*/', + 1 => '/\\}/', + 2 => '/\\)/', + 3 => '/\\]/', + 4 => '/%b2%/', + 5 => '/%b2%/', + 6 => '/\\/[cgimosx]*/', + 7 => '/`/', + 8 => '/\'/', + 9 => '/"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => 3, + 5 => -1, + 6 => -1, + 7 => 4, + 8 => 5, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => 6, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => -1, + 18 => -1, + 19 => 7, + 20 => 8, + 21 => 9, + 22 => -1, + 23 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => 3, + 5 => -1, + 6 => -1, + 7 => 4, + 8 => 5, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => 6, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => -1, + 18 => -1, + 19 => 7, + 20 => 8, + 21 => 9, + 22 => -1, + 23 => -1, + ), + 2 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => 3, + 5 => -1, + 6 => -1, + 7 => 4, + 8 => 5, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => 6, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => -1, + 18 => -1, + 19 => -1, + 20 => 7, + 21 => 8, + 22 => 9, + 23 => -1, + 24 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => 3, + 5 => -1, + 6 => -1, + 7 => 4, + 8 => 5, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => 6, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => -1, + 18 => -1, + 19 => 7, + 20 => 8, + 21 => 9, + 22 => -1, + 23 => -1, + ), + 4 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 5 => + array ( + 0 => -1, + ), + 6 => + array ( + 0 => -1, + ), + 7 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 8 => + array ( + 0 => -1, + ), + 9 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => -1, + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => + array ( + ), + 18 => + array ( + ), + 19 => -1, + 20 => -1, + 21 => -1, + 22 => + array ( + 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/', + 'missingreserved' => '/^(new)$/', + 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/', + ), + 23 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => -1, + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => + array ( + ), + 18 => + array ( + ), + 19 => -1, + 20 => -1, + 21 => -1, + 22 => + array ( + 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/', + 'missingreserved' => '/^(new)$/', + 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/', + ), + 23 => + array ( + ), + ), + 2 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => -1, + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => + array ( + ), + 18 => + array ( + ), + 19 => + array ( + ), + 20 => -1, + 21 => -1, + 22 => -1, + 23 => + array ( + 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/', + 'missingreserved' => '/^(new)$/', + 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/', + ), + 24 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => -1, + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => + array ( + ), + 18 => + array ( + ), + 19 => -1, + 20 => -1, + 21 => -1, + 22 => + array ( + 'reserved' => '/^(abs|accept|alarm|atan2|bind|binmode|bless|caller|chdir|chmod|chomp|chop|chown|chr|chroot|close|closedir|connect|continue|cos|crypt|dbmclose|dbmopen|defined|delete|die|do|dump|each|endgrent|endhostent|endnetent|endprotoent|endpwent|endservent|eof|eval|exec|exists|exit|exp|fcntl|fileno|flock|fork|format|formline|getc|getgrent|getgrgid|getgrnam|gethostbyaddr|gethostbyname|gethostent|getlogin|getnetbyaddr|getnetbyname|getnetent|getpeername|getpgrp|getppid|getpriority|getprotobyname|getprotobynumber|getprotoent|getpwent|getpwnam|getpwuid|getservbyname|getservbyport|getservent|getsockname|getsockopt|glob|gmtime|goto|grep|hex|import|index|int|ioctl|join|keys|kill|last|lc|lcfirst|length|link|listen|local|localtime|lock|log|lstat|map|mkdir|msgctl|msgget|msgrcv|msgsnd|my|next|no|oct|open|opendir|ord|our|pack|package|pipe|pop|pos|print|printf|prototype|push|quotemeta|rand|read|readdir|readline|readlink|readpipe|recv|redo|ref|rename|require|reset|return|reverse|rewinddir|rindex|rmdir|scalar|seek|seekdir|select|semctl|semget|semop|send|setgrent|sethostent|setnetent|setpgrp|setpriority|setprotoent|setpwent|setservent|setsockopt|shift|shmctl|shmget|shmread|shmwrite|shutdown|sin|sleep|socket|socketpair|sort|splice|split|sprintf|sqrt|srand|stat|study|sub|substr|symlink|syscall|sysopen|sysread|sysseek|system|syswrite|tell|telldir|tie|tied|time|times|truncate|uc|ucfirst|umask|undef|unlink|unpack|unshift|untie|use|utime|values|vec|wait|waitpid|wantarray|warn|write|y)$/', + 'missingreserved' => '/^(new)$/', + 'flowcontrol' => '/^(if|else|elsif|while|unless|for|foreach|until|do|continue|not|or|and|eq|ne|gt|lt)$/', + ), + 23 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + ), + 7 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + 9 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 11 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 18 => NULL, + 19 => NULL, + 20 => NULL, + 21 => NULL, + 22 => NULL, + 23 => NULL, + ), + 2 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 11 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 12 => NULL, + 13 => + array ( + 1 => 'string', + 2 => 'code', + ), + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => NULL, + 18 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 19 => NULL, + 20 => NULL, + 21 => NULL, + 22 => NULL, + 23 => NULL, + 24 => NULL, + ), + 3 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 11 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 18 => NULL, + 19 => NULL, + 20 => NULL, + 21 => NULL, + 22 => NULL, + 23 => NULL, + ), + 4 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + 6 => + array ( + 0 => NULL, + ), + 7 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + 9 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => true, + 8 => true, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => true, + 8 => true, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => true, + 8 => true, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + 24 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => true, + 8 => true, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + 22 => false, + 23 => false, + ), + 4 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 5 => + array ( + 0 => false, + ), + 6 => + array ( + 0 => false, + ), + 7 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 8 => + array ( + 0 => false, + ), + 9 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'missingreserved' => 'reserved', + 'flowcontrol' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/PHP.php b/library/Text_Highlighter/Text/Highlighter/PHP.php new file mode 100644 index 000000000..1ee2e6b90 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/PHP.php @@ -0,0 +1,1107 @@ +<?php +/** + * Auto-generated class. PHP syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : php.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. PHP syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_PHP extends Text_Highlighter +{ + var $_language = 'php'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_PHP($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\<\\?(php|=)?)/', + 0 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 1 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)\\?\\>)|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 2 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 3 => '/((?i)\\{)|((?i)\\()|((?i)\\[)|((?i)\\/\\*)|((?i)")|((?i)`)|((?mi)\\<\\<\\<[\\x20\\x09]*(\\w+)$)|((?i)\')|((?i)(#|\\/\\/))|((?i)[a-z_]\\w*)|((?i)\\((array|int|integer|string|bool|boolean|object|float|double)\\))|((?i)0[xX][\\da-f]+)|((?i)\\$[a-z_]\\w*)|((?i)\\d\\d*|\\b0\\b)|((?i)0[0-7]+)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))/', + 4 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/', + 5 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/', + 6 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/', + 7 => '/((?i)\\\\[\\\\"\'`tnr\\$\\{])|((?i)\\{\\$[a-z_].*\\})|((?i)\\$[a-z_]\\w*)/', + 8 => '/((?i)\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 9 => '/((?i)\\s@\\w+\\s)|((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\bnote:)|((?i)\\$\\w+\\s*:.*\\$)/', + 10 => '//', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 1, + ), + 0 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 1, + 7 => 0, + 8 => 1, + 9 => 0, + 10 => 1, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 2, + 16 => 5, + ), + 1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 1, + 7 => 0, + 8 => 1, + 9 => 0, + 10 => 1, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 2, + 17 => 5, + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 1, + 7 => 0, + 8 => 1, + 9 => 0, + 10 => 1, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 2, + 16 => 5, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 1, + 7 => 0, + 8 => 1, + 9 => 0, + 10 => 1, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 2, + 16 => 5, + ), + 4 => + array ( + 0 => 0, + 1 => 3, + 2 => 1, + 3 => 0, + 4 => 0, + ), + 5 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 7 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 8 => + array ( + 0 => 0, + ), + 9 => + array ( + 0 => 0, + 1 => 3, + 2 => 1, + 3 => 0, + 4 => 0, + ), + 10 => + array ( + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'inlinetags', + ), + 0 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'quotes', + 7 => 'quotes', + 8 => 'comment', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + ), + 1 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'quotes', + 7 => 'quotes', + 8 => 'comment', + 9 => '', + 10 => '', + 11 => 'inlinetags', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => '', + ), + 2 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'quotes', + 7 => 'quotes', + 8 => 'comment', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + ), + 3 => + array ( + 0 => 'brackets', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'comment', + 4 => 'quotes', + 5 => 'quotes', + 6 => 'quotes', + 7 => 'quotes', + 8 => 'comment', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + ), + 4 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 5 => + array ( + 0 => '', + 1 => '', + 2 => '', + ), + 6 => + array ( + 0 => '', + 1 => '', + 2 => '', + ), + 7 => + array ( + 0 => '', + 1 => '', + 2 => '', + ), + 8 => + array ( + 0 => '', + ), + 9 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 10 => + array ( + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'code', + ), + 0 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'string', + 7 => 'string', + 8 => 'comment', + 9 => 'identifier', + 10 => 'reserved', + 11 => 'number', + 12 => 'var', + 13 => 'number', + 14 => 'number', + 15 => 'number', + 16 => 'number', + ), + 1 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'string', + 7 => 'string', + 8 => 'comment', + 9 => 'identifier', + 10 => 'reserved', + 11 => 'default', + 12 => 'number', + 13 => 'var', + 14 => 'number', + 15 => 'number', + 16 => 'number', + 17 => 'number', + ), + 2 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'string', + 7 => 'string', + 8 => 'comment', + 9 => 'identifier', + 10 => 'reserved', + 11 => 'number', + 12 => 'var', + 13 => 'number', + 14 => 'number', + 15 => 'number', + 16 => 'number', + ), + 3 => + array ( + 0 => 'code', + 1 => 'code', + 2 => 'code', + 3 => 'comment', + 4 => 'string', + 5 => 'string', + 6 => 'string', + 7 => 'string', + 8 => 'comment', + 9 => 'identifier', + 10 => 'reserved', + 11 => 'number', + 12 => 'var', + 13 => 'number', + 14 => 'number', + 15 => 'number', + 16 => 'number', + ), + 4 => + array ( + 0 => 'inlinedoc', + 1 => 'url', + 2 => 'url', + 3 => 'inlinedoc', + 4 => 'inlinedoc', + ), + 5 => + array ( + 0 => 'special', + 1 => 'var', + 2 => 'var', + ), + 6 => + array ( + 0 => 'special', + 1 => 'var', + 2 => 'var', + ), + 7 => + array ( + 0 => 'special', + 1 => 'var', + 2 => 'var', + ), + 8 => + array ( + 0 => 'special', + ), + 9 => + array ( + 0 => 'inlinedoc', + 1 => 'url', + 2 => 'url', + 3 => 'inlinedoc', + 4 => 'inlinedoc', + ), + 10 => + array ( + ), + ); + $this->_end = array ( + 0 => '/(?i)\\?\\>/', + 1 => '/(?i)\\}/', + 2 => '/(?i)\\)/', + 3 => '/(?i)\\]/', + 4 => '/(?i)\\*\\//', + 5 => '/(?i)"/', + 6 => '/(?i)`/', + 7 => '/(?mi)^%1%;?$/', + 8 => '/(?i)\'/', + 9 => '/(?mi)$|(?=\\?\\>)/', + 10 => '/(?i)\\<\\?(php|=)?/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + ), + 0 => + array ( + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, + 4 => 5, + 5 => 6, + 6 => 7, + 7 => 8, + 8 => 9, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + ), + 1 => + array ( + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, + 4 => 5, + 5 => 6, + 6 => 7, + 7 => 8, + 8 => 9, + 9 => -1, + 10 => -1, + 11 => 10, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => -1, + ), + 2 => + array ( + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, + 4 => 5, + 5 => 6, + 6 => 7, + 7 => 8, + 8 => 9, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + ), + 3 => + array ( + 0 => 1, + 1 => 2, + 2 => 3, + 3 => 4, + 4 => 5, + 5 => 6, + 6 => 7, + 7 => 8, + 8 => 9, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + ), + 4 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + ), + 5 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + ), + 7 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + ), + 8 => + array ( + 0 => -1, + ), + 9 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + ), + 10 => + array ( + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + ), + 0 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => + array ( + 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/', + 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + ), + 1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => + array ( + 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/', + 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/', + ), + 10 => + array ( + ), + 11 => -1, + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => + array ( + ), + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => + array ( + 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/', + 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => + array ( + 'constants' => '/^(DIRECTORY_SEPARATOR|PATH_SEPARATOR)$/', + 'reserved' => '/^((?i)echo|foreach|else|if|elseif|for|as|while|break|continue|class|const|declare|switch|case|endfor|endswitch|endforeach|endif|array|default|do|enddeclare|eval|exit|die|extends|function|global|include|include_once|require|require_once|isset|empty|list|new|static|unset|var|return|try|catch|final|throw|public|private|protected|abstract|interface|implements|define|__file__|__line__|__class__|__method__|__function__|null|true|false|and|or|xor)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + ), + 7 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + 9 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + 4 => + array ( + ), + ), + 10 => + array ( + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + ), + 1 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => NULL, + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + ), + 4 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 7 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + 9 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + ), + 10 => + array ( + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + ), + 4 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 5 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 7 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 8 => + array ( + 0 => false, + ), + 9 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + ), + 10 => + array ( + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'constants' => 'reserved', + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/PYTHON.php b/library/Text_Highlighter/Text/Highlighter/PYTHON.php new file mode 100644 index 000000000..ed4f59dde --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/PYTHON.php @@ -0,0 +1,647 @@ +<?php +/** + * Auto-generated class. PYTHON syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : python.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. PYTHON syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_PYTHON extends Text_Highlighter +{ + var $_language = 'python'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_PYTHON($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/', + 0 => '/((?i)\\\\.)/', + 1 => '/((?i)\\\\.)/', + 2 => '/((?i)\\\\.)/', + 3 => '/((?i)\\\\.)/', + 4 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/', + 5 => '/((?i)\'\'\')|((?i)""")|((?i)")|((?i)\')|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*(?=\\s*\\())|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)((\\d*\\.\\d+)|(\\d+\\.\\d*)|(\\d+))j)|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)|((?i)0[0-7]+l?)|((?i)#.+)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 5, + 9 => 4, + 10 => 2, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + ), + 0 => + array ( + 0 => 0, + ), + 1 => + array ( + 0 => 0, + ), + 2 => + array ( + 0 => 0, + ), + 3 => + array ( + 0 => 0, + ), + 4 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 5, + 9 => 4, + 10 => 2, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + ), + 5 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 0, + 8 => 5, + 9 => 4, + 10 => 2, + 11 => 0, + 12 => 0, + 13 => 0, + 14 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'brackets', + 5 => 'brackets', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + ), + 0 => + array ( + 0 => '', + ), + 1 => + array ( + 0 => '', + ), + 2 => + array ( + 0 => '', + ), + 3 => + array ( + 0 => '', + ), + 4 => + array ( + 0 => 'quotes', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'brackets', + 5 => 'brackets', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + ), + 5 => + array ( + 0 => 'quotes', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'brackets', + 5 => 'brackets', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'string', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'code', + 5 => 'code', + 6 => 'identifier', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'comment', + ), + 0 => + array ( + 0 => 'special', + ), + 1 => + array ( + 0 => 'special', + ), + 2 => + array ( + 0 => 'special', + ), + 3 => + array ( + 0 => 'special', + ), + 4 => + array ( + 0 => 'string', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'code', + 5 => 'code', + 6 => 'identifier', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'comment', + ), + 5 => + array ( + 0 => 'string', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'code', + 5 => 'code', + 6 => 'identifier', + 7 => 'identifier', + 8 => 'number', + 9 => 'number', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'comment', + ), + ); + $this->_end = array ( + 0 => '/(?i)\'\'\'/', + 1 => '/(?i)"""/', + 2 => '/(?i)"/', + 3 => '/(?i)\'/', + 4 => '/(?i)\\)/', + 5 => '/(?i)\\]/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + ), + 0 => + array ( + 0 => -1, + ), + 1 => + array ( + 0 => -1, + ), + 2 => + array ( + 0 => -1, + ), + 3 => + array ( + 0 => -1, + ), + 4 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + ), + 5 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => 5, + 6 => -1, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => + array ( + 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/', + ), + 7 => + array ( + 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + ), + 0 => + array ( + 0 => + array ( + ), + ), + 1 => + array ( + 0 => + array ( + ), + ), + 2 => + array ( + 0 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + ), + 4 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => + array ( + 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/', + ), + 7 => + array ( + 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + ), + 5 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => -1, + 6 => + array ( + 'builtin' => '/^(__import__|abs|apply|basestring|bool|buffer|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|min|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|round|setattr|slice|staticmethod|sum|super|str|tuple|type|unichr|unicode|vars|xrange|zip)$/', + ), + 7 => + array ( + 'reserved' => '/^(and|del|for|is|raise|assert|elif|from|lambda|return|break|else|global|not|try|class|except|if|or|while|continue|exec|import|pass|yield|def|finally|in|print|False|True|None|NotImplemented|Ellipsis|Exception|SystemExit|StopIteration|StandardError|KeyboardInterrupt|ImportError|EnvironmentError|IOError|OSError|WindowsError|EOFError|RuntimeError|NotImplementedError|NameError|UnboundLocalError|AttributeError|SyntaxError|IndentationError|TabError|TypeError|AssertionError|LookupError|IndexError|KeyError|ArithmeticError|OverflowError|ZeroDivisionError|FloatingPointError|ValueError|UnicodeError|UnicodeEncodeError|UnicodeDecodeError|UnicodeTranslateError|ReferenceError|SystemError|MemoryError|Warning|UserWarning|DeprecationWarning|PendingDeprecationWarning|SyntaxWarning|OverflowWarning|RuntimeWarning|FutureWarning)$/', + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + ), + 1 => + array ( + 0 => NULL, + ), + 2 => + array ( + 0 => NULL, + ), + 3 => + array ( + 0 => NULL, + ), + 4 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + ), + 0 => + array ( + 0 => false, + ), + 1 => + array ( + 0 => false, + ), + 2 => + array ( + 0 => false, + ), + 3 => + array ( + 0 => false, + ), + 4 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + ), + 5 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'builtin' => 'builtin', + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/RUBY.php b/library/Text_Highlighter/Text/Highlighter/RUBY.php new file mode 100644 index 000000000..ce20e9f2e --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/RUBY.php @@ -0,0 +1,825 @@ +<?php +/** + * Auto-generated class. RUBY syntax highlighting + * + * + * FIXME: While this construction : s.split /z/i + * is valid, regular expression is not recognized as such + * (/ folowing an identifier or number is not recognized as + * start of RE), making highlighting improper + * + * %q(a (nested) string) does not get highlighted correctly + * + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : ruby.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. RUBY syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_RUBY extends Text_Highlighter +{ + var $_language = 'ruby'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_RUBY($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/', + 0 => '//', + 1 => '/((?i)\\\\.)/', + 2 => '/((?i)\\\\.)/', + 3 => '/((?i)\\\\.)/', + 4 => '/((?i)\\\\.)/', + 5 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/', + 6 => '/((?mi)^__END__$)|((?i)")|((?i)%[Qx]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\')|((?i)%[wq]([!"#\\$%&\'+\\-*.\\/:;=?@^`|~{<\\[(]))|((?i)\\$(\\W|\\w+))|((?ii)@@?[_a-z][\\d_a-z]*)|((?i)\\()|((?i)\\[)|((?i)[a-z_]\\w*)|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)0[xX][\\da-f]+l?)|((?i)\\d+l?|\\b0l?\\b)|((?i)0[0-7]+l?)|((?mi)^=begin$)|((?i)#)|((?i)\\s*\\/)/', + 7 => '/((?i)\\$\\w+\\s*:.+\\$)/', + 8 => '/((?i)\\$\\w+\\s*:.+\\$)/', + 9 => '/((?i)\\\\.)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 1, + 5 => 1, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 5, + 11 => 2, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 0, + 17 => 0, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 0, + ), + 2 => + array ( + 0 => 0, + ), + 3 => + array ( + 0 => 0, + ), + 4 => + array ( + 0 => 0, + ), + 5 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 1, + 5 => 1, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 5, + 11 => 2, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 0, + 17 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 1, + 5 => 1, + 6 => 0, + 7 => 0, + 8 => 0, + 9 => 0, + 10 => 5, + 11 => 2, + 12 => 0, + 13 => 0, + 14 => 0, + 15 => 0, + 16 => 0, + 17 => 0, + ), + 7 => + array ( + 0 => 0, + ), + 8 => + array ( + 0 => 0, + ), + 9 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'reserved', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => 'brackets', + 8 => 'brackets', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => 'comment', + 16 => 'comment', + 17 => 'quotes', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => '', + ), + 2 => + array ( + 0 => '', + ), + 3 => + array ( + 0 => '', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => 'reserved', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => 'brackets', + 8 => 'brackets', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => 'comment', + 16 => 'comment', + 17 => 'quotes', + ), + 6 => + array ( + 0 => 'reserved', + 1 => 'quotes', + 2 => 'quotes', + 3 => 'quotes', + 4 => 'quotes', + 5 => '', + 6 => '', + 7 => 'brackets', + 8 => 'brackets', + 9 => '', + 10 => '', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => 'comment', + 16 => 'comment', + 17 => 'quotes', + ), + 7 => + array ( + 0 => '', + ), + 8 => + array ( + 0 => '', + ), + 9 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'string', + 5 => 'var', + 6 => 'var', + 7 => 'code', + 8 => 'code', + 9 => 'identifier', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'number', + 15 => 'comment', + 16 => 'comment', + 17 => 'string', + ), + 0 => + array ( + ), + 1 => + array ( + 0 => 'special', + ), + 2 => + array ( + 0 => 'special', + ), + 3 => + array ( + 0 => 'special', + ), + 4 => + array ( + 0 => 'special', + ), + 5 => + array ( + 0 => 'comment', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'string', + 5 => 'var', + 6 => 'var', + 7 => 'code', + 8 => 'code', + 9 => 'identifier', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'number', + 15 => 'comment', + 16 => 'comment', + 17 => 'string', + ), + 6 => + array ( + 0 => 'comment', + 1 => 'string', + 2 => 'string', + 3 => 'string', + 4 => 'string', + 5 => 'var', + 6 => 'var', + 7 => 'code', + 8 => 'code', + 9 => 'identifier', + 10 => 'number', + 11 => 'number', + 12 => 'number', + 13 => 'number', + 14 => 'number', + 15 => 'comment', + 16 => 'comment', + 17 => 'string', + ), + 7 => + array ( + 0 => 'inlinedoc', + ), + 8 => + array ( + 0 => 'inlinedoc', + ), + 9 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)$/', + 1 => '/(?i)"/', + 2 => '/(?i)%b1%/', + 3 => '/(?i)\'/', + 4 => '/(?i)%b1%/', + 5 => '/(?i)\\)/', + 6 => '/(?i)\\]/', + 7 => '/(?mi)^=end$/', + 8 => '/(?mi)$/', + 9 => '/(?i)\\/[iomx]*/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => 5, + 8 => 6, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => 7, + 16 => 8, + 17 => 9, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => -1, + ), + 2 => + array ( + 0 => -1, + ), + 3 => + array ( + 0 => -1, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => 5, + 8 => 6, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => 7, + 16 => 8, + 17 => 9, + ), + 6 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => 3, + 4 => 4, + 5 => -1, + 6 => -1, + 7 => 5, + 8 => 6, + 9 => -1, + 10 => -1, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => 7, + 16 => 8, + 17 => 9, + ), + 7 => + array ( + 0 => -1, + ), + 8 => + array ( + 0 => -1, + ), + 9 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => -1, + 16 => -1, + 17 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => + array ( + ), + ), + 2 => + array ( + 0 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => -1, + 16 => -1, + 17 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + 4 => -1, + 5 => + array ( + ), + 6 => + array ( + ), + 7 => -1, + 8 => -1, + 9 => + array ( + 'reserved' => '/^(__FILE__|require|and|def|end|in|or|self|unless|__LINE__|begin|defined?|ensure|module|redo|super|until|BEGIN|break|do|false|next|rescue|then|when|END|case|else|for|nil|retry|true|while|alias|module_function|private|public|protected|attr_reader|attr_writer|attr_accessor|class|elsif|if|not|return|undef|yield)$/', + ), + 10 => + array ( + ), + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => -1, + 16 => -1, + 17 => -1, + ), + 7 => + array ( + 0 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + ), + 9 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + 0 => NULL, + ), + 2 => + array ( + 0 => NULL, + ), + 3 => + array ( + 0 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => NULL, + 16 => NULL, + 17 => NULL, + ), + 7 => + array ( + 0 => NULL, + ), + 8 => + array ( + 0 => NULL, + ), + 9 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => true, + 3 => false, + 4 => true, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + ), + 0 => + array ( + ), + 1 => + array ( + 0 => false, + ), + 2 => + array ( + 0 => false, + ), + 3 => + array ( + 0 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + 1 => false, + 2 => true, + 3 => false, + 4 => true, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => true, + 3 => false, + 4 => true, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + ), + 7 => + array ( + 0 => false, + ), + 8 => + array ( + 0 => false, + ), + 9 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer.php b/library/Text_Highlighter/Text/Highlighter/Renderer.php new file mode 100644 index 000000000..cb8993ff8 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer.php @@ -0,0 +1,164 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * Abstract base class for Highlighter renderers + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * Abstract base class for Highlighter renderers + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + * @abstract + */ + +class Text_Highlighter_Renderer +{ + /** + * Renderer options + * + * @var array + * @access protected + */ + var $_options = array(); + + /** + * Current language + * + * @var string + * @access protected + */ + var $_language = ''; + + /** + * Constructor + * + * @access public + * + * @param array $options Rendering options. Renderer-specific. + */ + function __construct($options = array()) + { + $this->_options = $options; + } + + /** + * PHP4 compatable constructor + * + * @access public + * + * @param array $options Rendering options. Renderer-specific. + */ + function Text_Highlighter_Renderer($options = array()) + { + $this->__construct($options); + } + + /** + * Resets renderer state + * + * @access public + * + * @param array $options Rendering options. Renderer-specific. + */ + function reset() + { + return; + } + + /** + * Preprocesses code + * + * @access public + * + * @param string $str Code to preprocess + * @return string Preprocessed code + */ + function preprocess($str) + { + return $str; + } + + /** + * Accepts next token + * + * @abstract + * @access public + * + * @param string $class Token class + * @param string $content Token content + */ + function acceptToken($class, $content) + { + return; + } + + /** + * Signals that no more tokens are available + * + * @access public + * + */ + function finalize() + { + return; + } + + /** + * Get generated output + * + * @abstract + * @return mixed Renderer-specific + * @access public + * + */ + function getOutput() + { + return; + } + + /** + * Set current language + * + * @abstract + * @return void + * @access public + * + */ + function setCurrentLanguage($lang) + { + $this->_language = $lang; + } + +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/Array.php b/library/Text_Highlighter/Text/Highlighter/Renderer/Array.php new file mode 100644 index 000000000..fd238a4d1 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/Array.php @@ -0,0 +1,200 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * Array renderer. + * + * Produces an array that contains class names and content pairs. + * The array can be enumerated or associative. Associative means + * <code>class => content</code> pairs. + * Based on the HTML renderer by Andrey Demenev. + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; + +/** + * Array renderer, based on Andrey Demenev's HTML renderer. + * + * In addition to the options supported by the HTML renderer, + * the following options were also introduced: + * <ul><li>htmlspecialchars - whether or not htmlspecialchars() will + * be called on the content, default TRUE</li> + * <li>enumerated - type of array produced, default FALSE, + * meaning associative array</li> + * </ul> + * + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.5.0 + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_Array extends Text_Highlighter_Renderer +{ + + /**#@+ + * @access private + */ + + /** + * Tab size + * + * @var integer + */ + var $_tabsize = 4; + + /** + * Should htmlentities() will be called + * + * @var boolean + */ + var $_htmlspecialchars = true; + + /** + * Enumerated or associative array + * + * @var integer + */ + var $_enumerated = false; + + /** + * Array containing highlighting rules + * + * @var array + */ + var $_output = array(); + + /**#@-*/ + + /** + * Preprocesses code + * + * @access public + * + * @param string $str Code to preprocess + * @return string Preprocessed code + */ + function preprocess($str) + { + // normalize whitespace and tabs + $str = str_replace("\r\n","\n", $str); + $str = str_replace("\r","\n", $str); + // some browsers refuse to display empty lines + $str = preg_replace('~^$~m'," ", $str); + $str = str_replace("\t",str_repeat(' ', $this->_tabsize), $str); + return rtrim($str); + } + + + /** + * Resets renderer state + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + * + * @access protected + */ + function reset() + { + $this->_output = array(); + $this->_lastClass = 'default'; + if (isset($this->_options['tabsize'])) { + $this->_tabsize = $this->_options['tabsize']; + } + if (isset($this->_options['htmlspecialchars'])) { + $this->_htmlspecialchars = $this->_options['htmlspecialchars']; + } + if (isset($this->_options['enumerated'])) { + $this->_enumerated = $this->_options['enumerated']; + } + } + + + + /** + * Accepts next token + * + * @abstract + * @access public + * @param string $class Token class + * @param string $content Token content + */ + function acceptToken($class, $content) + { + + + $theClass = $this->_getFullClassName($class); + if ($this->_htmlspecialchars) { + $content = htmlspecialchars($content); + } + if ($this->_enumerated) { + $this->_output[] = array($class, $content); + } else { + $this->_output[][$class] = $content; + } + $this->_lastClass = $class; + + } + + + /** + * Given a CSS class name, returns the class name + * with language name prepended, if necessary + * + * @access private + * + * @param string $class Token class + */ + function _getFullClassName($class) + { + if (!empty($this->_options['use_language'])) { + $theClass = $this->_language . '-' . $class; + } else { + $theClass = $class; + } + return $theClass; + } + + /** + * Get generated output + * + * @abstract + * @return array Highlighted code as an array + * @access public + */ + function getOutput() + { + return $this->_output; + } +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?>
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/BB.php b/library/Text_Highlighter/Text/Highlighter/Renderer/BB.php new file mode 100644 index 000000000..abd77cfd8 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/BB.php @@ -0,0 +1,238 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * BB code renderer. + * + * This BB renderer produces BB code, ready to be pasted in bulletin boards and + * other applications that accept BB code. Based on the HTML renderer by Andrey Demenev. + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @copyright 2005 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; + +/** + * BB code renderer, based on Andrey Demenev's HTML renderer. + * + * Elements of $options argument of constructor (each being optional): + * + * - 'numbers' - Line numbering TRUE or FALSE + * - 'tabsize' - Tab size, default is 4 + * - 'bb_tags' - An array containing three BB tags, see below + * - 'tag_brackets' - An array that conains opening and closing tags, [ and ] + * - 'colors' - An array with all the colors to be used for highlighting + * + * The default BB tags are: + * - 'color' => 'color' + * - 'list' => 'list' + * - 'list_item' => '*' + * + * The default colors for the highlighter are: + * - 'default' => 'Black', + * - 'code' => 'Gray', + * - 'brackets' => 'Olive', + * - 'comment' => 'Orange', + * - 'mlcomment' => 'Orange', + * - 'quotes' => 'Darkred', + * - 'string' => 'Red', + * - 'identifier' => 'Blue', + * - 'builtin' => 'Teal', + * - 'reserved' => 'Green', + * - 'inlinedoc' => 'Blue', + * - 'var' => 'Darkblue', + * - 'url' => 'Blue', + * - 'special' => 'Navy', + * - 'number' => 'Maroon', + * - 'inlinetags' => 'Blue', + * + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 20045 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.5.0 + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_BB extends Text_Highlighter_Renderer_Array +{ + + /**#@+ + * @access private + */ + + /** + * Line numbering - will use the specified BB tag for listings + * + * @var boolean + */ + var $_numbers = false; + + /** + * BB tags to be used + * + * @var array + */ + var $_bb_tags = array ( + 'color' => 'color', + 'list' => 'list', + 'list_item' => '*', + 'code' => 'code', + ); + + /** + * BB brackets - [ and ] + * + * @var array + */ + var $_tag_brackets = array ('start' => '[', 'end' => ']'); + + /** + * Colors map + * + * @var boolean + */ + var $_colors = array( + 'default' => 'Black', + 'code' => 'Gray', + 'brackets' => 'Olive', + 'comment' => 'Orange', + 'mlcomment' => 'Orange', + 'quotes' => 'Darkred', + 'string' => 'Red', + 'identifier' => 'Blue', + 'builtin' => 'Teal', + 'reserved' => 'Green', + 'inlinedoc' => 'Blue', + 'var' => 'Darkblue', + 'url' => 'Blue', + 'special' => 'Navy', + 'number' => 'Maroon', + 'inlinetags' => 'Blue', + ); + + /**#@-*/ + + /** + * Resets renderer state + * + * @access protected + * + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + */ + function reset() + { + parent::reset(); + if (isset($this->_options['numbers'])) { + $this->_numbers = $this->_options['numbers']; + } + if (isset($this->_options['bb_tags'])) { + $this->_bb_tags = array_merge($this->_bb_tags, $this->_options['bb_tags']); + } + if (isset($this->_options['tag_brackets'])) { + $this->_tag_brackets = array_merge($this->_tag_brackets, $this->_options['tag_brackets']); + } + if (isset($this->_options['colors'])) { + $this->_colors = array_merge($this->_colors, $this->_options['colors']); + } + } + + + /** + * Signals that no more tokens are available + * + * @abstract + * @access public + * + */ + function finalize() + { + + // get parent's output + parent::finalize(); + $output = parent::getOutput(); + + $bb_output = ''; + + $color_start = $this->_tag_brackets['start'] . $this->_bb_tags['color'] . '=%s' . $this->_tag_brackets['end']; + $color_end = $this->_tag_brackets['start'] . '/' . $this->_bb_tags['color'] . $this->_tag_brackets['end']; + + // loop through each class=>content pair + foreach ($output AS $token) { + + if ($this->_enumerated) { + $class = $token[0]; + $content = $token[1]; + } else { + $key = key($token); + $class = $key; + $content = $token[$key]; + } + + $iswhitespace = ctype_space($content); + if (!$iswhitespace && !empty($this->_colors[$class])) { + $bb_output .= sprintf($color_start, $this->_colors[$class]); + $bb_output .= $content; + $bb_output .= $color_end; + } else { + $bb_output .= $content; + } + } + + if ($this->_numbers) { + + $item_tag = $this->_tag_brackets['start'] . + $this->_bb_tags['list_item'] . + $this->_tag_brackets['end']; + $this->_output = $item_tag . str_replace("\n", "\n". $item_tag .' ', $bb_output); + $this->_output = $this->_tag_brackets['start'] . + $this->_bb_tags['list'] . + $this->_tag_brackets['end'] . + $this->_output . + $this->_tag_brackets['start'] . + '/'. + $this->_bb_tags['list'] . + $this->_tag_brackets['end'] + ; + } else { + $this->_output = $this->_tag_brackets['start'] . + $this->_bb_tags['code'] . + $this->_tag_brackets['end'] . + $bb_output . + $this->_tag_brackets['start'] . + '/' . + $this->_bb_tags['code'] . + $this->_tag_brackets['end']; + } + } + +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/Console.php b/library/Text_Highlighter/Text/Highlighter/Renderer/Console.php new file mode 100644 index 000000000..d7b1fba88 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/Console.php @@ -0,0 +1,208 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * Console renderer + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; + +define ('HL_CONSOLE_DEFCOLOR', "\033[0m"); + +/** + * Console renderer + * + * Suitable for displaying text on color-capable terminals, directly + * or trough less -r + * + * Elements of $options argument of constructor (each being optional): + * + * - 'numbers' - whether to add line numbers + * - 'tabsize' - Tab size + * - 'colors' - additional colors + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_Console extends Text_Highlighter_Renderer +{ + + /**#@+ + * @access private + */ + + /** + * class of last outputted text chunk + * + * @var string + */ + var $_lastClass; + + /** + * Line numbering + * + * @var boolean + */ + var $_numbers = false; + + /** + * Tab size + * + * @var integer + */ + var $_tabsize = 4; + + /** + * Highlighted code + * + * @var string + */ + var $_output = ''; + + /**#@-*/ + + var $_colors = array(); + + var $_defColors = array( + 'default' => "\033[0m", + 'inlinetags' => "\033[31m", + 'brackets' => "\033[36m", + 'quotes' => "\033[34m", + 'inlinedoc' => "\033[34m", + 'var' => "\033[1m", + 'types' => "\033[32m", + 'number' => "\033[32m", + 'string' => "\033[31m", + 'reserved' => "\033[35m", + 'comment' => "\033[33m", + 'mlcomment' => "\033[33m", + ); + + function preprocess($str) + { + // normalize whitespace and tabs + $str = str_replace("\r\n","\n", $str); + $str = str_replace("\t",str_repeat(' ', $this->_tabsize), $str); + return rtrim($str); + } + + + /** + * Resets renderer state + * + * @access protected + * + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + */ + function reset() + { + $this->_lastClass = ''; + if (isset($this->_options['numbers'])) { + $this->_numbers = (bool)$this->_options['numbers']; + } else { + $this->_numbers = false; + } + if (isset($this->_options['tabsize'])) { + $this->_tabsize = $this->_options['tabsize']; + } else { + $this->_tabsize = 4; + } + if (isset($this->_options['colors'])) { + $this->_colors = array_merge($this->_defColors, $this->_options['colors']); + } else { + $this->_colors = $this->_defColors; + } + $this->_output = ''; + } + + + + /** + * Accepts next token + * + * @access public + * + * @param string $class Token class + * @param string $content Token content + */ + function acceptToken($class, $content) + { + if (isset($this->_colors[$class])) { + $color = $this->_colors[$class]; + } else { + $color = $this->_colors['default']; + } + if ($this->_lastClass != $class) { + $this->_output .= $color; + } + $content = str_replace("\n", $this->_colors['default'] . "\n" . $color, $content); + $content .= $this->_colors['default']; + $this->_output .= $content; + } + + /** + * Signals that no more tokens are available + * + * @access public + * + */ + function finalize() + { + if ($this->_numbers) { + $nlines = substr_count($this->_output, "\n") + 1; + $len = strlen($nlines); + $i = 1; + $this->_output = preg_replace('~^~em', '" " . str_pad($i++, $len, " ", STR_PAD_LEFT) . ": "', $this->_output); + } + $this->_output .= HL_CONSOLE_DEFCOLOR . "\n"; + } + + /** + * Get generated output + * + * @return string Highlighted code + * @access public + * + */ + function getOutput() + { + return $this->_output; + } +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/Html.php b/library/Text_Highlighter/Text/Highlighter/Renderer/Html.php new file mode 100644 index 000000000..5d6e56ae1 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/Html.php @@ -0,0 +1,465 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * HTML renderer + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; +require_once 'Text/Highlighter/Renderer/Array.php'; + +// BC trick : only define constants if Text/Highlighter.php +// is not yet included +if (!defined('HL_NUMBERS_LI')) { + /**#@+ + * Constant for use with $options['numbers'] + */ + /** + * use numbered list, deprecated, use HL_NUMBERS_OL instaed + * @deprecated + */ + define ('HL_NUMBERS_LI' , 1); + /** + * Use 2-column table with line numbers in left column and code in right column. + */ + define ('HL_NUMBERS_TABLE' , 2); + /**#@-*/ +} + + +/**#@+ + * Constant for use with $options['numbers'] + */ +/** + * Use numbered list + */ +define ('HL_NUMBERS_OL', 1); +/** + * Use non-numbered list + */ +define ('HL_NUMBERS_UL', 3); +/**#@-*/ + + +/** + * HTML renderer + * + * Elements of $options argument of constructor (each being optional): + * + * - 'numbers' - Line numbering style 0 or {@link HL_NUMBERS_TABLE} + * or {@link HL_NUMBERS_UL} or {@link HL_NUMBERS_OL} + * - 'numbers_start' - starting number for numbered lines + * - 'tabsize' - Tab size + * - 'style_map' - Mapping of keywords to formatting rules using inline styles + * - 'class_map' - Mapping of keywords to formatting rules using class names + * - 'doclinks' - array that has keys "url", "target" and "elements", used for + * generating links to online documentation + * - 'use_language' - class names will be prefixed with language, like "php-reserved" or "css-code" + * + * Example of setting documentation links: + * $options['doclinks'] = array( + * 'url' => 'http://php.net/%s', + * 'target' => '_blank', + * 'elements' => array('reserved', 'identifier') + * ); + * + * Example of setting class names map: + * $options['class_map'] = array( + * 'main' => 'my-main', + * 'table' => 'my-table', + * 'gutter' => 'my-gutter', + * 'brackets' => 'my-brackets', + * 'builtin' => 'my-builtin', + * 'code' => 'my-code', + * 'comment' => 'my-comment', + * 'default' => 'my-default', + * 'identifier' => 'my-identifier', + * 'inlinedoc' => 'my-inlinedoc', + * 'inlinetags' => 'my-inlinetags', + * 'mlcomment' => 'my-mlcomment', + * 'number' => 'my-number', + * 'quotes' => 'my-quotes', + * 'reserved' => 'my-reserved', + * 'special' => 'my-special', + * 'string' => 'my-string', + * 'url' => 'my-url', + * 'var' => 'my-var', + * ); + * + * Example of setting styles mapping: + * $options['style_map'] = array( + * 'main' => 'color: black', + * 'table' => 'border: 1px solid black', + * 'gutter' => 'background-color: yellow', + * 'brackets' => 'color: blue', + * 'builtin' => 'color: red', + * 'code' => 'color: green', + * 'comment' => 'color: orange', + * // .... + * ); + * + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_Html extends Text_Highlighter_Renderer_Array +{ + + /**#@+ + * @access private + */ + + /** + * Line numbering style + * + * @var integer + */ + var $_numbers = 0; + + /** + * For numberered lines - where to start + * + * @var integer + */ + var $_numbers_start = 0; + + /** + * Tab size + * + * @var integer + */ + var $_tabsize = 4; + + /** + * Highlighted code + * + * @var string + */ + var $_output = ''; + + /** + * Mapping of keywords to formatting rules using inline styles + * + * @var array + */ + var $_style_map = array(); + + /** + * Mapping of keywords to formatting rules using class names + * + * @var array + */ + var $_class_map = array( + 'main' => 'hl-main', + 'table' => 'hl-table', + 'gutter' => 'hl-gutter', + 'brackets' => 'hl-brackets', + 'builtin' => 'hl-builtin', + 'code' => 'hl-code', + 'comment' => 'hl-comment', + 'default' => 'hl-default', + 'identifier' => 'hl-identifier', + 'inlinedoc' => 'hl-inlinedoc', + 'inlinetags' => 'hl-inlinetags', + 'mlcomment' => 'hl-mlcomment', + 'number' => 'hl-number', + 'prepro' => 'hl-prepro', + 'quotes' => 'hl-quotes', + 'reserved' => 'hl-reserved', + 'special' => 'hl-special', + 'string' => 'hl-string', + 'types' => 'hl-types', + 'url' => 'hl-url', + 'var' => 'hl-var', + ); + + /** + * Setup for links to online documentation + * + * This is an array with keys: + * - url, ex. http://php.net/%s + * - target, ex. _blank, default - no target + * - elements, default is <code>array('reserved', 'identifier')</code> + * + * @var array + */ + var $_doclinks = array(); + + /**#@-*/ + + + /** + * Resets renderer state + * + * @access protected + * + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + */ + function reset() + { + $this->_output = ''; + if (isset($this->_options['numbers'])) { + $this->_numbers = (int)$this->_options['numbers']; + if ($this->_numbers != HL_NUMBERS_LI + && $this->_numbers != HL_NUMBERS_UL + && $this->_numbers != HL_NUMBERS_OL + && $this->_numbers != HL_NUMBERS_TABLE + ) { + $this->_numbers = 0; + } + } + if (isset($this->_options['tabsize'])) { + $this->_tabsize = $this->_options['tabsize']; + } + if (isset($this->_options['numbers_start'])) { + $this->_numbers_start = intval($this->_options['numbers_start']); + } + if (isset($this->_options['doclinks']) && + is_array($this->_options['doclinks']) && + !empty($this->_options['doclinks']['url']) + ) { + + $this->_doclinks = $this->_options['doclinks']; // keys: url, target, elements array + + if (empty($this->_options['doclinks']['elements'])) { + $this->_doclinks['elements'] = array('reserved', 'identifier'); + } + } + if (isset($this->_options['style_map'])) { + $this->_style_map = $this->_options['style_map']; + } + if (isset($this->_options['class_map'])) { + $this->_class_map = array_merge($this->_class_map, $this->_options['class_map']); + } + $this->_htmlspecialchars = true; + + } + + + /** + * Given a CSS class name, returns the class name + * with language name prepended, if necessary + * + * @access private + * + * @param string $class Token class + */ + function _getFullClassName($class) + { + if (!empty($this->_options['use_language'])) { + $the_class = $this->_language . '-' . $class; + } else { + $the_class = $class; + } + return $the_class; + } + + /** + * Signals that no more tokens are available + * + * @access public + */ + function finalize() + { + + // get parent's output + parent::finalize(); + $output = parent::getOutput(); + + $html_output = ''; + + $numbers_li = false; + + if ( + $this->_numbers == HL_NUMBERS_LI || + $this->_numbers == HL_NUMBERS_UL || + $this->_numbers == HL_NUMBERS_OL + ) + { + $numbers_li = true; + } + + // loop through each class=>content pair + foreach ($output AS $token) { + + if ($this->_enumerated) { + $key = false; + $the_class = $token[0]; + $content = $token[1]; + } else { + $key = key($token); + $the_class = $key; + $content = $token[$key]; + } + + $span = $this->_getStyling($the_class); + $decorated_output = $this->_decorate($content, $key); + + + if ($numbers_li == true) { + // end span tags before end of li, and re-open on next line + $lastSpanTag = str_replace("%s</span>", "", $span); + $span = sprintf($span, $decorated_output); + $span = str_replace("\n", "</span></li>\n<li>$lastSpanTag ", $span); + $html_output .= $span; + } else { + $html_output .= sprintf($span, $decorated_output); + } + + + } + + // format lists + if (!empty($this->_numbers) && $numbers_li == true) { + + + // additional whitespace for browsers that do not display + // empty list items correctly + $this->_output = '<li> ' . $html_output . '</li>'; + + $start = ''; + if ($this->_numbers == HL_NUMBERS_OL && intval($this->_numbers_start) > 0) { + $start = ' start="' . $this->_numbers_start . '"'; + } + + $list_tag = 'ol'; + if ($this->_numbers == HL_NUMBERS_UL) { + $list_tag = 'ul'; + } + + + $this->_output = '<' . $list_tag . $start + . ' ' . $this->_getStyling('main', false) . '>' + . $this->_output . '</'. $list_tag .'>'; + + // render a table + } else if ($this->_numbers == HL_NUMBERS_TABLE) { + + + $start_number = 0; + if (intval($this->_numbers_start)) { + $start_number = $this->_numbers_start - 1; + } + + $numbers = ''; + + $nlines = substr_count($html_output,"\n")+1; + for ($i=1; $i <= $nlines; $i++) { + $numbers .= ($start_number + $i) . "\n"; + } + $this->_output = '<table ' . $this->_getStyling('table', false) . ' width="100%"><tr>' . + '<td '. $this->_getStyling('gutter', false) .' align="right" valign="top">' . + '<pre>' . $numbers . '</pre></td><td '. $this->_getStyling('main', false) . + ' valign="top"><pre>' . + $html_output . '</pre></td></tr></table>'; + } + if (!$this->_numbers) { + $this->_output = '<pre>' . $html_output . '</pre>'; + } + $this->_output = '<div ' . $this->_getStyling('main', false) . '>' . $this->_output . '</div>'; + } + + + /** + * Provides additional formatting to a keyword + * + * @param string $content Keyword + * @return string Keyword with additional formatting + * @access public + * + */ + function _decorate($content, $key = false) + { + // links to online documentation + if (!empty($this->_doclinks) && + !empty($this->_doclinks['url']) && + in_array($key, $this->_doclinks['elements']) + ) { + + $link = '<a href="'. sprintf($this->_doclinks['url'], $content) . '"'; + if (!empty($this->_doclinks['target'])) { + $link.= ' target="' . $this->_doclinks['target'] . '"'; + } + $link .= '>'; + $link.= $content; + $link.= '</a>'; + + $content = $link; + + } + + return $content; + } + + /** + * Returns <code>class</code> and/or <code>style</code> attribute, + * optionally enclosed in a <code>span</code> tag + * + * @param string $class Class name + * @paran boolean $span_tag Whether or not to return styling attributes in a <code>>span<</code> tag + * @return string <code>span</code> tag or just a <code>class</code> and/or <code>style</code> attributes + * @access private + */ + function _getStyling($class, $span_tag = true) + { + $attrib = ''; + if (!empty($this->_style_map) && + !empty($this->_style_map[$class]) + ) { + $attrib = 'style="'. $this->_style_map[$class] .'"'; + } + if (!empty($this->_class_map) && + !empty($this->_class_map[$class]) + ) { + if ($attrib) { + $attrib .= ' '; + } + $attrib .= 'class="'. $this->_getFullClassName($this->_class_map[$class]) .'"'; + } + + if ($span_tag) { + $span = '<span ' . $attrib . '>%s</span>'; + return $span; + } else { + return $attrib; + } + + } +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/HtmlTags.php b/library/Text_Highlighter/Text/Highlighter/Renderer/HtmlTags.php new file mode 100644 index 000000000..68e01d3e0 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/HtmlTags.php @@ -0,0 +1,187 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * HTML renderer that uses only basic html tags + * + * PHP versions 4 and 5. Based on the "normal" HTML renderer by Andrey Demenev. + * It's designed to work with user agents that support only a limited number of + * HTML tags. Like the iPod which supports only b, i, u and a. + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @copyright 2005 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; +require_once 'Text/Highlighter/Renderer/Array.php'; + +/** + * HTML basic tags renderer, based on Andrey Demenev's HTML renderer. + * + * Elements of $options argument of constructor (each being optional): + * + * - 'numbers' - Line numbering TRUE or FALSE. Default is FALSE. + * - 'tabsize' - Tab size, default is 4. + * - 'tags' - Array, containing the tags to be used for highlighting + * + * Here's the listing of the default tags: + * - 'default' => '', + * - 'code' => '', + * - 'brackets' => 'b', + * - 'comment' => 'i', + * - 'mlcomment' => 'i', + * - 'quotes' => '', + * - 'string' => 'i', + * - 'identifier' => 'b', + * - 'builtin' => 'b', + * - 'reserved' => 'u', + * - 'inlinedoc' => 'i', + * - 'var' => 'b', + * - 'url' => 'i', + * - 'special' => '', + * - 'number' => '', + * - 'inlinetags' => '' + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2005 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.5.0 + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_HtmlTags extends Text_Highlighter_Renderer_Array +{ + + /**#@+ + * @access private + */ + + /** + * Line numbering - will use 'ol' tag + * + * @var boolean + */ + var $_numbers = false; + + /** + * HTML tags map + * + * @var array + */ + var $_hilite_tags = array( + 'default' => '', + 'code' => '', + 'brackets' => 'b', + 'comment' => 'i', + 'mlcomment' => 'i', + 'quotes' => '', + 'string' => 'i', + 'identifier' => 'b', + 'builtin' => 'b', + 'reserved' => 'u', + 'inlinedoc' => 'i', + 'var' => 'b', + 'url' => 'i', + 'special' => '', + 'number' => '', + 'inlinetags' => '', + ); + + /**#@-*/ + + /** + * Resets renderer state + * + * @access protected + * + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + */ + function reset() + { + parent::reset(); + if (isset($this->_options['numbers'])) { + $this->_numbers = $this->_options['numbers']; + } + if (isset($this->_options['tags'])) { + $this->_hilite_tags = array_merge($this->_tags, $this->_options['tags']); + } + } + + + /** + * Signals that no more tokens are available + * + * @abstract + * @access public + * + */ + function finalize() + { + + // get parent's output + parent::finalize(); + $output = parent::getOutput(); + + $html_output = ''; + + // loop through each class=>content pair + foreach ($output AS $token) { + + if ($this->_enumerated) { + $class = $token[0]; + $content = $token[1]; + } else { + $key = key($token); + $class = $key; + $content = $token[$key]; + } + + $iswhitespace = ctype_space($content); + if (!$iswhitespace && !empty($this->_hilite_tags[$class])) { + $html_output .= '<'. $this->_hilite_tags[$class] . '>' . $content . '</'. $this->_hilite_tags[$class] . '>'; + } else { + $html_output .= $content; + } + } + + + if ($this->_numbers) { + /* additional whitespace for browsers that do not display + empty list items correctly */ + $html_output = '<li> ' . str_replace("\n", "</li>\n<li> ", $html_output) . '</li>'; + $this->_output = '<ol>' . str_replace(' ', ' ', $html_output) . '</ol>'; + } else { + $this->_output = '<pre>' . $html_output . '</pre>'; + } + } + + +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/JSON.php b/library/Text_Highlighter/Text/Highlighter/Renderer/JSON.php new file mode 100644 index 000000000..d4c926161 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/JSON.php @@ -0,0 +1,86 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * JSON renderer. + * + * Based on the HTML renderer by Andrey Demenev. + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; +require_once 'Text/Highlighter/Renderer/Array.php'; + +/** + * JSON renderer, based on Andrey Demenev's HTML renderer. + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.5.0 + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_JSON extends Text_Highlighter_Renderer_Array +{ + + /** + * Signals that no more tokens are available + * + * @abstract + * @access public + */ + function finalize() + { + + parent::finalize(); + $output = parent::getOutput(); + + $json_array = array(); + + foreach ($output AS $token) { + + if ($this->_enumerated) { + $json_array[] = '["' . $token[0] . '","' . $token[1] . '"]'; + } else { + $key = key($token); + $json_array[] = '{"class": "' . $key . '","content":"' . $token[$key] . '"}'; + } + + } + + $this->_output = '['. implode(',', $json_array) .']'; + $this->_output = str_replace("\n", '\n', $this->_output); + + } + + +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?>
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/Renderer/XML.php b/library/Text_Highlighter/Text/Highlighter/Renderer/XML.php new file mode 100644 index 000000000..7b6fb2106 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/Renderer/XML.php @@ -0,0 +1,104 @@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * XML renderer. + * + * Based on the HTML renderer by Andrey Demenev. + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter/Renderer.php'; +require_once 'Text/Highlighter/Renderer/Array.php'; +require_once 'XML/Serializer.php'; + +/** + * XML renderer, based on Andrey Demenev's HTML renderer. + * + * @author Stoyan Stefanov <ssttoo@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2006 Stoyan Stefanov + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.5.0 + * @link http://pear.php.net/package/Text_Highlighter + */ + +class Text_Highlighter_Renderer_XML extends Text_Highlighter_Renderer_Array +{ + + + /** + * Options for XML_Serializer + * + * @access private + * @var array + */ + var $_serializer_options = array(); + + + /** + * Resets renderer state + * + * Descendents of Text_Highlighter call this method from the constructor, + * passing $options they get as parameter. + * + * @access protected + */ + function reset() + { + parent::reset(); + if (isset($this->_options['xml_serializer'])) { + $this->_serializer_options = $this->_options['xml_serializer']; + } + } + + + /** + * Signals that no more tokens are available + * + * @abstract + * @access public + */ + function finalize() + { + + // call parent's finalize(), then serialize array into XML + parent::finalize(); + $output = parent::getOutput(); + + $serializer = new XML_Serializer($this->_serializer_options); + $result = $serializer->serialize($output); + if ($result === true) { + $this->_output = $serializer->getSerializedData(); + } + } + + +} + +/* + * Local variables: + * tab-width: 4 + * c-basic-offset: 4 + * c-hanging-comment-ender-p: nil + * End: + */ + +?> diff --git a/library/Text_Highlighter/Text/Highlighter/SH.php b/library/Text_Highlighter/Text/Highlighter/SH.php new file mode 100644 index 000000000..ff779868f --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/SH.php @@ -0,0 +1,1225 @@ +<?php +/** + * Auto-generated class. SH syntax highlighting + * + * This highlighter is EXPERIMENTAL. It may work incorrectly. + * It is a crude hack of the perl syntax, which itself wasn't so good. + * But this seems to work OK. + * + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : sh.xml,v 1.2 2007/06/14 00:15:50 ssttoo Exp + * @author Noah Spurrier <noah@noah.org> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. SH syntax highlighting + * + * @author Noah Spurrier <noah@noah.org> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_SH extends Text_Highlighter +{ + var $_language = 'sh'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_SH($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?m)^(#!)(.*))|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 0 => '/((?m)^(#!)(.*))|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 1 => '/((?m)^(#!)(.*))|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|((?i)([a-z1-9_]+)(\\s*=>))|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 2 => '/((?m)^(#!)(.*))|(\\{)|(\\()|(\\[)|((use)\\s+([\\w:]*))|((?Us)\\b(q[wq]\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|((?Us)\\b(q\\s*((\\{)|(\\()|(\\[)|(\\<)|([\\W\\S])))(?=(.*)((?(3)\\})(?(4)\\))(?(5)\\])(?(6)\\>)(?(7)\\7))))|(#.*)|((?x)(s|tr) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2)((\\\\.|[^\\\\])*?)(\\2[ecgimosx]*))|((?x)(m) ([|#~`!@$%^&*-+=\\\\;:\'",.\\/?]) ((\\\\.|[^\\\\])*?) (\\2[ecgimosx]*))|( \\/)|(\\$#?[1-9\'`@!])|((?i)(\\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)(\\{)([a-z1-9]+)(\\}))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(`)|(\')|(")|((?i)[a-z_]\\w*)|(\\d*\\.?\\d+)/', + 3 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/', + 4 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 5 => '/(\\\\\\/)/', + 6 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 7 => '/(\\\\\\\\|\\\\"|\\\\\'|\\\\`)/', + 8 => '/(\\$#?[1-9\'`@!])|((?i)\\$([a-z1-9_]+|\\^(?-i)[A-Z]?(?i)))|((?i)[\\$@%]#?\\{[a-z1-9]+\\})|(\\\\[\\\\"\'`tnr\\$\\{@])/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 2, + 5 => 9, + 6 => 9, + 7 => 0, + 8 => 8, + 9 => 5, + 10 => 0, + 11 => 0, + 12 => 3, + 13 => 1, + 14 => 3, + 15 => 0, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + ), + 0 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 2, + 5 => 9, + 6 => 9, + 7 => 0, + 8 => 8, + 9 => 5, + 10 => 0, + 11 => 0, + 12 => 3, + 13 => 1, + 14 => 3, + 15 => 0, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + ), + 1 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 2, + 5 => 9, + 6 => 9, + 7 => 0, + 8 => 8, + 9 => 5, + 10 => 0, + 11 => 2, + 12 => 0, + 13 => 3, + 14 => 1, + 15 => 3, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + 21 => 0, + ), + 2 => + array ( + 0 => 2, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 2, + 5 => 9, + 6 => 9, + 7 => 0, + 8 => 8, + 9 => 5, + 10 => 0, + 11 => 0, + 12 => 3, + 13 => 1, + 14 => 3, + 15 => 0, + 16 => 0, + 17 => 0, + 18 => 0, + 19 => 0, + 20 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + 4 => + array ( + 0 => 0, + ), + 5 => + array ( + 0 => 0, + ), + 6 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + 7 => + array ( + 0 => 0, + ), + 8 => + array ( + 0 => 0, + 1 => 1, + 2 => 0, + 3 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => '', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => 'quotes', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => 'quotes', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => 'quotes', + 17 => 'quotes', + 18 => 'quotes', + 19 => '', + 20 => '', + ), + 0 => + array ( + 0 => '', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => 'quotes', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => 'quotes', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => 'quotes', + 17 => 'quotes', + 18 => 'quotes', + 19 => '', + 20 => '', + ), + 1 => + array ( + 0 => '', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => 'quotes', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => 'quotes', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => '', + 17 => 'quotes', + 18 => 'quotes', + 19 => 'quotes', + 20 => '', + 21 => '', + ), + 2 => + array ( + 0 => '', + 1 => 'brackets', + 2 => 'brackets', + 3 => 'brackets', + 4 => '', + 5 => 'quotes', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => 'quotes', + 11 => '', + 12 => '', + 13 => '', + 14 => '', + 15 => '', + 16 => 'quotes', + 17 => 'quotes', + 18 => 'quotes', + 19 => '', + 20 => '', + ), + 3 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 4 => + array ( + 0 => '', + ), + 5 => + array ( + 0 => '', + ), + 6 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + 7 => + array ( + 0 => '', + ), + 8 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'special', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'special', + 5 => 'string', + 6 => 'string', + 7 => 'comment', + 8 => 'string', + 9 => 'string', + 10 => 'string', + 11 => 'var', + 12 => 'var', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'string', + 17 => 'string', + 18 => 'string', + 19 => 'identifier', + 20 => 'number', + ), + 0 => + array ( + 0 => 'special', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'special', + 5 => 'string', + 6 => 'string', + 7 => 'comment', + 8 => 'string', + 9 => 'string', + 10 => 'string', + 11 => 'var', + 12 => 'var', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'string', + 17 => 'string', + 18 => 'string', + 19 => 'identifier', + 20 => 'number', + ), + 1 => + array ( + 0 => 'special', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'special', + 5 => 'string', + 6 => 'string', + 7 => 'comment', + 8 => 'string', + 9 => 'string', + 10 => 'string', + 11 => 'string', + 12 => 'var', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'var', + 17 => 'string', + 18 => 'string', + 19 => 'string', + 20 => 'identifier', + 21 => 'number', + ), + 2 => + array ( + 0 => 'special', + 1 => 'code', + 2 => 'code', + 3 => 'code', + 4 => 'special', + 5 => 'string', + 6 => 'string', + 7 => 'comment', + 8 => 'string', + 9 => 'string', + 10 => 'string', + 11 => 'var', + 12 => 'var', + 13 => 'var', + 14 => 'var', + 15 => 'var', + 16 => 'string', + 17 => 'string', + 18 => 'string', + 19 => 'identifier', + 20 => 'number', + ), + 3 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + 4 => + array ( + 0 => 'special', + ), + 5 => + array ( + 0 => 'string', + ), + 6 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + 7 => + array ( + 0 => 'special', + ), + 8 => + array ( + 0 => 'var', + 1 => 'var', + 2 => 'var', + 3 => 'special', + ), + ); + $this->_end = array ( + 0 => '/\\}/', + 1 => '/\\)/', + 2 => '/\\]/', + 3 => '/%b2%/', + 4 => '/%b2%/', + 5 => '/\\/[cgimosx]*/', + 6 => '/`/', + 7 => '/\'/', + 8 => '/"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => -1, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => 5, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => 6, + 17 => 7, + 18 => 8, + 19 => -1, + 20 => -1, + ), + 0 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => -1, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => 5, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => 6, + 17 => 7, + 18 => 8, + 19 => -1, + 20 => -1, + ), + 1 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => -1, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => 5, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => -1, + 17 => 6, + 18 => 7, + 19 => 8, + 20 => -1, + 21 => -1, + ), + 2 => + array ( + 0 => -1, + 1 => 0, + 2 => 1, + 3 => 2, + 4 => -1, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => 5, + 11 => -1, + 12 => -1, + 13 => -1, + 14 => -1, + 15 => -1, + 16 => 6, + 17 => 7, + 18 => 8, + 19 => -1, + 20 => -1, + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 4 => + array ( + 0 => -1, + ), + 5 => + array ( + 0 => -1, + ), + 6 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + 7 => + array ( + 0 => -1, + ), + 8 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + ), + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => -1, + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => -1, + 17 => -1, + 18 => -1, + 19 => + array ( + 'reserved' => '/^(cd|cp|rm|echo|printf|exit|cut|join|comm|fmt|grep|egrep|fgrep|sed|awk|yes|false|true|test|expr|tee|basename|dirname|pathchk|pwd|stty|tty|env|printenv|id|logname|whoami|groups|users|who|date|uname|hostname|chroot|nice|nohup|sleep|factor|seq|getopt|getopts|options|shift)$/', + 'flowcontrol' => '/^(if|fi|then|else|elif|case|esac|while|done|for|in|function|until|do|select|time|read|set)$/', + ), + 20 => + array ( + ), + ), + 0 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + ), + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => -1, + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => -1, + 17 => -1, + 18 => -1, + 19 => + array ( + 'reserved' => '/^(cd|cp|rm|echo|printf|exit|cut|join|comm|fmt|grep|egrep|fgrep|sed|awk|yes|false|true|test|expr|tee|basename|dirname|pathchk|pwd|stty|tty|env|printenv|id|logname|whoami|groups|users|who|date|uname|hostname|chroot|nice|nohup|sleep|factor|seq|getopt|getopts|options|shift)$/', + 'flowcontrol' => '/^(if|fi|then|else|elif|case|esac|while|done|for|in|function|until|do|select|time|read|set)$/', + ), + 20 => + array ( + ), + ), + 1 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + ), + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => -1, + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => + array ( + ), + 17 => -1, + 18 => -1, + 19 => -1, + 20 => + array ( + 'reserved' => '/^(cd|cp|rm|echo|printf|exit|cut|join|comm|fmt|grep|egrep|fgrep|sed|awk|yes|false|true|test|expr|tee|basename|dirname|pathchk|pwd|stty|tty|env|printenv|id|logname|whoami|groups|users|who|date|uname|hostname|chroot|nice|nohup|sleep|factor|seq|getopt|getopts|options|shift)$/', + 'flowcontrol' => '/^(if|fi|then|else|elif|case|esac|while|done|for|in|function|until|do|select|time|read|set)$/', + ), + 21 => + array ( + ), + ), + 2 => + array ( + 0 => + array ( + ), + 1 => -1, + 2 => -1, + 3 => -1, + 4 => + array ( + ), + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => -1, + 11 => + array ( + ), + 12 => + array ( + ), + 13 => + array ( + ), + 14 => + array ( + ), + 15 => + array ( + ), + 16 => -1, + 17 => -1, + 18 => -1, + 19 => + array ( + 'reserved' => '/^(cd|cp|rm|echo|printf|exit|cut|join|comm|fmt|grep|egrep|fgrep|sed|awk|yes|false|true|test|expr|tee|basename|dirname|pathchk|pwd|stty|tty|env|printenv|id|logname|whoami|groups|users|who|date|uname|hostname|chroot|nice|nohup|sleep|factor|seq|getopt|getopts|options|shift)$/', + 'flowcontrol' => '/^(if|fi|then|else|elif|case|esac|while|done|for|in|function|until|do|select|time|read|set)$/', + ), + 20 => + array ( + ), + ), + 3 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + 5 => + array ( + 0 => + array ( + ), + ), + 6 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + 7 => + array ( + 0 => + array ( + ), + ), + 8 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 9 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 15 => NULL, + 16 => NULL, + 17 => NULL, + 18 => NULL, + 19 => NULL, + 20 => NULL, + ), + 1 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 9 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 10 => NULL, + 11 => + array ( + 1 => 'string', + 2 => 'code', + ), + 12 => NULL, + 13 => NULL, + 14 => NULL, + 15 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 16 => NULL, + 17 => NULL, + 18 => NULL, + 19 => NULL, + 20 => NULL, + 21 => NULL, + ), + 2 => + array ( + 0 => + array ( + 1 => 'special', + 2 => 'string', + ), + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => + array ( + 1 => 'reserved', + 2 => 'special', + ), + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + 6 => 'string', + 8 => 'quotes', + ), + 9 => + array ( + 1 => 'quotes', + 2 => 'quotes', + 3 => 'string', + 5 => 'quotes', + ), + 10 => NULL, + 11 => NULL, + 12 => NULL, + 13 => NULL, + 14 => + array ( + 1 => 'brackets', + 2 => 'var', + 3 => 'brackets', + ), + 15 => NULL, + 16 => NULL, + 17 => NULL, + 18 => NULL, + 19 => NULL, + 20 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + 5 => + array ( + 0 => NULL, + ), + 6 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + 7 => + array ( + 0 => NULL, + ), + 8 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => true, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => true, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + ), + 1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => true, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + 21 => false, + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => true, + 6 => true, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false, + 13 => false, + 14 => false, + 15 => false, + 16 => false, + 17 => false, + 18 => false, + 19 => false, + 20 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 4 => + array ( + 0 => false, + ), + 5 => + array ( + 0 => false, + ), + 6 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 7 => + array ( + 0 => false, + ), + 8 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'flowcontrol' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/SQL.php b/library/Text_Highlighter/Text/Highlighter/SQL.php new file mode 100644 index 000000000..824864033 --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/SQL.php @@ -0,0 +1,419 @@ +<?php +/** + * Auto-generated class. SQL syntax highlighting + * + * Based on SQL-99 + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : sql.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. SQL syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_SQL extends Text_Highlighter +{ + var $_language = 'sql'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_SQL($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/', + 0 => '//', + 1 => '//', + 2 => '/((?i)\\\\.)/', + 3 => '/((?i)`)|((?i)\\/\\*)|((?i)(#|--\\s).*)|((?i)[a-z_]\\w*)|((?i)")|((?i)\\()|((?i)\')|((?i)((\\d+|((\\d*\\.\\d+)|(\\d+\\.\\d*)))[eE][+-]?\\d+))|((?i)(\\d*\\.\\d+)|(\\d+\\.\\d*))|((?i)\\d+l?|\\b0l?\\b)|((?i)0[xX][\\da-f]+l?)/', + 4 => '/((?i)\\\\.)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 5, + 8 => 2, + 9 => 0, + 10 => 0, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 0, + ), + 3 => + array ( + 0 => 0, + 1 => 0, + 2 => 1, + 3 => 0, + 4 => 0, + 5 => 0, + 6 => 0, + 7 => 5, + 8 => 2, + 9 => 0, + 10 => 0, + ), + 4 => + array ( + 0 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'quotes', + 1 => 'comment', + 2 => '', + 3 => '', + 4 => 'quotes', + 5 => 'brackets', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => '', + ), + 3 => + array ( + 0 => 'quotes', + 1 => 'comment', + 2 => '', + 3 => '', + 4 => 'quotes', + 5 => 'brackets', + 6 => 'quotes', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + ), + 4 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'identifier', + 1 => 'comment', + 2 => 'comment', + 3 => 'identifier', + 4 => 'string', + 5 => 'code', + 6 => 'string', + 7 => 'number', + 8 => 'number', + 9 => 'number', + 10 => 'number', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 'special', + ), + 3 => + array ( + 0 => 'identifier', + 1 => 'comment', + 2 => 'comment', + 3 => 'identifier', + 4 => 'string', + 5 => 'code', + 6 => 'string', + 7 => 'number', + 8 => 'number', + 9 => 'number', + 10 => 'number', + ), + 4 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)`/', + 1 => '/(?i)\\*\\//', + 2 => '/(?i)"/', + 3 => '/(?i)\\)/', + 4 => '/(?i)\'/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + 3 => -1, + 4 => 2, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => -1, + ), + 3 => + array ( + 0 => 0, + 1 => 1, + 2 => -1, + 3 => -1, + 4 => 2, + 5 => 3, + 6 => 4, + 7 => -1, + 8 => -1, + 9 => -1, + 10 => -1, + ), + 4 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => + array ( + 'reserved' => '/^((?i)absolute|action|add|admin|after|aggregate|alias|all|allocate|alter|and|any|are|array|as|asc|assertion|at|authorization|before|begin|binary|bit|blob|boolean|both|breadth|by|call|cascade|cascaded|case|cast|catalog|char|character|check|class|clob|close|collate|collation|column|commit|completion|connect|connection|constraint|constraints|constructor|continue|corresponding|create|cross|cube|current|current_date|current_path|current_role|current_time|current_timestamp|current_user|cursor|cycle|data|date|day|deallocate|dec|decimal|declare|default|deferrable|deferred|delete|depth|deref|desc|describe|descriptor|destroy|destructor|deterministic|diagnostics|dictionary|disconnect|distinct|domain|double|drop|dynamic|each|else|end|end-exec|equals|escape|every|except|exception|exec|execute|external|false|fetch|first|float|for|foreign|found|free|from|full|function|general|get|global|go|goto|grant|group|grouping|having|host|hour|identity|ignore|immediate|in|indicator|initialize|initially|inner|inout|input|insert|int|integer|intersect|interval|into|is|isolation|iterate|join|key|language|large|last|lateral|leading|left|less|level|like|limit|local|localtime|localtimestamp|locator|map|match|minute|modifies|modify|module|month|names|national|natural|nchar|nclob|new|next|no|none|not|null|numeric|object|of|off|old|on|only|open|operation|option|or|order|ordinality|out|outer|output|pad|parameter|parameters|partial|path|postfix|precision|prefix|preorder|prepare|preserve|primary|prior|privileges|procedure|public|read|reads|real|recursive|ref|references|referencing|relative|restrict|result|return|returns|revoke|right|role|rollback|rollup|routine|row|rows|savepoint|schema|scope|scroll|search|second|section|select|sequence|session|session_user|set|sets|size|smallint|some|space|specific|specifictype|sql|sqlexception|sqlstate|sqlwarning|start|state|statement|static|structure|system_user|table|temporary|terminate|than|then|time|timestamp|timezone_hour|timezone_minute|to|trailing|transaction|translation|treat|trigger|true|under|union|unique|unknown|unnest|update|usage|user|using|value|values|varchar|variable|varying|view|when|whenever|where|with|without|work|write|year|zone)$/', + 'keyword' => '/^((?i)abs|ada|asensitive|assignment|asymmetric|atomic|avg|between|bitvar|bit_length|c|called|cardinality|catalog_name|chain|character_length|character_set_catalog|character_set_name|character_set_schema|char_length|checked|class_origin|coalesce|cobol|collation_catalog|collation_name|collation_schema|column_name|command_function|command_function_code|committed|condition_number|connection_name|constraint_catalog|constraint_name|constraint_schema|contains|convert|count|cursor_name|datetime_interval_code|datetime_interval_precision|defined|definer|dispatch|dynamic_function|dynamic_function_code|existing|exists|extract|final|fortran|g|generated|granted|hierarchy|hold|implementation|infix|insensitive|instance|instantiable|invoker|k|key_member|key_type|length|lower|m|max|message_length|message_octet_length|message_text|method|min|mod|more|mumps|name|nullable|nullif|number|octet_length|options|overlaps|overlay|overriding|parameter_mode|parameter_name|parameter_ordinal_position|parameter_specific_catalog|parameter_specific_name|parameter_specific_schema|pascal|pli|position|repeatable|returned_length|returned_octet_length|returned_sqlstate|routine_catalog|routine_name|routine_schema|row_count|scale|schema_name|security|self|sensitive|serializable|server_name|similar|simple|source|specific_name|style|subclass_origin|sublist|substring|sum|symmetric|system|table_name|transactions_committed|transactions_rolled_back|transaction_active|transform|transforms|translate|trigger_catalog|trigger_name|trigger_schema|trim|type|uncommitted|unnamed|upper|user_defined_type_catalog|user_defined_type_name|user_defined_type_schema)$/', + ), + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => + array ( + ), + ), + 3 => + array ( + 0 => -1, + 1 => -1, + 2 => + array ( + ), + 3 => + array ( + 'reserved' => '/^((?i)absolute|action|add|admin|after|aggregate|alias|all|allocate|alter|and|any|are|array|as|asc|assertion|at|authorization|before|begin|binary|bit|blob|boolean|both|breadth|by|call|cascade|cascaded|case|cast|catalog|char|character|check|class|clob|close|collate|collation|column|commit|completion|connect|connection|constraint|constraints|constructor|continue|corresponding|create|cross|cube|current|current_date|current_path|current_role|current_time|current_timestamp|current_user|cursor|cycle|data|date|day|deallocate|dec|decimal|declare|default|deferrable|deferred|delete|depth|deref|desc|describe|descriptor|destroy|destructor|deterministic|diagnostics|dictionary|disconnect|distinct|domain|double|drop|dynamic|each|else|end|end-exec|equals|escape|every|except|exception|exec|execute|external|false|fetch|first|float|for|foreign|found|free|from|full|function|general|get|global|go|goto|grant|group|grouping|having|host|hour|identity|ignore|immediate|in|indicator|initialize|initially|inner|inout|input|insert|int|integer|intersect|interval|into|is|isolation|iterate|join|key|language|large|last|lateral|leading|left|less|level|like|limit|local|localtime|localtimestamp|locator|map|match|minute|modifies|modify|module|month|names|national|natural|nchar|nclob|new|next|no|none|not|null|numeric|object|of|off|old|on|only|open|operation|option|or|order|ordinality|out|outer|output|pad|parameter|parameters|partial|path|postfix|precision|prefix|preorder|prepare|preserve|primary|prior|privileges|procedure|public|read|reads|real|recursive|ref|references|referencing|relative|restrict|result|return|returns|revoke|right|role|rollback|rollup|routine|row|rows|savepoint|schema|scope|scroll|search|second|section|select|sequence|session|session_user|set|sets|size|smallint|some|space|specific|specifictype|sql|sqlexception|sqlstate|sqlwarning|start|state|statement|static|structure|system_user|table|temporary|terminate|than|then|time|timestamp|timezone_hour|timezone_minute|to|trailing|transaction|translation|treat|trigger|true|under|union|unique|unknown|unnest|update|usage|user|using|value|values|varchar|variable|varying|view|when|whenever|where|with|without|work|write|year|zone)$/', + 'keyword' => '/^((?i)abs|ada|asensitive|assignment|asymmetric|atomic|avg|between|bitvar|bit_length|c|called|cardinality|catalog_name|chain|character_length|character_set_catalog|character_set_name|character_set_schema|char_length|checked|class_origin|coalesce|cobol|collation_catalog|collation_name|collation_schema|column_name|command_function|command_function_code|committed|condition_number|connection_name|constraint_catalog|constraint_name|constraint_schema|contains|convert|count|cursor_name|datetime_interval_code|datetime_interval_precision|defined|definer|dispatch|dynamic_function|dynamic_function_code|existing|exists|extract|final|fortran|g|generated|granted|hierarchy|hold|implementation|infix|insensitive|instance|instantiable|invoker|k|key_member|key_type|length|lower|m|max|message_length|message_octet_length|message_text|method|min|mod|more|mumps|name|nullable|nullif|number|octet_length|options|overlaps|overlay|overriding|parameter_mode|parameter_name|parameter_ordinal_position|parameter_specific_catalog|parameter_specific_name|parameter_specific_schema|pascal|pli|position|repeatable|returned_length|returned_octet_length|returned_sqlstate|routine_catalog|routine_name|routine_schema|row_count|scale|schema_name|security|self|sensitive|serializable|server_name|similar|simple|source|specific_name|style|subclass_origin|sublist|substring|sum|symmetric|system|table_name|transactions_committed|transactions_rolled_back|transaction_active|transform|transforms|translate|trigger_catalog|trigger_name|trigger_schema|trim|type|uncommitted|unnamed|upper|user_defined_type_catalog|user_defined_type_name|user_defined_type_schema)$/', + ), + 4 => -1, + 5 => -1, + 6 => -1, + 7 => + array ( + ), + 8 => + array ( + ), + 9 => + array ( + ), + 10 => + array ( + ), + ), + 4 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => NULL, + ), + 3 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + 6 => NULL, + 7 => NULL, + 8 => NULL, + 9 => NULL, + 10 => NULL, + ), + 4 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => false, + ), + 3 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + ), + 4 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'reserved' => 'reserved', + 'keyword' => 'var', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/Text/Highlighter/VBSCRIPT.php b/library/Text_Highlighter/Text/Highlighter/VBSCRIPT.php new file mode 100644 index 000000000..31a7c7c9e --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/VBSCRIPT.php @@ -0,0 +1,318 @@ +<?php +/** + * Auto-generated class. VBSCRIPT syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: vbscript.xml + * @author Daniel Fruzynski <daniel-AT-poradnik-webmastera.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. VBSCRIPT syntax highlighting + * + * @author Daniel Fruzynski <daniel-AT-poradnik-webmastera.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: 0.7.0 + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_VBSCRIPT extends Text_Highlighter +{ + var $_language = 'vbscript'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_VBSCRIPT($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\()|((?i)")|((?i)\'|[Rr][Ee][Mm]\\b)|((?i)\\d*\\.?\\d+)|((?i)&H[0-9a-fA-F]+)|((?i)[a-z_]\\w*)/', + 0 => '/((?i)\\()|((?i)")|((?i)\'|[Rr][Ee][Mm]\\b)|((?i)\\d*\\.?\\d+)|((?i)&H[0-9a-fA-F]+)|((?i)[a-z_]\\w*)/', + 1 => '//', + 2 => '/((?i)((https?|ftp):\\/\\/[\\w\\?\\.\\-\\&=\\/%+]+)|(^|[\\s,!?])www\\.\\w+\\.\\w+[\\w\\?\\.\\&=\\/%+]*)|((?i)\\w+[\\.\\w\\-]+@(\\w+[\\.\\w\\-])+)|((?i)\\b(note|fixme):)|((?i)\\$\\w+:.+\\$)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 0 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 0, + 4 => 0, + 5 => 0, + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 3, + 1 => 1, + 2 => 1, + 3 => 0, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'brackets', + 1 => 'quotes', + 2 => 'comment', + 3 => '', + 4 => '', + 5 => '', + ), + 0 => + array ( + 0 => 'brackets', + 1 => 'quotes', + 2 => 'comment', + 3 => '', + 4 => '', + 5 => '', + ), + 1 => + array ( + ), + 2 => + array ( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'code', + 1 => 'string', + 2 => 'comment', + 3 => 'number', + 4 => 'number', + 5 => 'identifier', + ), + 0 => + array ( + 0 => 'code', + 1 => 'string', + 2 => 'comment', + 3 => 'number', + 4 => 'number', + 5 => 'identifier', + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 'url', + 1 => 'url', + 2 => 'inlinedoc', + 3 => 'inlinedoc', + ), + ); + $this->_end = array ( + 0 => '/(?i)\\)/', + 1 => '/(?i)"/', + 2 => '/(?mi)$/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + 4 => -1, + 5 => -1, + ), + 0 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + 4 => -1, + 5 => -1, + ), + 1 => + array ( + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + ), + 4 => + array ( + ), + 5 => + array ( + 'constants' => '/^((?i)vbblack|vbred|vbgreen|vbyellow|vbblue|vbmagenta|vbcyan|vbwhite|vbbinarycompare|vbtextcompare|vbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbokonly|vbokcancel|vbabortretryignore|vbyesnocancel|vbyesno|vbretrycancel|vbcritical|vbquestion|vbexclamation|vbinformation|vbdefaultbutton1|vbdefaultbutton2|vbdefaultbutton3|vbdefaultbutton4|vbapplicationmodal|vbsystemmodal|vbok|vbcancel|vbabort|vbretry|vbignore|vbyes|vbno|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|vbtab|vbverticaltab|vbusedefault|vbtrue|vbfalse|vbempty|vbnull|vbinteger|vblong|vbsingle|vbdouble|vbcurrency|vbdate|vbstring|vbobject|vberror|vbboolean|vbvariant|vbdataobject|vbdecimal|vbbyte|vbarray)$/', + 'functions' => '/^((?i)abs|array|asc|atn|cbool|cbyte|ccur|cdate|cdbl|chr|cint|clng|cos|createobject|csng|cstr|date|dateadd|datediff|datepart|dateserial|datevalue|day|escape|eval|exp|filter|formatcurrency|formatdatetime|formatnumber|formatpercent|getlocale|getobject|getref|hex|hour|inputbox|instr|instrrev|int|fix|isarray|isdate|isempty|isnull|isnumeric|isobject|join|lbound|lcase|left|len|loadpicture|log|ltrim|rtrim|trim|mid|minute|month|monthname|msgbox|now|oct|replace|rgb|right|rnd|round|scriptengine|scriptenginebuildversion|scriptenginemajorversion|scriptengineminorversion|second|setlocale|sgn|sin|space|split|sqr|strcomp|string|strreverse|tan|time|timer|timeserial|timevalue|typename|ubound|ucase|unescape|vartype|weekday|weekdayname|year)$/', + 'builtin' => '/^((?i)debug|err|match|regexp)$/', + 'reserved' => '/^((?i)empty|false|nothing|null|true|and|eqv|imp|is|mod|not|or|xor|call|class|end|const|public|private|dim|do|while|until|exit|loop|erase|execute|executeglobal|for|each|in|to|step|next|function|default|if|then|else|elseif|on|error|resume|goto|option|explicit|property|get|let|set|randomize|redim|preserve|select|case|stop|sub|wend|with)$/', + ), + ), + 0 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + ), + 4 => + array ( + ), + 5 => + array ( + 'constants' => '/^((?i)vbblack|vbred|vbgreen|vbyellow|vbblue|vbmagenta|vbcyan|vbwhite|vbbinarycompare|vbtextcompare|vbsunday|vbmonday|vbtuesday|vbwednesday|vbthursday|vbfriday|vbsaturday|vbusesystemdayofweek|vbfirstjan1|vbfirstfourdays|vbfirstfullweek|vbgeneraldate|vblongdate|vbshortdate|vblongtime|vbshorttime|vbobjecterror|vbokonly|vbokcancel|vbabortretryignore|vbyesnocancel|vbyesno|vbretrycancel|vbcritical|vbquestion|vbexclamation|vbinformation|vbdefaultbutton1|vbdefaultbutton2|vbdefaultbutton3|vbdefaultbutton4|vbapplicationmodal|vbsystemmodal|vbok|vbcancel|vbabort|vbretry|vbignore|vbyes|vbno|vbcr|vbcrlf|vbformfeed|vblf|vbnewline|vbnullchar|vbnullstring|vbtab|vbverticaltab|vbusedefault|vbtrue|vbfalse|vbempty|vbnull|vbinteger|vblong|vbsingle|vbdouble|vbcurrency|vbdate|vbstring|vbobject|vberror|vbboolean|vbvariant|vbdataobject|vbdecimal|vbbyte|vbarray)$/', + 'functions' => '/^((?i)abs|array|asc|atn|cbool|cbyte|ccur|cdate|cdbl|chr|cint|clng|cos|createobject|csng|cstr|date|dateadd|datediff|datepart|dateserial|datevalue|day|escape|eval|exp|filter|formatcurrency|formatdatetime|formatnumber|formatpercent|getlocale|getobject|getref|hex|hour|inputbox|instr|instrrev|int|fix|isarray|isdate|isempty|isnull|isnumeric|isobject|join|lbound|lcase|left|len|loadpicture|log|ltrim|rtrim|trim|mid|minute|month|monthname|msgbox|now|oct|replace|rgb|right|rnd|round|scriptengine|scriptenginebuildversion|scriptenginemajorversion|scriptengineminorversion|second|setlocale|sgn|sin|space|split|sqr|strcomp|string|strreverse|tan|time|timer|timeserial|timevalue|typename|ubound|ucase|unescape|vartype|weekday|weekdayname|year)$/', + 'builtin' => '/^((?i)debug|err|match|regexp)$/', + 'reserved' => '/^((?i)empty|false|nothing|null|true|and|eqv|imp|is|mod|not|or|xor|call|class|end|const|public|private|dim|do|while|until|exit|loop|erase|execute|executeglobal|for|each|in|to|step|next|function|default|if|then|else|elseif|on|error|resume|goto|option|explicit|property|get|let|set|randomize|redim|preserve|select|case|stop|sub|wend|with)$/', + ), + ), + 1 => + array ( + ), + 2 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + ), + 3 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + 4 => NULL, + 5 => NULL, + ), + 1 => + array ( + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + 3 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + ), + 0 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + ), + 1 => + array ( + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + 'constants' => 'builtin', + 'functions' => 'builtin', + 'builtin' => 'builtin', + 'reserved' => 'reserved', + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +} diff --git a/library/Text_Highlighter/Text/Highlighter/XML.php b/library/Text_Highlighter/Text/Highlighter/XML.php new file mode 100644 index 000000000..2d85db5fd --- /dev/null +++ b/library/Text_Highlighter/Text/Highlighter/XML.php @@ -0,0 +1,263 @@ +<?php +/** + * Auto-generated class. XML syntax highlighting + * + * PHP version 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @link http://pear.php.net/package/Text_Highlighter + * @category Text + * @package Text_Highlighter + * @version generated from: : xml.xml,v 1.1 2007/06/03 02:35:28 ssttoo Exp + * @author Andrey Demenev <demenev@gmail.com> + * + */ + +/** + * @ignore + */ + +require_once 'Text/Highlighter.php'; + +/** + * Auto-generated class. XML syntax highlighting + * + * @author Andrey Demenev <demenev@gmail.com> + * @category Text + * @package Text_Highlighter + * @copyright 2004-2006 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version Release: @package_version@ + * @link http://pear.php.net/package/Text_Highlighter + */ +class Text_Highlighter_XML extends Text_Highlighter +{ + var $_language = 'xml'; + + /** + * PHP4 Compatible Constructor + * + * @param array $options + * @access public + */ + function Text_Highlighter_XML($options=array()) + { + $this->__construct($options); + } + + + /** + * Constructor + * + * @param array $options + * @access public + */ + function __construct($options=array()) + { + + $this->_options = $options; + $this->_regs = array ( + -1 => '/((?i)\\<\\!\\[CDATA\\[)|((?i)\\<!--)|((?i)\\<[\\?\\/]?)|((?i)(&|%)[\\w\\-\\.]+;)/', + 0 => '//', + 1 => '//', + 2 => '/((?i)(?<=[\\<\\/?])[\\w\\-\\:]+)|((?i)[\\w\\-\\:]+)|((?i)")/', + 3 => '/((?i)(&|%)[\\w\\-\\.]+;)/', + ); + $this->_counts = array ( + -1 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + 3 => 1, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 0, + 1 => 0, + 2 => 0, + ), + 3 => + array ( + 0 => 1, + ), + ); + $this->_delim = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'comment', + 2 => 'brackets', + 3 => '', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => '', + 1 => '', + 2 => 'quotes', + ), + 3 => + array ( + 0 => '', + ), + ); + $this->_inner = array ( + -1 => + array ( + 0 => 'comment', + 1 => 'comment', + 2 => 'code', + 3 => 'special', + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => 'reserved', + 1 => 'var', + 2 => 'string', + ), + 3 => + array ( + 0 => 'special', + ), + ); + $this->_end = array ( + 0 => '/(?i)\\]\\]\\>/', + 1 => '/(?i)--\\>/', + 2 => '/(?i)[\\/\\?]?\\>/', + 3 => '/(?i)"/', + ); + $this->_states = array ( + -1 => + array ( + 0 => 0, + 1 => 1, + 2 => 2, + 3 => -1, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => -1, + 1 => -1, + 2 => 3, + ), + 3 => + array ( + 0 => -1, + ), + ); + $this->_keywords = array ( + -1 => + array ( + 0 => -1, + 1 => -1, + 2 => -1, + 3 => + array ( + ), + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => -1, + ), + 3 => + array ( + 0 => + array ( + ), + ), + ); + $this->_parts = array ( + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => NULL, + 1 => NULL, + 2 => NULL, + ), + 3 => + array ( + 0 => NULL, + ), + ); + $this->_subst = array ( + -1 => + array ( + 0 => false, + 1 => false, + 2 => false, + 3 => false, + ), + 0 => + array ( + ), + 1 => + array ( + ), + 2 => + array ( + 0 => false, + 1 => false, + 2 => false, + ), + 3 => + array ( + 0 => false, + ), + ); + $this->_conditions = array ( + ); + $this->_kwmap = array ( + ); + $this->_defClass = 'code'; + $this->_checkDefines(); + } + +}
\ No newline at end of file diff --git a/library/Text_Highlighter/abap.xml b/library/Text_Highlighter/abap.xml new file mode 100644 index 000000000..06d26e507 --- /dev/null +++ b/library/Text_Highlighter/abap.xml @@ -0,0 +1,802 @@ +<?xml version="1.0"?> +<!-- $Id: abap.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="abap" case = "no"> + + <authors> + <author name="Stoyan Stefanov" email ="ssttoo@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <region name="comment" start="^\*|"" end="/$/m" innerClass="comment"> + <contains all="no"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" /> + + <block name="identifier" match="[a-zA-Z_]\w*" innerClass="identifier" contained="yes"/> + + <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" contained="yes"/> + + <block name="integer" match="\d\d*|\b0\b" innerClass="number" contained="yes"/> + + <block name="octinteger" match="0[0-7]+" innerClass="number" contained="yes"/> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/> + + + <block name="identifier" match="[a-z_\-]\w*" innerClass="identifier" case="no"/> + + <keywords name="sy" inherits="identifier" innerClass="reserved"> + <keyword match="SCREEN-NAME"/> + <keyword match="SCREEN-GROUP1"/> + <keyword match="SCREEN-GROUP2"/> + <keyword match="SCREEN-GROUP3"/> + <keyword match="SCREEN-GROUP4"/> + <keyword match="SCREEN-REQUIRED"/> + <keyword match="SCREEN-INPUT"/> + <keyword match="SCREEN-OUTPUT"/> + <keyword match="SCREEN-INTENSIFIED"/> + <keyword match="SCREEN-INVISIBLE"/> + <keyword match="SCREEN-LENGTH"/> + <keyword match="SCREEN-ACTIVE"/> + <keyword match="SY-INDEX"/> + <keyword match="SY-PAGNO"/> + <keyword match="SY-TABIX"/> + <keyword match="SY-TFILL"/> + <keyword match="SY-TLOPC"/> + <keyword match="SY-TMAXL"/> + <keyword match="SY-TOCCU"/> + <keyword match="SY-TTABC"/> + <keyword match="SY-TSTIS"/> + <keyword match="SY-TTABI"/> + <keyword match="SY-DBCNT"/> + <keyword match="SY-FDPOS"/> + <keyword match="SY-COLNO"/> + <keyword match="SY-LINCT"/> + <keyword match="SY-LINNO"/> + <keyword match="SY-LINSZ"/> + <keyword match="SY-PAGCT"/> + <keyword match="SY-MACOL"/> + <keyword match="SY-MAROW"/> + <keyword match="SY-TLENG"/> + <keyword match="SY-SFOFF"/> + <keyword match="SY-WILLI"/> + <keyword match="SY-LILLI"/> + <keyword match="SY-SUBRC"/> + <keyword match="SY-FLENG"/> + <keyword match="SY-CUCOL"/> + <keyword match="SY-CUROW"/> + <keyword match="SY-LSIND"/> + <keyword match="SY-LISTI"/> + <keyword match="SY-STEPL"/> + <keyword match="SY-TPAGI"/> + <keyword match="SY-WINX1"/> + <keyword match="SY-WINY1"/> + <keyword match="SY-WINX2"/> + <keyword match="SY-WINY2"/> + <keyword match="SY-WINCO"/> + <keyword match="SY-WINRO"/> + <keyword match="SY-WINDI"/> + <keyword match="SY-SROWS"/> + <keyword match="SY-SCOLS"/> + <keyword match="SY-LOOPC"/> + <keyword match="SY-FOLEN"/> + <keyword match="SY-FODEC"/> + <keyword match="SY-TZONE"/> + <keyword match="SY-DAYST"/> + <keyword match="SY-FTYPE"/> + <keyword match="SY-APPLI"/> + <keyword match="SY-FDAYW"/> + <keyword match="SY-CCURS"/> + <keyword match="SY-CCURT"/> + <keyword match="SY-DEBUG"/> + <keyword match="SY-CTYPE"/> + <keyword match="SY-INPUT"/> + <keyword match="SY-LANGU"/> + <keyword match="SY-MODNO"/> + <keyword match="SY-BATCH"/> + <keyword match="SY-BINPT"/> + <keyword match="SY-CALLD"/> + <keyword match="SY-DYNNR"/> + <keyword match="SY-DYNGR"/> + <keyword match="SY-NEWPA"/> + <keyword match="SY-PRI40"/> + <keyword match="SY-RSTRT"/> + <keyword match="SY-WTITL"/> + <keyword match="SY-CPAGE"/> + <keyword match="SY-DBNAM"/> + <keyword match="SY-MANDT"/> + <keyword match="SY-PREFX"/> + <keyword match="SY-FMKEY"/> + <keyword match="SY-PEXPI"/> + <keyword match="SY-PRINI"/> + <keyword match="SY-PRIMM"/> + <keyword match="SY-PRREL"/> + <keyword match="SY-PLAYO"/> + <keyword match="SY-PRBIG"/> + <keyword match="SY-PLAYP"/> + <keyword match="SY-PRNEW"/> + <keyword match="SY-PRLOG"/> + <keyword match="SY-PDEST"/> + <keyword match="SY-PLIST"/> + <keyword match="SY-PAUTH"/> + <keyword match="SY-PRDSN"/> + <keyword match="SY-PNWPA"/> + <keyword match="SY-CALLR"/> + <keyword match="SY-REPI2"/> + <keyword match="SY-RTITL"/> + <keyword match="SY-PRREC"/> + <keyword match="SY-PRTXT"/> + <keyword match="SY-PRABT"/> + <keyword match="SY-LPASS"/> + <keyword match="SY-NRPAG"/> + <keyword match="SY-PAART"/> + <keyword match="SY-PRCOP"/> + <keyword match="SY-BATZS"/> + <keyword match="SY-BSPLD"/> + <keyword match="SY-BREP4"/> + <keyword match="SY-BATZO"/> + <keyword match="SY-BATZD"/> + <keyword match="SY-BATZW"/> + <keyword match="SY-BATZM"/> + <keyword match="SY-CTABL"/> + <keyword match="SY-DBSYS"/> + <keyword match="SY-DCSYS"/> + <keyword match="SY-MACDB"/> + <keyword match="SY-SYSID"/> + <keyword match="SY-OPSYS"/> + <keyword match="SY-PFKEY"/> + <keyword match="SY-SAPRL"/> + <keyword match="SY-TCODE"/> + <keyword match="SY-UCOMM"/> + <keyword match="SY-CFWAE"/> + <keyword match="SY-CHWAE"/> + <keyword match="SY-SPONO"/> + <keyword match="SY-SPONR"/> + <keyword match="SY-WAERS"/> + <keyword match="SY-CDATE"/> + <keyword match="SY-DATUM"/> + <keyword match="SY-SLSET"/> + <keyword match="SY-SUBTY"/> + <keyword match="SY-SUBCS"/> + <keyword match="SY-GROUP"/> + <keyword match="SY-FFILE"/> + <keyword match="SY-UZEIT"/> + <keyword match="SY-DSNAM"/> + <keyword match="SY-REPID"/> + <keyword match="SY-TABID"/> + <keyword match="SY-TFDSN"/> + <keyword match="SY-UNAME"/> + <keyword match="SY-LSTAT"/> + <keyword match="SY-ABCDE"/> + <keyword match="SY-MARKY"/> + <keyword match="SY-SFNAM"/> + <keyword match="SY-TNAME"/> + <keyword match="SY-MSGLI"/> + <keyword match="SY-TITLE"/> + <keyword match="SY-ENTRY"/> + <keyword match="SY-LISEL"/> + <keyword match="SY-ULINE"/> + <keyword match="SY-XCODE"/> + <keyword match="SY-CPROG"/> + <keyword match="SY-XPROG"/> + <keyword match="SY-XFORM"/> + <keyword match="SY-LDBPG"/> + <keyword match="SY-TVAR0"/> + <keyword match="SY-TVAR1"/> + <keyword match="SY-TVAR2"/> + <keyword match="SY-TVAR3"/> + <keyword match="SY-TVAR4"/> + <keyword match="SY-TVAR5"/> + <keyword match="SY-TVAR6"/> + <keyword match="SY-TVAR7"/> + <keyword match="SY-TVAR8"/> + <keyword match="SY-TVAR9"/> + <keyword match="SY-MSGID"/> + <keyword match="SY-MSGTY"/> + <keyword match="SY-MSGNO"/> + <keyword match="SY-MSGV1"/> + <keyword match="SY-MSGV2"/> + <keyword match="SY-MSGV3"/> + <keyword match="SY-MSGV4"/> + <keyword match="SY-ONCOM"/> + <keyword match="SY-VLINE"/> + <keyword match="SY-WINSL"/> + <keyword match="SY-STACO"/> + <keyword match="SY-STARO"/> + <keyword match="SY-DATAR"/> + <keyword match="SY-HOST"/> + <keyword match="SY-LOCDB"/> + <keyword match="SY-LOCOP"/> + <keyword match="SY-DATLO"/> + <keyword match="SY-TIMLO"/> + <keyword match="SY-ZONLO"/> + <keyword match="SYST-INDEX"/> + <keyword match="SYST-PAGNO"/> + <keyword match="SYST-TABIX"/> + <keyword match="SYST-TFILL"/> + <keyword match="SYST-TLOPC"/> + <keyword match="SYST-TMAXL"/> + <keyword match="SYST-TOCCU"/> + <keyword match="SYST-TTABC"/> + <keyword match="SYST-TSTIS"/> + <keyword match="SYST-TTABI"/> + <keyword match="SYST-DBCNT"/> + <keyword match="SYST-FDPOS"/> + <keyword match="SYST-COLNO"/> + <keyword match="SYST-LINCT"/> + <keyword match="SYST-LINNO"/> + <keyword match="SYST-LINSZ"/> + <keyword match="SYST-PAGCT"/> + <keyword match="SYST-MACOL"/> + <keyword match="SYST-MAROW"/> + <keyword match="SYST-TLENG"/> + <keyword match="SYST-SFOFF"/> + <keyword match="SYST-WILLI"/> + <keyword match="SYST-LILLI"/> + <keyword match="SYST-SUBRC"/> + <keyword match="SYST-FLENG"/> + <keyword match="SYST-CUCOL"/> + <keyword match="SYST-CUROW"/> + <keyword match="SYST-LSIND"/> + <keyword match="SYST-LISTI"/> + <keyword match="SYST-STEPL"/> + <keyword match="SYST-TPAGI"/> + <keyword match="SYST-WINX1"/> + <keyword match="SYST-WINY1"/> + <keyword match="SYST-WINX2"/> + <keyword match="SYST-WINY2"/> + <keyword match="SYST-WINCO"/> + <keyword match="SYST-WINRO"/> + <keyword match="SYST-WINDI"/> + <keyword match="SYST-SROWS"/> + <keyword match="SYST-SCOLS"/> + <keyword match="SYST-LOOPC"/> + <keyword match="SYST-FOLEN"/> + <keyword match="SYST-FODEC"/> + <keyword match="SYST-TZONE"/> + <keyword match="SYST-DAYST"/> + <keyword match="SYST-FTYPE"/> + <keyword match="SYST-APPLI"/> + <keyword match="SYST-FDAYW"/> + <keyword match="SYST-CCURS"/> + <keyword match="SYST-CCURT"/> + <keyword match="SYST-DEBUG"/> + <keyword match="SYST-CTYPE"/> + <keyword match="SYST-INPUT"/> + <keyword match="SYST-LANGU"/> + <keyword match="SYST-MODNO"/> + <keyword match="SYST-BATCH"/> + <keyword match="SYST-BINPT"/> + <keyword match="SYST-CALLD"/> + <keyword match="SYST-DYNNR"/> + <keyword match="SYST-DYNGR"/> + <keyword match="SYST-NEWPA"/> + <keyword match="SYST-PRI40"/> + <keyword match="SYST-RSTRT"/> + <keyword match="SYST-WTITL"/> + <keyword match="SYST-CPAGE"/> + <keyword match="SYST-DBNAM"/> + <keyword match="SYST-MANDT"/> + <keyword match="SYST-PREFX"/> + <keyword match="SYST-FMKEY"/> + <keyword match="SYST-PEXPI"/> + <keyword match="SYST-PRINI"/> + <keyword match="SYST-PRIMM"/> + <keyword match="SYST-PRREL"/> + <keyword match="SYST-PLAYO"/> + <keyword match="SYST-PRBIG"/> + <keyword match="SYST-PLAYP"/> + <keyword match="SYST-PRNEW"/> + <keyword match="SYST-PRLOG"/> + <keyword match="SYST-PDEST"/> + <keyword match="SYST-PLIST"/> + <keyword match="SYST-PAUTH"/> + <keyword match="SYST-PRDSN"/> + <keyword match="SYST-PNWPA"/> + <keyword match="SYST-CALLR"/> + <keyword match="SYST-REPI2"/> + <keyword match="SYST-RTITL"/> + <keyword match="SYST-PRREC"/> + <keyword match="SYST-PRTXT"/> + <keyword match="SYST-PRABT"/> + <keyword match="SYST-LPASS"/> + <keyword match="SYST-NRPAG"/> + <keyword match="SYST-PAART"/> + <keyword match="SYST-PRCOP"/> + <keyword match="SYST-BATZS"/> + <keyword match="SYST-BSPLD"/> + <keyword match="SYST-BREP4"/> + <keyword match="SYST-BATZO"/> + <keyword match="SYST-BATZD"/> + <keyword match="SYST-BATZW"/> + <keyword match="SYST-BATZM"/> + <keyword match="SYST-CTABL"/> + <keyword match="SYST-DBSYS"/> + <keyword match="SYST-DCSYS"/> + <keyword match="SYST-MACDB"/> + <keyword match="SYST-SYSID"/> + <keyword match="SYST-OPSYS"/> + <keyword match="SYST-PFKEY"/> + <keyword match="SYST-SAPRL"/> + <keyword match="SYST-TCODE"/> + <keyword match="SYST-UCOMM"/> + <keyword match="SYST-CFWAE"/> + <keyword match="SYST-CHWAE"/> + <keyword match="SYST-SPONO"/> + <keyword match="SYST-SPONR"/> + <keyword match="SYST-WAERS"/> + <keyword match="SYST-CDATE"/> + <keyword match="SYST-DATUM"/> + <keyword match="SYST-SLSET"/> + <keyword match="SYST-SUBTY"/> + <keyword match="SYST-SUBCS"/> + <keyword match="SYST-GROUP"/> + <keyword match="SYST-FFILE"/> + <keyword match="SYST-UZEIT"/> + <keyword match="SYST-DSNAM"/> + <keyword match="SYST-REPID"/> + <keyword match="SYST-TABID"/> + <keyword match="SYST-TFDSN"/> + <keyword match="SYST-UNAME"/> + <keyword match="SYST-LSTAT"/> + <keyword match="SYST-ABCDE"/> + <keyword match="SYST-MARKY"/> + <keyword match="SYST-SFNAM"/> + <keyword match="SYST-TNAME"/> + <keyword match="SYST-MSGLI"/> + <keyword match="SYST-TITLE"/> + <keyword match="SYST-ENTRY"/> + <keyword match="SYST-LISEL"/> + <keyword match="SYST-ULINE"/> + <keyword match="SYST-XCODE"/> + <keyword match="SYST-CPROG"/> + <keyword match="SYST-XPROG"/> + <keyword match="SYST-XFORM"/> + <keyword match="SYST-LDBPG"/> + <keyword match="SYST-TVAR0"/> + <keyword match="SYST-TVAR1"/> + <keyword match="SYST-TVAR2"/> + <keyword match="SYST-TVAR3"/> + <keyword match="SYST-TVAR4"/> + <keyword match="SYST-TVAR5"/> + <keyword match="SYST-TVAR6"/> + <keyword match="SYST-TVAR7"/> + <keyword match="SYST-TVAR8"/> + <keyword match="SYST-TVAR9"/> + <keyword match="SYST-MSGID"/> + <keyword match="SYST-MSGTY"/> + <keyword match="SYST-MSGNO"/> + <keyword match="SYST-MSGV1"/> + <keyword match="SYST-MSGV2"/> + <keyword match="SYST-MSGV3"/> + <keyword match="SYST-MSGV4"/> + <keyword match="SYST-ONCOM"/> + <keyword match="SYST-VLINE"/> + <keyword match="SYST-WINSL"/> + <keyword match="SYST-STACO"/> + <keyword match="SYST-STARO"/> + <keyword match="SYST-DATAR"/> + <keyword match="SYST-HOST"/> + <keyword match="SYST-LOCDB"/> + <keyword match="SYST-LOCOP"/> + <keyword match="SYST-DATLO"/> + <keyword match="SYST-TIMLO"/> + <keyword match="SYST-ZONLO"/> + </keywords> + + + <keywords name="reserved" inherits="identifier" innerClass="reserved"> + <keyword match="ABS"/> + <keyword match="ACOS"/> + <keyword match="ADD"/> + <keyword match="ADD-CORRESPONDING"/> + <keyword match="ADJACENT"/> + <keyword match="AFTER"/> + <keyword match="ALIASES"/> + <keyword match="ALL"/> + <keyword match="ANALYZER"/> + <keyword match="AND"/> + <keyword match="ANY"/> + <keyword match="APPEND"/> + <keyword match="AS"/> + <keyword match="ASCENDING"/> + <keyword match="ASIN"/> + <keyword match="ASSIGN"/> + <keyword match="ASSIGNED"/> + <keyword match="ASSIGNING"/> + <keyword match="AT"/> + <keyword match="ATAN"/> + <keyword match="AUTHORITY-CHECK"/> + <keyword match="AVG"/> + <keyword match="BACK"/> + <keyword match="BEFORE"/> + <keyword match="BEGIN"/> + <keyword match="BINARY"/> + <keyword match="BIT"/> + <keyword match="BIT-AND"/> + <keyword match="BIT-NOT"/> + <keyword match="BIT-OR"/> + <keyword match="BIT-XOR"/> + <keyword match="BLANK"/> + <keyword match="BLOCK"/> + <keyword match="BREAK-POINT"/> + <keyword match="BUFFER"/> + <keyword match="BY"/> + <keyword match="C"/> + <keyword match="CALL"/> + <keyword match="CASE"/> + <keyword match="CATCH"/> + <keyword match="CEIL"/> + <keyword match="CENTERED"/> + <keyword match="CHAIN"/> + <keyword match="CHANGE"/> + <keyword match="CHANGING"/> + <keyword match="CHECK"/> + <keyword match="CHECKBOX"/> + <keyword match="CLASS"/> + <keyword match="CLASS-DATA"/> + <keyword match="CLASS-EVENTS"/> + <keyword match="CLASS-METHODS"/> + <keyword match="CLASS-POOL"/> + <keyword match="CLEAR"/> + <keyword match="CLIENT"/> + <keyword match="CLOSE"/> + <keyword match="CNT"/> + <keyword match="CODE"/> + <keyword match="COLLECT"/> + <keyword match="COLOR"/> + <keyword match="COMMENT"/> + <keyword match="COMMIT"/> + <keyword match="COMMUNICATION"/> + <keyword match="COMPUTE"/> + <keyword match="CONCATENATE"/> + <keyword match="CONDENSE"/> + <keyword match="CONSTANTS"/> + <keyword match="CONTEXT"/> + <keyword match="CONTEXTS"/> + <keyword match="CONTINUE"/> + <keyword match="CONTROL"/> + <keyword match="CONTROLS"/> + <keyword match="CONVERT"/> + <keyword match="COPY"/> + <keyword match="CORRESPONDING"/> + <keyword match="COS"/> + <keyword match="COSH"/> + <keyword match="COUNT"/> + <keyword match="COUNTRY"/> + <keyword match="CREATE"/> + <keyword match="CURRENCY"/> + <keyword match="CURSOR"/> + <keyword match="CUSTOMER-FUNCTION"/> + <keyword match="DATA"/> + <keyword match="DATABASE"/> + <keyword match="DATASET"/> + <keyword match="DELETE"/> + <keyword match="DECIMALS"/> + <keyword match="DEFAULT"/> + <keyword match="DEFINE"/> + <keyword match="DELETE"/> + <keyword match="DEMAND"/> + <keyword match="DESCENDING"/> + <keyword match="DESCRIBE"/> + <keyword match="DIALOG"/> + <keyword match="DISTINCT"/> + <keyword match="DIV"/> + <keyword match="DIVIDE"/> + <keyword match="DIVIDE-CORRESPONDING"/> + <keyword match="DO"/> + <keyword match="DUPLICATES"/> + <keyword match="DYNPRO"/> + <keyword match="EDIT"/> + <keyword match="EDITOR-CALL"/> + <keyword match="ELSE"/> + <keyword match="ELSEIF"/> + <keyword match="END"/> + <keyword match="END-OF-DEFINITION"/> + <keyword match="END-OF-PAGE"/> + <keyword match="END-OF-SELECTION"/> + <keyword match="ENDAT"/> + <keyword match="ENDCASE"/> + <keyword match="ENDCATCH"/> + <keyword match="ENDCHAIN"/> + <keyword match="ENDCLASS"/> + <keyword match="ENDDO"/> + <keyword match="ENDEXEC"/> + <keyword match="ENDFORM"/> + <keyword match="ENDFUNCTION"/> + <keyword match="ENDIF"/> + <keyword match="ENDINTERFACE"/> + <keyword match="ENDLOOP"/> + <keyword match="ENDMETHOD"/> + <keyword match="ENDMODULE"/> + <keyword match="ENDON"/> + <keyword match="ENDPROVIDE"/> + <keyword match="ENDSELECT"/> + <keyword match="ENDWHILE"/> + <keyword match="ENTRIES"/> + <keyword match="EVENTS"/> + <keyword match="EXEC"/> + <keyword match="EXIT"/> + <keyword match="EXIT-COMMAND"/> + <keyword match="EXP"/> + <keyword match="EXPONENT"/> + <keyword match="EXPORT"/> + <keyword match="EXPORTING"/> + <keyword match="EXCEPTIONS"/> + <keyword match="EXTENDED"/> + <keyword match="EXTRACT"/> + <keyword match="FETCH"/> + <keyword match="FIELD"/> + <keyword match="FIELD-GROUPS"/> + <keyword match="FIELD-SYMBOLS"/> + <keyword match="FIELDS"/> + <keyword match="FLOOR"/> + <keyword match="FOR"/> + <keyword match="FORM"/> + <keyword match="FORMAT"/> + <keyword match="FRAC"/> + <keyword match="FRAME"/> + <keyword match="FREE"/> + <keyword match="FROM"/> + <keyword match="FUNCTION"/> + <keyword match="FUNCTION-POOL"/> + <keyword match="GENERATE"/> + <keyword match="GET"/> + <keyword match="GROUP"/> + <keyword match="HASHED"/> + <keyword match="HEADER"/> + <keyword match="HELP-ID"/> + <keyword match="HELP-REQUEST"/> + <keyword match="HIDE"/> + <keyword match="HOTSPOT"/> + <keyword match="ICON"/> + <keyword match="ID"/> + <keyword match="IF"/> + <keyword match="IMPORT"/> + <keyword match="IMPORTING"/> + <keyword match="INCLUDE"/> + <keyword match="INDEX"/> + <keyword match="INFOTYPES"/> + <keyword match="INITIALIZATION"/> + <keyword match="INNER"/> + <keyword match="INPUT"/> + <keyword match="INSERT"/> + <keyword match="INTENSIFIED"/> + <keyword match="INTERFACE"/> + <keyword match="INTERFACE-POOL"/> + <keyword match="INTERFACES"/> + <keyword match="INTO"/> + <keyword match="INVERSE"/> + <keyword match="JOIN"/> + <keyword match="KEY"/> + <keyword match="LANGUAGE"/> + <keyword match="LAST"/> + <keyword match="LEAVE"/> + <keyword match="LEFT"/> + <keyword match="LEFT-JUSTIFIED"/> + <keyword match="LIKE"/> + <keyword match="LINE"/> + <keyword match="LINE-COUNT"/> + <keyword match="LINE-SELECTION"/> + <keyword match="LINE-SIZE"/> + <keyword match="LINES"/> + <keyword match="LIST-PROCESSING"/> + <keyword match="LOAD"/> + <keyword match="LOAD-OF-PROGRAM"/> + <keyword match="LOCAL"/> + <keyword match="LOCALE"/> + <keyword match="LOG"/> + <keyword match="LOG10"/> + <keyword match="LOOP"/> + <keyword match="M"/> + <keyword match="MARGIN"/> + <keyword match="MASK"/> + <keyword match="MATCHCODE"/> + <keyword match="MAX"/> + <keyword match="MEMORY"/> + <keyword match="MESSAGE"/> + <keyword match="MESSAGE-ID"/> + <keyword match="MESSAGES"/> + <keyword match="METHOD"/> + <keyword match="METHODS"/> + <keyword match="MIN"/> + <keyword match="MOD"/> + <keyword match="MODE"/> + <keyword match="MODIF"/> + <keyword match="MODIFY"/> + <keyword match="MODULE"/> + <keyword match="MOVE"/> + <keyword match="MOVE-CORRESPONDING"/> + <keyword match="MULTIPLY"/> + <keyword match="MULTIPLY-CORRESPONDING"/> + <keyword match="NEW"/> + <keyword match="NEW-LINE"/> + <keyword match="NEW-PAGE"/> + <keyword match="NEXT"/> + <keyword match="NO"/> + <keyword match="NO-GAP"/> + <keyword match="NO-GAPS"/> + <keyword match="NO-HEADING"/> + <keyword match="NO-SCROLLING"/> + <keyword match="NO-SIGN"/> + <keyword match="NO-TITLE"/> + <keyword match="NO-ZERO"/> + <keyword match="NODES"/> + <keyword match="NON-UNIQUE"/> + <keyword match="O"/> + <keyword match="OBJECT"/> + <keyword match="OBLIGATORY"/> + <keyword match="OCCURS"/> + <keyword match="OF"/> + <keyword match="OFF"/> + <keyword match="ON"/> + <keyword match="OPEN"/> + <keyword match="OR"/> + <keyword match="ORDER"/> + <keyword match="OTHERS"/> + <keyword match="OUTER"/> + <keyword match="OUTPUT"/> + <keyword match="OVERLAY"/> + <keyword match="PACK"/> + <keyword match="PAGE"/> + <keyword match="PARAMETER"/> + <keyword match="PARAMETERS"/> + <keyword match="PERFORM"/> + <keyword match="PF-STATUS"/> + <keyword match="POSITION"/> + <keyword match="PRINT"/> + <keyword match="PRINT-CONTROL"/> + <keyword match="PRIVATE"/> + <keyword match="PROCESS"/> + <keyword match="PROGRAM"/> + <keyword match="PROPERTY"/> + <keyword match="PROTECTED"/> + <keyword match="PROVIDE"/> + <keyword match="PUBLIC"/> + <keyword match="PUT"/> + <keyword match="RADIOBUTTON"/> + <keyword match="RAISE"/> + <keyword match="RAISING"/> + <keyword match="RANGE"/> + <keyword match="RANGES"/> + <keyword match="READ"/> + <keyword match="RECEIVE"/> + <keyword match="REFRESH"/> + <keyword match="REJECT"/> + <keyword match="REPLACE"/> + <keyword match="REPORT"/> + <keyword match="REQUESTED"/> + <keyword match="RESERVE"/> + <keyword match="RESET"/> + <keyword match="RIGHT-JUSTIFIED"/> + <keyword match="ROLLBACK"/> + <keyword match="ROUND"/> + <keyword match="ROWS"/> + <keyword match="RTTI"/> + <keyword match="RUN"/> + <keyword match="SCAN"/> + <keyword match="SCREEN"/> + <keyword match="SEARCH"/> + <keyword match="SEPARATED"/> + <keyword match="SCROLL"/> + <keyword match="SCROLL-BOUNDARY"/> + <keyword match="SEARCH"/> + <keyword match="SELECT"/> + <keyword match="SELECT-OPTIONS"/> + <keyword match="SELECTION-SCREEN"/> + <keyword match="SELECTION-TABLE"/> + <keyword match="SET"/> + <keyword match="SHARED"/> + <keyword match="SHIFT"/> + <keyword match="SIGN"/> + <keyword match="SIN"/> + <keyword match="SINGLE"/> + <keyword match="SINH"/> + <keyword match="SIZE"/> + <keyword match="SKIP"/> + <keyword match="SORT"/> + <keyword match="SORTED"/> + <keyword match="SPLIT"/> + <keyword match="SQL"/> + <keyword match="SQRT"/> + <keyword match="STAMP"/> + <keyword match="STANDARD"/> + <keyword match="START-OF-SELECTION"/> + <keyword match="STATICS"/> + <keyword match="STOP"/> + <keyword match="STRING"/> + <keyword match="STRLEN"/> + <keyword match="STRUCTURE"/> + <keyword match="SUBMIT"/> + <keyword match="SUBTRACT"/> + <keyword match="SUBTRACT-CORRESPONDING"/> + <keyword match="SUM"/> + <keyword match="SUPPLY"/> + <keyword match="SUPPRESS"/> + <keyword match="SYMBOL"/> + <keyword match="SYNTAX-CHECK"/> + <keyword match="SYNTAX-TRACE"/> + <keyword match="SYSTEM-CALL"/> + <keyword match="SYSTEM-EXCEPTIONS"/> + <keyword match="TABLE"/> + <keyword match="TABLE_LINE"/> + <keyword match="TABLES"/> + <keyword match="TAN"/> + <keyword match="TANH"/> + <keyword match="TEXT"/> + <keyword match="TEXTPOOL"/> + <keyword match="TIME"/> + <keyword match="TIMES"/> + <keyword match="TITLE"/> + <keyword match="TITLEBAR"/> + <keyword match="TO"/> + <keyword match="TOP-OF-PAGE"/> + <keyword match="TRANSACTION"/> + <keyword match="TRANSFER"/> + <keyword match="TRANSLATE"/> + <keyword match="TRANSPORTING"/> + <keyword match="TRUNC"/> + <keyword match="TYPE"/> + <keyword match="TYPE-POOL"/> + <keyword match="TYPE-POOLS"/> + <keyword match="TYPES"/> + <keyword match="ULINE"/> + <keyword match="UNDER"/> + <keyword match="UNIQUE"/> + <keyword match="UNIT"/> + <keyword match="UNPACK"/> + <keyword match="UP"/> + <keyword match="UPDATE"/> + <keyword match="USER-COMMAND"/> + <keyword match="USING"/> + <keyword match="VALUE"/> + <keyword match="VALUE-REQUEST"/> + <keyword match="VALUES"/> + <keyword match="VARY"/> + <keyword match="WHEN"/> + <keyword match="WHERE"/> + <keyword match="WHILE"/> + <keyword match="WINDOW"/> + <keyword match="WITH"/> + <keyword match="WITH-TITLE"/> + <keyword match="WORK"/> + <keyword match="WRITE"/> + <keyword match="X"/> + <keyword match="XSTRING"/> + <keyword match="Z"/> + <keyword match="ZONE"/> + </keywords> + + + <keywords name="constants" inherits="identifier" innerClass="reserved"> + <keyword match="INITIAL"/> + <keyword match="NULL"/> + <keyword match="SPACE"/> + <keyword match="COL_BACKGROUND"/> + <keyword match="COL_HEADING"/> + <keyword match="COL_NORMAL"/> + <keyword match="COL_TOTAL"/> + <keyword match="COL_KEY"/> + <keyword match="COL_POSITIVE"/> + <keyword match="COL_NEGATIVE"/> + <keyword match="COL_GROUP"/> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/avrc.xml b/library/Text_Highlighter/avrc.xml new file mode 100644 index 000000000..dec571e13 --- /dev/null +++ b/library/Text_Highlighter/avrc.xml @@ -0,0 +1,316 @@ +<?xml version="1.0"?> +<!-- $Id: avrc.xml,v 1.1 2008-07-31 23:05:38 ssttoo Exp $ --> + +<highlight lang="AVRC" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <comment> + C/C++ highlighter specific to Atmel AVR microcontrollers + </comment> + + <default innerClass="code" /> + + <block name="escaped" match="\\" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""/> + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <block name="hexinteger" match="\b0[xX][\da-f]+" innerClass="number"/> + <block name="integer" match="\b\d\d*|\b0\b" innerClass="number"/> + <block name="octinteger" match="\b0[0-7]+" innerClass="number"/> + <block name="float" match="\b(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + + <region name="strincl" delimClass="quotes" innerClass="string" start="<" end=">"> + <onlyin region="include" /> + </region> + + <!-- <block name="preprocessor" match="^#[azAZ_]\w*" innerClass="prepro"/> --> + <region name="include" innerClass="prepro" start="/^[ \t]*#include/m" end="/(?<!\\)$/m"> + <contains region="strdouble"/> + <contains region="strincl"/> + </region> + + <region name="preprocessor" delimClass="prepro" innerClass="code" start="/^[ \t]*#[ \t]*[a-z]+/mi" end="/(?<!\\)$/m"> + <contains region="comment"/> + <contains region="mlcomment"/> + <contains region="strdouble"/> + <contains region="brackets"/> + <contains region="block"/> + <contains block="identifier"/> + <contains block="integer"/> + <contains block="hexinteger"/> + <contains block="octinteger"/> + <contains block="float"/> + + </region> + + <block name="number" match="\d*\.?\d+" innerClass="number"/> + + + <region name="mlcomment" innerClass="mlcomment" start="\/\*" end="\*\/" > + <contains block="cvstag"/> + </region> + + <block name="cvstag" match="\$\w+\s*:.+\$" innerClass="inlinedoc"> + + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <region name="comment" start="\/\/.+" end="/$/m" innerClass="comment" delimClass="comment"> + <contains block="cvstag"/> + </region> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes"> + <keyword match="and" /> + <keyword match="and_eq" /> + <keyword match="asm" /> + + <keyword match="bitand" /> + <keyword match="bitor" /> + <keyword match="break" /> + <keyword match="case" /> + <keyword match="catch" /> + <keyword match="compl" /> + + <keyword match="const_cast" /> + <keyword match="continue" /> + <keyword match="default" /> + <keyword match="delete" /> + <keyword match="do" /> + <keyword match="dynamic_cast" /> + + <keyword match="else" /> + <keyword match="for" /> + <keyword match="fortran" /> + <keyword match="friend" /> + <keyword match="goto" /> + <keyword match="if" /> + + <keyword match="new" /> + <keyword match="not" /> + <keyword match="not_eq" /> + <keyword match="operator" /> + <keyword match="or" /> + <keyword match="or_eq" /> + + <keyword match="private" /> + <keyword match="protected" /> + <keyword match="public" /> + <keyword match="reinterpret_cast" /> + <keyword match="return" /> + <keyword match="sizeof" /> + + <keyword match="static_cast" /> + <keyword match="switch" /> + <keyword match="this" /> + <keyword match="throw" /> + <keyword match="try" /> + <keyword match="typeid" /> + + <keyword match="using" /> + <keyword match="while" /> + <keyword match="xor" /> + <keyword match="xor_eq" /> + + <keyword match="false" /> + <keyword match="true" /> + </keywords> + + <keywords name="registers" inherits="identifier" innerClass="reserved" case="yes"> + <keyword match="ACSR" /> + <keyword match="ADCH" /> + <keyword match="ADCL" /> + <keyword match="ADCSRA" /> + <keyword match="ADMUX" /> + <keyword match="ASSR" /> + <keyword match="DDRA" /> + <keyword match="DDRB" /> + <keyword match="DDRC" /> + <keyword match="DDRD" /> + <keyword match="DDRE" /> + <keyword match="DDRF" /> + <keyword match="DDRG" /> + <keyword match="EEARH" /> + <keyword match="EEARL" /> + <keyword match="EECR" /> + <keyword match="EEDR" /> + <keyword match="EICRA" /> + <keyword match="EICRB" /> + <keyword match="EIFR" /> + <keyword match="EIMSK" /> + <keyword match="ETIFR" /> + <keyword match="ETIMSK" /> + <keyword match="GICR" /> + <keyword match="GIFR" /> + <keyword match="ICR1H" /> + <keyword match="ICR1L" /> + <keyword match="ICR3H" /> + <keyword match="ICR3L" /> + <keyword match="MCUCR" /> + <keyword match="MCUCSR" /> + <keyword match="OCDR" /> + <keyword match="OCR0" /> + <keyword match="OCR1AH" /> + <keyword match="OCR1AL" /> + <keyword match="OCR1BH" /> + <keyword match="OCR1BL" /> + <keyword match="OCR1CH" /> + <keyword match="OCR1CL" /> + <keyword match="OCR2" /> + <keyword match="OCR3AH" /> + <keyword match="OCR3AL" /> + <keyword match="OCR3BH" /> + <keyword match="OCR3BL" /> + <keyword match="OCR3CH" /> + <keyword match="OCR3CL" /> + <keyword match="OSCCAL" /> + <keyword match="PINA" /> + <keyword match="PINB" /> + <keyword match="PINC" /> + <keyword match="PIND" /> + <keyword match="PINE" /> + <keyword match="PINF" /> + <keyword match="PING" /> + <keyword match="PORTA" /> + <keyword match="PORTB" /> + <keyword match="PORTC" /> + <keyword match="PORTD" /> + <keyword match="PORTE" /> + <keyword match="PORTF" /> + <keyword match="PORTG" /> + <keyword match="RAMPZ" /> + <keyword match="SFIOR" /> + <keyword match="SPCR" /> + <keyword match="SPDR" /> + <keyword match="SPH" /> + <keyword match="SPL" /> + <keyword match="SPMCR" /> + <keyword match="SPMCSR" /> + <keyword match="SPSR" /> + <keyword match="SREG" /> + <keyword match="TCCR0" /> + <keyword match="TCCR1A" /> + <keyword match="TCCR1B" /> + <keyword match="TCCR1C" /> + <keyword match="TCCR2" /> + <keyword match="TCCR3A" /> + <keyword match="TCCR3B" /> + <keyword match="TCCR3C" /> + <keyword match="TCNT0" /> + <keyword match="TCNT1H" /> + <keyword match="TCNT1L" /> + <keyword match="TCNT2" /> + <keyword match="TCNT3H" /> + <keyword match="TCNT3L" /> + <keyword match="TIFR" /> + <keyword match="TIMSK" /> + <keyword match="TWAR" /> + <keyword match="TWBR" /> + <keyword match="TWCR" /> + <keyword match="TWDR" /> + <keyword match="TWSR" /> + <keyword match="UBRR0H" /> + <keyword match="UBRR0L" /> + <keyword match="UBRR1H" /> + <keyword match="UBRR1L" /> + <keyword match="UBRRH" /> + <keyword match="UBRRL" /> + <keyword match="UCSR0A" /> + <keyword match="UCSR0B" /> + <keyword match="UCSR0C" /> + <keyword match="UCSR1A" /> + <keyword match="UCSR1B" /> + <keyword match="UCSR1C" /> + <keyword match="UCSRA" /> + <keyword match="UCSRB" /> + <keyword match="UCSRC" /> + <keyword match="UDR" /> + <keyword match="UDR0" /> + <keyword match="UDR1" /> + <keyword match="WDTCR" /> + <keyword match="XDIV" /> + <keyword match="XMCRA" /> + <keyword match="XMCRB" /> + </keywords> + + <keywords name="types" inherits="identifier" innerClass="types" case="yes"> + + <keyword match="auto" /> + <keyword match="bool" /> + <keyword match="char" /> + <keyword match="class" /> + <keyword match="const" /> + <keyword match="double" /> + + <keyword match="enum" /> + <keyword match="explicit" /> + <keyword match="export" /> + <keyword match="extern" /> + <keyword match="float" /> + <keyword match="inline" /> + + <keyword match="int" /> + <keyword match="long" /> + <keyword match="mutable" /> + <keyword match="namespace" /> + <keyword match="register" /> + <keyword match="short" /> + + <keyword match="signed" /> + <keyword match="static" /> + <keyword match="struct" /> + <keyword match="template" /> + <keyword match="typedef" /> + <keyword match="typename" /> + + <keyword match="union" /> + <keyword match="unsigned" /> + <keyword match="virtual" /> + <keyword match="void" /> + <keyword match="volatile" /> + <keyword match="wchar_t" /> + + </keywords> + + <keywords name="Common Macros" inherits="identifier" innerClass="prepro" case="yes"> + <keyword match="NULL" /> + <keyword match="TRUE" /> + <keyword match="FALSE" /> + <keyword match="MAX" /> + + <keyword match="MIN" /> + <keyword match="__LINE__" /> + <keyword match="__DATA__" /> + <keyword match="__FILE__" /> + <keyword match="__TIME__" /> + <keyword match="__STDC__" /> + + </keywords> + + + <!-- + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes"> + --> + +</highlight> + diff --git a/library/Text_Highlighter/cpp.xml b/library/Text_Highlighter/cpp.xml new file mode 100644 index 000000000..2cbaa930f --- /dev/null +++ b/library/Text_Highlighter/cpp.xml @@ -0,0 +1,201 @@ +<?xml version="1.0"?> +<!-- $Id: cpp.xml,v 1.2 2008-07-31 23:06:30 ssttoo Exp $ --> + +<highlight lang="CPP" case="no"> + + <authors> + <author name="Aaron Kalin"/> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <comment> +Thanks to Aaron Kalin for initial +implementation of this highlighter + </comment> + + <default innerClass="code" /> + + <block name="escaped" match="\\" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""/> + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <block name="hexinteger" match="\b0[xX][\da-f]+" innerClass="number"/> + <block name="integer" match="\b\d\d*|\b0\b" innerClass="number"/> + <block name="octinteger" match="\b0[0-7]+" innerClass="number"/> + <block name="float" match="\b(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + + <region name="strincl" delimClass="quotes" innerClass="string" start="<" end=">"> + <onlyin region="include" /> + </region> + + <!-- <block name="preprocessor" match="^#[azAZ_]\w*" innerClass="prepro"/> --> + <region name="include" innerClass="prepro" start="/^[ \t]*#include/m" end="/(?<!\\)$/m"> + <contains region="strdouble"/> + <contains region="strincl"/> + </region> + + <region name="preprocessor" delimClass="prepro" innerClass="code" start="/^[ \t]*#[ \t]*[a-z]+/mi" end="/(?<!\\)$/m"> + <contains region="comment"/> + <contains region="mlcomment"/> + <contains region="strdouble"/> + <contains region="brackets"/> + <contains region="block"/> + <contains block="identifier"/> + <contains block="integer"/> + <contains block="hexinteger"/> + <contains block="octinteger"/> + <contains block="float"/> + + </region> + + <block name="number" match="\d*\.?\d+" innerClass="number"/> + + + <region name="mlcomment" innerClass="mlcomment" start="\/\*" end="\*\/" > + <contains block="cvstag"/> + </region> + + <block name="cvstag" match="\$\w+\s*:.+\$" innerClass="inlinedoc"> + + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <region name="comment" start="\/\/.+" end="/$/m" innerClass="comment" delimClass="comment"> + <contains block="cvstag"/> + </region> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes"> + <keyword match="and" /> + <keyword match="and_eq" /> + <keyword match="asm" /> + + <keyword match="bitand" /> + <keyword match="bitor" /> + <keyword match="break" /> + <keyword match="case" /> + <keyword match="catch" /> + <keyword match="compl" /> + + <keyword match="const_cast" /> + <keyword match="continue" /> + <keyword match="default" /> + <keyword match="delete" /> + <keyword match="do" /> + <keyword match="dynamic_cast" /> + + <keyword match="else" /> + <keyword match="for" /> + <keyword match="fortran" /> + <keyword match="friend" /> + <keyword match="goto" /> + <keyword match="if" /> + + <keyword match="new" /> + <keyword match="not" /> + <keyword match="not_eq" /> + <keyword match="operator" /> + <keyword match="or" /> + <keyword match="or_eq" /> + + <keyword match="private" /> + <keyword match="protected" /> + <keyword match="public" /> + <keyword match="reinterpret_cast" /> + <keyword match="return" /> + <keyword match="sizeof" /> + + <keyword match="static_cast" /> + <keyword match="switch" /> + <keyword match="this" /> + <keyword match="throw" /> + <keyword match="try" /> + <keyword match="typeid" /> + + <keyword match="using" /> + <keyword match="while" /> + <keyword match="xor" /> + <keyword match="xor_eq" /> + + <keyword match="false" /> + <keyword match="true" /> + </keywords> + + <keywords name="types" inherits="identifier" innerClass="types" case="yes"> + + <keyword match="auto" /> + <keyword match="bool" /> + <keyword match="char" /> + <keyword match="class" /> + <keyword match="const" /> + <keyword match="double" /> + + <keyword match="enum" /> + <keyword match="explicit" /> + <keyword match="export" /> + <keyword match="extern" /> + <keyword match="float" /> + <keyword match="inline" /> + + <keyword match="int" /> + <keyword match="long" /> + <keyword match="mutable" /> + <keyword match="namespace" /> + <keyword match="register" /> + <keyword match="short" /> + + <keyword match="signed" /> + <keyword match="static" /> + <keyword match="struct" /> + <keyword match="template" /> + <keyword match="typedef" /> + <keyword match="typename" /> + + <keyword match="union" /> + <keyword match="unsigned" /> + <keyword match="virtual" /> + <keyword match="void" /> + <keyword match="volatile" /> + <keyword match="wchar_t" /> + + </keywords> + + <keywords name="Common Macros" inherits="identifier" innerClass="prepro" case="yes"> + <keyword match="NULL" /> + <keyword match="TRUE" /> + <keyword match="FALSE" /> + <keyword match="MAX" /> + + <keyword match="MIN" /> + <keyword match="__LINE__" /> + <keyword match="__DATA__" /> + <keyword match="__FILE__" /> + <keyword match="__TIME__" /> + <keyword match="__STDC__" /> + + </keywords> + + + <!-- + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes"> + --> + +</highlight> + diff --git a/library/Text_Highlighter/css.xml b/library/Text_Highlighter/css.xml new file mode 100644 index 000000000..2473bcfb7 --- /dev/null +++ b/library/Text_Highlighter/css.xml @@ -0,0 +1,368 @@ +<?xml version="1.0"?> +<!-- $Id: css.xml,v 1.2 2008-01-01 23:45:07 ssttoo Exp $ --> + +<highlight lang="css" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + + <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/" > + + </region> + + + <block name="atrule" match="(@[a-z\d]+)" + innerClass="var" never-contained="yes"/> + + <region name="property" start="[a-z][a-z\d\-]*\s*:" end="(?=;|\})" + innerClass="code" delimClass="reserved" contained="yes"/> + + <block name="selector" match="(((\.|#)?[a-z]+[a-z\d\-]*(?![a-z\d\-]))|(\*))(?!\s*:\s*[\s\{])" + innerClass="identifier" > + </block> + + <block name="pseudo" match=":[a-z][a-z\d\-]*" + innerClass="special" /> + + <block name="bescaped" match="\\[\\(\\)\\]" + innerClass="string" contained="yes"/> + + + <region name="paramselector" start="\[" end="\]" innerClass="code" + delimClass="brackets" > + <contains block="paramname" /> + <not-contains block="identifier" /> + <contains region="strdouble" /> + <contains region="strsingle" /> + </region> + + <region name="block" start="\{" end="\}" innerClass="code" + delimClass="brackets" > + <contains region="block" /> + <contains region="property" /> + <contains block="selector" /> + <contains region="mlcomment" /> + </region> + + <region name="brackets" start="\(" end="\)" innerClass="string" + delimClass="brackets" contained="yes"> + <contains block="bescaped"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" contained="yes"/> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + </block> + + <block name="descaped" match="\\\\|\\"|\\'|\\`|\\t|\\n|\\r" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" + start=""" end=""" contained="yes" /> + + <block name="measure" match="\d*\.?\d+(\%|em|ex|pc|pt|px|in|mm|cm)" + innerClass="number" contained="yes"> + <onlyin region="property"/> + <partClass index="1" innerClass="string" /> + </block> + + <block name="number" match="\d*\.?\d+" innerClass="number" contained="yes" > + <onlyin region="property"/> + </block> + + <block name="identifier" match="[a-z][a-z\d\-]*" + innerClass="code" contained="yes"> + <onlyin region="property"/> + </block> + + <block name="hexcolor" match="#([\da-f]{6}|[\da-f]{3})\b" innerClass="var" contained="yes"> + <onlyin region="property"/> + </block> + + <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"> + <onlyin region="paramselector"/> + </block> + + <keywords name="propertyValue" inherits="identifier" innerClass="string" case = "no"> + <word name="left-side"/> + <keyword match="far-left"/> + <keyword match="left"/> + <keyword match="center-left"/> + <keyword match="center-right"/> + <keyword match="center"/> + <keyword match="far-right"/> + <keyword match="right-side"/> + <keyword match="right"/> + <keyword match="behind"/> + <keyword match="leftwards"/> + <keyword match="rightwards"/> + <keyword match="inherit"/> + <keyword match="scroll"/> + <keyword match="fixed"/> + <keyword match="transparent"/> + <keyword match="none"/> + <keyword match="repeat-x"/> + <keyword match="repeat-y"/> + <keyword match="repeat"/> + <keyword match="no-repeat"/> + <keyword match="collapse"/> + <keyword match="separate"/> + <keyword match="auto"/> + <keyword match="top"/> + <keyword match="bottom"/> + <keyword match="both"/> + <keyword match="open-quote"/> + <keyword match="close-quote"/> + <keyword match="no-open-quote"/> + <keyword match="no-close-quote"/> + <keyword match="crosshair"/> + <keyword match="default"/> + <keyword match="pointer"/> + <keyword match="move"/> + <keyword match="e-resize"/> + <keyword match="ne-resize"/> + <keyword match="nw-resize"/> + <keyword match="n-resize"/> + <keyword match="se-resize"/> + <keyword match="sw-resize"/> + <keyword match="s-resize"/> + <keyword match="text"/> + <keyword match="wait"/> + <keyword match="help"/> + <keyword match="ltr"/> + <keyword match="rtl"/> + <keyword match="inline"/> + <keyword match="block"/> + <keyword match="list-item"/> + <keyword match="run-in"/> + <keyword match="compact"/> + <keyword match="marker"/> + <keyword match="table"/> + <keyword match="inline-table"/> + <keyword match="table-row-group"/> + <keyword match="table-header-group"/> + <keyword match="table-footer-group"/> + <keyword match="table-row"/> + <keyword match="table-column-group"/> + <keyword match="table-column"/> + <keyword match="table-cell"/> + <keyword match="table-caption"/> + <keyword match="below"/> + <keyword match="level"/> + <keyword match="above"/> + <keyword match="higher"/> + <keyword match="lower"/> + <keyword match="show"/> + <keyword match="hide"/> + <keyword match="caption"/> + <keyword match="icon"/> + <keyword match="menu"/> + <keyword match="message-box"/> + <keyword match="small-caption"/> + <keyword match="status-bar"/> + <keyword match="normal"/> + <keyword match="wider"/> + <keyword match="narrower"/> + <keyword match="ultra-condensed"/> + <keyword match="extra-condensed"/> + <keyword match="condensed"/> + <keyword match="semi-condensed"/> + <keyword match="semi-expanded"/> + <keyword match="expanded"/> + <keyword match="extra-expanded"/> + <keyword match="ultra-expanded"/> + <keyword match="italic"/> + <keyword match="oblique"/> + <keyword match="small-caps"/> + <keyword match="bold"/> + <keyword match="bolder"/> + <keyword match="lighter"/> + <keyword match="inside"/> + <keyword match="outside"/> + <keyword match="disc"/> + <keyword match="circle"/> + <keyword match="square"/> + <keyword match="decimal"/> + <keyword match="decimal-leading-zero"/> + <keyword match="lower-roman"/> + <keyword match="upper-roman"/> + <keyword match="lower-greek"/> + <keyword match="lower-alpha"/> + <keyword match="lower-latin"/> + <keyword match="upper-alpha"/> + <keyword match="upper-latin"/> + <keyword match="hebrew"/> + <keyword match="armenian"/> + <keyword match="georgian"/> + <keyword match="cjk-ideographic"/> + <keyword match="hiragana"/> + <keyword match="katakana"/> + <keyword match="hiragana-iroha"/> + <keyword match="katakana-iroha"/> + <keyword match="crop"/> + <keyword match="cross"/> + <keyword match="invert"/> + <keyword match="visible"/> + <keyword match="hidden"/> + <keyword match="always"/> + <keyword match="avoid"/> + <keyword match="x-low"/> + <keyword match="low"/> + <keyword match="medium"/> + <keyword match="high"/> + <keyword match="x-high"/> + <keyword match="mix?"/> + <keyword match="repeat?"/> + <keyword match="static"/> + <keyword match="relative"/> + <keyword match="absolute"/> + <keyword match="portrait"/> + <keyword match="landscape"/> + <keyword match="spell-out"/> + <keyword match="once"/> + <keyword match="digits"/> + <keyword match="continuous"/> + <keyword match="code"/> + <keyword match="x-slow"/> + <keyword match="slow"/> + <keyword match="fast"/> + <keyword match="x-fast"/> + <keyword match="faster"/> + <keyword match="slower"/> + <keyword match="justify"/> + <keyword match="underline"/> + <keyword match="overline"/> + <keyword match="line-through"/> + <keyword match="blink"/> + <keyword match="capitalize"/> + <keyword match="uppercase"/> + <keyword match="lowercase"/> + <keyword match="embed"/> + <keyword match="bidi-override"/> + <keyword match="baseline"/> + <keyword match="sub"/> + <keyword match="super"/> + <keyword match="text-top"/> + <keyword match="middle"/> + <keyword match="text-bottom"/> + <keyword match="silent"/> + <keyword match="x-soft"/> + <keyword match="soft"/> + <keyword match="loud"/> + <keyword match="x-loud"/> + <keyword match="pre"/> + <keyword match="nowrap"/> + <keyword match="serif"/> + <keyword match="sans-serif"/> + <keyword match="cursive"/> + <keyword match="fantasy"/> + <keyword match="monospace"/> + <keyword match="empty"/> + <keyword match="string"/> + <keyword match="strict"/> + <keyword match="loose"/> + <keyword match="char"/> + <keyword match="true"/> + <keyword match="false"/> + <keyword match="dotted"/> + <keyword match="dashed"/> + <keyword match="solid"/> + <keyword match="double"/> + <keyword match="groove"/> + <keyword match="ridge"/> + <keyword match="inset"/> + <keyword match="outset"/> + <keyword match="larger"/> + <keyword match="smaller"/> + <keyword match="xx-small"/> + <keyword match="x-small"/> + <keyword match="small"/> + <keyword match="large"/> + <keyword match="x-large"/> + <keyword match="xx-large"/> + <keyword match="all"/> + <keyword match="newspaper"/> + <keyword match="distribute"/> + <keyword match="distribute-all-lines"/> + <keyword match="distribute-center-last"/> + <keyword match="inter-word"/> + <keyword match="inter-ideograph"/> + <keyword match="inter-cluster"/> + <keyword match="kashida"/> + <keyword match="ideograph-alpha"/> + <keyword match="ideograph-numeric"/> + <keyword match="ideograph-parenthesis"/> + <keyword match="ideograph-space"/> + <keyword match="keep-all"/> + <keyword match="break-all"/> + <keyword match="break-word"/> + <keyword match="lr-tb"/> + <keyword match="tb-rl"/> + <keyword match="thin"/> + <keyword match="thick"/> + <keyword match="inline-block"/> + <keyword match="w-resize"/> + <keyword match="hand"/> + <keyword match="distribute-letter"/> + <keyword match="distribute-space"/> + <keyword match="whitespace"/> + <keyword match="male"/> + <keyword match="female"/> + <keyword match="child"/> + </keywords> + + + <keywords name="namedcolor" inherits="identifier" innerClass="var" case = "no"> + <keyword match="aqua"/> + <keyword match="black"/> + <keyword match="blue"/> + <keyword match="fuchsia"/> + <keyword match="gray"/> + <keyword match="green"/> + <keyword match="lime"/> + <keyword match="maroon"/> + <keyword match="navy"/> + <keyword match="olive"/> + <keyword match="purple"/> + <keyword match="red"/> + <keyword match="silver"/> + <keyword match="teal"/> + <keyword match="white"/> + <keyword match="yellow"/> + <keyword match="ActiveBorder"/> + <keyword match="ActiveCaption"/> + <keyword match="AppWorkspace"/> + <keyword match="Background"/> + <keyword match="ButtonFace"/> + <keyword match="ButtonHighlight"/> + <keyword match="ButtonShadow"/> + <keyword match="ButtonText"/> + <keyword match="CaptionText"/> + <keyword match="GrayText"/> + <keyword match="Highlight"/> + <keyword match="HighlightText"/> + <keyword match="InactiveBorder"/> + <keyword match="InactiveCaption"/> + <keyword match="InactiveCaptionText"/> + <keyword match="InfoBackground"/> + <keyword match="InfoText"/> + <keyword match="Menu"/> + <keyword match="MenuText"/> + <keyword match="Scrollbar"/> + <keyword match="ThreeDDarkShadow"/> + <keyword match="ThreeDFace"/> + <keyword match="ThreeDHighlight"/> + <keyword match="ThreeDLightShadow"/> + <keyword match="ThreeDShadow"/> + <keyword match="Window"/> + <keyword match="WindowFrame"/> + <keyword match="WindowText"/> + </keywords> +</highlight> diff --git a/library/Text_Highlighter/diff.xml b/library/Text_Highlighter/diff.xml new file mode 100644 index 000000000..d088f9257 --- /dev/null +++ b/library/Text_Highlighter/diff.xml @@ -0,0 +1,45 @@ +<?xml version="1.0"?> +<!-- $Id: diff.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="diff" case="yes"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="default" /> + + <block name="noNewLine" match="/^\\\sNo\snewline.+$/m" innerClass="special"/> + + <block name="diffSeparator" match="/^\-\-\-$/m" innerClass="code"/> + + <block name="diffCmdLine" match="/^(diff\s+\-|Only\s+|Index).*$/m" innerClass="var"/> + <block name="diffFiles" match="/^(\-\-\-|\+\+\+)\s.+$/m" innerClass="reserved"/> + + <block name="contextOrg" match="/^\*.*$/m" innerClass="quotes"/> + <block name="contextNew" match="/^\+.*$/m" innerClass="string"/> + <block name="contextChg" match="/^!.*$/m" innerClass="inlinedoc"/> + + <block name="defOrg" match="/^\<\s.*$/m" innerClass="quotes"/> + <block name="defNew" match="/^\>\s.*$/m" innerClass="string"/> + <block name="defChg" match="/^\d+(\,\d+)?[acd]\d+(,\d+)?$/m" innerClass="code"/> + + <block name="uniOrg" match="/^\-.*$/m" innerClass="quotes"/> + <block name="uniNew" match="/^\+.*$/m" innerClass="string"/> + <block name="uniChg" match="/^@@.+@@$/m" innerClass="code"/> + + <block name="normOrg" match="/^d\d+\s\d+$/m" innerClass="code"/> + <region name="normNew" start="/^a\d+\s\d+$/m" end="/(?=^[ad]\d+\s\d+)/m" innerClass="var" delimClass="code"/> + + <region name="edNew" start="/^(\d+)(,\d+)?(a)$/m" end="/^(\.)$/m" innerClass="string" delimClass="code"/> + <region name="edChg" start="/^(\d+)(,\d+)?(c)$/m" end="/^(\.)$/m" innerClass="inlinedoc" delimClass="code"/> + <block name="edDel" match="/^(\d+)(,\d+)?(d)$/m" innerClass="code"/> + + <region name="fedNew" start="/^a(\d+)(\s\d+)?$/m" end="/^(\.)$/m" innerClass="string" delimClass="code"/> + <region name="fedChg" start="/^c(\d+)(\s\d+)?$/m" end="/^(\.)$/m" innerClass="inlinedoc" delimClass="code"/> + <block name="fedDel" match="/^d(\d+)(\s\d+)?$/m" + innerClass="code"/> + + +</highlight> diff --git a/library/Text_Highlighter/dtd.xml b/library/Text_Highlighter/dtd.xml new file mode 100644 index 000000000..18fa07db7 --- /dev/null +++ b/library/Text_Highlighter/dtd.xml @@ -0,0 +1,66 @@ +<?xml version="1.0"?> +<!-- $Id: dtd.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="dtd" case="yes"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + <region name="comment" delimClass="comment" innerClass="comment" + start="\<!--" end="--\>"> + </region> + + <region name="redecl" start="\<\!\[" end="\]\]\>" delimClass="brackets" + innerClass="code" never-contained="yes"> + <contains all="yes" /> + </region> + + <region name="tag" start="\<" end="\>" delimClass="brackets" + innerClass="code" > + <contains all="yes" /> + <onlyin region="redecl"/> + </region> + + <region name="brackets" start="\(" end="\)" delimClass="brackets" + innerClass="code" contained="yes"> + <onlyin region="tag"/> + <onlyin region="brackets"/> + <contains block="entity" /> + <contains block="identifier" /> + </region> + + <region name="strsingle" start="'" end="'" delimClass="quotes" + innerClass="string" contained="yes"> + <onlyin region="tag"/> + <contains block="entity" /> + </region> + + <region name="strdouble" start=""" end=""" delimClass="quotes" + innerClass="string" contained="yes"> + <onlyin region="tag"/> + <contains block="entity" /> + </region> + + <block name="tagname" match="(?<=\<)!(ENTITY|ATTLIST|ELEMENT|NOTATION)\b" + innerClass="var" contained="yes"> + <onlyin region="tag"/> + </block> + + <block name="reserved" match="\s(#(IMPLIED|REQUIRED|FIXED))|CDATA|ENTITY|NOTATION|NMTOKENS?|PUBLIC|SYSTEM\b" + innerClass="reserved" contained="yes"> + <onlyin region="tag"/> + </block> + + <block name="pcdata" match="#PCDATA\b" + innerClass="reserved" contained="yes" /> + + <block name="entity" match="(\&|\%)[\w\-\.]+;" innerClass="special" /> + + <block name="identifier" match="[a-z][a-z\d\-\,:]+" + innerClass="identifier" contained="yes" case="no"/> + +</highlight> diff --git a/library/Text_Highlighter/generate b/library/Text_Highlighter/generate new file mode 100644 index 000000000..4e22e82fd --- /dev/null +++ b/library/Text_Highlighter/generate @@ -0,0 +1,171 @@ +#!@php_bin@ +<?php +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ +/** + * Console highlighter class generator + * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.0 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_0.txt. If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category Text + * @package Text_Highlighter + * @author Andrey Demenev <demenev@gmail.com> + * @copyright 2004 Andrey Demenev + * @license http://www.php.net/license/3_0.txt PHP License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Text_Highlighter + */ + +require_once 'Text/Highlighter/Generator.php'; +require_once 'Console/Getopt.php'; + +$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help')); + +if (PEAR::isError($options)) { + $message = str_replace('Console_Getopt: ','',$options->message); + usage($message); +} + +$source = array(); +$dest = array(); +$dir = ''; + +$expectp = false; +$expectx = false; +$unexpectedx = false; +$unexpectedp = false; +$si = $di = 0; + +foreach ($options[0] as $option) { + switch ($option[0]) { + case 'x': + case '--xml': + $source[$si] = $option[1]; + if ($si) { + $di++; + } + $si++; + if ($expectp) { + $unexpectedx = true; + } + $expectp = true; + $expectx = false; + break; + + case 'p': + case '--php': + if ($expectx) { + $unexpectedp = true; + } + $dest[$di] = $option[1]; + $expectp = false; + $expectx = true; + break; + + case 'd': + case '--dir': + $dir = $option[1]; + break; + + case 'h': + case '--help': + usage(); + break; + } +} + + +if ($unexpectedx && !$dir) { + usage('Unexpected -x or --xml', STDERR); +} + +if ($unexpectedp) { + usage('Unexpected -p or --php', STDERR); +} + +$nsource = count($source); +$ndest = count($dest); + +if (!$nsource && !$ndest) { + $source[]='php://stdin'; + if (!$dir) { + $dest[]='php://stdout'; + } else { + $dest[] = null; + } +} elseif ($expectp && !$dir && $nsource > 1) { + usage('-x or --xml without following -p or --php', STDERR); +} elseif ($nsource == 1 && !$ndest && !$dir) { + $dest[]='php://stdout'; +} + +if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { + $dir .= DIRECTORY_SEPARATOR; +} + + +foreach ($source as $i => $xmlfile) +{ + $gen = new Text_Highlighter_Generator; + $gen->setInputFile($xmlfile); + if ($gen->hasErrors()) { + break; + } + $gen->generate(); + if ($gen->hasErrors()) { + break; + } + if (isset($dest[$i])) { + $phpfile = $dest[$i]; + } else { + $phpfile = $dir . $gen->language . '.php'; + } + $gen->saveCode($phpfile); + if ($gen->hasErrors()) { + break; + } +} +if ($gen->hasErrors()) { + $errors = $gen->getErrors(); + foreach ($errors as $error) { + fwrite (STDERR, $error . "\n"); + } + exit(1); +} + +function usage($message='', $file=STDOUT) +{ + $code = 0; + if ($message) { + $message .= "\n\n"; + $code = 1; + } + $message .= <<<MSG +Generates a highlighter class from XML source +Usage: +generate options + +Options: + -x filename, --xml=filename + source XML file. Multiple input files can be specified, in which + case each -x option must be followed by -p unless -d is specified + Defaults to stdin + -p filename, --php=filename + destination PHP file. Defaults to stdout. If specied multiple times, + each -p must follow -x + -d dirname, --dir=dirname + Default destination directory. File names will be taken from XML input + ("lang" attribute of <highlight> tag) + -h, --help + This help +MSG; + fwrite ($file, $message); + exit($code); +} +?> + diff --git a/library/Text_Highlighter/generate.bat b/library/Text_Highlighter/generate.bat new file mode 100644 index 000000000..3960486c1 --- /dev/null +++ b/library/Text_Highlighter/generate.bat @@ -0,0 +1,188 @@ +@echo off +rem vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: + +rem Console highlighter class generator + +rem PHP versions 4 and 5 + +rem LICENSE: This source file is subject to version 3.0 of the PHP license +rem that is available through the world-wide-web at the following URI: +rem http://www.php.net/license/3_0.txt. If you did not receive a copy of +rem the PHP License and are unable to obtain it through the web, please +rem send a note to license@php.net so we can mail you a copy immediately. + +rem @category Text +rem @package Text_Highlighter +rem @author Andrey Demenev <demenev@gmail.com> +rem @copyright 2004 Andrey Demenev +rem @license http://www.php.net/license/3_0.txt PHP License +rem @version CVS: $Id: generate.bat,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ +rem @link http://pear.php.net/package/Text_Highlighter + +set "MHL_PARAMS=" +:doshift +set "MHL_PARAMS=%MHL_PARAMS% %1" +shift +if -%1- == -- GOTO noshift +GOTO doshift +:noshift +@php_bin@ -q -d output_buffering=1 -d include_path="@php_dir@" @bin_dir@/Text/Highlighter/generate.bat %MHL_PARAMS% + +GOTO finish +<?php +ob_end_clean(); + +if (!defined('STDOUT')) { + define('STDOUT', fopen('php://stdout', 'wb')); + define('STDERR', fopen('php://stderr', 'wb')); +} +require_once 'Text/Highlighter/Generator.php'; +require_once 'Console/Getopt.php'; + +$options = Console_Getopt::getopt($argv, 'x:p:d:h', array('xml=', 'php=','dir=', 'help')); + +if (PEAR::isError($options)) { + $message = str_replace('Console_Getopt: ','',$options->message); + usage($message); +} + +$source = array(); +$dest = array(); +$dir = ''; + +$expectp = false; +$expectx = false; +$unexpectedx = false; +$unexpectedp = false; +$si = $di = 0; + +foreach ($options[0] as $option) { + switch ($option[0]) { + case 'x': + case '--xml': + $source[$si] = $option[1]; + if ($si) { + $di++; + } + $si++; + if ($expectp) { + $unexpectedx = true; + } + $expectp = true; + $expectx = false; + break; + + case 'p': + case '--php': + if ($expectx) { + $unexpectedp = true; + } + $dest[$di] = $option[1]; + $expectp = false; + $expectx = true; + break; + + case 'd': + case '--dir': + $dir = $option[1]; + break; + + case 'h': + case '--help': + usage(); + break; + } +} + + +if ($unexpectedx && !$dir) { + usage('Unexpected -x or --xml', STDERR); +} + +if ($unexpectedp) { + usage('Unexpected -p or --php', STDERR); +} + +$nsource = count($source); +$ndest = count($dest); + +if (!$nsource && !$ndest) { + $source[]='php://stdin'; + if (!$dir) { + $dest[]='php://stdout'; + } else { + $dest[] = null; + } +} elseif ($expectp && !$dir && $nsource > 1) { + usage('-x or --xml without following -p or --php', STDERR); +} elseif ($nsource == 1 && !$ndest && !$dir) { + $dest[]='php://stdout'; +} + +if ($dir && substr($dir,-1)!='/' && substr($dir,-1)!=='\\' ) { + $dir .= DIRECTORY_SEPARATOR; +} + + +foreach ($source as $i => $xmlfile) +{ + $gen = new Text_Highlighter_Generator; + $gen->setInputFile($xmlfile); + if ($gen->hasErrors()) { + break; + } + $gen->generate(); + if ($gen->hasErrors()) { + break; + } + if (isset($dest[$i])) { + $phpfile = $dest[$i]; + } else { + $phpfile = $dir . $gen->language . '.php'; + } + $gen->saveCode($phpfile); + if ($gen->hasErrors()) { + break; + } +} +if ($gen->hasErrors()) { + $errors = $gen->getErrors(); + foreach ($errors as $error) { + fwrite (STDERR, $error . "\n"); + } + exit(1); +} + +exit(0); + +function usage($message='', $file=STDOUT) +{ + $code = 0; + if ($message) { + $message .= "\n\n"; + $code = 1; + } + $message .= <<<MSG +Generates a highlighter class from XML source +Usage: +generate options + +Options: + -x filename, --xml=filename + source XML file. Multiple input files can be specified, in which + case each -x option must be followed by -p unless -d is specified + Defaults to stdin + -p filename, --php=filename + destination PHP file. Defaults to stdout. If specied multiple times, + each -p must follow -x + -d dirname, --dir=dirname + Default destination directory. File names will be taken from XML input + ("lang" attribute of <highlight> tag) + -h, --help + This help +MSG; + fwrite ($file, $message); + exit($code); +} +?> +:finish diff --git a/library/Text_Highlighter/html.xml b/library/Text_Highlighter/html.xml new file mode 100644 index 000000000..58d51fc5b --- /dev/null +++ b/library/Text_Highlighter/html.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<!-- $Id: html.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="html" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + <region name="comment" delimClass="comment" innerClass="comment" + start="\<!--" end="--\>"> + </region> + + <region name="tag" delimClass="brackets" innerClass="code" start="\<[\?\/]?" end="[\/\?]?\>"> + <contains block="tagname"/> + <contains region="param"/> + <contains block="paramname"/> + </region> + + <block name="tagname" match="(?<=[\<\/?])[\w\-\:]+" innerClass="reserved" contained="yes"/> + + <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"/> + + <block name="entity" match="(&)[\w\-\.]+;" innerClass="special" /> + + <region name="param" start=""" end=""" delimClass="quotes" innerClass="string" contained="yes"> + <contains block="entity"/> + </region> + +</highlight> diff --git a/library/Text_Highlighter/java.xml b/library/Text_Highlighter/java.xml new file mode 100644 index 000000000..12052b5db --- /dev/null +++ b/library/Text_Highlighter/java.xml @@ -0,0 +1,2824 @@ +<?xml version="1.0"?> +<!-- $Id: java.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="java"> + + <authors> + <author name="Andrey Demenev" email ="demenev@gmail.com"/> + </authors> + + <default innerClass="code" /> + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" > + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + + <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/"> + <contains block="javadoc"/> + <contains block="cvstag"/> + </region> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end=""" /> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/> + + <block name="escaped" match="\\." innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + </block> + + <block name="descaped" match="\\[\\"'`tnr\$\{]" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + </block> + + + <region name="comment" start="\/\/" end="/$/m" innerClass="comment"> + <contains block="cvstag"/> + </region> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" /> + + <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" /> + <block name="integer" match="\d\d*|\b0\b" innerClass="number" /> + <block name="octinteger" match="0[0-7]+" innerClass="number" /> + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" /> + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" /> + + <block name="javadoc" match="\s@\w+\s" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&=\/%+]*" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="note" match="\bnote:" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + + <block name="cvstag" match="\$\w+\s*:.*\$" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <keywords name="types" inherits="identifier" innerClass="types" case = "yes"> + <keyword match="boolean" /> + <keyword match="byte" /> + <keyword match="char" /> + <keyword match="const" /> + <keyword match="double" /> + <keyword match="final" /> + <keyword match="float" /> + <keyword match="int" /> + <keyword match="long" /> + <keyword match="short" /> + <keyword match="static" /> + <keyword match="void" /> + </keywords> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="yes"> + <keyword match="import"/> + <keyword match="package"/> + <keyword match="abstract" /> + <keyword match="break" /> + <keyword match="case" /> + <keyword match="catch" /> + <keyword match="class" /> + <keyword match="continue" /> + <keyword match="default" /> + <keyword match="do" /> + <keyword match="else" /> + <keyword match="extends" /> + <keyword match="false" /> + <keyword match="finally" /> + <keyword match="for" /> + <keyword match="goto" /> + <keyword match="if" /> + <keyword match="implements" /> + <keyword match="instanceof" /> + <keyword match="interface" /> + <keyword match="native" /> + <keyword match="new" /> + <keyword match="null" /> + <keyword match="private" /> + <keyword match="protected" /> + <keyword match="public" /> + <keyword match="return" /> + <keyword match="super" /> + <keyword match="strictfp" /> + <keyword match="switch" /> + <keyword match="synchronized" /> + <keyword match="this" /> + <keyword match="throws" /> + <keyword match="throw" /> + <keyword match="transient" /> + <keyword match="true" /> + <keyword match="try" /> + <keyword match="volatile" /> + <keyword match="while" /> + </keywords> + + <keywords name="builtin" inherits="identifier" innerClass="builtin" case = "yes" ifdef="java.builtins"> + <keyword match="AbstractAction" /> + <keyword match="AbstractBorder" /> + <keyword match="AbstractButton" /> + <keyword match="AbstractCellEditor" /> + <keyword match="AbstractCollection" /> + <keyword match="AbstractColorChooserPanel" /> + <keyword match="AbstractDocument" /> + <keyword match="AbstractInterruptibleChannel" /> + <keyword match="AbstractLayoutCache" /> + <keyword match="AbstractList" /> + <keyword match="AbstractListModel" /> + <keyword match="AbstractMap" /> + <keyword match="AbstractMethodError" /> + <keyword match="AbstractPreferences" /> + <keyword match="AbstractSelectableChannel" /> + <keyword match="AbstractSelectionKey" /> + <keyword match="AbstractSelector" /> + <keyword match="AbstractSequentialList" /> + <keyword match="AbstractSet" /> + <keyword match="AbstractSpinnerModel" /> + <keyword match="AbstractTableModel" /> + <keyword match="AbstractUndoableEdit" /> + <keyword match="AbstractWriter" /> + <keyword match="AccessControlContext" /> + <keyword match="AccessControlException" /> + <keyword match="AccessController" /> + <keyword match="AccessException" /> + <keyword match="Accessible" /> + <keyword match="AccessibleAction" /> + <keyword match="AccessibleBundle" /> + <keyword match="AccessibleComponent" /> + <keyword match="AccessibleContext" /> + <keyword match="AccessibleEditableText" /> + <keyword match="AccessibleExtendedComponent" /> + <keyword match="AccessibleExtendedTable" /> + <keyword match="AccessibleHyperlink" /> + <keyword match="AccessibleHypertext" /> + <keyword match="AccessibleIcon" /> + <keyword match="AccessibleKeyBinding" /> + <keyword match="AccessibleObject" /> + <keyword match="AccessibleRelation" /> + <keyword match="AccessibleRelationSet" /> + <keyword match="AccessibleResourceBundle" /> + <keyword match="AccessibleRole" /> + <keyword match="AccessibleSelection" /> + <keyword match="AccessibleState" /> + <keyword match="AccessibleStateSet" /> + <keyword match="AccessibleTable" /> + <keyword match="AccessibleTableModelChange" /> + <keyword match="AccessibleText" /> + <keyword match="AccessibleValue" /> + <keyword match="AccountExpiredException" /> + <keyword match="Acl" /> + <keyword match="AclEntry" /> + <keyword match="AclNotFoundException" /> + <keyword match="Action" /> + <keyword match="ActionEvent" /> + <keyword match="ActionListener" /> + <keyword match="ActionMap" /> + <keyword match="ActionMapUIResource" /> + <keyword match="Activatable" /> + <keyword match="ActivateFailedException" /> + <keyword match="ActivationDesc" /> + <keyword match="ActivationException" /> + <keyword match="ActivationGroup" /> + <keyword match="ActivationGroup_Stub" /> + <keyword match="ActivationGroupDesc" /> + <keyword match="ActivationGroupID" /> + <keyword match="ActivationID" /> + <keyword match="ActivationInstantiator" /> + <keyword match="ActivationMonitor" /> + <keyword match="ActivationSystem" /> + <keyword match="Activator" /> + <keyword match="ActiveEvent" /> + <keyword match="AdapterActivator" /> + <keyword match="AdapterActivatorOperations" /> + <keyword match="AdapterAlreadyExists" /> + <keyword match="AdapterAlreadyExistsHelper" /> + <keyword match="AdapterInactive" /> + <keyword match="AdapterInactiveHelper" /> + <keyword match="AdapterNonExistent" /> + <keyword match="AdapterNonExistentHelper" /> + <keyword match="AddressHelper" /> + <keyword match="Adjustable" /> + <keyword match="AdjustmentEvent" /> + <keyword match="AdjustmentListener" /> + <keyword match="Adler32" /> + <keyword match="AffineTransform" /> + <keyword match="AffineTransformOp" /> + <keyword match="AlgorithmParameterGenerator" /> + <keyword match="AlgorithmParameterGeneratorSpi" /> + <keyword match="AlgorithmParameters" /> + <keyword match="AlgorithmParameterSpec" /> + <keyword match="AlgorithmParametersSpi" /> + <keyword match="AllPermission" /> + <keyword match="AlphaComposite" /> + <keyword match="AlreadyBound" /> + <keyword match="AlreadyBoundException" /> + <keyword match="AlreadyBoundHelper" /> + <keyword match="AlreadyBoundHolder" /> + <keyword match="AlreadyConnectedException" /> + <keyword match="AncestorEvent" /> + <keyword match="AncestorListener" /> + <keyword match="Annotation" /> + <keyword match="Any" /> + <keyword match="AnyHolder" /> + <keyword match="AnySeqHelper" /> + <keyword match="AnySeqHelper" /> + <keyword match="AnySeqHolder" /> + <keyword match="AppConfigurationEntry" /> + <keyword match="Applet" /> + <keyword match="AppletContext" /> + <keyword match="AppletInitializer" /> + <keyword match="AppletStub" /> + <keyword match="ApplicationException" /> + <keyword match="Arc2D" /> + <keyword match="Area" /> + <keyword match="AreaAveragingScaleFilter" /> + <keyword match="ARG_IN" /> + <keyword match="ARG_INOUT" /> + <keyword match="ARG_OUT" /> + <keyword match="ArithmeticException" /> + <keyword match="Array" /> + <keyword match="Array" /> + <keyword match="ArrayIndexOutOfBoundsException" /> + <keyword match="ArrayList" /> + <keyword match="Arrays" /> + <keyword match="ArrayStoreException" /> + <keyword match="AssertionError" /> + <keyword match="AsyncBoxView" /> + <keyword match="AsynchronousCloseException" /> + <keyword match="Attr" /> + <keyword match="Attribute" /> + <keyword match="Attribute" /> + <keyword match="AttributedCharacterIterator" /> + <keyword match="AttributedString" /> + <keyword match="AttributeException" /> + <keyword match="AttributeInUseException" /> + <keyword match="AttributeList" /> + <keyword match="AttributeList" /> + <keyword match="AttributeListImpl" /> + <keyword match="AttributeModificationException" /> + <keyword match="Attributes" /> + <keyword match="Attributes" /> + <keyword match="Attributes" /> + <keyword match="AttributeSet" /> + <keyword match="AttributeSet" /> + <keyword match="AttributeSetUtilities" /> + <keyword match="AttributesImpl" /> + <keyword match="AudioClip" /> + <keyword match="AudioFileFormat" /> + <keyword match="AudioFileReader" /> + <keyword match="AudioFileWriter" /> + <keyword match="AudioFormat" /> + <keyword match="AudioInputStream" /> + <keyword match="AudioPermission" /> + <keyword match="AudioSystem" /> + <keyword match="AuthenticationException" /> + <keyword match="AuthenticationNotSupportedException" /> + <keyword match="Authenticator" /> + <keyword match="AuthPermission" /> + <keyword match="Autoscroll" /> + <keyword match="AWTError" /> + <keyword match="AWTEvent" /> + <keyword match="AWTEventListener" /> + <keyword match="AWTEventListenerProxy" /> + <keyword match="AWTEventMulticaster" /> + <keyword match="AWTException" /> + <keyword match="AWTKeyStroke" /> + <keyword match="AWTPermission" /> + <keyword match="BackingStoreException" /> + <keyword match="BAD_CONTEXT" /> + <keyword match="BAD_INV_ORDER" /> + <keyword match="BAD_OPERATION" /> + <keyword match="BAD_PARAM" /> + <keyword match="BAD_POLICY" /> + <keyword match="BAD_POLICY_TYPE" /> + <keyword match="BAD_POLICY_VALUE" /> + <keyword match="BAD_TYPECODE" /> + <keyword match="BadKind" /> + <keyword match="BadLocationException" /> + <keyword match="BadPaddingException" /> + <keyword match="BandCombineOp" /> + <keyword match="BandedSampleModel" /> + <keyword match="BasicArrowButton" /> + <keyword match="BasicAttribute" /> + <keyword match="BasicAttributes" /> + <keyword match="BasicBorders" /> + <keyword match="BasicButtonListener" /> + <keyword match="BasicButtonUI" /> + <keyword match="BasicCheckBoxMenuItemUI" /> + <keyword match="BasicCheckBoxUI" /> + <keyword match="BasicColorChooserUI" /> + <keyword match="BasicComboBoxEditor" /> + <keyword match="BasicComboBoxRenderer" /> + <keyword match="BasicComboBoxUI" /> + <keyword match="BasicComboPopup" /> + <keyword match="BasicDesktopIconUI" /> + <keyword match="BasicDesktopPaneUI" /> + <keyword match="BasicDirectoryModel" /> + <keyword match="BasicEditorPaneUI" /> + <keyword match="BasicFileChooserUI" /> + <keyword match="BasicFormattedTextFieldUI" /> + <keyword match="BasicGraphicsUtils" /> + <keyword match="BasicHTML" /> + <keyword match="BasicIconFactory" /> + <keyword match="BasicInternalFrameTitlePane" /> + <keyword match="BasicInternalFrameUI" /> + <keyword match="BasicLabelUI" /> + <keyword match="BasicListUI" /> + <keyword match="BasicLookAndFeel" /> + <keyword match="BasicMenuBarUI" /> + <keyword match="BasicMenuItemUI" /> + <keyword match="BasicMenuUI" /> + <keyword match="BasicOptionPaneUI" /> + <keyword match="BasicPanelUI" /> + <keyword match="BasicPasswordFieldUI" /> + <keyword match="BasicPermission" /> + <keyword match="BasicPopupMenuSeparatorUI" /> + <keyword match="BasicPopupMenuUI" /> + <keyword match="BasicProgressBarUI" /> + <keyword match="BasicRadioButtonMenuItemUI" /> + <keyword match="BasicRadioButtonUI" /> + <keyword match="BasicRootPaneUI" /> + <keyword match="BasicScrollBarUI" /> + <keyword match="BasicScrollPaneUI" /> + <keyword match="BasicSeparatorUI" /> + <keyword match="BasicSliderUI" /> + <keyword match="BasicSpinnerUI" /> + <keyword match="BasicSplitPaneDivider" /> + <keyword match="BasicSplitPaneUI" /> + <keyword match="BasicStroke" /> + <keyword match="BasicTabbedPaneUI" /> + <keyword match="BasicTableHeaderUI" /> + <keyword match="BasicTableUI" /> + <keyword match="BasicTextAreaUI" /> + <keyword match="BasicTextFieldUI" /> + <keyword match="BasicTextPaneUI" /> + <keyword match="BasicTextUI" /> + <keyword match="BasicToggleButtonUI" /> + <keyword match="BasicToolBarSeparatorUI" /> + <keyword match="BasicToolBarUI" /> + <keyword match="BasicToolTipUI" /> + <keyword match="BasicTreeUI" /> + <keyword match="BasicViewportUI" /> + <keyword match="BatchUpdateException" /> + <keyword match="BeanContext" /> + <keyword match="BeanContextChild" /> + <keyword match="BeanContextChildComponentProxy" /> + <keyword match="BeanContextChildSupport" /> + <keyword match="BeanContextContainerProxy" /> + <keyword match="BeanContextEvent" /> + <keyword match="BeanContextMembershipEvent" /> + <keyword match="BeanContextMembershipListener" /> + <keyword match="BeanContextProxy" /> + <keyword match="BeanContextServiceAvailableEvent" /> + <keyword match="BeanContextServiceProvider" /> + <keyword match="BeanContextServiceProviderBeanInfo" /> + <keyword match="BeanContextServiceRevokedEvent" /> + <keyword match="BeanContextServiceRevokedListener" /> + <keyword match="BeanContextServices" /> + <keyword match="BeanContextServicesListener" /> + <keyword match="BeanContextServicesSupport" /> + <keyword match="BeanContextSupport" /> + <keyword match="BeanDescriptor" /> + <keyword match="BeanInfo" /> + <keyword match="Beans" /> + <keyword match="BevelBorder" /> + <keyword match="Bidi" /> + <keyword match="BigDecimal" /> + <keyword match="BigInteger" /> + <keyword match="BinaryRefAddr" /> + <keyword match="BindException" /> + <keyword match="Binding" /> + <keyword match="Binding" /> + <keyword match="BindingHelper" /> + <keyword match="BindingHolder" /> + <keyword match="BindingIterator" /> + <keyword match="BindingIteratorHelper" /> + <keyword match="BindingIteratorHolder" /> + <keyword match="BindingIteratorOperations" /> + <keyword match="BindingIteratorPOA" /> + <keyword match="BindingListHelper" /> + <keyword match="BindingListHolder" /> + <keyword match="BindingType" /> + <keyword match="BindingTypeHelper" /> + <keyword match="BindingTypeHolder" /> + <keyword match="BitSet" /> + <keyword match="Blob" /> + <keyword match="BlockView" /> + <keyword match="Book" /> + <keyword match="Boolean" /> + <keyword match="BooleanControl" /> + <keyword match="BooleanHolder" /> + <keyword match="BooleanSeqHelper" /> + <keyword match="BooleanSeqHolder" /> + <keyword match="Border" /> + <keyword match="BorderFactory" /> + <keyword match="BorderLayout" /> + <keyword match="BorderUIResource" /> + <keyword match="BoundedRangeModel" /> + <keyword match="Bounds" /> + <keyword match="Bounds" /> + <keyword match="Box" /> + <keyword match="BoxedValueHelper" /> + <keyword match="BoxLayout" /> + <keyword match="BoxView" /> + <keyword match="BreakIterator" /> + <keyword match="Buffer" /> + <keyword match="BufferCapabilities" /> + <keyword match="BufferedImage" /> + <keyword match="BufferedImageFilter" /> + <keyword match="BufferedImageOp" /> + <keyword match="BufferedInputStream" /> + <keyword match="BufferedOutputStream" /> + <keyword match="BufferedReader" /> + <keyword match="BufferedWriter" /> + <keyword match="BufferOverflowException" /> + <keyword match="BufferStrategy" /> + <keyword match="BufferUnderflowException" /> + <keyword match="Button" /> + <keyword match="ButtonGroup" /> + <keyword match="ButtonModel" /> + <keyword match="ButtonUI" /> + <keyword match="Byte" /> + <keyword match="ByteArrayInputStream" /> + <keyword match="ByteArrayOutputStream" /> + <keyword match="ByteBuffer" /> + <keyword match="ByteChannel" /> + <keyword match="ByteHolder" /> + <keyword match="ByteLookupTable" /> + <keyword match="ByteOrder" /> + <keyword match="Calendar" /> + <keyword match="CallableStatement" /> + <keyword match="Callback" /> + <keyword match="CallbackHandler" /> + <keyword match="CancelablePrintJob" /> + <keyword match="CancelledKeyException" /> + <keyword match="CannotProceed" /> + <keyword match="CannotProceedException" /> + <keyword match="CannotProceedHelper" /> + <keyword match="CannotProceedHolder" /> + <keyword match="CannotRedoException" /> + <keyword match="CannotUndoException" /> + <keyword match="Canvas" /> + <keyword match="CardLayout" /> + <keyword match="Caret" /> + <keyword match="CaretEvent" /> + <keyword match="CaretListener" /> + <keyword match="CDATASection" /> + <keyword match="CellEditor" /> + <keyword match="CellEditorListener" /> + <keyword match="CellRendererPane" /> + <keyword match="Certificate" /> + <keyword match="Certificate" /> + <keyword match="Certificate" /> + + <keyword match="CertificateEncodingException" /> + <keyword match="CertificateEncodingException" /> + <keyword match="CertificateException" /> + <keyword match="CertificateException" /> + <keyword match="CertificateExpiredException" /> + <keyword match="CertificateExpiredException" /> + <keyword match="CertificateFactory" /> + <keyword match="CertificateFactorySpi" /> + <keyword match="CertificateNotYetValidException" /> + <keyword match="CertificateNotYetValidException" /> + <keyword match="CertificateParsingException" /> + <keyword match="CertificateParsingException" /> + <keyword match="CertPath" /> + + <keyword match="CertPathBuilder" /> + <keyword match="CertPathBuilderException" /> + <keyword match="CertPathBuilderResult" /> + <keyword match="CertPathBuilderSpi" /> + <keyword match="CertPathParameters" /> + <keyword match="CertPathValidator" /> + <keyword match="CertPathValidatorException" /> + <keyword match="CertPathValidatorResult" /> + <keyword match="CertPathValidatorSpi" /> + <keyword match="CertSelector" /> + <keyword match="CertStore" /> + <keyword match="CertStoreException" /> + <keyword match="CertStoreParameters" /> + <keyword match="CertStoreSpi" /> + <keyword match="ChangedCharSetException" /> + <keyword match="ChangeEvent" /> + <keyword match="ChangeListener" /> + <keyword match="Channel" /> + <keyword match="ChannelBinding" /> + <keyword match="Channels" /> + <keyword match="Character" /> + + + <keyword match="CharacterCodingException" /> + <keyword match="CharacterData" /> + <keyword match="CharacterIterator" /> + <keyword match="CharArrayReader" /> + <keyword match="CharArrayWriter" /> + <keyword match="CharBuffer" /> + <keyword match="CharConversionException" /> + <keyword match="CharHolder" /> + <keyword match="CharSeqHelper" /> + <keyword match="CharSeqHolder" /> + <keyword match="CharSequence" /> + <keyword match="Charset" /> + <keyword match="CharsetDecoder" /> + <keyword match="CharsetEncoder" /> + <keyword match="CharsetProvider" /> + <keyword match="Checkbox" /> + <keyword match="CheckboxGroup" /> + <keyword match="CheckboxMenuItem" /> + <keyword match="CheckedInputStream" /> + <keyword match="CheckedOutputStream" /> + <keyword match="Checksum" /> + <keyword match="Choice" /> + <keyword match="ChoiceCallback" /> + <keyword match="ChoiceFormat" /> + <keyword match="Chromaticity" /> + <keyword match="Cipher" /> + <keyword match="CipherInputStream" /> + <keyword match="CipherOutputStream" /> + <keyword match="CipherSpi" /> + <keyword match="Class" /> + <keyword match="ClassCastException" /> + <keyword match="ClassCircularityError" /> + <keyword match="ClassDesc" /> + <keyword match="ClassFormatError" /> + <keyword match="ClassLoader" /> + <keyword match="ClassNotFoundException" /> + <keyword match="ClientRequestInfo" /> + <keyword match="ClientRequestInfoOperations" /> + <keyword match="ClientRequestInterceptor" /> + <keyword match="ClientRequestInterceptorOperations" /> + <keyword match="Clip" /> + <keyword match="Clipboard" /> + <keyword match="ClipboardOwner" /> + <keyword match="Clob" /> + <keyword match="Cloneable" /> + <keyword match="CloneNotSupportedException" /> + <keyword match="ClosedByInterruptException" /> + <keyword match="ClosedChannelException" /> + <keyword match="ClosedSelectorException" /> + <keyword match="CMMException" /> + <keyword match="Codec" /> + <keyword match="CodecFactory" /> + <keyword match="CodecFactoryHelper" /> + <keyword match="CodecFactoryOperations" /> + <keyword match="CodecOperations" /> + <keyword match="CoderMalfunctionError" /> + <keyword match="CoderResult" /> + <keyword match="CodeSets" /> + <keyword match="CodeSource" /> + <keyword match="CodingErrorAction" /> + <keyword match="CollationElementIterator" /> + <keyword match="CollationKey" /> + <keyword match="Collator" /> + <keyword match="Collection" /> + <keyword match="CollectionCertStoreParameters" /> + <keyword match="Collections" /> + <keyword match="Color" /> + <keyword match="ColorChooserComponentFactory" /> + <keyword match="ColorChooserUI" /> + <keyword match="ColorConvertOp" /> + <keyword match="ColorModel" /> + <keyword match="ColorSelectionModel" /> + <keyword match="ColorSpace" /> + <keyword match="ColorSupported" /> + <keyword match="ColorUIResource" /> + <keyword match="ComboBoxEditor" /> + <keyword match="ComboBoxModel" /> + <keyword match="ComboBoxUI" /> + <keyword match="ComboPopup" /> + <keyword match="COMM_FAILURE" /> + <keyword match="Comment" /> + <keyword match="CommunicationException" /> + <keyword match="Comparable" /> + <keyword match="Comparator" /> + <keyword match="Compiler" /> + <keyword match="CompletionStatus" /> + <keyword match="CompletionStatusHelper" /> + <keyword match="Component" /> + <keyword match="ComponentAdapter" /> + <keyword match="ComponentColorModel" /> + <keyword match="ComponentEvent" /> + <keyword match="ComponentIdHelper" /> + <keyword match="ComponentInputMap" /> + <keyword match="ComponentInputMapUIResource" /> + <keyword match="ComponentListener" /> + <keyword match="ComponentOrientation" /> + <keyword match="ComponentSampleModel" /> + <keyword match="ComponentUI" /> + <keyword match="ComponentView" /> + <keyword match="Composite" /> + <keyword match="CompositeContext" /> + <keyword match="CompositeName" /> + <keyword match="CompositeView" /> + <keyword match="CompoundBorder" /> + <keyword match="CompoundControl" /> + + <keyword match="CompoundEdit" /> + <keyword match="CompoundName" /> + <keyword match="Compression" /> + <keyword match="ConcurrentModificationException" /> + <keyword match="Configuration" /> + <keyword match="ConfigurationException" /> + <keyword match="ConfirmationCallback" /> + <keyword match="ConnectException" /> + <keyword match="ConnectException" /> + <keyword match="ConnectIOException" /> + <keyword match="Connection" /> + <keyword match="ConnectionEvent" /> + <keyword match="ConnectionEventListener" /> + <keyword match="ConnectionPendingException" /> + <keyword match="ConnectionPoolDataSource" /> + <keyword match="ConsoleHandler" /> + <keyword match="Constructor" /> + <keyword match="Container" /> + <keyword match="ContainerAdapter" /> + <keyword match="ContainerEvent" /> + <keyword match="ContainerListener" /> + <keyword match="ContainerOrderFocusTraversalPolicy" /> + <keyword match="ContentHandler" /> + <keyword match="ContentHandler" /> + <keyword match="ContentHandlerFactory" /> + <keyword match="ContentModel" /> + <keyword match="Context" /> + <keyword match="Context" /> + <keyword match="ContextList" /> + <keyword match="ContextNotEmptyException" /> + <keyword match="ContextualRenderedImageFactory" /> + <keyword match="Control" /> + <keyword match="Control" /> + + <keyword match="ControlFactory" /> + <keyword match="ControllerEventListener" /> + <keyword match="ConvolveOp" /> + <keyword match="CookieHolder" /> + <keyword match="Copies" /> + <keyword match="CopiesSupported" /> + <keyword match="CRC32" /> + <keyword match="CredentialExpiredException" /> + <keyword match="CRL" /> + <keyword match="CRLException" /> + <keyword match="CRLSelector" /> + <keyword match="CropImageFilter" /> + <keyword match="CSS" /> + + <keyword match="CTX_RESTRICT_SCOPE" /> + <keyword match="CubicCurve2D" /> + + + <keyword match="Currency" /> + <keyword match="Current" /> + <keyword match="Current" /> + <keyword match="Current" /> + <keyword match="CurrentHelper" /> + <keyword match="CurrentHelper" /> + <keyword match="CurrentHelper" /> + <keyword match="CurrentHolder" /> + <keyword match="CurrentOperations" /> + <keyword match="CurrentOperations" /> + <keyword match="CurrentOperations" /> + <keyword match="Cursor" /> + <keyword match="Customizer" /> + <keyword match="CustomMarshal" /> + <keyword match="CustomValue" /> + <keyword match="DATA_CONVERSION" /> + <keyword match="DatabaseMetaData" /> + <keyword match="DataBuffer" /> + <keyword match="DataBufferByte" /> + <keyword match="DataBufferDouble" /> + <keyword match="DataBufferFloat" /> + <keyword match="DataBufferInt" /> + <keyword match="DataBufferShort" /> + <keyword match="DataBufferUShort" /> + <keyword match="DataFlavor" /> + <keyword match="DataFormatException" /> + <keyword match="DatagramChannel" /> + <keyword match="DatagramPacket" /> + <keyword match="DatagramSocket" /> + <keyword match="DatagramSocketImpl" /> + <keyword match="DatagramSocketImplFactory" /> + <keyword match="DataInput" /> + <keyword match="DataInputStream" /> + <keyword match="DataInputStream" /> + <keyword match="DataLine" /> + + <keyword match="DataOutput" /> + <keyword match="DataOutputStream" /> + <keyword match="DataOutputStream" /> + <keyword match="DataSource" /> + <keyword match="DataTruncation" /> + <keyword match="Date" /> + <keyword match="Date" /> + <keyword match="DateFormat" /> + + <keyword match="DateFormatSymbols" /> + <keyword match="DateFormatter" /> + <keyword match="DateTimeAtCompleted" /> + <keyword match="DateTimeAtCreation" /> + <keyword match="DateTimeAtProcessing" /> + <keyword match="DateTimeSyntax" /> + <keyword match="DebugGraphics" /> + <keyword match="DecimalFormat" /> + <keyword match="DecimalFormatSymbols" /> + <keyword match="DeclHandler" /> + <keyword match="DefaultBoundedRangeModel" /> + <keyword match="DefaultButtonModel" /> + <keyword match="DefaultCaret" /> + <keyword match="DefaultCellEditor" /> + <keyword match="DefaultColorSelectionModel" /> + <keyword match="DefaultComboBoxModel" /> + <keyword match="DefaultDesktopManager" /> + <keyword match="DefaultEditorKit" /> + + + + + + + + + <keyword match="DefaultFocusManager" /> + <keyword match="DefaultFocusTraversalPolicy" /> + <keyword match="DefaultFormatter" /> + <keyword match="DefaultFormatterFactory" /> + <keyword match="DefaultHandler" /> + <keyword match="DefaultHighlighter" /> + + <keyword match="DefaultKeyboardFocusManager" /> + <keyword match="DefaultListCellRenderer" /> + + <keyword match="DefaultListModel" /> + <keyword match="DefaultListSelectionModel" /> + <keyword match="DefaultMenuLayout" /> + <keyword match="DefaultMetalTheme" /> + <keyword match="DefaultMutableTreeNode" /> + <keyword match="DefaultPersistenceDelegate" /> + <keyword match="DefaultSingleSelectionModel" /> + <keyword match="DefaultStyledDocument" /> + + + <keyword match="DefaultTableCellRenderer" /> + + <keyword match="DefaultTableColumnModel" /> + <keyword match="DefaultTableModel" /> + <keyword match="DefaultTextUI" /> + <keyword match="DefaultTreeCellEditor" /> + <keyword match="DefaultTreeCellRenderer" /> + <keyword match="DefaultTreeModel" /> + <keyword match="DefaultTreeSelectionModel" /> + <keyword match="DefinitionKind" /> + <keyword match="DefinitionKindHelper" /> + <keyword match="Deflater" /> + <keyword match="DeflaterOutputStream" /> + <keyword match="Delegate" /> + <keyword match="Delegate" /> + <keyword match="Delegate" /> + <keyword match="DelegationPermission" /> + <keyword match="DESedeKeySpec" /> + <keyword match="DesignMode" /> + <keyword match="DESKeySpec" /> + <keyword match="DesktopIconUI" /> + <keyword match="DesktopManager" /> + <keyword match="DesktopPaneUI" /> + <keyword match="Destination" /> + <keyword match="Destroyable" /> + <keyword match="DestroyFailedException" /> + <keyword match="DGC" /> + <keyword match="DHGenParameterSpec" /> + <keyword match="DHKey" /> + <keyword match="DHParameterSpec" /> + <keyword match="DHPrivateKey" /> + <keyword match="DHPrivateKeySpec" /> + <keyword match="DHPublicKey" /> + <keyword match="DHPublicKeySpec" /> + <keyword match="Dialog" /> + <keyword match="Dictionary" /> + <keyword match="DigestException" /> + <keyword match="DigestInputStream" /> + <keyword match="DigestOutputStream" /> + <keyword match="Dimension" /> + <keyword match="Dimension2D" /> + <keyword match="DimensionUIResource" /> + <keyword match="DirContext" /> + <keyword match="DirectColorModel" /> + <keyword match="DirectoryManager" /> + <keyword match="DirObjectFactory" /> + <keyword match="DirStateFactory" /> + + <keyword match="DisplayMode" /> + <keyword match="DnDConstants" /> + <keyword match="Doc" /> + <keyword match="DocAttribute" /> + <keyword match="DocAttributeSet" /> + <keyword match="DocFlavor" /> + + + + + + + + <keyword match="DocPrintJob" /> + <keyword match="Document" /> + <keyword match="Document" /> + <keyword match="DocumentBuilder" /> + <keyword match="DocumentBuilderFactory" /> + <keyword match="DocumentEvent" /> + + + <keyword match="DocumentFilter" /> + + <keyword match="DocumentFragment" /> + <keyword match="DocumentHandler" /> + <keyword match="DocumentListener" /> + <keyword match="DocumentName" /> + <keyword match="DocumentParser" /> + <keyword match="DocumentType" /> + <keyword match="DomainCombiner" /> + <keyword match="DomainManager" /> + <keyword match="DomainManagerOperations" /> + <keyword match="DOMException" /> + <keyword match="DOMImplementation" /> + <keyword match="DOMLocator" /> + <keyword match="DOMResult" /> + <keyword match="DOMSource" /> + <keyword match="Double" /> + <keyword match="DoubleBuffer" /> + <keyword match="DoubleHolder" /> + <keyword match="DoubleSeqHelper" /> + <keyword match="DoubleSeqHolder" /> + <keyword match="DragGestureEvent" /> + <keyword match="DragGestureListener" /> + <keyword match="DragGestureRecognizer" /> + <keyword match="DragSource" /> + <keyword match="DragSourceAdapter" /> + <keyword match="DragSourceContext" /> + <keyword match="DragSourceDragEvent" /> + <keyword match="DragSourceDropEvent" /> + <keyword match="DragSourceEvent" /> + <keyword match="DragSourceListener" /> + <keyword match="DragSourceMotionListener" /> + <keyword match="Driver" /> + <keyword match="DriverManager" /> + <keyword match="DriverPropertyInfo" /> + <keyword match="DropTarget" /> + + <keyword match="DropTargetAdapter" /> + <keyword match="DropTargetContext" /> + <keyword match="DropTargetDragEvent" /> + <keyword match="DropTargetDropEvent" /> + <keyword match="DropTargetEvent" /> + <keyword match="DropTargetListener" /> + <keyword match="DSAKey" /> + <keyword match="DSAKeyPairGenerator" /> + <keyword match="DSAParameterSpec" /> + <keyword match="DSAParams" /> + <keyword match="DSAPrivateKey" /> + <keyword match="DSAPrivateKeySpec" /> + <keyword match="DSAPublicKey" /> + <keyword match="DSAPublicKeySpec" /> + <keyword match="DTD" /> + <keyword match="DTDConstants" /> + <keyword match="DTDHandler" /> + <keyword match="DuplicateName" /> + <keyword match="DuplicateNameHelper" /> + <keyword match="DynamicImplementation" /> + <keyword match="DynamicImplementation" /> + <keyword match="DynAny" /> + <keyword match="DynAny" /> + <keyword match="DynAnyFactory" /> + <keyword match="DynAnyFactoryHelper" /> + <keyword match="DynAnyFactoryOperations" /> + <keyword match="DynAnyHelper" /> + <keyword match="DynAnyOperations" /> + <keyword match="DynAnySeqHelper" /> + <keyword match="DynArray" /> + <keyword match="DynArray" /> + <keyword match="DynArrayHelper" /> + <keyword match="DynArrayOperations" /> + <keyword match="DynEnum" /> + <keyword match="DynEnum" /> + <keyword match="DynEnumHelper" /> + <keyword match="DynEnumOperations" /> + <keyword match="DynFixed" /> + <keyword match="DynFixed" /> + <keyword match="DynFixedHelper" /> + <keyword match="DynFixedOperations" /> + <keyword match="DynSequence" /> + <keyword match="DynSequence" /> + <keyword match="DynSequenceHelper" /> + <keyword match="DynSequenceOperations" /> + <keyword match="DynStruct" /> + <keyword match="DynStruct" /> + <keyword match="DynStructHelper" /> + <keyword match="DynStructOperations" /> + <keyword match="DynUnion" /> + <keyword match="DynUnion" /> + <keyword match="DynUnionHelper" /> + <keyword match="DynUnionOperations" /> + <keyword match="DynValue" /> + <keyword match="DynValue" /> + <keyword match="DynValueBox" /> + <keyword match="DynValueBoxOperations" /> + <keyword match="DynValueCommon" /> + <keyword match="DynValueCommonOperations" /> + <keyword match="DynValueHelper" /> + <keyword match="DynValueOperations" /> + <keyword match="EditorKit" /> + <keyword match="Element" /> + <keyword match="Element" /> + <keyword match="Element" /> + <keyword match="ElementIterator" /> + <keyword match="Ellipse2D" /> + + + <keyword match="EmptyBorder" /> + <keyword match="EmptyStackException" /> + <keyword match="EncodedKeySpec" /> + <keyword match="Encoder" /> + <keyword match="Encoding" /> + <keyword match="ENCODING_CDR_ENCAPS" /> + <keyword match="EncryptedPrivateKeyInfo" /> + <keyword match="Entity" /> + <keyword match="Entity" /> + <keyword match="EntityReference" /> + <keyword match="EntityResolver" /> + <keyword match="EnumControl" /> + + <keyword match="Enumeration" /> + <keyword match="EnumSyntax" /> + <keyword match="Environment" /> + <keyword match="EOFException" /> + <keyword match="Error" /> + <keyword match="ErrorHandler" /> + <keyword match="ErrorListener" /> + <keyword match="ErrorManager" /> + <keyword match="EtchedBorder" /> + <keyword match="Event" /> + <keyword match="EventContext" /> + <keyword match="EventDirContext" /> + <keyword match="EventHandler" /> + <keyword match="EventListener" /> + <keyword match="EventListenerList" /> + <keyword match="EventListenerProxy" /> + <keyword match="EventObject" /> + <keyword match="EventQueue" /> + <keyword match="EventSetDescriptor" /> + <keyword match="Exception" /> + <keyword match="ExceptionInInitializerError" /> + <keyword match="ExceptionList" /> + <keyword match="ExceptionListener" /> + <keyword match="ExemptionMechanism" /> + <keyword match="ExemptionMechanismException" /> + <keyword match="ExemptionMechanismSpi" /> + <keyword match="ExpandVetoException" /> + <keyword match="ExportException" /> + <keyword match="Expression" /> + <keyword match="ExtendedRequest" /> + <keyword match="ExtendedResponse" /> + <keyword match="Externalizable" /> + <keyword match="FactoryConfigurationError" /> + <keyword match="FailedLoginException" /> + <keyword match="FeatureDescriptor" /> + <keyword match="Fidelity" /> + <keyword match="Field" /> + <keyword match="FieldNameHelper" /> + <keyword match="FieldNameHelper" /> + <keyword match="FieldPosition" /> + <keyword match="FieldView" /> + <keyword match="File" /> + <keyword match="FileCacheImageInputStream" /> + <keyword match="FileCacheImageOutputStream" /> + <keyword match="FileChannel" /> + + <keyword match="FileChooserUI" /> + <keyword match="FileDescriptor" /> + <keyword match="FileDialog" /> + <keyword match="FileFilter" /> + <keyword match="FileFilter" /> + <keyword match="FileHandler" /> + <keyword match="FileImageInputStream" /> + <keyword match="FileImageOutputStream" /> + <keyword match="FileInputStream" /> + <keyword match="FileLock" /> + <keyword match="FileLockInterruptionException" /> + <keyword match="FilenameFilter" /> + <keyword match="FileNameMap" /> + <keyword match="FileNotFoundException" /> + <keyword match="FileOutputStream" /> + <keyword match="FilePermission" /> + <keyword match="FileReader" /> + <keyword match="FileSystemView" /> + <keyword match="FileView" /> + <keyword match="FileWriter" /> + <keyword match="Filter" /> + <keyword match="FilteredImageSource" /> + <keyword match="FilterInputStream" /> + <keyword match="FilterOutputStream" /> + <keyword match="FilterReader" /> + <keyword match="FilterWriter" /> + <keyword match="Finishings" /> + <keyword match="FixedHeightLayoutCache" /> + <keyword match="FixedHolder" /> + <keyword match="FlatteningPathIterator" /> + <keyword match="FlavorException" /> + <keyword match="FlavorMap" /> + <keyword match="FlavorTable" /> + <keyword match="Float" /> + <keyword match="FloatBuffer" /> + <keyword match="FloatControl" /> + + <keyword match="FloatHolder" /> + <keyword match="FloatSeqHelper" /> + <keyword match="FloatSeqHolder" /> + <keyword match="FlowLayout" /> + <keyword match="FlowView" /> + + <keyword match="FocusAdapter" /> + <keyword match="FocusEvent" /> + <keyword match="FocusListener" /> + <keyword match="FocusManager" /> + <keyword match="FocusTraversalPolicy" /> + <keyword match="Font" /> + <keyword match="FontFormatException" /> + <keyword match="FontMetrics" /> + <keyword match="FontRenderContext" /> + <keyword match="FontUIResource" /> + <keyword match="Format" /> + + <keyword match="FormatConversionProvider" /> + <keyword match="FormatMismatch" /> + <keyword match="FormatMismatchHelper" /> + <keyword match="Formatter" /> + <keyword match="FormView" /> + <keyword match="ForwardRequest" /> + <keyword match="ForwardRequest" /> + <keyword match="ForwardRequestHelper" /> + <keyword match="ForwardRequestHelper" /> + <keyword match="Frame" /> + <keyword match="FREE_MEM" /> + <keyword match="GapContent" /> + <keyword match="GatheringByteChannel" /> + <keyword match="GeneralPath" /> + <keyword match="GeneralSecurityException" /> + <keyword match="GlyphJustificationInfo" /> + <keyword match="GlyphMetrics" /> + <keyword match="GlyphVector" /> + <keyword match="GlyphView" /> + + <keyword match="GradientPaint" /> + <keyword match="GraphicAttribute" /> + <keyword match="Graphics" /> + <keyword match="Graphics2D" /> + <keyword match="GraphicsConfigTemplate" /> + <keyword match="GraphicsConfiguration" /> + <keyword match="GraphicsDevice" /> + <keyword match="GraphicsEnvironment" /> + <keyword match="GrayFilter" /> + <keyword match="GregorianCalendar" /> + <keyword match="GridBagConstraints" /> + <keyword match="GridBagLayout" /> + <keyword match="GridLayout" /> + <keyword match="Group" /> + <keyword match="GSSContext" /> + <keyword match="GSSCredential" /> + <keyword match="GSSException" /> + <keyword match="GSSManager" /> + <keyword match="GSSName" /> + <keyword match="Guard" /> + <keyword match="GuardedObject" /> + <keyword match="GZIPInputStream" /> + <keyword match="GZIPOutputStream" /> + <keyword match="Handler" /> + <keyword match="HandlerBase" /> + <keyword match="HandshakeCompletedEvent" /> + <keyword match="HandshakeCompletedListener" /> + <keyword match="HasControls" /> + <keyword match="HashAttributeSet" /> + <keyword match="HashDocAttributeSet" /> + <keyword match="HashMap" /> + <keyword match="HashPrintJobAttributeSet" /> + <keyword match="HashPrintRequestAttributeSet" /> + <keyword match="HashPrintServiceAttributeSet" /> + <keyword match="HashSet" /> + <keyword match="Hashtable" /> + <keyword match="HeadlessException" /> + <keyword match="HierarchyBoundsAdapter" /> + <keyword match="HierarchyBoundsListener" /> + <keyword match="HierarchyEvent" /> + <keyword match="HierarchyListener" /> + <keyword match="Highlighter" /> + + + <keyword match="HostnameVerifier" /> + <keyword match="HTML" /> + + + + <keyword match="HTMLDocument" /> + + <keyword match="HTMLEditorKit" /> + + + + + + + <keyword match="HTMLFrameHyperlinkEvent" /> + <keyword match="HTMLWriter" /> + <keyword match="HttpsURLConnection" /> + <keyword match="HttpURLConnection" /> + <keyword match="HyperlinkEvent" /> + + <keyword match="HyperlinkListener" /> + <keyword match="ICC_ColorSpace" /> + <keyword match="ICC_Profile" /> + <keyword match="ICC_ProfileGray" /> + <keyword match="ICC_ProfileRGB" /> + <keyword match="Icon" /> + <keyword match="IconUIResource" /> + <keyword match="IconView" /> + <keyword match="ID_ASSIGNMENT_POLICY_ID" /> + <keyword match="ID_UNIQUENESS_POLICY_ID" /> + <keyword match="IdAssignmentPolicy" /> + <keyword match="IdAssignmentPolicyOperations" /> + <keyword match="IdAssignmentPolicyValue" /> + <keyword match="IdentifierHelper" /> + <keyword match="Identity" /> + <keyword match="IdentityHashMap" /> + <keyword match="IdentityScope" /> + <keyword match="IDLEntity" /> + <keyword match="IDLType" /> + <keyword match="IDLTypeHelper" /> + <keyword match="IDLTypeOperations" /> + <keyword match="IdUniquenessPolicy" /> + <keyword match="IdUniquenessPolicyOperations" /> + <keyword match="IdUniquenessPolicyValue" /> + <keyword match="IIOByteBuffer" /> + <keyword match="IIOException" /> + <keyword match="IIOImage" /> + <keyword match="IIOInvalidTreeException" /> + <keyword match="IIOMetadata" /> + <keyword match="IIOMetadataController" /> + <keyword match="IIOMetadataFormat" /> + <keyword match="IIOMetadataFormatImpl" /> + <keyword match="IIOMetadataNode" /> + <keyword match="IIOParam" /> + <keyword match="IIOParamController" /> + <keyword match="IIOReadProgressListener" /> + <keyword match="IIOReadUpdateListener" /> + <keyword match="IIOReadWarningListener" /> + <keyword match="IIORegistry" /> + <keyword match="IIOServiceProvider" /> + <keyword match="IIOWriteProgressListener" /> + <keyword match="IIOWriteWarningListener" /> + <keyword match="IllegalAccessError" /> + <keyword match="IllegalAccessException" /> + <keyword match="IllegalArgumentException" /> + <keyword match="IllegalBlockingModeException" /> + <keyword match="IllegalBlockSizeException" /> + <keyword match="IllegalCharsetNameException" /> + <keyword match="IllegalComponentStateException" /> + <keyword match="IllegalMonitorStateException" /> + <keyword match="IllegalPathStateException" /> + <keyword match="IllegalSelectorException" /> + <keyword match="IllegalStateException" /> + <keyword match="IllegalThreadStateException" /> + <keyword match="Image" /> + <keyword match="ImageCapabilities" /> + <keyword match="ImageConsumer" /> + <keyword match="ImageFilter" /> + <keyword match="ImageGraphicAttribute" /> + <keyword match="ImageIcon" /> + <keyword match="ImageInputStream" /> + <keyword match="ImageInputStreamImpl" /> + <keyword match="ImageInputStreamSpi" /> + <keyword match="ImageIO" /> + <keyword match="ImageObserver" /> + <keyword match="ImageOutputStream" /> + <keyword match="ImageOutputStreamImpl" /> + <keyword match="ImageOutputStreamSpi" /> + <keyword match="ImageProducer" /> + <keyword match="ImageReader" /> + <keyword match="ImageReaderSpi" /> + <keyword match="ImageReaderWriterSpi" /> + <keyword match="ImageReadParam" /> + <keyword match="ImageTranscoder" /> + <keyword match="ImageTranscoderSpi" /> + <keyword match="ImageTypeSpecifier" /> + <keyword match="ImageView" /> + <keyword match="ImageWriteParam" /> + <keyword match="ImageWriter" /> + <keyword match="ImageWriterSpi" /> + <keyword match="ImagingOpException" /> + <keyword match="IMP_LIMIT" /> + <keyword match="IMPLICIT_ACTIVATION_POLICY_ID" /> + <keyword match="ImplicitActivationPolicy" /> + <keyword match="ImplicitActivationPolicyOperations" /> + <keyword match="ImplicitActivationPolicyValue" /> + <keyword match="IncompatibleClassChangeError" /> + <keyword match="InconsistentTypeCode" /> + <keyword match="InconsistentTypeCode" /> + <keyword match="InconsistentTypeCodeHelper" /> + <keyword match="IndexColorModel" /> + <keyword match="IndexedPropertyDescriptor" /> + <keyword match="IndexOutOfBoundsException" /> + <keyword match="IndirectionException" /> + <keyword match="Inet4Address" /> + <keyword match="Inet6Address" /> + <keyword match="InetAddress" /> + <keyword match="InetSocketAddress" /> + <keyword match="Inflater" /> + <keyword match="InflaterInputStream" /> + <keyword match="InheritableThreadLocal" /> + <keyword match="InitialContext" /> + <keyword match="InitialContextFactory" /> + <keyword match="InitialContextFactoryBuilder" /> + <keyword match="InitialDirContext" /> + <keyword match="INITIALIZE" /> + <keyword match="InitialLdapContext" /> + <keyword match="InlineView" /> + <keyword match="InputContext" /> + <keyword match="InputEvent" /> + <keyword match="InputMap" /> + <keyword match="InputMapUIResource" /> + <keyword match="InputMethod" /> + <keyword match="InputMethodContext" /> + <keyword match="InputMethodDescriptor" /> + <keyword match="InputMethodEvent" /> + <keyword match="InputMethodHighlight" /> + <keyword match="InputMethodListener" /> + <keyword match="InputMethodRequests" /> + <keyword match="InputSource" /> + <keyword match="InputStream" /> + <keyword match="InputStream" /> + <keyword match="InputStream" /> + <keyword match="InputStreamReader" /> + <keyword match="InputSubset" /> + <keyword match="InputVerifier" /> + <keyword match="Insets" /> + <keyword match="InsetsUIResource" /> + <keyword match="InstantiationError" /> + <keyword match="InstantiationException" /> + <keyword match="Instrument" /> + <keyword match="InsufficientResourcesException" /> + <keyword match="IntBuffer" /> + <keyword match="Integer" /> + <keyword match="IntegerSyntax" /> + <keyword match="Interceptor" /> + <keyword match="InterceptorOperations" /> + <keyword match="INTERNAL" /> + <keyword match="InternalError" /> + <keyword match="InternalFrameAdapter" /> + <keyword match="InternalFrameEvent" /> + <keyword match="InternalFrameFocusTraversalPolicy" /> + <keyword match="InternalFrameListener" /> + <keyword match="InternalFrameUI" /> + <keyword match="InternationalFormatter" /> + <keyword match="InterruptedException" /> + <keyword match="InterruptedIOException" /> + <keyword match="InterruptedNamingException" /> + <keyword match="InterruptibleChannel" /> + <keyword match="INTF_REPOS" /> + <keyword match="IntHolder" /> + <keyword match="IntrospectionException" /> + <keyword match="Introspector" /> + <keyword match="INV_FLAG" /> + <keyword match="INV_IDENT" /> + <keyword match="INV_OBJREF" /> + <keyword match="INV_POLICY" /> + <keyword match="Invalid" /> + <keyword match="INVALID_TRANSACTION" /> + <keyword match="InvalidAddress" /> + <keyword match="InvalidAddressHelper" /> + <keyword match="InvalidAddressHolder" /> + <keyword match="InvalidAlgorithmParameterException" /> + <keyword match="InvalidAttributeIdentifierException" /> + <keyword match="InvalidAttributesException" /> + <keyword match="InvalidAttributeValueException" /> + <keyword match="InvalidClassException" /> + <keyword match="InvalidDnDOperationException" /> + <keyword match="InvalidKeyException" /> + <keyword match="InvalidKeySpecException" /> + <keyword match="InvalidMarkException" /> + <keyword match="InvalidMidiDataException" /> + <keyword match="InvalidName" /> + <keyword match="InvalidName" /> + <keyword match="InvalidName" /> + <keyword match="InvalidNameException" /> + <keyword match="InvalidNameHelper" /> + <keyword match="InvalidNameHelper" /> + <keyword match="InvalidNameHolder" /> + <keyword match="InvalidObjectException" /> + <keyword match="InvalidParameterException" /> + <keyword match="InvalidParameterSpecException" /> + <keyword match="InvalidPolicy" /> + <keyword match="InvalidPolicyHelper" /> + <keyword match="InvalidPreferencesFormatException" /> + <keyword match="InvalidSearchControlsException" /> + <keyword match="InvalidSearchFilterException" /> + <keyword match="InvalidSeq" /> + <keyword match="InvalidSlot" /> + <keyword match="InvalidSlotHelper" /> + <keyword match="InvalidTransactionException" /> + <keyword match="InvalidTypeForEncoding" /> + <keyword match="InvalidTypeForEncodingHelper" /> + <keyword match="InvalidValue" /> + <keyword match="InvalidValue" /> + <keyword match="InvalidValueHelper" /> + <keyword match="InvocationEvent" /> + <keyword match="InvocationHandler" /> + <keyword match="InvocationTargetException" /> + <keyword match="InvokeHandler" /> + <keyword match="IOException" /> + <keyword match="IOR" /> + <keyword match="IORHelper" /> + <keyword match="IORHolder" /> + <keyword match="IORInfo" /> + <keyword match="IORInfoOperations" /> + <keyword match="IORInterceptor" /> + <keyword match="IORInterceptorOperations" /> + <keyword match="IRObject" /> + <keyword match="IRObjectOperations" /> + <keyword match="IstringHelper" /> + <keyword match="ItemEvent" /> + <keyword match="ItemListener" /> + <keyword match="ItemSelectable" /> + <keyword match="Iterator" /> + <keyword match="IvParameterSpec" /> + <keyword match="JApplet" /> + <keyword match="JarEntry" /> + <keyword match="JarException" /> + <keyword match="JarFile" /> + <keyword match="JarInputStream" /> + <keyword match="JarOutputStream" /> + <keyword match="JarURLConnection" /> + <keyword match="JButton" /> + <keyword match="JCheckBox" /> + <keyword match="JCheckBoxMenuItem" /> + <keyword match="JColorChooser" /> + <keyword match="JComboBox" /> + + <keyword match="JComponent" /> + <keyword match="JDesktopPane" /> + <keyword match="JDialog" /> + <keyword match="JEditorPane" /> + <keyword match="JFileChooser" /> + <keyword match="JFormattedTextField" /> + + + <keyword match="JFrame" /> + <keyword match="JInternalFrame" /> + + <keyword match="JLabel" /> + <keyword match="JLayeredPane" /> + <keyword match="JList" /> + <keyword match="JMenu" /> + <keyword match="JMenuBar" /> + <keyword match="JMenuItem" /> + <keyword match="JobAttributes" /> + + + + + + <keyword match="JobHoldUntil" /> + <keyword match="JobImpressions" /> + <keyword match="JobImpressionsCompleted" /> + <keyword match="JobImpressionsSupported" /> + <keyword match="JobKOctets" /> + <keyword match="JobKOctetsProcessed" /> + <keyword match="JobKOctetsSupported" /> + <keyword match="JobMediaSheets" /> + <keyword match="JobMediaSheetsCompleted" /> + <keyword match="JobMediaSheetsSupported" /> + <keyword match="JobMessageFromOperator" /> + <keyword match="JobName" /> + <keyword match="JobOriginatingUserName" /> + <keyword match="JobPriority" /> + <keyword match="JobPrioritySupported" /> + <keyword match="JobSheets" /> + <keyword match="JobState" /> + <keyword match="JobStateReason" /> + <keyword match="JobStateReasons" /> + <keyword match="JOptionPane" /> + <keyword match="JPanel" /> + <keyword match="JPasswordField" /> + <keyword match="JPEGHuffmanTable" /> + <keyword match="JPEGImageReadParam" /> + <keyword match="JPEGImageWriteParam" /> + <keyword match="JPEGQTable" /> + <keyword match="JPopupMenu" /> + + <keyword match="JProgressBar" /> + <keyword match="JRadioButton" /> + <keyword match="JRadioButtonMenuItem" /> + <keyword match="JRootPane" /> + <keyword match="JScrollBar" /> + <keyword match="JScrollPane" /> + <keyword match="JSeparator" /> + <keyword match="JSlider" /> + <keyword match="JSpinner" /> + + + + + <keyword match="JSplitPane" /> + <keyword match="JTabbedPane" /> + <keyword match="JTable" /> + <keyword match="JTableHeader" /> + <keyword match="JTextArea" /> + <keyword match="JTextComponent" /> + + <keyword match="JTextField" /> + <keyword match="JTextPane" /> + <keyword match="JToggleButton" /> + + <keyword match="JToolBar" /> + + <keyword match="JToolTip" /> + <keyword match="JTree" /> + + + <keyword match="JViewport" /> + <keyword match="JWindow" /> + <keyword match="KerberosKey" /> + <keyword match="KerberosPrincipal" /> + <keyword match="KerberosTicket" /> + <keyword match="Kernel" /> + <keyword match="Key" /> + <keyword match="KeyAdapter" /> + <keyword match="KeyAgreement" /> + <keyword match="KeyAgreementSpi" /> + <keyword match="KeyboardFocusManager" /> + <keyword match="KeyEvent" /> + <keyword match="KeyEventDispatcher" /> + <keyword match="KeyEventPostProcessor" /> + <keyword match="KeyException" /> + <keyword match="KeyFactory" /> + <keyword match="KeyFactorySpi" /> + <keyword match="KeyGenerator" /> + <keyword match="KeyGeneratorSpi" /> + <keyword match="KeyListener" /> + <keyword match="KeyManagementException" /> + <keyword match="KeyManager" /> + <keyword match="KeyManagerFactory" /> + <keyword match="KeyManagerFactorySpi" /> + <keyword match="Keymap" /> + <keyword match="KeyPair" /> + <keyword match="KeyPairGenerator" /> + <keyword match="KeyPairGeneratorSpi" /> + <keyword match="KeySpec" /> + <keyword match="KeyStore" /> + <keyword match="KeyStoreException" /> + <keyword match="KeyStoreSpi" /> + <keyword match="KeyStroke" /> + <keyword match="Label" /> + <keyword match="LabelUI" /> + <keyword match="LabelView" /> + <keyword match="LanguageCallback" /> + <keyword match="LastOwnerException" /> + <keyword match="LayeredHighlighter" /> + + <keyword match="LayoutFocusTraversalPolicy" /> + <keyword match="LayoutManager" /> + <keyword match="LayoutManager2" /> + <keyword match="LayoutQueue" /> + <keyword match="LDAPCertStoreParameters" /> + <keyword match="LdapContext" /> + <keyword match="LdapReferralException" /> + <keyword match="Lease" /> + <keyword match="Level" /> + <keyword match="LexicalHandler" /> + <keyword match="LIFESPAN_POLICY_ID" /> + <keyword match="LifespanPolicy" /> + <keyword match="LifespanPolicyOperations" /> + <keyword match="LifespanPolicyValue" /> + <keyword match="LimitExceededException" /> + <keyword match="Line" /> + + <keyword match="Line2D" /> + + + <keyword match="LineBorder" /> + <keyword match="LineBreakMeasurer" /> + <keyword match="LineEvent" /> + + <keyword match="LineListener" /> + <keyword match="LineMetrics" /> + <keyword match="LineNumberInputStream" /> + <keyword match="LineNumberReader" /> + <keyword match="LineUnavailableException" /> + <keyword match="LinkageError" /> + <keyword match="LinkedHashMap" /> + <keyword match="LinkedHashSet" /> + <keyword match="LinkedList" /> + <keyword match="LinkException" /> + <keyword match="LinkLoopException" /> + <keyword match="LinkRef" /> + <keyword match="List" /> + <keyword match="List" /> + <keyword match="ListCellRenderer" /> + <keyword match="ListDataEvent" /> + <keyword match="ListDataListener" /> + <keyword match="ListIterator" /> + <keyword match="ListModel" /> + <keyword match="ListResourceBundle" /> + <keyword match="ListSelectionEvent" /> + <keyword match="ListSelectionListener" /> + <keyword match="ListSelectionModel" /> + <keyword match="ListUI" /> + <keyword match="ListView" /> + <keyword match="LoaderHandler" /> + <keyword match="Locale" /> + <keyword match="LocalObject" /> + <keyword match="LocateRegistry" /> + <keyword match="LOCATION_FORWARD" /> + <keyword match="Locator" /> + <keyword match="LocatorImpl" /> + <keyword match="Logger" /> + <keyword match="LoggingPermission" /> + <keyword match="LoginContext" /> + <keyword match="LoginException" /> + <keyword match="LoginModule" /> + <keyword match="LogManager" /> + <keyword match="LogRecord" /> + <keyword match="LogStream" /> + <keyword match="Long" /> + <keyword match="LongBuffer" /> + <keyword match="LongHolder" /> + <keyword match="LongLongSeqHelper" /> + <keyword match="LongLongSeqHolder" /> + <keyword match="LongSeqHelper" /> + <keyword match="LongSeqHolder" /> + <keyword match="LookAndFeel" /> + <keyword match="LookupOp" /> + <keyword match="LookupTable" /> + <keyword match="Mac" /> + <keyword match="MacSpi" /> + <keyword match="MalformedInputException" /> + <keyword match="MalformedLinkException" /> + <keyword match="MalformedURLException" /> + <keyword match="ManagerFactoryParameters" /> + <keyword match="Manifest" /> + <keyword match="Map" /> + + <keyword match="MappedByteBuffer" /> + <keyword match="MARSHAL" /> + <keyword match="MarshalException" /> + <keyword match="MarshalledObject" /> + <keyword match="MaskFormatter" /> + <keyword match="Matcher" /> + <keyword match="Math" /> + <keyword match="MatteBorder" /> + <keyword match="Media" /> + <keyword match="MediaName" /> + <keyword match="MediaPrintableArea" /> + <keyword match="MediaSize" /> + + + + + + <keyword match="MediaSizeName" /> + <keyword match="MediaTracker" /> + <keyword match="MediaTray" /> + <keyword match="Member" /> + <keyword match="MemoryCacheImageInputStream" /> + <keyword match="MemoryCacheImageOutputStream" /> + <keyword match="MemoryHandler" /> + <keyword match="MemoryImageSource" /> + <keyword match="Menu" /> + <keyword match="MenuBar" /> + <keyword match="MenuBarUI" /> + <keyword match="MenuComponent" /> + <keyword match="MenuContainer" /> + <keyword match="MenuDragMouseEvent" /> + <keyword match="MenuDragMouseListener" /> + <keyword match="MenuElement" /> + <keyword match="MenuEvent" /> + <keyword match="MenuItem" /> + <keyword match="MenuItemUI" /> + <keyword match="MenuKeyEvent" /> + <keyword match="MenuKeyListener" /> + <keyword match="MenuListener" /> + <keyword match="MenuSelectionManager" /> + <keyword match="MenuShortcut" /> + <keyword match="MessageDigest" /> + <keyword match="MessageDigestSpi" /> + <keyword match="MessageFormat" /> + + <keyword match="MessageProp" /> + <keyword match="MetaEventListener" /> + <keyword match="MetalBorders" /> + + + + + + + + + + + + + + + <keyword match="MetalButtonUI" /> + <keyword match="MetalCheckBoxIcon" /> + <keyword match="MetalCheckBoxUI" /> + <keyword match="MetalComboBoxButton" /> + <keyword match="MetalComboBoxEditor" /> + + <keyword match="MetalComboBoxIcon" /> + <keyword match="MetalComboBoxUI" /> + <keyword match="MetalDesktopIconUI" /> + <keyword match="MetalFileChooserUI" /> + <keyword match="MetalIconFactory" /> + + + + + + + <keyword match="MetalInternalFrameTitlePane" /> + <keyword match="MetalInternalFrameUI" /> + <keyword match="MetalLabelUI" /> + <keyword match="MetalLookAndFeel" /> + <keyword match="MetalPopupMenuSeparatorUI" /> + <keyword match="MetalProgressBarUI" /> + <keyword match="MetalRadioButtonUI" /> + <keyword match="MetalRootPaneUI" /> + <keyword match="MetalScrollBarUI" /> + <keyword match="MetalScrollButton" /> + <keyword match="MetalScrollPaneUI" /> + <keyword match="MetalSeparatorUI" /> + <keyword match="MetalSliderUI" /> + <keyword match="MetalSplitPaneUI" /> + <keyword match="MetalTabbedPaneUI" /> + <keyword match="MetalTextFieldUI" /> + <keyword match="MetalTheme" /> + <keyword match="MetalToggleButtonUI" /> + <keyword match="MetalToolBarUI" /> + <keyword match="MetalToolTipUI" /> + <keyword match="MetalTreeUI" /> + <keyword match="MetaMessage" /> + <keyword match="Method" /> + <keyword match="MethodDescriptor" /> + <keyword match="MidiChannel" /> + <keyword match="MidiDevice" /> + + <keyword match="MidiDeviceProvider" /> + <keyword match="MidiEvent" /> + <keyword match="MidiFileFormat" /> + <keyword match="MidiFileReader" /> + <keyword match="MidiFileWriter" /> + <keyword match="MidiMessage" /> + <keyword match="MidiSystem" /> + <keyword match="MidiUnavailableException" /> + <keyword match="MimeTypeParseException" /> + <keyword match="MinimalHTMLWriter" /> + <keyword match="MissingResourceException" /> + <keyword match="Mixer" /> + + <keyword match="MixerProvider" /> + <keyword match="ModificationItem" /> + <keyword match="Modifier" /> + <keyword match="MouseAdapter" /> + <keyword match="MouseDragGestureRecognizer" /> + <keyword match="MouseEvent" /> + <keyword match="MouseInputAdapter" /> + <keyword match="MouseInputListener" /> + <keyword match="MouseListener" /> + <keyword match="MouseMotionAdapter" /> + <keyword match="MouseMotionListener" /> + <keyword match="MouseWheelEvent" /> + <keyword match="MouseWheelListener" /> + <keyword match="MultiButtonUI" /> + <keyword match="MulticastSocket" /> + <keyword match="MultiColorChooserUI" /> + <keyword match="MultiComboBoxUI" /> + <keyword match="MultiDesktopIconUI" /> + <keyword match="MultiDesktopPaneUI" /> + <keyword match="MultiDoc" /> + <keyword match="MultiDocPrintJob" /> + <keyword match="MultiDocPrintService" /> + <keyword match="MultiFileChooserUI" /> + <keyword match="MultiInternalFrameUI" /> + <keyword match="MultiLabelUI" /> + <keyword match="MultiListUI" /> + <keyword match="MultiLookAndFeel" /> + <keyword match="MultiMenuBarUI" /> + <keyword match="MultiMenuItemUI" /> + <keyword match="MultiOptionPaneUI" /> + <keyword match="MultiPanelUI" /> + <keyword match="MultiPixelPackedSampleModel" /> + <keyword match="MultipleComponentProfileHelper" /> + <keyword match="MultipleComponentProfileHolder" /> + <keyword match="MultipleDocumentHandling" /> + <keyword match="MultipleMaster" /> + <keyword match="MultiPopupMenuUI" /> + <keyword match="MultiProgressBarUI" /> + <keyword match="MultiRootPaneUI" /> + <keyword match="MultiScrollBarUI" /> + <keyword match="MultiScrollPaneUI" /> + <keyword match="MultiSeparatorUI" /> + <keyword match="MultiSliderUI" /> + <keyword match="MultiSpinnerUI" /> + <keyword match="MultiSplitPaneUI" /> + <keyword match="MultiTabbedPaneUI" /> + <keyword match="MultiTableHeaderUI" /> + <keyword match="MultiTableUI" /> + <keyword match="MultiTextUI" /> + <keyword match="MultiToolBarUI" /> + <keyword match="MultiToolTipUI" /> + <keyword match="MultiTreeUI" /> + <keyword match="MultiViewportUI" /> + <keyword match="MutableAttributeSet" /> + <keyword match="MutableComboBoxModel" /> + <keyword match="MutableTreeNode" /> + <keyword match="Name" /> + <keyword match="NameAlreadyBoundException" /> + <keyword match="NameCallback" /> + <keyword match="NameClassPair" /> + <keyword match="NameComponent" /> + <keyword match="NameComponentHelper" /> + <keyword match="NameComponentHolder" /> + <keyword match="NamedNodeMap" /> + <keyword match="NamedValue" /> + <keyword match="NameDynAnyPair" /> + <keyword match="NameDynAnyPairHelper" /> + <keyword match="NameDynAnyPairSeqHelper" /> + <keyword match="NameHelper" /> + <keyword match="NameHolder" /> + <keyword match="NameNotFoundException" /> + <keyword match="NameParser" /> + <keyword match="NamespaceChangeListener" /> + <keyword match="NamespaceSupport" /> + <keyword match="NameValuePair" /> + <keyword match="NameValuePair" /> + <keyword match="NameValuePairHelper" /> + <keyword match="NameValuePairHelper" /> + <keyword match="NameValuePairSeqHelper" /> + <keyword match="Naming" /> + <keyword match="NamingContext" /> + <keyword match="NamingContextExt" /> + <keyword match="NamingContextExtHelper" /> + <keyword match="NamingContextExtHolder" /> + <keyword match="NamingContextExtOperations" /> + <keyword match="NamingContextExtPOA" /> + <keyword match="NamingContextHelper" /> + <keyword match="NamingContextHolder" /> + <keyword match="NamingContextOperations" /> + <keyword match="NamingContextPOA" /> + <keyword match="NamingEnumeration" /> + <keyword match="NamingEvent" /> + <keyword match="NamingException" /> + <keyword match="NamingExceptionEvent" /> + <keyword match="NamingListener" /> + <keyword match="NamingManager" /> + <keyword match="NamingSecurityException" /> + <keyword match="NavigationFilter" /> + + <keyword match="NegativeArraySizeException" /> + <keyword match="NetPermission" /> + <keyword match="NetworkInterface" /> + <keyword match="NO_IMPLEMENT" /> + <keyword match="NO_MEMORY" /> + <keyword match="NO_PERMISSION" /> + <keyword match="NO_RESOURCES" /> + <keyword match="NO_RESPONSE" /> + <keyword match="NoClassDefFoundError" /> + <keyword match="NoConnectionPendingException" /> + <keyword match="NoContext" /> + <keyword match="NoContextHelper" /> + <keyword match="Node" /> + <keyword match="NodeChangeEvent" /> + <keyword match="NodeChangeListener" /> + <keyword match="NodeList" /> + <keyword match="NoInitialContextException" /> + <keyword match="NoninvertibleTransformException" /> + <keyword match="NonReadableChannelException" /> + <keyword match="NonWritableChannelException" /> + <keyword match="NoPermissionException" /> + <keyword match="NoRouteToHostException" /> + <keyword match="NoServant" /> + <keyword match="NoServantHelper" /> + <keyword match="NoSuchAlgorithmException" /> + <keyword match="NoSuchAttributeException" /> + <keyword match="NoSuchElementException" /> + <keyword match="NoSuchFieldError" /> + <keyword match="NoSuchFieldException" /> + <keyword match="NoSuchMethodError" /> + <keyword match="NoSuchMethodException" /> + <keyword match="NoSuchObjectException" /> + <keyword match="NoSuchPaddingException" /> + <keyword match="NoSuchProviderException" /> + <keyword match="NotActiveException" /> + <keyword match="Notation" /> + <keyword match="NotBoundException" /> + <keyword match="NotContextException" /> + <keyword match="NotEmpty" /> + <keyword match="NotEmptyHelper" /> + <keyword match="NotEmptyHolder" /> + <keyword match="NotFound" /> + <keyword match="NotFoundHelper" /> + <keyword match="NotFoundHolder" /> + <keyword match="NotFoundReason" /> + <keyword match="NotFoundReasonHelper" /> + <keyword match="NotFoundReasonHolder" /> + <keyword match="NotOwnerException" /> + <keyword match="NotSerializableException" /> + <keyword match="NotYetBoundException" /> + <keyword match="NotYetConnectedException" /> + <keyword match="NullCipher" /> + <keyword match="NullPointerException" /> + <keyword match="Number" /> + <keyword match="NumberFormat" /> + + <keyword match="NumberFormatException" /> + <keyword match="NumberFormatter" /> + <keyword match="NumberOfDocuments" /> + <keyword match="NumberOfInterveningJobs" /> + <keyword match="NumberUp" /> + <keyword match="NumberUpSupported" /> + <keyword match="NumericShaper" /> + <keyword match="NVList" /> + <keyword match="OBJ_ADAPTER" /> + <keyword match="Object" /> + <keyword match="OBJECT_NOT_EXIST" /> + <keyword match="ObjectAlreadyActive" /> + <keyword match="ObjectAlreadyActiveHelper" /> + <keyword match="ObjectChangeListener" /> + <keyword match="ObjectFactory" /> + <keyword match="ObjectFactoryBuilder" /> + <keyword match="ObjectHelper" /> + <keyword match="ObjectHolder" /> + <keyword match="ObjectIdHelper" /> + <keyword match="ObjectImpl" /> + <keyword match="ObjectImpl" /> + <keyword match="ObjectInput" /> + <keyword match="ObjectInputStream" /> + + <keyword match="ObjectInputValidation" /> + <keyword match="ObjectNotActive" /> + <keyword match="ObjectNotActiveHelper" /> + <keyword match="ObjectOutput" /> + <keyword match="ObjectOutputStream" /> + + <keyword match="ObjectStreamClass" /> + <keyword match="ObjectStreamConstants" /> + <keyword match="ObjectStreamException" /> + <keyword match="ObjectStreamField" /> + <keyword match="ObjectView" /> + <keyword match="ObjID" /> + <keyword match="Observable" /> + <keyword match="Observer" /> + <keyword match="OctetSeqHelper" /> + <keyword match="OctetSeqHolder" /> + <keyword match="Oid" /> + <keyword match="OMGVMCID" /> + <keyword match="OpenType" /> + <keyword match="Operation" /> + <keyword match="OperationNotSupportedException" /> + <keyword match="Option" /> + <keyword match="OptionalDataException" /> + <keyword match="OptionPaneUI" /> + <keyword match="ORB" /> + <keyword match="ORB" /> + <keyword match="ORBInitializer" /> + <keyword match="ORBInitializerOperations" /> + <keyword match="ORBInitInfo" /> + <keyword match="ORBInitInfoOperations" /> + <keyword match="OrientationRequested" /> + <keyword match="OutOfMemoryError" /> + <keyword match="OutputDeviceAssigned" /> + <keyword match="OutputKeys" /> + <keyword match="OutputStream" /> + <keyword match="OutputStream" /> + <keyword match="OutputStream" /> + <keyword match="OutputStreamWriter" /> + <keyword match="OverlappingFileLockException" /> + <keyword match="OverlayLayout" /> + <keyword match="Owner" /> + <keyword match="Package" /> + <keyword match="PackedColorModel" /> + <keyword match="Pageable" /> + <keyword match="PageAttributes" /> + + + + + + <keyword match="PageFormat" /> + <keyword match="PageRanges" /> + <keyword match="PagesPerMinute" /> + <keyword match="PagesPerMinuteColor" /> + <keyword match="Paint" /> + <keyword match="PaintContext" /> + <keyword match="PaintEvent" /> + <keyword match="Panel" /> + <keyword match="PanelUI" /> + <keyword match="Paper" /> + <keyword match="ParagraphView" /> + <keyword match="ParagraphView" /> + <keyword match="Parameter" /> + <keyword match="ParameterBlock" /> + <keyword match="ParameterDescriptor" /> + <keyword match="ParameterMetaData" /> + <keyword match="ParameterMode" /> + <keyword match="ParameterModeHelper" /> + <keyword match="ParameterModeHolder" /> + <keyword match="ParseException" /> + <keyword match="ParsePosition" /> + <keyword match="Parser" /> + <keyword match="Parser" /> + <keyword match="ParserAdapter" /> + <keyword match="ParserConfigurationException" /> + <keyword match="ParserDelegator" /> + <keyword match="ParserFactory" /> + <keyword match="PartialResultException" /> + <keyword match="PasswordAuthentication" /> + <keyword match="PasswordCallback" /> + <keyword match="PasswordView" /> + <keyword match="Patch" /> + <keyword match="PathIterator" /> + <keyword match="Pattern" /> + <keyword match="PatternSyntaxException" /> + <keyword match="PBEKey" /> + <keyword match="PBEKeySpec" /> + <keyword match="PBEParameterSpec" /> + <keyword match="PDLOverrideSupported" /> + <keyword match="Permission" /> + <keyword match="Permission" /> + <keyword match="PermissionCollection" /> + <keyword match="Permissions" /> + <keyword match="PERSIST_STORE" /> + <keyword match="PersistenceDelegate" /> + <keyword match="PhantomReference" /> + <keyword match="Pipe" /> + + + <keyword match="PipedInputStream" /> + <keyword match="PipedOutputStream" /> + <keyword match="PipedReader" /> + <keyword match="PipedWriter" /> + <keyword match="PixelGrabber" /> + <keyword match="PixelInterleavedSampleModel" /> + <keyword match="PKCS8EncodedKeySpec" /> + <keyword match="PKIXBuilderParameters" /> + <keyword match="PKIXCertPathBuilderResult" /> + <keyword match="PKIXCertPathChecker" /> + <keyword match="PKIXCertPathValidatorResult" /> + <keyword match="PKIXParameters" /> + <keyword match="PlainDocument" /> + <keyword match="PlainView" /> + <keyword match="POA" /> + <keyword match="POAHelper" /> + <keyword match="POAManager" /> + <keyword match="POAManagerOperations" /> + <keyword match="POAOperations" /> + <keyword match="Point" /> + <keyword match="Point2D" /> + + + <keyword match="Policy" /> + <keyword match="Policy" /> + <keyword match="Policy" /> + <keyword match="PolicyError" /> + <keyword match="PolicyErrorCodeHelper" /> + <keyword match="PolicyErrorHelper" /> + <keyword match="PolicyErrorHolder" /> + <keyword match="PolicyFactory" /> + <keyword match="PolicyFactoryOperations" /> + <keyword match="PolicyHelper" /> + <keyword match="PolicyHolder" /> + <keyword match="PolicyListHelper" /> + <keyword match="PolicyListHolder" /> + <keyword match="PolicyNode" /> + <keyword match="PolicyOperations" /> + <keyword match="PolicyQualifierInfo" /> + <keyword match="PolicyTypeHelper" /> + <keyword match="Polygon" /> + <keyword match="PooledConnection" /> + <keyword match="Popup" /> + <keyword match="PopupFactory" /> + <keyword match="PopupMenu" /> + <keyword match="PopupMenuEvent" /> + <keyword match="PopupMenuListener" /> + <keyword match="PopupMenuUI" /> + <keyword match="Port" /> + + <keyword match="PortableRemoteObject" /> + <keyword match="PortableRemoteObjectDelegate" /> + <keyword match="PortUnreachableException" /> + <keyword match="Position" /> + + <keyword match="PreferenceChangeEvent" /> + <keyword match="PreferenceChangeListener" /> + <keyword match="Preferences" /> + <keyword match="PreferencesFactory" /> + <keyword match="PreparedStatement" /> + <keyword match="PresentationDirection" /> + <keyword match="Principal" /> + <keyword match="Principal" /> + <keyword match="PrincipalHolder" /> + <keyword match="Printable" /> + <keyword match="PrinterAbortException" /> + <keyword match="PrinterException" /> + <keyword match="PrinterGraphics" /> + <keyword match="PrinterInfo" /> + <keyword match="PrinterIOException" /> + <keyword match="PrinterIsAcceptingJobs" /> + <keyword match="PrinterJob" /> + <keyword match="PrinterLocation" /> + <keyword match="PrinterMakeAndModel" /> + <keyword match="PrinterMessageFromOperator" /> + <keyword match="PrinterMoreInfo" /> + <keyword match="PrinterMoreInfoManufacturer" /> + <keyword match="PrinterName" /> + <keyword match="PrinterResolution" /> + <keyword match="PrinterState" /> + <keyword match="PrinterStateReason" /> + <keyword match="PrinterStateReasons" /> + <keyword match="PrinterURI" /> + <keyword match="PrintEvent" /> + <keyword match="PrintException" /> + <keyword match="PrintGraphics" /> + <keyword match="PrintJob" /> + <keyword match="PrintJobAdapter" /> + <keyword match="PrintJobAttribute" /> + <keyword match="PrintJobAttributeEvent" /> + <keyword match="PrintJobAttributeListener" /> + <keyword match="PrintJobAttributeSet" /> + <keyword match="PrintJobEvent" /> + <keyword match="PrintJobListener" /> + <keyword match="PrintQuality" /> + <keyword match="PrintRequestAttribute" /> + <keyword match="PrintRequestAttributeSet" /> + <keyword match="PrintService" /> + <keyword match="PrintServiceAttribute" /> + <keyword match="PrintServiceAttributeEvent" /> + <keyword match="PrintServiceAttributeListener" /> + <keyword match="PrintServiceAttributeSet" /> + <keyword match="PrintServiceLookup" /> + <keyword match="PrintStream" /> + <keyword match="PrintWriter" /> + <keyword match="PRIVATE_MEMBER" /> + <keyword match="PrivateCredentialPermission" /> + <keyword match="PrivateKey" /> + <keyword match="PrivilegedAction" /> + <keyword match="PrivilegedActionException" /> + <keyword match="PrivilegedExceptionAction" /> + <keyword match="Process" /> + <keyword match="ProcessingInstruction" /> + <keyword match="ProfileDataException" /> + <keyword match="ProfileIdHelper" /> + <keyword match="ProgressBarUI" /> + <keyword match="ProgressMonitor" /> + <keyword match="ProgressMonitorInputStream" /> + <keyword match="Properties" /> + <keyword match="PropertyChangeEvent" /> + <keyword match="PropertyChangeListener" /> + <keyword match="PropertyChangeListenerProxy" /> + <keyword match="PropertyChangeSupport" /> + <keyword match="PropertyDescriptor" /> + <keyword match="PropertyEditor" /> + <keyword match="PropertyEditorManager" /> + <keyword match="PropertyEditorSupport" /> + <keyword match="PropertyPermission" /> + <keyword match="PropertyResourceBundle" /> + <keyword match="PropertyVetoException" /> + <keyword match="ProtectionDomain" /> + <keyword match="ProtocolException" /> + <keyword match="Provider" /> + <keyword match="ProviderException" /> + <keyword match="Proxy" /> + <keyword match="PSSParameterSpec" /> + <keyword match="PUBLIC_MEMBER" /> + <keyword match="PublicKey" /> + <keyword match="PushbackInputStream" /> + <keyword match="PushbackReader" /> + <keyword match="QuadCurve2D" /> + + + <keyword match="QueuedJobCount" /> + <keyword match="Random" /> + <keyword match="RandomAccess" /> + <keyword match="RandomAccessFile" /> + <keyword match="Raster" /> + <keyword match="RasterFormatException" /> + <keyword match="RasterOp" /> + <keyword match="RC2ParameterSpec" /> + <keyword match="RC5ParameterSpec" /> + <keyword match="ReadableByteChannel" /> + <keyword match="Reader" /> + <keyword match="ReadOnlyBufferException" /> + <keyword match="Receiver" /> + <keyword match="Rectangle" /> + <keyword match="Rectangle2D" /> + + + <keyword match="RectangularShape" /> + <keyword match="Ref" /> + <keyword match="RefAddr" /> + <keyword match="Reference" /> + <keyword match="Reference" /> + <keyword match="Referenceable" /> + <keyword match="ReferenceQueue" /> + <keyword match="ReferenceUriSchemesSupported" /> + <keyword match="ReferralException" /> + <keyword match="ReflectPermission" /> + <keyword match="Refreshable" /> + <keyword match="RefreshFailedException" /> + <keyword match="RegisterableService" /> + <keyword match="Registry" /> + <keyword match="RegistryHandler" /> + <keyword match="RemarshalException" /> + <keyword match="Remote" /> + <keyword match="RemoteCall" /> + <keyword match="RemoteException" /> + <keyword match="RemoteObject" /> + <keyword match="RemoteRef" /> + <keyword match="RemoteServer" /> + <keyword match="RemoteStub" /> + <keyword match="RenderableImage" /> + <keyword match="RenderableImageOp" /> + <keyword match="RenderableImageProducer" /> + <keyword match="RenderContext" /> + <keyword match="RenderedImage" /> + <keyword match="RenderedImageFactory" /> + <keyword match="Renderer" /> + <keyword match="RenderingHints" /> + + <keyword match="RepaintManager" /> + <keyword match="ReplicateScaleFilter" /> + <keyword match="RepositoryIdHelper" /> + <keyword match="Request" /> + <keyword match="REQUEST_PROCESSING_POLICY_ID" /> + <keyword match="RequestInfo" /> + <keyword match="RequestInfoOperations" /> + <keyword match="RequestingUserName" /> + <keyword match="RequestProcessingPolicy" /> + <keyword match="RequestProcessingPolicyOperations" /> + <keyword match="RequestProcessingPolicyValue" /> + <keyword match="RescaleOp" /> + <keyword match="ResolutionSyntax" /> + <keyword match="Resolver" /> + <keyword match="ResolveResult" /> + <keyword match="ResourceBundle" /> + <keyword match="ResponseHandler" /> + <keyword match="Result" /> + <keyword match="ResultSet" /> + <keyword match="ResultSetMetaData" /> + <keyword match="ReverbType" /> + <keyword match="RGBImageFilter" /> + <keyword match="RMIClassLoader" /> + <keyword match="RMIClassLoaderSpi" /> + <keyword match="RMIClientSocketFactory" /> + <keyword match="RMIFailureHandler" /> + <keyword match="RMISecurityException" /> + <keyword match="RMISecurityManager" /> + <keyword match="RMIServerSocketFactory" /> + <keyword match="RMISocketFactory" /> + <keyword match="Robot" /> + <keyword match="RootPaneContainer" /> + <keyword match="RootPaneUI" /> + <keyword match="RoundRectangle2D" /> + + + <keyword match="RowMapper" /> + <keyword match="RowSet" /> + <keyword match="RowSetEvent" /> + <keyword match="RowSetInternal" /> + <keyword match="RowSetListener" /> + <keyword match="RowSetMetaData" /> + <keyword match="RowSetReader" /> + <keyword match="RowSetWriter" /> + <keyword match="RSAKey" /> + <keyword match="RSAKeyGenParameterSpec" /> + <keyword match="RSAMultiPrimePrivateCrtKey" /> + <keyword match="RSAMultiPrimePrivateCrtKeySpec" /> + <keyword match="RSAOtherPrimeInfo" /> + <keyword match="RSAPrivateCrtKey" /> + <keyword match="RSAPrivateCrtKeySpec" /> + <keyword match="RSAPrivateKey" /> + <keyword match="RSAPrivateKeySpec" /> + <keyword match="RSAPublicKey" /> + <keyword match="RSAPublicKeySpec" /> + <keyword match="RTFEditorKit" /> + <keyword match="RuleBasedCollator" /> + <keyword match="Runnable" /> + <keyword match="Runtime" /> + <keyword match="RunTime" /> + <keyword match="RuntimeException" /> + <keyword match="RunTimeOperations" /> + <keyword match="RuntimePermission" /> + <keyword match="SampleModel" /> + <keyword match="Savepoint" /> + <keyword match="SAXException" /> + <keyword match="SAXNotRecognizedException" /> + <keyword match="SAXNotSupportedException" /> + <keyword match="SAXParseException" /> + <keyword match="SAXParser" /> + <keyword match="SAXParserFactory" /> + <keyword match="SAXResult" /> + <keyword match="SAXSource" /> + <keyword match="SAXTransformerFactory" /> + <keyword match="ScatteringByteChannel" /> + <keyword match="SchemaViolationException" /> + <keyword match="Scrollable" /> + <keyword match="Scrollbar" /> + <keyword match="ScrollBarUI" /> + <keyword match="ScrollPane" /> + <keyword match="ScrollPaneAdjustable" /> + <keyword match="ScrollPaneConstants" /> + <keyword match="ScrollPaneLayout" /> + + <keyword match="ScrollPaneUI" /> + <keyword match="SealedObject" /> + <keyword match="SearchControls" /> + <keyword match="SearchResult" /> + <keyword match="SecretKey" /> + <keyword match="SecretKeyFactory" /> + <keyword match="SecretKeyFactorySpi" /> + <keyword match="SecretKeySpec" /> + <keyword match="SecureClassLoader" /> + <keyword match="SecureRandom" /> + <keyword match="SecureRandomSpi" /> + <keyword match="Security" /> + <keyword match="SecurityException" /> + <keyword match="SecurityManager" /> + <keyword match="SecurityPermission" /> + <keyword match="Segment" /> + <keyword match="SelectableChannel" /> + <keyword match="SelectionKey" /> + <keyword match="Selector" /> + <keyword match="SelectorProvider" /> + <keyword match="SeparatorUI" /> + <keyword match="Sequence" /> + <keyword match="SequenceInputStream" /> + <keyword match="Sequencer" /> + + <keyword match="Serializable" /> + <keyword match="SerializablePermission" /> + <keyword match="Servant" /> + <keyword match="SERVANT_RETENTION_POLICY_ID" /> + <keyword match="ServantActivator" /> + <keyword match="ServantActivatorHelper" /> + <keyword match="ServantActivatorOperations" /> + <keyword match="ServantActivatorPOA" /> + <keyword match="ServantAlreadyActive" /> + <keyword match="ServantAlreadyActiveHelper" /> + <keyword match="ServantLocator" /> + <keyword match="ServantLocatorHelper" /> + <keyword match="ServantLocatorOperations" /> + <keyword match="ServantLocatorPOA" /> + <keyword match="ServantManager" /> + <keyword match="ServantManagerOperations" /> + <keyword match="ServantNotActive" /> + <keyword match="ServantNotActiveHelper" /> + <keyword match="ServantObject" /> + <keyword match="ServantRetentionPolicy" /> + <keyword match="ServantRetentionPolicyOperations" /> + <keyword match="ServantRetentionPolicyValue" /> + <keyword match="ServerCloneException" /> + <keyword match="ServerError" /> + <keyword match="ServerException" /> + <keyword match="ServerNotActiveException" /> + <keyword match="ServerRef" /> + <keyword match="ServerRequest" /> + <keyword match="ServerRequestInfo" /> + <keyword match="ServerRequestInfoOperations" /> + <keyword match="ServerRequestInterceptor" /> + <keyword match="ServerRequestInterceptorOperations" /> + <keyword match="ServerRuntimeException" /> + <keyword match="ServerSocket" /> + <keyword match="ServerSocketChannel" /> + <keyword match="ServerSocketFactory" /> + <keyword match="ServiceContext" /> + <keyword match="ServiceContextHelper" /> + <keyword match="ServiceContextHolder" /> + <keyword match="ServiceContextListHelper" /> + <keyword match="ServiceContextListHolder" /> + <keyword match="ServiceDetail" /> + <keyword match="ServiceDetailHelper" /> + <keyword match="ServiceIdHelper" /> + <keyword match="ServiceInformation" /> + <keyword match="ServiceInformationHelper" /> + <keyword match="ServiceInformationHolder" /> + <keyword match="ServicePermission" /> + <keyword match="ServiceRegistry" /> + + <keyword match="ServiceUI" /> + <keyword match="ServiceUIFactory" /> + <keyword match="ServiceUnavailableException" /> + <keyword match="Set" /> + <keyword match="SetOfIntegerSyntax" /> + <keyword match="SetOverrideType" /> + <keyword match="SetOverrideTypeHelper" /> + <keyword match="Severity" /> + <keyword match="Shape" /> + <keyword match="ShapeGraphicAttribute" /> + <keyword match="SheetCollate" /> + <keyword match="Short" /> + <keyword match="ShortBuffer" /> + <keyword match="ShortBufferException" /> + <keyword match="ShortHolder" /> + <keyword match="ShortLookupTable" /> + <keyword match="ShortMessage" /> + <keyword match="ShortSeqHelper" /> + <keyword match="ShortSeqHolder" /> + <keyword match="Sides" /> + <keyword match="Signature" /> + <keyword match="SignatureException" /> + <keyword match="SignatureSpi" /> + <keyword match="SignedObject" /> + <keyword match="Signer" /> + <keyword match="SimpleAttributeSet" /> + <keyword match="SimpleBeanInfo" /> + <keyword match="SimpleDateFormat" /> + <keyword match="SimpleDoc" /> + <keyword match="SimpleFormatter" /> + <keyword match="SimpleTimeZone" /> + <keyword match="SinglePixelPackedSampleModel" /> + <keyword match="SingleSelectionModel" /> + <keyword match="Size2DSyntax" /> + <keyword match="SizeLimitExceededException" /> + <keyword match="SizeRequirements" /> + <keyword match="SizeSequence" /> + <keyword match="Skeleton" /> + <keyword match="SkeletonMismatchException" /> + <keyword match="SkeletonNotFoundException" /> + <keyword match="SliderUI" /> + <keyword match="Socket" /> + <keyword match="SocketAddress" /> + <keyword match="SocketChannel" /> + <keyword match="SocketException" /> + <keyword match="SocketFactory" /> + <keyword match="SocketHandler" /> + <keyword match="SocketImpl" /> + <keyword match="SocketImplFactory" /> + <keyword match="SocketOptions" /> + <keyword match="SocketPermission" /> + <keyword match="SocketSecurityException" /> + <keyword match="SocketTimeoutException" /> + <keyword match="SoftBevelBorder" /> + <keyword match="SoftReference" /> + <keyword match="SortedMap" /> + <keyword match="SortedSet" /> + <keyword match="SortingFocusTraversalPolicy" /> + <keyword match="Soundbank" /> + <keyword match="SoundbankReader" /> + <keyword match="SoundbankResource" /> + <keyword match="Source" /> + <keyword match="SourceDataLine" /> + <keyword match="SourceLocator" /> + <keyword match="SpinnerDateModel" /> + <keyword match="SpinnerListModel" /> + <keyword match="SpinnerModel" /> + <keyword match="SpinnerNumberModel" /> + <keyword match="SpinnerUI" /> + <keyword match="SplitPaneUI" /> + <keyword match="Spring" /> + <keyword match="SpringLayout" /> + + <keyword match="SQLData" /> + <keyword match="SQLException" /> + <keyword match="SQLInput" /> + <keyword match="SQLOutput" /> + <keyword match="SQLPermission" /> + <keyword match="SQLWarning" /> + <keyword match="SSLContext" /> + <keyword match="SSLContextSpi" /> + <keyword match="SSLException" /> + <keyword match="SSLHandshakeException" /> + <keyword match="SSLKeyException" /> + <keyword match="SSLPeerUnverifiedException" /> + <keyword match="SSLPermission" /> + <keyword match="SSLProtocolException" /> + <keyword match="SSLServerSocket" /> + <keyword match="SSLServerSocketFactory" /> + <keyword match="SSLSession" /> + <keyword match="SSLSessionBindingEvent" /> + <keyword match="SSLSessionBindingListener" /> + <keyword match="SSLSessionContext" /> + <keyword match="SSLSocket" /> + <keyword match="SSLSocketFactory" /> + <keyword match="Stack" /> + <keyword match="StackOverflowError" /> + <keyword match="StackTraceElement" /> + <keyword match="StartTlsRequest" /> + <keyword match="StartTlsResponse" /> + <keyword match="State" /> + <keyword match="StateEdit" /> + <keyword match="StateEditable" /> + <keyword match="StateFactory" /> + <keyword match="Statement" /> + <keyword match="Statement" /> + <keyword match="Streamable" /> + <keyword match="StreamableValue" /> + <keyword match="StreamCorruptedException" /> + <keyword match="StreamHandler" /> + <keyword match="StreamPrintService" /> + <keyword match="StreamPrintServiceFactory" /> + <keyword match="StreamResult" /> + <keyword match="StreamSource" /> + <keyword match="StreamTokenizer" /> + <keyword match="StrictMath" /> + <keyword match="String" /> + <keyword match="StringBuffer" /> + <keyword match="StringBufferInputStream" /> + <keyword match="StringCharacterIterator" /> + <keyword match="StringContent" /> + <keyword match="StringHolder" /> + <keyword match="StringIndexOutOfBoundsException" /> + <keyword match="StringNameHelper" /> + <keyword match="StringReader" /> + <keyword match="StringRefAddr" /> + <keyword match="StringSelection" /> + <keyword match="StringSeqHelper" /> + <keyword match="StringSeqHolder" /> + <keyword match="StringTokenizer" /> + <keyword match="StringValueHelper" /> + <keyword match="StringWriter" /> + <keyword match="Stroke" /> + <keyword match="Struct" /> + <keyword match="StructMember" /> + <keyword match="StructMemberHelper" /> + <keyword match="Stub" /> + <keyword match="StubDelegate" /> + <keyword match="StubNotFoundException" /> + <keyword match="Style" /> + <keyword match="StyleConstants" /> + + + + + <keyword match="StyleContext" /> + <keyword match="StyledDocument" /> + <keyword match="StyledEditorKit" /> + + + + + + + + + <keyword match="StyleSheet" /> + + + <keyword match="Subject" /> + <keyword match="SubjectDomainCombiner" /> + <keyword match="SUCCESSFUL" /> + <keyword match="SupportedValuesAttribute" /> + <keyword match="SwingConstants" /> + <keyword match="SwingPropertyChangeSupport" /> + <keyword match="SwingUtilities" /> + <keyword match="SYNC_WITH_TRANSPORT" /> + <keyword match="SyncFailedException" /> + <keyword match="SyncScopeHelper" /> + <keyword match="Synthesizer" /> + <keyword match="SysexMessage" /> + <keyword match="System" /> + <keyword match="SYSTEM_EXCEPTION" /> + <keyword match="SystemColor" /> + <keyword match="SystemException" /> + <keyword match="SystemFlavorMap" /> + <keyword match="TabableView" /> + <keyword match="TabbedPaneUI" /> + <keyword match="TabExpander" /> + <keyword match="TableCellEditor" /> + <keyword match="TableCellRenderer" /> + <keyword match="TableColumn" /> + <keyword match="TableColumnModel" /> + <keyword match="TableColumnModelEvent" /> + <keyword match="TableColumnModelListener" /> + <keyword match="TableHeaderUI" /> + <keyword match="TableModel" /> + <keyword match="TableModelEvent" /> + <keyword match="TableModelListener" /> + <keyword match="TableUI" /> + <keyword match="TableView" /> + <keyword match="TabSet" /> + <keyword match="TabStop" /> + <keyword match="TAG_ALTERNATE_IIOP_ADDRESS" /> + <keyword match="TAG_CODE_SETS" /> + <keyword match="TAG_INTERNET_IOP" /> + <keyword match="TAG_JAVA_CODEBASE" /> + <keyword match="TAG_MULTIPLE_COMPONENTS" /> + <keyword match="TAG_ORB_TYPE" /> + <keyword match="TAG_POLICIES" /> + <keyword match="TagElement" /> + <keyword match="TaggedComponent" /> + <keyword match="TaggedComponentHelper" /> + <keyword match="TaggedComponentHolder" /> + <keyword match="TaggedProfile" /> + <keyword match="TaggedProfileHelper" /> + <keyword match="TaggedProfileHolder" /> + <keyword match="TargetDataLine" /> + <keyword match="TCKind" /> + <keyword match="Templates" /> + <keyword match="TemplatesHandler" /> + <keyword match="Text" /> + <keyword match="TextAction" /> + <keyword match="TextArea" /> + <keyword match="TextAttribute" /> + <keyword match="TextComponent" /> + <keyword match="TextEvent" /> + <keyword match="TextField" /> + <keyword match="TextHitInfo" /> + <keyword match="TextInputCallback" /> + <keyword match="TextLayout" /> + + <keyword match="TextListener" /> + <keyword match="TextMeasurer" /> + <keyword match="TextOutputCallback" /> + <keyword match="TextSyntax" /> + <keyword match="TextUI" /> + <keyword match="TexturePaint" /> + <keyword match="Thread" /> + <keyword match="THREAD_POLICY_ID" /> + <keyword match="ThreadDeath" /> + <keyword match="ThreadGroup" /> + <keyword match="ThreadLocal" /> + <keyword match="ThreadPolicy" /> + <keyword match="ThreadPolicyOperations" /> + <keyword match="ThreadPolicyValue" /> + <keyword match="Throwable" /> + <keyword match="Tie" /> + <keyword match="TileObserver" /> + <keyword match="Time" /> + <keyword match="TimeLimitExceededException" /> + <keyword match="Timer" /> + <keyword match="Timer" /> + <keyword match="TimerTask" /> + <keyword match="Timestamp" /> + <keyword match="TimeZone" /> + <keyword match="TitledBorder" /> + <keyword match="ToolBarUI" /> + <keyword match="Toolkit" /> + <keyword match="ToolTipManager" /> + <keyword match="ToolTipUI" /> + <keyword match="TooManyListenersException" /> + <keyword match="Track" /> + <keyword match="TRANSACTION_REQUIRED" /> + <keyword match="TRANSACTION_ROLLEDBACK" /> + <keyword match="TransactionRequiredException" /> + <keyword match="TransactionRolledbackException" /> + <keyword match="TransactionService" /> + <keyword match="Transferable" /> + <keyword match="TransferHandler" /> + <keyword match="TransformAttribute" /> + <keyword match="Transformer" /> + <keyword match="TransformerConfigurationException" /> + <keyword match="TransformerException" /> + <keyword match="TransformerFactory" /> + <keyword match="TransformerFactoryConfigurationError" /> + <keyword match="TransformerHandler" /> + <keyword match="TRANSIENT" /> + <keyword match="Transmitter" /> + <keyword match="Transparency" /> + <keyword match="TRANSPORT_RETRY" /> + <keyword match="TreeCellEditor" /> + <keyword match="TreeCellRenderer" /> + <keyword match="TreeExpansionEvent" /> + <keyword match="TreeExpansionListener" /> + <keyword match="TreeMap" /> + <keyword match="TreeModel" /> + <keyword match="TreeModelEvent" /> + <keyword match="TreeModelListener" /> + <keyword match="TreeNode" /> + <keyword match="TreePath" /> + <keyword match="TreeSelectionEvent" /> + <keyword match="TreeSelectionListener" /> + <keyword match="TreeSelectionModel" /> + <keyword match="TreeSet" /> + <keyword match="TreeUI" /> + <keyword match="TreeWillExpandListener" /> + <keyword match="TrustAnchor" /> + <keyword match="TrustManager" /> + <keyword match="TrustManagerFactory" /> + <keyword match="TrustManagerFactorySpi" /> + <keyword match="TypeCode" /> + <keyword match="TypeCodeHolder" /> + <keyword match="TypeMismatch" /> + <keyword match="TypeMismatch" /> + <keyword match="TypeMismatch" /> + <keyword match="TypeMismatchHelper" /> + <keyword match="TypeMismatchHelper" /> + <keyword match="Types" /> + <keyword match="UID" /> + <keyword match="UIDefaults" /> + + + + + <keyword match="UIManager" /> + + <keyword match="UIResource" /> + <keyword match="ULongLongSeqHelper" /> + <keyword match="ULongLongSeqHolder" /> + <keyword match="ULongSeqHelper" /> + <keyword match="ULongSeqHolder" /> + <keyword match="UndeclaredThrowableException" /> + <keyword match="UndoableEdit" /> + <keyword match="UndoableEditEvent" /> + <keyword match="UndoableEditListener" /> + <keyword match="UndoableEditSupport" /> + <keyword match="UndoManager" /> + <keyword match="UnexpectedException" /> + <keyword match="UnicastRemoteObject" /> + <keyword match="UnionMember" /> + <keyword match="UnionMemberHelper" /> + <keyword match="UNKNOWN" /> + <keyword match="UnknownEncoding" /> + <keyword match="UnknownEncodingHelper" /> + <keyword match="UnknownError" /> + <keyword match="UnknownException" /> + <keyword match="UnknownGroupException" /> + <keyword match="UnknownHostException" /> + <keyword match="UnknownHostException" /> + <keyword match="UnknownObjectException" /> + <keyword match="UnknownServiceException" /> + <keyword match="UnknownUserException" /> + <keyword match="UnknownUserExceptionHelper" /> + <keyword match="UnknownUserExceptionHolder" /> + <keyword match="UnmappableCharacterException" /> + <keyword match="UnmarshalException" /> + <keyword match="UnmodifiableSetException" /> + <keyword match="UnrecoverableKeyException" /> + <keyword match="Unreferenced" /> + <keyword match="UnresolvedAddressException" /> + <keyword match="UnresolvedPermission" /> + <keyword match="UnsatisfiedLinkError" /> + <keyword match="UnsolicitedNotification" /> + <keyword match="UnsolicitedNotificationEvent" /> + <keyword match="UnsolicitedNotificationListener" /> + <keyword match="UNSUPPORTED_POLICY" /> + <keyword match="UNSUPPORTED_POLICY_VALUE" /> + <keyword match="UnsupportedAddressTypeException" /> + <keyword match="UnsupportedAudioFileException" /> + <keyword match="UnsupportedCallbackException" /> + <keyword match="UnsupportedCharsetException" /> + <keyword match="UnsupportedClassVersionError" /> + <keyword match="UnsupportedEncodingException" /> + <keyword match="UnsupportedFlavorException" /> + <keyword match="UnsupportedLookAndFeelException" /> + <keyword match="UnsupportedOperationException" /> + <keyword match="URI" /> + <keyword match="URIException" /> + <keyword match="URIResolver" /> + <keyword match="URISyntax" /> + <keyword match="URISyntaxException" /> + <keyword match="URL" /> + <keyword match="URLClassLoader" /> + <keyword match="URLConnection" /> + <keyword match="URLDecoder" /> + <keyword match="URLEncoder" /> + <keyword match="URLStreamHandler" /> + <keyword match="URLStreamHandlerFactory" /> + <keyword match="URLStringHelper" /> + <keyword match="USER_EXCEPTION" /> + <keyword match="UserException" /> + <keyword match="UShortSeqHelper" /> + <keyword match="UShortSeqHolder" /> + <keyword match="UTFDataFormatException" /> + <keyword match="Util" /> + <keyword match="UtilDelegate" /> + <keyword match="Utilities" /> + <keyword match="ValueBase" /> + <keyword match="ValueBaseHelper" /> + <keyword match="ValueBaseHolder" /> + <keyword match="ValueFactory" /> + <keyword match="ValueHandler" /> + <keyword match="ValueMember" /> + <keyword match="ValueMemberHelper" /> + <keyword match="VariableHeightLayoutCache" /> + <keyword match="Vector" /> + <keyword match="VerifyError" /> + <keyword match="VersionSpecHelper" /> + <keyword match="VetoableChangeListener" /> + <keyword match="VetoableChangeListenerProxy" /> + <keyword match="VetoableChangeSupport" /> + <keyword match="View" /> + <keyword match="ViewFactory" /> + <keyword match="ViewportLayout" /> + <keyword match="ViewportUI" /> + <keyword match="VirtualMachineError" /> + <keyword match="Visibility" /> + <keyword match="VisibilityHelper" /> + <keyword match="VM_ABSTRACT" /> + <keyword match="VM_CUSTOM" /> + <keyword match="VM_NONE" /> + <keyword match="VM_TRUNCATABLE" /> + <keyword match="VMID" /> + <keyword match="VoiceStatus" /> + <keyword match="Void" /> + <keyword match="VolatileImage" /> + <keyword match="WCharSeqHelper" /> + <keyword match="WCharSeqHolder" /> + <keyword match="WeakHashMap" /> + <keyword match="WeakReference" /> + <keyword match="Window" /> + <keyword match="WindowAdapter" /> + <keyword match="WindowConstants" /> + <keyword match="WindowEvent" /> + <keyword match="WindowFocusListener" /> + <keyword match="WindowListener" /> + <keyword match="WindowStateListener" /> + <keyword match="WrappedPlainView" /> + <keyword match="WritableByteChannel" /> + <keyword match="WritableRaster" /> + <keyword match="WritableRenderedImage" /> + <keyword match="WriteAbortedException" /> + <keyword match="Writer" /> + <keyword match="WrongAdapter" /> + <keyword match="WrongAdapterHelper" /> + <keyword match="WrongPolicy" /> + <keyword match="WrongPolicyHelper" /> + <keyword match="WrongTransaction" /> + <keyword match="WrongTransactionHelper" /> + <keyword match="WrongTransactionHolder" /> + <keyword match="WStringSeqHelper" /> + <keyword match="WStringSeqHolder" /> + <keyword match="WStringValueHelper" /> + <keyword match="X500Principal" /> + <keyword match="X500PrivateCredential" /> + <keyword match="X509Certificate" /> + <keyword match="X509Certificate" /> + <keyword match="X509CertSelector" /> + <keyword match="X509CRL" /> + <keyword match="X509CRLEntry" /> + <keyword match="X509CRLSelector" /> + <keyword match="X509EncodedKeySpec" /> + <keyword match="X509Extension" /> + <keyword match="X509KeyManager" /> + <keyword match="X509TrustManager" /> + <keyword match="XAConnection" /> + <keyword match="XADataSource" /> + <keyword match="XAException" /> + <keyword match="XAResource" /> + <keyword match="Xid" /> + <keyword match="XMLDecoder" /> + <keyword match="XMLEncoder" /> + <keyword match="XMLFilter" /> + <keyword match="XMLFilterImpl" /> + <keyword match="XMLFormatter" /> + <keyword match="XMLReader" /> + <keyword match="XMLReaderAdapter" /> + <keyword match="XMLReaderFactory" /> + <keyword match="ZipEntry" /> + <keyword match="ZipException" /> + <keyword match="ZipFile" /> + <keyword match="ZipInputStream" /> + <keyword match="ZipOutputStream" /> + <keyword match="ZoneView" /> + <keyword match="_BindingIteratorImplBase" /> + <keyword match="_BindingIteratorStub" /> + <keyword match="_DynAnyFactoryStub" /> + <keyword match="_DynAnyStub" /> + <keyword match="_DynArrayStub" /> + <keyword match="_DynEnumStub" /> + <keyword match="_DynFixedStub" /> + <keyword match="_DynSequenceStub" /> + <keyword match="_DynStructStub" /> + <keyword match="_DynUnionStub" /> + <keyword match="_DynValueStub" /> + <keyword match="_IDLTypeStub" /> + <keyword match="_NamingContextExtStub" /> + <keyword match="_NamingContextImplBase" /> + <keyword match="_NamingContextStub" /> + <keyword match="_PolicyStub" /> + <keyword match="_Remote_Stub" /> + <keyword match="_ServantActivatorStub" /> + <keyword match="_ServantLocatorStub" /> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/javascript.xml b/library/Text_Highlighter/javascript.xml new file mode 100644 index 000000000..e478515a7 --- /dev/null +++ b/library/Text_Highlighter/javascript.xml @@ -0,0 +1,174 @@ +<?xml version="1.0"?> +<!-- $Id: javascript.xml,v 1.3 2008-01-01 23:43:36 ssttoo Exp $ --> + +<highlight lang="javascript" case = "no"> + + <authors> + <author name="Andrey Demenev" email ="demenev@gmail.com"/> + </authors> + + <default innerClass="code" /> + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + + <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/" > + <contains block="cvstag"/> + </region> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""/> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" /> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + </block> + + <block name="descaped" match="\\\\|\\"|\\'|\\`|\\t|\\n|\\r" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + </block> + + <region name="comment" start="\/\/" end="/$/m" innerClass="comment"> + <contains block="cvstag"/> + </region> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <block name="number" match="0x\d*|\d*\.?\d+" innerClass="number"/> + + + <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&=\/%+]*" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="note" match="\b(note|fixme):" innerClass="inlinedoc" contained="yes" case="no"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + + <block name="cvstag" match="\$\w+:.+\$" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <keywords name="builtin" inherits="identifier" innerClass="builtin" case = "yes"> + <keyword match="String"/> + <keyword match="Array"/> + <keyword match="RegExp"/> + <keyword match="Function"/> + <keyword match="Math"/> + <keyword match="Number"/> + <keyword match="Date"/> + <keyword match="Image"/> + <keyword match="window"/> + <keyword match="document"/> + <keyword match="navigator"/> + <keyword match="onAbort"/> + <keyword match="onBlur"/> + <keyword match="onChange"/> + <keyword match="onClick"/> + <keyword match="onDblClick"/> + <keyword match="onDragDrop"/> + <keyword match="onError"/> + <keyword match="onFocus"/> + <keyword match="onKeyDown"/> + <keyword match="onKeyPress"/> + <keyword match="onKeyUp"/> + <keyword match="onLoad"/> + <keyword match="onMouseDown"/> + <keyword match="onMouseOver"/> + <keyword match="onMouseOut"/> + <keyword match="onMouseMove"/> + <keyword match="onMouseUp"/> + <keyword match="onMove"/> + <keyword match="onReset"/> + <keyword match="onResize"/> + <keyword match="onSelect"/> + <keyword match="onSubmit"/> + <keyword match="onUnload"/> + </keywords> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="break"/> + <keyword match="continue"/> + <keyword match="do"/> + <keyword match="while"/> + <keyword match="do"/> + <keyword match="export"/> + <keyword match="for"/> + <keyword match="in"/> + <keyword match="if"/> + <keyword match="else"/> + <keyword match="import"/> + <keyword match="return"/> + <keyword match="label"/> + <keyword match="switch"/> + <keyword match="case"/> + <keyword match="var"/> + <keyword match="with"/> + <keyword match="delete"/> + <keyword match="new"/> + <keyword match="this"/> + <keyword match="typeof"/> + <keyword match="void"/> + <keyword match="abstract"/> + <keyword match="boolean"/> + <keyword match="byte"/> + <keyword match="catch"/> + <keyword match="char"/> + <keyword match="class"/> + <keyword match="const"/> + <keyword match="continue"/> + <keyword match="debugger"/> + <keyword match="default"/> + <keyword match="double"/> + <keyword match="enum"/> + <keyword match="extends"/> + <keyword match="false"/> + <keyword match="final"/> + <keyword match="finally"/> + <keyword match="float"/> + <keyword match="function"/> + <keyword match="implements"/> + <keyword match="goto"/> + <keyword match="in"/> + <keyword match="instanceof"/> + <keyword match="int"/> + <keyword match="interface"/> + <keyword match="long"/> + <keyword match="native"/> + <keyword match="null"/> + <keyword match="package"/> + <keyword match="private"/> + <keyword match="protected"/> + <keyword match="public"/> + <keyword match="short"/> + <keyword match="static"/> + <keyword match="super"/> + <keyword match="synchronized"/> + <keyword match="throw"/> + <keyword match="throws"/> + <keyword match="transient"/> + <keyword match="true"/> + <keyword match="try"/> + <keyword match="volatile"/> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/mysql.xml b/library/Text_Highlighter/mysql.xml new file mode 100644 index 000000000..082b62795 --- /dev/null +++ b/library/Text_Highlighter/mysql.xml @@ -0,0 +1,424 @@ +<?xml version="1.0"?> +<!-- $Id: mysql.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="mysql" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + <region name="qidentifier" delimClass="quotes" innerClass="identifier" + start="`" end="`" /> + + <region name="mlcomment" delimClass="comment" innerClass="comment" + start="\/\*" end="\*\/" /> + + <block name="comment" match="(#|--\s).*" innerClass="comment" /> + + <block name="possiblefunction" match="[a-z_]\w*(?=\s*\()" innerClass="identifier" /> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" /> + + <region name="strdouble" delimClass="quotes" innerClass="string" + start=""" end=""" > + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" + start="\(" end="\)" > + <contains all="yes"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" + start="'" end="'" /> + + <block name="escaped" match="\\." innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + <onlyin region="strdouble"/> + </block> + + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" /> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" /> + + <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" /> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" + case="no"> + <keyword match="action" /> + <keyword match="add" /> + <keyword match="aggregate" /> + <keyword match="all" /> + <keyword match="alter" /> + <keyword match="after" /> + <keyword match="and" /> + <keyword match="as" /> + <keyword match="asc" /> + <keyword match="avg" /> + <keyword match="avg_row_length" /> + <keyword match="auto_increment" /> + <keyword match="between" /> + <keyword match="bigint" /> + <keyword match="bit" /> + + <keyword match="binary" /> + <keyword match="blob" /> + <keyword match="bool" /> + <keyword match="both" /> + <keyword match="by" /> + <keyword match="cascade" /> + <keyword match="case" /> + <keyword match="char" /> + <keyword match="character" /> + <keyword match="change" /> + <keyword match="check" /> + <keyword match="checksum" /> + <keyword match="column" /> + <keyword match="columns" /> + <keyword match="comment" /> + <keyword match="constraint" /> + <keyword match="create" /> + + <keyword match="cross" /> + <keyword match="current_date" /> + <keyword match="current_time" /> + <keyword match="current_timestamp" /> + <keyword match="data" /> + <keyword match="database" /> + <keyword match="databases" /> + <keyword match="date" /> + <keyword match="datetime" /> + <keyword match="day" /> + <keyword match="day_hour" /> + <keyword match="day_minute" /> + <keyword match="day_second" /> + <keyword match="dayofmonth" /> + <keyword match="dayofweek" /> + <keyword match="dayofyear" /> + <keyword match="dec" /> + + <keyword match="decimal" /> + <keyword match="default" /> + <keyword match="delayed" /> + <keyword match="delay_key_write" /> + <keyword match="delete" /> + <keyword match="desc" /> + <keyword match="describe" /> + <keyword match="distinct" /> + <keyword match="distinctrow" /> + <keyword match="double" /> + <keyword match="drop" /> + <keyword match="end" /> + <keyword match="else" /> + <keyword match="escape" /> + <keyword match="escaped" /> + <keyword match="enclosed" /> + <keyword match="enum" /> + + <keyword match="explain" /> + <keyword match="exists" /> + <keyword match="fields" /> + <keyword match="file" /> + <keyword match="first" /> + <keyword match="float" /> + <keyword match="float4" /> + <keyword match="float8" /> + <keyword match="flush" /> + <keyword match="foreign" /> + <keyword match="from" /> + <keyword match="for" /> + <keyword match="full" /> + <keyword match="function" /> + <keyword match="global" /> + <keyword match="grant" /> + <keyword match="grants" /> + + <keyword match="group" /> + <keyword match="having" /> + <keyword match="heap" /> + <keyword match="high_priority" /> + <keyword match="hour" /> + <keyword match="hour_minute" /> + <keyword match="hour_second" /> + <keyword match="hosts" /> + <keyword match="identified" /> + <keyword match="ignore" /> + <keyword match="in" /> + <keyword match="index" /> + <keyword match="infile" /> + <keyword match="inner" /> + <keyword match="insert" /> + <keyword match="insert_id" /> + <keyword match="int" /> + + <keyword match="integer" /> + <keyword match="interval" /> + <keyword match="int1" /> + <keyword match="int2" /> + <keyword match="int3" /> + <keyword match="int4" /> + <keyword match="int8" /> + <keyword match="into" /> + <keyword match="if" /> + <keyword match="is" /> + <keyword match="isam" /> + <keyword match="join" /> + <keyword match="key" /> + <keyword match="keys" /> + <keyword match="kill" /> + <keyword match="last_insert_id" /> + <keyword match="leading" /> + + <keyword match="left" /> + <keyword match="length" /> + <keyword match="like" /> + <keyword match="lines" /> + <keyword match="limit" /> + <keyword match="load" /> + <keyword match="local" /> + <keyword match="lock" /> + <keyword match="logs" /> + <keyword match="long" /> + <keyword match="longblob" /> + <keyword match="longtext" /> + <keyword match="low_priority" /> + <keyword match="max" /> + <keyword match="max_rows" /> + <keyword match="match" /> + <keyword match="mediumblob" /> + + <keyword match="mediumtext" /> + <keyword match="mediumint" /> + <keyword match="middleint" /> + <keyword match="min_rows" /> + <keyword match="minute" /> + <keyword match="minute_second" /> + <keyword match="modify" /> + <keyword match="month" /> + <keyword match="monthname" /> + <keyword match="myisam" /> + <keyword match="natural" /> + <keyword match="numeric" /> + <keyword match="no" /> + <keyword match="not" /> + <keyword match="null" /> + <keyword match="on" /> + <keyword match="optimize" /> + + <keyword match="option" /> + <keyword match="optionally" /> + <keyword match="or" /> + <keyword match="order" /> + <keyword match="outer" /> + <keyword match="outfile" /> + <keyword match="pack_keys" /> + <keyword match="partial" /> + <keyword match="password" /> + <keyword match="precision" /> + <keyword match="primary" /> + <keyword match="procedure" /> + <keyword match="process" /> + <keyword match="processlist" /> + <keyword match="privileges" /> + <keyword match="read" /> + <keyword match="real" /> + + <keyword match="references" /> + <keyword match="reload" /> + <keyword match="regexp" /> + <keyword match="rename" /> + <keyword match="replace" /> + <keyword match="restrict" /> + <keyword match="returns" /> + <keyword match="revoke" /> + <keyword match="rlike" /> + <keyword match="row" /> + <keyword match="rows" /> + <keyword match="second" /> + <keyword match="select" /> + <keyword match="set" /> + <keyword match="show" /> + <keyword match="shutdown" /> + <keyword match="smallint" /> + + <keyword match="soname" /> + <keyword match="sql_big_tables" /> + <keyword match="sql_big_selects" /> + <keyword match="sql_low_priority_updates" /> + <keyword match="sql_log_off" /> + <keyword match="sql_log_update" /> + <keyword match="sql_select_limit" /> + <keyword match="sql_small_result" /> + <keyword match="sql_big_result" /> + <keyword match="sql_warnings" /> + <keyword match="straight_join" /> + <keyword match="starting" /> + <keyword match="status" /> + <keyword match="string" /> + <keyword match="table" /> + <keyword match="tables" /> + <keyword match="temporary" /> + + <keyword match="terminated" /> + <keyword match="text" /> + <keyword match="then" /> + <keyword match="time" /> + <keyword match="timestamp" /> + <keyword match="tinyblob" /> + <keyword match="tinytext" /> + <keyword match="tinyint" /> + <keyword match="trailing" /> + <keyword match="to" /> + <keyword match="type" /> + <keyword match="use" /> + <keyword match="using" /> + <keyword match="unique" /> + <keyword match="unlock" /> + <keyword match="unsigned" /> + <keyword match="update" /> + + <keyword match="usage" /> + <keyword match="values" /> + <keyword match="varchar" /> + <keyword match="variables" /> + <keyword match="varying" /> + <keyword match="varbinary" /> + <keyword match="with" /> + <keyword match="write" /> + <keyword match="when" /> + <keyword match="where" /> + <keyword match="year" /> + <keyword match="year_month" /> + <keyword match="zerofill" /> + </keywords> + + <keywords name="function" inherits="possiblefunction" innerClass="reserved" + case="no" otherwise="identifier"> + <keyword match="ABS" /> + <keyword match="ACOS" /> + <keyword match="ADDDATE" /> + <keyword match="ASCII" /> + <keyword match="ASIN" /> + <keyword match="ATAN" /> + <keyword match="ATAN2" /> + <keyword match="AVG" /> + <keyword match="BENCHMARK" /> + <keyword match="BIN" /> + <keyword match="CEILING" /> + <keyword match="CHAR" /> + <keyword match="COALESCE" /> + <keyword match="CONCAT" /> + <keyword match="CONV" /> + <keyword match="COS" /> + <keyword match="COT" /> + <keyword match="COUNT" /> + <keyword match="CURDATE" /> + <keyword match="CURTIME" /> + <keyword match="DATABASE" /> + <keyword match="DAYNAME" /> + <keyword match="DAYOFMONTH" /> + <keyword match="DAYOFWEEK" /> + <keyword match="DAYOFYEAR" /> + <keyword match="DECODE" /> + <keyword match="DEGREES" /> + <keyword match="ELT" /> + + <keyword match="ENCODE" /> + <keyword match="ENCRYPT" /> + <keyword match="EXP" /> + <keyword match="EXTRACT" /> + + <keyword match="EXTRACT" /> + <keyword match="FIELD" /> + <keyword match="FLOOR" /> + <keyword match="FORMAT" /> + <keyword match="GREATEST" /> + <keyword match="HEX" /> + <keyword match="HOUR" /> + <keyword match="IF" /> + <keyword match="IFNULL" /> + <keyword match="INSERT" /> + <keyword match="INSTR" /> + <keyword match="INTERVAL" /> + + <keyword match="ISNULL" /> + <keyword match="LCASE" /> + <keyword match="LEAST" /> + <keyword match="LEFT" /> + <keyword match="LENGTH" /> + <keyword match="LOCATE" /> + + <keyword match="LOCATE" /> + <keyword match="LOG" /> + <keyword match="LOG10" /> + <keyword match="LOWER" /> + <keyword match="LPAD" /> + <keyword match="LTRIM" /> + <keyword match="MAX" /> + <keyword match="MD5" /> + <keyword match="MID" /> + <keyword match="MIN" /> + + <keyword match="MINUTE" /> + <keyword match="MOD" /> + <keyword match="MONTH" /> + <keyword match="MONTHNAME" /> + <keyword match="NOW" /> + <keyword match="NULLIF" /> + <keyword match="OCT" /> + <keyword match="ORD" /> + <keyword match="PASSWORD" /> + <keyword match="PI" /> + <keyword match="POSITION" /> + + <keyword match="POW" /> + <keyword match="POWER" /> + <keyword match="prepare" /> + <keyword match="QUARTER" /> + <keyword match="RADIANS" /> + <keyword match="RAND" /> + <keyword match="REPEAT" /> + <keyword match="REPLACE" /> + <keyword match="REVERSE" /> + <keyword match="RIGHT" /> + <keyword match="ROUND" /> + + <keyword match="ROUND" /> + <keyword match="RPAD" /> + + <keyword match="RTRIM" /> + <keyword match="SECOND" /> + <keyword match="SIGN" /> + <keyword match="SIN" /> + <keyword match="SOUNDEX" /> + <keyword match="SPACE" /> + <keyword match="SQRT" /> + <keyword match="STD" /> + <keyword match="STDDEV" /> + <keyword match="STRCMP" /> + <keyword match="SUBDATE" /> + <keyword match="SUBSTRING" /> + + <keyword match="SUBSTRING" /> + <keyword match="SUM" /> + <keyword match="SYSDATE" /> + <keyword match="TAN" /> + + <keyword match="TRIM" /> + <keyword match="TRUNCATE" /> + <keyword match="UCASE" /> + <keyword match="UPPER" /> + <keyword match="USER" /> + <keyword match="VERSION" /> + <keyword match="WEEK" /> + <keyword match="WEEKDAY" /> + <keyword match="YEAR" /> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/perl.xml b/library/Text_Highlighter/perl.xml new file mode 100644 index 000000000..54f8835ea --- /dev/null +++ b/library/Text_Highlighter/perl.xml @@ -0,0 +1,439 @@ +<?xml version="1.0"?> +<!-- $Id: perl.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="perl" case = "yes"> + + <authors> + <author name="Mariusz 'kg' Jakubowski" email="kg@alternatywa.info" jid="kg@chrome.pl"/> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <comment>This highlighter is EXPERIMENTAL, so that it may work incorrectly. +Most rules were created by Mariusz Jakubowski, and extended by me. +My knowledge of Perl is poor, and Perl syntax seems too +complicated to me.</comment> + + <default innerClass="code"/> + + <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special"> + <partClass index="1" innerClass="special" /> + <partClass index="2" innerClass="string" /> + </block> + + <region name="pod" innerClass="comment" start="/^=\w+/m" end="/^=cut[^\n]*/m" startBOL="yes" endBOL="yes"/> + + <!-- + brackets + --> + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <!-- + use smth + --> + <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special"> + <partClass index="1" innerClass="reserved" /> + <partClass index="2" innerClass="special" /> + </block> + + <block name="packagereference" match="[& ](\w{2,}::)+\w{2,}" innerClass="special"/> + + <region name="q-w-q-statement" + start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + + </region> + + <region name="qstatement" + start="/\b(q\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + </region> + + <!-- + comments + --> + <block name="comment" match="#.*" innerClass="comment" /> + + + <!-- + regexpr + FIXME: this should be rewrited + --> + <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + <partClass index="6" innerClass="string" /> + <partClass index="8" innerClass="quotes" /> + </block> + + <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + </block> + + + <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes"> + <contains block="reescaped"/> + </region> + + <block name="reescaped" match="\\\/" innerClass="string" contained="yes"> + <onlyin region="regexp"/> + </block> + + <!-- + variables + FIXME: @{...} + --> + <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no"> + <partClass index="1" innerClass="string" /> + <partClass index="2" innerClass="code" /> + <onlyin region="brackets"/> + </block> + + <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/> + + <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + + <!-- not shure what is this, but the Perlers do it :) --> + <block name="var2" match="(&|\w+)'[\w_']+\b" innerClass="var" case="no"/> + + <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no"> + <partClass index="1" innerClass="brackets" /> + <partClass index="2" innerClass="var" /> + <partClass index="3" innerClass="brackets" /> + </block> + + <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/> + + <!-- + quotes + --> + <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`"> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="qstatement"/> + <onlyin region="strsingle"/> + <onlyin region="exec"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <block name="descaped" match="\\[\\"'`tnr\$\{@]" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + <onlyin region="q-w-q-statement"/> + </block> + + <!-- logical op. + <block name="logic" match="\|\||&&" innerClass="reserved" contained="yes"/>--> + + <!-- + identifiers + --> + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <!-- + numbers + --> + <block name="number" match="\d*\.?\d+" innerClass="number"/> + + <!-- + http://www.perldoc.com/perl5.6/pod/perlfunc.html + Alphabetical Listing of Perl Functions + --> + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="abs"/> + <keyword match="accept"/> + <keyword match="alarm"/> + <keyword match="atan2"/> + + <keyword match="bind"/> + <keyword match="binmode"/> + <keyword match="bless"/> + + <keyword match="caller"/> + <keyword match="chdir"/> + <keyword match="chmod"/> + <keyword match="chomp"/> + <keyword match="chop"/> + <keyword match="chown"/> + <keyword match="chr"/> + <keyword match="chroot"/> + <keyword match="close"/> + <keyword match="closedir"/> + <keyword match="connect"/> + <keyword match="continue"/> + <keyword match="cos"/> + <keyword match="crypt"/> + + <keyword match="dbmclose"/> + <keyword match="dbmopen"/> + <keyword match="defined"/> + <keyword match="delete"/> + <keyword match="die"/> + <keyword match="do"/> + <keyword match="dump"/> + + <keyword match="each"/> + <keyword match="endgrent"/> + <keyword match="endhostent"/> + <keyword match="endnetent"/> + <keyword match="endprotoent"/> + <keyword match="endpwent"/> + <keyword match="endservent"/> + <keyword match="eof"/> + <keyword match="eval"/> + <keyword match="exec"/> + <keyword match="exists"/> + <keyword match="exit"/> + <keyword match="exp"/> + + <keyword match="fcntl"/> + <keyword match="fileno"/> + <keyword match="flock"/> + <keyword match="fork"/> + <keyword match="format"/> + <keyword match="formline"/> + + <keyword match="getc"/> + <keyword match="getgrent"/> + <keyword match="getgrgid"/> + <keyword match="getgrnam"/> + <keyword match="gethostbyaddr"/> + <keyword match="gethostbyname"/> + <keyword match="gethostent"/> + <keyword match="getlogin"/> + <keyword match="getnetbyaddr"/> + <keyword match="getnetbyname"/> + <keyword match="getnetent"/> + <keyword match="getpeername"/> + <keyword match="getpgrp"/> + <keyword match="getppid"/> + <keyword match="getpriority"/> + <keyword match="getprotobyname"/> + <keyword match="getprotobynumber"/> + <keyword match="getprotoent"/> + <keyword match="getpwent"/> + <keyword match="getpwnam"/> + <keyword match="getpwuid"/> + <keyword match="getservbyname"/> + <keyword match="getservbyport"/> + <keyword match="getservent"/> + <keyword match="getsockname"/> + <keyword match="getsockopt"/> + <keyword match="glob"/> + <keyword match="gmtime"/> + <keyword match="goto"/> + <keyword match="grep"/> + + <keyword match="hex"/> + + <keyword match="import"/> + <keyword match="index"/> + <keyword match="int"/> + <keyword match="ioctl"/> + + <keyword match="join"/> + + <keyword match="keys"/> + <keyword match="kill"/> + + <keyword match="last"/> + <keyword match="lc"/> + <keyword match="lcfirst"/> + <keyword match="length"/> + <keyword match="link"/> + <keyword match="listen"/> + <keyword match="local"/> + <keyword match="localtime"/> + <keyword match="lock"/> + <keyword match="log"/> + <keyword match="lstat"/> + + <!--<keyword match="m"/>--> + <keyword match="map"/> + <keyword match="mkdir"/> + <keyword match="msgctl"/> + <keyword match="msgget"/> + <keyword match="msgrcv"/> + <keyword match="msgsnd"/> + <keyword match="my"/> + + <keyword match="next"/> + <keyword match="no"/> + + <keyword match="oct"/> + <keyword match="open"/> + <keyword match="opendir"/> + <keyword match="ord"/> + <keyword match="our"/> + + <keyword match="pack"/> + <keyword match="package"/> + <keyword match="pipe"/> + <keyword match="pop"/> + <keyword match="pos"/> + <keyword match="print"/> + <keyword match="printf"/> + <keyword match="prototype"/> + <keyword match="push"/> + + <!--<keyword match="q"/> + <keyword match="qq"/> + <keyword match="qr"/>--> + <keyword match="quotemeta"/> + <!--<keyword match="qw"/> + <keyword match="qx"/>--> + + <keyword match="rand"/> + <keyword match="read"/> + <keyword match="readdir"/> + <keyword match="readline"/> + <keyword match="readlink"/> + <keyword match="readpipe"/> + <keyword match="recv"/> + <keyword match="redo"/> + <keyword match="ref"/> + <keyword match="rename"/> + <keyword match="require"/> + <keyword match="reset"/> + <keyword match="return"/> + <keyword match="reverse"/> + <keyword match="rewinddir"/> + <keyword match="rindex"/> + <keyword match="rmdir"/> + + <!--<keyword match="s"/>--> + <keyword match="scalar"/> + <keyword match="seek"/> + <keyword match="seekdir"/> + <keyword match="select"/> + <keyword match="semctl"/> + <keyword match="semget"/> + <keyword match="semop"/> + <keyword match="send"/> + <keyword match="setgrent"/> + <keyword match="sethostent"/> + <keyword match="setnetent"/> + <keyword match="setpgrp"/> + <keyword match="setpriority"/> + <keyword match="setprotoent"/> + <keyword match="setpwent"/> + <keyword match="setservent"/> + <keyword match="setsockopt"/> + <keyword match="shift"/> + <keyword match="shmctl"/> + <keyword match="shmget"/> + <keyword match="shmread"/> + <keyword match="shmwrite"/> + <keyword match="shutdown"/> + <keyword match="sin"/> + <keyword match="sleep"/> + <keyword match="socket"/> + <keyword match="socketpair"/> + <keyword match="sort"/> + <keyword match="splice"/> + <keyword match="split"/> + <keyword match="sprintf"/> + <keyword match="sqrt"/> + <keyword match="srand"/> + <keyword match="stat"/> + <keyword match="study"/> + <keyword match="sub"/> + <keyword match="substr"/> + <keyword match="symlink"/> + <keyword match="syscall"/> + <keyword match="sysopen"/> + <keyword match="sysread"/> + <keyword match="sysseek"/> + <keyword match="system"/> + <keyword match="syswrite"/> + + <keyword match="tell"/> + <keyword match="telldir"/> + <keyword match="tie"/> + <keyword match="tied"/> + <keyword match="time"/> + <keyword match="times"/> + <!--<keyword match="tr"/>--> + <keyword match="truncate"/> + + <keyword match="uc"/> + <keyword match="ucfirst"/> + <keyword match="umask"/> + <keyword match="undef"/> + <keyword match="unlink"/> + <keyword match="unpack"/> + <keyword match="unshift"/> + <keyword match="untie"/> + <keyword match="use"/> + <keyword match="utime"/> + + <keyword match="values"/> + <keyword match="vec"/> + + <keyword match="wait"/> + <keyword match="waitpid"/> + <keyword match="wantarray"/> + <keyword match="warn"/> + <keyword match="write"/> + + <keyword match="y"/> + </keywords> + + <keywords name="missingreserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="new"/> + </keywords> + + + <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="if"/> + <keyword match="else"/> + <keyword match="elsif"/> + <keyword match="while"/> + <keyword match="unless"/> + <keyword match="for"/> + <keyword match="foreach"/> + <keyword match="until"/> + <keyword match="do"/> + <keyword match="continue"/> + <keyword match="not"/> + <keyword match="or"/> + <keyword match="and"/> + <keyword match="eq"/> + <keyword match="ne"/> + <keyword match="gt"/> + <keyword match="lt"/> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/php.xml b/library/Text_Highlighter/php.xml new file mode 100644 index 000000000..1b08ea203 --- /dev/null +++ b/library/Text_Highlighter/php.xml @@ -0,0 +1,194 @@ +<?xml version="1.0"?> +<!-- $Id: php.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="php"> + + <authors> + <author name="Andrey Demenev" email ="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + <region name="phpCode" delimClass="inlinetags" innerClass="code" + start="\<\?(php|=)?" end="\?\>" never-contained="yes"> + <contains all="yes"/> + </region> + + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}" contained="yes"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" contained="yes" > + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" contained="yes"> + <contains all="yes"/> + </region> + + + <region name="mlcomment" innerClass="comment" start="\/\*" end="\*\/" contained="yes"> + <contains block="phpdoc"/> + <contains block="cvstag"/> + </region> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end=""" contained="yes"> + <contains block="var"/> + </region> + + <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`" contained="yes"> + <contains block="var"/> + </region> + + <region name="heredoc" delimClass="quotes" innerClass="string" start="/\<\<\<[\x20\x09]*(\w+)$/m" end="/^%1%;?$/m" contained="yes" remember="yes"> + <contains block="var"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'" contained="yes"/> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + <onlyin region="exec"/> + </block> + + <block name="descaped" match="\\[\\"'`tnr\$\{]" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + <onlyin region="heredoc"/> + </block> + + + <region name="comment" start="(#|\/\/)" end="/$|(?=\?\>)/m" innerClass="comment" contained="yes"> + <contains block="cvstag"/> + </region> + + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" contained="yes"/> + + <block name="typecast" match="\((array|int|integer|string|bool|boolean|object|float|double)\)" innerClass="reserved" contained="yes"/> + + <block name="curlyvar" match="\{\$[a-z_].*\}" innerClass="var" contained="yes"> + <onlyin region="strdouble"/> + <onlyin region="heredoc"/> + <onlyin region="exec"/> + </block> + + <region name="codeescape" delimClass="inlinetags" innerClass="default" end="\<\?(php|=)?" start="\?\>" contained="yes"> + <onlyin region="block"/> + </region> + + <block name="hexinteger" match="0[xX][\da-f]+" innerClass="number" contained="yes"/> + <block name="var" match="\$[a-z_]\w*" innerClass="var" contained="yes"/> + + <block name="integer" match="\d\d*|\b0\b" innerClass="number" contained="yes"/> + + + <block name="octinteger" match="0[0-7]+" innerClass="number" contained="yes"/> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number" contained="yes"/> + + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" contained="yes"/> + + <block name="phpdoc" match="\s@\w+\s" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&=\/%+]*" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <block name="note" match="\bnote:" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + + <block name="cvstag" match="\$\w+\s*:.*\$" innerClass="inlinedoc" contained="yes"> + <onlyin region="mlcomment"/> + <onlyin region="comment"/> + </block> + + <keywords name="constants" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="DIRECTORY_SEPARATOR"/> + <keyword match="PATH_SEPARATOR"/> + </keywords> + + <keywords name="reserved" inherits="identifier" innerClass="reserved"> + <keyword match="echo"/> + <keyword match="foreach"/> + <keyword match="else"/> + <keyword match="if"/> + <keyword match="elseif"/> + <keyword match="for"/> + <keyword match="as"/> + <keyword match="while"/> + <keyword match="foreach"/> + <keyword match="break"/> + <keyword match="continue"/> + <keyword match="class"/> + <keyword match="const"/> + <keyword match="declare"/> + <keyword match="switch"/> + <keyword match="case"/> + <keyword match="endfor"/> + <keyword match="endswitch"/> + <keyword match="endforeach"/> + <keyword match="endswitch"/> + <keyword match="endif"/> + <keyword match="array"/> + <keyword match="default"/> + <keyword match="do"/> + <keyword match="enddeclare"/> + <keyword match="eval"/> + <keyword match="exit"/> + <keyword match="die"/> + <keyword match="extends"/> + <keyword match="function"/> + <keyword match="global"/> + <keyword match="include"/> + <keyword match="include_once"/> + <keyword match="require"/> + <keyword match="require_once"/> + <keyword match="isset"/> + <keyword match="empty"/> + <keyword match="list"/> + <keyword match="new"/> + <keyword match="static"/> + <keyword match="unset"/> + <keyword match="var"/> + <keyword match="return"/> + <keyword match="try"/> + <keyword match="catch"/> + <keyword match="final"/> + <keyword match="throw"/> + <keyword match="public"/> + <keyword match="private"/> + <keyword match="protected"/> + <keyword match="abstract"/> + <keyword match="interface"/> + <keyword match="implements"/> + <keyword match="const"/> + <keyword match="define"/> + <keyword match="__FILE__"/> + <keyword match="__LINE__"/> + <keyword match="__CLASS__"/> + <keyword match="__METHOD__"/> + <keyword match="__FUNCTION__"/> + <keyword match="NULL"/> + <keyword match="true"/> + <keyword match="false"/> + <keyword match="and"/> + <keyword match="or"/> + <keyword match="xor"/> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/python.xml b/library/Text_Highlighter/python.xml new file mode 100644 index 000000000..29e77203c --- /dev/null +++ b/library/Text_Highlighter/python.xml @@ -0,0 +1,229 @@ +<?xml version="1.0"?> +<!-- $Id: python.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="python" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <default innerClass="code" /> + + <region name="strsingle3" delimClass="quotes" innerClass="string" + start="'''" end="'''" /> + + <region name="strdouble3" delimClass="quotes" innerClass="string" + start=""""" end="""""> + </region> + + <region name="strdouble" delimClass="quotes" innerClass="string" + start=""" end=""" > + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" + start="'" end="'" /> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" > + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" > + <contains all="yes"/> + </region> + + <block name="escaped" match="\\." innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + <onlyin region="strsingle3"/> + <onlyin region="strdouble"/> + <onlyin region="strdouble3"/> + </block> + + <block name="possiblefunction" match="[a-z_]\w*(?=\s*\()" innerClass="identifier" /> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" /> + + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" /> + + <block name="imaginary" match="((\d*\.\d+)|(\d+\.\d*)|(\d+))j" innerClass="number"/> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" /> + + <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" /> + + <block name="octinteger" match="0[0-7]+l?" innerClass="number" /> + + <block name="comment" innerClass="comment" + match="#.+" /> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="and"/> + <keyword match="del"/> + <keyword match="for"/> + <keyword match="is"/> + <keyword match="raise"/> + <keyword match="assert"/> + <keyword match="elif"/> + <keyword match="from"/> + <keyword match="lambda"/> + <keyword match="return"/> + <keyword match="break"/> + <keyword match="else"/> + <keyword match="global"/> + <keyword match="not"/> + <keyword match="try"/> + <keyword match="class"/> + <keyword match="except"/> + <keyword match="if"/> + <keyword match="or"/> + <keyword match="while"/> + <keyword match="continue"/> + <keyword match="exec"/> + <keyword match="import"/> + <keyword match="pass"/> + <keyword match="yield"/> + <keyword match="def"/> + <keyword match="finally"/> + <keyword match="in"/> + <keyword match="print"/> + <keyword match="False"/> + <keyword match="True"/> + <keyword match="None"/> + <keyword match="NotImplemented"/> + <keyword match="Ellipsis"/> + + <keyword match="Exception" /> + <keyword match="SystemExit" /> + <keyword match="StopIteration" /> + <keyword match="StandardError" /> + <keyword match="KeyboardInterrupt" /> + <keyword match="ImportError" /> + <keyword match="EnvironmentError" /> + <keyword match="IOError" /> + <keyword match="OSError" /> + <keyword match="WindowsError" /> + <keyword match="EOFError" /> + <keyword match="RuntimeError" /> + <keyword match="NotImplementedError" /> + <keyword match="NameError" /> + <keyword match="UnboundLocalError" /> + + <keyword match="AttributeError" /> + <keyword match="SyntaxError" /> + <keyword match="IndentationError" /> + <keyword match="TabError" /> + <keyword match="TypeError" /> + <keyword match="AssertionError" /> + <keyword match="LookupError" /> + <keyword match="IndexError" /> + <keyword match="KeyError" /> + <keyword match="ArithmeticError" /> + <keyword match="OverflowError" /> + <keyword match="ZeroDivisionError" /> + <keyword match="FloatingPointError" /> + <keyword match="ValueError" /> + <keyword match="UnicodeError" /> + <keyword match="UnicodeEncodeError" /> + <keyword match="UnicodeDecodeError" /> + + <keyword match="UnicodeTranslateError" /> + <keyword match="ReferenceError" /> + <keyword match="SystemError" /> + <keyword match="MemoryError" /> + <keyword match="Warning" /> + <keyword match="UserWarning" /> + <keyword match="DeprecationWarning" /> + <keyword match="PendingDeprecationWarning" /> + <keyword match="SyntaxWarning" /> + <keyword match="OverflowWarning" /> + <keyword match="RuntimeWarning" /> + <keyword match="FutureWarning" /> + + </keywords> + + <keywords name="builtin" inherits="possiblefunction" + innerClass="builtin" otherwise="identifier" case = "yes"> + <keyword match="__import__"/> + + <keyword match="abs"/> + <keyword match="apply"/> + <keyword match="basestring"/> + <keyword match="bool"/> + <keyword match="buffer"/> + <keyword match="callable"/> + <keyword match="chr"/> + <keyword match="classmethod"/> + <keyword match="cmp"/> + + <keyword match="coerce"/> + <keyword match="compile"/> + <keyword match="complex"/> + <keyword match="delattr"/> + <keyword match="dict"/> + <keyword match="dir"/> + <keyword match="divmod"/> + <keyword match="enumerate"/> + <keyword match="eval"/> + + <keyword match="execfile"/> + <keyword match="file"/> + <keyword match="filter"/> + <keyword match="float"/> + <keyword match="getattr"/> + <keyword match="globals"/> + <keyword match="hasattr"/> + <keyword match="hash"/> + <keyword match="help"/> + + <keyword match="hex"/> + <keyword match="id"/> + <keyword match="input"/> + <keyword match="int"/> + <keyword match="intern"/> + <keyword match="isinstance"/> + <keyword match="issubclass"/> + <keyword match="iter"/> + <keyword match="len"/> + + <keyword match="list"/> + <keyword match="locals"/> + <keyword match="long"/> + <keyword match="map"/> + <keyword match="max"/> + <keyword match="min"/> + <keyword match="object"/> + <keyword match="oct"/> + <keyword match="open"/> + + <keyword match="ord"/> + <keyword match="pow"/> + <keyword match="property"/> + <keyword match="range"/> + <keyword match="raw_input"/> + <keyword match="reduce"/> + <keyword match="reload"/> + <keyword match="repr"/> + <keyword match="round"/> + + <keyword match="setattr"/> + <keyword match="slice"/> + <keyword match="staticmethod"/> + <keyword match="sum"/> + <keyword match="super"/> + <keyword match="str"/> + <keyword match="tuple"/> + <keyword match="type"/> + <keyword match="unichr"/> + + <keyword match="unicode"/> + <keyword match="vars"/> + <keyword match="xrange"/> + <keyword match="zip"/> + + </keywords> + +</highlight> + diff --git a/library/Text_Highlighter/release b/library/Text_Highlighter/release new file mode 100644 index 000000000..66f1fa603 --- /dev/null +++ b/library/Text_Highlighter/release @@ -0,0 +1,4 @@ +#!/bin/sh + +/usr/local/bin/php package.php make +/usr/local/bin/pear package diff --git a/library/Text_Highlighter/ruby.xml b/library/Text_Highlighter/ruby.xml new file mode 100644 index 000000000..599f5af17 --- /dev/null +++ b/library/Text_Highlighter/ruby.xml @@ -0,0 +1,141 @@ +<?xml version="1.0"?> +<!-- $Id: ruby.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="ruby" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + <comment> +FIXME: While this construction : s.split /z/i +is valid, regular expression is not recognized as such +(/ folowing an identifier or number is not recognized as +start of RE), making highlighting improper + +%q(a (nested) string) does not get highlighted correctly + </comment> + + <default innerClass="code" /> + + <region name="data" start="/^__END__$/m" end="$" delimClass="reserved" innerClass="comment" never-conteined="yes" /> + + <region name="strdouble" delimClass="quotes" innerClass="string" + start=""" end=""" > + </region> + + <region name="qstrdouble" delimClass="quotes" innerClass="string" + start="%[Qx]([!"#\$%&'+\-*.\/:;=?@^`|~{<\[(])" end="%b1%" remember="yes" /> + + <region name="strsingle" delimClass="quotes" innerClass="string" + start="'" end="'" /> + + <region name="qstrsingle" delimClass="quotes" innerClass="string" + start="%[wq]([!"#\$%&'+\-*.\/:;=?@^`|~{<\[(])" end="%b1%" remember="yes" /> + + <block name="global" match="\$(\W|\w+)" innerClass="var" /> + + <block name="classvar" match="/@@?[_a-z][\d_a-z]*/i" innerClass="var" /> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)" > + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]" > + <contains all="yes"/> + </region> + + <block name="escaped" match="\\." innerClass="special" contained="yes"> + <onlyin region="qstrsingle"/> + <onlyin region="strsingle"/> + <onlyin region="qstrdouble"/> + <onlyin region="strdouble"/> + <onlyin region="regexp"/> + </block> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" /> + + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" /> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" /> + + <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" /> + + <block name="octinteger" match="0[0-7]+l?" innerClass="number" /> + + + <region name="rubydoc" start="/^=begin$/m" end="/^=end$/m" delimClass="comment" innerClass="comment"> + <contains block="cvstag" /> + </region> + + <block name="cvstag" match="\$\w+\s*:.+\$" innerClass="inlinedoc" contained="yes"> + <onlyin region="comment"/> + <onlyin region="rubydoc"/> + </block> + + <region name="comment" innerClass="comment" start="#" end="/$/m" delimClass="comment" > + <contains block="cvstag" /> + </region> + + <region name="regexp" delimClass="quotes" innerClass="string" start="\s*\/" end="\/[iomx]*" + neverAfter="(?<!\band|\bor|\bwhile|\buntil|\bunless|\bif|\belsif|\bwhen|[~=!|&(,\[])$"> + </region> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="__FILE__" /> + <keyword match="require" /> + <keyword match="and" /> + <keyword match="def" /> + <keyword match="end" /> + <keyword match="in" /> + <keyword match="or" /> + <keyword match="self" /> + <keyword match="unless" /> + <keyword match="__LINE__" /> + <keyword match="begin" /> + <keyword match="defined?" /> + <keyword match="ensure" /> + <keyword match="module" /> + <keyword match="redo" /> + <keyword match="super" /> + <keyword match="until" /> + <keyword match="BEGIN" /> + <keyword match="break" /> + <keyword match="do" /> + <keyword match="false" /> + <keyword match="next" /> + <keyword match="rescue" /> + <keyword match="then" /> + <keyword match="when" /> + <keyword match="END" /> + <keyword match="case" /> + <keyword match="else" /> + <keyword match="for" /> + <keyword match="nil" /> + <keyword match="retry" /> + <keyword match="true" /> + <keyword match="while" /> + <keyword match="alias" /> + <keyword match="module_function" /> + <keyword match="private" /> + <keyword match="public" /> + <keyword match="protected" /> + <keyword match="attr_reader" /> + <keyword match="attr_writer" /> + <keyword match="attr_accessor" /> + <keyword match="class" /> + <keyword match="elsif" /> + <keyword match="if" /> + <keyword match="not" /> + <keyword match="return" /> + <keyword match="undef" /> + <keyword match="yield" /> + </keywords> + + +</highlight> + diff --git a/library/Text_Highlighter/sample.css b/library/Text_Highlighter/sample.css new file mode 100644 index 000000000..b4b38c5fc --- /dev/null +++ b/library/Text_Highlighter/sample.css @@ -0,0 +1,62 @@ +.hl-main ol { + line-height: 1.0; +} +.hl-default { + color: Black; +} +.hl-code { + color: Black; +} +.hl-brackets { + color: Olive; +} +.hl-comment { + color: Purple; +} +.hl-quotes { + color: Darkred; +} +.hl-string { + color: Red; +} +.hl-identifier { + color: Blue; +} +.hl-builtin { + color: Teal; +} +.hl-reserved { + color: Green; +} +.hl-inlinedoc { + color: Blue; +} +.hl-var { + color: Darkblue; +} +.hl-url { + color: Blue; +} +.hl-special { + color: Navy; +} +.hl-number { + color: Maroon; +} +.hl-inlinetags { + color: Blue; +} +.hl-main { + background: #ccc none repeat scroll 0 0; + color: #000; +/* background-color: White; */ +} +.hl-gutter { + background-color: #999999; + color: White +} +.hl-table { + font-family: courier; + font-size: 12px; + border: solid 1px Lightgrey; +} diff --git a/library/Text_Highlighter/sh.xml b/library/Text_Highlighter/sh.xml new file mode 100644 index 000000000..1250de3bc --- /dev/null +++ b/library/Text_Highlighter/sh.xml @@ -0,0 +1,242 @@ +<?xml version="1.0"?> +<!-- $Id: sh.xml,v 1.2 2007-06-14 00:15:50 ssttoo Exp $ --> + +<highlight lang="sh" case = "yes"> + + <authors> + <author name="Noah Spurrier" email="noah@noah.org" /> + </authors> + + <comment>This highlighter is EXPERIMENTAL. It may work incorrectly. + It is a crude hack of the perl syntax, which itself wasn't so good. + But this seems to work OK. + </comment> + + <default innerClass="code"/> + + <block name="interpreter" match="/^(#!)(.*)/m" innerClass="special"> + <partClass index="1" innerClass="special" /> + <partClass index="2" innerClass="string" /> + </block> + + <!-- + brackets + --> + <region name="block" delimClass="brackets" innerClass="code" start="\{" end="\}"> + <contains all="yes"/> + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + <region name="sqbrackets" delimClass="brackets" innerClass="code" start="\[" end="\]"> + <contains all="yes"/> + </region> + + <!-- + use smth + --> + <block name="usestatement" match="(use)\s+([\w:]*)" innerClass="special"> + <partClass index="1" innerClass="reserved" /> + <partClass index="2" innerClass="special" /> + </block> + + + <region name="q-w-q-statement" + start="/\b(q[wq]\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + + </region> + + <region name="qstatement" + start="/\b(q\s*((\{)|(\()|(\[)|(\<)|([\W\S])))(?=(.*)((?(3)\})(?(4)\))(?(5)\])(?(6)\>)(?(7)\7)))/Us" + end="%b2%" + innerClass="string" delimClass="quotes" remember="yes"> + + </region> + + <!-- + comments + --> + <block name="comment" match="#.*" innerClass="comment" /> + + + <!-- + regexpr + FIXME: this should be rewritten + --> + <block name="dblregexprver1" match="/(s|tr) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2)((\\.|[^\\])*?)(\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + <partClass index="6" innerClass="string" /> + <partClass index="8" innerClass="quotes" /> + </block> + + <block name="dblregexprver2" match="/(m) ([|#~`!@$%^&*-+=\\;:'",.\/?]) ((\\.|[^\\])*?) (\2[ecgimosx]*)/x" innerClass="string"> + <partClass index="1" innerClass="quotes" /> + <partClass index="2" innerClass="quotes" /> + <partClass index="3" innerClass="string" /> + <partClass index="5" innerClass="quotes" /> + </block> + + + <region name="regexp" start=" \/" end="\/[cgimosx]*" innerClass="string" delimClass="quotes" case="yes"> + <contains block="reescaped"/> + </region> + + <block name="reescaped" match="\\\/" innerClass="string" contained="yes"> + <onlyin region="regexp"/> + </block> + + <!-- + variables + FIXME: @{...} + --> + <block name="bracketsvars" match="([a-z1-9_]+)(\s*=>)" innerClass="string" contained="yes" case="no"> + <partClass index="1" innerClass="string" /> + <partClass index="2" innerClass="code" /> + <onlyin region="brackets"/> + </block> + + <block name="specialvar" match="\$#?[1-9'`@!]" innerClass="var"/> + + <block name="var" match="(\$#?|[@%*])([a-z1-9_]+::)*([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + <block name="containedvar" match="\$([a-z1-9_]+|\^(?-i)[A-Z]?(?i))" innerClass="var" case="no"/> + + <block name="classvar" match="(\{)([a-z1-9]+)(\})" innerClass="var" case="no"> + <partClass index="1" innerClass="brackets" /> + <partClass index="2" innerClass="var" /> + <partClass index="3" innerClass="brackets" /> + </block> + + <block name="curlyvar" match="[\$@%]#?\{[a-z1-9]+\}" innerClass="var" case="no"/> + + <!-- + quotes + --> + <region name="exec" delimClass="quotes" innerClass="string" start="`" end="`"> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" start="'" end="'"/> + + <block name="escaped" match="\\\\|\\"|\\'|\\`" innerClass="special" contained="yes"> + <onlyin region="qstatement"/> + <onlyin region="strsingle"/> + <onlyin region="exec"/> + </block> + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""> + <contains block="containedvar"/> + <contains block="specialvar"/> + <contains block="curlyvar"/> + </region> + + <block name="descaped" match="\\[\\"'`tnr\$\{@]" innerClass="special" contained="yes"> + <onlyin region="strdouble"/> + <onlyin region="q-w-q-statement"/> + </block> + + <!-- logical op. + <block name="logic" match="\|\||&&" innerClass="reserved" contained="yes"/>--> + + <!-- + identifiers + --> + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <!-- + numbers + --> + <block name="number" match="\d*\.?\d+" innerClass="number"/> + + <!-- + GNU and posix standard shell utilities here. + --> + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="cd"/> + <keyword match="cp"/> + <keyword match="rm"/> + <keyword match="echo"/> + <keyword match="printf"/> + <keyword match="exit"/> + <keyword match="cut"/> + <keyword match="join"/> + <keyword match="comm"/> + <keyword match="fmt"/> + <keyword match="grep"/> + <keyword match="egrep"/> + <keyword match="fgrep"/> + <keyword match="sed"/> + <keyword match="awk"/> + <keyword match="yes"/> + <keyword match="false"/> + <keyword match="true"/> + <keyword match="test"/> + <keyword match="expr"/> + <keyword match="tee"/> + <keyword match="basename"/> + <keyword match="dirname"/> + <keyword match="pathchk"/> + <keyword match="pwd"/> + <keyword match="stty"/> + <keyword match="tty"/> + <keyword match="env"/> + <keyword match="printenv"/> + <keyword match="id"/> + <keyword match="logname"/> + <keyword match="whoami"/> + <keyword match="groups"/> + <keyword match="users"/> + <keyword match="who"/> + <keyword match="date"/> + <keyword match="uname"/> + <keyword match="hostname"/> + <keyword match="chroot"/> + <keyword match="nice"/> + <keyword match="nohup"/> + <keyword match="sleep"/> + <keyword match="factor"/> + <keyword match="seq"/> + <keyword match="getopt"/> + <keyword match="getopts"/> + <keyword match="options"/> + <keyword match="shift"/> + </keywords> + + <keywords name="flowcontrol" inherits="identifier" innerClass="reserved" case = "yes"> + <keyword match="if"/> + <keyword match="fi"/> + <keyword match="then"/> + <keyword match="else"/> + <keyword match="elif"/> + <keyword match="case"/> + <keyword match="esac"/> + <keyword match="while"/> + <keyword match="done"/> + <keyword match="for"/> + <keyword match="in"/> + <keyword match="function"/> + <keyword match="until"/> + <keyword match="do"/> + <keyword match="select"/> + <keyword match="time"/> + <!-- + <keyword match="[["/> + <keyword match="]]"/> + --> + <keyword match="read"/> + <keyword match="set"/> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/sql.xml b/library/Text_Highlighter/sql.xml new file mode 100644 index 000000000..19cae49a0 --- /dev/null +++ b/library/Text_Highlighter/sql.xml @@ -0,0 +1,496 @@ +<?xml version="1.0"?> +<!-- $Id: sql.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="sql" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <comment>Based on SQL-99</comment> + + <default innerClass="code" /> + + <region name="qidentifier" delimClass="quotes" innerClass="identifier" + start="`" end="`" /> + + <region name="mlcomment" delimClass="comment" innerClass="comment" + start="\/\*" end="\*\/" /> + + <block name="comment" match="(#|--\s).*" innerClass="comment" /> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" /> + + <region name="strdouble" delimClass="quotes" innerClass="string" + start=""" end=""" > + </region> + + <region name="brackets" delimClass="brackets" innerClass="code" + start="\(" end="\)" > + <contains all="yes"/> + </region> + + <region name="strsingle" delimClass="quotes" innerClass="string" + start="'" end="'" /> + + <block name="escaped" match="\\." innerClass="special" contained="yes"> + <onlyin region="strsingle"/> + <onlyin region="strdouble"/> + </block> + + <block name="exponent" + match="((\d+|((\d*\.\d+)|(\d+\.\d*)))[eE][+-]?\d+)" + innerClass="number" /> + + <block name="float" match="(\d*\.\d+)|(\d+\.\d*)" innerClass="number"/> + + <block name="integer" match="\d+l?|\b0l?\b" innerClass="number" /> + + <block name="hexinteger" match="0[xX][\da-f]+l?" innerClass="number" /> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case = "no"> + <keyword match="ABSOLUTE" /> + <keyword match="ACTION" /> + <keyword match="ADD" /> + <keyword match="ADMIN" /> + <keyword match="AFTER" /> + <keyword match="AGGREGATE" /> + <keyword match="ALIAS" /> + <keyword match="ALL" /> + <keyword match="ALLOCATE" /> + <keyword match="ALTER" /> + <keyword match="AND" /> + <keyword match="ANY" /> + <keyword match="ARE" /> + <keyword match="ARRAY" /> + <keyword match="AS" /> + <keyword match="ASC" /> + <keyword match="ASSERTION" /> + <keyword match="AT" /> + <keyword match="AUTHORIZATION" /> + <keyword match="BEFORE" /> + <keyword match="BEGIN" /> + <keyword match="BINARY" /> + <keyword match="BIT" /> + <keyword match="BLOB" /> + <keyword match="BOOLEAN" /> + <keyword match="BOTH" /> + <keyword match="BREADTH" /> + <keyword match="BY" /> + <keyword match="CALL" /> + <keyword match="CASCADE" /> + <keyword match="CASCADED" /> + <keyword match="CASE" /> + <keyword match="CAST" /> + <keyword match="CATALOG" /> + <keyword match="CHAR" /> + <keyword match="CHARACTER" /> + <keyword match="CHECK" /> + <keyword match="CLASS" /> + <keyword match="CLOB" /> + <keyword match="CLOSE" /> + <keyword match="COLLATE" /> + <keyword match="COLLATION" /> + <keyword match="COLUMN" /> + <keyword match="COMMIT" /> + <keyword match="COMPLETION" /> + <keyword match="CONNECT" /> + <keyword match="CONNECTION" /> + <keyword match="CONSTRAINT" /> + <keyword match="CONSTRAINTS" /> + <keyword match="CONSTRUCTOR" /> + <keyword match="CONTINUE" /> + <keyword match="CORRESPONDING" /> + <keyword match="CREATE" /> + <keyword match="CROSS" /> + <keyword match="CUBE" /> + <keyword match="CURRENT" /> + <keyword match="CURRENT_DATE" /> + <keyword match="CURRENT_PATH" /> + <keyword match="CURRENT_ROLE" /> + <keyword match="CURRENT_TIME" /> + <keyword match="CURRENT_TIMESTAMP" /> + <keyword match="CURRENT_USER" /> + <keyword match="CURSOR" /> + <keyword match="CYCLE" /> + <keyword match="DATA" /> + <keyword match="DATE" /> + <keyword match="DAY" /> + <keyword match="DEALLOCATE" /> + <keyword match="DEC" /> + <keyword match="DECIMAL" /> + <keyword match="DECLARE" /> + <keyword match="DEFAULT" /> + <keyword match="DEFERRABLE" /> + <keyword match="DEFERRED" /> + <keyword match="DELETE" /> + <keyword match="DEPTH" /> + <keyword match="DEREF" /> + <keyword match="DESC" /> + <keyword match="DESCRIBE" /> + <keyword match="DESCRIPTOR" /> + <keyword match="DESTROY" /> + <keyword match="DESTRUCTOR" /> + <keyword match="DETERMINISTIC" /> + <keyword match="DIAGNOSTICS" /> + <keyword match="DICTIONARY" /> + <keyword match="DISCONNECT" /> + <keyword match="DISTINCT" /> + <keyword match="DOMAIN" /> + <keyword match="DOUBLE" /> + <keyword match="DROP" /> + <keyword match="DYNAMIC" /> + <keyword match="EACH" /> + <keyword match="ELSE" /> + <keyword match="END" /> + <keyword match="END-EXEC" /> + <keyword match="EQUALS" /> + <keyword match="ESCAPE" /> + <keyword match="EVERY" /> + <keyword match="EXCEPT" /> + <keyword match="EXCEPTION" /> + <keyword match="EXEC" /> + <keyword match="EXECUTE" /> + <keyword match="EXTERNAL" /> + <keyword match="FALSE" /> + <keyword match="FETCH" /> + <keyword match="FIRST" /> + <keyword match="FLOAT" /> + <keyword match="FOR" /> + <keyword match="FOREIGN" /> + <keyword match="FOUND" /> + <keyword match="FREE" /> + <keyword match="FROM" /> + <keyword match="FULL" /> + <keyword match="FUNCTION" /> + <keyword match="GENERAL" /> + <keyword match="GET" /> + <keyword match="GLOBAL" /> + <keyword match="GO" /> + <keyword match="GOTO" /> + <keyword match="GRANT" /> + <keyword match="GROUP" /> + <keyword match="GROUPING" /> + <keyword match="HAVING" /> + <keyword match="HOST" /> + <keyword match="HOUR" /> + <keyword match="IDENTITY" /> + <keyword match="IGNORE" /> + <keyword match="IMMEDIATE" /> + <keyword match="IN" /> + <keyword match="INDICATOR" /> + <keyword match="INITIALIZE" /> + <keyword match="INITIALLY" /> + <keyword match="INNER" /> + <keyword match="INOUT" /> + <keyword match="INPUT" /> + <keyword match="INSERT" /> + <keyword match="INT" /> + <keyword match="INTEGER" /> + <keyword match="INTERSECT" /> + <keyword match="INTERVAL" /> + <keyword match="INTO" /> + <keyword match="IS" /> + <keyword match="ISOLATION" /> + <keyword match="ITERATE" /> + <keyword match="JOIN" /> + <keyword match="KEY" /> + <keyword match="LANGUAGE" /> + <keyword match="LARGE" /> + <keyword match="LAST" /> + <keyword match="LATERAL" /> + <keyword match="LEADING" /> + <keyword match="LEFT" /> + <keyword match="LESS" /> + <keyword match="LEVEL" /> + <keyword match="LIKE" /> + <keyword match="LIMIT" /> + <keyword match="LOCAL" /> + <keyword match="LOCALTIME" /> + <keyword match="LOCALTIMESTAMP" /> + <keyword match="LOCATOR" /> + <keyword match="MAP" /> + <keyword match="MATCH" /> + <keyword match="MINUTE" /> + <keyword match="MODIFIES" /> + <keyword match="MODIFY" /> + <keyword match="MODULE" /> + <keyword match="MONTH" /> + <keyword match="NAMES" /> + <keyword match="NATIONAL" /> + <keyword match="NATURAL" /> + <keyword match="NCHAR" /> + <keyword match="NCLOB" /> + <keyword match="NEW" /> + <keyword match="NEXT" /> + <keyword match="NO" /> + <keyword match="NONE" /> + <keyword match="NOT" /> + <keyword match="NULL" /> + <keyword match="NUMERIC" /> + <keyword match="OBJECT" /> + <keyword match="OF" /> + <keyword match="OFF" /> + <keyword match="OLD" /> + <keyword match="ON" /> + <keyword match="ONLY" /> + <keyword match="OPEN" /> + <keyword match="OPERATION" /> + <keyword match="OPTION" /> + <keyword match="OR" /> + <keyword match="ORDER" /> + <keyword match="ORDINALITY" /> + <keyword match="OUT" /> + <keyword match="OUTER" /> + <keyword match="OUTPUT" /> + <keyword match="PAD" /> + <keyword match="PARAMETER" /> + <keyword match="PARAMETERS" /> + <keyword match="PARTIAL" /> + <keyword match="PATH" /> + <keyword match="POSTFIX" /> + <keyword match="PRECISION" /> + <keyword match="PREFIX" /> + <keyword match="PREORDER" /> + <keyword match="PREPARE" /> + <keyword match="PRESERVE" /> + <keyword match="PRIMARY" /> + <keyword match="PRIOR" /> + <keyword match="PRIVILEGES" /> + <keyword match="PROCEDURE" /> + <keyword match="PUBLIC" /> + <keyword match="READ" /> + <keyword match="READS" /> + <keyword match="REAL" /> + <keyword match="RECURSIVE" /> + <keyword match="REF" /> + <keyword match="REFERENCES" /> + <keyword match="REFERENCING" /> + <keyword match="RELATIVE" /> + <keyword match="RESTRICT" /> + <keyword match="RESULT" /> + <keyword match="RETURN" /> + <keyword match="RETURNS" /> + <keyword match="REVOKE" /> + <keyword match="RIGHT" /> + <keyword match="ROLE" /> + <keyword match="ROLLBACK" /> + <keyword match="ROLLUP" /> + <keyword match="ROUTINE" /> + <keyword match="ROW" /> + <keyword match="ROWS" /> + <keyword match="SAVEPOINT" /> + <keyword match="SCHEMA" /> + <keyword match="SCOPE" /> + <keyword match="SCROLL" /> + <keyword match="SEARCH" /> + <keyword match="SECOND" /> + <keyword match="SECTION" /> + <keyword match="SELECT" /> + <keyword match="SEQUENCE" /> + <keyword match="SESSION" /> + <keyword match="SESSION_USER" /> + <keyword match="SET" /> + <keyword match="SETS" /> + <keyword match="SIZE" /> + <keyword match="SMALLINT" /> + <keyword match="SOME" /> + <keyword match="SPACE" /> + <keyword match="SPECIFIC" /> + <keyword match="SPECIFICTYPE" /> + <keyword match="SQL" /> + <keyword match="SQLEXCEPTION" /> + <keyword match="SQLSTATE" /> + <keyword match="SQLWARNING" /> + <keyword match="START" /> + <keyword match="STATE" /> + <keyword match="STATEMENT" /> + <keyword match="STATIC" /> + <keyword match="STRUCTURE" /> + <keyword match="SYSTEM_USER" /> + <keyword match="TABLE" /> + <keyword match="TEMPORARY" /> + <keyword match="TERMINATE" /> + <keyword match="THAN" /> + <keyword match="THEN" /> + <keyword match="TIME" /> + <keyword match="TIMESTAMP" /> + <keyword match="TIMEZONE_HOUR" /> + <keyword match="TIMEZONE_MINUTE" /> + <keyword match="TO" /> + <keyword match="TRAILING" /> + <keyword match="TRANSACTION" /> + <keyword match="TRANSLATION" /> + <keyword match="TREAT" /> + <keyword match="TRIGGER" /> + <keyword match="TRUE" /> + <keyword match="UNDER" /> + <keyword match="UNION" /> + <keyword match="UNIQUE" /> + <keyword match="UNKNOWN" /> + <keyword match="UNNEST" /> + <keyword match="UPDATE" /> + <keyword match="USAGE" /> + <keyword match="USER" /> + <keyword match="USING" /> + <keyword match="VALUE" /> + <keyword match="VALUES" /> + <keyword match="VARCHAR" /> + <keyword match="VARIABLE" /> + <keyword match="VARYING" /> + <keyword match="VIEW" /> + <keyword match="WHEN" /> + <keyword match="WHENEVER" /> + <keyword match="WHERE" /> + <keyword match="WITH" /> + <keyword match="WITHOUT" /> + <keyword match="WORK" /> + <keyword match="WRITE" /> + <keyword match="YEAR" /> + <keyword match="ZONE" /> + </keywords> + <keywords name="keyword" inherits="identifier" innerClass="var" case = "no"> + <keyword match="ABS" /> + <keyword match="ADA" /> + <keyword match="ASENSITIVE" /> + <keyword match="ASSIGNMENT" /> + <keyword match="ASYMMETRIC" /> + <keyword match="ATOMIC" /> + <keyword match="AVG" /> + <keyword match="BETWEEN" /> + <keyword match="BITVAR" /> + <keyword match="BIT_LENGTH" /> + <keyword match="C" /> + <keyword match="CALLED" /> + <keyword match="CARDINALITY" /> + <keyword match="CATALOG_NAME" /> + <keyword match="CHAIN" /> + <keyword match="CHARACTER_LENGTH" /> + <keyword match="CHARACTER_SET_CATALOG" /> + <keyword match="CHARACTER_SET_NAME" /> + <keyword match="CHARACTER_SET_SCHEMA" /> + <keyword match="CHAR_LENGTH" /> + <keyword match="CHECKED" /> + <keyword match="CLASS_ORIGIN" /> + <keyword match="COALESCE" /> + <keyword match="COBOL" /> + <keyword match="COLLATION_CATALOG" /> + <keyword match="COLLATION_NAME" /> + <keyword match="COLLATION_SCHEMA" /> + <keyword match="COLUMN_NAME" /> + <keyword match="COMMAND_FUNCTION" /> + <keyword match="COMMAND_FUNCTION_CODE" /> + <keyword match="COMMITTED" /> + <keyword match="CONDITION_NUMBER" /> + <keyword match="CONNECTION_NAME" /> + <keyword match="CONSTRAINT_CATALOG" /> + <keyword match="CONSTRAINT_NAME" /> + <keyword match="CONSTRAINT_SCHEMA" /> + <keyword match="CONTAINS" /> + <keyword match="CONVERT" /> + <keyword match="COUNT" /> + <keyword match="CURSOR_NAME" /> + <keyword match="DATETIME_INTERVAL_CODE" /> + <keyword match="DATETIME_INTERVAL_PRECISION" /> + <keyword match="DEFINED" /> + <keyword match="DEFINER" /> + <keyword match="DISPATCH" /> + <keyword match="DYNAMIC_FUNCTION" /> + <keyword match="DYNAMIC_FUNCTION_CODE" /> + <keyword match="EXISTING" /> + <keyword match="EXISTS" /> + <keyword match="EXTRACT" /> + <keyword match="FINAL" /> + <keyword match="FORTRAN" /> + <keyword match="G" /> + <keyword match="GENERATED" /> + <keyword match="GRANTED" /> + <keyword match="HIERARCHY" /> + <keyword match="HOLD" /> + <keyword match="IMPLEMENTATION" /> + <keyword match="INFIX" /> + <keyword match="INSENSITIVE" /> + <keyword match="INSTANCE" /> + <keyword match="INSTANTIABLE" /> + <keyword match="INVOKER" /> + <keyword match="K" /> + <keyword match="KEY_MEMBER" /> + <keyword match="KEY_TYPE" /> + <keyword match="LENGTH" /> + <keyword match="LOWER" /> + <keyword match="M" /> + <keyword match="MAX" /> + <keyword match="MESSAGE_LENGTH" /> + <keyword match="MESSAGE_OCTET_LENGTH" /> + <keyword match="MESSAGE_TEXT" /> + <keyword match="METHOD" /> + <keyword match="MIN" /> + <keyword match="MOD" /> + <keyword match="MORE" /> + <keyword match="MUMPS" /> + <keyword match="NAME" /> + <keyword match="NULLABLE" /> + <keyword match="NULLIF" /> + <keyword match="NUMBER" /> + <keyword match="OCTET_LENGTH" /> + <keyword match="OPTIONS" /> + <keyword match="OVERLAPS" /> + <keyword match="OVERLAY" /> + <keyword match="OVERRIDING" /> + <keyword match="PARAMETER_MODE" /> + <keyword match="PARAMETER_NAME" /> + <keyword match="PARAMETER_ORDINAL_POSITION" /> + <keyword match="PARAMETER_SPECIFIC_CATALOG" /> + <keyword match="PARAMETER_SPECIFIC_NAME" /> + <keyword match="PARAMETER_SPECIFIC_SCHEMA" /> + <keyword match="PASCAL" /> + <keyword match="PLI" /> + <keyword match="POSITION" /> + <keyword match="REPEATABLE" /> + <keyword match="RETURNED_LENGTH" /> + <keyword match="RETURNED_OCTET_LENGTH" /> + <keyword match="RETURNED_SQLSTATE" /> + <keyword match="ROUTINE_CATALOG" /> + <keyword match="ROUTINE_NAME" /> + <keyword match="ROUTINE_SCHEMA" /> + <keyword match="ROW_COUNT" /> + <keyword match="SCALE" /> + <keyword match="SCHEMA_NAME" /> + <keyword match="SECURITY" /> + <keyword match="SELF" /> + <keyword match="SENSITIVE" /> + <keyword match="SERIALIZABLE" /> + <keyword match="SERVER_NAME" /> + <keyword match="SIMILAR" /> + <keyword match="SIMPLE" /> + <keyword match="SOURCE" /> + <keyword match="SPECIFIC_NAME" /> + <keyword match="STYLE" /> + <keyword match="SUBCLASS_ORIGIN" /> + <keyword match="SUBLIST" /> + <keyword match="SUBSTRING" /> + <keyword match="SUM" /> + <keyword match="SYMMETRIC" /> + <keyword match="SYSTEM" /> + <keyword match="TABLE_NAME" /> + <keyword match="TRANSACTIONS_COMMITTED" /> + <keyword match="TRANSACTIONS_ROLLED_BACK" /> + <keyword match="TRANSACTION_ACTIVE" /> + <keyword match="TRANSFORM" /> + <keyword match="TRANSFORMS" /> + <keyword match="TRANSLATE" /> + <keyword match="TRIGGER_CATALOG" /> + <keyword match="TRIGGER_NAME" /> + <keyword match="TRIGGER_SCHEMA" /> + <keyword match="TRIM" /> + <keyword match="TYPE" /> + <keyword match="UNCOMMITTED" /> + <keyword match="UNNAMED" /> + <keyword match="UPPER" /> + <keyword match="USER_DEFINED_TYPE_CATALOG" /> + <keyword match="USER_DEFINED_TYPE_NAME" /> + <keyword match="USER_DEFINED_TYPE_SCHEMA" /> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/vbscript.xml b/library/Text_Highlighter/vbscript.xml new file mode 100644 index 000000000..09c37ffde --- /dev/null +++ b/library/Text_Highlighter/vbscript.xml @@ -0,0 +1,305 @@ +<?xml version="1.0"?> +<!-- $Id: vbscript.xml,v 1.2 2008-01-02 00:05:52 ssttoo Exp $ --> + +<highlight lang="vbscript" case="no"> + + <authors> + <author name="Daniel Fruzynski" email="daniel-AT-poradnik-webmastera.com" /> + </authors> + + <default innerClass="code" /> + + <region name="brackets" delimClass="brackets" innerClass="code" start="\(" end="\)"> + <contains all="yes"/> + </region> + + + <region name="strdouble" delimClass="quotes" innerClass="string" start=""" end="""/> + + <region name="comment" start="'|[Rr][Ee][Mm]\b" end="/$/m" innerClass="comment"> + <contains block="cvstag"/> + </region> + + <block name="number" match="\d*\.?\d+" innerClass="number"/> + <block name="hexnumber" match="&H[0-9a-fA-F]+" innerClass="number"/> + + <block name="identifier" match="[a-z_]\w*" innerClass="identifier" case="no"/> + + <block name="url" match="((https?|ftp):\/\/[\w\?\.\-\&=\/%+]+)|(^|[\s,!?])www\.\w+\.\w+[\w\?\.\&=\/%+]*" innerClass="url" contained="yes"> + <onlyin region="comment"/> + </block> + + <block name="email" match="\w+[\.\w\-]+@(\w+[\.\w\-])+" innerClass="url" contained="yes"> + <onlyin region="comment"/> + </block> + + <block name="note" match="\b(note|fixme):" innerClass="inlinedoc" contained="yes" case="no"> + <onlyin region="comment"/> + </block> + + + <block name="cvstag" match="\$\w+:.+\$" innerClass="inlinedoc" contained="yes"> + <onlyin region="comment"/> + </block> + + <keywords name="constants" inherits="identifier" innerClass="builtin" case="no"> + <!-- Color Constants --> + <keyword match="vbBlack" /> + <keyword match="vbRed" /> + <keyword match="vbGreen" /> + <keyword match="vbYellow" /> + <keyword match="vbBlue" /> + <keyword match="vbMagenta" /> + <keyword match="vbCyan" /> + <keyword match="vbWhite" /> + <!-- Comparison Constants --> + <keyword match="vbBinaryCompare" /> + <keyword match="vbTextCompare" /> + <!-- Date and Time Constants --> + <keyword match="vbSunday" /> + <keyword match="vbMonday" /> + <keyword match="vbTuesday" /> + <keyword match="vbWednesday" /> + <keyword match="vbThursday" /> + <keyword match="vbFriday" /> + <keyword match="vbSaturday" /> + <keyword match="vbUseSystemDayOfWeek" /> + <keyword match="vbFirstJan1" /> + <keyword match="vbFirstFourDays" /> + <keyword match="vbFirstFullWeek" /> + <!-- Date Format Constants --> + <keyword match="vbGeneralDate" /> + <keyword match="vbLongDate" /> + <keyword match="vbShortDate" /> + <keyword match="vbLongTime" /> + <keyword match="vbShortTime" /> + <!-- Miscellaneous Constants --> + <keyword match="vbObjectError" /> + <!-- MsgBox Constants --> + <keyword match="vbOKOnly" /> + <keyword match="vbOKCancel" /> + <keyword match="vbAbortRetryIgnore" /> + <keyword match="vbYesNoCancel" /> + <keyword match="vbYesNo" /> + <keyword match="vbRetryCancel" /> + <keyword match="vbCritical" /> + <keyword match="vbQuestion" /> + <keyword match="vbExclamation" /> + <keyword match="vbInformation" /> + <keyword match="vbDefaultButton1" /> + <keyword match="vbDefaultButton2" /> + <keyword match="vbDefaultButton3" /> + <keyword match="vbDefaultButton4" /> + <keyword match="vbApplicationModal" /> + <keyword match="vbSystemModal" /> + <keyword match="vbOK" /> + <keyword match="vbCancel" /> + <keyword match="vbAbort" /> + <keyword match="vbRetry" /> + <keyword match="vbIgnore" /> + <keyword match="vbYes" /> + <keyword match="vbNo" /> + <!-- String Constants --> + <keyword match="vbCr" /> + <keyword match="VbCrLf" /> + <keyword match="vbFormFeed" /> + <keyword match="vbLf" /> + <keyword match="vbNewLine" /> + <keyword match="vbNullChar" /> + <keyword match="vbNullString" /> + <keyword match="vbTab" /> + <keyword match="vbVerticalTab" /> + <!-- Tristate Constants --> + <keyword match="vbUseDefault" /> + <keyword match="vbTrue" /> + <keyword match="vbFalse" /> + <!-- VarType Constants --> + <keyword match="vbEmpty" /> + <keyword match="vbNull" /> + <keyword match="vbInteger" /> + <keyword match="vbLong" /> + <keyword match="vbSingle" /> + <keyword match="vbDouble" /> + <keyword match="vbCurrency" /> + <keyword match="vbDate" /> + <keyword match="vbString" /> + <keyword match="vbObject" /> + <keyword match="vbError" /> + <keyword match="vbBoolean" /> + <keyword match="vbVariant" /> + <keyword match="vbDataObject" /> + <keyword match="vbDecimal" /> + <keyword match="vbByte" /> + <keyword match="vbArray" /> + </keywords> + + <keywords name="functions" inherits="identifier" innerClass="builtin" case="no"> + <keyword match="Abs" /> + <keyword match="Array" /> + <keyword match="Asc" /> + <keyword match="Atn" /> + <keyword match="CBool" /> + <keyword match="CByte" /> + <keyword match="CCur" /> + <keyword match="CDate" /> + <keyword match="CDbl" /> + <keyword match="Chr" /> + <keyword match="CInt" /> + <keyword match="CLng" /> + <keyword match="Cos" /> + <keyword match="CreateObject" /> + <keyword match="CSng" /> + <keyword match="CStr" /> + <keyword match="Date" /> + <keyword match="DateAdd" /> + <keyword match="DateDiff" /> + <keyword match="DatePart" /> + <keyword match="DateSerial" /> + <keyword match="DateValue" /> + <keyword match="Day" /> + <keyword match="Escape" /> + <keyword match="Eval" /> + <keyword match="Exp" /> + <keyword match="Filter" /> + <keyword match="FormatCurrency" /> + <keyword match="FormatDateTime" /> + <keyword match="FormatNumber" /> + <keyword match="FormatPercent" /> + <keyword match="GetLocale" /> + <keyword match="GetObject" /> + <keyword match="GetRef" /> + <keyword match="Hex" /> + <keyword match="Hour" /> + <keyword match="InputBox" /> + <keyword match="InStr" /> + <keyword match="InStrRev" /> + <keyword match="Int" /> + <keyword match="Fix" /> + <keyword match="IsArray" /> + <keyword match="IsDate" /> + <keyword match="IsEmpty" /> + <keyword match="IsNull" /> + <keyword match="IsNumeric" /> + <keyword match="IsObject" /> + <keyword match="Join" /> + <keyword match="LBound" /> + <keyword match="LCase" /> + <keyword match="Left" /> + <keyword match="Len" /> + <keyword match="LoadPicture" /> + <keyword match="Log" /> + <keyword match="LTrim" /> + <keyword match="RTrim" /> + <keyword match="Trim" /> + <keyword match="Mid" /> + <keyword match="Minute" /> + <keyword match="Month" /> + <keyword match="MonthName" /> + <keyword match="MsgBox" /> + <keyword match="Now" /> + <keyword match="Oct" /> + <keyword match="Replace" /> + <keyword match="RGB" /> + <keyword match="Right" /> + <keyword match="Rnd" /> + <keyword match="Round" /> + <keyword match="ScriptEngine" /> + <keyword match="ScriptEngineBuildVersion" /> + <keyword match="ScriptEngineMajorVersion" /> + <keyword match="ScriptEngineMinorVersion" /> + <keyword match="Second" /> + <keyword match="SetLocale" /> + <keyword match="Sgn" /> + <keyword match="Sin" /> + <keyword match="Space" /> + <keyword match="Split" /> + <keyword match="Sqr" /> + <keyword match="StrComp" /> + <keyword match="String" /> + <keyword match="StrReverse" /> + <keyword match="Tan" /> + <keyword match="Time" /> + <keyword match="Timer" /> + <keyword match="TimeSerial" /> + <keyword match="TimeValue" /> + <keyword match="TypeName" /> + <keyword match="UBound" /> + <keyword match="UCase" /> + <keyword match="Unescape" /> + <keyword match="VarType" /> + <keyword match="Weekday" /> + <keyword match="WeekdayName" /> + <keyword match="Year" /> + </keywords> + + <keywords name="builtin" inherits="identifier" innerClass="builtin" case="no"> + <!--<keyword match="Class" />--> + <keyword match="Debug" /> + <keyword match="Err" /> + <keyword match="Match" /> + <keyword match="RegExp" /> + </keywords> + + <keywords name="reserved" inherits="identifier" innerClass="reserved" case="no"> + <keyword match="Empty" /> + <keyword match="False" /> + <keyword match="Nothing" /> + <keyword match="Null" /> + <keyword match="True" /> + <keyword match="And" /> + <keyword match="Eqv" /> + <keyword match="Imp" /> + <keyword match="Is" /> + <keyword match="Mod" /> + <keyword match="Not" /> + <keyword match="Or" /> + <keyword match="Xor" /> + <keyword match="Call" /> + <keyword match="Class" /> + <keyword match="End" /> + <keyword match="Const" /> + <keyword match="Public" /> + <keyword match="Private" /> + <keyword match="Dim" /> + <keyword match="Do" /> + <keyword match="While" /> + <keyword match="Until" /> + <keyword match="Exit" /> + <keyword match="Loop" /> + <keyword match="Erase" /> + <keyword match="Execute" /> + <keyword match="ExecuteGlobal" /> + <keyword match="For" /> + <keyword match="Each" /> + <keyword match="In" /> + <keyword match="To" /> + <keyword match="Step" /> + <keyword match="Next" /> + <keyword match="Function" /> + <keyword match="Default" /> + <keyword match="If" /> + <keyword match="Then" /> + <keyword match="Else" /> + <keyword match="ElseIf" /> + <keyword match="On" /> + <keyword match="Error" /> + <keyword match="Resume" /> + <keyword match="Goto" /> + <keyword match="Option" /> + <keyword match="Explicit" /> + <keyword match="Property" /> + <keyword match="Get" /> + <keyword match="Let" /> + <keyword match="Set" /> + <keyword match="Randomize" /> + <keyword match="ReDim" /> + <keyword match="Preserve" /> + <keyword match="Select" /> + <keyword match="Case" /> + <keyword match="Stop" /> + <keyword match="Sub" /> + <keyword match="Wend" /> + <keyword match="With" /> + </keywords> + +</highlight> diff --git a/library/Text_Highlighter/xml.xml b/library/Text_Highlighter/xml.xml new file mode 100644 index 000000000..2271ff3ae --- /dev/null +++ b/library/Text_Highlighter/xml.xml @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<!-- $Id: xml.xml,v 1.1 2007-06-03 02:35:28 ssttoo Exp $ --> + +<highlight lang="xml" case="no"> + + <authors> + <author name="Andrey Demenev" email="demenev@gmail.com"/> + </authors> + + + <default innerClass="code" /> + + <region name="cdata" delimClass="comment" innerClass="comment" + start="\<\!\[CDATA\[" end="\]\]\>"> + </region> + + <region name="comment" delimClass="comment" innerClass="comment" + start="\<!--" end="--\>"> + </region> + + <region name="tag" delimClass="brackets" innerClass="code" start="\<[\?\/]?" end="[\/\?]?\>"> + <contains block="tagname"/> + <contains region="param"/> + <contains block="paramname"/> + </region> + + <block name="tagname" match="(?<=[\<\/?])[\w\-\:]+" innerClass="reserved" contained="yes"/> + + <block name="paramname" match="[\w\-\:]+" innerClass="var" contained="yes"/> + + <block name="entity" match="(&|%)[\w\-\.]+;" innerClass="special" /> + + <region name="param" start=""" end=""" delimClass="quotes" innerClass="string" contained="yes"> + <contains block="entity"/> + </region> + +</highlight> diff --git a/library/fullcalendar/CHANGELOG.txt b/library/fullcalendar/CHANGELOG.txt index d753163e3..32559a8ad 100644 --- a/library/fullcalendar/CHANGELOG.txt +++ b/library/fullcalendar/CHANGELOG.txt @@ -1,8 +1,51 @@ +v2.7.3 (2016-06-02) +------------------- + +internal enhancements that plugins can benefit from: +- EventEmitter not correctly working with stopListeningTo +- normalizeEvent hook for manipulating event data + + +v2.7.2 (2016-05-20) +------------------- + +- fixed desktops/laptops with touch support not accepting mouse events for + dayClick/dragging/resizing (#3154, #3149) +- fixed dayClick incorrectly triggered on touch scroll (#3152) +- fixed touch event dragging wrongfully beginning upon scrolling document (#3160) +- fixed minified JS still contained comments +- UI change: mouse users must hover over an event to reveal its resizers + + +v2.7.1 (2016-05-01) +------------------- + +- dayClick not firing on touch devices (#3138) +- icons for prev/next not working in MS Edge (#2852) +- fix bad languages troubles with firewalls (#3133, #3132) +- update all dev dependencies (#3145, #3010, #2901, #251) +- git-ignore npm debug logs (#3011) +- misc automated test updates (#3139, #3147) +- Google Calendar htmlLink not always defined (#2844) + + +v2.7.0 (2016-04-23) +------------------- + +touch device support (#994): + - smoother scrolling + - interactions initiated via "long press": + - event drag-n-drop + - event resize + - time-range selecting + - `longPressDelay` + + v2.6.1 (2016-02-17) ------------------- -- make nowIndicator positioning refresh on window resize +- make `nowIndicator` positioning refresh on window resize v2.6.0 (2016-01-07) diff --git a/library/fullcalendar/CONTRIBUTING.txt b/library/fullcalendar/CONTRIBUTING.txt index 0204d12c7..5c6dce4ac 100644 --- a/library/fullcalendar/CONTRIBUTING.txt +++ b/library/fullcalendar/CONTRIBUTING.txt @@ -41,7 +41,7 @@ Also, you will need the [grunt-cli][grunt-cli] and [bower][bower] packages insta Then, clone FullCalendar's git repo: - git clone git://github.com/arshaw/fullcalendar.git + git clone git://github.com/fullcalendar/fullcalendar.git Enter the directory and install FullCalendar's development dependencies: diff --git a/library/fullcalendar/fullcalendar.css b/library/fullcalendar/fullcalendar.css index b43d666ef..81e9c1ee2 100644 --- a/library/fullcalendar/fullcalendar.css +++ b/library/fullcalendar/fullcalendar.css @@ -1,7 +1,7 @@ /*! - * FullCalendar v2.6.1 Stylesheet + * FullCalendar v2.7.3 Stylesheet * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw + * (c) 2016 Adam Shaw */ @@ -28,6 +28,7 @@ body .fc { /* extra precedence to overcome jqui */ .fc-unthemed tbody, .fc-unthemed .fc-divider, .fc-unthemed .fc-row, +.fc-unthemed .fc-content, /* for gutter border */ .fc-unthemed .fc-popover { border-color: #ddd; } @@ -72,7 +73,6 @@ body .fc { /* extra precedence to overcome jqui */ .fc-icon { display: inline-block; - width: 1em; height: 1em; line-height: 1em; font-size: 1em; @@ -99,7 +99,6 @@ NOTE: use percentage font sizes or else old IE chokes .fc-icon:after { position: relative; - margin: 0 -1em; /* ensures character will be centered, regardless of width */ } .fc-icon-left-single-arrow:after { @@ -107,7 +106,6 @@ NOTE: use percentage font sizes or else old IE chokes font-weight: bold; font-size: 200%; top: -7%; - left: 3%; } .fc-icon-right-single-arrow:after { @@ -115,7 +113,6 @@ NOTE: use percentage font sizes or else old IE chokes font-weight: bold; font-size: 200%; top: -7%; - left: -3%; } .fc-icon-left-double-arrow:after { @@ -134,14 +131,12 @@ NOTE: use percentage font sizes or else old IE chokes content: "\25C4"; font-size: 125%; top: 3%; - left: -2%; } .fc-icon-right-triangle:after { content: "\25BA"; font-size: 125%; top: 3%; - left: 2%; } .fc-icon-down-triangle:after { @@ -491,15 +486,15 @@ temporary rendered events). /* Scrolling Container --------------------------------------------------------------------------------------------------*/ -.fc-scroller { /* this class goes on elements for guaranteed vertical scrollbars */ - overflow-y: scroll; - overflow-x: hidden; +.fc-scroller { + -webkit-overflow-scrolling: touch; } -.fc-scroller > * { /* we expect an immediate inner element */ +/* TODO: move to agenda/basic */ +.fc-scroller > .fc-day-grid, +.fc-scroller > .fc-time-grid { position: relative; /* re-scope all positions */ width: 100%; /* hack to force re-sizing this inner element when scrollbars appear/disappear */ - overflow: hidden; /* don't let negative margins or absolute positioning create further scroll */ } @@ -547,15 +542,68 @@ temporary rendered events). z-index: 2; } +/* resizer (cursor AND touch devices) */ + .fc-event .fc-resizer { position: absolute; - z-index: 3; + z-index: 4; +} + +/* resizer (touch devices) */ + +.fc-event .fc-resizer { + display: none; +} + +.fc-event.fc-allow-mouse-resize .fc-resizer, +.fc-event.fc-selected .fc-resizer { + /* only show when hovering or selected (with touch) */ + display: block; +} + +/* hit area */ + +.fc-event.fc-selected .fc-resizer:before { + /* 40x40 touch area */ + content: ""; + position: absolute; + z-index: 9999; /* user of this util can scope within a lower z-index */ + top: 50%; + left: 50%; + width: 40px; + height: 40px; + margin-left: -20px; + margin-top: -20px; +} + + +/* Event Selection (only for touch devices) +--------------------------------------------------------------------------------------------------*/ + +.fc-event.fc-selected { + z-index: 9999 !important; /* overcomes inline z-index */ + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); +} + +.fc-event.fc-selected.fc-dragging { + box-shadow: 0 2px 7px rgba(0, 0, 0, 0.3); } /* Horizontal Events --------------------------------------------------------------------------------------------------*/ +/* bigger touch area when selected */ +.fc-h-event.fc-selected:before { + content: ""; + position: absolute; + z-index: 3; /* below resizers */ + top: -10px; + bottom: -10px; + left: 0; + right: 0; +} + /* events that are continuing to/from another week. kill rounded corners and butt up against edge */ .fc-ltr .fc-h-event.fc-not-start, @@ -576,36 +624,56 @@ temporary rendered events). border-bottom-right-radius: 0; } -/* resizer */ - -.fc-h-event .fc-resizer { /* positioned it to overcome the event's borders */ - top: -1px; - bottom: -1px; - left: -1px; - right: -1px; - width: 5px; -} +/* resizer (cursor AND touch devices) */ /* left resizer */ .fc-ltr .fc-h-event .fc-start-resizer, -.fc-ltr .fc-h-event .fc-start-resizer:before, -.fc-ltr .fc-h-event .fc-start-resizer:after, -.fc-rtl .fc-h-event .fc-end-resizer, -.fc-rtl .fc-h-event .fc-end-resizer:before, -.fc-rtl .fc-h-event .fc-end-resizer:after { - right: auto; /* ignore the right and only use the left */ +.fc-rtl .fc-h-event .fc-end-resizer { cursor: w-resize; + left: -1px; /* overcome border */ } /* right resizer */ .fc-ltr .fc-h-event .fc-end-resizer, -.fc-ltr .fc-h-event .fc-end-resizer:before, -.fc-ltr .fc-h-event .fc-end-resizer:after, -.fc-rtl .fc-h-event .fc-start-resizer, -.fc-rtl .fc-h-event .fc-start-resizer:before, -.fc-rtl .fc-h-event .fc-start-resizer:after { - left: auto; /* ignore the left and only use the right */ +.fc-rtl .fc-h-event .fc-start-resizer { cursor: e-resize; + right: -1px; /* overcome border */ +} + +/* resizer (mouse devices) */ + +.fc-h-event.fc-allow-mouse-resize .fc-resizer { + width: 7px; + top: -1px; /* overcome top border */ + bottom: -1px; /* overcome bottom border */ +} + +/* resizer (touch devices) */ + +.fc-h-event.fc-selected .fc-resizer { + /* 8x8 little dot */ + border-radius: 4px; + border-width: 1px; + width: 6px; + height: 6px; + border-style: solid; + border-color: inherit; + background: #fff; + /* vertically center */ + top: 50%; + margin-top: -4px; +} + +/* left resizer */ +.fc-ltr .fc-h-event.fc-selected .fc-start-resizer, +.fc-rtl .fc-h-event.fc-selected .fc-end-resizer { + margin-left: -4px; /* centers the 8x8 dot on the left edge */ +} + +/* right resizer */ +.fc-ltr .fc-h-event.fc-selected .fc-end-resizer, +.fc-rtl .fc-h-event.fc-selected .fc-start-resizer { + margin-right: -4px; /* centers the 8x8 dot on the right edge */ } @@ -620,6 +688,20 @@ be a descendant of the grid when it is being dragged. padding: 0 1px; } +.fc-day-grid-event.fc-selected:after { + content: ""; + position: absolute; + z-index: 1; /* same z-index as fc-bg, behind text */ + /* overcome the borders */ + top: -1px; + right: -1px; + bottom: -1px; + left: -1px; + /* darkening effect */ + background: #000; + opacity: .25; + filter: alpha(opacity=25); /* for IE */ +} .fc-day-grid-event .fc-content { /* force events to be one-line tall */ white-space: nowrap; @@ -630,10 +712,18 @@ be a descendant of the grid when it is being dragged. font-weight: bold; } -.fc-day-grid-event .fc-resizer { /* enlarge the default hit area */ - left: -3px; - right: -3px; - width: 7px; +/* resizer (cursor devices) */ + +/* left resizer */ +.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer, +.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer { + margin-left: -2px; /* to the day cell's edge */ +} + +/* right resizer */ +.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer, +.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer { + margin-right: -2px; /* to the day cell's edge */ } @@ -681,6 +771,20 @@ a.fc-more:hover { border: 0 solid red; } + +/* Utilities +--------------------------------------------------------------------------------------------------*/ + +.fc-unselectable { + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + /* Toolbar --------------------------------------------------------------------------------------------------*/ @@ -1031,6 +1135,20 @@ be a descendant of the grid when it is being dragged. overflow: hidden; /* don't let the bg flow over rounded corners */ } +.fc-time-grid-event.fc-selected { + /* need to allow touch resizers to extend outside event's bounding box */ + /* common fc-selected styles hide the fc-bg, so don't need this anyway */ + overflow: visible; +} + +.fc-time-grid-event.fc-selected .fc-bg { + display: none; /* hide semi-white background, to appear darker */ +} + +.fc-time-grid-event .fc-content { + overflow: hidden; /* for when .fc-selected */ +} + .fc-time-grid-event .fc-time, .fc-time-grid-event .fc-title { padding: 0 1px; @@ -1072,9 +1190,9 @@ be a descendant of the grid when it is being dragged. padding: 0; /* undo padding from above */ } -/* resizer */ +/* resizer (cursor device) */ -.fc-time-grid-event .fc-resizer { +.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer { left: 0; right: 0; bottom: 0; @@ -1087,10 +1205,28 @@ be a descendant of the grid when it is being dragged. cursor: s-resize; } -.fc-time-grid-event .fc-resizer:after { +.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after { content: "="; } +/* resizer (touch device) */ + +.fc-time-grid-event.fc-selected .fc-resizer { + /* 10x10 dot */ + border-radius: 5px; + border-width: 1px; + width: 8px; + height: 8px; + border-style: solid; + border-color: inherit; + background: #fff; + /* horizontally center */ + left: 50%; + margin-left: -5px; + /* center on the bottom edge */ + bottom: -5px; +} + /* Now Indicator --------------------------------------------------------------------------------------------------*/ diff --git a/library/fullcalendar/fullcalendar.js b/library/fullcalendar/fullcalendar.js index d6042cc17..cbe67697d 100644 --- a/library/fullcalendar/fullcalendar.js +++ b/library/fullcalendar/fullcalendar.js @@ -1,7 +1,7 @@ /*! - * FullCalendar v2.6.1 + * FullCalendar v2.7.3 * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw + * (c) 2016 Adam Shaw */ (function(factory) { @@ -19,8 +19,8 @@ ;; var FC = $.fullCalendar = { - version: "2.6.1", - internalApiVersion: 3 + version: "2.7.3", + internalApiVersion: 4 }; var fcViews = FC.views = {}; @@ -262,29 +262,25 @@ function matchCellWidths(els) { } -// Turns a container element into a scroller if its contents is taller than the allotted height. -// Returns true if the element is now a scroller, false otherwise. -// NOTE: this method is best because it takes weird zooming dimensions into account -function setPotentialScroller(containerEl, height) { - containerEl.height(height).addClass('fc-scroller'); - - // are scrollbars needed? - if (containerEl[0].scrollHeight - 1 > containerEl[0].clientHeight) { // !!! -1 because IE is often off-by-one :( - return true; - } - - unsetScroller(containerEl); // undo - return false; -} +// Given one element that resides inside another, +// Subtracts the height of the inner element from the outer element. +function subtractInnerElHeight(outerEl, innerEl) { + var both = outerEl.add(innerEl); + var diff; + // effin' IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked + both.css({ + position: 'relative', // cause a reflow, which will force fresh dimension recalculation + left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll + }); + diff = outerEl.outerHeight() - innerEl.outerHeight(); // grab the dimensions + both.css({ position: '', left: '' }); // undo hack -// Takes an element that might have been a scroller, and turns it back into a normal element. -function unsetScroller(containerEl) { - containerEl.height('').removeClass('fc-scroller'); + return diff; } -/* General DOM Utilities +/* Element Geom Utilities ----------------------------------------------------------------------------------------------------------------------*/ FC.getOuterRect = getOuterRect; @@ -309,26 +305,30 @@ function getScrollParent(el) { // Queries the outer bounding area of a jQuery element. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). -function getOuterRect(el) { +// Origin is optional. +function getOuterRect(el, origin) { var offset = el.offset(); + var left = offset.left - (origin ? origin.left : 0); + var top = offset.top - (origin ? origin.top : 0); return { - left: offset.left, - right: offset.left + el.outerWidth(), - top: offset.top, - bottom: offset.top + el.outerHeight() + left: left, + right: left + el.outerWidth(), + top: top, + bottom: top + el.outerHeight() }; } // Queries the area within the margin/border/scrollbars of a jQuery element. Does not go within the padding. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). +// Origin is optional. // NOTE: should use clientLeft/clientTop, but very unreliable cross-browser. -function getClientRect(el) { +function getClientRect(el, origin) { var offset = el.offset(); var scrollbarWidths = getScrollbarWidths(el); - var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left; - var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top; + var left = offset.left + getCssFloat(el, 'border-left-width') + scrollbarWidths.left - (origin ? origin.left : 0); + var top = offset.top + getCssFloat(el, 'border-top-width') + scrollbarWidths.top - (origin ? origin.top : 0); return { left: left, @@ -341,10 +341,13 @@ function getClientRect(el) { // Queries the area within the margin/border/padding of a jQuery element. Assumed not to have scrollbars. // Returns a rectangle with absolute coordinates: left, right (exclusive), top, bottom (exclusive). -function getContentRect(el) { +// Origin is optional. +function getContentRect(el, origin) { var offset = el.offset(); // just outside of border, margin not included - var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left'); - var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top'); + var left = offset.left + getCssFloat(el, 'border-left-width') + getCssFloat(el, 'padding-left') - + (origin ? origin.left : 0); + var top = offset.top + getCssFloat(el, 'border-top-width') + getCssFloat(el, 'padding-top') - + (origin ? origin.top : 0); return { left: left, @@ -414,13 +417,82 @@ function getCssFloat(el, prop) { } +/* Mouse / Touch Utilities +----------------------------------------------------------------------------------------------------------------------*/ + +FC.preventDefault = preventDefault; + + // Returns a boolean whether this was a left mouse click and no ctrl key (which means right click on Mac) function isPrimaryMouseButton(ev) { return ev.which == 1 && !ev.ctrlKey; } -/* Geometry +function getEvX(ev) { + if (ev.pageX !== undefined) { + return ev.pageX; + } + var touches = ev.originalEvent.touches; + if (touches) { + return touches[0].pageX; + } +} + + +function getEvY(ev) { + if (ev.pageY !== undefined) { + return ev.pageY; + } + var touches = ev.originalEvent.touches; + if (touches) { + return touches[0].pageY; + } +} + + +function getEvIsTouch(ev) { + return /^touch/.test(ev.type); +} + + +function preventSelection(el) { + el.addClass('fc-unselectable') + .on('selectstart', preventDefault); +} + + +// Stops a mouse/touch event from doing it's native browser action +function preventDefault(ev) { + ev.preventDefault(); +} + + +// attach a handler to get called when ANY scroll action happens on the page. +// this was impossible to do with normal on/off because 'scroll' doesn't bubble. +// http://stackoverflow.com/a/32954565/96342 +// returns `true` on success. +function bindAnyScroll(handler) { + if (window.addEventListener) { + window.addEventListener('scroll', handler, true); // useCapture=true + return true; + } + return false; +} + + +// undoes bindAnyScroll. must pass in the original function. +// returns `true` on success. +function unbindAnyScroll(handler) { + if (window.removeEventListener) { + window.removeEventListener('scroll', handler, true); // useCapture=true + return true; + } + return false; +} + + +/* General Geometry Utils ----------------------------------------------------------------------------------------------------------------------*/ FC.intersectRects = intersectRects; @@ -946,22 +1018,21 @@ function proxy(obj, methodName) { // Returns a function, that, as long as it continues to be invoked, will not // be triggered. The function will be called after it stops being called for -// N milliseconds. +// N milliseconds. If `immediate` is passed, trigger the function on the +// leading edge, instead of the trailing. // https://github.com/jashkenas/underscore/blob/1.6.0/underscore.js#L714 -function debounce(func, wait) { - var timeoutId; - var args; - var context; - var timestamp; // of most recent call +function debounce(func, wait, immediate) { + var timeout, args, context, timestamp, result; + var later = function() { var last = +new Date() - timestamp; - if (last < wait && last > 0) { - timeoutId = setTimeout(later, wait - last); + if (last < wait) { + timeout = setTimeout(later, wait - last); } else { - timeoutId = null; - func.apply(context, args); - if (!timeoutId) { + timeout = null; + if (!immediate) { + result = func.apply(context, args); context = args = null; } } @@ -971,9 +1042,15 @@ function debounce(func, wait) { context = this; args = arguments; timestamp = +new Date(); - if (!timeoutId) { - timeoutId = setTimeout(later, wait); + var callNow = immediate && !timeout; + if (!timeout) { + timeout = setTimeout(later, wait); + } + if (callNow) { + result = func.apply(context, args); + context = args = null; } + return result; }; } @@ -1777,61 +1854,162 @@ function extendClass(superClass, members) { function mixIntoClass(theClass, members) { - copyOwnProps(members.prototype || members, theClass.prototype); // TODO: copyNativeMethods? + copyOwnProps(members, theClass.prototype); // TODO: copyNativeMethods? } ;; -var Emitter = FC.Emitter = Class.extend({ +var EmitterMixin = FC.EmitterMixin = { + + // jQuery-ification via $(this) allows a non-DOM object to have + // the same event handling capabilities (including namespaces). + + + on: function(types, handler) { - callbackHash: null, + // handlers are always called with an "event" object as their first param. + // sneak the `this` context and arguments into the extra parameter object + // and forward them on to the original handler. + var intercept = function(ev, extra) { + return handler.apply( + extra.context || this, + extra.args || [] + ); + }; + + // mimick jQuery's internal "proxy" system (risky, I know) + // causing all functions with the same .guid to appear to be the same. + // https://github.com/jquery/jquery/blob/2.2.4/src/core.js#L448 + // this is needed for calling .off with the original non-intercept handler. + if (!handler.guid) { + handler.guid = $.guid++; + } + intercept.guid = handler.guid; + $(this).on(types, intercept); - on: function(name, callback) { - this.getCallbacks(name).add(callback); return this; // for chaining }, - off: function(name, callback) { - this.getCallbacks(name).remove(callback); + off: function(types, handler) { + $(this).off(types, handler); + return this; // for chaining }, - trigger: function(name) { // args... - var args = Array.prototype.slice.call(arguments, 1); + trigger: function(types) { + var args = Array.prototype.slice.call(arguments, 1); // arguments after the first - this.triggerWith(name, this, args); + // pass in "extra" info to the intercept + $(this).triggerHandler(types, { args: args }); return this; // for chaining }, - triggerWith: function(name, context, args) { - var callbacks = this.getCallbacks(name); + triggerWith: function(types, context, args) { - callbacks.fireWith(context, args); + // `triggerHandler` is less reliant on the DOM compared to `trigger`. + // pass in "extra" info to the intercept. + $(this).triggerHandler(types, { context: context, args: args }); return this; // for chaining - }, + } +}; - getCallbacks: function(name) { - var callbacks; +;; - if (!this.callbackHash) { - this.callbackHash = {}; - } +/* +Utility methods for easily listening to events on another object, +and more importantly, easily unlistening from them. +*/ +var ListenerMixin = FC.ListenerMixin = (function() { + var guid = 0; + var ListenerMixin = { + + listenerId: null, + + /* + Given an `other` object that has on/off methods, bind the given `callback` to an event by the given name. + The `callback` will be called with the `this` context of the object that .listenTo is being called on. + Can be called: + .listenTo(other, eventName, callback) + OR + .listenTo(other, { + eventName1: callback1, + eventName2: callback2 + }) + */ + listenTo: function(other, arg, callback) { + if (typeof arg === 'object') { // given dictionary of callbacks + for (var eventName in arg) { + if (arg.hasOwnProperty(eventName)) { + this.listenTo(other, eventName, arg[eventName]); + } + } + } + else if (typeof arg === 'string') { + other.on( + arg + '.' + this.getListenerNamespace(), // use event namespacing to identify this object + $.proxy(callback, this) // always use `this` context + // the usually-undesired jQuery guid behavior doesn't matter, + // because we always unbind via namespace + ); + } + }, + + /* + Causes the current object to stop listening to events on the `other` object. + `eventName` is optional. If omitted, will stop listening to ALL events on `other`. + */ + stopListeningTo: function(other, eventName) { + other.off((eventName || '') + '.' + this.getListenerNamespace()); + }, - callbacks = this.callbackHash[name]; - if (!callbacks) { - callbacks = this.callbackHash[name] = $.Callbacks(); + /* + Returns a string, unique to this object, to be used for event namespacing + */ + getListenerNamespace: function() { + if (this.listenerId == null) { + this.listenerId = guid++; + } + return '_listener' + this.listenerId; } - return callbacks; + }; + return ListenerMixin; +})(); +;; + +// simple class for toggle a `isIgnoringMouse` flag on delay +// initMouseIgnoring must first be called, with a millisecond delay setting. +var MouseIgnorerMixin = { + + isIgnoringMouse: false, // bool + delayUnignoreMouse: null, // method + + + initMouseIgnoring: function(delay) { + this.delayUnignoreMouse = debounce(proxy(this, 'unignoreMouse'), delay || 1000); + }, + + + // temporarily ignore mouse actions on segments + tempIgnoreMouse: function() { + this.isIgnoringMouse = true; + this.delayUnignoreMouse(); + }, + + + // delayUnignoreMouse eventually calls this + unignoreMouse: function() { + this.isIgnoringMouse = false; } -}); +}; + ;; /* A rectangular panel that is absolutely positioned over other content @@ -1848,12 +2026,11 @@ Options: - hide (callback) */ -var Popover = Class.extend({ +var Popover = Class.extend(ListenerMixin, { isHidden: true, options: null, el: null, // the container element for the popover. generated by this object - documentMousedownProxy: null, // document mousedown handler bound to `this` margin: 10, // the space required between the popover and the edges of the scroll container @@ -1907,7 +2084,7 @@ var Popover = Class.extend({ }); if (options.autoHide) { - $(document).on('mousedown', this.documentMousedownProxy = proxy(this, 'documentMousedown')); + this.listenTo($(document), 'mousedown', this.documentMousedown); } }, @@ -1930,7 +2107,7 @@ var Popover = Class.extend({ this.el = null; } - $(document).off('mousedown', this.documentMousedownProxy); + this.stopListeningTo($(document), 'mousedown'); }, @@ -2243,257 +2420,421 @@ var CoordCache = FC.CoordCache = Class.extend({ ----------------------------------------------------------------------------------------------------------------------*/ // TODO: use Emitter -var DragListener = FC.DragListener = Class.extend({ +var DragListener = FC.DragListener = Class.extend(ListenerMixin, MouseIgnorerMixin, { options: null, - isListening: false, - isDragging: false, + // for IE8 bug-fighting behavior + subjectEl: null, + subjectHref: null, // coordinates of the initial mousedown originX: null, originY: null, - // handler attached to the document, bound to the DragListener's `this` - mousemoveProxy: null, - mouseupProxy: null, + // the wrapping element that scrolls, or MIGHT scroll if there's overflow. + // TODO: do this for wrappers that have overflow:hidden as well. + scrollEl: null, - // for IE8 bug-fighting behavior, for now - subjectEl: null, // the element being draged. optional - subjectHref: null, + isInteracting: false, + isDistanceSurpassed: false, + isDelayEnded: false, + isDragging: false, + isTouch: false, - scrollEl: null, - scrollBounds: null, // { top, bottom, left, right } - scrollTopVel: null, // pixels per second - scrollLeftVel: null, // pixels per second - scrollIntervalId: null, // ID of setTimeout for scrolling animation loop - scrollHandlerProxy: null, // this-scoped function for handling when scrollEl is scrolled + delay: null, + delayTimeoutId: null, + minDistance: null, - scrollSensitivity: 30, // pixels from edge for scrolling to start - scrollSpeed: 200, // pixels per second, at maximum speed - scrollIntervalMs: 50, // millisecond wait between scroll increment + handleTouchScrollProxy: null, // calls handleTouchScroll, always bound to `this` constructor: function(options) { - options = options || {}; - this.options = options; - this.subjectEl = options.subjectEl; + this.options = options || {}; + this.handleTouchScrollProxy = proxy(this, 'handleTouchScroll'); + this.initMouseIgnoring(500); }, - // Call this when the user does a mousedown. Will probably lead to startListening - mousedown: function(ev) { - if (isPrimaryMouseButton(ev)) { + // Interaction (high-level) + // ----------------------------------------------------------------------------------------------------------------- + + + startInteraction: function(ev, extraOptions) { + var isTouch = getEvIsTouch(ev); + + if (ev.type === 'mousedown') { + if (this.isIgnoringMouse) { + return; + } + else if (!isPrimaryMouseButton(ev)) { + return; + } + else { + ev.preventDefault(); // prevents native selection in most browsers + } + } + + if (!this.isInteracting) { + + // process options + extraOptions = extraOptions || {}; + this.delay = firstDefined(extraOptions.delay, this.options.delay, 0); + this.minDistance = firstDefined(extraOptions.distance, this.options.distance, 0); + this.subjectEl = this.options.subjectEl; + + this.isInteracting = true; + this.isTouch = isTouch; + this.isDelayEnded = false; + this.isDistanceSurpassed = false; - ev.preventDefault(); // prevents native selection in most browsers + this.originX = getEvX(ev); + this.originY = getEvY(ev); + this.scrollEl = getScrollParent($(ev.target)); - this.startListening(ev); + this.bindHandlers(); + this.initAutoScroll(); + this.handleInteractionStart(ev); + this.startDelay(ev); - // start the drag immediately if there is no minimum distance for a drag start - if (!this.options.distance) { - this.startDrag(ev); + if (!this.minDistance) { + this.handleDistanceSurpassed(ev); } } }, - // Call this to start tracking mouse movements - startListening: function(ev) { - var scrollParent; + handleInteractionStart: function(ev) { + this.trigger('interactionStart', ev); + }, - if (!this.isListening) { - // grab scroll container and attach handler - if (ev && this.options.scroll) { - scrollParent = getScrollParent($(ev.target)); - if (!scrollParent.is(window) && !scrollParent.is(document)) { - this.scrollEl = scrollParent; + endInteraction: function(ev, isCancelled) { + if (this.isInteracting) { + this.endDrag(ev); - // scope to `this`, and use `debounce` to make sure rapid calls don't happen - this.scrollHandlerProxy = debounce(proxy(this, 'scrollHandler'), 100); - this.scrollEl.on('scroll', this.scrollHandlerProxy); - } + if (this.delayTimeoutId) { + clearTimeout(this.delayTimeoutId); + this.delayTimeoutId = null; } - $(document) - .on('mousemove', this.mousemoveProxy = proxy(this, 'mousemove')) - .on('mouseup', this.mouseupProxy = proxy(this, 'mouseup')) - .on('selectstart', this.preventDefault); // prevents native selection in IE<=8 + this.destroyAutoScroll(); + this.unbindHandlers(); + + this.isInteracting = false; + this.handleInteractionEnd(ev, isCancelled); - if (ev) { - this.originX = ev.pageX; - this.originY = ev.pageY; + // a touchstart+touchend on the same element will result in the following addition simulated events: + // mouseover + mouseout + click + // let's ignore these bogus events + if (this.isTouch) { + this.tempIgnoreMouse(); } - else { - // if no starting information was given, origin will be the topleft corner of the screen. - // if so, dx/dy in the future will be the absolute coordinates. - this.originX = 0; - this.originY = 0; + } + }, + + + handleInteractionEnd: function(ev, isCancelled) { + this.trigger('interactionEnd', ev, isCancelled || false); + }, + + + // Binding To DOM + // ----------------------------------------------------------------------------------------------------------------- + + + bindHandlers: function() { + var _this = this; + var touchStartIgnores = 1; + + if (this.isTouch) { + this.listenTo($(document), { + touchmove: this.handleTouchMove, + touchend: this.endInteraction, + touchcancel: this.endInteraction, + + // Sometimes touchend doesn't fire + // (can't figure out why. touchcancel doesn't fire either. has to do with scrolling?) + // If another touchstart happens, we know it's bogus, so cancel the drag. + // touchend will continue to be broken until user does a shorttap/scroll, but this is best we can do. + touchstart: function(ev) { + if (touchStartIgnores) { // bindHandlers is called from within a touchstart, + touchStartIgnores--; // and we don't want this to fire immediately, so ignore. + } + else { + _this.endInteraction(ev, true); // isCancelled=true + } + } + }); + + // listen to ALL scroll actions on the page + if ( + !bindAnyScroll(this.handleTouchScrollProxy) && // hopefully this works and short-circuits the rest + this.scrollEl // otherwise, attach a single handler to this + ) { + this.listenTo(this.scrollEl, 'scroll', this.handleTouchScroll); } + } + else { + this.listenTo($(document), { + mousemove: this.handleMouseMove, + mouseup: this.endInteraction + }); + } - this.isListening = true; - this.listenStart(ev); + this.listenTo($(document), { + selectstart: preventDefault, // don't allow selection while dragging + contextmenu: preventDefault // long taps would open menu on Chrome dev tools + }); + }, + + + unbindHandlers: function() { + this.stopListeningTo($(document)); + + // unbind scroll listening + unbindAnyScroll(this.handleTouchScrollProxy); + if (this.scrollEl) { + this.stopListeningTo(this.scrollEl, 'scroll'); + } + }, + + + // Drag (high-level) + // ----------------------------------------------------------------------------------------------------------------- + + + // extraOptions ignored if drag already started + startDrag: function(ev, extraOptions) { + this.startInteraction(ev, extraOptions); // ensure interaction began + + if (!this.isDragging) { + this.isDragging = true; + this.handleDragStart(ev); } }, - // Called when drag listening has started (but a real drag has not necessarily began) - listenStart: function(ev) { - this.trigger('listenStart', ev); + handleDragStart: function(ev) { + this.trigger('dragStart', ev); + this.initHrefHack(); }, - // Called when the user moves the mouse - mousemove: function(ev) { - var dx = ev.pageX - this.originX; - var dy = ev.pageY - this.originY; - var minDistance; + handleMove: function(ev) { + var dx = getEvX(ev) - this.originX; + var dy = getEvY(ev) - this.originY; + var minDistance = this.minDistance; var distanceSq; // current distance from the origin, squared - if (!this.isDragging) { // if not already dragging... - // then start the drag if the minimum distance criteria is met - minDistance = this.options.distance || 1; + if (!this.isDistanceSurpassed) { distanceSq = dx * dx + dy * dy; if (distanceSq >= minDistance * minDistance) { // use pythagorean theorem - this.startDrag(ev); + this.handleDistanceSurpassed(ev); } } if (this.isDragging) { - this.drag(dx, dy, ev); // report a drag, even if this mousemove initiated the drag + this.handleDrag(dx, dy, ev); } }, - // Call this to initiate a legitimate drag. - // This function is called internally from this class, but can also be called explicitly from outside - startDrag: function(ev) { + // Called while the mouse is being moved and when we know a legitimate drag is taking place + handleDrag: function(dx, dy, ev) { + this.trigger('drag', dx, dy, ev); + this.updateAutoScroll(ev); // will possibly cause scrolling + }, - if (!this.isListening) { // startDrag must have manually initiated - this.startListening(); - } - if (!this.isDragging) { - this.isDragging = true; - this.dragStart(ev); + endDrag: function(ev) { + if (this.isDragging) { + this.isDragging = false; + this.handleDragEnd(ev); } }, - // Called when the actual drag has started (went beyond minDistance) - dragStart: function(ev) { - var subjectEl = this.subjectEl; + handleDragEnd: function(ev) { + this.trigger('dragEnd', ev); + this.destroyHrefHack(); + }, - this.trigger('dragStart', ev); - // remove a mousedown'd <a>'s href so it is not visited (IE8 bug) - if ((this.subjectHref = subjectEl ? subjectEl.attr('href') : null)) { - subjectEl.removeAttr('href'); + // Delay + // ----------------------------------------------------------------------------------------------------------------- + + + startDelay: function(initialEv) { + var _this = this; + + if (this.delay) { + this.delayTimeoutId = setTimeout(function() { + _this.handleDelayEnd(initialEv); + }, this.delay); + } + else { + this.handleDelayEnd(initialEv); } }, - // Called while the mouse is being moved and when we know a legitimate drag is taking place - drag: function(dx, dy, ev) { - this.trigger('drag', dx, dy, ev); - this.updateScroll(ev); // will possibly cause scrolling + handleDelayEnd: function(initialEv) { + this.isDelayEnded = true; + + if (this.isDistanceSurpassed) { + this.startDrag(initialEv); + } }, - // Called when the user does a mouseup - mouseup: function(ev) { - this.stopListening(ev); + // Distance + // ----------------------------------------------------------------------------------------------------------------- + + + handleDistanceSurpassed: function(ev) { + this.isDistanceSurpassed = true; + + if (this.isDelayEnded) { + this.startDrag(ev); + } }, - // Called when the drag is over. Will not cause listening to stop however. - // A concluding 'cellOut' event will NOT be triggered. - stopDrag: function(ev) { + // Mouse / Touch + // ----------------------------------------------------------------------------------------------------------------- + + + handleTouchMove: function(ev) { + // prevent inertia and touchmove-scrolling while dragging if (this.isDragging) { - this.stopScrolling(); - this.dragStop(ev); - this.isDragging = false; + ev.preventDefault(); } + + this.handleMove(ev); }, - // Called when dragging has been stopped - dragStop: function(ev) { - var _this = this; + handleMouseMove: function(ev) { + this.handleMove(ev); + }, - this.trigger('dragStop', ev); - // restore a mousedown'd <a>'s href (for IE8 bug) - setTimeout(function() { // must be outside of the click's execution - if (_this.subjectHref) { - _this.subjectEl.attr('href', _this.subjectHref); - } - }, 0); - }, + // Scrolling (unrelated to auto-scroll) + // ----------------------------------------------------------------------------------------------------------------- - // Call this to stop listening to the user's mouse events - stopListening: function(ev) { - this.stopDrag(ev); // if there's a current drag, kill it + handleTouchScroll: function(ev) { + // if the drag is being initiated by touch, but a scroll happens before + // the drag-initiating delay is over, cancel the drag + if (!this.isDragging) { + this.endInteraction(ev, true); // isCancelled=true + } + }, - if (this.isListening) { - // remove the scroll handler if there is a scrollEl - if (this.scrollEl) { - this.scrollEl.off('scroll', this.scrollHandlerProxy); - this.scrollHandlerProxy = null; - } + // <A> HREF Hack + // ----------------------------------------------------------------------------------------------------------------- - $(document) - .off('mousemove', this.mousemoveProxy) - .off('mouseup', this.mouseupProxy) - .off('selectstart', this.preventDefault); - this.mousemoveProxy = null; - this.mouseupProxy = null; + initHrefHack: function() { + var subjectEl = this.subjectEl; - this.isListening = false; - this.listenStop(ev); + // remove a mousedown'd <a>'s href so it is not visited (IE8 bug) + if ((this.subjectHref = subjectEl ? subjectEl.attr('href') : null)) { + subjectEl.removeAttr('href'); } }, - // Called when drag listening has stopped - listenStop: function(ev) { - this.trigger('listenStop', ev); + destroyHrefHack: function() { + var subjectEl = this.subjectEl; + var subjectHref = this.subjectHref; + + // restore a mousedown'd <a>'s href (for IE8 bug) + setTimeout(function() { // must be outside of the click's execution + if (subjectHref) { + subjectEl.attr('href', subjectHref); + } + }, 0); }, + // Utils + // ----------------------------------------------------------------------------------------------------------------- + + // Triggers a callback. Calls a function in the option hash of the same name. // Arguments beyond the first `name` are forwarded on. trigger: function(name) { if (this.options[name]) { this.options[name].apply(this, Array.prototype.slice.call(arguments, 1)); } - }, + // makes _methods callable by event name. TODO: kill this + if (this['_' + name]) { + this['_' + name].apply(this, Array.prototype.slice.call(arguments, 1)); + } + } + + +}); + +;; +/* +this.scrollEl is set in DragListener +*/ +DragListener.mixin({ + isAutoScroll: false, - // Stops a given mouse event from doing it's native browser action. In our case, text selection. - preventDefault: function(ev) { - ev.preventDefault(); + scrollBounds: null, // { top, bottom, left, right } + scrollTopVel: null, // pixels per second + scrollLeftVel: null, // pixels per second + scrollIntervalId: null, // ID of setTimeout for scrolling animation loop + + // defaults + scrollSensitivity: 30, // pixels from edge for scrolling to start + scrollSpeed: 200, // pixels per second, at maximum speed + scrollIntervalMs: 50, // millisecond wait between scroll increment + + + initAutoScroll: function() { + var scrollEl = this.scrollEl; + + this.isAutoScroll = + this.options.scroll && + scrollEl && + !scrollEl.is(window) && + !scrollEl.is(document); + + if (this.isAutoScroll) { + // debounce makes sure rapid calls don't happen + this.listenTo(scrollEl, 'scroll', debounce(this.handleDebouncedScroll, 100)); + } }, - /* Scrolling - ------------------------------------------------------------------------------------------------------------------*/ + destroyAutoScroll: function() { + this.endAutoScroll(); // kill any animation loop + + // remove the scroll handler if there is a scrollEl + if (this.isAutoScroll) { + this.stopListeningTo(this.scrollEl, 'scroll'); // will probably get removed by unbindHandlers too :( + } + }, // Computes and stores the bounding rectangle of scrollEl computeScrollBounds: function() { - var el = this.scrollEl; - - this.scrollBounds = el ? getOuterRect(el) : null; + if (this.isAutoScroll) { + this.scrollBounds = getOuterRect(this.scrollEl); // TODO: use getClientRect in future. but prevents auto scrolling when on top of scrollbars + } }, // Called when the dragging is in progress and scrolling should be updated - updateScroll: function(ev) { + updateAutoScroll: function(ev) { var sensitivity = this.scrollSensitivity; var bounds = this.scrollBounds; var topCloseness, bottomCloseness; @@ -2504,10 +2845,10 @@ var DragListener = FC.DragListener = Class.extend({ if (bounds) { // only scroll if scrollEl exists // compute closeness to edges. valid range is from 0.0 - 1.0 - topCloseness = (sensitivity - (ev.pageY - bounds.top)) / sensitivity; - bottomCloseness = (sensitivity - (bounds.bottom - ev.pageY)) / sensitivity; - leftCloseness = (sensitivity - (ev.pageX - bounds.left)) / sensitivity; - rightCloseness = (sensitivity - (bounds.right - ev.pageX)) / sensitivity; + topCloseness = (sensitivity - (getEvY(ev) - bounds.top)) / sensitivity; + bottomCloseness = (sensitivity - (bounds.bottom - getEvY(ev))) / sensitivity; + leftCloseness = (sensitivity - (getEvX(ev) - bounds.left)) / sensitivity; + rightCloseness = (sensitivity - (bounds.right - getEvX(ev))) / sensitivity; // translate vertical closeness into velocity. // mouse must be completely in bounds for velocity to happen. @@ -2594,38 +2935,36 @@ var DragListener = FC.DragListener = Class.extend({ // if scrolled all the way, which causes the vels to be zero, stop the animation loop if (!this.scrollTopVel && !this.scrollLeftVel) { - this.stopScrolling(); + this.endAutoScroll(); } }, // Kills any existing scrolling animation loop - stopScrolling: function() { + endAutoScroll: function() { if (this.scrollIntervalId) { clearInterval(this.scrollIntervalId); this.scrollIntervalId = null; - // when all done with scrolling, recompute positions since they probably changed - this.scrollStop(); + this.handleScrollEnd(); } }, // Get called when the scrollEl is scrolled (NOTE: this is delayed via debounce) - scrollHandler: function() { + handleDebouncedScroll: function() { // recompute all coordinates, but *only* if this is *not* part of our scrolling animation if (!this.scrollIntervalId) { - this.scrollStop(); + this.handleScrollEnd(); } }, // Called when scrolling has stopped, whether through auto scroll, or the user scrolling - scrollStop: function() { + handleScrollEnd: function() { } }); - ;; /* Tracks mouse movements over a component and raises events about which hit the mouse is over. @@ -2654,18 +2993,16 @@ var HitDragListener = DragListener.extend({ // Called when drag listening starts (but a real drag has not necessarily began). // ev might be undefined if dragging was started manually. - listenStart: function(ev) { + handleInteractionStart: function(ev) { var subjectEl = this.subjectEl; var subjectRect; var origPoint; var point; - DragListener.prototype.listenStart.apply(this, arguments); // call the super-method - this.computeCoords(); if (ev) { - origPoint = { left: ev.pageX, top: ev.pageY }; + origPoint = { left: getEvX(ev), top: getEvY(ev) }; point = origPoint; // constrain the point to bounds of the element being dragged @@ -2695,61 +3032,64 @@ var HitDragListener = DragListener.extend({ this.origHit = null; this.coordAdjust = null; } + + // call the super-method. do it after origHit has been computed + DragListener.prototype.handleInteractionStart.apply(this, arguments); }, // Recomputes the drag-critical positions of elements computeCoords: function() { this.component.prepareHits(); - this.computeScrollBounds(); // why is this here??? + this.computeScrollBounds(); // why is this here?????? }, // Called when the actual drag has started - dragStart: function(ev) { + handleDragStart: function(ev) { var hit; - DragListener.prototype.dragStart.apply(this, arguments); // call the super-method + DragListener.prototype.handleDragStart.apply(this, arguments); // call the super-method // might be different from this.origHit if the min-distance is large - hit = this.queryHit(ev.pageX, ev.pageY); + hit = this.queryHit(getEvX(ev), getEvY(ev)); // report the initial hit the mouse is over // especially important if no min-distance and drag starts immediately if (hit) { - this.hitOver(hit); + this.handleHitOver(hit); } }, // Called when the drag moves - drag: function(dx, dy, ev) { + handleDrag: function(dx, dy, ev) { var hit; - DragListener.prototype.drag.apply(this, arguments); // call the super-method + DragListener.prototype.handleDrag.apply(this, arguments); // call the super-method - hit = this.queryHit(ev.pageX, ev.pageY); + hit = this.queryHit(getEvX(ev), getEvY(ev)); if (!isHitsEqual(hit, this.hit)) { // a different hit than before? if (this.hit) { - this.hitOut(); + this.handleHitOut(); } if (hit) { - this.hitOver(hit); + this.handleHitOver(hit); } } }, // Called when dragging has been stopped - dragStop: function() { - this.hitDone(); - DragListener.prototype.dragStop.apply(this, arguments); // call the super-method + handleDragEnd: function() { + this.handleHitDone(); + DragListener.prototype.handleDragEnd.apply(this, arguments); // call the super-method }, // Called when a the mouse has just moved over a new hit - hitOver: function(hit) { + handleHitOver: function(hit) { var isOrig = isHitsEqual(hit, this.origHit); this.hit = hit; @@ -2759,26 +3099,26 @@ var HitDragListener = DragListener.extend({ // Called when the mouse has just moved out of a hit - hitOut: function() { + handleHitOut: function() { if (this.hit) { this.trigger('hitOut', this.hit); - this.hitDone(); + this.handleHitDone(); this.hit = null; } }, // Called after a hitOut. Also called before a dragStop - hitDone: function() { + handleHitDone: function() { if (this.hit) { this.trigger('hitDone', this.hit); } }, - // Called when drag listening has stopped - listenStop: function() { - DragListener.prototype.listenStop.apply(this, arguments); // call the super-method + // Called when the interaction ends, whether there was a real drag or not + handleInteractionEnd: function() { + DragListener.prototype.handleInteractionEnd.apply(this, arguments); // call the super-method this.origHit = null; this.hit = null; @@ -2788,8 +3128,8 @@ var HitDragListener = DragListener.extend({ // Called when scrolling has stopped, whether through auto scroll, or the user scrolling - scrollStop: function() { - DragListener.prototype.scrollStop.apply(this, arguments); // call the super-method + handleScrollEnd: function() { + DragListener.prototype.handleScrollEnd.apply(this, arguments); // call the super-method this.computeCoords(); // hits' absolute positions will be in new places. recompute }, @@ -2844,7 +3184,7 @@ function isHitPropsWithin(subHit, superHit) { /* Creates a clone of an element and lets it track the mouse as it moves ----------------------------------------------------------------------------------------------------------------------*/ -var MouseFollower = Class.extend({ +var MouseFollower = Class.extend(ListenerMixin, { options: null, @@ -2856,16 +3196,14 @@ var MouseFollower = Class.extend({ top0: null, left0: null, - // the initial position of the mouse - mouseY0: null, - mouseX0: null, + // the absolute coordinates of the initiating touch/mouse action + y0: null, + x0: null, // the number of pixels the mouse has moved from its initial position topDelta: null, leftDelta: null, - mousemoveProxy: null, // document mousemove handler, bound to the MouseFollower's `this` - isFollowing: false, isHidden: false, isAnimating: false, // doing the revert animation? @@ -2882,8 +3220,8 @@ var MouseFollower = Class.extend({ if (!this.isFollowing) { this.isFollowing = true; - this.mouseY0 = ev.pageY; - this.mouseX0 = ev.pageX; + this.y0 = getEvY(ev); + this.x0 = getEvX(ev); this.topDelta = 0; this.leftDelta = 0; @@ -2891,7 +3229,12 @@ var MouseFollower = Class.extend({ this.updatePosition(); } - $(document).on('mousemove', this.mousemoveProxy = proxy(this, 'mousemove')); + if (getEvIsTouch(ev)) { + this.listenTo($(document), 'touchmove', this.handleMove); + } + else { + this.listenTo($(document), 'mousemove', this.handleMove); + } } }, @@ -2916,7 +3259,7 @@ var MouseFollower = Class.extend({ if (this.isFollowing && !this.isAnimating) { // disallow more than one stop animation at a time this.isFollowing = false; - $(document).off('mousemove', this.mousemoveProxy); + this.stopListeningTo($(document)); if (shouldRevert && revertDuration && !this.isHidden) { // do a revert animation? this.isAnimating = true; @@ -2942,6 +3285,7 @@ var MouseFollower = Class.extend({ if (!el) { this.sourceEl.width(); // hack to force IE8 to compute correct bounding box el = this.el = this.sourceEl.clone() + .addClass(this.options.additionalClass || '') .css({ position: 'absolute', visibility: '', // in case original element was hidden (commonly through hideEvents()) @@ -2953,8 +3297,13 @@ var MouseFollower = Class.extend({ height: this.sourceEl.height(), // explicit width in case there was a 'bottom' value opacity: this.options.opacity || '', zIndex: this.options.zIndex - }) - .appendTo(this.parentEl); + }); + + // we don't want long taps or any mouse interaction causing selection/menus. + // would use preventSelection(), but that prevents selectstart, causing problems. + el.addClass('fc-unselectable'); + + el.appendTo(this.parentEl); } return el; @@ -2994,9 +3343,9 @@ var MouseFollower = Class.extend({ // Gets called when the user moves the mouse - mousemove: function(ev) { - this.topDelta = ev.pageY - this.mouseY0; - this.leftDelta = ev.pageX - this.mouseX0; + handleMove: function(ev) { + this.topDelta = getEvY(ev) - this.y0; + this.leftDelta = getEvX(ev) - this.x0; if (!this.isHidden) { this.updatePosition(); @@ -3031,7 +3380,7 @@ var MouseFollower = Class.extend({ /* An abstract class comprised of a "grid" of areas that each represent a specific datetime ----------------------------------------------------------------------------------------------------------------------*/ -var Grid = FC.Grid = Class.extend({ +var Grid = FC.Grid = Class.extend(ListenerMixin, MouseIgnorerMixin, { view: null, // a View object isRTL: null, // shortcut to the view's isRTL option @@ -3042,8 +3391,6 @@ var Grid = FC.Grid = Class.extend({ el: null, // the containing element elsByFill: null, // a hash of jQuery element sets used for rendering each fill. Keyed by fill name. - externalDragStartProxy: null, // binds the Grid's scope to externalDragStart (in DayGrid.events) - // derived from options eventTimeFormat: null, displayEventTime: null, @@ -3056,13 +3403,19 @@ var Grid = FC.Grid = Class.extend({ // TODO: port isTimeScale into same system? largeUnit: null, + dayDragListener: null, + segDragListener: null, + segResizeListener: null, + externalDragListener: null, + constructor: function(view) { this.view = view; this.isRTL = view.opt('isRTL'); - this.elsByFill = {}; - this.externalDragStartProxy = proxy(this, 'externalDragStart'); + + this.dayDragListener = this.buildDayDragListener(); + this.initMouseIgnoring(); }, @@ -3195,26 +3548,33 @@ var Grid = FC.Grid = Class.extend({ // Sets the container element that the grid should render inside of. // Does other DOM-related initializations. setElement: function(el) { - var _this = this; - this.el = el; + preventSelection(el); + + this.bindDayHandler('touchstart', this.dayTouchStart); + this.bindDayHandler('mousedown', this.dayMousedown); + + // attach event-element-related handlers. in Grid.events + // same garbage collection note as above. + this.bindSegHandlers(); + + this.bindGlobalHandlers(); + }, + + + bindDayHandler: function(name, handler) { + var _this = this; // attach a handler to the grid's root element. // jQuery will take care of unregistering them when removeElement gets called. - el.on('mousedown', function(ev) { + this.el.on(name, function(ev) { if ( !$(ev.target).is('.fc-event-container *, .fc-more') && // not an an event element, or "more.." link !$(ev.target).closest('.fc-popover').length // not on a popover (like the "more.." events one) ) { - _this.dayMousedown(ev); + return handler.call(_this, ev); } }); - - // attach event-element-related handlers. in Grid.events - // same garbage collection note as above. - this.bindSegHandlers(); - - this.bindGlobalHandlers(); }, @@ -3222,6 +3582,7 @@ var Grid = FC.Grid = Class.extend({ // DOES NOT remove any content beforehand (doesn't clear events or call unrenderDates), unlike View removeElement: function() { this.unbindGlobalHandlers(); + this.clearDragListeners(); this.el.remove(); @@ -3254,18 +3615,47 @@ var Grid = FC.Grid = Class.extend({ // Binds DOM handlers to elements that reside outside the grid, such as the document bindGlobalHandlers: function() { - $(document).on('dragstart sortstart', this.externalDragStartProxy); // jqui + this.listenTo($(document), { + dragstart: this.externalDragStart, // jqui + sortstart: this.externalDragStart // jqui + }); }, // Unbinds DOM handlers from elements that reside outside the grid unbindGlobalHandlers: function() { - $(document).off('dragstart sortstart', this.externalDragStartProxy); // jqui + this.stopListeningTo($(document)); }, // Process a mousedown on an element that represents a day. For day clicking and selecting. dayMousedown: function(ev) { + if (!this.isIgnoringMouse) { + this.dayDragListener.startInteraction(ev, { + //distance: 5, // needs more work if we want dayClick to fire correctly + }); + } + }, + + + dayTouchStart: function(ev) { + var view = this.view; + + // HACK to prevent a user's clickaway for unselecting a range or an event + // from causing a dayClick. + if (view.isSelected || view.selectedEvent) { + this.tempIgnoreMouse(); + } + + this.dayDragListener.startInteraction(ev, { + delay: this.view.opt('longPressDelay') + }); + }, + + + // Creates a listener that tracks the user's drag across day elements. + // For day clicking and selecting. + buildDayDragListener: function() { var _this = this; var view = this.view; var isSelectable = view.opt('selectable'); @@ -3276,14 +3666,21 @@ var Grid = FC.Grid = Class.extend({ // if the drag ends on the same day, it is a 'dayClick'. // if 'selectable' is enabled, this listener also detects selections. var dragListener = new HitDragListener(this, { - //distance: 5, // needs more work if we want dayClick to fire correctly scroll: view.opt('dragScroll'), + interactionStart: function() { + dayClickHit = dragListener.origHit; // for dayClick, where no dragging happens + }, dragStart: function() { view.unselect(); // since we could be rendering a new selection, we want to clear any old one }, hitOver: function(hit, isOrig, origHit) { if (origHit) { // click needs to have started on a hit - dayClickHit = isOrig ? hit : null; // single-hit selection is a day click + + // if user dragged to another cell at any point, it can no longer be a dayClick + if (!isOrig) { + dayClickHit = null; + } + if (isSelectable) { selectionSpan = _this.computeSelection( _this.getHitSpan(origHit), @@ -3304,23 +3701,46 @@ var Grid = FC.Grid = Class.extend({ _this.unrenderSelection(); enableCursor(); }, - listenStop: function(ev) { - if (dayClickHit) { - view.triggerDayClick( - _this.getHitSpan(dayClickHit), - _this.getHitEl(dayClickHit), - ev - ); - } - if (selectionSpan) { - // the selection will already have been rendered. just report it - view.reportSelection(selectionSpan, ev); + interactionEnd: function(ev, isCancelled) { + if (!isCancelled) { + if ( + dayClickHit && + !_this.isIgnoringMouse // see hack in dayTouchStart + ) { + view.triggerDayClick( + _this.getHitSpan(dayClickHit), + _this.getHitEl(dayClickHit), + ev + ); + } + if (selectionSpan) { + // the selection will already have been rendered. just report it + view.reportSelection(selectionSpan, ev); + } + enableCursor(); } - enableCursor(); } }); - dragListener.mousedown(ev); // start listening, which will eventually initiate a dragStart + return dragListener; + }, + + + // Kills all in-progress dragging. + // Useful for when public API methods that result in re-rendering are invoked during a drag. + // Also useful for when touch devices misbehave and don't fire their touchend. + clearDragListeners: function() { + this.dayDragListener.endInteraction(); + + if (this.segDragListener) { + this.segDragListener.endInteraction(); // will clear this.segDragListener + } + if (this.segResizeListener) { + this.segResizeListener.endInteraction(); // will clear this.segResizeListener + } + if (this.externalDragListener) { + this.externalDragListener.endInteraction(); // will clear this.externalDragListener + } }, @@ -3330,10 +3750,11 @@ var Grid = FC.Grid = Class.extend({ // Renders a mock event at the given event location, which contains zoned start/end properties. + // Returns all mock event elements. renderEventLocationHelper: function(eventLocation, sourceSeg) { var fakeEvent = this.fabricateHelperEvent(eventLocation, sourceSeg); - this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering + return this.renderHelper(fakeEvent, sourceSeg); // do the actual rendering }, @@ -3361,6 +3782,7 @@ var Grid = FC.Grid = Class.extend({ // Renders a mock event. Given zoned event date properties. + // Must return all mock event elements. renderHelper: function(eventLocation, sourceSeg) { // subclasses must implement }, @@ -3640,7 +4062,8 @@ Grid.mixin({ // Unrenders all events currently rendered on the grid unrenderEvents: function() { - this.triggerSegMouseout(); // trigger an eventMouseout if user's mouse is over an event + this.handleSegMouseout(); // trigger an eventMouseout if user's mouse is over an event + this.clearDragListeners(); this.unrenderFgSegs(); this.unrenderBgSegs(); @@ -3768,48 +4191,44 @@ Grid.mixin({ // Attaches event-element-related handlers to the container element and leverage bubbling bindSegHandlers: function() { + this.bindSegHandler('touchstart', this.handleSegTouchStart); + this.bindSegHandler('touchend', this.handleSegTouchEnd); + this.bindSegHandler('mouseenter', this.handleSegMouseover); + this.bindSegHandler('mouseleave', this.handleSegMouseout); + this.bindSegHandler('mousedown', this.handleSegMousedown); + this.bindSegHandler('click', this.handleSegClick); + }, + + + // Executes a handler for any a user-interaction on a segment. + // Handler gets called with (seg, ev), and with the `this` context of the Grid + bindSegHandler: function(name, handler) { var _this = this; - var view = this.view; - $.each( - { - mouseenter: function(seg, ev) { - _this.triggerSegMouseover(seg, ev); - }, - mouseleave: function(seg, ev) { - _this.triggerSegMouseout(seg, ev); - }, - click: function(seg, ev) { - return view.trigger('eventClick', this, seg.event, ev); // can return `false` to cancel - }, - mousedown: function(seg, ev) { - if ($(ev.target).is('.fc-resizer') && view.isEventResizable(seg.event)) { - _this.segResizeMousedown(seg, ev, $(ev.target).is('.fc-start-resizer')); - } - else if (view.isEventDraggable(seg.event)) { - _this.segDragMousedown(seg, ev); - } - } - }, - function(name, func) { - // attach the handler to the container element and only listen for real event elements via bubbling - _this.el.on(name, '.fc-event-container > *', function(ev) { - var seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents - - // only call the handlers if there is not a drag/resize in progress - if (seg && !_this.isDraggingSeg && !_this.isResizingSeg) { - return func.call(this, seg, ev); // `this` will be the event element - } - }); + this.el.on(name, '.fc-event-container > *', function(ev) { + var seg = $(this).data('fc-seg'); // grab segment data. put there by View::renderEvents + + // only call the handlers if there is not a drag/resize in progress + if (seg && !_this.isDraggingSeg && !_this.isResizingSeg) { + return handler.call(_this, seg, ev); // context will be the Grid } - ); + }); + }, + + + handleSegClick: function(seg, ev) { + return this.view.trigger('eventClick', seg.el[0], seg.event, ev); // can return `false` to cancel }, // Updates internal state and triggers handlers for when an event element is moused over - triggerSegMouseover: function(seg, ev) { - if (!this.mousedOverSeg) { + handleSegMouseover: function(seg, ev) { + if ( + !this.isIgnoringMouse && + !this.mousedOverSeg + ) { this.mousedOverSeg = seg; + seg.el.addClass('fc-allow-mouse-resize'); this.view.trigger('eventMouseover', seg.el[0], seg.event, ev); } }, @@ -3817,56 +4236,132 @@ Grid.mixin({ // Updates internal state and triggers handlers for when an event element is moused out. // Can be given no arguments, in which case it will mouseout the segment that was previously moused over. - triggerSegMouseout: function(seg, ev) { + handleSegMouseout: function(seg, ev) { ev = ev || {}; // if given no args, make a mock mouse event if (this.mousedOverSeg) { seg = seg || this.mousedOverSeg; // if given no args, use the currently moused-over segment this.mousedOverSeg = null; + seg.el.removeClass('fc-allow-mouse-resize'); this.view.trigger('eventMouseout', seg.el[0], seg.event, ev); } }, + handleSegMousedown: function(seg, ev) { + var isResizing = this.startSegResize(seg, ev, { distance: 5 }); + + if (!isResizing && this.view.isEventDraggable(seg.event)) { + this.buildSegDragListener(seg) + .startInteraction(ev, { + distance: 5 + }); + } + }, + + + handleSegTouchStart: function(seg, ev) { + var view = this.view; + var event = seg.event; + var isSelected = view.isEventSelected(event); + var isDraggable = view.isEventDraggable(event); + var isResizable = view.isEventResizable(event); + var isResizing = false; + var dragListener; + + if (isSelected && isResizable) { + // only allow resizing of the event is selected + isResizing = this.startSegResize(seg, ev); + } + + if (!isResizing && (isDraggable || isResizable)) { // allowed to be selected? + + dragListener = isDraggable ? + this.buildSegDragListener(seg) : + this.buildSegSelectListener(seg); // seg isn't draggable, but still needs to be selected + + dragListener.startInteraction(ev, { // won't start if already started + delay: isSelected ? 0 : this.view.opt('longPressDelay') // do delay if not already selected + }); + } + + // a long tap simulates a mouseover. ignore this bogus mouseover. + this.tempIgnoreMouse(); + }, + + + handleSegTouchEnd: function(seg, ev) { + // touchstart+touchend = click, which simulates a mouseover. + // ignore this bogus mouseover. + this.tempIgnoreMouse(); + }, + + + // returns boolean whether resizing actually started or not. + // assumes the seg allows resizing. + // `dragOptions` are optional. + startSegResize: function(seg, ev, dragOptions) { + if ($(ev.target).is('.fc-resizer')) { + this.buildSegResizeListener(seg, $(ev.target).is('.fc-start-resizer')) + .startInteraction(ev, dragOptions); + return true; + } + return false; + }, + + + /* Event Dragging ------------------------------------------------------------------------------------------------------------------*/ - // Called when the user does a mousedown on an event, which might lead to dragging. + // Builds a listener that will track user-dragging on an event segment. // Generic enough to work with any type of Grid. - segDragMousedown: function(seg, ev) { + // Has side effect of setting/unsetting `segDragListener` + buildSegDragListener: function(seg) { var _this = this; var view = this.view; var calendar = view.calendar; var el = seg.el; var event = seg.event; + var isDragging; + var mouseFollower; // A clone of the original element that will move with the mouse var dropLocation; // zoned event date properties - // A clone of the original element that will move with the mouse - var mouseFollower = new MouseFollower(seg.el, { - parentEl: view.el, - opacity: view.opt('dragOpacity'), - revertDuration: view.opt('dragRevertDuration'), - zIndex: 2 // one above the .fc-view - }); + if (this.segDragListener) { + return this.segDragListener; + } // Tracks mouse movement over the *view's* coordinate map. Allows dragging and dropping between subcomponents // of the view. - var dragListener = new HitDragListener(view, { - distance: 5, + var dragListener = this.segDragListener = new HitDragListener(view, { scroll: view.opt('dragScroll'), subjectEl: el, subjectCenter: true, - listenStart: function(ev) { + interactionStart: function(ev) { + isDragging = false; + mouseFollower = new MouseFollower(seg.el, { + additionalClass: 'fc-dragging', + parentEl: view.el, + opacity: dragListener.isTouch ? null : view.opt('dragOpacity'), + revertDuration: view.opt('dragRevertDuration'), + zIndex: 2 // one above the .fc-view + }); mouseFollower.hide(); // don't show until we know this is a real drag mouseFollower.start(ev); }, dragStart: function(ev) { - _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported + if (dragListener.isTouch && !view.isEventSelected(event)) { + // if not previously selected, will fire after a delay. then, select the event + view.selectEvent(event); + } + isDragging = true; + _this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported _this.segDragStart(seg, ev); view.hideEvent(event); // hide all event segments. our mouseFollower will take over }, hitOver: function(hit, isOrig, origHit) { + var dragHelperEls; // starting hit could be forced (DayGrid.limit) if (seg.hit) { @@ -3886,7 +4381,13 @@ Grid.mixin({ } // if a valid drop location, have the subclass render a visual indication - if (dropLocation && view.renderDrag(dropLocation, seg)) { + if (dropLocation && (dragHelperEls = view.renderDrag(dropLocation, seg))) { + + dragHelperEls.addClass('fc-dragging'); + if (!dragListener.isTouch) { + _this.applyDragOpacity(dragHelperEls); + } + mouseFollower.hide(); // if the subclass is already using a mock event "helper", hide our own } else { @@ -3902,27 +4403,54 @@ Grid.mixin({ mouseFollower.show(); // show in case we are moving out of all hits dropLocation = null; }, - hitDone: function() { // Called after a hitOut OR before a dragStop + hitDone: function() { // Called after a hitOut OR before a dragEnd enableCursor(); }, - dragStop: function(ev) { + interactionEnd: function(ev) { // do revert animation if hasn't changed. calls a callback when finished (whether animation or not) mouseFollower.stop(!dropLocation, function() { - view.unrenderDrag(); - view.showEvent(event); - _this.segDragStop(seg, ev); - + if (isDragging) { + view.unrenderDrag(); + view.showEvent(event); + _this.segDragStop(seg, ev); + } if (dropLocation) { view.reportEventDrop(event, dropLocation, this.largeUnit, el, ev); } }); + _this.segDragListener = null; + } + }); + + return dragListener; + }, + + + // seg isn't draggable, but let's use a generic DragListener + // simply for the delay, so it can be selected. + // Has side effect of setting/unsetting `segDragListener` + buildSegSelectListener: function(seg) { + var _this = this; + var view = this.view; + var event = seg.event; + + if (this.segDragListener) { + return this.segDragListener; + } + + var dragListener = this.segDragListener = new DragListener({ + dragStart: function(ev) { + if (dragListener.isTouch && !view.isEventSelected(event)) { + // if not previously selected, will fire after a delay. then, select the event + view.selectEvent(event); + } }, - listenStop: function() { - mouseFollower.stop(); // put in listenStop in case there was a mousedown but the drag never started + interactionEnd: function(ev) { + _this.segDragListener = null; } }); - dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart + return dragListener; }, @@ -4038,8 +4566,8 @@ Grid.mixin({ var dropLocation; // a null value signals an unsuccessful drag // listener that tracks mouse movement over date-associated pixel regions - var dragListener = new HitDragListener(this, { - listenStart: function() { + var dragListener = _this.externalDragListener = new HitDragListener(this, { + interactionStart: function() { _this.isDraggingExternal = true; }, hitOver: function(hit) { @@ -4063,17 +4591,16 @@ Grid.mixin({ hitOut: function() { dropLocation = null; // signal unsuccessful }, - hitDone: function() { // Called after a hitOut OR before a dragStop + hitDone: function() { // Called after a hitOut OR before a dragEnd enableCursor(); _this.unrenderDrag(); }, - dragStop: function() { + interactionEnd: function(ev) { if (dropLocation) { // element was dropped on a valid hit _this.view.reportExternalDrop(meta, dropLocation, el, ev, ui); } - }, - listenStop: function() { _this.isDraggingExternal = false; + _this.externalDragListener = null; } }); @@ -4114,6 +4641,7 @@ Grid.mixin({ // `dropLocation` contains hypothetical start/end/allDay values the event would have if dropped. end can be null. // `seg` is the internal segment object that is being dragged. If dragging an external element, `seg` is null. // A truthy returned value indicates this method has rendered a helper element. + // Must return elements used for any mock events. renderDrag: function(dropLocation, seg) { // subclasses must implement }, @@ -4129,24 +4657,28 @@ Grid.mixin({ ------------------------------------------------------------------------------------------------------------------*/ - // Called when the user does a mousedown on an event's resizer, which might lead to resizing. + // Creates a listener that tracks the user as they resize an event segment. // Generic enough to work with any type of Grid. - segResizeMousedown: function(seg, ev, isStart) { + buildSegResizeListener: function(seg, isStart) { var _this = this; var view = this.view; var calendar = view.calendar; var el = seg.el; var event = seg.event; var eventEnd = calendar.getEventEnd(event); + var isDragging; var resizeLocation; // zoned event date properties. falsy if invalid resize // Tracks mouse movement over the *grid's* coordinate map - var dragListener = new HitDragListener(this, { - distance: 5, + var dragListener = this.segResizeListener = new HitDragListener(this, { scroll: view.opt('dragScroll'), subjectEl: el, + interactionStart: function() { + isDragging = false; + }, dragStart: function(ev) { - _this.triggerSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported + isDragging = true; + _this.handleSegMouseout(seg, ev); // ensure a mouseout on the manipulated event has been reported _this.segResizeStart(seg, ev); }, hitOver: function(hit, isOrig, origHit) { @@ -4181,16 +4713,18 @@ Grid.mixin({ view.showEvent(event); enableCursor(); }, - dragStop: function(ev) { - _this.segResizeStop(seg, ev); - + interactionEnd: function(ev) { + if (isDragging) { + _this.segResizeStop(seg, ev); + } if (resizeLocation) { // valid date to resize to? view.reportEventResize(event, resizeLocation, this.largeUnit, el, ev); } + _this.segResizeListener = null; } }); - dragListener.mousedown(ev); // start listening, which will eventually lead to a dragStart + return dragListener; }, @@ -4267,6 +4801,7 @@ Grid.mixin({ // Renders a visual indication of an event being resized. // `range` has the updated dates of the event. `seg` is the original segment object involved in the drag. + // Must return elements used for any mock events. renderEventResize: function(range, seg) { // subclasses must implement }, @@ -4312,6 +4847,7 @@ Grid.mixin({ // Generic utility for generating the HTML classNames for an event segment's element getSegClasses: function(seg, isDraggable, isResizable) { + var view = this.view; var event = seg.event; var classes = [ 'fc-event', @@ -4329,6 +4865,11 @@ Grid.mixin({ classes.push('fc-resizable'); } + // event is currently selected? attach a className. + if (view.isEventSelected(event)) { + classes.push('fc-selected'); + } + return classes; }, @@ -5311,10 +5852,7 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, { // if a segment from the same calendar but another component is being dragged, render a helper event if (seg && !seg.el.closest(this.el).length) { - this.renderEventLocationHelper(eventLocation, seg); - this.applyDragOpacity(this.helperEls); - - return true; // a helper has been rendered + return this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements } }, @@ -5333,7 +5871,7 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, { // Renders a visual indication of an event being resized renderEventResize: function(eventLocation, seg) { this.renderHighlight(this.eventToSpan(eventLocation)); - this.renderEventLocationHelper(eventLocation, seg); + return this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements }, @@ -5379,7 +5917,9 @@ var DayGrid = FC.DayGrid = Grid.extend(DayTableMixin, { helperNodes.push(skeletonEl[0]); }); - this.helperEls = $(helperNodes); // array -> jQuery set + return ( // must return the elements rendered + this.helperEls = $(helperNodes) // array -> jQuery set + ); }, @@ -6165,6 +6705,7 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { labelInterval: null, // duration of how often a label should be displayed for a slot colEls: null, // cells elements in the day-row background + slatContainerEl: null, // div that wraps all the slat rows slatEls: null, // elements running horizontally across all columns nowIndicatorEls: null, @@ -6184,7 +6725,8 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { renderDates: function() { this.el.html(this.renderHtml()); this.colEls = this.el.find('.fc-day'); - this.slatEls = this.el.find('.fc-slats tr'); + this.slatContainerEl = this.el.find('.fc-slats'); + this.slatEls = this.slatContainerEl.find('tr'); this.colCoordCache = new CoordCache({ els: this.colEls, @@ -6463,6 +7005,11 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { }, + getTotalSlatHeight: function() { + return this.slatContainerEl.outerHeight(); + }, + + // Computes the top coordinate, relative to the bounds of the grid, of the given date. // A `startOfDayDate` must be given for avoiding ambiguity over how to treat midnight. computeDateTop: function(date, startOfDayDate) { @@ -6511,13 +7058,10 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { renderDrag: function(eventLocation, seg) { if (seg) { // if there is event information for this drag, render a helper event - this.renderEventLocationHelper(eventLocation, seg); - for (var i = 0; i < this.helperSegs.length; i++) { - this.applyDragOpacity(this.helperSegs[i].el); - } - - return true; // signal that a helper has been rendered + // returns mock event elements + // signal that a helper has been rendered + return this.renderEventLocationHelper(eventLocation, seg); } else { // otherwise, just render a highlight @@ -6539,7 +7083,7 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { // Renders a visual indication of an event being resized renderEventResize: function(eventLocation, seg) { - this.renderEventLocationHelper(eventLocation, seg); + return this.renderEventLocationHelper(eventLocation, seg); // returns mock event elements }, @@ -6555,7 +7099,7 @@ var TimeGrid = FC.TimeGrid = Grid.extend(DayTableMixin, { // Renders a mock "helper" event. `sourceSeg` is the original segment object and might be null (an external drag) renderHelper: function(event, sourceSeg) { - this.renderHelperSegs(this.eventToSegs(event), sourceSeg); + return this.renderHelperSegs(this.eventToSegs(event), sourceSeg); // returns mock event elements }, @@ -6749,6 +7293,7 @@ TimeGrid.mixin({ renderHelperSegs: function(segs, sourceSeg) { + var helperEls = []; var i, seg; var sourceEl; @@ -6766,9 +7311,12 @@ TimeGrid.mixin({ 'margin-right': sourceEl.css('margin-right') }); } + helperEls.push(seg.el[0]); } this.helperSegs = segs; + + return $(helperEls); // must return rendered helpers }, @@ -7279,7 +7827,7 @@ function isSlotSegCollision(seg1, seg2) { /* An abstract class from which other views inherit from ----------------------------------------------------------------------------------------------------------------------*/ -var View = FC.View = Class.extend({ +var View = FC.View = Class.extend(EmitterMixin, ListenerMixin, { type: null, // subclass' view name (string) name: null, // deprecated. use `type` instead @@ -7306,13 +7854,10 @@ var View = FC.View = Class.extend({ isRTL: false, isSelected: false, // boolean whether a range of time is user-selected or not + selectedEvent: null, eventOrderSpecs: null, // criteria for ordering events when they have same date/time - // subclasses can optionally use a scroll container - scrollerEl: null, // the element that will most likely scroll when content is too tall - scrollTop: null, // cached vertical scroll value - // classNames styled by jqui themes widgetHeaderClass: null, widgetContentClass: null, @@ -7322,9 +7867,6 @@ var View = FC.View = Class.extend({ nextDayThreshold: null, isHiddenDayHash: null, - // document handlers, bound to `this` object - documentMousedownProxy: null, // TODO: doesn't work with touch - // now indicator isNowIndicatorRendered: null, initialNowDate: null, // result first getNow call @@ -7347,8 +7889,6 @@ var View = FC.View = Class.extend({ this.eventOrderSpecs = parseFieldSpecs(this.opt('eventOrder')); - this.documentMousedownProxy = proxy(this, 'documentMousedown'); - this.initialize(); }, @@ -7674,13 +8214,14 @@ var View = FC.View = Class.extend({ // Binds DOM handlers to elements that reside outside the view container, such as the document bindGlobalHandlers: function() { - $(document).on('mousedown', this.documentMousedownProxy); + this.listenTo($(document), 'mousedown', this.handleDocumentMousedown); + this.listenTo($(document), 'touchstart', this.processUnselect); }, // Unbinds DOM handlers from elements that reside outside the view container unbindGlobalHandlers: function() { - $(document).off('mousedown', this.documentMousedownProxy); + this.stopListeningTo($(document)); }, @@ -7848,27 +8389,6 @@ var View = FC.View = Class.extend({ ------------------------------------------------------------------------------------------------------------------*/ - // Given the total height of the view, return the number of pixels that should be used for the scroller. - // Utility for subclasses. - computeScrollerHeight: function(totalHeight) { - var scrollerEl = this.scrollerEl; - var both; - var otherHeight; // cumulative height of everything that is not the scrollerEl in the view (header+borders) - - both = this.el.add(scrollerEl); - - // fuckin IE8/9/10/11 sometimes returns 0 for dimensions. this weird hack was the only thing that worked - both.css({ - position: 'relative', // cause a reflow, which will force fresh dimension recalculation - left: -1 // ensure reflow in case the el was already relative. negative is less likely to cause new scroll - }); - otherHeight = this.el.outerHeight() - scrollerEl.height(); // grab the dimensions - both.css({ position: '', left: '' }); // undo hack - - return totalHeight - otherHeight; - }, - - // Computes the initial pre-configured scroll state prior to allowing the user to change it. // Given the scroll state from the previous rendering. If first time rendering, given null. computeInitialScroll: function(previousScrollState) { @@ -7878,17 +8398,13 @@ var View = FC.View = Class.extend({ // Retrieves the view's current natural scroll state. Can return an arbitrary format. queryScroll: function() { - if (this.scrollerEl) { - return this.scrollerEl.scrollTop(); // operates on scrollerEl by default - } + // subclasses must implement }, // Sets the view's scroll state. Will accept the same format computeInitialScroll and queryScroll produce. setScroll: function(scrollState) { - if (this.scrollerEl) { - return this.scrollerEl.scrollTop(scrollState); // operates on scrollerEl by default - } + // subclasses must implement }, @@ -8103,7 +8619,8 @@ var View = FC.View = Class.extend({ // Renders a visual indication of a event or external-element drag over the given drop zone. - // If an external-element, seg will be `null` + // If an external-element, seg will be `null`. + // Must return elements used for any mock events. renderDrag: function(dropLocation, seg) { // subclasses must implement }, @@ -8166,7 +8683,7 @@ var View = FC.View = Class.extend({ }, - /* Selection + /* Selection (time range) ------------------------------------------------------------------------------------------------------------------*/ @@ -8224,13 +8741,62 @@ var View = FC.View = Class.extend({ }, - // Handler for unselecting when the user clicks something and the 'unselectAuto' setting is on - documentMousedown: function(ev) { - var ignore; + /* Event Selection + ------------------------------------------------------------------------------------------------------------------*/ + + + selectEvent: function(event) { + if (!this.selectedEvent || this.selectedEvent !== event) { + this.unselectEvent(); + this.renderedEventSegEach(function(seg) { + seg.el.addClass('fc-selected'); + }, event); + this.selectedEvent = event; + } + }, + + + unselectEvent: function() { + if (this.selectedEvent) { + this.renderedEventSegEach(function(seg) { + seg.el.removeClass('fc-selected'); + }, this.selectedEvent); + this.selectedEvent = null; + } + }, - // is there a selection, and has the user made a proper left click? - if (this.isSelected && this.opt('unselectAuto') && isPrimaryMouseButton(ev)) { + isEventSelected: function(event) { + // event references might change on refetchEvents(), while selectedEvent doesn't, + // so compare IDs + return this.selectedEvent && this.selectedEvent._id === event._id; + }, + + + /* Mouse / Touch Unselecting (time range & event unselection) + ------------------------------------------------------------------------------------------------------------------*/ + // TODO: move consistently to down/start or up/end? + // TODO: don't kill previous selection if touch scrolling + + + handleDocumentMousedown: function(ev) { + if (isPrimaryMouseButton(ev)) { + this.processUnselect(ev); + } + }, + + + processUnselect: function(ev) { + this.processRangeUnselect(ev); + this.processEventUnselect(ev); + }, + + + processRangeUnselect: function(ev) { + var ignore; + + // is there a time-range selection? + if (this.isSelected && this.opt('unselectAuto')) { // only unselect if the clicked element is not identical to or inside of an 'unselectCancel' element ignore = this.opt('unselectCancel'); if (!ignore || !$(ev.target).closest(ignore).length) { @@ -8240,6 +8806,15 @@ var View = FC.View = Class.extend({ }, + processEventUnselect: function(ev) { + if (this.selectedEvent) { + if (!$(ev.target).closest('.fc-selected').length) { + this.unselectEvent(); + } + } + }, + + /* Day Click ------------------------------------------------------------------------------------------------------------------*/ @@ -8354,6 +8929,127 @@ var View = FC.View = Class.extend({ ;; +/* +Embodies a div that has potential scrollbars +*/ +var Scroller = FC.Scroller = Class.extend({ + + el: null, // the guaranteed outer element + scrollEl: null, // the element with the scrollbars + overflowX: null, + overflowY: null, + + + constructor: function(options) { + options = options || {}; + this.overflowX = options.overflowX || options.overflow || 'auto'; + this.overflowY = options.overflowY || options.overflow || 'auto'; + }, + + + render: function() { + this.el = this.renderEl(); + this.applyOverflow(); + }, + + + renderEl: function() { + return (this.scrollEl = $('<div class="fc-scroller"></div>')); + }, + + + // sets to natural height, unlocks overflow + clear: function() { + this.setHeight('auto'); + this.applyOverflow(); + }, + + + destroy: function() { + this.el.remove(); + }, + + + // Overflow + // ----------------------------------------------------------------------------------------------------------------- + + + applyOverflow: function() { + this.scrollEl.css({ + 'overflow-x': this.overflowX, + 'overflow-y': this.overflowY + }); + }, + + + // Causes any 'auto' overflow values to resolves to 'scroll' or 'hidden'. + // Useful for preserving scrollbar widths regardless of future resizes. + // Can pass in scrollbarWidths for optimization. + lockOverflow: function(scrollbarWidths) { + var overflowX = this.overflowX; + var overflowY = this.overflowY; + + scrollbarWidths = scrollbarWidths || this.getScrollbarWidths(); + + if (overflowX === 'auto') { + overflowX = ( + scrollbarWidths.top || scrollbarWidths.bottom || // horizontal scrollbars? + // OR scrolling pane with massless scrollbars? + this.scrollEl[0].scrollWidth - 1 > this.scrollEl[0].clientWidth + // subtract 1 because of IE off-by-one issue + ) ? 'scroll' : 'hidden'; + } + + if (overflowY === 'auto') { + overflowY = ( + scrollbarWidths.left || scrollbarWidths.right || // vertical scrollbars? + // OR scrolling pane with massless scrollbars? + this.scrollEl[0].scrollHeight - 1 > this.scrollEl[0].clientHeight + // subtract 1 because of IE off-by-one issue + ) ? 'scroll' : 'hidden'; + } + + this.scrollEl.css({ 'overflow-x': overflowX, 'overflow-y': overflowY }); + }, + + + // Getters / Setters + // ----------------------------------------------------------------------------------------------------------------- + + + setHeight: function(height) { + this.scrollEl.height(height); + }, + + + getScrollTop: function() { + return this.scrollEl.scrollTop(); + }, + + + setScrollTop: function(top) { + this.scrollEl.scrollTop(top); + }, + + + getClientWidth: function() { + return this.scrollEl[0].clientWidth; + }, + + + getClientHeight: function() { + return this.scrollEl[0].clientHeight; + }, + + + getScrollbarWidths: function() { + return getScrollbarWidths(this.scrollEl); + } + +}); + +;; + var Calendar = FC.Calendar = Class.extend({ dirDefaults: null, // option defaults related to LTR or RTL @@ -8608,7 +9304,7 @@ var Calendar = FC.Calendar = Class.extend({ }); -Calendar.mixin(Emitter); +Calendar.mixin(EmitterMixin); function Calendar_constructor(element, overrides) { @@ -9369,7 +10065,9 @@ Calendar.defaults = { dayPopoverFormat: 'LL', handleWindowResize: true, - windowResizeDelay: 200 // milliseconds before an updateSize happens + windowResizeDelay: 200, // milliseconds before an updateSize happens + + longPressDelay: 1000 }; @@ -10368,6 +11066,8 @@ function EventManager(options) { // assumed to be a calendar assignDatesToEvent(start, end, allDay, out); } + t.normalizeEvent(out); // hook for external use. a prototype method + return out; } @@ -10900,6 +11600,12 @@ function EventManager(options) { // assumed to be a calendar } +// hook for external libs to manipulate event properties upon creation. +// should manipulate the event in-place. +Calendar.prototype.normalizeEvent = function(event) { +}; + + // Returns a list of events that the given event should be compared against when being considered for a move to // the specified span. Attached to the Calendar's prototype because EventManager is a mixin for a Calendar. Calendar.prototype.getPeerEvents = function(span, event) { @@ -10937,6 +11643,8 @@ function backupEventDates(event) { var BasicView = FC.BasicView = View.extend({ + scroller: null, + dayGridClass: DayGrid, // class the dayGrid will be instantiated from (overridable by subclasses) dayGrid: null, // the main subcomponent that does most of the heavy lifting @@ -10951,6 +11659,11 @@ var BasicView = FC.BasicView = View.extend({ initialize: function() { this.dayGrid = this.instantiateDayGrid(); + + this.scroller = new Scroller({ + overflowX: 'hidden', + overflowY: 'auto' + }); }, @@ -11003,9 +11716,12 @@ var BasicView = FC.BasicView = View.extend({ this.el.addClass('fc-basic-view').html(this.renderSkeletonHtml()); this.renderHead(); - this.scrollerEl = this.el.find('.fc-day-grid-container'); + this.scroller.render(); + var dayGridContainerEl = this.scroller.el.addClass('fc-day-grid-container'); + var dayGridEl = $('<div class="fc-day-grid" />').appendTo(dayGridContainerEl); + this.el.find('.fc-body > tr > td').append(dayGridContainerEl); - this.dayGrid.setElement(this.el.find('.fc-day-grid')); + this.dayGrid.setElement(dayGridEl); this.dayGrid.renderDates(this.hasRigidRows()); }, @@ -11024,6 +11740,7 @@ var BasicView = FC.BasicView = View.extend({ unrenderDates: function() { this.dayGrid.unrenderDates(); this.dayGrid.removeElement(); + this.scroller.destroy(); }, @@ -11044,11 +11761,7 @@ var BasicView = FC.BasicView = View.extend({ '</thead>' + '<tbody class="fc-body">' + '<tr>' + - '<td class="' + this.widgetContentClass + '">' + - '<div class="fc-day-grid-container">' + - '<div class="fc-day-grid"/>' + - '</div>' + - '</td>' + + '<td class="' + this.widgetContentClass + '"></td>' + '</tr>' + '</tbody>' + '</table>'; @@ -11091,9 +11804,10 @@ var BasicView = FC.BasicView = View.extend({ setHeight: function(totalHeight, isAuto) { var eventLimit = this.opt('eventLimit'); var scrollerHeight; + var scrollbarWidths; // reset all heights to be natural - unsetScroller(this.scrollerEl); + this.scroller.clear(); uncompensateScroll(this.headRowEl); this.dayGrid.removeSegPopover(); // kill the "more" popover if displayed @@ -11103,6 +11817,8 @@ var BasicView = FC.BasicView = View.extend({ this.dayGrid.limitRows(eventLimit); // limit the levels first so the height can redistribute after } + // distribute the height to the rows + // (totalHeight is a "recommended" value if isAuto) scrollerHeight = this.computeScrollerHeight(totalHeight); this.setGridHeight(scrollerHeight, isAuto); @@ -11111,17 +11827,33 @@ var BasicView = FC.BasicView = View.extend({ this.dayGrid.limitRows(eventLimit); // limit the levels after the grid's row heights have been set } - if (!isAuto && setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? + if (!isAuto) { // should we force dimensions of the scroll container? - compensateScroll(this.headRowEl, getScrollbarWidths(this.scrollerEl)); + this.scroller.setHeight(scrollerHeight); + scrollbarWidths = this.scroller.getScrollbarWidths(); - // doing the scrollbar compensation might have created text overflow which created more height. redo - scrollerHeight = this.computeScrollerHeight(totalHeight); - this.scrollerEl.height(scrollerHeight); + if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? + + compensateScroll(this.headRowEl, scrollbarWidths); + + // doing the scrollbar compensation might have created text overflow which created more height. redo + scrollerHeight = this.computeScrollerHeight(totalHeight); + this.scroller.setHeight(scrollerHeight); + } + + // guarantees the same scrollbar widths + this.scroller.lockOverflow(scrollbarWidths); } }, + // given a desired total height of the view, returns what the height of the scroller should be + computeScrollerHeight: function(totalHeight) { + return totalHeight - + subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller + }, + + // Sets the height of just the DayGrid component in this view setGridHeight: function(height, isAuto) { if (isAuto) { @@ -11133,6 +11865,20 @@ var BasicView = FC.BasicView = View.extend({ }, + /* Scroll + ------------------------------------------------------------------------------------------------------------------*/ + + + queryScroll: function() { + return this.scroller.getScrollTop(); + }, + + + setScroll: function(top) { + this.scroller.setScrollTop(top); + }, + + /* Hit Areas ------------------------------------------------------------------------------------------------------------------*/ // forward all hit-related method calls to dayGrid @@ -11368,6 +12114,8 @@ fcViews.month = { var AgendaView = FC.AgendaView = View.extend({ + scroller: null, + timeGridClass: TimeGrid, // class used to instantiate the timeGrid. subclasses can override timeGrid: null, // the main time-grid subcomponent of this view @@ -11377,11 +12125,10 @@ var AgendaView = FC.AgendaView = View.extend({ axisWidth: null, // the width of the time axis running down the side headContainerEl: null, // div that hold's the timeGrid's rendered date header - noScrollRowEls: null, // set of fake row elements that must compensate when scrollerEl has scrollbars + noScrollRowEls: null, // set of fake row elements that must compensate when scroller has scrollbars // when the time-grid isn't tall enough to occupy the given height, we render an <hr> underneath bottomRuleEl: null, - bottomRuleHeight: null, initialize: function() { @@ -11390,6 +12137,11 @@ var AgendaView = FC.AgendaView = View.extend({ if (this.opt('allDaySlot')) { // should we display the "all-day" area? this.dayGrid = this.instantiateDayGrid(); // the all-day subcomponent of this view } + + this.scroller = new Scroller({ + overflowX: 'hidden', + overflowY: 'auto' + }); }, @@ -11430,10 +12182,12 @@ var AgendaView = FC.AgendaView = View.extend({ this.el.addClass('fc-agenda-view').html(this.renderSkeletonHtml()); this.renderHead(); - // the element that wraps the time-grid that will probably scroll - this.scrollerEl = this.el.find('.fc-time-grid-container'); + this.scroller.render(); + var timeGridWrapEl = this.scroller.el.addClass('fc-time-grid-container'); + var timeGridEl = $('<div class="fc-time-grid" />').appendTo(timeGridWrapEl); + this.el.find('.fc-body > tr > td').append(timeGridWrapEl); - this.timeGrid.setElement(this.el.find('.fc-time-grid')); + this.timeGrid.setElement(timeGridEl); this.timeGrid.renderDates(); // the <hr> that sometimes displays under the time-grid @@ -11470,6 +12224,8 @@ var AgendaView = FC.AgendaView = View.extend({ this.dayGrid.unrenderDates(); this.dayGrid.removeElement(); } + + this.scroller.destroy(); }, @@ -11491,9 +12247,6 @@ var AgendaView = FC.AgendaView = View.extend({ '<hr class="fc-divider ' + this.widgetHeaderClass + '"/>' : '' ) + - '<div class="fc-time-grid-container">' + - '<div class="fc-time-grid"/>' + - '</div>' + '</td>' + '</tr>' + '</tbody>' + @@ -11573,16 +12326,11 @@ var AgendaView = FC.AgendaView = View.extend({ setHeight: function(totalHeight, isAuto) { var eventLimit; var scrollerHeight; - - if (this.bottomRuleHeight === null) { - // calculate the height of the rule the very first time - this.bottomRuleHeight = this.bottomRuleEl.outerHeight(); - } - this.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary + var scrollbarWidths; // reset all dimensions back to the original state - this.scrollerEl.css('overflow', ''); - unsetScroller(this.scrollerEl); + this.bottomRuleEl.hide(); // .show() will be called later if this <hr> is necessary + this.scroller.clear(); // sets height to 'auto' and clears overflow uncompensateScroll(this.noScrollRowEls); // limit number of events in the all-day area @@ -11598,28 +12346,46 @@ var AgendaView = FC.AgendaView = View.extend({ } } - if (!isAuto) { // should we force dimensions of the scroll container, or let the contents be natural height? + if (!isAuto) { // should we force dimensions of the scroll container? scrollerHeight = this.computeScrollerHeight(totalHeight); - if (setPotentialScroller(this.scrollerEl, scrollerHeight)) { // using scrollbars? + this.scroller.setHeight(scrollerHeight); + scrollbarWidths = this.scroller.getScrollbarWidths(); + + if (scrollbarWidths.left || scrollbarWidths.right) { // using scrollbars? // make the all-day and header rows lines up - compensateScroll(this.noScrollRowEls, getScrollbarWidths(this.scrollerEl)); + compensateScroll(this.noScrollRowEls, scrollbarWidths); // the scrollbar compensation might have changed text flow, which might affect height, so recalculate // and reapply the desired height to the scroller. scrollerHeight = this.computeScrollerHeight(totalHeight); - this.scrollerEl.height(scrollerHeight); + this.scroller.setHeight(scrollerHeight); } - else { // no scrollbars - // still, force a height and display the bottom rule (marks the end of day) - this.scrollerEl.height(scrollerHeight).css('overflow', 'hidden'); // in case <hr> goes outside + + // guarantees the same scrollbar widths + this.scroller.lockOverflow(scrollbarWidths); + + // if there's any space below the slats, show the horizontal rule. + // this won't cause any new overflow, because lockOverflow already called. + if (this.timeGrid.getTotalSlatHeight() < scrollerHeight) { this.bottomRuleEl.show(); } } }, + // given a desired total height of the view, returns what the height of the scroller should be + computeScrollerHeight: function(totalHeight) { + return totalHeight - + subtractInnerElHeight(this.el, this.scroller.el); // everything that's NOT the scroller + }, + + + /* Scroll + ------------------------------------------------------------------------------------------------------------------*/ + + // Computes the initial pre-configured scroll state prior to allowing the user to change it computeInitialScroll: function() { var scrollTime = moment.duration(this.opt('scrollTime')); @@ -11636,6 +12402,16 @@ var AgendaView = FC.AgendaView = View.extend({ }, + queryScroll: function() { + return this.scroller.getScrollTop(); + }, + + + setScroll: function(top) { + this.scroller.setScrollTop(top); + }, + + /* Hit Areas ------------------------------------------------------------------------------------------------------------------*/ // forward all hit-related method calls to the grids (dayGrid might not be defined) diff --git a/library/fullcalendar/fullcalendar.min.css b/library/fullcalendar/fullcalendar.min.css index 2dc7e9f8a..3a251eb19 100644 --- a/library/fullcalendar/fullcalendar.min.css +++ b/library/fullcalendar/fullcalendar.min.css @@ -1,5 +1,5 @@ /*! - * FullCalendar v2.6.1 Stylesheet + * FullCalendar v2.7.3 Stylesheet * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw - */.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}body .fc{font-size:1em}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1;opacity:.3;filter:alpha(opacity=30)}.fc-bgevent{background:#8fdf82;opacity:.3;filter:alpha(opacity=30)}.fc-nonbusiness{background:#d7d7d7}.fc-icon{display:inline-block;width:1em;height:1em;line-height:1em;font-size:1em;text-align:center;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative;margin:0 -1em}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%;left:3%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%;left:-3%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%;left:-2%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%;left:2%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;white-space:nowrap;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-default{background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.fc-button-group{display:inline-block}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-popover .fc-header .fc-close{cursor:pointer}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc-bg{bottom:0}.fc-bg table{height:100%}.fc table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc th{text-align:center}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{overflow-y:scroll;overflow-x:hidden}.fc-scroller>*{position:relative;width:100%;overflow:hidden}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-event.fc-draggable,.fc-event[href]{cursor:pointer}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25;filter:alpha(opacity=25)}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:3}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-h-event .fc-resizer{top:-1px;bottom:-1px;left:-1px;right:-1px;width:5px}.fc-ltr .fc-h-event .fc-start-resizer,.fc-ltr .fc-h-event .fc-start-resizer:after,.fc-ltr .fc-h-event .fc-start-resizer:before,.fc-rtl .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-end-resizer:after,.fc-rtl .fc-h-event .fc-end-resizer:before{right:auto;cursor:w-resize}.fc-ltr .fc-h-event .fc-end-resizer,.fc-ltr .fc-h-event .fc-end-resizer:after,.fc-ltr .fc-h-event .fc-end-resizer:before,.fc-rtl .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-start-resizer:after,.fc-rtl .fc-h-event .fc-start-resizer:before{left:auto;cursor:e-resize}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-day-grid-event .fc-resizer{left:-3px;right:-3px;width:7px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-toolbar{text-align:center;margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid{overflow:hidden}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number{text-align:center}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3;filter:alpha(opacity=30)}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px;white-space:nowrap}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight-container{position:relative}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em;white-space:nowrap}.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event .fc-resizer:after{content:"="}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}
\ No newline at end of file + * (c) 2016 Adam Shaw + */.fc-bgevent,.fc-highlight{opacity:.3;filter:alpha(opacity=30)}.fc-icon,body .fc{font-size:1em}.fc-button-group,.fc-icon{display:inline-block}.fc-bg,.fc-row .fc-bgevent-skeleton,.fc-row .fc-highlight-skeleton{bottom:0}.fc-icon,.fc-unselectable{-khtml-user-select:none;-webkit-touch-callout:none}.fc .fc-axis,.fc button,.fc-time-grid-event .fc-time,.fc-time-grid-event.fc-short .fc-content{white-space:nowrap}.fc{direction:ltr;text-align:left}.fc-rtl{text-align:right}.fc th,.fc-basic-view .fc-week-number,.fc-icon,.fc-toolbar{text-align:center}.fc-unthemed .fc-content,.fc-unthemed .fc-divider,.fc-unthemed .fc-popover,.fc-unthemed .fc-row,.fc-unthemed tbody,.fc-unthemed td,.fc-unthemed th,.fc-unthemed thead{border-color:#ddd}.fc-unthemed .fc-popover{background-color:#fff}.fc-unthemed .fc-divider,.fc-unthemed .fc-popover .fc-header{background:#eee}.fc-unthemed .fc-popover .fc-header .fc-close{color:#666}.fc-unthemed .fc-today{background:#fcf8e3}.fc-highlight{background:#bce8f1}.fc-bgevent{background:#8fdf82}.fc-nonbusiness{background:#d7d7d7}.fc-icon{height:1em;line-height:1em;overflow:hidden;font-family:"Courier New",Courier,monospace;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fc-icon:after{position:relative}.fc-icon-left-single-arrow:after{content:"\02039";font-weight:700;font-size:200%;top:-7%}.fc-icon-right-single-arrow:after{content:"\0203A";font-weight:700;font-size:200%;top:-7%}.fc-icon-left-double-arrow:after{content:"\000AB";font-size:160%;top:-7%}.fc-icon-right-double-arrow:after{content:"\000BB";font-size:160%;top:-7%}.fc-icon-left-triangle:after{content:"\25C4";font-size:125%;top:3%}.fc-icon-right-triangle:after{content:"\25BA";font-size:125%;top:3%}.fc-icon-down-triangle:after{content:"\25BC";font-size:125%;top:2%}.fc-icon-x:after{content:"\000D7";font-size:200%;top:6%}.fc button{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;margin:0;height:2.1em;padding:0 .6em;font-size:1em;cursor:pointer}.fc button::-moz-focus-inner{margin:0;padding:0}.fc-state-default{border:1px solid;background-color:#f5f5f5;background-image:-moz-linear-gradient(top,#fff,#e6e6e6);background-image:-webkit-gradient(linear,0 0,0 100%,from(#fff),to(#e6e6e6));background-image:-webkit-linear-gradient(top,#fff,#e6e6e6);background-image:-o-linear-gradient(top,#fff,#e6e6e6);background-image:linear-gradient(to bottom,#fff,#e6e6e6);background-repeat:repeat-x;border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);color:#333;text-shadow:0 1px 1px rgba(255,255,255,.75);box-shadow:inset 0 1px 0 rgba(255,255,255,.2),0 1px 2px rgba(0,0,0,.05)}.fc-state-default.fc-corner-left{border-top-left-radius:4px;border-bottom-left-radius:4px}.fc-state-default.fc-corner-right{border-top-right-radius:4px;border-bottom-right-radius:4px}.fc button .fc-icon{position:relative;top:-.05em;margin:0 .2em;vertical-align:middle}.fc-state-active,.fc-state-disabled,.fc-state-down,.fc-state-hover{color:#333;background-color:#e6e6e6}.fc-state-hover{color:#333;text-decoration:none;background-position:0 -15px;-webkit-transition:background-position .1s linear;-moz-transition:background-position .1s linear;-o-transition:background-position .1s linear;transition:background-position .1s linear}.fc-state-active,.fc-state-down{background-color:#ccc;background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.fc-state-disabled{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.fc-event.fc-draggable,.fc-event[href],.fc-popover .fc-header .fc-close{cursor:pointer}.fc .fc-button-group>*{float:left;margin:0 0 0 -1px}.fc .fc-button-group>:first-child{margin-left:0}.fc-popover{position:absolute;box-shadow:0 2px 6px rgba(0,0,0,.15)}.fc-popover .fc-header{padding:2px 4px}.fc-popover .fc-header .fc-title{margin:0 2px}.fc-ltr .fc-popover .fc-header .fc-title,.fc-rtl .fc-popover .fc-header .fc-close{float:left}.fc-ltr .fc-popover .fc-header .fc-close,.fc-rtl .fc-popover .fc-header .fc-title{float:right}.fc-unthemed .fc-popover{border-width:1px;border-style:solid}.fc-unthemed .fc-popover .fc-header .fc-close{font-size:.9em;margin-top:2px}.fc-popover>.ui-widget-header+.ui-widget-content{border-top:0}.fc-divider{border-style:solid;border-width:1px}hr.fc-divider{height:0;margin:0;padding:0 0 2px;border-width:1px 0}.fc-bg table,.fc-row .fc-bgevent-skeleton table,.fc-row .fc-highlight-skeleton table{height:100%}.fc-clear{clear:both}.fc-bg,.fc-bgevent-skeleton,.fc-helper-skeleton,.fc-highlight-skeleton{position:absolute;top:0;left:0;right:0}.fc table{width:100%;table-layout:fixed;border-collapse:collapse;border-spacing:0;font-size:1em}.fc td,.fc th{border-style:solid;border-width:1px;padding:0;vertical-align:top}.fc td.fc-today{border-style:double}.fc .fc-row{border-style:solid;border-width:0}.fc-row table{border-left:0 hidden transparent;border-right:0 hidden transparent;border-bottom:0 hidden transparent}.fc-row:first-child table{border-top:0 hidden transparent}.fc-row{position:relative}.fc-row .fc-bg{z-index:1}.fc-row .fc-bgevent-skeleton td,.fc-row .fc-highlight-skeleton td{border-color:transparent}.fc-row .fc-bgevent-skeleton{z-index:2}.fc-row .fc-highlight-skeleton{z-index:3}.fc-row .fc-content-skeleton{position:relative;z-index:4;padding-bottom:2px}.fc-row .fc-helper-skeleton{z-index:5}.fc-row .fc-content-skeleton td,.fc-row .fc-helper-skeleton td{background:0 0;border-color:transparent;border-bottom:0}.fc-row .fc-content-skeleton tbody td,.fc-row .fc-helper-skeleton tbody td{border-top:0}.fc-scroller{-webkit-overflow-scrolling:touch}.fc-row.fc-rigid,.fc-time-grid-event{overflow:hidden}.fc-scroller>.fc-day-grid,.fc-scroller>.fc-time-grid{position:relative;width:100%}.fc-event{position:relative;display:block;font-size:.85em;line-height:1.3;border-radius:3px;border:1px solid #3a87ad;background-color:#3a87ad;font-weight:400}.fc-event,.fc-event:hover,.ui-widget .fc-event{color:#fff;text-decoration:none}.fc-not-allowed,.fc-not-allowed .fc-event{cursor:not-allowed}.fc-event .fc-bg{z-index:1;background:#fff;opacity:.25;filter:alpha(opacity=25)}.fc-event .fc-content{position:relative;z-index:2}.fc-event .fc-resizer{position:absolute;z-index:4;display:none}.fc-event.fc-allow-mouse-resize .fc-resizer,.fc-event.fc-selected .fc-resizer{display:block}.fc-event.fc-selected .fc-resizer:before{content:"";position:absolute;z-index:9999;top:50%;left:50%;width:40px;height:40px;margin-left:-20px;margin-top:-20px}.fc-event.fc-selected{z-index:9999!important;box-shadow:0 2px 5px rgba(0,0,0,.2)}.fc-event.fc-selected.fc-dragging{box-shadow:0 2px 7px rgba(0,0,0,.3)}.fc-h-event.fc-selected:before{content:"";position:absolute;z-index:3;top:-10px;bottom:-10px;left:0;right:0}.fc-ltr .fc-h-event.fc-not-start,.fc-rtl .fc-h-event.fc-not-end{margin-left:0;border-left-width:0;padding-left:1px;border-top-left-radius:0;border-bottom-left-radius:0}.fc-ltr .fc-h-event.fc-not-end,.fc-rtl .fc-h-event.fc-not-start{margin-right:0;border-right-width:0;padding-right:1px;border-top-right-radius:0;border-bottom-right-radius:0}.fc-ltr .fc-h-event .fc-start-resizer,.fc-rtl .fc-h-event .fc-end-resizer{cursor:w-resize;left:-1px}.fc-ltr .fc-h-event .fc-end-resizer,.fc-rtl .fc-h-event .fc-start-resizer{cursor:e-resize;right:-1px}.fc-h-event.fc-allow-mouse-resize .fc-resizer{width:7px;top:-1px;bottom:-1px}.fc-h-event.fc-selected .fc-resizer{border-radius:4px;border-width:1px;width:6px;height:6px;border-style:solid;border-color:inherit;background:#fff;top:50%;margin-top:-4px}.fc-ltr .fc-h-event.fc-selected .fc-start-resizer,.fc-rtl .fc-h-event.fc-selected .fc-end-resizer{margin-left:-4px}.fc-ltr .fc-h-event.fc-selected .fc-end-resizer,.fc-rtl .fc-h-event.fc-selected .fc-start-resizer{margin-right:-4px}.fc-day-grid-event{margin:1px 2px 0;padding:0 1px}.fc-day-grid-event.fc-selected:after{content:"";position:absolute;z-index:1;top:-1px;right:-1px;bottom:-1px;left:-1px;background:#000;opacity:.25;filter:alpha(opacity=25)}.fc-day-grid-event .fc-content{white-space:nowrap;overflow:hidden}.fc-day-grid-event .fc-time{font-weight:700}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer{margin-left:-2px}.fc-ltr .fc-day-grid-event.fc-allow-mouse-resize .fc-end-resizer,.fc-rtl .fc-day-grid-event.fc-allow-mouse-resize .fc-start-resizer{margin-right:-2px}a.fc-more{margin:1px 3px;font-size:.85em;cursor:pointer;text-decoration:none}a.fc-more:hover{text-decoration:underline}.fc-limited{display:none}.fc-day-grid .fc-row{z-index:1}.fc-more-popover{z-index:2;width:220px}.fc-more-popover .fc-event-container{padding:10px}.fc-now-indicator{position:absolute;border:0 solid red}.fc-unselectable{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.fc-toolbar{margin-bottom:1em}.fc-toolbar .fc-left{float:left}.fc-toolbar .fc-right{float:right}.fc-toolbar .fc-center{display:inline-block}.fc .fc-toolbar>*>*{float:left;margin-left:.75em}.fc .fc-toolbar>*>:first-child{margin-left:0}.fc-toolbar h2{margin:0}.fc-toolbar button{position:relative}.fc-toolbar .fc-state-hover,.fc-toolbar .ui-state-hover{z-index:2}.fc-toolbar .fc-state-down{z-index:3}.fc-toolbar .fc-state-active,.fc-toolbar .ui-state-active{z-index:4}.fc-toolbar button:focus{z-index:5}.fc-view-container *,.fc-view-container :after,.fc-view-container :before{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.fc-view,.fc-view>table{position:relative;z-index:1}.fc-basicDay-view .fc-content-skeleton,.fc-basicWeek-view .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc-basic-view .fc-body .fc-row{min-height:4em}.fc-row.fc-rigid .fc-content-skeleton{position:absolute;top:0;left:0;right:0}.fc-basic-view .fc-day-number,.fc-basic-view .fc-week-number{padding:0 2px}.fc-basic-view td.fc-day-number,.fc-basic-view td.fc-week-number span{padding-top:2px;padding-bottom:2px}.fc-basic-view .fc-week-number span{display:inline-block;min-width:1.25em}.fc-ltr .fc-basic-view .fc-day-number{text-align:right}.fc-rtl .fc-basic-view .fc-day-number{text-align:left}.fc-day-number.fc-other-month{opacity:.3;filter:alpha(opacity=30)}.fc-agenda-view .fc-day-grid{position:relative;z-index:2}.fc-agenda-view .fc-day-grid .fc-row{min-height:3em}.fc-agenda-view .fc-day-grid .fc-row .fc-content-skeleton{padding-top:1px;padding-bottom:1em}.fc .fc-axis{vertical-align:middle;padding:0 4px}.fc-ltr .fc-axis{text-align:right}.fc-rtl .fc-axis{text-align:left}.ui-widget td.fc-axis{font-weight:400}.fc-time-grid,.fc-time-grid-container{position:relative;z-index:1}.fc-time-grid{min-height:100%}.fc-time-grid table{border:0 hidden transparent}.fc-time-grid>.fc-bg{z-index:1}.fc-time-grid .fc-slats,.fc-time-grid>hr{position:relative;z-index:2}.fc-time-grid .fc-content-col{position:relative}.fc-time-grid .fc-content-skeleton{position:absolute;z-index:3;top:0;left:0;right:0}.fc-time-grid .fc-business-container{position:relative;z-index:1}.fc-time-grid .fc-bgevent-container{position:relative;z-index:2}.fc-time-grid .fc-highlight-container{z-index:3;position:relative}.fc-time-grid .fc-event-container{position:relative;z-index:4}.fc-time-grid .fc-now-indicator-line{z-index:5}.fc-time-grid .fc-helper-container{position:relative;z-index:6}.fc-time-grid .fc-slats td{height:1.5em;border-bottom:0}.fc-time-grid .fc-slats .fc-minor td{border-top-style:dotted}.fc-time-grid .fc-slats .ui-widget-content{background:0 0}.fc-time-grid .fc-highlight{position:absolute;left:0;right:0}.fc-ltr .fc-time-grid .fc-event-container{margin:0 2.5% 0 2px}.fc-rtl .fc-time-grid .fc-event-container{margin:0 2px 0 2.5%}.fc-time-grid .fc-bgevent,.fc-time-grid .fc-event{position:absolute;z-index:1}.fc-time-grid .fc-bgevent{left:0;right:0}.fc-v-event.fc-not-start{border-top-width:0;padding-top:1px;border-top-left-radius:0;border-top-right-radius:0}.fc-v-event.fc-not-end{border-bottom-width:0;padding-bottom:1px;border-bottom-left-radius:0;border-bottom-right-radius:0}.fc-time-grid-event.fc-selected{overflow:visible}.fc-time-grid-event.fc-selected .fc-bg{display:none}.fc-time-grid-event .fc-content{overflow:hidden}.fc-time-grid-event .fc-time,.fc-time-grid-event .fc-title{padding:0 1px}.fc-time-grid-event .fc-time{font-size:.85em}.fc-time-grid-event.fc-short .fc-time,.fc-time-grid-event.fc-short .fc-title{display:inline-block;vertical-align:top}.fc-time-grid-event.fc-short .fc-time span{display:none}.fc-time-grid-event.fc-short .fc-time:before{content:attr(data-start)}.fc-time-grid-event.fc-short .fc-time:after{content:"\000A0-\000A0"}.fc-time-grid-event.fc-short .fc-title{font-size:.85em;padding:0}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer{left:0;right:0;bottom:0;height:8px;overflow:hidden;line-height:8px;font-size:11px;font-family:monospace;text-align:center;cursor:s-resize}.fc-time-grid-event.fc-allow-mouse-resize .fc-resizer:after{content:"="}.fc-time-grid-event.fc-selected .fc-resizer{border-radius:5px;border-width:1px;width:8px;height:8px;border-style:solid;border-color:inherit;background:#fff;left:50%;margin-left:-5px;bottom:-5px}.fc-time-grid .fc-now-indicator-line{border-top-width:1px;left:0;right:0}.fc-time-grid .fc-now-indicator-arrow{margin-top:-5px}.fc-ltr .fc-time-grid .fc-now-indicator-arrow{left:0;border-width:5px 0 5px 6px;border-top-color:transparent;border-bottom-color:transparent}.fc-rtl .fc-time-grid .fc-now-indicator-arrow{right:0;border-width:5px 6px 5px 0;border-top-color:transparent;border-bottom-color:transparent}
\ No newline at end of file diff --git a/library/fullcalendar/fullcalendar.min.js b/library/fullcalendar/fullcalendar.min.js index 5c3cce29f..f27380229 100644 --- a/library/fullcalendar/fullcalendar.min.js +++ b/library/fullcalendar/fullcalendar.min.js @@ -1,9 +1,9 @@ /*! - * FullCalendar v2.6.1 + * FullCalendar v2.7.3 * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw + * (c) 2016 Adam Shaw */ -!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){function c(a){return Q(a,Ra)}function d(b){var c,d={views:b.views||{}};return a.each(b,function(b,e){"views"!=b&&(a.isPlainObject(e)&&!/(time|duration|interval)$/i.test(b)&&-1==a.inArray(b,Ra)?(c=null,a.each(e,function(a,e){/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(a)?(d.views[a]||(d.views[a]={}),d.views[a][b]=e):(c||(c={}),c[a]=e)}),c&&(d[b]=c)):d[b]=e)}),d}function e(a,b){b.left&&a.css({"border-left-width":1,"margin-left":b.left-1}),b.right&&a.css({"border-right-width":1,"margin-right":b.right-1})}function f(a){a.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function g(){a("body").addClass("fc-not-allowed")}function h(){a("body").removeClass("fc-not-allowed")}function i(b,c,d){var e=Math.floor(c/b.length),f=Math.floor(c-e*(b.length-1)),g=[],h=[],i=[],k=0;j(b),b.each(function(c,d){var j=c===b.length-1?f:e,l=a(d).outerHeight(!0);j>l?(g.push(d),h.push(l),i.push(a(d).height())):k+=l}),d&&(c-=k,e=Math.floor(c/g.length),f=Math.floor(c-e*(g.length-1))),a(g).each(function(b,c){var d=b===g.length-1?f:e,j=h[b],k=i[b],l=d-(j-k);d>j&&a(c).height(l)})}function j(a){a.height("")}function k(b){var c=0;return b.find("> span").each(function(b,d){var e=a(d).outerWidth();e>c&&(c=e)}),c++,b.width(c),c}function l(a,b){return a.height(b).addClass("fc-scroller"),a[0].scrollHeight-1>a[0].clientHeight?!0:(m(a),!1)}function m(a){a.height("").removeClass("fc-scroller")}function n(b){var c=b.css("position"),d=b.parents().filter(function(){var b=a(this);return/(auto|scroll)/.test(b.css("overflow")+b.css("overflow-y")+b.css("overflow-x"))}).eq(0);return"fixed"!==c&&d.length?d:a(b[0].ownerDocument||document)}function o(a){var b=a.offset();return{left:b.left,right:b.left+a.outerWidth(),top:b.top,bottom:b.top+a.outerHeight()}}function p(a){var b=a.offset(),c=r(a),d=b.left+u(a,"border-left-width")+c.left,e=b.top+u(a,"border-top-width")+c.top;return{left:d,right:d+a[0].clientWidth,top:e,bottom:e+a[0].clientHeight}}function q(a){var b=a.offset(),c=b.left+u(a,"border-left-width")+u(a,"padding-left"),d=b.top+u(a,"border-top-width")+u(a,"padding-top");return{left:c,right:c+a.width(),top:d,bottom:d+a.height()}}function r(a){var b=a.innerWidth()-a[0].clientWidth,c={left:0,right:0,top:0,bottom:a.innerHeight()-a[0].clientHeight};return s()&&"rtl"==a.css("direction")?c.left=b:c.right=b,c}function s(){return null===Sa&&(Sa=t()),Sa}function t(){var b=a("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),c=b.children(),d=c.offset().left>b.offset().left;return b.remove(),d}function u(a,b){return parseFloat(a.css(b))||0}function v(a){return 1==a.which&&!a.ctrlKey}function w(a,b){var c={left:Math.max(a.left,b.left),right:Math.min(a.right,b.right),top:Math.max(a.top,b.top),bottom:Math.min(a.bottom,b.bottom)};return c.left<c.right&&c.top<c.bottom?c:!1}function x(a,b){return{left:Math.min(Math.max(a.left,b.left),b.right),top:Math.min(Math.max(a.top,b.top),b.bottom)}}function y(a){return{left:(a.left+a.right)/2,top:(a.top+a.bottom)/2}}function z(a,b){return{left:a.left-b.left,top:a.top-b.top}}function A(b){var c,d,e=[],f=[];for("string"==typeof b?f=b.split(/\s*,\s*/):"function"==typeof b?f=[b]:a.isArray(b)&&(f=b),c=0;c<f.length;c++)d=f[c],"string"==typeof d?e.push("-"==d.charAt(0)?{field:d.substring(1),order:-1}:{field:d,order:1}):"function"==typeof d&&e.push({func:d});return e}function B(a,b,c){var d,e;for(d=0;d<c.length;d++)if(e=C(a,b,c[d]))return e;return 0}function C(a,b,c){return c.func?c.func(a,b):D(a[c.field],b[c.field])*(c.order||1)}function D(b,c){return b||c?null==c?-1:null==b?1:"string"===a.type(b)||"string"===a.type(c)?String(b).localeCompare(String(c)):b-c:0}function E(a,b){var c,d,e,f,g=a.start,h=a.end,i=b.start,j=b.end;return h>i&&j>g?(g>=i?(c=g.clone(),e=!0):(c=i.clone(),e=!1),j>=h?(d=h.clone(),f=!0):(d=j.clone(),f=!1),{start:c,end:d,isStart:e,isEnd:f}):void 0}function F(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days"),ms:a.time()-c.time()})}function G(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days")})}function H(a,c,d){return b.duration(Math.round(a.diff(c,d,!0)),d)}function I(a,b){var c,d,e;for(c=0;c<Ua.length&&(d=Ua[c],e=J(d,a,b),!(e>=1&&ba(e)));c++);return d}function J(a,c,d){return null!=d?d.diff(c,a,!0):b.isDuration(c)?c.as(a):c.end.diff(c.start,a,!0)}function K(a,b,c){var d;return N(c)?(b-a)/c:(d=c.asMonths(),Math.abs(d)>=1&&ba(d)?b.diff(a,"months",!0)/d:b.diff(a,"days",!0)/c.asDays())}function L(a,b){var c,d;return N(a)||N(b)?a/b:(c=a.asMonths(),d=b.asMonths(),Math.abs(c)>=1&&ba(c)&&Math.abs(d)>=1&&ba(d)?c/d:a.asDays()/b.asDays())}function M(a,c){var d;return N(a)?b.duration(a*c):(d=a.asMonths(),Math.abs(d)>=1&&ba(d)?b.duration({months:d*c}):b.duration({days:a.asDays()*c}))}function N(a){return Boolean(a.hours()||a.minutes()||a.seconds()||a.milliseconds())}function O(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function P(a){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(a)}function Q(a,b){var c,d,e,f,g,h,i={};if(b)for(c=0;c<b.length;c++){for(d=b[c],e=[],f=a.length-1;f>=0;f--)if(g=a[f][d],"object"==typeof g)e.unshift(g);else if(void 0!==g){i[d]=g;break}e.length&&(i[d]=Q(e))}for(c=a.length-1;c>=0;c--){h=a[c];for(d in h)d in i||(i[d]=h[d])}return i}function R(a){var b=function(){};return b.prototype=a,new b}function S(a,b){for(var c in a)U(a,c)&&(b[c]=a[c])}function T(a,b){var c,d,e=["constructor","toString","valueOf"];for(c=0;c<e.length;c++)d=e[c],a[d]!==Object.prototype[d]&&(b[d]=a[d])}function U(a,b){return Ya.call(a,b)}function V(b){return/undefined|null|boolean|number|string/.test(a.type(b))}function W(b,c,d){if(a.isFunction(b)&&(b=[b]),b){var e,f;for(e=0;e<b.length;e++)f=b[e].apply(c,d)||f;return f}}function X(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]}function Y(a){return(a+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function Z(a){return a.replace(/&.*?;/g,"")}function $(b){var c=[];return a.each(b,function(a,b){null!=b&&c.push(a+":"+b)}),c.join(";")}function _(a){return a.charAt(0).toUpperCase()+a.slice(1)}function aa(a,b){return a-b}function ba(a){return a%1===0}function ca(a,b){var c=a[b];return function(){return c.apply(a,arguments)}}function da(a,b){var c,d,e,f,g=function(){var h=+new Date-f;b>h&&h>0?c=setTimeout(g,b-h):(c=null,a.apply(e,d),c||(e=d=null))};return function(){e=this,d=arguments,f=+new Date,c||(c=setTimeout(g,b))}}function ea(c,d,e){var f,g,h,i,j=c[0],k=1==c.length&&"string"==typeof j;return b.isMoment(j)?(i=b.apply(null,c),ga(j,i)):O(j)||void 0===j?i=b.apply(null,c):(f=!1,g=!1,k?Za.test(j)?(j+="-01",c=[j],f=!0,g=!0):(h=$a.exec(j))&&(f=!h[5],g=!0):a.isArray(j)&&(g=!0),i=d||f?b.utc.apply(b,c):b.apply(null,c),f?(i._ambigTime=!0,i._ambigZone=!0):e&&(g?i._ambigZone=!0:k&&(i.utcOffset?i.utcOffset(j):i.zone(j)))),i._fullCalendar=!0,i}function fa(a,c){var d,e,f=!1,g=!1,h=a.length,i=[];for(d=0;h>d;d++)e=a[d],b.isMoment(e)||(e=Pa.moment.parseZone(e)),f=f||e._ambigTime,g=g||e._ambigZone,i.push(e);for(d=0;h>d;d++)e=i[d],c||!f||e._ambigTime?g&&!e._ambigZone&&(i[d]=e.clone().stripZone()):i[d]=e.clone().stripTime();return i}function ga(a,b){a._ambigTime?b._ambigTime=!0:b._ambigTime&&(b._ambigTime=!1),a._ambigZone?b._ambigZone=!0:b._ambigZone&&(b._ambigZone=!1)}function ha(a,b){a.year(b[0]||0).month(b[1]||0).date(b[2]||0).hours(b[3]||0).minutes(b[4]||0).seconds(b[5]||0).milliseconds(b[6]||0)}function ia(a,b){return ab.format.call(a,b)}function ja(a,b){return ka(a,pa(b))}function ka(a,b){var c,d="";for(c=0;c<b.length;c++)d+=la(a,b[c]);return d}function la(a,b){var c,d;return"string"==typeof b?b:(c=b.token)?bb[c]?bb[c](a):ia(a,c):b.maybe&&(d=ka(a,b.maybe),d.match(/[1-9]/))?d:""}function ma(a,b,c,d,e){var f;return a=Pa.moment.parseZone(a),b=Pa.moment.parseZone(b),f=(a.localeData||a.lang).call(a),c=f.longDateFormat(c)||c,d=d||" - ",na(a,b,pa(c),d,e)}function na(a,b,c,d,e){var f,g,h,i,j=a.clone().stripZone(),k=b.clone().stripZone(),l="",m="",n="",o="",p="";for(g=0;g<c.length&&(f=oa(a,b,j,k,c[g]),f!==!1);g++)l+=f;for(h=c.length-1;h>g&&(f=oa(a,b,j,k,c[h]),f!==!1);h--)m=f+m;for(i=g;h>=i;i++)n+=la(a,c[i]),o+=la(b,c[i]);return(n||o)&&(p=e?o+d+n:n+d+o),l+p+m}function oa(a,b,c,d,e){var f,g;return"string"==typeof e?e:(f=e.token)&&(g=cb[f.charAt(0)],g&&c.isSame(d,g))?ia(a,f):!1}function pa(a){return a in db?db[a]:db[a]=qa(a)}function qa(a){for(var b,c=[],d=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;b=d.exec(a);)b[1]?c.push(b[1]):b[2]?c.push({maybe:qa(b[2])}):b[3]?c.push({token:b[3]}):b[5]&&c.push(b[5]);return c}function ra(){}function sa(a,b){var c;return U(b,"constructor")&&(c=b.constructor),"function"!=typeof c&&(c=b.constructor=function(){a.apply(this,arguments)}),c.prototype=R(a.prototype),S(b,c.prototype),T(b,c.prototype),S(a,c),c}function ta(a,b){S(b.prototype||b,a.prototype)}function ua(a,b){return a||b?a&&b?a.component===b.component&&va(a,b)&&va(b,a):!1:!0}function va(a,b){for(var c in a)if(!/^(component|left|right|top|bottom)$/.test(c)&&a[c]!==b[c])return!1;return!0}function wa(a){var b=ya(a);return"background"===b||"inverse-background"===b}function xa(a){return"inverse-background"===ya(a)}function ya(a){return X((a.source||{}).rendering,a.rendering)}function za(a){var b,c,d={};for(b=0;b<a.length;b++)c=a[b],(d[c._id]||(d[c._id]=[])).push(c);return d}function Aa(a,b){return a.start-b.start}function Ba(c){var d,e,f,g,h=Pa.dataAttrPrefix;return h&&(h+="-"),d=c.data(h+"event")||null,d&&(d="object"==typeof d?a.extend({},d):{},e=d.start,null==e&&(e=d.time),f=d.duration,g=d.stick,delete d.start,delete d.time,delete d.duration,delete d.stick),null==e&&(e=c.data(h+"start")),null==e&&(e=c.data(h+"time")),null==f&&(f=c.data(h+"duration")),null==g&&(g=c.data(h+"stick")),e=null!=e?b.duration(e):null,f=null!=f?b.duration(f):null,g=Boolean(g),{eventProps:d,startTime:e,duration:f,stick:g}}function Ca(a,b){var c,d;for(c=0;c<b.length;c++)if(d=b[c],d.leftCol<=a.rightCol&&d.rightCol>=a.leftCol)return!0;return!1}function Da(a,b){return a.leftCol-b.leftCol}function Ea(a){var b,c,d,e=[];for(b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Ha(c,e[d]).length;d++);c.level=d,(e[d]||(e[d]=[])).push(c)}return e}function Fa(a){var b,c,d,e,f;for(b=0;b<a.length;b++)for(c=a[b],d=0;d<c.length;d++)for(e=c[d],e.forwardSegs=[],f=b+1;f<a.length;f++)Ha(e,a[f],e.forwardSegs)}function Ga(a){var b,c,d=a.forwardSegs,e=0;if(void 0===a.forwardPressure){for(b=0;b<d.length;b++)c=d[b],Ga(c),e=Math.max(e,1+c.forwardPressure);a.forwardPressure=e}}function Ha(a,b,c){c=c||[];for(var d=0;d<b.length;d++)Ia(a,b[d])&&c.push(b[d]);return c}function Ia(a,b){return a.bottom>b.top&&a.top<b.bottom}function Ja(c,d){function e(){U?h()&&(k(),i()):f()}function f(){V=O.theme?"ui":"fc",c.addClass("fc"),O.isRTL?c.addClass("fc-rtl"):c.addClass("fc-ltr"),O.theme?c.addClass("ui-widget"):c.addClass("fc-unthemed"),U=a("<div class='fc-view-container'/>").prependTo(c),S=N.header=new Ma(N,O),T=S.render(),T&&c.prepend(T),i(O.defaultView),O.handleWindowResize&&(Y=da(m,O.windowResizeDelay),a(window).resize(Y))}function g(){W&&W.removeElement(),S.removeElement(),U.remove(),c.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),Y&&a(window).unbind("resize",Y)}function h(){return c.is(":visible")}function i(b){ca++,W&&b&&W.type!==b&&(S.deactivateButton(W.type),H(),W.removeElement(),W=N.view=null),!W&&b&&(W=N.view=ba[b]||(ba[b]=N.instantiateView(b)),W.setElement(a("<div class='fc-view fc-"+b+"-view' />").appendTo(U)),S.activateButton(b)),W&&(Z=W.massageCurrentDate(Z),W.displaying&&Z.isWithin(W.intervalStart,W.intervalEnd)||h()&&(W.display(Z),I(),u(),v(),q())),I(),ca--}function j(a){return h()?(a&&l(),ca++,W.updateSize(!0),ca--,!0):void 0}function k(){h()&&l()}function l(){X="number"==typeof O.contentHeight?O.contentHeight:"number"==typeof O.height?O.height-(T?T.outerHeight(!0):0):Math.round(U.width()/Math.max(O.aspectRatio,.5))}function m(a){!ca&&a.target===window&&W.start&&j(!0)&&W.trigger("windowResize",aa)}function n(){p(),r()}function o(){h()&&(H(),W.displayEvents(ea),I())}function p(){H(),W.clearEvents(),I()}function q(){!O.lazyFetching||$(W.start,W.end)?r():o()}function r(){_(W.start,W.end)}function s(a){ea=a,o()}function t(){o()}function u(){S.updateTitle(W.title)}function v(){var a=N.getNow();a.isWithin(W.intervalStart,W.intervalEnd)?S.disableButton("today"):S.enableButton("today")}function w(a,b){W.select(N.buildSelectSpan.apply(N,arguments))}function x(){W&&W.unselect()}function y(){Z=W.computePrevDate(Z),i()}function z(){Z=W.computeNextDate(Z),i()}function A(){Z.add(-1,"years"),i()}function B(){Z.add(1,"years"),i()}function C(){Z=N.getNow(),i()}function D(a){Z=N.moment(a).stripZone(),i()}function E(a){Z.add(b.duration(a)),i()}function F(a,b){var c;b=b||"day",c=N.getViewSpec(b)||N.getUnitViewSpec(b),Z=a.clone(),i(c?c.type:null)}function G(){return N.applyTimezone(Z)}function H(){U.css({width:"100%",height:U.height(),overflow:"hidden"})}function I(){U.css({width:"",height:"",overflow:""})}function J(){return N}function K(){return W}function L(a,b){return void 0===b?O[a]:void(("height"==a||"contentHeight"==a||"aspectRatio"==a)&&(O[a]=b,j(!0)))}function M(a,b){var c=Array.prototype.slice.call(arguments,2);return b=b||aa,this.triggerWith(a,b,c),O[a]?O[a].apply(b,c):void 0}var N=this;N.initOptions(d||{});var O=this.options;N.render=e,N.destroy=g,N.refetchEvents=n,N.reportEvents=s,N.reportEventChange=t,N.rerenderEvents=o,N.changeView=i,N.select=w,N.unselect=x,N.prev=y,N.next=z,N.prevYear=A,N.nextYear=B,N.today=C,N.gotoDate=D,N.incrementDate=E,N.zoomTo=F,N.getDate=G,N.getCalendar=J,N.getView=K,N.option=L,N.trigger=M;var P=R(La(O.lang));if(O.monthNames&&(P._months=O.monthNames),O.monthNamesShort&&(P._monthsShort=O.monthNamesShort),O.dayNames&&(P._weekdays=O.dayNames),O.dayNamesShort&&(P._weekdaysShort=O.dayNamesShort),null!=O.firstDay){var Q=R(P._week);Q.dow=O.firstDay,P._week=Q}P._fullCalendar_weekCalc=function(a){return"function"==typeof a?a:"local"===a?a:"iso"===a||"ISO"===a?"ISO":void 0}(O.weekNumberCalculation),N.defaultAllDayEventDuration=b.duration(O.defaultAllDayEventDuration),N.defaultTimedEventDuration=b.duration(O.defaultTimedEventDuration),N.moment=function(){var a;return"local"===O.timezone?(a=Pa.moment.apply(null,arguments),a.hasTime()&&a.local()):a="UTC"===O.timezone?Pa.moment.utc.apply(null,arguments):Pa.moment.parseZone.apply(null,arguments),"_locale"in a?a._locale=P:a._lang=P,a},N.getIsAmbigTimezone=function(){return"local"!==O.timezone&&"UTC"!==O.timezone},N.applyTimezone=function(a){if(!a.hasTime())return a.clone();var b,c=N.moment(a.toArray()),d=a.time()-c.time();return d&&(b=c.clone().add(d),a.time()-b.time()===0&&(c=b)),c},N.getNow=function(){var a=O.now;return"function"==typeof a&&(a=a()),N.moment(a).stripZone()},N.getEventEnd=function(a){return a.end?a.end.clone():N.getDefaultEventEnd(a.allDay,a.start)},N.getDefaultEventEnd=function(a,b){var c=b.clone();return a?c.stripTime().add(N.defaultAllDayEventDuration):c.add(N.defaultTimedEventDuration),N.getIsAmbigTimezone()&&c.stripZone(),c},N.humanizeDuration=function(a){return(a.locale||a.lang).call(a,O.lang).humanize()},Na.call(N,O);var S,T,U,V,W,X,Y,Z,$=N.isFetchNeeded,_=N.fetchEvents,aa=c[0],ba={},ca=0,ea=[];Z=null!=O.defaultDate?N.moment(O.defaultDate).stripZone():N.getNow(),N.getSuggestedViewHeight=function(){return void 0===X&&k(),X},N.isHeightAuto=function(){return"auto"===O.contentHeight||"auto"===O.height},N.freezeContentHeight=H,N.unfreezeContentHeight=I,N.initialize()}function Ka(b){a.each(tb,function(a,c){null==b[a]&&(b[a]=c(b))})}function La(a){var c=b.localeData||b.langData;return c.call(b,a)||c.call(b,"en")}function Ma(b,c){function d(){var b=c.header;return n=c.theme?"ui":"fc",b?o=a("<div class='fc-toolbar'/>").append(f("left")).append(f("right")).append(f("center")).append('<div class="fc-clear"/>'):void 0}function e(){o.remove(),o=a()}function f(d){var e=a('<div class="fc-'+d+'"/>'),f=c.header[d];return f&&a.each(f.split(" "),function(d){var f,g=a(),h=!0;a.each(this.split(","),function(d,e){var f,i,j,k,l,m,o,q,r,s;"title"==e?(g=g.add(a("<h2> </h2>")),h=!1):((f=(b.options.customButtons||{})[e])?(j=function(a){f.click&&f.click.call(s[0],a)},k="",l=f.text):(i=b.getViewSpec(e))?(j=function(){b.changeView(e)},p.push(e),k=i.buttonTextOverride,l=i.buttonTextDefault):b[e]&&(j=function(){b[e]()},k=(b.overrides.buttonText||{})[e],l=c.buttonText[e]),j&&(m=f?f.themeIcon:c.themeButtonIcons[e],o=f?f.icon:c.buttonIcons[e],q=k?Y(k):m&&c.theme?"<span class='ui-icon ui-icon-"+m+"'></span>":o&&!c.theme?"<span class='fc-icon fc-icon-"+o+"'></span>":Y(l),r=["fc-"+e+"-button",n+"-button",n+"-state-default"],s=a('<button type="button" class="'+r.join(" ")+'">'+q+"</button>").click(function(a){s.hasClass(n+"-state-disabled")||(j(a),(s.hasClass(n+"-state-active")||s.hasClass(n+"-state-disabled"))&&s.removeClass(n+"-state-hover"))}).mousedown(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-down")}).mouseup(function(){s.removeClass(n+"-state-down")}).hover(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-hover")},function(){s.removeClass(n+"-state-hover").removeClass(n+"-state-down")}),g=g.add(s)))}),h&&g.first().addClass(n+"-corner-left").end().last().addClass(n+"-corner-right").end(),g.length>1?(f=a("<div/>"),h&&f.addClass("fc-button-group"),f.append(g),e.append(f)):e.append(g)}),e}function g(a){o.find("h2").text(a)}function h(a){o.find(".fc-"+a+"-button").addClass(n+"-state-active")}function i(a){o.find(".fc-"+a+"-button").removeClass(n+"-state-active")}function j(a){o.find(".fc-"+a+"-button").attr("disabled","disabled").addClass(n+"-state-disabled")}function k(a){o.find(".fc-"+a+"-button").removeAttr("disabled").removeClass(n+"-state-disabled")}function l(){return p}var m=this;m.render=d,m.removeElement=e,m.updateTitle=g,m.activateButton=h,m.deactivateButton=i,m.disableButton=j,m.enableButton=k,m.getViewsWithButtons=l;var n,o=a(),p=[]}function Na(c){function d(a,b){return!L||L>a||b>M}function e(a,b){L=a,M=b,T=[];var c=++R,d=Q.length;S=d;for(var e=0;d>e;e++)f(Q[e],c)}function f(b,c){g(b,function(d){var e,f,g,h=a.isArray(b.events);if(c==R){if(d)for(e=0;e<d.length;e++)f=d[e],g=h?f:s(f,b),g&&T.push.apply(T,w(g));S--,S||N(T)}})}function g(b,d){var e,f,h=Pa.sourceFetchers;for(e=0;e<h.length;e++){if(f=h[e].call(K,b,L.clone(),M.clone(),c.timezone,d),f===!0)return;if("object"==typeof f)return void g(f,d)}var i=b.events;if(i)a.isFunction(i)?(K.pushLoading(),i.call(K,L.clone(),M.clone(),c.timezone,function(a){d(a),K.popLoading()})):a.isArray(i)?d(i):d();else{var j=b.url;if(j){var k,l=b.success,m=b.error,n=b.complete;k=a.isFunction(b.data)?b.data():b.data;var o=a.extend({},k||{}),p=X(b.startParam,c.startParam),q=X(b.endParam,c.endParam),r=X(b.timezoneParam,c.timezoneParam);p&&(o[p]=L.format()),q&&(o[q]=M.format()),c.timezone&&"local"!=c.timezone&&(o[r]=c.timezone),K.pushLoading(),a.ajax(a.extend({},ub,b,{data:o,success:function(b){b=b||[];var c=W(l,this,arguments);a.isArray(c)&&(b=c),d(b)},error:function(){W(m,this,arguments),d()},complete:function(){W(n,this,arguments),K.popLoading()}}))}else d()}}function h(a){var b=i(a);b&&(Q.push(b),S++,f(b,R))}function i(b){var c,d,e=Pa.sourceNormalizers;if(a.isFunction(b)||a.isArray(b)?c={events:b}:"string"==typeof b?c={url:b}:"object"==typeof b&&(c=a.extend({},b)),c){for(c.className?"string"==typeof c.className&&(c.className=c.className.split(/\s+/)):c.className=[],a.isArray(c.events)&&(c.origArray=c.events,c.events=a.map(c.events,function(a){return s(a,c)})),d=0;d<e.length;d++)e[d].call(K,c);return c}}function j(b){Q=a.grep(Q,function(a){return!k(a,b)}),T=a.grep(T,function(a){return!k(a.source,b)}),N(T)}function k(a,b){return a&&b&&l(a)==l(b)}function l(a){return("object"==typeof a?a.origArray||a.googleCalendarId||a.url||a.events:null)||a}function m(a){a.start=K.moment(a.start),a.end?a.end=K.moment(a.end):a.end=null,x(a,n(a)),N(T)}function n(b){var c={};return a.each(b,function(a,b){o(a)&&void 0!==b&&V(b)&&(c[a]=b)}),c}function o(a){return!/^_|^(id|allDay|start|end)$/.test(a)}function p(a,b){var c,d,e,f=s(a);if(f){for(c=w(f),d=0;d<c.length;d++)e=c[d],e.source||(b&&(O.events.push(e),e.source=O),T.push(e));return N(T),c}return[]}function q(b){var c,d;for(null==b?b=function(){return!0}:a.isFunction(b)||(c=b+"",b=function(a){return a._id==c}),T=a.grep(T,b,!0),d=0;d<Q.length;d++)a.isArray(Q[d].events)&&(Q[d].events=a.grep(Q[d].events,b,!0));N(T)}function r(b){return a.isFunction(b)?a.grep(T,b):null!=b?(b+="",a.grep(T,function(a){return a._id==b})):T}function s(d,e){var f,g,h,i={};if(c.eventDataTransform&&(d=c.eventDataTransform(d)),e&&e.eventDataTransform&&(d=e.eventDataTransform(d)),a.extend(i,d),e&&(i.source=e),i._id=d._id||(void 0===d.id?"_fc"+vb++:d.id+""),d.className?"string"==typeof d.className?i.className=d.className.split(/\s+/):i.className=d.className:i.className=[],f=d.start||d.date,g=d.end,P(f)&&(f=b.duration(f)),P(g)&&(g=b.duration(g)),d.dow||b.isDuration(f)||b.isDuration(g))i.start=f?b.duration(f):null,i.end=g?b.duration(g):null,i._recurring=!0;else{if(f&&(f=K.moment(f),!f.isValid()))return!1;g&&(g=K.moment(g),g.isValid()||(g=null)),h=d.allDay,void 0===h&&(h=X(e?e.allDayDefault:void 0,c.allDayDefault)),t(f,g,h,i)}return i}function t(a,b,c,d){d.start=a,d.end=b,d.allDay=c,u(d),Oa(d)}function u(a){v(a),a.end&&!a.end.isAfter(a.start)&&(a.end=null),a.end||(c.forceEventDuration?a.end=K.getDefaultEventEnd(a.allDay,a.start):a.end=null)}function v(a){null==a.allDay&&(a.allDay=!(a.start.hasTime()||a.end&&a.end.hasTime())),a.allDay?(a.start.stripTime(),a.end&&a.end.stripTime()):(a.start.hasTime()||(a.start=K.applyTimezone(a.start.time(0))),a.end&&!a.end.hasTime()&&(a.end=K.applyTimezone(a.end.time(0))))}function w(b,c,d){var e,f,g,h,i,j,k,l,m,n=[];if(c=c||L,d=d||M,b)if(b._recurring){if(f=b.dow)for(e={},g=0;g<f.length;g++)e[f[g]]=!0;for(h=c.clone().stripTime();h.isBefore(d);)(!e||e[h.day()])&&(i=b.start,j=b.end,k=h.clone(),l=null,i&&(k=k.time(i)),j&&(l=h.clone().time(j)),m=a.extend({},b),t(k,l,!i&&!j,m),n.push(m)),h.add(1,"days")}else n.push(b);return n}function x(b,c,d){function e(a,b){return d?H(a,b,d):c.allDay?G(a,b):F(a,b)}var f,g,h,i,j,k,l={};return c=c||{},c.start||(c.start=b.start.clone()),void 0===c.end&&(c.end=b.end?b.end.clone():null),null==c.allDay&&(c.allDay=b.allDay),u(c),f={start:b._start.clone(),end:b._end?b._end.clone():K.getDefaultEventEnd(b._allDay,b._start),allDay:c.allDay},u(f),g=null!==b._end&&null===c.end,h=e(c.start,f.start),c.end?(i=e(c.end,f.end),j=i.subtract(h)):j=null,a.each(c,function(a,b){o(a)&&void 0!==b&&(l[a]=b)}),k=y(r(b._id),g,c.allDay,h,j,l),{dateDelta:h,durationDelta:j,undo:k}}function y(b,c,d,e,f,g){var h=K.getIsAmbigTimezone(),i=[];return e&&!e.valueOf()&&(e=null),f&&!f.valueOf()&&(f=null),a.each(b,function(b,j){var k,l;k={start:j.start.clone(),end:j.end?j.end.clone():null,allDay:j.allDay},a.each(g,function(a){k[a]=j[a]}),l={start:j._start,end:j._end,allDay:d},u(l),c?l.end=null:f&&!l.end&&(l.end=K.getDefaultEventEnd(l.allDay,l.start)),e&&(l.start.add(e),l.end&&l.end.add(e)),f&&l.end.add(f),h&&!l.allDay&&(e||f)&&(l.start.stripZone(),l.end&&l.end.stripZone()),a.extend(j,g,l),Oa(j),i.push(function(){a.extend(j,k),Oa(j)})}),function(){for(var a=0;a<i.length;a++)i[a]()}}function z(b){var d,e=c.businessHours,f={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},g=K.getView();return e&&(d=a.extend({},f,"object"==typeof e?e:{})),d?(b&&(d.start=null,d.end=null),w(s(d),g.start,g.end)):[]}function A(a,b){var d=b.source||{},e=X(b.constraint,d.constraint,c.eventConstraint),f=X(b.overlap,d.overlap,c.eventOverlap);return D(a,e,f,b)}function B(b,c,d){var e,f;return d&&(e=a.extend({},d,c),f=w(s(e))[0]),f?A(b,f):C(b)}function C(a){return D(a,c.selectConstraint,c.selectOverlap)}function D(a,b,c,d){var e,f,g,h,i,j;if(null!=b){for(e=E(b),f=!1,h=0;h<e.length;h++)if(I(e[h],a)){f=!0;break}if(!f)return!1}for(g=K.getPeerEvents(a,d),h=0;h<g.length;h++)if(i=g[h],J(i,a)){if(c===!1)return!1;if("function"==typeof c&&!c(i,d))return!1;if(d){if(j=X(i.overlap,(i.source||{}).overlap),j===!1)return!1;if("function"==typeof j&&!j(d,i))return!1}}return!0}function E(a){return"businessHours"===a?z():"object"==typeof a?w(s(a)):r(a)}function I(a,b){var c=a.start.clone().stripZone(),d=K.getEventEnd(a).stripZone();return b.start>=c&&b.end<=d}function J(a,b){var c=a.start.clone().stripZone(),d=K.getEventEnd(a).stripZone();return b.start<d&&b.end>c}var K=this;K.isFetchNeeded=d,K.fetchEvents=e,K.addEventSource=h,K.removeEventSource=j,K.updateEvent=m,K.renderEvent=p,K.removeEvents=q,K.clientEvents=r,K.mutateEvent=x,K.normalizeEventDates=u,K.normalizeEventTimes=v;var L,M,N=K.reportEvents,O={events:[]},Q=[O],R=0,S=0,T=[];a.each((c.events?[c.events]:[]).concat(c.eventSources||[]),function(a,b){var c=i(b);c&&Q.push(c)}),K.getBusinessHoursEvents=z,K.isEventSpanAllowed=A,K.isExternalSpanAllowed=B,K.isSelectionSpanAllowed=C,K.getEventCache=function(){return T}}function Oa(a){a._allDay=a.allDay,a._start=a.start.clone(),a._end=a.end?a.end.clone():null}var Pa=a.fullCalendar={version:"2.6.1",internalApiVersion:3},Qa=Pa.views={};a.fn.fullCalendar=function(b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.each(function(e,f){var g,h=a(f),i=h.data("fullCalendar");"string"==typeof b?i&&a.isFunction(i[b])&&(g=i[b].apply(i,c),e||(d=g),"destroy"===b&&h.removeData("fullCalendar")):i||(i=new pb(h,b),h.data("fullCalendar",i),i.render())}),d};var Ra=["header","buttonText","buttonIcons","themeButtonIcons"];Pa.intersectRanges=E,Pa.applyAll=W,Pa.debounce=da,Pa.isInt=ba,Pa.htmlEscape=Y,Pa.cssToStr=$,Pa.proxy=ca,Pa.capitaliseFirstLetter=_,Pa.getOuterRect=o,Pa.getClientRect=p,Pa.getContentRect=q,Pa.getScrollbarWidths=r;var Sa=null;Pa.intersectRects=w,Pa.parseFieldSpecs=A,Pa.compareByFieldSpecs=B,Pa.compareByFieldSpec=C,Pa.flexibleCompare=D,Pa.computeIntervalUnit=I,Pa.divideRangeByDuration=K,Pa.divideDurationByDuration=L,Pa.multiplyDuration=M,Pa.durationHasTime=N;var Ta=["sun","mon","tue","wed","thu","fri","sat"],Ua=["year","month","week","day","hour","minute","second","millisecond"];Pa.log=function(){var a=window.console;return a&&a.log?a.log.apply(a,arguments):void 0},Pa.warn=function(){var a=window.console;return a&&a.warn?a.warn.apply(a,arguments):Pa.log.apply(Pa,arguments)};var Va,Wa,Xa,Ya={}.hasOwnProperty,Za=/^\s*\d{4}-\d\d$/,$a=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,_a=b.fn,ab=a.extend({},_a);Pa.moment=function(){return ea(arguments)},Pa.moment.utc=function(){var a=ea(arguments,!0);return a.hasTime()&&a.utc(),a},Pa.moment.parseZone=function(){return ea(arguments,!0,!0)},_a.clone=function(){var a=ab.clone.apply(this,arguments);return ga(this,a),this._fullCalendar&&(a._fullCalendar=!0),a},_a.week=_a.weeks=function(a){var b=(this._locale||this._lang)._fullCalendar_weekCalc;return null==a&&"function"==typeof b?b(this):"ISO"===b?ab.isoWeek.apply(this,arguments):ab.week.apply(this,arguments)},_a.time=function(a){if(!this._fullCalendar)return ab.time.apply(this,arguments);if(null==a)return b.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,b.isDuration(a)||b.isMoment(a)||(a=b.duration(a));var c=0;return b.isDuration(a)&&(c=24*Math.floor(a.asDays())),this.hours(c+a.hours()).minutes(a.minutes()).seconds(a.seconds()).milliseconds(a.milliseconds())},_a.stripTime=function(){var a;return this._ambigTime||(a=this.toArray(),this.utc(),Wa(this,a.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},_a.hasTime=function(){return!this._ambigTime},_a.stripZone=function(){var a,b;return this._ambigZone||(a=this.toArray(),b=this._ambigTime,this.utc(),Wa(this,a),this._ambigTime=b||!1,this._ambigZone=!0),this},_a.hasZone=function(){return!this._ambigZone},_a.local=function(){var a=this.toArray(),b=this._ambigZone;return ab.local.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,b&&Xa(this,a),this},_a.utc=function(){return ab.utc.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,this},a.each(["zone","utcOffset"],function(a,b){ab[b]&&(_a[b]=function(a){return null!=a&&(this._ambigTime=!1,this._ambigZone=!1),ab[b].apply(this,arguments)})}),_a.format=function(){return this._fullCalendar&&arguments[0]?ja(this,arguments[0]):this._ambigTime?ia(this,"YYYY-MM-DD"):this._ambigZone?ia(this,"YYYY-MM-DD[T]HH:mm:ss"):ab.format.apply(this,arguments)},_a.toISOString=function(){return this._ambigTime?ia(this,"YYYY-MM-DD"):this._ambigZone?ia(this,"YYYY-MM-DD[T]HH:mm:ss"):ab.toISOString.apply(this,arguments)},_a.isWithin=function(a,b){var c=fa([this,a,b]);return c[0]>=c[1]&&c[0]<c[2]},_a.isSame=function(a,b){var c;return this._fullCalendar?b?(c=fa([this,a],!0),ab.isSame.call(c[0],c[1],b)):(a=Pa.moment.parseZone(a),ab.isSame.call(this,a)&&Boolean(this._ambigTime)===Boolean(a._ambigTime)&&Boolean(this._ambigZone)===Boolean(a._ambigZone)):ab.isSame.apply(this,arguments)},a.each(["isBefore","isAfter"],function(a,b){_a[b]=function(a,c){var d;return this._fullCalendar?(d=fa([this,a]),ab[b].call(d[0],d[1],c)):ab[b].apply(this,arguments)}}),Va="_d"in b()&&"updateOffset"in b,Wa=Va?function(a,c){a._d.setTime(Date.UTC.apply(Date,c)),b.updateOffset(a,!1)}:ha,Xa=Va?function(a,c){a._d.setTime(+new Date(c[0]||0,c[1]||0,c[2]||0,c[3]||0,c[4]||0,c[5]||0,c[6]||0)),b.updateOffset(a,!1)}:ha;var bb={t:function(a){return ia(a,"a").charAt(0)},T:function(a){return ia(a,"A").charAt(0)}};Pa.formatRange=ma;var cb={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},db={};Pa.Class=ra,ra.extend=function(){var a,b,c=arguments.length;for(a=0;c>a;a++)b=arguments[a],c-1>a&&ta(this,b);return sa(this,b||{})},ra.mixin=function(a){ta(this,a)};var eb=Pa.Emitter=ra.extend({callbackHash:null,on:function(a,b){return this.getCallbacks(a).add(b),this},off:function(a,b){return this.getCallbacks(a).remove(b),this},trigger:function(a){var b=Array.prototype.slice.call(arguments,1);return this.triggerWith(a,this,b),this},triggerWith:function(a,b,c){var d=this.getCallbacks(a);return d.fireWith(b,c),this},getCallbacks:function(b){var c;return this.callbackHash||(this.callbackHash={}),c=this.callbackHash[b],c||(c=this.callbackHash[b]=a.Callbacks()),c}}),fb=ra.extend({isHidden:!0,options:null,el:null,documentMousedownProxy:null,margin:10,constructor:function(a){this.options=a||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var b=this,c=this.options;this.el=a('<div class="fc-popover"/>').addClass(c.className||"").css({top:0,left:0}).append(c.content).appendTo(c.parentEl),this.el.on("click",".fc-close",function(){b.hide()}),c.autoHide&&a(document).on("mousedown",this.documentMousedownProxy=ca(this,"documentMousedown"))},documentMousedown:function(b){this.el&&!a(b.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),a(document).off("mousedown",this.documentMousedownProxy)},position:function(){var b,c,d,e,f,g=this.options,h=this.el.offsetParent().offset(),i=this.el.outerWidth(),j=this.el.outerHeight(),k=a(window),l=n(this.el);e=g.top||0,f=void 0!==g.left?g.left:void 0!==g.right?g.right-i:0,l.is(window)||l.is(document)?(l=k,b=0,c=0):(d=l.offset(),b=d.top,c=d.left),b+=k.scrollTop(),c+=k.scrollLeft(),g.viewportConstrain!==!1&&(e=Math.min(e,b+l.outerHeight()-j-this.margin),e=Math.max(e,b+this.margin),f=Math.min(f,c+l.outerWidth()-i-this.margin), -f=Math.max(f,c+this.margin)),this.el.css({top:e-h.top,left:f-h.left})},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1))}}),gb=Pa.CoordCache=ra.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(b){this.els=a(b.els),this.isHorizontal=b.isHorizontal,this.isVertical=b.isVertical,this.forcedOffsetParentEl=b.offsetParent?a(b.offsetParent):null},build:function(){var a=this.forcedOffsetParentEl||this.els.eq(0).offsetParent();this.origin=a.offset(),this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},queryBoundingRect:function(){var a=n(this.els.eq(0));return a.is(document)?void 0:p(a)},buildElHorizontals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().left,h=f.outerWidth();b.push(g),c.push(g+h)}),this.lefts=b,this.rights=c},buildElVerticals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().top,h=f.outerHeight();b.push(g),c.push(g+h)}),this.tops=b,this.bottoms=c},getHorizontalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.lefts,e=this.rights,f=d.length;if(!c||a>=c.left&&a<c.right)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getVerticalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.tops,e=this.bottoms,f=d.length;if(!c||a>=c.top&&a<c.bottom)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getLeftOffset:function(a){return this.ensureBuilt(),this.lefts[a]},getLeftPosition:function(a){return this.ensureBuilt(),this.lefts[a]-this.origin.left},getRightOffset:function(a){return this.ensureBuilt(),this.rights[a]},getRightPosition:function(a){return this.ensureBuilt(),this.rights[a]-this.origin.left},getWidth:function(a){return this.ensureBuilt(),this.rights[a]-this.lefts[a]},getTopOffset:function(a){return this.ensureBuilt(),this.tops[a]},getTopPosition:function(a){return this.ensureBuilt(),this.tops[a]-this.origin.top},getBottomOffset:function(a){return this.ensureBuilt(),this.bottoms[a]},getBottomPosition:function(a){return this.ensureBuilt(),this.bottoms[a]-this.origin.top},getHeight:function(a){return this.ensureBuilt(),this.bottoms[a]-this.tops[a]}}),hb=Pa.DragListener=ra.extend({options:null,isListening:!1,isDragging:!1,originX:null,originY:null,mousemoveProxy:null,mouseupProxy:null,subjectEl:null,subjectHref:null,scrollEl:null,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollHandlerProxy:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,constructor:function(a){a=a||{},this.options=a,this.subjectEl=a.subjectEl},mousedown:function(a){v(a)&&(a.preventDefault(),this.startListening(a),this.options.distance||this.startDrag(a))},startListening:function(b){var c;this.isListening||(b&&this.options.scroll&&(c=n(a(b.target)),c.is(window)||c.is(document)||(this.scrollEl=c,this.scrollHandlerProxy=da(ca(this,"scrollHandler"),100),this.scrollEl.on("scroll",this.scrollHandlerProxy))),a(document).on("mousemove",this.mousemoveProxy=ca(this,"mousemove")).on("mouseup",this.mouseupProxy=ca(this,"mouseup")).on("selectstart",this.preventDefault),b?(this.originX=b.pageX,this.originY=b.pageY):(this.originX=0,this.originY=0),this.isListening=!0,this.listenStart(b))},listenStart:function(a){this.trigger("listenStart",a)},mousemove:function(a){var b,c,d=a.pageX-this.originX,e=a.pageY-this.originY;this.isDragging||(b=this.options.distance||1,c=d*d+e*e,c>=b*b&&this.startDrag(a)),this.isDragging&&this.drag(d,e,a)},startDrag:function(a){this.isListening||this.startListening(),this.isDragging||(this.isDragging=!0,this.dragStart(a))},dragStart:function(a){var b=this.subjectEl;this.trigger("dragStart",a),(this.subjectHref=b?b.attr("href"):null)&&b.removeAttr("href")},drag:function(a,b,c){this.trigger("drag",a,b,c),this.updateScroll(c)},mouseup:function(a){this.stopListening(a)},stopDrag:function(a){this.isDragging&&(this.stopScrolling(),this.dragStop(a),this.isDragging=!1)},dragStop:function(a){var b=this;this.trigger("dragStop",a),setTimeout(function(){b.subjectHref&&b.subjectEl.attr("href",b.subjectHref)},0)},stopListening:function(b){this.stopDrag(b),this.isListening&&(this.scrollEl&&(this.scrollEl.off("scroll",this.scrollHandlerProxy),this.scrollHandlerProxy=null),a(document).off("mousemove",this.mousemoveProxy).off("mouseup",this.mouseupProxy).off("selectstart",this.preventDefault),this.mousemoveProxy=null,this.mouseupProxy=null,this.isListening=!1,this.listenStop(b))},listenStop:function(a){this.trigger("listenStop",a)},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1))},preventDefault:function(a){a.preventDefault()},computeScrollBounds:function(){var a=this.scrollEl;this.scrollBounds=a?o(a):null},updateScroll:function(a){var b,c,d,e,f=this.scrollSensitivity,g=this.scrollBounds,h=0,i=0;g&&(b=(f-(a.pageY-g.top))/f,c=(f-(g.bottom-a.pageY))/f,d=(f-(a.pageX-g.left))/f,e=(f-(g.right-a.pageX))/f,b>=0&&1>=b?h=b*this.scrollSpeed*-1:c>=0&&1>=c&&(h=c*this.scrollSpeed),d>=0&&1>=d?i=d*this.scrollSpeed*-1:e>=0&&1>=e&&(i=e*this.scrollSpeed)),this.setScrollVel(h,i)},setScrollVel:function(a,b){this.scrollTopVel=a,this.scrollLeftVel=b,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(ca(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var a=this.scrollEl;this.scrollTopVel<0?a.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&a.scrollTop()+a[0].clientHeight>=a[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?a.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&a.scrollLeft()+a[0].clientWidth>=a[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var a=this.scrollEl,b=this.scrollIntervalMs/1e3;this.scrollTopVel&&a.scrollTop(a.scrollTop()+this.scrollTopVel*b),this.scrollLeftVel&&a.scrollLeft(a.scrollLeft()+this.scrollLeftVel*b),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.stopScrolling()},stopScrolling:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.scrollStop())},scrollHandler:function(){this.scrollIntervalId||this.scrollStop()},scrollStop:function(){}}),ib=hb.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(a,b){hb.call(this,b),this.component=a},listenStart:function(a){var b,c,d,e=this.subjectEl;hb.prototype.listenStart.apply(this,arguments),this.computeCoords(),a?(c={left:a.pageX,top:a.pageY},d=c,e&&(b=o(e),d=x(d,b)),this.origHit=this.queryHit(d.left,d.top),e&&this.options.subjectCenter&&(this.origHit&&(b=w(this.origHit,b)||b),d=y(b)),this.coordAdjust=z(d,c)):(this.origHit=null,this.coordAdjust=null)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},dragStart:function(a){var b;hb.prototype.dragStart.apply(this,arguments),b=this.queryHit(a.pageX,a.pageY),b&&this.hitOver(b)},drag:function(a,b,c){var d;hb.prototype.drag.apply(this,arguments),d=this.queryHit(c.pageX,c.pageY),ua(d,this.hit)||(this.hit&&this.hitOut(),d&&this.hitOver(d))},dragStop:function(){this.hitDone(),hb.prototype.dragStop.apply(this,arguments)},hitOver:function(a){var b=ua(a,this.origHit);this.hit=a,this.trigger("hitOver",this.hit,b,this.origHit)},hitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.hitDone(),this.hit=null)},hitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},listenStop:function(){hb.prototype.listenStop.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},scrollStop:function(){hb.prototype.scrollStop.apply(this,arguments),this.computeCoords()},queryHit:function(a,b){return this.coordAdjust&&(a+=this.coordAdjust.left,b+=this.coordAdjust.top),this.component.queryHit(a,b)}}),jb=ra.extend({options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,mouseY0:null,mouseX0:null,topDelta:null,leftDelta:null,mousemoveProxy:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(b,c){this.options=c=c||{},this.sourceEl=b,this.parentEl=c.parentEl?a(c.parentEl):b.parent()},start:function(b){this.isFollowing||(this.isFollowing=!0,this.mouseY0=b.pageY,this.mouseX0=b.pageX,this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),a(document).on("mousemove",this.mousemoveProxy=ca(this,"mousemove")))},stop:function(b,c){function d(){this.isAnimating=!1,e.removeElement(),this.top0=this.left0=null,c&&c()}var e=this,f=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,a(document).off("mousemove",this.mousemoveProxy),b&&f&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:f,complete:d})):d())},getEl:function(){var a=this.el;return a||(this.sourceEl.width(),a=this.el=this.sourceEl.clone().css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}).appendTo(this.parentEl)),a},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var a,b;this.getEl(),null===this.top0&&(this.sourceEl.width(),a=this.sourceEl.offset(),b=this.el.offsetParent().offset(),this.top0=a.top-b.top,this.left0=a.left-b.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},mousemove:function(a){this.topDelta=a.pageY-this.mouseY0,this.leftDelta=a.pageX-this.mouseX0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),kb=Pa.Grid=ra.extend({view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,externalDragStartProxy:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,constructor:function(a){this.view=a,this.isRTL=a.opt("isRTL"),this.elsByFill={},this.externalDragStartProxy=ca(this,"externalDragStart")},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(a){this.start=a.start.clone(),this.end=a.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var a,b,c=this.view;this.eventTimeFormat=c.opt("eventTimeFormat")||c.opt("timeFormat")||this.computeEventTimeFormat(),a=c.opt("displayEventTime"),null==a&&(a=this.computeDisplayEventTime()),b=c.opt("displayEventEnd"),null==b&&(b=this.computeDisplayEventEnd()),this.displayEventTime=a,this.displayEventEnd=b},spanToSegs:function(a){},diffDates:function(a,b){return this.largeUnit?H(a,b,this.largeUnit):F(a,b)},prepareHits:function(){},releaseHits:function(){},queryHit:function(a,b){},getHitSpan:function(a){},getHitEl:function(a){},setElement:function(b){var c=this;this.el=b,b.on("mousedown",function(b){a(b.target).is(".fc-event-container *, .fc-more")||a(b.target).closest(".fc-popover").length||c.dayMousedown(b)}),this.bindSegHandlers(),this.bindGlobalHandlers()},removeElement:function(){this.unbindGlobalHandlers(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){a(document).on("dragstart sortstart",this.externalDragStartProxy)},unbindGlobalHandlers:function(){a(document).off("dragstart sortstart",this.externalDragStartProxy)},dayMousedown:function(a){var b,c,d=this,e=this.view,f=e.opt("selectable"),i=new ib(this,{scroll:e.opt("dragScroll"),dragStart:function(){e.unselect()},hitOver:function(a,e,h){h&&(b=e?a:null,f&&(c=d.computeSelection(d.getHitSpan(h),d.getHitSpan(a)),c?d.renderSelection(c):c===!1&&g()))},hitOut:function(){b=null,c=null,d.unrenderSelection(),h()},listenStop:function(a){b&&e.triggerDayClick(d.getHitSpan(b),d.getHitEl(b),a),c&&e.reportSelection(c,a),h()}});i.mousedown(a)},renderEventLocationHelper:function(a,b){var c=this.fabricateHelperEvent(a,b);this.renderHelper(c,b)},fabricateHelperEvent:function(a,b){var c=b?R(b.event):{};return c.start=a.start.clone(),c.end=a.end?a.end.clone():null,c.allDay=null,this.view.calendar.normalizeEventDates(c),c.className=(c.className||[]).concat("fc-helper"),b||(c.editable=!1),c},renderHelper:function(a,b){},unrenderHelper:function(){},renderSelection:function(a){this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(a,b){var c=this.computeSelectionSpan(a,b);return c&&!this.view.calendar.isSelectionSpanAllowed(c)?!1:c},computeSelectionSpan:function(a,b){var c=[a.start,a.end,b.start,b.end];return c.sort(aa),{start:c[0].clone(),end:c[3].clone()}},renderHighlight:function(a){this.renderFill("highlight",this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},renderFill:function(a,b){},unrenderFill:function(a){var b=this.elsByFill[a];b&&(b.remove(),delete this.elsByFill[a])},renderFillSegEls:function(b,c){var d,e=this,f=this[b+"SegEl"],g="",h=[];if(c.length){for(d=0;d<c.length;d++)g+=this.fillSegHtml(b,c[d]);a(g).each(function(b,d){var g=c[b],i=a(d);f&&(i=f.call(e,g,i)),i&&(i=a(i),i.is(e.fillSegTag)&&(g.el=i,h.push(g)))})}return h},fillSegTag:"div",fillSegHtml:function(a,b){var c=this[a+"SegClasses"],d=this[a+"SegCss"],e=c?c.call(this,b):[],f=$(d?d.call(this,b):{});return"<"+this.fillSegTag+(e.length?' class="'+e.join(" ")+'"':"")+(f?' style="'+f+'"':"")+" />"},getDayClasses:function(a){var b=this.view,c=b.calendar.getNow(),d=["fc-"+Ta[a.day()]];return 1==b.intervalDuration.as("months")&&a.month()!=b.intervalStart.month()&&d.push("fc-other-month"),a.isSame(c,"day")?d.push("fc-today",b.highlightStateClass):c>a?d.push("fc-past"):d.push("fc-future"),d}});kb.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(a){var b,c=[],d=[];for(b=0;b<a.length;b++)(wa(a[b])?c:d).push(a[b]);this.segs=[].concat(this.renderBgEvents(c),this.renderFgEvents(d))},renderBgEvents:function(a){var b=this.eventsToSegs(a);return this.renderBgSegs(b)||b},renderFgEvents:function(a){var b=this.eventsToSegs(a);return this.renderFgSegs(b)||b},unrenderEvents:function(){this.triggerSegMouseout(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(a){},unrenderFgSegs:function(){},renderFgSegEls:function(b,c){var d,e=this.view,f="",g=[];if(b.length){for(d=0;d<b.length;d++)f+=this.fgSegHtml(b[d],c);a(f).each(function(c,d){var f=b[c],h=e.resolveEventEl(f.event,a(d));h&&(h.data("fc-seg",f),f.el=h,g.push(f))})}return g},fgSegHtml:function(a,b){},renderBgSegs:function(a){return this.renderFill("bgEvent",a)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(a,b){return this.view.resolveEventEl(a.event,b)},bgEventSegClasses:function(a){var b=a.event,c=b.source||{};return["fc-bgevent"].concat(b.className,c.className||[])},bgEventSegCss:function(a){return{"background-color":this.getSegSkinCss(a)["background-color"]}},businessHoursSegClasses:function(a){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){var b=this,c=this.view;a.each({mouseenter:function(a,c){b.triggerSegMouseover(a,c)},mouseleave:function(a,c){b.triggerSegMouseout(a,c)},click:function(a,b){return c.trigger("eventClick",this,a.event,b)},mousedown:function(d,e){a(e.target).is(".fc-resizer")&&c.isEventResizable(d.event)?b.segResizeMousedown(d,e,a(e.target).is(".fc-start-resizer")):c.isEventDraggable(d.event)&&b.segDragMousedown(d,e)}},function(c,d){b.el.on(c,".fc-event-container > *",function(c){var e=a(this).data("fc-seg");return!e||b.isDraggingSeg||b.isResizingSeg?void 0:d.call(this,e,c)})})},triggerSegMouseover:function(a,b){this.mousedOverSeg||(this.mousedOverSeg=a,this.view.trigger("eventMouseover",a.el[0],a.event,b))},triggerSegMouseout:function(a,b){b=b||{},this.mousedOverSeg&&(a=a||this.mousedOverSeg,this.mousedOverSeg=null,this.view.trigger("eventMouseout",a.el[0],a.event,b))},segDragMousedown:function(a,b){var c,d=this,e=this.view,f=e.calendar,i=a.el,j=a.event,k=new jb(a.el,{parentEl:e.el,opacity:e.opt("dragOpacity"),revertDuration:e.opt("dragRevertDuration"),zIndex:2}),l=new ib(e,{distance:5,scroll:e.opt("dragScroll"),subjectEl:i,subjectCenter:!0,listenStart:function(a){k.hide(),k.start(a)},dragStart:function(b){d.triggerSegMouseout(a,b),d.segDragStart(a,b),e.hideEvent(j)},hitOver:function(b,h,i){a.hit&&(i=a.hit),c=d.computeEventDrop(i.component.getHitSpan(i),b.component.getHitSpan(b),j),c&&!f.isEventSpanAllowed(d.eventToSpan(c),j)&&(g(),c=null),c&&e.renderDrag(c,a)?k.hide():k.show(),h&&(c=null)},hitOut:function(){e.unrenderDrag(),k.show(),c=null},hitDone:function(){h()},dragStop:function(b){k.stop(!c,function(){e.unrenderDrag(),e.showEvent(j),d.segDragStop(a,b),c&&e.reportEventDrop(j,c,this.largeUnit,i,b)})},listenStop:function(){k.stop()}});l.mousedown(b)},segDragStart:function(a,b){this.isDraggingSeg=!0,this.view.trigger("eventDragStart",a.el[0],a.event,b,{})},segDragStop:function(a,b){this.isDraggingSeg=!1,this.view.trigger("eventDragStop",a.el[0],a.event,b,{})},computeEventDrop:function(a,b,c){var d,e,f=this.view.calendar,g=a.start,h=b.start;return g.hasTime()===h.hasTime()?(d=this.diffDates(h,g),c.allDay&&N(d)?(e={start:c.start.clone(),end:f.getEventEnd(c),allDay:!1},f.normalizeEventTimes(e)):e={start:c.start.clone(),end:c.end?c.end.clone():null,allDay:c.allDay},e.start.add(d),e.end&&e.end.add(d)):e={start:h.clone(),end:null,allDay:!h.hasTime()},e},applyDragOpacity:function(a){var b=this.view.opt("dragOpacity");null!=b&&a.each(function(a,c){c.style.opacity=b})},externalDragStart:function(b,c){var d,e,f=this.view;f.opt("droppable")&&(d=a((c?c.item:null)||b.target),e=f.opt("dropAccept"),(a.isFunction(e)?e.call(d[0],d):d.is(e))&&(this.isDraggingExternal||this.listenToExternalDrag(d,b,c)))},listenToExternalDrag:function(a,b,c){var d,e=this,f=this.view.calendar,i=Ba(a),j=new ib(this,{listenStart:function(){e.isDraggingExternal=!0},hitOver:function(a){d=e.computeExternalDrop(a.component.getHitSpan(a),i),d&&!f.isExternalSpanAllowed(e.eventToSpan(d),d,i.eventProps)&&(g(),d=null),d&&e.renderDrag(d)},hitOut:function(){d=null},hitDone:function(){h(),e.unrenderDrag()},dragStop:function(){d&&e.view.reportExternalDrop(i,d,a,b,c)},listenStop:function(){e.isDraggingExternal=!1}});j.startDrag(b)},computeExternalDrop:function(a,b){var c=this.view.calendar,d={start:c.applyTimezone(a.start),end:null};return b.startTime&&!d.start.hasTime()&&d.start.time(b.startTime),b.duration&&(d.end=d.start.clone().add(b.duration)),d},renderDrag:function(a,b){},unrenderDrag:function(){},segResizeMousedown:function(a,b,c){var d,e=this,f=this.view,i=f.calendar,j=a.el,k=a.event,l=i.getEventEnd(k),m=new ib(this,{distance:5,scroll:f.opt("dragScroll"),subjectEl:j,dragStart:function(b){e.triggerSegMouseout(a,b),e.segResizeStart(a,b)},hitOver:function(b,h,j){var m=e.getHitSpan(j),n=e.getHitSpan(b);d=c?e.computeEventStartResize(m,n,k):e.computeEventEndResize(m,n,k),d&&(i.isEventSpanAllowed(e.eventToSpan(d),k)?d.start.isSame(k.start)&&d.end.isSame(l)&&(d=null):(g(),d=null)),d&&(f.hideEvent(k),e.renderEventResize(d,a))},hitOut:function(){d=null},hitDone:function(){e.unrenderEventResize(),f.showEvent(k),h()},dragStop:function(b){e.segResizeStop(a,b),d&&f.reportEventResize(k,d,this.largeUnit,j,b)}});m.mousedown(b)},segResizeStart:function(a,b){this.isResizingSeg=!0,this.view.trigger("eventResizeStart",a.el[0],a.event,b,{})},segResizeStop:function(a,b){this.isResizingSeg=!1,this.view.trigger("eventResizeStop",a.el[0],a.event,b,{})},computeEventStartResize:function(a,b,c){return this.computeEventResize("start",a,b,c)},computeEventEndResize:function(a,b,c){return this.computeEventResize("end",a,b,c)},computeEventResize:function(a,b,c,d){var e,f,g=this.view.calendar,h=this.diffDates(c[a],b[a]);return e={start:d.start.clone(),end:g.getEventEnd(d),allDay:d.allDay},e.allDay&&N(h)&&(e.allDay=!1,g.normalizeEventTimes(e)),e[a].add(h),e.start.isBefore(e.end)||(f=this.minResizeDuration||(d.allDay?g.defaultAllDayEventDuration:g.defaultTimedEventDuration),"start"==a?e.start=e.end.clone().subtract(f):e.end=e.start.clone().add(f)),e},renderEventResize:function(a,b){},unrenderEventResize:function(){},getEventTimeText:function(a,b,c){return null==b&&(b=this.eventTimeFormat),null==c&&(c=this.displayEventEnd),this.displayEventTime&&a.start.hasTime()?c&&a.end?this.view.formatRange(a,b):a.start.format(b):""},getSegClasses:function(a,b,c){var d=a.event,e=["fc-event",a.isStart?"fc-start":"fc-not-start",a.isEnd?"fc-end":"fc-not-end"].concat(d.className,d.source?d.source.className:[]);return b&&e.push("fc-draggable"),c&&e.push("fc-resizable"),e},getSegSkinCss:function(a){var b=a.event,c=this.view,d=b.source||{},e=b.color,f=d.color,g=c.opt("eventColor");return{"background-color":b.backgroundColor||e||d.backgroundColor||f||c.opt("eventBackgroundColor")||g,"border-color":b.borderColor||e||d.borderColor||f||c.opt("eventBorderColor")||g,color:b.textColor||d.textColor||c.opt("eventTextColor")}},eventToSegs:function(a){return this.eventsToSegs([a])},eventToSpan:function(a){return this.eventToSpans(a)[0]},eventToSpans:function(a){var b=this.eventToRange(a);return this.eventRangeToSpans(b,a)},eventsToSegs:function(b,c){var d=this,e=za(b),f=[];return a.each(e,function(a,b){var e,g=[];for(e=0;e<b.length;e++)g.push(d.eventToRange(b[e]));if(xa(b[0]))for(g=d.invertRanges(g),e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[0],c));else for(e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[e],c))}),f},eventToRange:function(a){return{start:a.start.clone().stripZone(),end:(a.end?a.end.clone():this.view.calendar.getDefaultEventEnd(null!=a.allDay?a.allDay:!a.start.hasTime(),a.start)).stripZone()}},eventRangeToSegs:function(a,b,c){var d,e=this.eventRangeToSpans(a,b),f=[];for(d=0;d<e.length;d++)f.push.apply(f,this.eventSpanToSegs(e[d],b,c));return f},eventRangeToSpans:function(b,c){return[a.extend({},b)]},eventSpanToSegs:function(a,b,c){var d,e,f=c?c(a):this.spanToSegs(a);for(d=0;d<f.length;d++)e=f[d],e.event=b,e.eventStartMS=+a.start,e.eventDurationMS=a.end-a.start;return f},invertRanges:function(a){var b,c,d=this.view,e=d.start.clone(),f=d.end.clone(),g=[],h=e;for(a.sort(Aa),b=0;b<a.length;b++)c=a[b],c.start>h&&g.push({start:h,end:c.start}),h=c.end;return f>h&&g.push({start:h,end:f}),g},sortEventSegs:function(a){a.sort(ca(this,"compareEventSegs"))},compareEventSegs:function(a,b){return a.eventStartMS-b.eventStartMS||b.eventDurationMS-a.eventDurationMS||b.event.allDay-a.event.allDay||B(a.event,b.event,this.view.eventOrderSpecs)}}),Pa.isBgEvent=wa,Pa.dataAttrPrefix="";var lb=Pa.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){for(var a,b,c,d=this.view,e=this.start.clone(),f=-1,g=[],h=[];e.isBefore(this.end);)d.isHiddenDay(e)?g.push(f+.5):(f++,g.push(f),h.push(e.clone())),e.add(1,"days");if(this.breakOnWeeks){for(b=h[0].day(),a=1;a<h.length&&h[a].day()!=b;a++);c=Math.ceil(h.length/a)}else c=1,a=h.length;this.dayDates=h,this.dayIndices=g,this.daysPerRow=a,this.rowCnt=c,this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.view.opt("columnFormat")||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(a,b){return this.dayDates[this.getCellDayIndex(a,b)].clone()},getCellRange:function(a,b){var c=this.getCellDate(a,b),d=c.clone().add(1,"days");return{start:c,end:d}},getCellDayIndex:function(a,b){return a*this.daysPerRow+this.getColDayIndex(b)},getColDayIndex:function(a){return this.isRTL?this.colCnt-1-a:a},getDateDayIndex:function(a){var b=this.dayIndices,c=a.diff(this.start,"days");return 0>c?b[0]-1:c>=b.length?b[b.length-1]+1:b[c]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(a){var b,c,d,e,f,g=this.daysPerRow,h=this.view.computeDayRange(a),i=this.getDateDayIndex(h.start),j=this.getDateDayIndex(h.end.clone().subtract(1,"days")),k=[];for(b=0;b<this.rowCnt;b++)c=b*g,d=c+g-1,e=Math.max(i,c),f=Math.min(j,d),e=Math.ceil(e),f=Math.floor(f),f>=e&&k.push({row:b,firstRowDayIndex:e-c,lastRowDayIndex:f-c,isStart:e===i,isEnd:f===j});return k},sliceRangeByDay:function(a){var b,c,d,e,f,g,h=this.daysPerRow,i=this.view.computeDayRange(a),j=this.getDateDayIndex(i.start),k=this.getDateDayIndex(i.end.clone().subtract(1,"days")),l=[];for(b=0;b<this.rowCnt;b++)for(c=b*h,d=c+h-1,e=c;d>=e;e++)f=Math.max(j,e),g=Math.min(k,e),f=Math.ceil(f),g=Math.floor(g),g>=f&&l.push({row:b,firstRowDayIndex:f-c,lastRowDayIndex:g-c,isStart:f===j,isEnd:g===k});return l},renderHeadHtml:function(){var a=this.view;return'<div class="fc-row '+a.widgetHeaderClass+'"><table><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},renderHeadDateCellsHtml:function(){var a,b,c=[];for(a=0;a<this.colCnt;a++)b=this.getCellDate(0,a),c.push(this.renderHeadDateCellHtml(b));return c.join("")},renderHeadDateCellHtml:function(a,b,c){var d=this.view;return'<th class="fc-day-header '+d.widgetHeaderClass+" fc-"+Ta[a.day()]+'"'+(1==this.rowCnt?' data-date="'+a.format("YYYY-MM-DD")+'"':"")+(b>1?' colspan="'+b+'"':"")+(c?" "+c:"")+">"+Y(a.format(this.colHeadFormat))+"</th>"},renderBgTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(a))+this.renderBgCellsHtml(a)+(this.isRTL?this.renderBgIntroHtml(a):"")+"</tr>"},renderBgIntroHtml:function(a){return this.renderIntroHtml()},renderBgCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderBgCellHtml(c));return d.join("")},renderBgCellHtml:function(a,b){var c=this.view,d=this.getDayClasses(a);return d.unshift("fc-day",c.widgetContentClass),'<td class="'+d.join(" ")+'" data-date="'+a.format("YYYY-MM-DD")+'"'+(b?" "+b:"")+"></td>"},renderIntroHtml:function(){},bookendCells:function(a){var b=this.renderIntroHtml();b&&(this.isRTL?a.append(b):a.prepend(b))}},mb=Pa.DayGrid=kb.extend(lb,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(a){var b,c,d=this.view,e=this.rowCnt,f=this.colCnt,g="";for(b=0;e>b;b++)g+=this.renderDayRowHtml(b,a);for(this.el.html(g),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day"),this.rowCoordCache=new gb({els:this.rowEls,isVertical:!0}),this.colCoordCache=new gb({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),b=0;e>b;b++)for(c=0;f>c;c++)d.trigger("dayRender",null,this.getCellDate(b,c),this.getCellEl(b,c))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(!0),b=this.eventsToSegs(a);this.renderFill("businessHours",b,"bgevent")},renderDayRowHtml:function(a,b){var c=this.view,d=["fc-row","fc-week",c.widgetContentClass];return b&&d.push("fc-rigid"),'<div class="'+d.join(" ")+'"><div class="fc-bg"><table>'+this.renderBgTrHtml(a)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.renderNumberTrHtml(a)+"</thead>":"")+"</table></div></div>"},renderNumberTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(a))+this.renderNumberCellsHtml(a)+(this.isRTL?this.renderNumberIntroHtml(a):"")+"</tr>"},renderNumberIntroHtml:function(a){return this.renderIntroHtml()},renderNumberCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderNumberCellHtml(c));return d.join("")},renderNumberCellHtml:function(a){var b;return this.view.dayNumbersVisible?(b=this.getDayClasses(a),b.unshift("fc-day-number"),'<td class="'+b.join(" ")+'" data-date="'+a.format()+'">'+a.date()+"</td>"):"<td/>"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(a){var b,c,d=this.sliceRangeByRow(a);for(b=0;b<d.length;b++)c=d[b],this.isRTL?(c.leftCol=this.daysPerRow-1-c.lastRowDayIndex,c.rightCol=this.daysPerRow-1-c.firstRowDayIndex):(c.leftCol=c.firstRowDayIndex,c.rightCol=c.lastRowDayIndex);return d},prepareHits:function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},queryHit:function(a,b){var c=this.colCoordCache.getHorizontalIndex(a),d=this.rowCoordCache.getVerticalIndex(b);return null!=d&&null!=c?this.getCellHit(d,c):void 0},getHitSpan:function(a){return this.getCellRange(a.row,a.col)},getHitEl:function(a){return this.getCellEl(a.row,a.col)},getCellHit:function(a,b){return{row:a,col:b,component:this,left:this.colCoordCache.getLeftOffset(b),right:this.colCoordCache.getRightOffset(b),top:this.rowCoordCache.getTopOffset(a),bottom:this.rowCoordCache.getBottomOffset(a)}},getCellEl:function(a,b){return this.cellEls.eq(a*this.colCnt+b)},renderDrag:function(a,b){return this.renderHighlight(this.eventToSpan(a)),b&&!b.el.closest(this.el).length?(this.renderEventLocationHelper(a,b),this.applyDragOpacity(this.helperEls),!0):void 0},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(a,b){this.renderHighlight(this.eventToSpan(a)),this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(b,c){var d,e=[],f=this.eventToSegs(b);f=this.renderFgSegEls(f),d=this.renderSegRows(f),this.rowEls.each(function(b,f){var g,h=a(f),i=a('<div class="fc-helper-skeleton"><table/></div>');g=c&&c.row===b?c.el.position().top:h.find(".fc-content-skeleton tbody").position().top,i.css("top",g).find("table").append(d[b].tbodyEl),h.append(i),e.push(i[0])}),this.helperEls=a(e)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(b,c,d){var e,f,g,h=[];for(c=this.renderFillSegEls(b,c),e=0;e<c.length;e++)f=c[e],g=this.renderFillRow(b,f,d),this.rowEls.eq(f.row).append(g),h.push(g[0]);return this.elsByFill[b]=a(h),c},renderFillRow:function(b,c,d){var e,f,g=this.colCnt,h=c.leftCol,i=c.rightCol+1;return d=d||b.toLowerCase(),e=a('<div class="fc-'+d+'-skeleton"><table><tr/></table></div>'),f=e.find("tr"),h>0&&f.append('<td colspan="'+h+'"/>'),f.append(c.el.attr("colspan",i-h)),g>i&&f.append('<td colspan="'+(g-i)+'"/>'),this.bookendCells(f),e}});mb.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),kb.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return kb.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(b){var c=a.grep(b,function(a){return a.event.allDay});return kb.prototype.renderBgSegs.call(this,c)},renderFgSegs:function(b){var c;return b=this.renderFgSegEls(b),c=this.rowStructs=this.renderSegRows(b),this.rowEls.each(function(b,d){a(d).find(".fc-content-skeleton > table").append(c[b].tbodyEl)}),b},unrenderFgSegs:function(){for(var a,b=this.rowStructs||[];a=b.pop();)a.tbodyEl.remove(); -this.rowStructs=null},renderSegRows:function(a){var b,c,d=[];for(b=this.groupSegRows(a),c=0;c<b.length;c++)d.push(this.renderSegRow(c,b[c]));return d},fgSegHtml:function(a,b){var c,d,e=this.view,f=a.event,g=e.isEventDraggable(f),h=!b&&f.allDay&&a.isStart&&e.isEventResizableFromStart(f),i=!b&&f.allDay&&a.isEnd&&e.isEventResizableFromEnd(f),j=this.getSegClasses(a,g,h||i),k=$(this.getSegSkinCss(a)),l="";return j.unshift("fc-day-grid-event","fc-h-event"),a.isStart&&(c=this.getEventTimeText(f),c&&(l='<span class="fc-time">'+Y(c)+"</span>")),d='<span class="fc-title">'+(Y(f.title||"")||" ")+"</span>",'<a class="'+j.join(" ")+'"'+(f.url?' href="'+Y(f.url)+'"':"")+(k?' style="'+k+'"':"")+'><div class="fc-content">'+(this.isRTL?d+" "+l:l+" "+d)+"</div>"+(h?'<div class="fc-resizer fc-start-resizer" />':"")+(i?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(b,c){function d(b){for(;b>g;)k=(r[e-1]||[])[g],k?k.attr("rowspan",parseInt(k.attr("rowspan")||1,10)+1):(k=a("<td/>"),h.append(k)),q[e][g]=k,r[e][g]=k,g++}var e,f,g,h,i,j,k,l=this.colCnt,m=this.buildSegLevels(c),n=Math.max(1,m.length),o=a("<tbody/>"),p=[],q=[],r=[];for(e=0;n>e;e++){if(f=m[e],g=0,h=a("<tr/>"),p.push([]),q.push([]),r.push([]),f)for(i=0;i<f.length;i++){for(j=f[i],d(j.leftCol),k=a('<td class="fc-event-container"/>').append(j.el),j.leftCol!=j.rightCol?k.attr("colspan",j.rightCol-j.leftCol+1):r[e][g]=k;g<=j.rightCol;)q[e][g]=k,p[e][g]=j,g++;h.append(k)}d(l),this.bookendCells(h),o.append(h)}return{row:b,tbodyEl:o,cellMatrix:q,segMatrix:p,segLevels:m,segs:c}},buildSegLevels:function(a){var b,c,d,e=[];for(this.sortEventSegs(a),b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Ca(c,e[d]);d++);c.level=d,(e[d]||(e[d]=[])).push(c)}for(d=0;d<e.length;d++)e[d].sort(Da);return e},groupSegRows:function(a){var b,c=[];for(b=0;b<this.rowCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].row].push(a[b]);return c}}),mb.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(a){var b,c,d=this.rowStructs||[];for(b=0;b<d.length;b++)this.unlimitRow(b),c=a?"number"==typeof a?a:this.computeRowLevelLimit(b):!1,c!==!1&&this.limitRow(b,c)},computeRowLevelLimit:function(b){function c(b,c){f=Math.max(f,a(c).outerHeight())}var d,e,f,g=this.rowEls.eq(b),h=g.height(),i=this.rowStructs[b].tbodyEl.children();for(d=0;d<i.length;d++)if(e=i.eq(d).removeClass("fc-limited"),f=0,e.find("> td > :first-child").each(c),e.position().top+f>h)return d;return!1},limitRow:function(b,c){function d(d){for(;d>w;)j=t.getCellSegs(b,w,c),j.length&&(m=f[c-1][w],s=t.renderMoreLink(b,w,j),r=a("<div/>").append(s),m.append(r),v.push(r[0])),w++}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t=this,u=this.rowStructs[b],v=[],w=0;if(c&&c<u.segLevels.length){for(e=u.segLevels[c-1],f=u.cellMatrix,g=u.tbodyEl.children().slice(c).addClass("fc-limited").get(),h=0;h<e.length;h++){for(i=e[h],d(i.leftCol),l=[],k=0;w<=i.rightCol;)j=this.getCellSegs(b,w,c),l.push(j),k+=j.length,w++;if(k){for(m=f[c-1][i.leftCol],n=m.attr("rowspan")||1,o=[],p=0;p<l.length;p++)q=a('<td class="fc-more-cell"/>').attr("rowspan",n),j=l[p],s=this.renderMoreLink(b,i.leftCol+p,[i].concat(j)),r=a("<div/>").append(s),q.append(r),o.push(q[0]),v.push(q[0]);m.addClass("fc-limited").after(a(o)),g.push(m[0])}}d(this.colCnt),u.moreEls=a(v),u.limitedEls=a(g)}},unlimitRow:function(a){var b=this.rowStructs[a];b.moreEls&&(b.moreEls.remove(),b.moreEls=null),b.limitedEls&&(b.limitedEls.removeClass("fc-limited"),b.limitedEls=null)},renderMoreLink:function(b,c,d){var e=this,f=this.view;return a('<a class="fc-more"/>').text(this.getMoreLinkText(d.length)).on("click",function(g){var h=f.opt("eventLimitClick"),i=e.getCellDate(b,c),j=a(this),k=e.getCellEl(b,c),l=e.getCellSegs(b,c),m=e.resliceDaySegs(l,i),n=e.resliceDaySegs(d,i);"function"==typeof h&&(h=f.trigger("eventLimitClick",null,{date:i,dayEl:k,moreEl:j,segs:m,hiddenSegs:n},g)),"popover"===h?e.showSegPopover(b,c,j,m):"string"==typeof h&&f.calendar.zoomTo(i,h)})},showSegPopover:function(a,b,c,d){var e,f,g=this,h=this.view,i=c.parent();e=1==this.rowCnt?h.el:this.rowEls.eq(a),f={className:"fc-more-popover",content:this.renderSegPopoverContent(a,b,d),parentEl:this.el,top:e.offset().top,autoHide:!0,viewportConstrain:h.opt("popoverViewportConstrain"),hide:function(){g.segPopover.removeElement(),g.segPopover=null,g.popoverSegs=null}},this.isRTL?f.right=i.offset().left+i.outerWidth()+1:f.left=i.offset().left-1,this.segPopover=new fb(f),this.segPopover.show()},renderSegPopoverContent:function(b,c,d){var e,f=this.view,g=f.opt("theme"),h=this.getCellDate(b,c).format(f.opt("dayPopoverFormat")),i=a('<div class="fc-header '+f.widgetHeaderClass+'"><span class="fc-close '+(g?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+Y(h)+'</span><div class="fc-clear"/></div><div class="fc-body '+f.widgetContentClass+'"><div class="fc-event-container"></div></div>'),j=i.find(".fc-event-container");for(d=this.renderFgSegEls(d,!0),this.popoverSegs=d,e=0;e<d.length;e++)this.prepareHits(),d[e].hit=this.getCellHit(b,c),this.releaseHits(),j.append(d[e].el);return i},resliceDaySegs:function(b,c){var d=a.map(b,function(a){return a.event}),e=c.clone(),f=e.clone().add(1,"days"),g={start:e,end:f};return b=this.eventsToSegs(d,function(a){var b=E(a,g);return b?[b]:[]}),this.sortEventSegs(b),b},getMoreLinkText:function(a){var b=this.view.opt("eventLimitText");return"function"==typeof b?b(a):"+"+a+" "+b},getCellSegs:function(a,b,c){for(var d,e=this.rowStructs[a].segMatrix,f=c||0,g=[];f<e.length;)d=e[f][b],d&&g.push(d),f++;return g}});var nb=Pa.TimeGrid=kb.extend(lb,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){kb.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.colEls=this.el.find(".fc-day"),this.slatEls=this.el.find(".fc-slats tr"),this.colCoordCache=new gb({els:this.colEls,isHorizontal:!0}),this.slatCoordCache=new gb({els:this.slatEls,isVertical:!0}),this.renderContentSkeleton()},renderHtml:function(){return'<div class="fc-bg"><table>'+this.renderBgTrHtml(0)+'</table></div><div class="fc-slats"><table>'+this.renderSlatRowHtml()+"</table></div>"},renderSlatRowHtml:function(){for(var a,c,d,e=this.view,f=this.isRTL,g="",h=b.duration(+this.minTime);h<this.maxTime;)a=this.start.clone().time(h),c=ba(L(h,this.labelInterval)),d='<td class="fc-axis fc-time '+e.widgetContentClass+'" '+e.axisStyleAttr()+">"+(c?"<span>"+Y(a.format(this.labelFormat))+"</span>":"")+"</td>",g+='<tr data-time="'+a.format("HH:mm:ss")+'"'+(c?"":' class="fc-minor"')+">"+(f?"":d)+'<td class="'+e.widgetContentClass+'"/>'+(f?d:"")+"</tr>",h.add(this.slotDuration);return g},processOptions:function(){var c,d=this.view,e=d.opt("slotDuration"),f=d.opt("snapDuration");e=b.duration(e),f=f?b.duration(f):e,this.slotDuration=e,this.snapDuration=f,this.snapsPerSlot=e/f,this.minResizeDuration=f,this.minTime=b.duration(d.opt("minTime")),this.maxTime=b.duration(d.opt("maxTime")),c=d.opt("slotLabelFormat"),a.isArray(c)&&(c=c[c.length-1]),this.labelFormat=c||d.opt("axisFormat")||d.opt("smallTimeFormat"),c=d.opt("slotLabelInterval"),this.labelInterval=c?b.duration(c):this.computeLabelInterval(e)},computeLabelInterval:function(a){var c,d,e;for(c=Db.length-1;c>=0;c--)if(d=b.duration(Db[c]),e=L(d,a),ba(e)&&e>1)return d;return b.duration(a)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(a,b){var c=this.snapsPerSlot,d=this.colCoordCache,e=this.slatCoordCache,f=d.getHorizontalIndex(a),g=e.getVerticalIndex(b);if(null!=f&&null!=g){var h=e.getTopOffset(g),i=e.getHeight(g),j=(b-h)/i,k=Math.floor(j*c),l=g*c+k,m=h+k/c*i,n=h+(k+1)/c*i;return{col:f,snap:l,component:this,left:d.getLeftOffset(f),right:d.getRightOffset(f),top:m,bottom:n}}},getHitSpan:function(a){var b,c=this.getCellDate(0,a.col),d=this.computeSnapTime(a.snap);return c.time(d),b=c.clone().add(this.snapDuration),{start:c,end:b}},getHitEl:function(a){return this.colEls.eq(a.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(a){return b.duration(this.minTime+this.snapDuration*a)},spanToSegs:function(a){var b,c=this.sliceRangeByTimes(a);for(b=0;b<c.length;b++)this.isRTL?c[b].col=this.daysPerRow-1-c[b].dayIndex:c[b].col=c[b].dayIndex;return c},sliceRangeByTimes:function(a){var b,c,d,e,f=[];for(c=0;c<this.daysPerRow;c++)d=this.dayDates[c].clone(),e={start:d.clone().time(this.minTime),end:d.clone().time(this.maxTime)},b=E(a,e),b&&(b.dayIndex=c,f.push(b));return f},updateSize:function(a){this.slatCoordCache.build(),a&&this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))},computeDateTop:function(a,c){return this.computeTimeTop(b.duration(a-c.clone().stripTime()))},computeTimeTop:function(a){var b,c,d=this.slatEls.length,e=(a-this.minTime)/this.slotDuration;return e=Math.max(0,e),e=Math.min(d,e),b=Math.floor(e),b=Math.min(b,d-1),c=e-b,this.slatCoordCache.getTopPosition(b)+this.slatCoordCache.getHeight(b)*c},renderDrag:function(a,b){if(b){this.renderEventLocationHelper(a,b);for(var c=0;c<this.helperSegs.length;c++)this.applyDragOpacity(this.helperSegs[c].el);return!0}this.renderHighlight(this.eventToSpan(a))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(a,b){this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(a,b){this.renderHelperSegs(this.eventToSegs(a),b)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(),b=this.eventsToSegs(a);this.renderBusinessSegs(b)},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return"minute"},renderNowIndicator:function(b){var c,d=this.spanToSegs({start:b,end:b}),e=this.computeDateTop(b,b),f=[];for(c=0;c<d.length;c++)f.push(a('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",e).appendTo(this.colContainerEls.eq(d[c].col))[0]);d.length>0&&f.push(a('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",e).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=a(f)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(a){this.view.opt("selectHelper")?this.renderEventLocationHelper(a):this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(a){this.renderHighlightSegs(this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});nb.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var b,c,d="";for(b=0;b<this.colCnt;b++)d+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';c=a('<div class="fc-content-skeleton"><table><tr>'+d+"</tr></table></div>"),this.colContainerEls=c.find(".fc-content-col"),this.helperContainerEls=c.find(".fc-helper-container"),this.fgContainerEls=c.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=c.find(".fc-bgevent-container"),this.highlightContainerEls=c.find(".fc-highlight-container"),this.businessContainerEls=c.find(".fc-business-container"),this.bookendCells(c.find("tr")),this.el.append(c)},renderFgSegs:function(a){return a=this.renderFgSegsIntoContainers(a,this.fgContainerEls),this.fgSegs=a,a},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(a,b){var c,d,e;for(a=this.renderFgSegsIntoContainers(a,this.helperContainerEls),c=0;c<a.length;c++)d=a[c],b&&b.col===d.col&&(e=b.el,d.el.css({left:e.css("left"),right:e.css("right"),"margin-left":e.css("margin-left"),"margin-right":e.css("margin-right")}));this.helperSegs=a},unrenderHelperSegs:function(){this.unrenderNamedSegs("helperSegs")},renderBgSegs:function(a){return a=this.renderFillSegEls("bgEvent",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.bgContainerEls),this.bgSegs=a,a},unrenderBgSegs:function(){this.unrenderNamedSegs("bgSegs")},renderHighlightSegs:function(a){a=this.renderFillSegEls("highlight",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.highlightContainerEls),this.highlightSegs=a},unrenderHighlightSegs:function(){this.unrenderNamedSegs("highlightSegs")},renderBusinessSegs:function(a){a=this.renderFillSegEls("businessHours",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.businessContainerEls),this.businessSegs=a},unrenderBusinessSegs:function(){this.unrenderNamedSegs("businessSegs")},groupSegsByCol:function(a){var b,c=[];for(b=0;b<this.colCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].col].push(a[b]);return c},attachSegsByCol:function(a,b){var c,d,e;for(c=0;c<this.colCnt;c++)for(d=a[c],e=0;e<d.length;e++)b.eq(c).append(d[e].el)},unrenderNamedSegs:function(a){var b,c=this[a];if(c){for(b=0;b<c.length;b++)c[b].el.remove();this[a]=null}},renderFgSegsIntoContainers:function(a,b){var c,d;for(a=this.renderFgSegEls(a),c=this.groupSegsByCol(a),d=0;d<this.colCnt;d++)this.updateFgSegCoords(c[d]);return this.attachSegsByCol(c,b),a},fgSegHtml:function(a,b){var c,d,e,f=this.view,g=a.event,h=f.isEventDraggable(g),i=!b&&a.isStart&&f.isEventResizableFromStart(g),j=!b&&a.isEnd&&f.isEventResizableFromEnd(g),k=this.getSegClasses(a,h,i||j),l=$(this.getSegSkinCss(a));return k.unshift("fc-time-grid-event","fc-v-event"),f.isMultiDayEvent(g)?(a.isStart||a.isEnd)&&(c=this.getEventTimeText(a),d=this.getEventTimeText(a,"LT"),e=this.getEventTimeText(a,null,!1)):(c=this.getEventTimeText(g),d=this.getEventTimeText(g,"LT"),e=this.getEventTimeText(g,null,!1)),'<a class="'+k.join(" ")+'"'+(g.url?' href="'+Y(g.url)+'"':"")+(l?' style="'+l+'"':"")+'><div class="fc-content">'+(c?'<div class="fc-time" data-start="'+Y(e)+'" data-full="'+Y(d)+'"><span>'+Y(c)+"</span></div>":"")+(g.title?'<div class="fc-title">'+Y(g.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(j?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},updateSegVerticals:function(a){this.computeSegVerticals(a),this.assignSegVerticals(a)},computeSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.top=this.computeDateTop(c.start,c.start),c.bottom=this.computeDateTop(c.end,c.start)},assignSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateSegVerticalCss(c))},generateSegVerticalCss:function(a){return{top:a.top,bottom:-a.bottom}},updateFgSegCoords:function(a){this.computeSegVerticals(a),this.computeFgSegHorizontals(a),this.assignSegVerticals(a),this.assignFgSegHorizontals(a)},computeFgSegHorizontals:function(a){var b,c,d;if(this.sortEventSegs(a),b=Ea(a),Fa(b),c=b[0]){for(d=0;d<c.length;d++)Ga(c[d]);for(d=0;d<c.length;d++)this.computeFgSegForwardBack(c[d],0,0)}},computeFgSegForwardBack:function(a,b,c){var d,e=a.forwardSegs;if(void 0===a.forwardCoord)for(e.length?(this.sortForwardSegs(e),this.computeFgSegForwardBack(e[0],b+1,c),a.forwardCoord=e[0].backwardCoord):a.forwardCoord=1,a.backwardCoord=a.forwardCoord-(a.forwardCoord-c)/(b+1),d=0;d<e.length;d++)this.computeFgSegForwardBack(e[d],0,a.forwardCoord)},sortForwardSegs:function(a){a.sort(ca(this,"compareForwardSegs"))},compareForwardSegs:function(a,b){return b.forwardPressure-a.forwardPressure||(a.backwardCoord||0)-(b.backwardCoord||0)||this.compareEventSegs(a,b)},assignFgSegHorizontals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateFgSegHorizontalCss(c)),c.bottom-c.top<30&&c.el.addClass("fc-short")},generateFgSegHorizontalCss:function(a){var b,c,d=this.view.opt("slotEventOverlap"),e=a.backwardCoord,f=a.forwardCoord,g=this.generateSegVerticalCss(a);return d&&(f=Math.min(1,e+2*(f-e))),this.isRTL?(b=1-f,c=e):(b=e,c=1-f),g.zIndex=a.level+1,g.left=100*b+"%",g.right=100*c+"%",d&&a.forwardPressure&&(g[this.isRTL?"marginLeft":"marginRight"]=20),g}});var ob=Pa.View=ra.extend({type:null,name:null,title:null,calendar:null,options:null,el:null,displaying:null,isSkeletonRendered:!1,isEventsRendered:!1,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,eventOrderSpecs:null,scrollerEl:null,scrollTop:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,documentMousedownProxy:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(a,c,d,e){this.calendar=a,this.type=this.name=c,this.options=d,this.intervalDuration=e||b.duration(1,"day"),this.nextDayThreshold=b.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=A(this.opt("eventOrder")),this.documentMousedownProxy=ca(this,"documentMousedown"),this.initialize()},initialize:function(){},opt:function(a){return this.options[a]},trigger:function(a,b){var c=this.calendar;return c.trigger.apply(c,[a,b||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(a){this.setRange(this.computeRange(a))},setRange:function(b){a.extend(this,b),this.updateTitle()},computeRange:function(a){var b,c,d=I(this.intervalDuration),e=a.clone().startOf(d),f=e.clone().add(this.intervalDuration);return/year|month|week|day/.test(d)?(e.stripTime(),f.stripTime()):(e.hasTime()||(e=this.calendar.time(0)),f.hasTime()||(f=this.calendar.time(0))),b=e.clone(),b=this.skipHiddenDays(b),c=f.clone(),c=this.skipHiddenDays(c,-1,!0),{intervalUnit:d,intervalStart:e,intervalEnd:f,start:b,end:c}},computePrevDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(a,b){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(a)&&(a=this.skipHiddenDays(a,b),a.startOf("day")),a},updateTitle:function(){this.title=this.computeTitle()},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(a,b,c){var d=a.end;return d.hasTime()||(d=d.clone().subtract(1)),ma(a.start,d,b,c,this.opt("isRTL"))},setElement:function(a){this.el=a,this.bindGlobalHandlers()},removeElement:function(){this.clear(),this.isSkeletonRendered&&(this.unrenderSkeleton(),this.isSkeletonRendered=!1),this.unbindGlobalHandlers(),this.el.remove()},display:function(b){var c=this,d=null;return this.displaying&&(d=this.queryScroll()),this.calendar.freezeContentHeight(),this.clear().then(function(){return c.displaying=a.when(c.displayView(b)).then(function(){c.forceScroll(c.computeInitialScroll(d)),c.calendar.unfreezeContentHeight(),c.triggerRender()})})},clear:function(){var b=this,c=this.displaying;return c?c.then(function(){return b.displaying=null,b.clearEvents(),b.clearView()}):a.when()},displayView:function(a){this.isSkeletonRendered||(this.renderSkeleton(),this.isSkeletonRendered=!0),a&&this.setDate(a),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours(),this.startNowIndicator()},clearView:function(){this.unselect(),this.stopNowIndicator(),this.triggerUnrender(),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy()},renderSkeleton:function(){},unrenderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.trigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.trigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){a(document).on("mousedown",this.documentMousedownProxy)},unbindGlobalHandlers:function(){a(document).off("mousedown",this.documentMousedownProxy)},initThemingProps:function(){var a=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=a+"-widget-header",this.widgetContentClass=a+"-widget-content",this.highlightStateClass=a+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var a,c,d,e=this;this.opt("nowIndicator")&&(a=this.getNowIndicatorUnit(),a&&(c=ca(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,d=this.initialNowDate.clone().startOf(a).add(1,a)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){e.nowIndicatorTimeoutID=null,c(),d=+b.duration(1,a),d=Math.max(100,d),e.nowIndicatorIntervalID=setInterval(c,d)},d)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},updateSize:function(a){var b;a&&(b=this.queryScroll()),this.updateHeight(a),this.updateWidth(a),this.updateNowIndicator(),a&&this.setScroll(b)},updateWidth:function(a){},updateHeight:function(a){var b=this.calendar;this.setHeight(b.getSuggestedViewHeight(),b.isHeightAuto())},setHeight:function(a,b){},computeScrollerHeight:function(a){var b,c,d=this.scrollerEl;return b=this.el.add(d),b.css({position:"relative",left:-1}),c=this.el.outerHeight()-d.height(),b.css({position:"",left:""}),a-c},computeInitialScroll:function(a){return 0},queryScroll:function(){return this.scrollerEl?this.scrollerEl.scrollTop():void 0},setScroll:function(a){return this.scrollerEl?this.scrollerEl.scrollTop(a):void 0},forceScroll:function(a){var b=this;this.setScroll(a),setTimeout(function(){b.setScroll(a)},0)},displayEvents:function(a){var b=this.queryScroll();this.clearEvents(),this.renderEvents(a),this.isEventsRendered=!0,this.setScroll(b),this.triggerEventRender()},clearEvents:function(){var a;this.isEventsRendered&&(a=this.queryScroll(),this.triggerEventUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.setScroll(a),this.isEventsRendered=!1)},renderEvents:function(a){},unrenderEvents:function(){},triggerEventRender:function(){this.renderedEventSegEach(function(a){this.trigger("eventAfterRender",a.event,a.event,a.el)}),this.trigger("eventAfterAllRender")},triggerEventUnrender:function(){this.renderedEventSegEach(function(a){this.trigger("eventDestroy",a.event,a.event,a.el)})},resolveEventEl:function(b,c){var d=this.trigger("eventRender",b,b,c);return d===!1?c=null:d&&d!==!0&&(c=a(d)),c},showEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","")},a)},hideEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","hidden")},a)},renderedEventSegEach:function(a,b){var c,d=this.getEventSegs();for(c=0;c<d.length;c++)b&&d[c].event._id!==b._id||d[c].el&&a.call(this,d[c])},getEventSegs:function(){return[]},isEventDraggable:function(a){var b=a.source||{};return X(a.startEditable,b.startEditable,this.opt("eventStartEditable"),a.editable,b.editable,this.opt("editable"))},reportEventDrop:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventDrop(a,g.dateDelta,h,d,e),f.reportEventChange()},triggerEventDrop:function(a,b,c,d,e){this.trigger("eventDrop",d[0],a,b,c,e,{})},reportExternalDrop:function(b,c,d,e,f){var g,h,i=b.eventProps;i&&(g=a.extend({},i,c),h=this.calendar.renderEvent(g,b.stick)[0]),this.triggerExternalDrop(h,c,d,e,f)},triggerExternalDrop:function(a,b,c,d,e){this.trigger("drop",c[0],b.start,d,e),a&&this.trigger("eventReceive",null,a)},renderDrag:function(a,b){},unrenderDrag:function(){},isEventResizableFromStart:function(a){return this.opt("eventResizableFromStart")&&this.isEventResizable(a)},isEventResizableFromEnd:function(a){return this.isEventResizable(a)},isEventResizable:function(a){var b=a.source||{};return X(a.durationEditable,b.durationEditable,this.opt("eventDurationEditable"),a.editable,b.editable,this.opt("editable"))},reportEventResize:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventResize(a,g.durationDelta,h,d,e),f.reportEventChange()},triggerEventResize:function(a,b,c,d,e){this.trigger("eventResize",d[0],a,b,c,e,{})},select:function(a,b){this.unselect(b),this.renderSelection(a),this.reportSelection(a,b)},renderSelection:function(a){},reportSelection:function(a,b){this.isSelected=!0,this.triggerSelect(a,b)},triggerSelect:function(a,b){this.trigger("select",null,this.calendar.applyTimezone(a.start),this.calendar.applyTimezone(a.end),b)},unselect:function(a){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.trigger("unselect",null,a))},unrenderSelection:function(){},documentMousedown:function(b){var c;this.isSelected&&this.opt("unselectAuto")&&v(b)&&(c=this.opt("unselectCancel"),c&&a(b.target).closest(c).length||this.unselect(b))},triggerDayClick:function(a,b,c){this.trigger("dayClick",b,this.calendar.applyTimezone(a.start),c)},initHiddenDays:function(){var b,c=this.opt("hiddenDays")||[],d=[],e=0;for(this.opt("weekends")===!1&&c.push(0,6),b=0;7>b;b++)(d[b]=-1!==a.inArray(b,c))||e++;if(!e)throw"invalid hiddenDays";this.isHiddenDayHash=d},isHiddenDay:function(a){return b.isMoment(a)&&(a=a.day()),this.isHiddenDayHash[a]},skipHiddenDays:function(a,b,c){var d=a.clone();for(b=b||1;this.isHiddenDayHash[(d.day()+(c?b:0)+7)%7];)d.add(b,"days");return d},computeDayRange:function(a){var b,c=a.start.clone().stripTime(),d=a.end,e=null;return d&&(e=d.clone().stripTime(),b=+d.time(),b&&b>=this.nextDayThreshold&&e.add(1,"days")),(!d||c>=e)&&(e=c.clone().add(1,"days")),{start:c,end:e}},isMultiDayEvent:function(a){var b=this.computeDayRange(a);return b.end.diff(b.start,"days")>1}}),pb=Pa.Calendar=ra.extend({dirDefaults:null,langDefaults:null,overrides:null,options:null,viewSpecCache:null,view:null,header:null,loadingLevel:0,constructor:Ja,initialize:function(){},initOptions:function(a){var b,e,f,g;a=d(a),b=a.lang,e=qb[b],e||(b=pb.defaults.lang,e=qb[b]||{}),f=X(a.isRTL,e.isRTL,pb.defaults.isRTL),g=f?pb.rtlDefaults:{},this.dirDefaults=g,this.langDefaults=e,this.overrides=a,this.options=c([pb.defaults,g,e,a]),Ka(this.options),this.viewSpecCache={}},getViewSpec:function(a){var b=this.viewSpecCache;return b[a]||(b[a]=this.buildViewSpec(a))},getUnitViewSpec:function(b){var c,d,e;if(-1!=a.inArray(b,Ua))for(c=this.header.getViewsWithButtons(),a.each(Pa.views,function(a){c.push(a)}),d=0;d<c.length;d++)if(e=this.getViewSpec(c[d]),e&&e.singleUnit==b)return e},buildViewSpec:function(a){for(var d,e,f,g,h=this.overrides.views||{},i=[],j=[],k=[],l=a;l;)d=Qa[l],e=h[l],l=null,"function"==typeof d&&(d={"class":d}),d&&(i.unshift(d),j.unshift(d.defaults||{}),f=f||d.duration,l=l||d.type),e&&(k.unshift(e),f=f||e.duration,l=l||e.type);return d=Q(i),d.type=a,d["class"]?(f&&(f=b.duration(f),f.valueOf()&&(d.duration=f,g=I(f),1===f.as(g)&&(d.singleUnit=g,k.unshift(h[g]||{})))),d.defaults=c(j),d.overrides=c(k),this.buildViewSpecOptions(d),this.buildViewSpecButtonText(d,a),d):!1},buildViewSpecOptions:function(a){a.options=c([pb.defaults,a.defaults,this.dirDefaults,this.langDefaults,this.overrides,a.overrides]),Ka(a.options)},buildViewSpecButtonText:function(a,b){function c(c){var d=c.buttonText||{};return d[b]||(a.singleUnit?d[a.singleUnit]:null)}a.buttonTextOverride=c(this.overrides)||a.overrides.buttonText,a.buttonTextDefault=c(this.langDefaults)||c(this.dirDefaults)||a.defaults.buttonText||c(pb.defaults)||(a.duration?this.humanizeDuration(a.duration):null)||b},instantiateView:function(a){var b=this.getViewSpec(a);return new b["class"](this,a,b.options,b.duration)},isValidViewType:function(a){return Boolean(this.getViewSpec(a))},pushLoading:function(){this.loadingLevel++||this.trigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.trigger("loading",null,!1,this.view)},buildSelectSpan:function(a,b){var c,d=this.moment(a).stripZone();return c=b?this.moment(b).stripZone():d.hasTime()?d.clone().add(this.defaultTimedEventDuration):d.clone().add(this.defaultAllDayEventDuration),{start:d,end:c}}});pb.mixin(eb),pb.defaults={titleRangeSeparator:" — ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200},pb.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},pb.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var qb=Pa.langs={};Pa.datepickerLang=function(b,c,d){var e=qb[b]||(qb[b]={});e.isRTL=d.isRTL,e.weekNumberTitle=d.weekHeader,a.each(rb,function(a,b){e[a]=b(d)}),a.datepicker&&(a.datepicker.regional[c]=a.datepicker.regional[b]=d,a.datepicker.regional.en=a.datepicker.regional[""],a.datepicker.setDefaults(d))},Pa.lang=function(b,d){var e,f;e=qb[b]||(qb[b]={}),d&&(e=qb[b]=c([e,d])),f=La(b),a.each(sb,function(a,b){null==e[a]&&(e[a]=b(f,e))}),pb.defaults.lang=b};var rb={buttonText:function(a){return{prev:Z(a.prevText),next:Z(a.nextText),today:Z(a.currentText)}},monthYearFormat:function(a){return a.showMonthAfterYear?"YYYY["+a.yearSuffix+"] MMMM":"MMMM YYYY["+a.yearSuffix+"]"}},sb={dayOfMonthFormat:function(a,b){var c=a.longDateFormat("l");return c=c.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),b.isRTL?c+=" ddd":c="ddd "+c,c},mediumTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a"); -},extraSmallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(a){return a.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"")}},tb={smallDayDateFormat:function(a){return a.isRTL?"D dd":"dd D"},weekFormat:function(a){return a.isRTL?"w[ "+a.weekNumberTitle+"]":"["+a.weekNumberTitle+" ]w"},smallWeekFormat:function(a){return a.isRTL?"w["+a.weekNumberTitle+"]":"["+a.weekNumberTitle+"]w"}};Pa.lang("en",pb.englishDefaults),Pa.sourceNormalizers=[],Pa.sourceFetchers=[];var ub={dataType:"json",cache:!1},vb=1;pb.prototype.getPeerEvents=function(a,b){var c,d,e=this.getEventCache(),f=[];for(c=0;c<e.length;c++)d=e[c],b&&b._id===d._id||f.push(d);return f};var wb=Pa.BasicView=ob.extend({dayGridClass:mb,dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid()},instantiateDayGrid:function(){var a=this.dayGridClass.extend(xb);return new a(this)},setRange:function(a){ob.prototype.setRange.call(this,a),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(a)},computeRange:function(a){var b=ob.prototype.computeRange.call(this,a);return/year|month/.test(b.intervalUnit)&&(b.start.startOf("week"),b.start=this.skipHiddenDays(b.start),b.end.weekday()&&(b.end.add(1,"week").startOf("week"),b.end=this.skipHiddenDays(b.end,-1,!0))),b},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scrollerEl=this.el.find(".fc-day-grid-container"),this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"><div class="fc-day-grid-container"><div class="fc-day-grid"/></div></td></tr></tbody></table>'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var a=this.opt("eventLimit");return a&&"number"!=typeof a},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=k(this.el.find(".fc-week-number")))},setHeight:function(a,b){var c,d=this.opt("eventLimit");m(this.scrollerEl),f(this.headRowEl),this.dayGrid.removeSegPopover(),d&&"number"==typeof d&&this.dayGrid.limitRows(d),c=this.computeScrollerHeight(a),this.setGridHeight(c,b),d&&"number"!=typeof d&&this.dayGrid.limitRows(d),!b&&l(this.scrollerEl,c)&&(e(this.headRowEl,r(this.scrollerEl)),c=this.computeScrollerHeight(a),this.scrollerEl.height(c))},setGridHeight:function(a,b){b?j(this.dayGrid.rowEls):i(this.dayGrid.rowEls,a,!0)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(a,b){return this.dayGrid.queryHit(a,b)},getHitSpan:function(a){return this.dayGrid.getHitSpan(a)},getHitEl:function(a){return this.dayGrid.getHitEl(a)},renderEvents:function(a){this.dayGrid.renderEvents(a),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return this.dayGrid.renderDrag(a,b)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(a){this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),xb={renderHeadIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<th class="fc-week-number '+a.widgetHeaderClass+'" '+a.weekNumberStyleAttr()+"><span>"+Y(a.opt("weekNumberTitle"))+"</span></th>":""},renderNumberIntroHtml:function(a){var b=this.view;return b.weekNumbersVisible?'<td class="fc-week-number" '+b.weekNumberStyleAttr()+"><span>"+this.getCellDate(a,0).format("w")+"</span></td>":""},renderBgIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number '+a.widgetContentClass+'" '+a.weekNumberStyleAttr()+"></td>":""},renderIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number" '+a.weekNumberStyleAttr()+"></td>":""}},yb=Pa.MonthView=wb.extend({computeRange:function(a){var b,c=wb.prototype.computeRange.call(this,a);return this.isFixedWeeks()&&(b=Math.ceil(c.end.diff(c.start,"weeks",!0)),c.end.add(6-b,"weeks")),c},setGridHeight:function(a,b){b=b||"variable"===this.opt("weekMode"),b&&(a*=this.rowCnt/6),i(this.dayGrid.rowEls,a,!b)},isFixedWeeks:function(){var a=this.opt("weekMode");return a?"fixed"===a:this.opt("fixedWeekCount")}});Qa.basic={"class":wb},Qa.basicDay={type:"basic",duration:{days:1}},Qa.basicWeek={type:"basic",duration:{weeks:1}},Qa.month={"class":yb,duration:{months:1},defaults:{fixedWeekCount:!0}};var zb=Pa.AgendaView=ob.extend({timeGridClass:nb,timeGrid:null,dayGridClass:mb,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,bottomRuleHeight:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid())},instantiateTimeGrid:function(){var a=this.timeGridClass.extend(Ab);return new a(this)},instantiateDayGrid:function(){var a=this.dayGridClass.extend(Bb);return new a(this)},setRange:function(a){ob.prototype.setRange.call(this,a),this.timeGrid.setRange(a),this.dayGrid&&this.dayGrid.setRange(a)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scrollerEl=this.el.find(".fc-time-grid-container"),this.timeGrid.setElement(this.el.find(".fc-time-grid")),this.timeGrid.renderDates(),this.bottomRuleEl=a('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement())},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+'<div class="fc-time-grid-container"><div class="fc-time-grid"/></div></td></tr></tbody></table>'},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(a){this.timeGrid.renderNowIndicator(a)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(a){this.timeGrid.updateSize(a),ob.prototype.updateSize.call(this,a)},updateWidth:function(){this.axisWidth=k(this.el.find(".fc-axis"))},setHeight:function(a,b){var c,d;null===this.bottomRuleHeight&&(this.bottomRuleHeight=this.bottomRuleEl.outerHeight()),this.bottomRuleEl.hide(),this.scrollerEl.css("overflow",""),m(this.scrollerEl),f(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),c=this.opt("eventLimit"),c&&"number"!=typeof c&&(c=Cb),c&&this.dayGrid.limitRows(c)),b||(d=this.computeScrollerHeight(a),l(this.scrollerEl,d)?(e(this.noScrollRowEls,r(this.scrollerEl)),d=this.computeScrollerHeight(a),this.scrollerEl.height(d)):(this.scrollerEl.height(d).css("overflow","hidden"),this.bottomRuleEl.show()))},computeInitialScroll:function(){var a=b.duration(this.opt("scrollTime")),c=this.timeGrid.computeTimeTop(a);return c=Math.ceil(c),c&&c++,c},prepareHits:function(){this.timeGrid.prepareHits(),this.dayGrid&&this.dayGrid.prepareHits()},releaseHits:function(){this.timeGrid.releaseHits(),this.dayGrid&&this.dayGrid.releaseHits()},queryHit:function(a,b){var c=this.timeGrid.queryHit(a,b);return!c&&this.dayGrid&&(c=this.dayGrid.queryHit(a,b)),c},getHitSpan:function(a){return a.component.getHitSpan(a)},getHitEl:function(a){return a.component.getHitEl(a)},renderEvents:function(a){var b,c,d=[],e=[],f=[];for(c=0;c<a.length;c++)a[c].allDay?d.push(a[c]):e.push(a[c]);b=this.timeGrid.renderEvents(e),this.dayGrid&&(f=this.dayGrid.renderEvents(d)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return a.start.hasTime()?this.timeGrid.renderDrag(a,b):this.dayGrid?this.dayGrid.renderDrag(a,b):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(a){a.start.hasTime()||a.end.hasTime()?this.timeGrid.renderSelection(a):this.dayGrid&&this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),Ab={renderHeadIntroHtml:function(){var a,b=this.view;return b.opt("weekNumbers")?(a=this.start.format(b.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"><span>"+Y(a)+"</span></th>"):'<th class="fc-axis '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Bb={renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"><span>"+(a.opt("allDayHtml")||Y(a.opt("allDayText")))+"</span></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Cb=5,Db=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];return Qa.agenda={"class":zb,defaults:{allDaySlot:!0,allDayText:"all-day",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Qa.agendaDay={type:"agenda",duration:{days:1}},Qa.agendaWeek={type:"agenda",duration:{weeks:1}},Pa});
\ No newline at end of file +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){function c(a){return W(a,Xa)}function d(b){var c,d={views:b.views||{}};return a.each(b,function(b,e){"views"!=b&&(a.isPlainObject(e)&&!/(time|duration|interval)$/i.test(b)&&-1==a.inArray(b,Xa)?(c=null,a.each(e,function(a,e){/^(month|week|day|default|basic(Week|Day)?|agenda(Week|Day)?)$/.test(a)?(d.views[a]||(d.views[a]={}),d.views[a][b]=e):(c||(c={}),c[a]=e)}),c&&(d[b]=c)):d[b]=e)}),d}function e(a,b){b.left&&a.css({"border-left-width":1,"margin-left":b.left-1}),b.right&&a.css({"border-right-width":1,"margin-right":b.right-1})}function f(a){a.css({"margin-left":"","margin-right":"","border-left-width":"","border-right-width":""})}function g(){a("body").addClass("fc-not-allowed")}function h(){a("body").removeClass("fc-not-allowed")}function i(b,c,d){var e=Math.floor(c/b.length),f=Math.floor(c-e*(b.length-1)),g=[],h=[],i=[],k=0;j(b),b.each(function(c,d){var j=c===b.length-1?f:e,l=a(d).outerHeight(!0);j>l?(g.push(d),h.push(l),i.push(a(d).height())):k+=l}),d&&(c-=k,e=Math.floor(c/g.length),f=Math.floor(c-e*(g.length-1))),a(g).each(function(b,c){var d=b===g.length-1?f:e,j=h[b],k=i[b],l=d-(j-k);d>j&&a(c).height(l)})}function j(a){a.height("")}function k(b){var c=0;return b.find("> span").each(function(b,d){var e=a(d).outerWidth();e>c&&(c=e)}),c++,b.width(c),c}function l(a,b){var c,d=a.add(b);return d.css({position:"relative",left:-1}),c=a.outerHeight()-b.outerHeight(),d.css({position:"",left:""}),c}function m(b){var c=b.css("position"),d=b.parents().filter(function(){var b=a(this);return/(auto|scroll)/.test(b.css("overflow")+b.css("overflow-y")+b.css("overflow-x"))}).eq(0);return"fixed"!==c&&d.length?d:a(b[0].ownerDocument||document)}function n(a,b){var c=a.offset(),d=c.left-(b?b.left:0),e=c.top-(b?b.top:0);return{left:d,right:d+a.outerWidth(),top:e,bottom:e+a.outerHeight()}}function o(a,b){var c=a.offset(),d=q(a),e=c.left+t(a,"border-left-width")+d.left-(b?b.left:0),f=c.top+t(a,"border-top-width")+d.top-(b?b.top:0);return{left:e,right:e+a[0].clientWidth,top:f,bottom:f+a[0].clientHeight}}function p(a,b){var c=a.offset(),d=c.left+t(a,"border-left-width")+t(a,"padding-left")-(b?b.left:0),e=c.top+t(a,"border-top-width")+t(a,"padding-top")-(b?b.top:0);return{left:d,right:d+a.width(),top:e,bottom:e+a.height()}}function q(a){var b=a.innerWidth()-a[0].clientWidth,c={left:0,right:0,top:0,bottom:a.innerHeight()-a[0].clientHeight};return r()&&"rtl"==a.css("direction")?c.left=b:c.right=b,c}function r(){return null===Ya&&(Ya=s()),Ya}function s(){var b=a("<div><div/></div>").css({position:"absolute",top:-1e3,left:0,border:0,padding:0,overflow:"scroll",direction:"rtl"}).appendTo("body"),c=b.children(),d=c.offset().left>b.offset().left;return b.remove(),d}function t(a,b){return parseFloat(a.css(b))||0}function u(a){return 1==a.which&&!a.ctrlKey}function v(a){if(void 0!==a.pageX)return a.pageX;var b=a.originalEvent.touches;return b?b[0].pageX:void 0}function w(a){if(void 0!==a.pageY)return a.pageY;var b=a.originalEvent.touches;return b?b[0].pageY:void 0}function x(a){return/^touch/.test(a.type)}function y(a){a.addClass("fc-unselectable").on("selectstart",z)}function z(a){a.preventDefault()}function A(a){return window.addEventListener?(window.addEventListener("scroll",a,!0),!0):!1}function B(a){return window.removeEventListener?(window.removeEventListener("scroll",a,!0),!0):!1}function C(a,b){var c={left:Math.max(a.left,b.left),right:Math.min(a.right,b.right),top:Math.max(a.top,b.top),bottom:Math.min(a.bottom,b.bottom)};return c.left<c.right&&c.top<c.bottom?c:!1}function D(a,b){return{left:Math.min(Math.max(a.left,b.left),b.right),top:Math.min(Math.max(a.top,b.top),b.bottom)}}function E(a){return{left:(a.left+a.right)/2,top:(a.top+a.bottom)/2}}function F(a,b){return{left:a.left-b.left,top:a.top-b.top}}function G(b){var c,d,e=[],f=[];for("string"==typeof b?f=b.split(/\s*,\s*/):"function"==typeof b?f=[b]:a.isArray(b)&&(f=b),c=0;c<f.length;c++)d=f[c],"string"==typeof d?e.push("-"==d.charAt(0)?{field:d.substring(1),order:-1}:{field:d,order:1}):"function"==typeof d&&e.push({func:d});return e}function H(a,b,c){var d,e;for(d=0;d<c.length;d++)if(e=I(a,b,c[d]))return e;return 0}function I(a,b,c){return c.func?c.func(a,b):J(a[c.field],b[c.field])*(c.order||1)}function J(b,c){return b||c?null==c?-1:null==b?1:"string"===a.type(b)||"string"===a.type(c)?String(b).localeCompare(String(c)):b-c:0}function K(a,b){var c,d,e,f,g=a.start,h=a.end,i=b.start,j=b.end;return h>i&&j>g?(g>=i?(c=g.clone(),e=!0):(c=i.clone(),e=!1),j>=h?(d=h.clone(),f=!0):(d=j.clone(),f=!1),{start:c,end:d,isStart:e,isEnd:f}):void 0}function L(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days"),ms:a.time()-c.time()})}function M(a,c){return b.duration({days:a.clone().stripTime().diff(c.clone().stripTime(),"days")})}function N(a,c,d){return b.duration(Math.round(a.diff(c,d,!0)),d)}function O(a,b){var c,d,e;for(c=0;c<$a.length&&(d=$a[c],e=P(d,a,b),!(e>=1&&ha(e)));c++);return d}function P(a,c,d){return null!=d?d.diff(c,a,!0):b.isDuration(c)?c.as(a):c.end.diff(c.start,a,!0)}function Q(a,b,c){var d;return T(c)?(b-a)/c:(d=c.asMonths(),Math.abs(d)>=1&&ha(d)?b.diff(a,"months",!0)/d:b.diff(a,"days",!0)/c.asDays())}function R(a,b){var c,d;return T(a)||T(b)?a/b:(c=a.asMonths(),d=b.asMonths(),Math.abs(c)>=1&&ha(c)&&Math.abs(d)>=1&&ha(d)?c/d:a.asDays()/b.asDays())}function S(a,c){var d;return T(a)?b.duration(a*c):(d=a.asMonths(),Math.abs(d)>=1&&ha(d)?b.duration({months:d*c}):b.duration({days:a.asDays()*c}))}function T(a){return Boolean(a.hours()||a.minutes()||a.seconds()||a.milliseconds())}function U(a){return"[object Date]"===Object.prototype.toString.call(a)||a instanceof Date}function V(a){return/^\d+\:\d+(?:\:\d+\.?(?:\d{3})?)?$/.test(a)}function W(a,b){var c,d,e,f,g,h,i={};if(b)for(c=0;c<b.length;c++){for(d=b[c],e=[],f=a.length-1;f>=0;f--)if(g=a[f][d],"object"==typeof g)e.unshift(g);else if(void 0!==g){i[d]=g;break}e.length&&(i[d]=W(e))}for(c=a.length-1;c>=0;c--){h=a[c];for(d in h)d in i||(i[d]=h[d])}return i}function X(a){var b=function(){};return b.prototype=a,new b}function Y(a,b){for(var c in a)$(a,c)&&(b[c]=a[c])}function Z(a,b){var c,d,e=["constructor","toString","valueOf"];for(c=0;c<e.length;c++)d=e[c],a[d]!==Object.prototype[d]&&(b[d]=a[d])}function $(a,b){return cb.call(a,b)}function _(b){return/undefined|null|boolean|number|string/.test(a.type(b))}function aa(b,c,d){if(a.isFunction(b)&&(b=[b]),b){var e,f;for(e=0;e<b.length;e++)f=b[e].apply(c,d)||f;return f}}function ba(){for(var a=0;a<arguments.length;a++)if(void 0!==arguments[a])return arguments[a]}function ca(a){return(a+"").replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""").replace(/\n/g,"<br />")}function da(a){return a.replace(/&.*?;/g,"")}function ea(b){var c=[];return a.each(b,function(a,b){null!=b&&c.push(a+":"+b)}),c.join(";")}function fa(a){return a.charAt(0).toUpperCase()+a.slice(1)}function ga(a,b){return a-b}function ha(a){return a%1===0}function ia(a,b){var c=a[b];return function(){return c.apply(a,arguments)}}function ja(a,b,c){var d,e,f,g,h,i=function(){var j=+new Date-g;b>j?d=setTimeout(i,b-j):(d=null,c||(h=a.apply(f,e),f=e=null))};return function(){f=this,e=arguments,g=+new Date;var j=c&&!d;return d||(d=setTimeout(i,b)),j&&(h=a.apply(f,e),f=e=null),h}}function ka(c,d,e){var f,g,h,i,j=c[0],k=1==c.length&&"string"==typeof j;return b.isMoment(j)?(i=b.apply(null,c),ma(j,i)):U(j)||void 0===j?i=b.apply(null,c):(f=!1,g=!1,k?db.test(j)?(j+="-01",c=[j],f=!0,g=!0):(h=eb.exec(j))&&(f=!h[5],g=!0):a.isArray(j)&&(g=!0),i=d||f?b.utc.apply(b,c):b.apply(null,c),f?(i._ambigTime=!0,i._ambigZone=!0):e&&(g?i._ambigZone=!0:k&&(i.utcOffset?i.utcOffset(j):i.zone(j)))),i._fullCalendar=!0,i}function la(a,c){var d,e,f=!1,g=!1,h=a.length,i=[];for(d=0;h>d;d++)e=a[d],b.isMoment(e)||(e=Va.moment.parseZone(e)),f=f||e._ambigTime,g=g||e._ambigZone,i.push(e);for(d=0;h>d;d++)e=i[d],c||!f||e._ambigTime?g&&!e._ambigZone&&(i[d]=e.clone().stripZone()):i[d]=e.clone().stripTime();return i}function ma(a,b){a._ambigTime?b._ambigTime=!0:b._ambigTime&&(b._ambigTime=!1),a._ambigZone?b._ambigZone=!0:b._ambigZone&&(b._ambigZone=!1)}function na(a,b){a.year(b[0]||0).month(b[1]||0).date(b[2]||0).hours(b[3]||0).minutes(b[4]||0).seconds(b[5]||0).milliseconds(b[6]||0)}function oa(a,b){return gb.format.call(a,b)}function pa(a,b){return qa(a,va(b))}function qa(a,b){var c,d="";for(c=0;c<b.length;c++)d+=ra(a,b[c]);return d}function ra(a,b){var c,d;return"string"==typeof b?b:(c=b.token)?hb[c]?hb[c](a):oa(a,c):b.maybe&&(d=qa(a,b.maybe),d.match(/[1-9]/))?d:""}function sa(a,b,c,d,e){var f;return a=Va.moment.parseZone(a),b=Va.moment.parseZone(b),f=(a.localeData||a.lang).call(a),c=f.longDateFormat(c)||c,d=d||" - ",ta(a,b,va(c),d,e)}function ta(a,b,c,d,e){var f,g,h,i,j=a.clone().stripZone(),k=b.clone().stripZone(),l="",m="",n="",o="",p="";for(g=0;g<c.length&&(f=ua(a,b,j,k,c[g]),f!==!1);g++)l+=f;for(h=c.length-1;h>g&&(f=ua(a,b,j,k,c[h]),f!==!1);h--)m=f+m;for(i=g;h>=i;i++)n+=ra(a,c[i]),o+=ra(b,c[i]);return(n||o)&&(p=e?o+d+n:n+d+o),l+p+m}function ua(a,b,c,d,e){var f,g;return"string"==typeof e?e:(f=e.token)&&(g=ib[f.charAt(0)],g&&c.isSame(d,g))?oa(a,f):!1}function va(a){return a in jb?jb[a]:jb[a]=wa(a)}function wa(a){for(var b,c=[],d=/\[([^\]]*)\]|\(([^\)]*)\)|(LTS|LT|(\w)\4*o?)|([^\w\[\(]+)/g;b=d.exec(a);)b[1]?c.push(b[1]):b[2]?c.push({maybe:wa(b[2])}):b[3]?c.push({token:b[3]}):b[5]&&c.push(b[5]);return c}function xa(){}function ya(a,b){var c;return $(b,"constructor")&&(c=b.constructor),"function"!=typeof c&&(c=b.constructor=function(){a.apply(this,arguments)}),c.prototype=X(a.prototype),Y(b,c.prototype),Z(b,c.prototype),Y(a,c),c}function za(a,b){Y(b,a.prototype)}function Aa(a,b){return a||b?a&&b?a.component===b.component&&Ba(a,b)&&Ba(b,a):!1:!0}function Ba(a,b){for(var c in a)if(!/^(component|left|right|top|bottom)$/.test(c)&&a[c]!==b[c])return!1;return!0}function Ca(a){var b=Ea(a);return"background"===b||"inverse-background"===b}function Da(a){return"inverse-background"===Ea(a)}function Ea(a){return ba((a.source||{}).rendering,a.rendering)}function Fa(a){var b,c,d={};for(b=0;b<a.length;b++)c=a[b],(d[c._id]||(d[c._id]=[])).push(c);return d}function Ga(a,b){return a.start-b.start}function Ha(c){var d,e,f,g,h=Va.dataAttrPrefix;return h&&(h+="-"),d=c.data(h+"event")||null,d&&(d="object"==typeof d?a.extend({},d):{},e=d.start,null==e&&(e=d.time),f=d.duration,g=d.stick,delete d.start,delete d.time,delete d.duration,delete d.stick),null==e&&(e=c.data(h+"start")),null==e&&(e=c.data(h+"time")),null==f&&(f=c.data(h+"duration")),null==g&&(g=c.data(h+"stick")),e=null!=e?b.duration(e):null,f=null!=f?b.duration(f):null,g=Boolean(g),{eventProps:d,startTime:e,duration:f,stick:g}}function Ia(a,b){var c,d;for(c=0;c<b.length;c++)if(d=b[c],d.leftCol<=a.rightCol&&d.rightCol>=a.leftCol)return!0;return!1}function Ja(a,b){return a.leftCol-b.leftCol}function Ka(a){var b,c,d,e=[];for(b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Na(c,e[d]).length;d++);c.level=d,(e[d]||(e[d]=[])).push(c)}return e}function La(a){var b,c,d,e,f;for(b=0;b<a.length;b++)for(c=a[b],d=0;d<c.length;d++)for(e=c[d],e.forwardSegs=[],f=b+1;f<a.length;f++)Na(e,a[f],e.forwardSegs)}function Ma(a){var b,c,d=a.forwardSegs,e=0;if(void 0===a.forwardPressure){for(b=0;b<d.length;b++)c=d[b],Ma(c),e=Math.max(e,1+c.forwardPressure);a.forwardPressure=e}}function Na(a,b,c){c=c||[];for(var d=0;d<b.length;d++)Oa(a,b[d])&&c.push(b[d]);return c}function Oa(a,b){return a.bottom>b.top&&a.top<b.bottom}function Pa(c,d){function e(){T?h()&&(k(),i()):f()}function f(){U=O.theme?"ui":"fc",c.addClass("fc"),O.isRTL?c.addClass("fc-rtl"):c.addClass("fc-ltr"),O.theme?c.addClass("ui-widget"):c.addClass("fc-unthemed"),T=a("<div class='fc-view-container'/>").prependTo(c),R=N.header=new Sa(N,O),S=R.render(),S&&c.prepend(S),i(O.defaultView),O.handleWindowResize&&(Y=ja(m,O.windowResizeDelay),a(window).resize(Y))}function g(){V&&V.removeElement(),R.removeElement(),T.remove(),c.removeClass("fc fc-ltr fc-rtl fc-unthemed ui-widget"),Y&&a(window).unbind("resize",Y)}function h(){return c.is(":visible")}function i(b){ca++,V&&b&&V.type!==b&&(R.deactivateButton(V.type),H(),V.removeElement(),V=N.view=null),!V&&b&&(V=N.view=ba[b]||(ba[b]=N.instantiateView(b)),V.setElement(a("<div class='fc-view fc-"+b+"-view' />").appendTo(T)),R.activateButton(b)),V&&(Z=V.massageCurrentDate(Z),V.displaying&&Z.isWithin(V.intervalStart,V.intervalEnd)||h()&&(V.display(Z),I(),u(),v(),q())),I(),ca--}function j(a){return h()?(a&&l(),ca++,V.updateSize(!0),ca--,!0):void 0}function k(){h()&&l()}function l(){W="number"==typeof O.contentHeight?O.contentHeight:"number"==typeof O.height?O.height-(S?S.outerHeight(!0):0):Math.round(T.width()/Math.max(O.aspectRatio,.5))}function m(a){!ca&&a.target===window&&V.start&&j(!0)&&V.trigger("windowResize",aa)}function n(){p(),r()}function o(){h()&&(H(),V.displayEvents(da),I())}function p(){H(),V.clearEvents(),I()}function q(){!O.lazyFetching||$(V.start,V.end)?r():o()}function r(){_(V.start,V.end)}function s(a){da=a,o()}function t(){o()}function u(){R.updateTitle(V.title)}function v(){var a=N.getNow();a.isWithin(V.intervalStart,V.intervalEnd)?R.disableButton("today"):R.enableButton("today")}function w(a,b){V.select(N.buildSelectSpan.apply(N,arguments))}function x(){V&&V.unselect()}function y(){Z=V.computePrevDate(Z),i()}function z(){Z=V.computeNextDate(Z),i()}function A(){Z.add(-1,"years"),i()}function B(){Z.add(1,"years"),i()}function C(){Z=N.getNow(),i()}function D(a){Z=N.moment(a).stripZone(),i()}function E(a){Z.add(b.duration(a)),i()}function F(a,b){var c;b=b||"day",c=N.getViewSpec(b)||N.getUnitViewSpec(b),Z=a.clone(),i(c?c.type:null)}function G(){return N.applyTimezone(Z)}function H(){T.css({width:"100%",height:T.height(),overflow:"hidden"})}function I(){T.css({width:"",height:"",overflow:""})}function J(){return N}function K(){return V}function L(a,b){return void 0===b?O[a]:void("height"!=a&&"contentHeight"!=a&&"aspectRatio"!=a||(O[a]=b,j(!0)))}function M(a,b){var c=Array.prototype.slice.call(arguments,2);return b=b||aa,this.triggerWith(a,b,c),O[a]?O[a].apply(b,c):void 0}var N=this;N.initOptions(d||{});var O=this.options;N.render=e,N.destroy=g,N.refetchEvents=n,N.reportEvents=s,N.reportEventChange=t,N.rerenderEvents=o,N.changeView=i,N.select=w,N.unselect=x,N.prev=y,N.next=z,N.prevYear=A,N.nextYear=B,N.today=C,N.gotoDate=D,N.incrementDate=E,N.zoomTo=F,N.getDate=G,N.getCalendar=J,N.getView=K,N.option=L,N.trigger=M;var P=X(Ra(O.lang));if(O.monthNames&&(P._months=O.monthNames),O.monthNamesShort&&(P._monthsShort=O.monthNamesShort),O.dayNames&&(P._weekdays=O.dayNames),O.dayNamesShort&&(P._weekdaysShort=O.dayNamesShort),null!=O.firstDay){var Q=X(P._week);Q.dow=O.firstDay,P._week=Q}P._fullCalendar_weekCalc=function(a){return"function"==typeof a?a:"local"===a?a:"iso"===a||"ISO"===a?"ISO":void 0}(O.weekNumberCalculation),N.defaultAllDayEventDuration=b.duration(O.defaultAllDayEventDuration),N.defaultTimedEventDuration=b.duration(O.defaultTimedEventDuration),N.moment=function(){var a;return"local"===O.timezone?(a=Va.moment.apply(null,arguments),a.hasTime()&&a.local()):a="UTC"===O.timezone?Va.moment.utc.apply(null,arguments):Va.moment.parseZone.apply(null,arguments),"_locale"in a?a._locale=P:a._lang=P,a},N.getIsAmbigTimezone=function(){return"local"!==O.timezone&&"UTC"!==O.timezone},N.applyTimezone=function(a){if(!a.hasTime())return a.clone();var b,c=N.moment(a.toArray()),d=a.time()-c.time();return d&&(b=c.clone().add(d),a.time()-b.time()===0&&(c=b)),c},N.getNow=function(){var a=O.now;return"function"==typeof a&&(a=a()),N.moment(a).stripZone()},N.getEventEnd=function(a){return a.end?a.end.clone():N.getDefaultEventEnd(a.allDay,a.start)},N.getDefaultEventEnd=function(a,b){var c=b.clone();return a?c.stripTime().add(N.defaultAllDayEventDuration):c.add(N.defaultTimedEventDuration),N.getIsAmbigTimezone()&&c.stripZone(),c},N.humanizeDuration=function(a){return(a.locale||a.lang).call(a,O.lang).humanize()},Ta.call(N,O);var R,S,T,U,V,W,Y,Z,$=N.isFetchNeeded,_=N.fetchEvents,aa=c[0],ba={},ca=0,da=[];Z=null!=O.defaultDate?N.moment(O.defaultDate).stripZone():N.getNow(),N.getSuggestedViewHeight=function(){return void 0===W&&k(),W},N.isHeightAuto=function(){return"auto"===O.contentHeight||"auto"===O.height},N.freezeContentHeight=H,N.unfreezeContentHeight=I,N.initialize()}function Qa(b){a.each(Cb,function(a,c){null==b[a]&&(b[a]=c(b))})}function Ra(a){var c=b.localeData||b.langData;return c.call(b,a)||c.call(b,"en")}function Sa(b,c){function d(){var b=c.header;return n=c.theme?"ui":"fc",b?o=a("<div class='fc-toolbar'/>").append(f("left")).append(f("right")).append(f("center")).append('<div class="fc-clear"/>'):void 0}function e(){o.remove(),o=a()}function f(d){var e=a('<div class="fc-'+d+'"/>'),f=c.header[d];return f&&a.each(f.split(" "),function(d){var f,g=a(),h=!0;a.each(this.split(","),function(d,e){var f,i,j,k,l,m,o,q,r,s;"title"==e?(g=g.add(a("<h2> </h2>")),h=!1):((f=(b.options.customButtons||{})[e])?(j=function(a){f.click&&f.click.call(s[0],a)},k="",l=f.text):(i=b.getViewSpec(e))?(j=function(){b.changeView(e)},p.push(e),k=i.buttonTextOverride,l=i.buttonTextDefault):b[e]&&(j=function(){b[e]()},k=(b.overrides.buttonText||{})[e],l=c.buttonText[e]),j&&(m=f?f.themeIcon:c.themeButtonIcons[e],o=f?f.icon:c.buttonIcons[e],q=k?ca(k):m&&c.theme?"<span class='ui-icon ui-icon-"+m+"'></span>":o&&!c.theme?"<span class='fc-icon fc-icon-"+o+"'></span>":ca(l),r=["fc-"+e+"-button",n+"-button",n+"-state-default"],s=a('<button type="button" class="'+r.join(" ")+'">'+q+"</button>").click(function(a){s.hasClass(n+"-state-disabled")||(j(a),(s.hasClass(n+"-state-active")||s.hasClass(n+"-state-disabled"))&&s.removeClass(n+"-state-hover"))}).mousedown(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-down")}).mouseup(function(){s.removeClass(n+"-state-down")}).hover(function(){s.not("."+n+"-state-active").not("."+n+"-state-disabled").addClass(n+"-state-hover")},function(){s.removeClass(n+"-state-hover").removeClass(n+"-state-down")}),g=g.add(s)))}),h&&g.first().addClass(n+"-corner-left").end().last().addClass(n+"-corner-right").end(),g.length>1?(f=a("<div/>"),h&&f.addClass("fc-button-group"),f.append(g),e.append(f)):e.append(g)}),e}function g(a){o.find("h2").text(a)}function h(a){o.find(".fc-"+a+"-button").addClass(n+"-state-active")}function i(a){o.find(".fc-"+a+"-button").removeClass(n+"-state-active")}function j(a){o.find(".fc-"+a+"-button").attr("disabled","disabled").addClass(n+"-state-disabled")}function k(a){o.find(".fc-"+a+"-button").removeAttr("disabled").removeClass(n+"-state-disabled")}function l(){return p}var m=this;m.render=d,m.removeElement=e,m.updateTitle=g,m.activateButton=h,m.deactivateButton=i,m.disableButton=j,m.enableButton=k,m.getViewsWithButtons=l;var n,o=a(),p=[]}function Ta(c){function d(a,b){return!I||I>a||b>J}function e(a,b){I=a,J=b,S=[];var c=++Q,d=P.length;R=d;for(var e=0;d>e;e++)f(P[e],c)}function f(b,c){g(b,function(d){var e,f,g,h=a.isArray(b.events);if(c==Q){if(d)for(e=0;e<d.length;e++)f=d[e],g=h?f:s(f,b),g&&S.push.apply(S,w(g));R--,R||K(S)}})}function g(b,d){var e,f,h=Va.sourceFetchers;for(e=0;e<h.length;e++){if(f=h[e].call(H,b,I.clone(),J.clone(),c.timezone,d),f===!0)return;if("object"==typeof f)return void g(f,d)}var i=b.events;if(i)a.isFunction(i)?(H.pushLoading(),i.call(H,I.clone(),J.clone(),c.timezone,function(a){d(a),H.popLoading()})):a.isArray(i)?d(i):d();else{var j=b.url;if(j){var k,l=b.success,m=b.error,n=b.complete;k=a.isFunction(b.data)?b.data():b.data;var o=a.extend({},k||{}),p=ba(b.startParam,c.startParam),q=ba(b.endParam,c.endParam),r=ba(b.timezoneParam,c.timezoneParam);p&&(o[p]=I.format()),q&&(o[q]=J.format()),c.timezone&&"local"!=c.timezone&&(o[r]=c.timezone),H.pushLoading(),a.ajax(a.extend({},Db,b,{data:o,success:function(b){b=b||[];var c=aa(l,this,arguments);a.isArray(c)&&(b=c),d(b)},error:function(){aa(m,this,arguments),d()},complete:function(){aa(n,this,arguments),H.popLoading()}}))}else d()}}function h(a){var b=i(a);b&&(P.push(b),R++,f(b,Q))}function i(b){var c,d,e=Va.sourceNormalizers;if(a.isFunction(b)||a.isArray(b)?c={events:b}:"string"==typeof b?c={url:b}:"object"==typeof b&&(c=a.extend({},b)),c){for(c.className?"string"==typeof c.className&&(c.className=c.className.split(/\s+/)):c.className=[],a.isArray(c.events)&&(c.origArray=c.events,c.events=a.map(c.events,function(a){return s(a,c)})),d=0;d<e.length;d++)e[d].call(H,c);return c}}function j(b){P=a.grep(P,function(a){return!k(a,b)}),S=a.grep(S,function(a){return!k(a.source,b)}),K(S)}function k(a,b){return a&&b&&l(a)==l(b)}function l(a){return("object"==typeof a?a.origArray||a.googleCalendarId||a.url||a.events:null)||a}function m(a){a.start=H.moment(a.start),a.end?a.end=H.moment(a.end):a.end=null,x(a,n(a)),K(S)}function n(b){var c={};return a.each(b,function(a,b){o(a)&&void 0!==b&&_(b)&&(c[a]=b)}),c}function o(a){return!/^_|^(id|allDay|start|end)$/.test(a)}function p(a,b){var c,d,e,f=s(a);if(f){for(c=w(f),d=0;d<c.length;d++)e=c[d],e.source||(b&&(O.events.push(e),e.source=O),S.push(e));return K(S),c}return[]}function q(b){var c,d;for(null==b?b=function(){return!0}:a.isFunction(b)||(c=b+"",b=function(a){return a._id==c}),S=a.grep(S,b,!0),d=0;d<P.length;d++)a.isArray(P[d].events)&&(P[d].events=a.grep(P[d].events,b,!0));K(S)}function r(b){return a.isFunction(b)?a.grep(S,b):null!=b?(b+="",a.grep(S,function(a){return a._id==b})):S}function s(d,e){var f,g,h,i={};if(c.eventDataTransform&&(d=c.eventDataTransform(d)),e&&e.eventDataTransform&&(d=e.eventDataTransform(d)),a.extend(i,d),e&&(i.source=e),i._id=d._id||(void 0===d.id?"_fc"+Eb++:d.id+""),d.className?"string"==typeof d.className?i.className=d.className.split(/\s+/):i.className=d.className:i.className=[],f=d.start||d.date,g=d.end,V(f)&&(f=b.duration(f)),V(g)&&(g=b.duration(g)),d.dow||b.isDuration(f)||b.isDuration(g))i.start=f?b.duration(f):null,i.end=g?b.duration(g):null,i._recurring=!0;else{if(f&&(f=H.moment(f),!f.isValid()))return!1;g&&(g=H.moment(g),g.isValid()||(g=null)),h=d.allDay,void 0===h&&(h=ba(e?e.allDayDefault:void 0,c.allDayDefault)),t(f,g,h,i)}return H.normalizeEvent(i),i}function t(a,b,c,d){d.start=a,d.end=b,d.allDay=c,u(d),Ua(d)}function u(a){v(a),a.end&&!a.end.isAfter(a.start)&&(a.end=null),a.end||(c.forceEventDuration?a.end=H.getDefaultEventEnd(a.allDay,a.start):a.end=null)}function v(a){null==a.allDay&&(a.allDay=!(a.start.hasTime()||a.end&&a.end.hasTime())),a.allDay?(a.start.stripTime(),a.end&&a.end.stripTime()):(a.start.hasTime()||(a.start=H.applyTimezone(a.start.time(0))),a.end&&!a.end.hasTime()&&(a.end=H.applyTimezone(a.end.time(0))))}function w(b,c,d){var e,f,g,h,i,j,k,l,m,n=[];if(c=c||I,d=d||J,b)if(b._recurring){if(f=b.dow)for(e={},g=0;g<f.length;g++)e[f[g]]=!0;for(h=c.clone().stripTime();h.isBefore(d);)e&&!e[h.day()]||(i=b.start,j=b.end,k=h.clone(),l=null,i&&(k=k.time(i)),j&&(l=h.clone().time(j)),m=a.extend({},b),t(k,l,!i&&!j,m),n.push(m)),h.add(1,"days")}else n.push(b);return n}function x(b,c,d){function e(a,b){return d?N(a,b,d):c.allDay?M(a,b):L(a,b)}var f,g,h,i,j,k,l={};return c=c||{},c.start||(c.start=b.start.clone()),void 0===c.end&&(c.end=b.end?b.end.clone():null),null==c.allDay&&(c.allDay=b.allDay),u(c),f={start:b._start.clone(),end:b._end?b._end.clone():H.getDefaultEventEnd(b._allDay,b._start),allDay:c.allDay},u(f),g=null!==b._end&&null===c.end,h=e(c.start,f.start),c.end?(i=e(c.end,f.end),j=i.subtract(h)):j=null,a.each(c,function(a,b){o(a)&&void 0!==b&&(l[a]=b)}),k=y(r(b._id),g,c.allDay,h,j,l),{dateDelta:h,durationDelta:j,undo:k}}function y(b,c,d,e,f,g){var h=H.getIsAmbigTimezone(),i=[];return e&&!e.valueOf()&&(e=null),f&&!f.valueOf()&&(f=null),a.each(b,function(b,j){var k,l;k={start:j.start.clone(),end:j.end?j.end.clone():null,allDay:j.allDay},a.each(g,function(a){k[a]=j[a]}),l={start:j._start,end:j._end,allDay:d},u(l),c?l.end=null:f&&!l.end&&(l.end=H.getDefaultEventEnd(l.allDay,l.start)),e&&(l.start.add(e),l.end&&l.end.add(e)),f&&l.end.add(f),h&&!l.allDay&&(e||f)&&(l.start.stripZone(),l.end&&l.end.stripZone()),a.extend(j,g,l),Ua(j),i.push(function(){a.extend(j,k),Ua(j)})}),function(){for(var a=0;a<i.length;a++)i[a]()}}function z(b){var d,e=c.businessHours,f={className:"fc-nonbusiness",start:"09:00",end:"17:00",dow:[1,2,3,4,5],rendering:"inverse-background"},g=H.getView();return e&&(d=a.extend({},f,"object"==typeof e?e:{})),d?(b&&(d.start=null,d.end=null),w(s(d),g.start,g.end)):[]}function A(a,b){var d=b.source||{},e=ba(b.constraint,d.constraint,c.eventConstraint),f=ba(b.overlap,d.overlap,c.eventOverlap);return D(a,e,f,b)}function B(b,c,d){var e,f;return d&&(e=a.extend({},d,c),f=w(s(e))[0]),f?A(b,f):C(b)}function C(a){return D(a,c.selectConstraint,c.selectOverlap)}function D(a,b,c,d){var e,f,g,h,i,j;if(null!=b){for(e=E(b),f=!1,h=0;h<e.length;h++)if(F(e[h],a)){f=!0;break}if(!f)return!1}for(g=H.getPeerEvents(a,d),h=0;h<g.length;h++)if(i=g[h],G(i,a)){if(c===!1)return!1;if("function"==typeof c&&!c(i,d))return!1;if(d){if(j=ba(i.overlap,(i.source||{}).overlap),j===!1)return!1;if("function"==typeof j&&!j(d,i))return!1}}return!0}function E(a){return"businessHours"===a?z():"object"==typeof a?w(s(a)):r(a)}function F(a,b){var c=a.start.clone().stripZone(),d=H.getEventEnd(a).stripZone();return b.start>=c&&b.end<=d}function G(a,b){var c=a.start.clone().stripZone(),d=H.getEventEnd(a).stripZone();return b.start<d&&b.end>c}var H=this;H.isFetchNeeded=d,H.fetchEvents=e,H.addEventSource=h,H.removeEventSource=j,H.updateEvent=m,H.renderEvent=p,H.removeEvents=q,H.clientEvents=r,H.mutateEvent=x,H.normalizeEventDates=u,H.normalizeEventTimes=v;var I,J,K=H.reportEvents,O={events:[]},P=[O],Q=0,R=0,S=[];a.each((c.events?[c.events]:[]).concat(c.eventSources||[]),function(a,b){var c=i(b);c&&P.push(c)}),H.getBusinessHoursEvents=z,H.isEventSpanAllowed=A,H.isExternalSpanAllowed=B,H.isSelectionSpanAllowed=C,H.getEventCache=function(){return S}}function Ua(a){a._allDay=a.allDay,a._start=a.start.clone(),a._end=a.end?a.end.clone():null}var Va=a.fullCalendar={version:"2.7.3",internalApiVersion:4},Wa=Va.views={};a.fn.fullCalendar=function(b){var c=Array.prototype.slice.call(arguments,1),d=this;return this.each(function(e,f){var g,h=a(f),i=h.data("fullCalendar");"string"==typeof b?i&&a.isFunction(i[b])&&(g=i[b].apply(i,c),e||(d=g),"destroy"===b&&h.removeData("fullCalendar")):i||(i=new yb(h,b),h.data("fullCalendar",i),i.render())}),d};var Xa=["header","buttonText","buttonIcons","themeButtonIcons"];Va.intersectRanges=K,Va.applyAll=aa,Va.debounce=ja,Va.isInt=ha,Va.htmlEscape=ca,Va.cssToStr=ea,Va.proxy=ia,Va.capitaliseFirstLetter=fa,Va.getOuterRect=n,Va.getClientRect=o,Va.getContentRect=p,Va.getScrollbarWidths=q;var Ya=null;Va.preventDefault=z,Va.intersectRects=C,Va.parseFieldSpecs=G,Va.compareByFieldSpecs=H,Va.compareByFieldSpec=I,Va.flexibleCompare=J,Va.computeIntervalUnit=O,Va.divideRangeByDuration=Q,Va.divideDurationByDuration=R,Va.multiplyDuration=S,Va.durationHasTime=T;var Za=["sun","mon","tue","wed","thu","fri","sat"],$a=["year","month","week","day","hour","minute","second","millisecond"];Va.log=function(){var a=window.console;return a&&a.log?a.log.apply(a,arguments):void 0},Va.warn=function(){var a=window.console;return a&&a.warn?a.warn.apply(a,arguments):Va.log.apply(Va,arguments)};var _a,ab,bb,cb={}.hasOwnProperty,db=/^\s*\d{4}-\d\d$/,eb=/^\s*\d{4}-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?)?$/,fb=b.fn,gb=a.extend({},fb);Va.moment=function(){return ka(arguments)},Va.moment.utc=function(){var a=ka(arguments,!0);return a.hasTime()&&a.utc(),a},Va.moment.parseZone=function(){return ka(arguments,!0,!0)},fb.clone=function(){var a=gb.clone.apply(this,arguments);return ma(this,a),this._fullCalendar&&(a._fullCalendar=!0),a},fb.week=fb.weeks=function(a){var b=(this._locale||this._lang)._fullCalendar_weekCalc;return null==a&&"function"==typeof b?b(this):"ISO"===b?gb.isoWeek.apply(this,arguments):gb.week.apply(this,arguments)},fb.time=function(a){if(!this._fullCalendar)return gb.time.apply(this,arguments);if(null==a)return b.duration({hours:this.hours(),minutes:this.minutes(),seconds:this.seconds(),milliseconds:this.milliseconds()});this._ambigTime=!1,b.isDuration(a)||b.isMoment(a)||(a=b.duration(a));var c=0;return b.isDuration(a)&&(c=24*Math.floor(a.asDays())),this.hours(c+a.hours()).minutes(a.minutes()).seconds(a.seconds()).milliseconds(a.milliseconds())},fb.stripTime=function(){var a;return this._ambigTime||(a=this.toArray(),this.utc(),ab(this,a.slice(0,3)),this._ambigTime=!0,this._ambigZone=!0),this},fb.hasTime=function(){return!this._ambigTime},fb.stripZone=function(){var a,b;return this._ambigZone||(a=this.toArray(),b=this._ambigTime,this.utc(),ab(this,a),this._ambigTime=b||!1,this._ambigZone=!0),this},fb.hasZone=function(){return!this._ambigZone},fb.local=function(){var a=this.toArray(),b=this._ambigZone;return gb.local.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,b&&bb(this,a),this},fb.utc=function(){return gb.utc.apply(this,arguments),this._ambigTime=!1,this._ambigZone=!1,this},a.each(["zone","utcOffset"],function(a,b){gb[b]&&(fb[b]=function(a){return null!=a&&(this._ambigTime=!1,this._ambigZone=!1),gb[b].apply(this,arguments)})}),fb.format=function(){return this._fullCalendar&&arguments[0]?pa(this,arguments[0]):this._ambigTime?oa(this,"YYYY-MM-DD"):this._ambigZone?oa(this,"YYYY-MM-DD[T]HH:mm:ss"):gb.format.apply(this,arguments)},fb.toISOString=function(){return this._ambigTime?oa(this,"YYYY-MM-DD"):this._ambigZone?oa(this,"YYYY-MM-DD[T]HH:mm:ss"):gb.toISOString.apply(this,arguments)},fb.isWithin=function(a,b){var c=la([this,a,b]);return c[0]>=c[1]&&c[0]<c[2]},fb.isSame=function(a,b){var c;return this._fullCalendar?b?(c=la([this,a],!0),gb.isSame.call(c[0],c[1],b)):(a=Va.moment.parseZone(a),gb.isSame.call(this,a)&&Boolean(this._ambigTime)===Boolean(a._ambigTime)&&Boolean(this._ambigZone)===Boolean(a._ambigZone)):gb.isSame.apply(this,arguments)},a.each(["isBefore","isAfter"],function(a,b){fb[b]=function(a,c){var d;return this._fullCalendar?(d=la([this,a]),gb[b].call(d[0],d[1],c)):gb[b].apply(this,arguments)}}),_a="_d"in b()&&"updateOffset"in b,ab=_a?function(a,c){a._d.setTime(Date.UTC.apply(Date,c)),b.updateOffset(a,!1)}:na,bb=_a?function(a,c){a._d.setTime(+new Date(c[0]||0,c[1]||0,c[2]||0,c[3]||0,c[4]||0,c[5]||0,c[6]||0)),b.updateOffset(a,!1)}:na;var hb={t:function(a){return oa(a,"a").charAt(0)},T:function(a){return oa(a,"A").charAt(0)}};Va.formatRange=sa;var ib={Y:"year",M:"month",D:"day",d:"day",A:"second",a:"second",T:"second",t:"second",H:"second",h:"second",m:"second",s:"second"},jb={};Va.Class=xa,xa.extend=function(){var a,b,c=arguments.length;for(a=0;c>a;a++)b=arguments[a],c-1>a&&za(this,b);return ya(this,b||{})},xa.mixin=function(a){za(this,a)};var kb=Va.EmitterMixin={on:function(b,c){var d=function(a,b){return c.apply(b.context||this,b.args||[])};return c.guid||(c.guid=a.guid++),d.guid=c.guid,a(this).on(b,d),this},off:function(b,c){return a(this).off(b,c),this},trigger:function(b){var c=Array.prototype.slice.call(arguments,1);return a(this).triggerHandler(b,{args:c}),this},triggerWith:function(b,c,d){return a(this).triggerHandler(b,{context:c,args:d}),this}},lb=Va.ListenerMixin=function(){var b=0,c={listenerId:null,listenTo:function(b,c,d){if("object"==typeof c)for(var e in c)c.hasOwnProperty(e)&&this.listenTo(b,e,c[e]);else"string"==typeof c&&b.on(c+"."+this.getListenerNamespace(),a.proxy(d,this))},stopListeningTo:function(a,b){a.off((b||"")+"."+this.getListenerNamespace())},getListenerNamespace:function(){return null==this.listenerId&&(this.listenerId=b++),"_listener"+this.listenerId}};return c}(),mb={isIgnoringMouse:!1,delayUnignoreMouse:null,initMouseIgnoring:function(a){this.delayUnignoreMouse=ja(ia(this,"unignoreMouse"),a||1e3)},tempIgnoreMouse:function(){this.isIgnoringMouse=!0,this.delayUnignoreMouse()},unignoreMouse:function(){this.isIgnoringMouse=!1; +}},nb=xa.extend(lb,{isHidden:!0,options:null,el:null,margin:10,constructor:function(a){this.options=a||{}},show:function(){this.isHidden&&(this.el||this.render(),this.el.show(),this.position(),this.isHidden=!1,this.trigger("show"))},hide:function(){this.isHidden||(this.el.hide(),this.isHidden=!0,this.trigger("hide"))},render:function(){var b=this,c=this.options;this.el=a('<div class="fc-popover"/>').addClass(c.className||"").css({top:0,left:0}).append(c.content).appendTo(c.parentEl),this.el.on("click",".fc-close",function(){b.hide()}),c.autoHide&&this.listenTo(a(document),"mousedown",this.documentMousedown)},documentMousedown:function(b){this.el&&!a(b.target).closest(this.el).length&&this.hide()},removeElement:function(){this.hide(),this.el&&(this.el.remove(),this.el=null),this.stopListeningTo(a(document),"mousedown")},position:function(){var b,c,d,e,f,g=this.options,h=this.el.offsetParent().offset(),i=this.el.outerWidth(),j=this.el.outerHeight(),k=a(window),l=m(this.el);e=g.top||0,f=void 0!==g.left?g.left:void 0!==g.right?g.right-i:0,l.is(window)||l.is(document)?(l=k,b=0,c=0):(d=l.offset(),b=d.top,c=d.left),b+=k.scrollTop(),c+=k.scrollLeft(),g.viewportConstrain!==!1&&(e=Math.min(e,b+l.outerHeight()-j-this.margin),e=Math.max(e,b+this.margin),f=Math.min(f,c+l.outerWidth()-i-this.margin),f=Math.max(f,c+this.margin)),this.el.css({top:e-h.top,left:f-h.left})},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1))}}),ob=Va.CoordCache=xa.extend({els:null,forcedOffsetParentEl:null,origin:null,boundingRect:null,isHorizontal:!1,isVertical:!1,lefts:null,rights:null,tops:null,bottoms:null,constructor:function(b){this.els=a(b.els),this.isHorizontal=b.isHorizontal,this.isVertical=b.isVertical,this.forcedOffsetParentEl=b.offsetParent?a(b.offsetParent):null},build:function(){var a=this.forcedOffsetParentEl||this.els.eq(0).offsetParent();this.origin=a.offset(),this.boundingRect=this.queryBoundingRect(),this.isHorizontal&&this.buildElHorizontals(),this.isVertical&&this.buildElVerticals()},clear:function(){this.origin=null,this.boundingRect=null,this.lefts=null,this.rights=null,this.tops=null,this.bottoms=null},ensureBuilt:function(){this.origin||this.build()},queryBoundingRect:function(){var a=m(this.els.eq(0));return a.is(document)?void 0:o(a)},buildElHorizontals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().left,h=f.outerWidth();b.push(g),c.push(g+h)}),this.lefts=b,this.rights=c},buildElVerticals:function(){var b=[],c=[];this.els.each(function(d,e){var f=a(e),g=f.offset().top,h=f.outerHeight();b.push(g),c.push(g+h)}),this.tops=b,this.bottoms=c},getHorizontalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.lefts,e=this.rights,f=d.length;if(!c||a>=c.left&&a<c.right)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getVerticalIndex:function(a){this.ensureBuilt();var b,c=this.boundingRect,d=this.tops,e=this.bottoms,f=d.length;if(!c||a>=c.top&&a<c.bottom)for(b=0;f>b;b++)if(a>=d[b]&&a<e[b])return b},getLeftOffset:function(a){return this.ensureBuilt(),this.lefts[a]},getLeftPosition:function(a){return this.ensureBuilt(),this.lefts[a]-this.origin.left},getRightOffset:function(a){return this.ensureBuilt(),this.rights[a]},getRightPosition:function(a){return this.ensureBuilt(),this.rights[a]-this.origin.left},getWidth:function(a){return this.ensureBuilt(),this.rights[a]-this.lefts[a]},getTopOffset:function(a){return this.ensureBuilt(),this.tops[a]},getTopPosition:function(a){return this.ensureBuilt(),this.tops[a]-this.origin.top},getBottomOffset:function(a){return this.ensureBuilt(),this.bottoms[a]},getBottomPosition:function(a){return this.ensureBuilt(),this.bottoms[a]-this.origin.top},getHeight:function(a){return this.ensureBuilt(),this.bottoms[a]-this.tops[a]}}),pb=Va.DragListener=xa.extend(lb,mb,{options:null,subjectEl:null,subjectHref:null,originX:null,originY:null,scrollEl:null,isInteracting:!1,isDistanceSurpassed:!1,isDelayEnded:!1,isDragging:!1,isTouch:!1,delay:null,delayTimeoutId:null,minDistance:null,handleTouchScrollProxy:null,constructor:function(a){this.options=a||{},this.handleTouchScrollProxy=ia(this,"handleTouchScroll"),this.initMouseIgnoring(500)},startInteraction:function(b,c){var d=x(b);if("mousedown"===b.type){if(this.isIgnoringMouse)return;if(!u(b))return;b.preventDefault()}this.isInteracting||(c=c||{},this.delay=ba(c.delay,this.options.delay,0),this.minDistance=ba(c.distance,this.options.distance,0),this.subjectEl=this.options.subjectEl,this.isInteracting=!0,this.isTouch=d,this.isDelayEnded=!1,this.isDistanceSurpassed=!1,this.originX=v(b),this.originY=w(b),this.scrollEl=m(a(b.target)),this.bindHandlers(),this.initAutoScroll(),this.handleInteractionStart(b),this.startDelay(b),this.minDistance||this.handleDistanceSurpassed(b))},handleInteractionStart:function(a){this.trigger("interactionStart",a)},endInteraction:function(a,b){this.isInteracting&&(this.endDrag(a),this.delayTimeoutId&&(clearTimeout(this.delayTimeoutId),this.delayTimeoutId=null),this.destroyAutoScroll(),this.unbindHandlers(),this.isInteracting=!1,this.handleInteractionEnd(a,b),this.isTouch&&this.tempIgnoreMouse())},handleInteractionEnd:function(a,b){this.trigger("interactionEnd",a,b||!1)},bindHandlers:function(){var b=this,c=1;this.isTouch?(this.listenTo(a(document),{touchmove:this.handleTouchMove,touchend:this.endInteraction,touchcancel:this.endInteraction,touchstart:function(a){c?c--:b.endInteraction(a,!0)}}),!A(this.handleTouchScrollProxy)&&this.scrollEl&&this.listenTo(this.scrollEl,"scroll",this.handleTouchScroll)):this.listenTo(a(document),{mousemove:this.handleMouseMove,mouseup:this.endInteraction}),this.listenTo(a(document),{selectstart:z,contextmenu:z})},unbindHandlers:function(){this.stopListeningTo(a(document)),B(this.handleTouchScrollProxy),this.scrollEl&&this.stopListeningTo(this.scrollEl,"scroll")},startDrag:function(a,b){this.startInteraction(a,b),this.isDragging||(this.isDragging=!0,this.handleDragStart(a))},handleDragStart:function(a){this.trigger("dragStart",a),this.initHrefHack()},handleMove:function(a){var b,c=v(a)-this.originX,d=w(a)-this.originY,e=this.minDistance;this.isDistanceSurpassed||(b=c*c+d*d,b>=e*e&&this.handleDistanceSurpassed(a)),this.isDragging&&this.handleDrag(c,d,a)},handleDrag:function(a,b,c){this.trigger("drag",a,b,c),this.updateAutoScroll(c)},endDrag:function(a){this.isDragging&&(this.isDragging=!1,this.handleDragEnd(a))},handleDragEnd:function(a){this.trigger("dragEnd",a),this.destroyHrefHack()},startDelay:function(a){var b=this;this.delay?this.delayTimeoutId=setTimeout(function(){b.handleDelayEnd(a)},this.delay):this.handleDelayEnd(a)},handleDelayEnd:function(a){this.isDelayEnded=!0,this.isDistanceSurpassed&&this.startDrag(a)},handleDistanceSurpassed:function(a){this.isDistanceSurpassed=!0,this.isDelayEnded&&this.startDrag(a)},handleTouchMove:function(a){this.isDragging&&a.preventDefault(),this.handleMove(a)},handleMouseMove:function(a){this.handleMove(a)},handleTouchScroll:function(a){this.isDragging||this.endInteraction(a,!0)},initHrefHack:function(){var a=this.subjectEl;(this.subjectHref=a?a.attr("href"):null)&&a.removeAttr("href")},destroyHrefHack:function(){var a=this.subjectEl,b=this.subjectHref;setTimeout(function(){b&&a.attr("href",b)},0)},trigger:function(a){this.options[a]&&this.options[a].apply(this,Array.prototype.slice.call(arguments,1)),this["_"+a]&&this["_"+a].apply(this,Array.prototype.slice.call(arguments,1))}});pb.mixin({isAutoScroll:!1,scrollBounds:null,scrollTopVel:null,scrollLeftVel:null,scrollIntervalId:null,scrollSensitivity:30,scrollSpeed:200,scrollIntervalMs:50,initAutoScroll:function(){var a=this.scrollEl;this.isAutoScroll=this.options.scroll&&a&&!a.is(window)&&!a.is(document),this.isAutoScroll&&this.listenTo(a,"scroll",ja(this.handleDebouncedScroll,100))},destroyAutoScroll:function(){this.endAutoScroll(),this.isAutoScroll&&this.stopListeningTo(this.scrollEl,"scroll")},computeScrollBounds:function(){this.isAutoScroll&&(this.scrollBounds=n(this.scrollEl))},updateAutoScroll:function(a){var b,c,d,e,f=this.scrollSensitivity,g=this.scrollBounds,h=0,i=0;g&&(b=(f-(w(a)-g.top))/f,c=(f-(g.bottom-w(a)))/f,d=(f-(v(a)-g.left))/f,e=(f-(g.right-v(a)))/f,b>=0&&1>=b?h=b*this.scrollSpeed*-1:c>=0&&1>=c&&(h=c*this.scrollSpeed),d>=0&&1>=d?i=d*this.scrollSpeed*-1:e>=0&&1>=e&&(i=e*this.scrollSpeed)),this.setScrollVel(h,i)},setScrollVel:function(a,b){this.scrollTopVel=a,this.scrollLeftVel=b,this.constrainScrollVel(),!this.scrollTopVel&&!this.scrollLeftVel||this.scrollIntervalId||(this.scrollIntervalId=setInterval(ia(this,"scrollIntervalFunc"),this.scrollIntervalMs))},constrainScrollVel:function(){var a=this.scrollEl;this.scrollTopVel<0?a.scrollTop()<=0&&(this.scrollTopVel=0):this.scrollTopVel>0&&a.scrollTop()+a[0].clientHeight>=a[0].scrollHeight&&(this.scrollTopVel=0),this.scrollLeftVel<0?a.scrollLeft()<=0&&(this.scrollLeftVel=0):this.scrollLeftVel>0&&a.scrollLeft()+a[0].clientWidth>=a[0].scrollWidth&&(this.scrollLeftVel=0)},scrollIntervalFunc:function(){var a=this.scrollEl,b=this.scrollIntervalMs/1e3;this.scrollTopVel&&a.scrollTop(a.scrollTop()+this.scrollTopVel*b),this.scrollLeftVel&&a.scrollLeft(a.scrollLeft()+this.scrollLeftVel*b),this.constrainScrollVel(),this.scrollTopVel||this.scrollLeftVel||this.endAutoScroll()},endAutoScroll:function(){this.scrollIntervalId&&(clearInterval(this.scrollIntervalId),this.scrollIntervalId=null,this.handleScrollEnd())},handleDebouncedScroll:function(){this.scrollIntervalId||this.handleScrollEnd()},handleScrollEnd:function(){}});var qb=pb.extend({component:null,origHit:null,hit:null,coordAdjust:null,constructor:function(a,b){pb.call(this,b),this.component=a},handleInteractionStart:function(a){var b,c,d,e=this.subjectEl;this.computeCoords(),a?(c={left:v(a),top:w(a)},d=c,e&&(b=n(e),d=D(d,b)),this.origHit=this.queryHit(d.left,d.top),e&&this.options.subjectCenter&&(this.origHit&&(b=C(this.origHit,b)||b),d=E(b)),this.coordAdjust=F(d,c)):(this.origHit=null,this.coordAdjust=null),pb.prototype.handleInteractionStart.apply(this,arguments)},computeCoords:function(){this.component.prepareHits(),this.computeScrollBounds()},handleDragStart:function(a){var b;pb.prototype.handleDragStart.apply(this,arguments),b=this.queryHit(v(a),w(a)),b&&this.handleHitOver(b)},handleDrag:function(a,b,c){var d;pb.prototype.handleDrag.apply(this,arguments),d=this.queryHit(v(c),w(c)),Aa(d,this.hit)||(this.hit&&this.handleHitOut(),d&&this.handleHitOver(d))},handleDragEnd:function(){this.handleHitDone(),pb.prototype.handleDragEnd.apply(this,arguments)},handleHitOver:function(a){var b=Aa(a,this.origHit);this.hit=a,this.trigger("hitOver",this.hit,b,this.origHit)},handleHitOut:function(){this.hit&&(this.trigger("hitOut",this.hit),this.handleHitDone(),this.hit=null)},handleHitDone:function(){this.hit&&this.trigger("hitDone",this.hit)},handleInteractionEnd:function(){pb.prototype.handleInteractionEnd.apply(this,arguments),this.origHit=null,this.hit=null,this.component.releaseHits()},handleScrollEnd:function(){pb.prototype.handleScrollEnd.apply(this,arguments),this.computeCoords()},queryHit:function(a,b){return this.coordAdjust&&(a+=this.coordAdjust.left,b+=this.coordAdjust.top),this.component.queryHit(a,b)}}),rb=xa.extend(lb,{options:null,sourceEl:null,el:null,parentEl:null,top0:null,left0:null,y0:null,x0:null,topDelta:null,leftDelta:null,isFollowing:!1,isHidden:!1,isAnimating:!1,constructor:function(b,c){this.options=c=c||{},this.sourceEl=b,this.parentEl=c.parentEl?a(c.parentEl):b.parent()},start:function(b){this.isFollowing||(this.isFollowing=!0,this.y0=w(b),this.x0=v(b),this.topDelta=0,this.leftDelta=0,this.isHidden||this.updatePosition(),x(b)?this.listenTo(a(document),"touchmove",this.handleMove):this.listenTo(a(document),"mousemove",this.handleMove))},stop:function(b,c){function d(){this.isAnimating=!1,e.removeElement(),this.top0=this.left0=null,c&&c()}var e=this,f=this.options.revertDuration;this.isFollowing&&!this.isAnimating&&(this.isFollowing=!1,this.stopListeningTo(a(document)),b&&f&&!this.isHidden?(this.isAnimating=!0,this.el.animate({top:this.top0,left:this.left0},{duration:f,complete:d})):d())},getEl:function(){var a=this.el;return a||(this.sourceEl.width(),a=this.el=this.sourceEl.clone().addClass(this.options.additionalClass||"").css({position:"absolute",visibility:"",display:this.isHidden?"none":"",margin:0,right:"auto",bottom:"auto",width:this.sourceEl.width(),height:this.sourceEl.height(),opacity:this.options.opacity||"",zIndex:this.options.zIndex}),a.addClass("fc-unselectable"),a.appendTo(this.parentEl)),a},removeElement:function(){this.el&&(this.el.remove(),this.el=null)},updatePosition:function(){var a,b;this.getEl(),null===this.top0&&(this.sourceEl.width(),a=this.sourceEl.offset(),b=this.el.offsetParent().offset(),this.top0=a.top-b.top,this.left0=a.left-b.left),this.el.css({top:this.top0+this.topDelta,left:this.left0+this.leftDelta})},handleMove:function(a){this.topDelta=w(a)-this.y0,this.leftDelta=v(a)-this.x0,this.isHidden||this.updatePosition()},hide:function(){this.isHidden||(this.isHidden=!0,this.el&&this.el.hide())},show:function(){this.isHidden&&(this.isHidden=!1,this.updatePosition(),this.getEl().show())}}),sb=Va.Grid=xa.extend(lb,mb,{view:null,isRTL:null,start:null,end:null,el:null,elsByFill:null,eventTimeFormat:null,displayEventTime:null,displayEventEnd:null,minResizeDuration:null,largeUnit:null,dayDragListener:null,segDragListener:null,segResizeListener:null,externalDragListener:null,constructor:function(a){this.view=a,this.isRTL=a.opt("isRTL"),this.elsByFill={},this.dayDragListener=this.buildDayDragListener(),this.initMouseIgnoring()},computeEventTimeFormat:function(){return this.view.opt("smallTimeFormat")},computeDisplayEventTime:function(){return!0},computeDisplayEventEnd:function(){return!0},setRange:function(a){this.start=a.start.clone(),this.end=a.end.clone(),this.rangeUpdated(),this.processRangeOptions()},rangeUpdated:function(){},processRangeOptions:function(){var a,b,c=this.view;this.eventTimeFormat=c.opt("eventTimeFormat")||c.opt("timeFormat")||this.computeEventTimeFormat(),a=c.opt("displayEventTime"),null==a&&(a=this.computeDisplayEventTime()),b=c.opt("displayEventEnd"),null==b&&(b=this.computeDisplayEventEnd()),this.displayEventTime=a,this.displayEventEnd=b},spanToSegs:function(a){},diffDates:function(a,b){return this.largeUnit?N(a,b,this.largeUnit):L(a,b)},prepareHits:function(){},releaseHits:function(){},queryHit:function(a,b){},getHitSpan:function(a){},getHitEl:function(a){},setElement:function(a){this.el=a,y(a),this.bindDayHandler("touchstart",this.dayTouchStart),this.bindDayHandler("mousedown",this.dayMousedown),this.bindSegHandlers(),this.bindGlobalHandlers()},bindDayHandler:function(b,c){var d=this;this.el.on(b,function(b){return a(b.target).is(".fc-event-container *, .fc-more")||a(b.target).closest(".fc-popover").length?void 0:c.call(d,b)})},removeElement:function(){this.unbindGlobalHandlers(),this.clearDragListeners(),this.el.remove()},renderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},bindGlobalHandlers:function(){this.listenTo(a(document),{dragstart:this.externalDragStart,sortstart:this.externalDragStart})},unbindGlobalHandlers:function(){this.stopListeningTo(a(document))},dayMousedown:function(a){this.isIgnoringMouse||this.dayDragListener.startInteraction(a,{})},dayTouchStart:function(a){var b=this.view;(b.isSelected||b.selectedEvent)&&this.tempIgnoreMouse(),this.dayDragListener.startInteraction(a,{delay:this.view.opt("longPressDelay")})},buildDayDragListener:function(){var a,b,c=this,d=this.view,e=d.opt("selectable"),f=new qb(this,{scroll:d.opt("dragScroll"),interactionStart:function(){a=f.origHit},dragStart:function(){d.unselect()},hitOver:function(d,f,h){h&&(f||(a=null),e&&(b=c.computeSelection(c.getHitSpan(h),c.getHitSpan(d)),b?c.renderSelection(b):b===!1&&g()))},hitOut:function(){a=null,b=null,c.unrenderSelection(),h()},interactionEnd:function(e,f){f||(a&&!c.isIgnoringMouse&&d.triggerDayClick(c.getHitSpan(a),c.getHitEl(a),e),b&&d.reportSelection(b,e),h())}});return f},clearDragListeners:function(){this.dayDragListener.endInteraction(),this.segDragListener&&this.segDragListener.endInteraction(),this.segResizeListener&&this.segResizeListener.endInteraction(),this.externalDragListener&&this.externalDragListener.endInteraction()},renderEventLocationHelper:function(a,b){var c=this.fabricateHelperEvent(a,b);return this.renderHelper(c,b)},fabricateHelperEvent:function(a,b){var c=b?X(b.event):{};return c.start=a.start.clone(),c.end=a.end?a.end.clone():null,c.allDay=null,this.view.calendar.normalizeEventDates(c),c.className=(c.className||[]).concat("fc-helper"),b||(c.editable=!1),c},renderHelper:function(a,b){},unrenderHelper:function(){},renderSelection:function(a){this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHighlight()},computeSelection:function(a,b){var c=this.computeSelectionSpan(a,b);return c&&!this.view.calendar.isSelectionSpanAllowed(c)?!1:c},computeSelectionSpan:function(a,b){var c=[a.start,a.end,b.start,b.end];return c.sort(ga),{start:c[0].clone(),end:c[3].clone()}},renderHighlight:function(a){this.renderFill("highlight",this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderFill("highlight")},highlightSegClasses:function(){return["fc-highlight"]},renderBusinessHours:function(){},unrenderBusinessHours:function(){},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},renderFill:function(a,b){},unrenderFill:function(a){var b=this.elsByFill[a];b&&(b.remove(),delete this.elsByFill[a])},renderFillSegEls:function(b,c){var d,e=this,f=this[b+"SegEl"],g="",h=[];if(c.length){for(d=0;d<c.length;d++)g+=this.fillSegHtml(b,c[d]);a(g).each(function(b,d){var g=c[b],i=a(d);f&&(i=f.call(e,g,i)),i&&(i=a(i),i.is(e.fillSegTag)&&(g.el=i,h.push(g)))})}return h},fillSegTag:"div",fillSegHtml:function(a,b){var c=this[a+"SegClasses"],d=this[a+"SegCss"],e=c?c.call(this,b):[],f=ea(d?d.call(this,b):{});return"<"+this.fillSegTag+(e.length?' class="'+e.join(" ")+'"':"")+(f?' style="'+f+'"':"")+" />"},getDayClasses:function(a){var b=this.view,c=b.calendar.getNow(),d=["fc-"+Za[a.day()]];return 1==b.intervalDuration.as("months")&&a.month()!=b.intervalStart.month()&&d.push("fc-other-month"),a.isSame(c,"day")?d.push("fc-today",b.highlightStateClass):c>a?d.push("fc-past"):d.push("fc-future"),d}});sb.mixin({mousedOverSeg:null,isDraggingSeg:!1,isResizingSeg:!1,isDraggingExternal:!1,segs:null,renderEvents:function(a){var b,c=[],d=[];for(b=0;b<a.length;b++)(Ca(a[b])?c:d).push(a[b]);this.segs=[].concat(this.renderBgEvents(c),this.renderFgEvents(d))},renderBgEvents:function(a){var b=this.eventsToSegs(a);return this.renderBgSegs(b)||b},renderFgEvents:function(a){var b=this.eventsToSegs(a);return this.renderFgSegs(b)||b},unrenderEvents:function(){this.handleSegMouseout(),this.clearDragListeners(),this.unrenderFgSegs(),this.unrenderBgSegs(),this.segs=null},getEventSegs:function(){return this.segs||[]},renderFgSegs:function(a){},unrenderFgSegs:function(){},renderFgSegEls:function(b,c){var d,e=this.view,f="",g=[];if(b.length){for(d=0;d<b.length;d++)f+=this.fgSegHtml(b[d],c);a(f).each(function(c,d){var f=b[c],h=e.resolveEventEl(f.event,a(d));h&&(h.data("fc-seg",f),f.el=h,g.push(f))})}return g},fgSegHtml:function(a,b){},renderBgSegs:function(a){return this.renderFill("bgEvent",a)},unrenderBgSegs:function(){this.unrenderFill("bgEvent")},bgEventSegEl:function(a,b){return this.view.resolveEventEl(a.event,b)},bgEventSegClasses:function(a){var b=a.event,c=b.source||{};return["fc-bgevent"].concat(b.className,c.className||[])},bgEventSegCss:function(a){return{"background-color":this.getSegSkinCss(a)["background-color"]}},businessHoursSegClasses:function(a){return["fc-nonbusiness","fc-bgevent"]},bindSegHandlers:function(){this.bindSegHandler("touchstart",this.handleSegTouchStart),this.bindSegHandler("touchend",this.handleSegTouchEnd),this.bindSegHandler("mouseenter",this.handleSegMouseover),this.bindSegHandler("mouseleave",this.handleSegMouseout),this.bindSegHandler("mousedown",this.handleSegMousedown),this.bindSegHandler("click",this.handleSegClick)},bindSegHandler:function(b,c){var d=this;this.el.on(b,".fc-event-container > *",function(b){var e=a(this).data("fc-seg");return!e||d.isDraggingSeg||d.isResizingSeg?void 0:c.call(d,e,b)})},handleSegClick:function(a,b){return this.view.trigger("eventClick",a.el[0],a.event,b)},handleSegMouseover:function(a,b){this.isIgnoringMouse||this.mousedOverSeg||(this.mousedOverSeg=a,a.el.addClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseover",a.el[0],a.event,b))},handleSegMouseout:function(a,b){b=b||{},this.mousedOverSeg&&(a=a||this.mousedOverSeg,this.mousedOverSeg=null,a.el.removeClass("fc-allow-mouse-resize"),this.view.trigger("eventMouseout",a.el[0],a.event,b))},handleSegMousedown:function(a,b){var c=this.startSegResize(a,b,{distance:5});!c&&this.view.isEventDraggable(a.event)&&this.buildSegDragListener(a).startInteraction(b,{distance:5})},handleSegTouchStart:function(a,b){var c,d=this.view,e=a.event,f=d.isEventSelected(e),g=d.isEventDraggable(e),h=d.isEventResizable(e),i=!1;f&&h&&(i=this.startSegResize(a,b)),i||!g&&!h||(c=g?this.buildSegDragListener(a):this.buildSegSelectListener(a),c.startInteraction(b,{delay:f?0:this.view.opt("longPressDelay")})),this.tempIgnoreMouse()},handleSegTouchEnd:function(a,b){this.tempIgnoreMouse()},startSegResize:function(b,c,d){return a(c.target).is(".fc-resizer")?(this.buildSegResizeListener(b,a(c.target).is(".fc-start-resizer")).startInteraction(c,d),!0):!1},buildSegDragListener:function(a){var b,c,d,e=this,f=this.view,i=f.calendar,j=a.el,k=a.event;if(this.segDragListener)return this.segDragListener;var l=this.segDragListener=new qb(f,{scroll:f.opt("dragScroll"),subjectEl:j,subjectCenter:!0,interactionStart:function(d){b=!1,c=new rb(a.el,{additionalClass:"fc-dragging",parentEl:f.el,opacity:l.isTouch?null:f.opt("dragOpacity"),revertDuration:f.opt("dragRevertDuration"),zIndex:2}),c.hide(),c.start(d)},dragStart:function(c){l.isTouch&&!f.isEventSelected(k)&&f.selectEvent(k),b=!0,e.handleSegMouseout(a,c),e.segDragStart(a,c),f.hideEvent(k)},hitOver:function(b,h,j){var m;a.hit&&(j=a.hit),d=e.computeEventDrop(j.component.getHitSpan(j),b.component.getHitSpan(b),k),d&&!i.isEventSpanAllowed(e.eventToSpan(d),k)&&(g(),d=null),d&&(m=f.renderDrag(d,a))?(m.addClass("fc-dragging"),l.isTouch||e.applyDragOpacity(m),c.hide()):c.show(),h&&(d=null)},hitOut:function(){f.unrenderDrag(),c.show(),d=null},hitDone:function(){h()},interactionEnd:function(g){c.stop(!d,function(){b&&(f.unrenderDrag(),f.showEvent(k),e.segDragStop(a,g)),d&&f.reportEventDrop(k,d,this.largeUnit,j,g)}),e.segDragListener=null}});return l},buildSegSelectListener:function(a){var b=this,c=this.view,d=a.event;if(this.segDragListener)return this.segDragListener;var e=this.segDragListener=new pb({dragStart:function(a){e.isTouch&&!c.isEventSelected(d)&&c.selectEvent(d)},interactionEnd:function(a){b.segDragListener=null}});return e},segDragStart:function(a,b){this.isDraggingSeg=!0,this.view.trigger("eventDragStart",a.el[0],a.event,b,{})},segDragStop:function(a,b){this.isDraggingSeg=!1,this.view.trigger("eventDragStop",a.el[0],a.event,b,{})},computeEventDrop:function(a,b,c){var d,e,f=this.view.calendar,g=a.start,h=b.start;return g.hasTime()===h.hasTime()?(d=this.diffDates(h,g),c.allDay&&T(d)?(e={start:c.start.clone(),end:f.getEventEnd(c),allDay:!1},f.normalizeEventTimes(e)):e={start:c.start.clone(),end:c.end?c.end.clone():null,allDay:c.allDay},e.start.add(d),e.end&&e.end.add(d)):e={start:h.clone(),end:null,allDay:!h.hasTime()},e},applyDragOpacity:function(a){var b=this.view.opt("dragOpacity");null!=b&&a.each(function(a,c){c.style.opacity=b})},externalDragStart:function(b,c){var d,e,f=this.view;f.opt("droppable")&&(d=a((c?c.item:null)||b.target),e=f.opt("dropAccept"),(a.isFunction(e)?e.call(d[0],d):d.is(e))&&(this.isDraggingExternal||this.listenToExternalDrag(d,b,c)))},listenToExternalDrag:function(a,b,c){var d,e=this,f=this.view.calendar,i=Ha(a),j=e.externalDragListener=new qb(this,{interactionStart:function(){e.isDraggingExternal=!0},hitOver:function(a){d=e.computeExternalDrop(a.component.getHitSpan(a),i),d&&!f.isExternalSpanAllowed(e.eventToSpan(d),d,i.eventProps)&&(g(),d=null),d&&e.renderDrag(d)},hitOut:function(){d=null},hitDone:function(){h(),e.unrenderDrag()},interactionEnd:function(b){d&&e.view.reportExternalDrop(i,d,a,b,c),e.isDraggingExternal=!1,e.externalDragListener=null}});j.startDrag(b)},computeExternalDrop:function(a,b){var c=this.view.calendar,d={start:c.applyTimezone(a.start),end:null};return b.startTime&&!d.start.hasTime()&&d.start.time(b.startTime),b.duration&&(d.end=d.start.clone().add(b.duration)),d},renderDrag:function(a,b){},unrenderDrag:function(){},buildSegResizeListener:function(a,b){var c,d,e=this,f=this.view,i=f.calendar,j=a.el,k=a.event,l=i.getEventEnd(k),m=this.segResizeListener=new qb(this,{scroll:f.opt("dragScroll"),subjectEl:j,interactionStart:function(){c=!1},dragStart:function(b){c=!0,e.handleSegMouseout(a,b),e.segResizeStart(a,b)},hitOver:function(c,h,j){var m=e.getHitSpan(j),n=e.getHitSpan(c);d=b?e.computeEventStartResize(m,n,k):e.computeEventEndResize(m,n,k),d&&(i.isEventSpanAllowed(e.eventToSpan(d),k)?d.start.isSame(k.start)&&d.end.isSame(l)&&(d=null):(g(),d=null)),d&&(f.hideEvent(k),e.renderEventResize(d,a))},hitOut:function(){d=null},hitDone:function(){e.unrenderEventResize(),f.showEvent(k),h()},interactionEnd:function(b){c&&e.segResizeStop(a,b),d&&f.reportEventResize(k,d,this.largeUnit,j,b),e.segResizeListener=null}});return m},segResizeStart:function(a,b){this.isResizingSeg=!0,this.view.trigger("eventResizeStart",a.el[0],a.event,b,{})},segResizeStop:function(a,b){this.isResizingSeg=!1,this.view.trigger("eventResizeStop",a.el[0],a.event,b,{})},computeEventStartResize:function(a,b,c){return this.computeEventResize("start",a,b,c)},computeEventEndResize:function(a,b,c){return this.computeEventResize("end",a,b,c)},computeEventResize:function(a,b,c,d){var e,f,g=this.view.calendar,h=this.diffDates(c[a],b[a]);return e={start:d.start.clone(),end:g.getEventEnd(d),allDay:d.allDay},e.allDay&&T(h)&&(e.allDay=!1,g.normalizeEventTimes(e)),e[a].add(h),e.start.isBefore(e.end)||(f=this.minResizeDuration||(d.allDay?g.defaultAllDayEventDuration:g.defaultTimedEventDuration),"start"==a?e.start=e.end.clone().subtract(f):e.end=e.start.clone().add(f)),e},renderEventResize:function(a,b){},unrenderEventResize:function(){},getEventTimeText:function(a,b,c){return null==b&&(b=this.eventTimeFormat),null==c&&(c=this.displayEventEnd),this.displayEventTime&&a.start.hasTime()?c&&a.end?this.view.formatRange(a,b):a.start.format(b):""},getSegClasses:function(a,b,c){var d=this.view,e=a.event,f=["fc-event",a.isStart?"fc-start":"fc-not-start",a.isEnd?"fc-end":"fc-not-end"].concat(e.className,e.source?e.source.className:[]);return b&&f.push("fc-draggable"),c&&f.push("fc-resizable"),d.isEventSelected(e)&&f.push("fc-selected"),f},getSegSkinCss:function(a){var b=a.event,c=this.view,d=b.source||{},e=b.color,f=d.color,g=c.opt("eventColor");return{"background-color":b.backgroundColor||e||d.backgroundColor||f||c.opt("eventBackgroundColor")||g,"border-color":b.borderColor||e||d.borderColor||f||c.opt("eventBorderColor")||g,color:b.textColor||d.textColor||c.opt("eventTextColor")}},eventToSegs:function(a){return this.eventsToSegs([a])},eventToSpan:function(a){return this.eventToSpans(a)[0]},eventToSpans:function(a){var b=this.eventToRange(a);return this.eventRangeToSpans(b,a)},eventsToSegs:function(b,c){var d=this,e=Fa(b),f=[];return a.each(e,function(a,b){var e,g=[];for(e=0;e<b.length;e++)g.push(d.eventToRange(b[e]));if(Da(b[0]))for(g=d.invertRanges(g),e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[0],c));else for(e=0;e<g.length;e++)f.push.apply(f,d.eventRangeToSegs(g[e],b[e],c))}),f},eventToRange:function(a){return{start:a.start.clone().stripZone(),end:(a.end?a.end.clone():this.view.calendar.getDefaultEventEnd(null!=a.allDay?a.allDay:!a.start.hasTime(),a.start)).stripZone()}},eventRangeToSegs:function(a,b,c){var d,e=this.eventRangeToSpans(a,b),f=[];for(d=0;d<e.length;d++)f.push.apply(f,this.eventSpanToSegs(e[d],b,c));return f},eventRangeToSpans:function(b,c){return[a.extend({},b)]},eventSpanToSegs:function(a,b,c){var d,e,f=c?c(a):this.spanToSegs(a);for(d=0;d<f.length;d++)e=f[d],e.event=b,e.eventStartMS=+a.start,e.eventDurationMS=a.end-a.start;return f},invertRanges:function(a){var b,c,d=this.view,e=d.start.clone(),f=d.end.clone(),g=[],h=e;for(a.sort(Ga),b=0;b<a.length;b++)c=a[b],c.start>h&&g.push({start:h,end:c.start}),h=c.end;return f>h&&g.push({start:h,end:f}),g},sortEventSegs:function(a){a.sort(ia(this,"compareEventSegs"))},compareEventSegs:function(a,b){return a.eventStartMS-b.eventStartMS||b.eventDurationMS-a.eventDurationMS||b.event.allDay-a.event.allDay||H(a.event,b.event,this.view.eventOrderSpecs)}}),Va.isBgEvent=Ca,Va.dataAttrPrefix="";var tb=Va.DayTableMixin={breakOnWeeks:!1,dayDates:null,dayIndices:null,daysPerRow:null,rowCnt:null,colCnt:null,colHeadFormat:null,updateDayTable:function(){for(var a,b,c,d=this.view,e=this.start.clone(),f=-1,g=[],h=[];e.isBefore(this.end);)d.isHiddenDay(e)?g.push(f+.5):(f++,g.push(f),h.push(e.clone())),e.add(1,"days");if(this.breakOnWeeks){for(b=h[0].day(),a=1;a<h.length&&h[a].day()!=b;a++);c=Math.ceil(h.length/a)}else c=1,a=h.length;this.dayDates=h,this.dayIndices=g,this.daysPerRow=a,this.rowCnt=c,this.updateDayTableCols()},updateDayTableCols:function(){this.colCnt=this.computeColCnt(),this.colHeadFormat=this.view.opt("columnFormat")||this.computeColHeadFormat()},computeColCnt:function(){return this.daysPerRow},getCellDate:function(a,b){return this.dayDates[this.getCellDayIndex(a,b)].clone()},getCellRange:function(a,b){var c=this.getCellDate(a,b),d=c.clone().add(1,"days");return{start:c,end:d}},getCellDayIndex:function(a,b){return a*this.daysPerRow+this.getColDayIndex(b)},getColDayIndex:function(a){return this.isRTL?this.colCnt-1-a:a},getDateDayIndex:function(a){var b=this.dayIndices,c=a.diff(this.start,"days");return 0>c?b[0]-1:c>=b.length?b[b.length-1]+1:b[c]},computeColHeadFormat:function(){return this.rowCnt>1||this.colCnt>10?"ddd":this.colCnt>1?this.view.opt("dayOfMonthFormat"):"dddd"},sliceRangeByRow:function(a){var b,c,d,e,f,g=this.daysPerRow,h=this.view.computeDayRange(a),i=this.getDateDayIndex(h.start),j=this.getDateDayIndex(h.end.clone().subtract(1,"days")),k=[];for(b=0;b<this.rowCnt;b++)c=b*g,d=c+g-1,e=Math.max(i,c),f=Math.min(j,d),e=Math.ceil(e),f=Math.floor(f),f>=e&&k.push({row:b,firstRowDayIndex:e-c,lastRowDayIndex:f-c,isStart:e===i,isEnd:f===j});return k},sliceRangeByDay:function(a){var b,c,d,e,f,g,h=this.daysPerRow,i=this.view.computeDayRange(a),j=this.getDateDayIndex(i.start),k=this.getDateDayIndex(i.end.clone().subtract(1,"days")),l=[];for(b=0;b<this.rowCnt;b++)for(c=b*h,d=c+h-1,e=c;d>=e;e++)f=Math.max(j,e),g=Math.min(k,e),f=Math.ceil(f),g=Math.floor(g),g>=f&&l.push({row:b,firstRowDayIndex:f-c,lastRowDayIndex:g-c,isStart:f===j,isEnd:g===k});return l},renderHeadHtml:function(){var a=this.view;return'<div class="fc-row '+a.widgetHeaderClass+'"><table><thead>'+this.renderHeadTrHtml()+"</thead></table></div>"},renderHeadIntroHtml:function(){return this.renderIntroHtml()},renderHeadTrHtml:function(){return"<tr>"+(this.isRTL?"":this.renderHeadIntroHtml())+this.renderHeadDateCellsHtml()+(this.isRTL?this.renderHeadIntroHtml():"")+"</tr>"},renderHeadDateCellsHtml:function(){var a,b,c=[];for(a=0;a<this.colCnt;a++)b=this.getCellDate(0,a),c.push(this.renderHeadDateCellHtml(b));return c.join("")},renderHeadDateCellHtml:function(a,b,c){var d=this.view;return'<th class="fc-day-header '+d.widgetHeaderClass+" fc-"+Za[a.day()]+'"'+(1==this.rowCnt?' data-date="'+a.format("YYYY-MM-DD")+'"':"")+(b>1?' colspan="'+b+'"':"")+(c?" "+c:"")+">"+ca(a.format(this.colHeadFormat))+"</th>"},renderBgTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderBgIntroHtml(a))+this.renderBgCellsHtml(a)+(this.isRTL?this.renderBgIntroHtml(a):"")+"</tr>"; +},renderBgIntroHtml:function(a){return this.renderIntroHtml()},renderBgCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderBgCellHtml(c));return d.join("")},renderBgCellHtml:function(a,b){var c=this.view,d=this.getDayClasses(a);return d.unshift("fc-day",c.widgetContentClass),'<td class="'+d.join(" ")+'" data-date="'+a.format("YYYY-MM-DD")+'"'+(b?" "+b:"")+"></td>"},renderIntroHtml:function(){},bookendCells:function(a){var b=this.renderIntroHtml();b&&(this.isRTL?a.append(b):a.prepend(b))}},ub=Va.DayGrid=sb.extend(tb,{numbersVisible:!1,bottomCoordPadding:0,rowEls:null,cellEls:null,helperEls:null,rowCoordCache:null,colCoordCache:null,renderDates:function(a){var b,c,d=this.view,e=this.rowCnt,f=this.colCnt,g="";for(b=0;e>b;b++)g+=this.renderDayRowHtml(b,a);for(this.el.html(g),this.rowEls=this.el.find(".fc-row"),this.cellEls=this.el.find(".fc-day"),this.rowCoordCache=new ob({els:this.rowEls,isVertical:!0}),this.colCoordCache=new ob({els:this.cellEls.slice(0,this.colCnt),isHorizontal:!0}),b=0;e>b;b++)for(c=0;f>c;c++)d.trigger("dayRender",null,this.getCellDate(b,c),this.getCellEl(b,c))},unrenderDates:function(){this.removeSegPopover()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(!0),b=this.eventsToSegs(a);this.renderFill("businessHours",b,"bgevent")},renderDayRowHtml:function(a,b){var c=this.view,d=["fc-row","fc-week",c.widgetContentClass];return b&&d.push("fc-rigid"),'<div class="'+d.join(" ")+'"><div class="fc-bg"><table>'+this.renderBgTrHtml(a)+'</table></div><div class="fc-content-skeleton"><table>'+(this.numbersVisible?"<thead>"+this.renderNumberTrHtml(a)+"</thead>":"")+"</table></div></div>"},renderNumberTrHtml:function(a){return"<tr>"+(this.isRTL?"":this.renderNumberIntroHtml(a))+this.renderNumberCellsHtml(a)+(this.isRTL?this.renderNumberIntroHtml(a):"")+"</tr>"},renderNumberIntroHtml:function(a){return this.renderIntroHtml()},renderNumberCellsHtml:function(a){var b,c,d=[];for(b=0;b<this.colCnt;b++)c=this.getCellDate(a,b),d.push(this.renderNumberCellHtml(c));return d.join("")},renderNumberCellHtml:function(a){var b;return this.view.dayNumbersVisible?(b=this.getDayClasses(a),b.unshift("fc-day-number"),'<td class="'+b.join(" ")+'" data-date="'+a.format()+'">'+a.date()+"</td>"):"<td/>"},computeEventTimeFormat:function(){return this.view.opt("extraSmallTimeFormat")},computeDisplayEventEnd:function(){return 1==this.colCnt},rangeUpdated:function(){this.updateDayTable()},spanToSegs:function(a){var b,c,d=this.sliceRangeByRow(a);for(b=0;b<d.length;b++)c=d[b],this.isRTL?(c.leftCol=this.daysPerRow-1-c.lastRowDayIndex,c.rightCol=this.daysPerRow-1-c.firstRowDayIndex):(c.leftCol=c.firstRowDayIndex,c.rightCol=c.lastRowDayIndex);return d},prepareHits:function(){this.colCoordCache.build(),this.rowCoordCache.build(),this.rowCoordCache.bottoms[this.rowCnt-1]+=this.bottomCoordPadding},releaseHits:function(){this.colCoordCache.clear(),this.rowCoordCache.clear()},queryHit:function(a,b){var c=this.colCoordCache.getHorizontalIndex(a),d=this.rowCoordCache.getVerticalIndex(b);return null!=d&&null!=c?this.getCellHit(d,c):void 0},getHitSpan:function(a){return this.getCellRange(a.row,a.col)},getHitEl:function(a){return this.getCellEl(a.row,a.col)},getCellHit:function(a,b){return{row:a,col:b,component:this,left:this.colCoordCache.getLeftOffset(b),right:this.colCoordCache.getRightOffset(b),top:this.rowCoordCache.getTopOffset(a),bottom:this.rowCoordCache.getBottomOffset(a)}},getCellEl:function(a,b){return this.cellEls.eq(a*this.colCnt+b)},renderDrag:function(a,b){return this.renderHighlight(this.eventToSpan(a)),b&&!b.el.closest(this.el).length?this.renderEventLocationHelper(a,b):void 0},unrenderDrag:function(){this.unrenderHighlight(),this.unrenderHelper()},renderEventResize:function(a,b){return this.renderHighlight(this.eventToSpan(a)),this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHighlight(),this.unrenderHelper()},renderHelper:function(b,c){var d,e=[],f=this.eventToSegs(b);return f=this.renderFgSegEls(f),d=this.renderSegRows(f),this.rowEls.each(function(b,f){var g,h=a(f),i=a('<div class="fc-helper-skeleton"><table/></div>');g=c&&c.row===b?c.el.position().top:h.find(".fc-content-skeleton tbody").position().top,i.css("top",g).find("table").append(d[b].tbodyEl),h.append(i),e.push(i[0])}),this.helperEls=a(e)},unrenderHelper:function(){this.helperEls&&(this.helperEls.remove(),this.helperEls=null)},fillSegTag:"td",renderFill:function(b,c,d){var e,f,g,h=[];for(c=this.renderFillSegEls(b,c),e=0;e<c.length;e++)f=c[e],g=this.renderFillRow(b,f,d),this.rowEls.eq(f.row).append(g),h.push(g[0]);return this.elsByFill[b]=a(h),c},renderFillRow:function(b,c,d){var e,f,g=this.colCnt,h=c.leftCol,i=c.rightCol+1;return d=d||b.toLowerCase(),e=a('<div class="fc-'+d+'-skeleton"><table><tr/></table></div>'),f=e.find("tr"),h>0&&f.append('<td colspan="'+h+'"/>'),f.append(c.el.attr("colspan",i-h)),g>i&&f.append('<td colspan="'+(g-i)+'"/>'),this.bookendCells(f),e}});ub.mixin({rowStructs:null,unrenderEvents:function(){this.removeSegPopover(),sb.prototype.unrenderEvents.apply(this,arguments)},getEventSegs:function(){return sb.prototype.getEventSegs.call(this).concat(this.popoverSegs||[])},renderBgSegs:function(b){var c=a.grep(b,function(a){return a.event.allDay});return sb.prototype.renderBgSegs.call(this,c)},renderFgSegs:function(b){var c;return b=this.renderFgSegEls(b),c=this.rowStructs=this.renderSegRows(b),this.rowEls.each(function(b,d){a(d).find(".fc-content-skeleton > table").append(c[b].tbodyEl)}),b},unrenderFgSegs:function(){for(var a,b=this.rowStructs||[];a=b.pop();)a.tbodyEl.remove();this.rowStructs=null},renderSegRows:function(a){var b,c,d=[];for(b=this.groupSegRows(a),c=0;c<b.length;c++)d.push(this.renderSegRow(c,b[c]));return d},fgSegHtml:function(a,b){var c,d,e=this.view,f=a.event,g=e.isEventDraggable(f),h=!b&&f.allDay&&a.isStart&&e.isEventResizableFromStart(f),i=!b&&f.allDay&&a.isEnd&&e.isEventResizableFromEnd(f),j=this.getSegClasses(a,g,h||i),k=ea(this.getSegSkinCss(a)),l="";return j.unshift("fc-day-grid-event","fc-h-event"),a.isStart&&(c=this.getEventTimeText(f),c&&(l='<span class="fc-time">'+ca(c)+"</span>")),d='<span class="fc-title">'+(ca(f.title||"")||" ")+"</span>",'<a class="'+j.join(" ")+'"'+(f.url?' href="'+ca(f.url)+'"':"")+(k?' style="'+k+'"':"")+'><div class="fc-content">'+(this.isRTL?d+" "+l:l+" "+d)+"</div>"+(h?'<div class="fc-resizer fc-start-resizer" />':"")+(i?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},renderSegRow:function(b,c){function d(b){for(;b>g;)k=(r[e-1]||[])[g],k?k.attr("rowspan",parseInt(k.attr("rowspan")||1,10)+1):(k=a("<td/>"),h.append(k)),q[e][g]=k,r[e][g]=k,g++}var e,f,g,h,i,j,k,l=this.colCnt,m=this.buildSegLevels(c),n=Math.max(1,m.length),o=a("<tbody/>"),p=[],q=[],r=[];for(e=0;n>e;e++){if(f=m[e],g=0,h=a("<tr/>"),p.push([]),q.push([]),r.push([]),f)for(i=0;i<f.length;i++){for(j=f[i],d(j.leftCol),k=a('<td class="fc-event-container"/>').append(j.el),j.leftCol!=j.rightCol?k.attr("colspan",j.rightCol-j.leftCol+1):r[e][g]=k;g<=j.rightCol;)q[e][g]=k,p[e][g]=j,g++;h.append(k)}d(l),this.bookendCells(h),o.append(h)}return{row:b,tbodyEl:o,cellMatrix:q,segMatrix:p,segLevels:m,segs:c}},buildSegLevels:function(a){var b,c,d,e=[];for(this.sortEventSegs(a),b=0;b<a.length;b++){for(c=a[b],d=0;d<e.length&&Ia(c,e[d]);d++);c.level=d,(e[d]||(e[d]=[])).push(c)}for(d=0;d<e.length;d++)e[d].sort(Ja);return e},groupSegRows:function(a){var b,c=[];for(b=0;b<this.rowCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].row].push(a[b]);return c}}),ub.mixin({segPopover:null,popoverSegs:null,removeSegPopover:function(){this.segPopover&&this.segPopover.hide()},limitRows:function(a){var b,c,d=this.rowStructs||[];for(b=0;b<d.length;b++)this.unlimitRow(b),c=a?"number"==typeof a?a:this.computeRowLevelLimit(b):!1,c!==!1&&this.limitRow(b,c)},computeRowLevelLimit:function(b){function c(b,c){f=Math.max(f,a(c).outerHeight())}var d,e,f,g=this.rowEls.eq(b),h=g.height(),i=this.rowStructs[b].tbodyEl.children();for(d=0;d<i.length;d++)if(e=i.eq(d).removeClass("fc-limited"),f=0,e.find("> td > :first-child").each(c),e.position().top+f>h)return d;return!1},limitRow:function(b,c){function d(d){for(;d>w;)j=t.getCellSegs(b,w,c),j.length&&(m=f[c-1][w],s=t.renderMoreLink(b,w,j),r=a("<div/>").append(s),m.append(r),v.push(r[0])),w++}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t=this,u=this.rowStructs[b],v=[],w=0;if(c&&c<u.segLevels.length){for(e=u.segLevels[c-1],f=u.cellMatrix,g=u.tbodyEl.children().slice(c).addClass("fc-limited").get(),h=0;h<e.length;h++){for(i=e[h],d(i.leftCol),l=[],k=0;w<=i.rightCol;)j=this.getCellSegs(b,w,c),l.push(j),k+=j.length,w++;if(k){for(m=f[c-1][i.leftCol],n=m.attr("rowspan")||1,o=[],p=0;p<l.length;p++)q=a('<td class="fc-more-cell"/>').attr("rowspan",n),j=l[p],s=this.renderMoreLink(b,i.leftCol+p,[i].concat(j)),r=a("<div/>").append(s),q.append(r),o.push(q[0]),v.push(q[0]);m.addClass("fc-limited").after(a(o)),g.push(m[0])}}d(this.colCnt),u.moreEls=a(v),u.limitedEls=a(g)}},unlimitRow:function(a){var b=this.rowStructs[a];b.moreEls&&(b.moreEls.remove(),b.moreEls=null),b.limitedEls&&(b.limitedEls.removeClass("fc-limited"),b.limitedEls=null)},renderMoreLink:function(b,c,d){var e=this,f=this.view;return a('<a class="fc-more"/>').text(this.getMoreLinkText(d.length)).on("click",function(g){var h=f.opt("eventLimitClick"),i=e.getCellDate(b,c),j=a(this),k=e.getCellEl(b,c),l=e.getCellSegs(b,c),m=e.resliceDaySegs(l,i),n=e.resliceDaySegs(d,i);"function"==typeof h&&(h=f.trigger("eventLimitClick",null,{date:i,dayEl:k,moreEl:j,segs:m,hiddenSegs:n},g)),"popover"===h?e.showSegPopover(b,c,j,m):"string"==typeof h&&f.calendar.zoomTo(i,h)})},showSegPopover:function(a,b,c,d){var e,f,g=this,h=this.view,i=c.parent();e=1==this.rowCnt?h.el:this.rowEls.eq(a),f={className:"fc-more-popover",content:this.renderSegPopoverContent(a,b,d),parentEl:this.el,top:e.offset().top,autoHide:!0,viewportConstrain:h.opt("popoverViewportConstrain"),hide:function(){g.segPopover.removeElement(),g.segPopover=null,g.popoverSegs=null}},this.isRTL?f.right=i.offset().left+i.outerWidth()+1:f.left=i.offset().left-1,this.segPopover=new nb(f),this.segPopover.show()},renderSegPopoverContent:function(b,c,d){var e,f=this.view,g=f.opt("theme"),h=this.getCellDate(b,c).format(f.opt("dayPopoverFormat")),i=a('<div class="fc-header '+f.widgetHeaderClass+'"><span class="fc-close '+(g?"ui-icon ui-icon-closethick":"fc-icon fc-icon-x")+'"></span><span class="fc-title">'+ca(h)+'</span><div class="fc-clear"/></div><div class="fc-body '+f.widgetContentClass+'"><div class="fc-event-container"></div></div>'),j=i.find(".fc-event-container");for(d=this.renderFgSegEls(d,!0),this.popoverSegs=d,e=0;e<d.length;e++)this.prepareHits(),d[e].hit=this.getCellHit(b,c),this.releaseHits(),j.append(d[e].el);return i},resliceDaySegs:function(b,c){var d=a.map(b,function(a){return a.event}),e=c.clone(),f=e.clone().add(1,"days"),g={start:e,end:f};return b=this.eventsToSegs(d,function(a){var b=K(a,g);return b?[b]:[]}),this.sortEventSegs(b),b},getMoreLinkText:function(a){var b=this.view.opt("eventLimitText");return"function"==typeof b?b(a):"+"+a+" "+b},getCellSegs:function(a,b,c){for(var d,e=this.rowStructs[a].segMatrix,f=c||0,g=[];f<e.length;)d=e[f][b],d&&g.push(d),f++;return g}});var vb=Va.TimeGrid=sb.extend(tb,{slotDuration:null,snapDuration:null,snapsPerSlot:null,minTime:null,maxTime:null,labelFormat:null,labelInterval:null,colEls:null,slatContainerEl:null,slatEls:null,nowIndicatorEls:null,colCoordCache:null,slatCoordCache:null,constructor:function(){sb.apply(this,arguments),this.processOptions()},renderDates:function(){this.el.html(this.renderHtml()),this.colEls=this.el.find(".fc-day"),this.slatContainerEl=this.el.find(".fc-slats"),this.slatEls=this.slatContainerEl.find("tr"),this.colCoordCache=new ob({els:this.colEls,isHorizontal:!0}),this.slatCoordCache=new ob({els:this.slatEls,isVertical:!0}),this.renderContentSkeleton()},renderHtml:function(){return'<div class="fc-bg"><table>'+this.renderBgTrHtml(0)+'</table></div><div class="fc-slats"><table>'+this.renderSlatRowHtml()+"</table></div>"},renderSlatRowHtml:function(){for(var a,c,d,e=this.view,f=this.isRTL,g="",h=b.duration(+this.minTime);h<this.maxTime;)a=this.start.clone().time(h),c=ha(R(h,this.labelInterval)),d='<td class="fc-axis fc-time '+e.widgetContentClass+'" '+e.axisStyleAttr()+">"+(c?"<span>"+ca(a.format(this.labelFormat))+"</span>":"")+"</td>",g+='<tr data-time="'+a.format("HH:mm:ss")+'"'+(c?"":' class="fc-minor"')+">"+(f?"":d)+'<td class="'+e.widgetContentClass+'"/>'+(f?d:"")+"</tr>",h.add(this.slotDuration);return g},processOptions:function(){var c,d=this.view,e=d.opt("slotDuration"),f=d.opt("snapDuration");e=b.duration(e),f=f?b.duration(f):e,this.slotDuration=e,this.snapDuration=f,this.snapsPerSlot=e/f,this.minResizeDuration=f,this.minTime=b.duration(d.opt("minTime")),this.maxTime=b.duration(d.opt("maxTime")),c=d.opt("slotLabelFormat"),a.isArray(c)&&(c=c[c.length-1]),this.labelFormat=c||d.opt("axisFormat")||d.opt("smallTimeFormat"),c=d.opt("slotLabelInterval"),this.labelInterval=c?b.duration(c):this.computeLabelInterval(e)},computeLabelInterval:function(a){var c,d,e;for(c=Mb.length-1;c>=0;c--)if(d=b.duration(Mb[c]),e=R(d,a),ha(e)&&e>1)return d;return b.duration(a)},computeEventTimeFormat:function(){return this.view.opt("noMeridiemTimeFormat")},computeDisplayEventEnd:function(){return!0},prepareHits:function(){this.colCoordCache.build(),this.slatCoordCache.build()},releaseHits:function(){this.colCoordCache.clear()},queryHit:function(a,b){var c=this.snapsPerSlot,d=this.colCoordCache,e=this.slatCoordCache,f=d.getHorizontalIndex(a),g=e.getVerticalIndex(b);if(null!=f&&null!=g){var h=e.getTopOffset(g),i=e.getHeight(g),j=(b-h)/i,k=Math.floor(j*c),l=g*c+k,m=h+k/c*i,n=h+(k+1)/c*i;return{col:f,snap:l,component:this,left:d.getLeftOffset(f),right:d.getRightOffset(f),top:m,bottom:n}}},getHitSpan:function(a){var b,c=this.getCellDate(0,a.col),d=this.computeSnapTime(a.snap);return c.time(d),b=c.clone().add(this.snapDuration),{start:c,end:b}},getHitEl:function(a){return this.colEls.eq(a.col)},rangeUpdated:function(){this.updateDayTable()},computeSnapTime:function(a){return b.duration(this.minTime+this.snapDuration*a)},spanToSegs:function(a){var b,c=this.sliceRangeByTimes(a);for(b=0;b<c.length;b++)this.isRTL?c[b].col=this.daysPerRow-1-c[b].dayIndex:c[b].col=c[b].dayIndex;return c},sliceRangeByTimes:function(a){var b,c,d,e,f=[];for(c=0;c<this.daysPerRow;c++)d=this.dayDates[c].clone(),e={start:d.clone().time(this.minTime),end:d.clone().time(this.maxTime)},b=K(a,e),b&&(b.dayIndex=c,f.push(b));return f},updateSize:function(a){this.slatCoordCache.build(),a&&this.updateSegVerticals([].concat(this.fgSegs||[],this.bgSegs||[],this.businessSegs||[]))},getTotalSlatHeight:function(){return this.slatContainerEl.outerHeight()},computeDateTop:function(a,c){return this.computeTimeTop(b.duration(a-c.clone().stripTime()))},computeTimeTop:function(a){var b,c,d=this.slatEls.length,e=(a-this.minTime)/this.slotDuration;return e=Math.max(0,e),e=Math.min(d,e),b=Math.floor(e),b=Math.min(b,d-1),c=e-b,this.slatCoordCache.getTopPosition(b)+this.slatCoordCache.getHeight(b)*c},renderDrag:function(a,b){return b?this.renderEventLocationHelper(a,b):void this.renderHighlight(this.eventToSpan(a))},unrenderDrag:function(){this.unrenderHelper(),this.unrenderHighlight()},renderEventResize:function(a,b){return this.renderEventLocationHelper(a,b)},unrenderEventResize:function(){this.unrenderHelper()},renderHelper:function(a,b){return this.renderHelperSegs(this.eventToSegs(a),b)},unrenderHelper:function(){this.unrenderHelperSegs()},renderBusinessHours:function(){var a=this.view.calendar.getBusinessHoursEvents(),b=this.eventsToSegs(a);this.renderBusinessSegs(b)},unrenderBusinessHours:function(){this.unrenderBusinessSegs()},getNowIndicatorUnit:function(){return"minute"},renderNowIndicator:function(b){var c,d=this.spanToSegs({start:b,end:b}),e=this.computeDateTop(b,b),f=[];for(c=0;c<d.length;c++)f.push(a('<div class="fc-now-indicator fc-now-indicator-line"></div>').css("top",e).appendTo(this.colContainerEls.eq(d[c].col))[0]);d.length>0&&f.push(a('<div class="fc-now-indicator fc-now-indicator-arrow"></div>').css("top",e).appendTo(this.el.find(".fc-content-skeleton"))[0]),this.nowIndicatorEls=a(f)},unrenderNowIndicator:function(){this.nowIndicatorEls&&(this.nowIndicatorEls.remove(),this.nowIndicatorEls=null)},renderSelection:function(a){this.view.opt("selectHelper")?this.renderEventLocationHelper(a):this.renderHighlight(a)},unrenderSelection:function(){this.unrenderHelper(),this.unrenderHighlight()},renderHighlight:function(a){this.renderHighlightSegs(this.spanToSegs(a))},unrenderHighlight:function(){this.unrenderHighlightSegs()}});vb.mixin({colContainerEls:null,fgContainerEls:null,bgContainerEls:null,helperContainerEls:null,highlightContainerEls:null,businessContainerEls:null,fgSegs:null,bgSegs:null,helperSegs:null,highlightSegs:null,businessSegs:null,renderContentSkeleton:function(){var b,c,d="";for(b=0;b<this.colCnt;b++)d+='<td><div class="fc-content-col"><div class="fc-event-container fc-helper-container"></div><div class="fc-event-container"></div><div class="fc-highlight-container"></div><div class="fc-bgevent-container"></div><div class="fc-business-container"></div></div></td>';c=a('<div class="fc-content-skeleton"><table><tr>'+d+"</tr></table></div>"),this.colContainerEls=c.find(".fc-content-col"),this.helperContainerEls=c.find(".fc-helper-container"),this.fgContainerEls=c.find(".fc-event-container:not(.fc-helper-container)"),this.bgContainerEls=c.find(".fc-bgevent-container"),this.highlightContainerEls=c.find(".fc-highlight-container"),this.businessContainerEls=c.find(".fc-business-container"),this.bookendCells(c.find("tr")),this.el.append(c)},renderFgSegs:function(a){return a=this.renderFgSegsIntoContainers(a,this.fgContainerEls),this.fgSegs=a,a},unrenderFgSegs:function(){this.unrenderNamedSegs("fgSegs")},renderHelperSegs:function(b,c){var d,e,f,g=[];for(b=this.renderFgSegsIntoContainers(b,this.helperContainerEls),d=0;d<b.length;d++)e=b[d],c&&c.col===e.col&&(f=c.el,e.el.css({left:f.css("left"),right:f.css("right"),"margin-left":f.css("margin-left"),"margin-right":f.css("margin-right")})),g.push(e.el[0]);return this.helperSegs=b,a(g)},unrenderHelperSegs:function(){this.unrenderNamedSegs("helperSegs")},renderBgSegs:function(a){return a=this.renderFillSegEls("bgEvent",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.bgContainerEls),this.bgSegs=a,a},unrenderBgSegs:function(){this.unrenderNamedSegs("bgSegs")},renderHighlightSegs:function(a){a=this.renderFillSegEls("highlight",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.highlightContainerEls),this.highlightSegs=a},unrenderHighlightSegs:function(){this.unrenderNamedSegs("highlightSegs")},renderBusinessSegs:function(a){a=this.renderFillSegEls("businessHours",a),this.updateSegVerticals(a),this.attachSegsByCol(this.groupSegsByCol(a),this.businessContainerEls),this.businessSegs=a},unrenderBusinessSegs:function(){this.unrenderNamedSegs("businessSegs")},groupSegsByCol:function(a){var b,c=[];for(b=0;b<this.colCnt;b++)c.push([]);for(b=0;b<a.length;b++)c[a[b].col].push(a[b]);return c},attachSegsByCol:function(a,b){var c,d,e;for(c=0;c<this.colCnt;c++)for(d=a[c],e=0;e<d.length;e++)b.eq(c).append(d[e].el)},unrenderNamedSegs:function(a){var b,c=this[a];if(c){for(b=0;b<c.length;b++)c[b].el.remove();this[a]=null}},renderFgSegsIntoContainers:function(a,b){var c,d;for(a=this.renderFgSegEls(a),c=this.groupSegsByCol(a),d=0;d<this.colCnt;d++)this.updateFgSegCoords(c[d]);return this.attachSegsByCol(c,b),a},fgSegHtml:function(a,b){var c,d,e,f=this.view,g=a.event,h=f.isEventDraggable(g),i=!b&&a.isStart&&f.isEventResizableFromStart(g),j=!b&&a.isEnd&&f.isEventResizableFromEnd(g),k=this.getSegClasses(a,h,i||j),l=ea(this.getSegSkinCss(a));return k.unshift("fc-time-grid-event","fc-v-event"),f.isMultiDayEvent(g)?(a.isStart||a.isEnd)&&(c=this.getEventTimeText(a),d=this.getEventTimeText(a,"LT"),e=this.getEventTimeText(a,null,!1)):(c=this.getEventTimeText(g),d=this.getEventTimeText(g,"LT"),e=this.getEventTimeText(g,null,!1)),'<a class="'+k.join(" ")+'"'+(g.url?' href="'+ca(g.url)+'"':"")+(l?' style="'+l+'"':"")+'><div class="fc-content">'+(c?'<div class="fc-time" data-start="'+ca(e)+'" data-full="'+ca(d)+'"><span>'+ca(c)+"</span></div>":"")+(g.title?'<div class="fc-title">'+ca(g.title)+"</div>":"")+'</div><div class="fc-bg"/>'+(j?'<div class="fc-resizer fc-end-resizer" />':"")+"</a>"},updateSegVerticals:function(a){this.computeSegVerticals(a),this.assignSegVerticals(a)},computeSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.top=this.computeDateTop(c.start,c.start),c.bottom=this.computeDateTop(c.end,c.start)},assignSegVerticals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateSegVerticalCss(c))},generateSegVerticalCss:function(a){return{top:a.top,bottom:-a.bottom}},updateFgSegCoords:function(a){this.computeSegVerticals(a),this.computeFgSegHorizontals(a),this.assignSegVerticals(a),this.assignFgSegHorizontals(a)},computeFgSegHorizontals:function(a){var b,c,d;if(this.sortEventSegs(a),b=Ka(a),La(b),c=b[0]){for(d=0;d<c.length;d++)Ma(c[d]);for(d=0;d<c.length;d++)this.computeFgSegForwardBack(c[d],0,0)}},computeFgSegForwardBack:function(a,b,c){var d,e=a.forwardSegs;if(void 0===a.forwardCoord)for(e.length?(this.sortForwardSegs(e),this.computeFgSegForwardBack(e[0],b+1,c),a.forwardCoord=e[0].backwardCoord):a.forwardCoord=1,a.backwardCoord=a.forwardCoord-(a.forwardCoord-c)/(b+1),d=0;d<e.length;d++)this.computeFgSegForwardBack(e[d],0,a.forwardCoord)},sortForwardSegs:function(a){a.sort(ia(this,"compareForwardSegs"))},compareForwardSegs:function(a,b){return b.forwardPressure-a.forwardPressure||(a.backwardCoord||0)-(b.backwardCoord||0)||this.compareEventSegs(a,b)},assignFgSegHorizontals:function(a){var b,c;for(b=0;b<a.length;b++)c=a[b],c.el.css(this.generateFgSegHorizontalCss(c)),c.bottom-c.top<30&&c.el.addClass("fc-short")},generateFgSegHorizontalCss:function(a){var b,c,d=this.view.opt("slotEventOverlap"),e=a.backwardCoord,f=a.forwardCoord,g=this.generateSegVerticalCss(a);return d&&(f=Math.min(1,e+2*(f-e))),this.isRTL?(b=1-f,c=e):(b=e,c=1-f),g.zIndex=a.level+1,g.left=100*b+"%",g.right=100*c+"%",d&&a.forwardPressure&&(g[this.isRTL?"marginLeft":"marginRight"]=20),g}});var wb=Va.View=xa.extend(kb,lb,{type:null,name:null,title:null,calendar:null,options:null,el:null,displaying:null,isSkeletonRendered:!1,isEventsRendered:!1,start:null,end:null,intervalStart:null,intervalEnd:null,intervalDuration:null,intervalUnit:null,isRTL:!1,isSelected:!1,selectedEvent:null,eventOrderSpecs:null,widgetHeaderClass:null,widgetContentClass:null,highlightStateClass:null,nextDayThreshold:null,isHiddenDayHash:null,isNowIndicatorRendered:null,initialNowDate:null,initialNowQueriedMs:null,nowIndicatorTimeoutID:null,nowIndicatorIntervalID:null,constructor:function(a,c,d,e){this.calendar=a,this.type=this.name=c,this.options=d,this.intervalDuration=e||b.duration(1,"day"),this.nextDayThreshold=b.duration(this.opt("nextDayThreshold")),this.initThemingProps(),this.initHiddenDays(),this.isRTL=this.opt("isRTL"),this.eventOrderSpecs=G(this.opt("eventOrder")),this.initialize()},initialize:function(){},opt:function(a){return this.options[a]},trigger:function(a,b){var c=this.calendar;return c.trigger.apply(c,[a,b||this].concat(Array.prototype.slice.call(arguments,2),[this]))},setDate:function(a){this.setRange(this.computeRange(a))},setRange:function(b){a.extend(this,b),this.updateTitle()},computeRange:function(a){var b,c,d=O(this.intervalDuration),e=a.clone().startOf(d),f=e.clone().add(this.intervalDuration);return/year|month|week|day/.test(d)?(e.stripTime(),f.stripTime()):(e.hasTime()||(e=this.calendar.time(0)),f.hasTime()||(f=this.calendar.time(0))),b=e.clone(),b=this.skipHiddenDays(b),c=f.clone(),c=this.skipHiddenDays(c,-1,!0),{intervalUnit:d,intervalStart:e,intervalEnd:f,start:b,end:c}},computePrevDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).subtract(this.intervalDuration),-1)},computeNextDate:function(a){return this.massageCurrentDate(a.clone().startOf(this.intervalUnit).add(this.intervalDuration))},massageCurrentDate:function(a,b){return this.intervalDuration.as("days")<=1&&this.isHiddenDay(a)&&(a=this.skipHiddenDays(a,b),a.startOf("day")),a},updateTitle:function(){this.title=this.computeTitle()},computeTitle:function(){return this.formatRange({start:this.calendar.applyTimezone(this.intervalStart),end:this.calendar.applyTimezone(this.intervalEnd)},this.opt("titleFormat")||this.computeTitleFormat(),this.opt("titleRangeSeparator"))},computeTitleFormat:function(){return"year"==this.intervalUnit?"YYYY":"month"==this.intervalUnit?this.opt("monthYearFormat"):this.intervalDuration.as("days")>1?"ll":"LL"},formatRange:function(a,b,c){var d=a.end;return d.hasTime()||(d=d.clone().subtract(1)),sa(a.start,d,b,c,this.opt("isRTL"))},setElement:function(a){this.el=a,this.bindGlobalHandlers()},removeElement:function(){this.clear(),this.isSkeletonRendered&&(this.unrenderSkeleton(),this.isSkeletonRendered=!1),this.unbindGlobalHandlers(),this.el.remove()},display:function(b){var c=this,d=null;return this.displaying&&(d=this.queryScroll()),this.calendar.freezeContentHeight(),this.clear().then(function(){return c.displaying=a.when(c.displayView(b)).then(function(){c.forceScroll(c.computeInitialScroll(d)),c.calendar.unfreezeContentHeight(),c.triggerRender()})})},clear:function(){var b=this,c=this.displaying;return c?c.then(function(){return b.displaying=null,b.clearEvents(),b.clearView()}):a.when()},displayView:function(a){this.isSkeletonRendered||(this.renderSkeleton(),this.isSkeletonRendered=!0),a&&this.setDate(a),this.render&&this.render(),this.renderDates(),this.updateSize(),this.renderBusinessHours(),this.startNowIndicator()},clearView:function(){this.unselect(),this.stopNowIndicator(),this.triggerUnrender(),this.unrenderBusinessHours(),this.unrenderDates(),this.destroy&&this.destroy()},renderSkeleton:function(){},unrenderSkeleton:function(){},renderDates:function(){},unrenderDates:function(){},triggerRender:function(){this.trigger("viewRender",this,this,this.el)},triggerUnrender:function(){this.trigger("viewDestroy",this,this,this.el)},bindGlobalHandlers:function(){this.listenTo(a(document),"mousedown",this.handleDocumentMousedown),this.listenTo(a(document),"touchstart",this.processUnselect)},unbindGlobalHandlers:function(){this.stopListeningTo(a(document))},initThemingProps:function(){var a=this.opt("theme")?"ui":"fc";this.widgetHeaderClass=a+"-widget-header",this.widgetContentClass=a+"-widget-content",this.highlightStateClass=a+"-state-highlight"},renderBusinessHours:function(){},unrenderBusinessHours:function(){},startNowIndicator:function(){var a,c,d,e=this;this.opt("nowIndicator")&&(a=this.getNowIndicatorUnit(),a&&(c=ia(this,"updateNowIndicator"),this.initialNowDate=this.calendar.getNow(),this.initialNowQueriedMs=+new Date,this.renderNowIndicator(this.initialNowDate),this.isNowIndicatorRendered=!0,d=this.initialNowDate.clone().startOf(a).add(1,a)-this.initialNowDate,this.nowIndicatorTimeoutID=setTimeout(function(){e.nowIndicatorTimeoutID=null,c(),d=+b.duration(1,a),d=Math.max(100,d),e.nowIndicatorIntervalID=setInterval(c,d)},d)))},updateNowIndicator:function(){this.isNowIndicatorRendered&&(this.unrenderNowIndicator(),this.renderNowIndicator(this.initialNowDate.clone().add(new Date-this.initialNowQueriedMs)))},stopNowIndicator:function(){this.isNowIndicatorRendered&&(this.nowIndicatorTimeoutID&&(clearTimeout(this.nowIndicatorTimeoutID),this.nowIndicatorTimeoutID=null),this.nowIndicatorIntervalID&&(clearTimeout(this.nowIndicatorIntervalID),this.nowIndicatorIntervalID=null),this.unrenderNowIndicator(),this.isNowIndicatorRendered=!1)},getNowIndicatorUnit:function(){},renderNowIndicator:function(a){},unrenderNowIndicator:function(){},updateSize:function(a){var b;a&&(b=this.queryScroll()),this.updateHeight(a),this.updateWidth(a),this.updateNowIndicator(),a&&this.setScroll(b)},updateWidth:function(a){},updateHeight:function(a){var b=this.calendar;this.setHeight(b.getSuggestedViewHeight(),b.isHeightAuto())},setHeight:function(a,b){},computeInitialScroll:function(a){return 0},queryScroll:function(){},setScroll:function(a){},forceScroll:function(a){var b=this;this.setScroll(a),setTimeout(function(){b.setScroll(a)},0)},displayEvents:function(a){var b=this.queryScroll();this.clearEvents(),this.renderEvents(a),this.isEventsRendered=!0,this.setScroll(b),this.triggerEventRender()},clearEvents:function(){var a;this.isEventsRendered&&(a=this.queryScroll(),this.triggerEventUnrender(),this.destroyEvents&&this.destroyEvents(),this.unrenderEvents(),this.setScroll(a),this.isEventsRendered=!1)},renderEvents:function(a){},unrenderEvents:function(){},triggerEventRender:function(){this.renderedEventSegEach(function(a){this.trigger("eventAfterRender",a.event,a.event,a.el)}),this.trigger("eventAfterAllRender")},triggerEventUnrender:function(){this.renderedEventSegEach(function(a){this.trigger("eventDestroy",a.event,a.event,a.el)})},resolveEventEl:function(b,c){var d=this.trigger("eventRender",b,b,c);return d===!1?c=null:d&&d!==!0&&(c=a(d)),c},showEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","")},a)},hideEvent:function(a){this.renderedEventSegEach(function(a){a.el.css("visibility","hidden")},a)},renderedEventSegEach:function(a,b){var c,d=this.getEventSegs();for(c=0;c<d.length;c++)b&&d[c].event._id!==b._id||d[c].el&&a.call(this,d[c])},getEventSegs:function(){return[]},isEventDraggable:function(a){var b=a.source||{};return ba(a.startEditable,b.startEditable,this.opt("eventStartEditable"),a.editable,b.editable,this.opt("editable"))},reportEventDrop:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventDrop(a,g.dateDelta,h,d,e),f.reportEventChange()},triggerEventDrop:function(a,b,c,d,e){this.trigger("eventDrop",d[0],a,b,c,e,{})},reportExternalDrop:function(b,c,d,e,f){var g,h,i=b.eventProps;i&&(g=a.extend({},i,c),h=this.calendar.renderEvent(g,b.stick)[0]),this.triggerExternalDrop(h,c,d,e,f)},triggerExternalDrop:function(a,b,c,d,e){this.trigger("drop",c[0],b.start,d,e),a&&this.trigger("eventReceive",null,a)},renderDrag:function(a,b){},unrenderDrag:function(){},isEventResizableFromStart:function(a){return this.opt("eventResizableFromStart")&&this.isEventResizable(a)},isEventResizableFromEnd:function(a){return this.isEventResizable(a)},isEventResizable:function(a){var b=a.source||{};return ba(a.durationEditable,b.durationEditable,this.opt("eventDurationEditable"),a.editable,b.editable,this.opt("editable"))},reportEventResize:function(a,b,c,d,e){var f=this.calendar,g=f.mutateEvent(a,b,c),h=function(){g.undo(),f.reportEventChange()};this.triggerEventResize(a,g.durationDelta,h,d,e),f.reportEventChange()},triggerEventResize:function(a,b,c,d,e){this.trigger("eventResize",d[0],a,b,c,e,{})},select:function(a,b){this.unselect(b),this.renderSelection(a),this.reportSelection(a,b)},renderSelection:function(a){},reportSelection:function(a,b){this.isSelected=!0,this.triggerSelect(a,b)},triggerSelect:function(a,b){this.trigger("select",null,this.calendar.applyTimezone(a.start),this.calendar.applyTimezone(a.end),b)},unselect:function(a){this.isSelected&&(this.isSelected=!1,this.destroySelection&&this.destroySelection(),this.unrenderSelection(),this.trigger("unselect",null,a))},unrenderSelection:function(){},selectEvent:function(a){this.selectedEvent&&this.selectedEvent===a||(this.unselectEvent(),this.renderedEventSegEach(function(a){a.el.addClass("fc-selected")},a),this.selectedEvent=a)},unselectEvent:function(){this.selectedEvent&&(this.renderedEventSegEach(function(a){a.el.removeClass("fc-selected")},this.selectedEvent),this.selectedEvent=null)},isEventSelected:function(a){return this.selectedEvent&&this.selectedEvent._id===a._id},handleDocumentMousedown:function(a){ +u(a)&&this.processUnselect(a)},processUnselect:function(a){this.processRangeUnselect(a),this.processEventUnselect(a)},processRangeUnselect:function(b){var c;this.isSelected&&this.opt("unselectAuto")&&(c=this.opt("unselectCancel"),c&&a(b.target).closest(c).length||this.unselect(b))},processEventUnselect:function(b){this.selectedEvent&&(a(b.target).closest(".fc-selected").length||this.unselectEvent())},triggerDayClick:function(a,b,c){this.trigger("dayClick",b,this.calendar.applyTimezone(a.start),c)},initHiddenDays:function(){var b,c=this.opt("hiddenDays")||[],d=[],e=0;for(this.opt("weekends")===!1&&c.push(0,6),b=0;7>b;b++)(d[b]=-1!==a.inArray(b,c))||e++;if(!e)throw"invalid hiddenDays";this.isHiddenDayHash=d},isHiddenDay:function(a){return b.isMoment(a)&&(a=a.day()),this.isHiddenDayHash[a]},skipHiddenDays:function(a,b,c){var d=a.clone();for(b=b||1;this.isHiddenDayHash[(d.day()+(c?b:0)+7)%7];)d.add(b,"days");return d},computeDayRange:function(a){var b,c=a.start.clone().stripTime(),d=a.end,e=null;return d&&(e=d.clone().stripTime(),b=+d.time(),b&&b>=this.nextDayThreshold&&e.add(1,"days")),(!d||c>=e)&&(e=c.clone().add(1,"days")),{start:c,end:e}},isMultiDayEvent:function(a){var b=this.computeDayRange(a);return b.end.diff(b.start,"days")>1}}),xb=Va.Scroller=xa.extend({el:null,scrollEl:null,overflowX:null,overflowY:null,constructor:function(a){a=a||{},this.overflowX=a.overflowX||a.overflow||"auto",this.overflowY=a.overflowY||a.overflow||"auto"},render:function(){this.el=this.renderEl(),this.applyOverflow()},renderEl:function(){return this.scrollEl=a('<div class="fc-scroller"></div>')},clear:function(){this.setHeight("auto"),this.applyOverflow()},destroy:function(){this.el.remove()},applyOverflow:function(){this.scrollEl.css({"overflow-x":this.overflowX,"overflow-y":this.overflowY})},lockOverflow:function(a){var b=this.overflowX,c=this.overflowY;a=a||this.getScrollbarWidths(),"auto"===b&&(b=a.top||a.bottom||this.scrollEl[0].scrollWidth-1>this.scrollEl[0].clientWidth?"scroll":"hidden"),"auto"===c&&(c=a.left||a.right||this.scrollEl[0].scrollHeight-1>this.scrollEl[0].clientHeight?"scroll":"hidden"),this.scrollEl.css({"overflow-x":b,"overflow-y":c})},setHeight:function(a){this.scrollEl.height(a)},getScrollTop:function(){return this.scrollEl.scrollTop()},setScrollTop:function(a){this.scrollEl.scrollTop(a)},getClientWidth:function(){return this.scrollEl[0].clientWidth},getClientHeight:function(){return this.scrollEl[0].clientHeight},getScrollbarWidths:function(){return q(this.scrollEl)}}),yb=Va.Calendar=xa.extend({dirDefaults:null,langDefaults:null,overrides:null,options:null,viewSpecCache:null,view:null,header:null,loadingLevel:0,constructor:Pa,initialize:function(){},initOptions:function(a){var b,e,f,g;a=d(a),b=a.lang,e=zb[b],e||(b=yb.defaults.lang,e=zb[b]||{}),f=ba(a.isRTL,e.isRTL,yb.defaults.isRTL),g=f?yb.rtlDefaults:{},this.dirDefaults=g,this.langDefaults=e,this.overrides=a,this.options=c([yb.defaults,g,e,a]),Qa(this.options),this.viewSpecCache={}},getViewSpec:function(a){var b=this.viewSpecCache;return b[a]||(b[a]=this.buildViewSpec(a))},getUnitViewSpec:function(b){var c,d,e;if(-1!=a.inArray(b,$a))for(c=this.header.getViewsWithButtons(),a.each(Va.views,function(a){c.push(a)}),d=0;d<c.length;d++)if(e=this.getViewSpec(c[d]),e&&e.singleUnit==b)return e},buildViewSpec:function(a){for(var d,e,f,g,h=this.overrides.views||{},i=[],j=[],k=[],l=a;l;)d=Wa[l],e=h[l],l=null,"function"==typeof d&&(d={"class":d}),d&&(i.unshift(d),j.unshift(d.defaults||{}),f=f||d.duration,l=l||d.type),e&&(k.unshift(e),f=f||e.duration,l=l||e.type);return d=W(i),d.type=a,d["class"]?(f&&(f=b.duration(f),f.valueOf()&&(d.duration=f,g=O(f),1===f.as(g)&&(d.singleUnit=g,k.unshift(h[g]||{})))),d.defaults=c(j),d.overrides=c(k),this.buildViewSpecOptions(d),this.buildViewSpecButtonText(d,a),d):!1},buildViewSpecOptions:function(a){a.options=c([yb.defaults,a.defaults,this.dirDefaults,this.langDefaults,this.overrides,a.overrides]),Qa(a.options)},buildViewSpecButtonText:function(a,b){function c(c){var d=c.buttonText||{};return d[b]||(a.singleUnit?d[a.singleUnit]:null)}a.buttonTextOverride=c(this.overrides)||a.overrides.buttonText,a.buttonTextDefault=c(this.langDefaults)||c(this.dirDefaults)||a.defaults.buttonText||c(yb.defaults)||(a.duration?this.humanizeDuration(a.duration):null)||b},instantiateView:function(a){var b=this.getViewSpec(a);return new b["class"](this,a,b.options,b.duration)},isValidViewType:function(a){return Boolean(this.getViewSpec(a))},pushLoading:function(){this.loadingLevel++||this.trigger("loading",null,!0,this.view)},popLoading:function(){--this.loadingLevel||this.trigger("loading",null,!1,this.view)},buildSelectSpan:function(a,b){var c,d=this.moment(a).stripZone();return c=b?this.moment(b).stripZone():d.hasTime()?d.clone().add(this.defaultTimedEventDuration):d.clone().add(this.defaultAllDayEventDuration),{start:d,end:c}}});yb.mixin(kb),yb.defaults={titleRangeSeparator:" — ",monthYearFormat:"MMMM YYYY",defaultTimedEventDuration:"02:00:00",defaultAllDayEventDuration:{days:1},forceEventDuration:!1,nextDayThreshold:"09:00:00",defaultView:"month",aspectRatio:1.35,header:{left:"title",center:"",right:"today prev,next"},weekends:!0,weekNumbers:!1,weekNumberTitle:"W",weekNumberCalculation:"local",scrollTime:"06:00:00",lazyFetching:!0,startParam:"start",endParam:"end",timezoneParam:"timezone",timezone:!1,isRTL:!1,buttonText:{prev:"prev",next:"next",prevYear:"prev year",nextYear:"next year",year:"year",today:"today",month:"month",week:"week",day:"day"},buttonIcons:{prev:"left-single-arrow",next:"right-single-arrow",prevYear:"left-double-arrow",nextYear:"right-double-arrow"},theme:!1,themeButtonIcons:{prev:"circle-triangle-w",next:"circle-triangle-e",prevYear:"seek-prev",nextYear:"seek-next"},dragOpacity:.75,dragRevertDuration:500,dragScroll:!0,unselectAuto:!0,dropAccept:"*",eventOrder:"title",eventLimit:!1,eventLimitText:"more",eventLimitClick:"popover",dayPopoverFormat:"LL",handleWindowResize:!0,windowResizeDelay:200,longPressDelay:1e3},yb.englishDefaults={dayPopoverFormat:"dddd, MMMM D"},yb.rtlDefaults={header:{left:"next,prev today",center:"",right:"title"},buttonIcons:{prev:"right-single-arrow",next:"left-single-arrow",prevYear:"right-double-arrow",nextYear:"left-double-arrow"},themeButtonIcons:{prev:"circle-triangle-e",next:"circle-triangle-w",nextYear:"seek-prev",prevYear:"seek-next"}};var zb=Va.langs={};Va.datepickerLang=function(b,c,d){var e=zb[b]||(zb[b]={});e.isRTL=d.isRTL,e.weekNumberTitle=d.weekHeader,a.each(Ab,function(a,b){e[a]=b(d)}),a.datepicker&&(a.datepicker.regional[c]=a.datepicker.regional[b]=d,a.datepicker.regional.en=a.datepicker.regional[""],a.datepicker.setDefaults(d))},Va.lang=function(b,d){var e,f;e=zb[b]||(zb[b]={}),d&&(e=zb[b]=c([e,d])),f=Ra(b),a.each(Bb,function(a,b){null==e[a]&&(e[a]=b(f,e))}),yb.defaults.lang=b};var Ab={buttonText:function(a){return{prev:da(a.prevText),next:da(a.nextText),today:da(a.currentText)}},monthYearFormat:function(a){return a.showMonthAfterYear?"YYYY["+a.yearSuffix+"] MMMM":"MMMM YYYY["+a.yearSuffix+"]"}},Bb={dayOfMonthFormat:function(a,b){var c=a.longDateFormat("l");return c=c.replace(/^Y+[^\w\s]*|[^\w\s]*Y+$/g,""),b.isRTL?c+=" ddd":c="ddd "+c,c},mediumTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"a")},smallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"a")},extraSmallTimeFormat:function(a){return a.longDateFormat("LT").replace(":mm","(:mm)").replace(/(\Wmm)$/,"($1)").replace(/\s*a$/i,"t")},hourFormat:function(a){return a.longDateFormat("LT").replace(":mm","").replace(/(\Wmm)$/,"").replace(/\s*a$/i,"a")},noMeridiemTimeFormat:function(a){return a.longDateFormat("LT").replace(/\s*a$/i,"")}},Cb={smallDayDateFormat:function(a){return a.isRTL?"D dd":"dd D"},weekFormat:function(a){return a.isRTL?"w[ "+a.weekNumberTitle+"]":"["+a.weekNumberTitle+" ]w"},smallWeekFormat:function(a){return a.isRTL?"w["+a.weekNumberTitle+"]":"["+a.weekNumberTitle+"]w"}};Va.lang("en",yb.englishDefaults),Va.sourceNormalizers=[],Va.sourceFetchers=[];var Db={dataType:"json",cache:!1},Eb=1;yb.prototype.normalizeEvent=function(a){},yb.prototype.getPeerEvents=function(a,b){var c,d,e=this.getEventCache(),f=[];for(c=0;c<e.length;c++)d=e[c],b&&b._id===d._id||f.push(d);return f};var Fb=Va.BasicView=wb.extend({scroller:null,dayGridClass:ub,dayGrid:null,dayNumbersVisible:!1,weekNumbersVisible:!1,weekNumberWidth:null,headContainerEl:null,headRowEl:null,initialize:function(){this.dayGrid=this.instantiateDayGrid(),this.scroller=new xb({overflowX:"hidden",overflowY:"auto"})},instantiateDayGrid:function(){var a=this.dayGridClass.extend(Gb);return new a(this)},setRange:function(a){wb.prototype.setRange.call(this,a),this.dayGrid.breakOnWeeks=/year|month|week/.test(this.intervalUnit),this.dayGrid.setRange(a)},computeRange:function(a){var b=wb.prototype.computeRange.call(this,a);return/year|month/.test(b.intervalUnit)&&(b.start.startOf("week"),b.start=this.skipHiddenDays(b.start),b.end.weekday()&&(b.end.add(1,"week").startOf("week"),b.end=this.skipHiddenDays(b.end,-1,!0))),b},renderDates:function(){this.dayNumbersVisible=this.dayGrid.rowCnt>1,this.weekNumbersVisible=this.opt("weekNumbers"),this.dayGrid.numbersVisible=this.dayNumbersVisible||this.weekNumbersVisible,this.el.addClass("fc-basic-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var b=this.scroller.el.addClass("fc-day-grid-container"),c=a('<div class="fc-day-grid" />').appendTo(b);this.el.find(".fc-body > tr > td").append(b),this.dayGrid.setElement(c),this.dayGrid.renderDates(this.hasRigidRows())},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.dayGrid.renderHeadHtml()),this.headRowEl=this.headContainerEl.find(".fc-row")},unrenderDates:function(){this.dayGrid.unrenderDates(),this.dayGrid.removeElement(),this.scroller.destroy()},renderBusinessHours:function(){this.dayGrid.renderBusinessHours()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'"></td></tr></tbody></table>'},weekNumberStyleAttr:function(){return null!==this.weekNumberWidth?'style="width:'+this.weekNumberWidth+'px"':""},hasRigidRows:function(){var a=this.opt("eventLimit");return a&&"number"!=typeof a},updateWidth:function(){this.weekNumbersVisible&&(this.weekNumberWidth=k(this.el.find(".fc-week-number")))},setHeight:function(a,b){var c,d,g=this.opt("eventLimit");this.scroller.clear(),f(this.headRowEl),this.dayGrid.removeSegPopover(),g&&"number"==typeof g&&this.dayGrid.limitRows(g),c=this.computeScrollerHeight(a),this.setGridHeight(c,b),g&&"number"!=typeof g&&this.dayGrid.limitRows(g),b||(this.scroller.setHeight(c),d=this.scroller.getScrollbarWidths(),(d.left||d.right)&&(e(this.headRowEl,d),c=this.computeScrollerHeight(a),this.scroller.setHeight(c)),this.scroller.lockOverflow(d))},computeScrollerHeight:function(a){return a-l(this.el,this.scroller.el)},setGridHeight:function(a,b){b?j(this.dayGrid.rowEls):i(this.dayGrid.rowEls,a,!0)},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(a){this.scroller.setScrollTop(a)},prepareHits:function(){this.dayGrid.prepareHits()},releaseHits:function(){this.dayGrid.releaseHits()},queryHit:function(a,b){return this.dayGrid.queryHit(a,b)},getHitSpan:function(a){return this.dayGrid.getHitSpan(a)},getHitEl:function(a){return this.dayGrid.getHitEl(a)},renderEvents:function(a){this.dayGrid.renderEvents(a),this.updateHeight()},getEventSegs:function(){return this.dayGrid.getEventSegs()},unrenderEvents:function(){this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return this.dayGrid.renderDrag(a,b)},unrenderDrag:function(){this.dayGrid.unrenderDrag()},renderSelection:function(a){this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.dayGrid.unrenderSelection()}}),Gb={renderHeadIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<th class="fc-week-number '+a.widgetHeaderClass+'" '+a.weekNumberStyleAttr()+"><span>"+ca(a.opt("weekNumberTitle"))+"</span></th>":""},renderNumberIntroHtml:function(a){var b=this.view;return b.weekNumbersVisible?'<td class="fc-week-number" '+b.weekNumberStyleAttr()+"><span>"+this.getCellDate(a,0).format("w")+"</span></td>":""},renderBgIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number '+a.widgetContentClass+'" '+a.weekNumberStyleAttr()+"></td>":""},renderIntroHtml:function(){var a=this.view;return a.weekNumbersVisible?'<td class="fc-week-number" '+a.weekNumberStyleAttr()+"></td>":""}},Hb=Va.MonthView=Fb.extend({computeRange:function(a){var b,c=Fb.prototype.computeRange.call(this,a);return this.isFixedWeeks()&&(b=Math.ceil(c.end.diff(c.start,"weeks",!0)),c.end.add(6-b,"weeks")),c},setGridHeight:function(a,b){b=b||"variable"===this.opt("weekMode"),b&&(a*=this.rowCnt/6),i(this.dayGrid.rowEls,a,!b)},isFixedWeeks:function(){var a=this.opt("weekMode");return a?"fixed"===a:this.opt("fixedWeekCount")}});Wa.basic={"class":Fb},Wa.basicDay={type:"basic",duration:{days:1}},Wa.basicWeek={type:"basic",duration:{weeks:1}},Wa.month={"class":Hb,duration:{months:1},defaults:{fixedWeekCount:!0}};var Ib=Va.AgendaView=wb.extend({scroller:null,timeGridClass:vb,timeGrid:null,dayGridClass:ub,dayGrid:null,axisWidth:null,headContainerEl:null,noScrollRowEls:null,bottomRuleEl:null,initialize:function(){this.timeGrid=this.instantiateTimeGrid(),this.opt("allDaySlot")&&(this.dayGrid=this.instantiateDayGrid()),this.scroller=new xb({overflowX:"hidden",overflowY:"auto"})},instantiateTimeGrid:function(){var a=this.timeGridClass.extend(Jb);return new a(this)},instantiateDayGrid:function(){var a=this.dayGridClass.extend(Kb);return new a(this)},setRange:function(a){wb.prototype.setRange.call(this,a),this.timeGrid.setRange(a),this.dayGrid&&this.dayGrid.setRange(a)},renderDates:function(){this.el.addClass("fc-agenda-view").html(this.renderSkeletonHtml()),this.renderHead(),this.scroller.render();var b=this.scroller.el.addClass("fc-time-grid-container"),c=a('<div class="fc-time-grid" />').appendTo(b);this.el.find(".fc-body > tr > td").append(b),this.timeGrid.setElement(c),this.timeGrid.renderDates(),this.bottomRuleEl=a('<hr class="fc-divider '+this.widgetHeaderClass+'"/>').appendTo(this.timeGrid.el),this.dayGrid&&(this.dayGrid.setElement(this.el.find(".fc-day-grid")),this.dayGrid.renderDates(),this.dayGrid.bottomCoordPadding=this.dayGrid.el.next("hr").outerHeight()),this.noScrollRowEls=this.el.find(".fc-row:not(.fc-scroller *)")},renderHead:function(){this.headContainerEl=this.el.find(".fc-head-container").html(this.timeGrid.renderHeadHtml())},unrenderDates:function(){this.timeGrid.unrenderDates(),this.timeGrid.removeElement(),this.dayGrid&&(this.dayGrid.unrenderDates(),this.dayGrid.removeElement()),this.scroller.destroy()},renderSkeletonHtml:function(){return'<table><thead class="fc-head"><tr><td class="fc-head-container '+this.widgetHeaderClass+'"></td></tr></thead><tbody class="fc-body"><tr><td class="'+this.widgetContentClass+'">'+(this.dayGrid?'<div class="fc-day-grid"/><hr class="fc-divider '+this.widgetHeaderClass+'"/>':"")+"</td></tr></tbody></table>"},axisStyleAttr:function(){return null!==this.axisWidth?'style="width:'+this.axisWidth+'px"':""},renderBusinessHours:function(){this.timeGrid.renderBusinessHours(),this.dayGrid&&this.dayGrid.renderBusinessHours()},unrenderBusinessHours:function(){this.timeGrid.unrenderBusinessHours(),this.dayGrid&&this.dayGrid.unrenderBusinessHours()},getNowIndicatorUnit:function(){return this.timeGrid.getNowIndicatorUnit()},renderNowIndicator:function(a){this.timeGrid.renderNowIndicator(a)},unrenderNowIndicator:function(){this.timeGrid.unrenderNowIndicator()},updateSize:function(a){this.timeGrid.updateSize(a),wb.prototype.updateSize.call(this,a)},updateWidth:function(){this.axisWidth=k(this.el.find(".fc-axis"))},setHeight:function(a,b){var c,d,g;this.bottomRuleEl.hide(),this.scroller.clear(),f(this.noScrollRowEls),this.dayGrid&&(this.dayGrid.removeSegPopover(),c=this.opt("eventLimit"),c&&"number"!=typeof c&&(c=Lb),c&&this.dayGrid.limitRows(c)),b||(d=this.computeScrollerHeight(a),this.scroller.setHeight(d),g=this.scroller.getScrollbarWidths(),(g.left||g.right)&&(e(this.noScrollRowEls,g),d=this.computeScrollerHeight(a),this.scroller.setHeight(d)),this.scroller.lockOverflow(g),this.timeGrid.getTotalSlatHeight()<d&&this.bottomRuleEl.show())},computeScrollerHeight:function(a){return a-l(this.el,this.scroller.el)},computeInitialScroll:function(){var a=b.duration(this.opt("scrollTime")),c=this.timeGrid.computeTimeTop(a);return c=Math.ceil(c),c&&c++,c},queryScroll:function(){return this.scroller.getScrollTop()},setScroll:function(a){this.scroller.setScrollTop(a)},prepareHits:function(){this.timeGrid.prepareHits(),this.dayGrid&&this.dayGrid.prepareHits()},releaseHits:function(){this.timeGrid.releaseHits(),this.dayGrid&&this.dayGrid.releaseHits()},queryHit:function(a,b){var c=this.timeGrid.queryHit(a,b);return!c&&this.dayGrid&&(c=this.dayGrid.queryHit(a,b)),c},getHitSpan:function(a){return a.component.getHitSpan(a)},getHitEl:function(a){return a.component.getHitEl(a)},renderEvents:function(a){var b,c,d=[],e=[],f=[];for(c=0;c<a.length;c++)a[c].allDay?d.push(a[c]):e.push(a[c]);b=this.timeGrid.renderEvents(e),this.dayGrid&&(f=this.dayGrid.renderEvents(d)),this.updateHeight()},getEventSegs:function(){return this.timeGrid.getEventSegs().concat(this.dayGrid?this.dayGrid.getEventSegs():[])},unrenderEvents:function(){this.timeGrid.unrenderEvents(),this.dayGrid&&this.dayGrid.unrenderEvents()},renderDrag:function(a,b){return a.start.hasTime()?this.timeGrid.renderDrag(a,b):this.dayGrid?this.dayGrid.renderDrag(a,b):void 0},unrenderDrag:function(){this.timeGrid.unrenderDrag(),this.dayGrid&&this.dayGrid.unrenderDrag()},renderSelection:function(a){a.start.hasTime()||a.end.hasTime()?this.timeGrid.renderSelection(a):this.dayGrid&&this.dayGrid.renderSelection(a)},unrenderSelection:function(){this.timeGrid.unrenderSelection(),this.dayGrid&&this.dayGrid.unrenderSelection()}}),Jb={renderHeadIntroHtml:function(){var a,b=this.view;return b.opt("weekNumbers")?(a=this.start.format(b.opt("smallWeekFormat")),'<th class="fc-axis fc-week-number '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"><span>"+ca(a)+"</span></th>"):'<th class="fc-axis '+b.widgetHeaderClass+'" '+b.axisStyleAttr()+"></th>"},renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Kb={renderBgIntroHtml:function(){var a=this.view;return'<td class="fc-axis '+a.widgetContentClass+'" '+a.axisStyleAttr()+"><span>"+(a.opt("allDayHtml")||ca(a.opt("allDayText")))+"</span></td>"},renderIntroHtml:function(){var a=this.view;return'<td class="fc-axis" '+a.axisStyleAttr()+"></td>"}},Lb=5,Mb=[{hours:1},{minutes:30},{minutes:15},{seconds:30},{seconds:15}];return Wa.agenda={"class":Ib,defaults:{allDaySlot:!0,allDayText:"all-day",slotDuration:"00:30:00",minTime:"00:00:00",maxTime:"24:00:00",slotEventOverlap:!0}},Wa.agendaDay={type:"agenda",duration:{days:1}},Wa.agendaWeek={type:"agenda",duration:{weeks:1}},Va});
\ No newline at end of file diff --git a/library/fullcalendar/fullcalendar.print.css b/library/fullcalendar/fullcalendar.print.css index e399f614a..11b823f74 100644 --- a/library/fullcalendar/fullcalendar.print.css +++ b/library/fullcalendar/fullcalendar.print.css @@ -1,7 +1,7 @@ /*! - * FullCalendar v2.6.1 Print Stylesheet + * FullCalendar v2.7.3 Print Stylesheet * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw + * (c) 2016 Adam Shaw */ /* diff --git a/library/fullcalendar/gcal.js b/library/fullcalendar/gcal.js index 98174ecb0..58b85c195 100644 --- a/library/fullcalendar/gcal.js +++ b/library/fullcalendar/gcal.js @@ -1,7 +1,7 @@ /*! - * FullCalendar v2.6.1 Google Calendar Plugin + * FullCalendar v2.7.3 Google Calendar Plugin * Docs & License: http://fullcalendar.io/ - * (c) 2015 Adam Shaw + * (c) 2016 Adam Shaw */ (function(factory) { @@ -136,10 +136,10 @@ function transformOptions(sourceOptions, start, end, timezone, calendar) { } else if (data.items) { $.each(data.items, function(i, entry) { - var url = entry.htmlLink; + var url = entry.htmlLink || null; // make the URLs for each event show times in the correct timezone - if (timezoneArg) { + if (timezoneArg && url !== null) { url = injectQsComponent(url, 'ctz=' + timezoneArg); } diff --git a/library/fullcalendar/lang-all.js b/library/fullcalendar/lang-all.js index b38d942f6..7d7e25192 100644 --- a/library/fullcalendar/lang-all.js +++ b/library/fullcalendar/lang-all.js @@ -1,4 +1,4 @@ -!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return a}(),a.fullCalendar.datepickerLang("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=(b.defineLocale||b.lang).call(b,"ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},e={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},f=function(a){return function(b,c,f,g){var h=d(b),i=e[a][d(b)];return 2===h&&(i=i[c?0:1]),i.replace(/%d/i,b)}},g=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],h=(b.defineLocale||b.lang).call(b,"ar",{months:g,monthsShort:g,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return h}(),a.fullCalendar.datepickerLang("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["كانون الثاني","شباط","آذار","نيسان","مايو","حزيران","تموز","آب","أيلول","تشرين الأول","تشرين الثاني","كانون الأول"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(a){return"+още "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return("w"===b||"W"===b)&&(c="a"),a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més"})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a&&1!==~~(a/10)}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(a(b)?"minuty":"minut"):f+"minutami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodin"):f+"hodinami";case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(a(b)?"dny":"dní"):f+"dny";case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(a(b)?"měsíce":"měsíců"):f+"měsíci";case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(a(b)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),f=(b.defineLocale||b.lang).call(b,"cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(e),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(d),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(a){return"+další: "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere"})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}var c=(b.defineLocale||b.lang).call(b,"el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(b,c){var d=this._calendarEl[b],e=c&&c.hours();return a(d)&&(d=d.apply(c)),d.replace("{}",e%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sept_Oct_Nov_Dec".split("_"),monthsParse:[/^jan/i,/^feb/i,/^mar/i,/^apr/i,/^may/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^oct/i,/^nov/i,/^dec/i],longMonthsParse:[/^january$/i,/^february$/i,/^march$/i,/^april$/i,/^may$/i,/^june$/i,/^july$/i,/^august$/i,/^september$/i,/^october$/i,/^november$/i,/^december$/i],shortMonthsParse:[/^jan$/i,/^feb$/i,/^mar$/i,/^apr$/i,/^may$/i,/^jun$/i,/^jul$/i,/^aug/i,/^sept?$/i,/^oct$/i,/^nov$/i,/^dec$/i],weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-au")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sept_Oct_Nov_Dec".split("_"),monthsParse:[/^jan/i,/^feb/i,/^mar/i,/^apr/i,/^may/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^oct/i,/^nov/i,/^dec/i],longMonthsParse:[/^january$/i,/^february$/i,/^march$/i,/^april$/i,/^may$/i,/^june$/i,/^july$/i,/^august$/i,/^september$/i,/^october$/i,/^november$/i,/^december$/i],shortMonthsParse:[/^jan$/i,/^feb$/i,/^mar$/i,/^apr$/i,/^may$/i,/^jun$/i,/^jul$/i,/^aug/i,/^sept?$/i,/^oct$/i,/^nov$/i,/^dec$/i],weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"D MMMM, YYYY",LLL:"D MMMM, YYYY h:mm A",LLLL:"dddd, D MMMM, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}});return a}(),a.fullCalendar.lang("en-ca")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sept_Oct_Nov_Dec".split("_"),monthsParse:[/^jan/i,/^feb/i,/^mar/i,/^apr/i,/^may/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^oct/i,/^nov/i,/^dec/i],longMonthsParse:[/^january$/i,/^february$/i,/^march$/i,/^april$/i,/^may$/i,/^june$/i,/^july$/i,/^august$/i,/^september$/i,/^october$/i,/^november$/i,/^december$/i],shortMonthsParse:[/^jan$/i,/^feb$/i,/^mar$/i,/^apr$/i,/^may$/i,/^jun$/i,/^jul$/i,/^aug/i,/^sept?$/i,/^oct$/i,/^nov$/i,/^dec$/i],weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-gb")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),monthsParse:[/^jan/i,/^feb/i,/^mar/i,/^apr/i,/^may/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^oct/i,/^nov/i,/^dec/i],longMonthsParse:[/^january$/i,/^february$/i,/^march$/i,/^april$/i,/^may$/i,/^june$/i,/^july$/i,/^august$/i,/^september$/i,/^october$/i,/^november$/i,/^december$/i],shortMonthsParse:[/^jan$/i,/^feb$/i,/^mar$/i,/^apr$/i,/^may$/i,/^jun$/i,/^jul$/i,/^aug/i,/^sept?$/i,/^oct$/i,/^nov$/i,/^dec$/i],weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.lang("en-ie")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sept_Oct_Nov_Dec".split("_"),monthsParse:[/^jan/i,/^feb/i,/^mar/i,/^apr/i,/^may/i,/^jun/i,/^jul/i,/^aug/i,/^sep/i,/^oct/i,/^nov/i,/^dec/i], -longMonthsParse:[/^january$/i,/^february$/i,/^march$/i,/^april$/i,/^may$/i,/^june$/i,/^july$/i,/^august$/i,/^september$/i,/^october$/i,/^november$/i,/^december$/i],shortMonthsParse:[/^jan$/i,/^feb$/i,/^mar$/i,/^apr$/i,/^may$/i,/^jun$/i,/^jul$/i,/^aug/i,/^sept?$/i,/^oct$/i,/^nov$/i,/^dec$/i],weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-nz")}(),function(){!function(){"use strict";var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=(b.defineLocale||b.lang).call(b,"es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más"})}(),function(){!function(){"use strict";var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},d=(b.defineLocale||b.lang).call(b,"fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(a){return"بیش از "+a}})}(),function(){!function(){"use strict";function a(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]],f=(b.defineLocale||b.lang).call(b,"fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}});return a}(),a.fullCalendar.datepickerLang("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ca",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ch",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}}});return a}(),a.fullCalendar.datepickerLang("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("he",{defaultButtonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},weekNumberTitle:"שבוע",allDayText:"כל היום",eventLimitText:"אחר"})}(),function(){!function(){"use strict";var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=(b.defineLocale||b.lang).call(b,"hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}});return d}(),a.fullCalendar.datepickerLang("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(a){return"+अधिक "+a}})}(),function(){!function(){"use strict";function a(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=(b.defineLocale||b.lang).call(b,"hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(a){return"+ još "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),e=(b.defineLocale||b.lang).call(b,"hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih"})}(),function(){!function(){"use strict";function a(a){return a%100===11?!0:a%10===1?!1:!0}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return a(b)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return a(b)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return a(b)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return a(b)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return a(b)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}var d=(b.defineLocale||b.lang).call(b,"is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(a){return"+altri "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(a){return"他 "+a+" 件"}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT", -sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇초",ss:"%d초",m:"일분",mm:"%d분",h:"한시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한달",MM:"%d달",y:"일년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}});return a}(),a.fullCalendar.datepickerLang("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),a.fullCalendar.lang("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개"})}(),function(){!function(){"use strict";function a(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return g[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}var g={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes",h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h=(b.defineLocale||b.lang).call(b,"lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_")},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});return h}(),a.fullCalendar.datepickerLang("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau"})}(),function(){!function(){"use strict";function a(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function c(b,c,d){return b+" "+a(f[d],b,c)}function d(b,c,d){return a(f[d],b,c)}function e(a,b){return b?"dažas sekundes":"dažām sekundēm"}var f={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},g=(b.defineLocale||b.lang).call(b,"lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:e,m:d,mm:c,h:d,hh:c,d:d,dd:c,M:d,MM:c,y:d,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g}(),a.fullCalendar.datepickerLang("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(a){return"+vēl "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"for %s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til"})}(),function(){!function(){"use strict";var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),d=(b.defineLocale||b.lang).call(b,"nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra"})}(),function(){!function(){"use strict";function a(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(b,c,d){var e=b+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(a(b)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(a(b)?"godziny":"godzin");case"MM":return e+(a(b)?"miesiące":"miesięcy");case"yy":return e+(a(b)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),f=(b.defineLocale||b.lang).call(b,"pl",{months:function(a,b){return""===b?"("+e[a.month()]+"|"+d[a.month()]+")":/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return a}(),a.fullCalendar.datepickerLang("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(a){return"mais +"+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais"})}(),function(){!function(){"use strict";function a(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}var c=(b.defineLocale||b.lang).call(b,"ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(a){return"+alte "+a}})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":b+" "+a(e[d],+b)}var d=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[й|я]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],e=(b.defineLocale||b.lang).call(b,"ru",{months:{format:"Января_Февраля_Марта_Апреля_Мая_Июня_Июля_Августа_Сентября_Октября_Ноября_Декабря".split("_"),standalone:"Январь_Февраль_Март_Апрель_Май_Июнь_Июль_Август_Сентябрь_Октябрь_Ноябрь_Декабрь".split("_")},monthsShort:{format:"янв_фев_мар_апр_мая_июня_июля_авг_сен_окт_ноя_дек".split("_"),standalone:"янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек".split("_")},weekdays:{standalone:"Воскресенье_Понедельник_Вторник_Среда_Четверг_Пятница_Суббота".split("_"),format:"Воскресенье_Понедельник_Вторник_Среду_Четверг_Пятницу_Субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"Вс_Пн_Вт_Ср_Чт_Пт_Сб".split("_"),weekdaysMin:"Вс_Пн_Вт_Ср_Чт_Пт_Сб".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(a){return"+ ещё "+a}})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(a(b)?"minúty":"minút"):f+"minútami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodín"):f+"hodinami";case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(a(b)?"dni":"dní"):f+"dňami";case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(a(b)?"mesiace":"mesiacov"):f+"mesiacmi";case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(a(b)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),f=(b.defineLocale||b.lang).call(b,"sk",{months:d,monthsShort:e,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(a){return"+ďalšie: "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}var c=(b.defineLocale||b.lang).call(b,"sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več"})}(),function(){!function(){"use strict";var a={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr-cyrl",{months:["јануар","фебруар","март","април","мај","јун","јул","август","септембар","октобар","новембар","децембар"],monthsShort:["јан.","феб.","мар.","апр.","мај","јун","јул","авг.","сеп.","окт.","нов.","дец."],weekdays:["недеља","понедељак","уторак","среда","четвртак","петак","субота"],weekdaysShort:["нед.","пон.","уто.","сре.","чет.","пет.","суб."],weekdaysMin:["не","по","ут","ср","че","пе","су"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr",{months:["januar","februar","mart","april","maj","jun","jul","avgust","septembar","oktobar","novembar","decembar"],monthsShort:["jan.","feb.","mar.","apr.","maj","jun","jul","avg.","sep.","okt.","nov.","dec."],weekdays:["nedelja","ponedeljak","utorak","sreda","četvrtak","petak","subota"],weekdaysShort:["ned.","pon.","uto.","sre.","čet.","pet.","sub."],weekdaysMin:["ne","po","ut","sr","če","pe","su"],longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"], -dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return a}(),a.fullCalendar.datepickerLang("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม"})}(),function(){!function(){"use strict";var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},c=(b.defineLocale||b.lang).call(b,"tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(b){if(0===b)return b+"'ıncı";var c=b%10,d=b%100-c,e=b>=100?100:null;return b+(a[c]||a[d]||a[e])},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla"})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:c?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":b+" "+a(e[d],+b)}function d(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function e(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var f=(b.defineLocale||b.lang).call(b,"uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:d,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:e("[Сьогодні "),nextDay:e("[Завтра "),lastDay:e("[Вчора "),nextWeek:e("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[Минулої] dddd [").call(this);case 1:case 2:case 4:return e("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});return f}(),a.fullCalendar.datepickerLang("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(a){return"+ще "+a+"..."}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(a){return"+ thêm "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,c;return a=b().startOf("week"),c=this.unix()-a.unix()>=604800?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var a,c;return a=b().startOf("week"),c=this.unix()<a.unix()?"[上]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(a){return"另外 "+a+" 个"}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"一分鐘",mm:"%d分鐘",h:"一小時",hh:"%d小時",d:"一天",dd:"%d天",M:"一個月",MM:"%d個月",y:"一年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多"})}(),(b.locale||b.lang).call(b,"en"),a.fullCalendar.lang("en"),a.datepicker&&a.datepicker.setDefaults(a.datepicker.regional[""])});
\ No newline at end of file +!function(a){"function"==typeof define&&define.amd?define(["jquery","moment"],a):"object"==typeof exports?module.exports=a(require("jquery"),require("moment")):a(jQuery,moment)}(function(a,b){!function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-ma",{months:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر".split("_"),weekdays:"الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:6,doy:12}});return a}(),a.fullCalendar.datepickerLang("ar-ma","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-ma",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=(b.defineLocale||b.lang).call(b,"ar-sa",{months:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},preparse:function(a){return a.replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("ar-sa","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-sa",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ar-tn",{months:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),monthsShort:"جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر".split("_"),weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[اليوم على الساعة] LT",nextDay:"[غدا على الساعة] LT",nextWeek:"dddd [على الساعة] LT",lastDay:"[أمس على الساعة] LT",lastWeek:"dddd [على الساعة] LT",sameElse:"L"},relativeTime:{future:"في %s",past:"منذ %s",s:"ثوان",m:"دقيقة",mm:"%d دقائق",h:"ساعة",hh:"%d ساعات",d:"يوم",dd:"%d أيام",M:"شهر",MM:"%d أشهر",y:"سنة",yy:"%d سنوات"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ar-tn","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar-tn",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a={1:"١",2:"٢",3:"٣",4:"٤",5:"٥",6:"٦",7:"٧",8:"٨",9:"٩",0:"٠"},c={"١":"1","٢":"2","٣":"3","٤":"4","٥":"5","٦":"6","٧":"7","٨":"8","٩":"9","٠":"0"},d=function(a){return 0===a?0:1===a?1:2===a?2:a%100>=3&&10>=a%100?3:a%100>=11?4:5},e={s:["أقل من ثانية","ثانية واحدة",["ثانيتان","ثانيتين"],"%d ثوان","%d ثانية","%d ثانية"],m:["أقل من دقيقة","دقيقة واحدة",["دقيقتان","دقيقتين"],"%d دقائق","%d دقيقة","%d دقيقة"],h:["أقل من ساعة","ساعة واحدة",["ساعتان","ساعتين"],"%d ساعات","%d ساعة","%d ساعة"],d:["أقل من يوم","يوم واحد",["يومان","يومين"],"%d أيام","%d يومًا","%d يوم"],M:["أقل من شهر","شهر واحد",["شهران","شهرين"],"%d أشهر","%d شهرا","%d شهر"],y:["أقل من عام","عام واحد",["عامان","عامين"],"%d أعوام","%d عامًا","%d عام"]},f=function(a){return function(b,c,f,g){var h=d(b),i=e[a][d(b)];return 2===h&&(i=i[c?0:1]),i.replace(/%d/i,b)}},g=["كانون الثاني يناير","شباط فبراير","آذار مارس","نيسان أبريل","أيار مايو","حزيران يونيو","تموز يوليو","آب أغسطس","أيلول سبتمبر","تشرين الأول أكتوبر","تشرين الثاني نوفمبر","كانون الأول ديسمبر"],h=(b.defineLocale||b.lang).call(b,"ar",{months:g,monthsShort:g,weekdays:"الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت".split("_"),weekdaysShort:"أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت".split("_"),weekdaysMin:"ح_ن_ث_ر_خ_ج_س".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/ص|م/,isPM:function(a){return"م"===a},meridiem:function(a,b,c){return 12>a?"ص":"م"},calendar:{sameDay:"[اليوم عند الساعة] LT",nextDay:"[غدًا عند الساعة] LT",nextWeek:"dddd [عند الساعة] LT",lastDay:"[أمس عند الساعة] LT",lastWeek:"dddd [عند الساعة] LT",sameElse:"L"},relativeTime:{future:"بعد %s",past:"منذ %s",s:f("s"),m:f("m"),mm:f("m"),h:f("h"),hh:f("h"),d:f("d"),dd:f("d"),M:f("M"),MM:f("M"),y:f("y"),yy:f("y")},preparse:function(a){return a.replace(/\u200f/g,"").replace(/[١٢٣٤٥٦٧٨٩٠]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},week:{dow:6,doy:12}});return h}(),a.fullCalendar.datepickerLang("ar","ar",{closeText:"إغلاق",prevText:"<السابق",nextText:"التالي>",currentText:"اليوم",monthNames:["يناير","فبراير","مارس","أبريل","مايو","يونيو","يوليو","أغسطس","سبتمبر","أكتوبر","نوفمبر","ديسمبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["الأحد","الاثنين","الثلاثاء","الأربعاء","الخميس","الجمعة","السبت"],dayNamesShort:["أحد","اثنين","ثلاثاء","أربعاء","خميس","جمعة","سبت"],dayNamesMin:["ح","ن","ث","ر","خ","ج","س"],weekHeader:"أسبوع",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ar",{buttonText:{month:"شهر",week:"أسبوع",day:"يوم",list:"أجندة"},allDayText:"اليوم كله",eventLimitText:"أخرى"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"bg",{months:"януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември".split("_"),monthsShort:"янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек".split("_"),weekdays:"неделя_понеделник_вторник_сряда_четвъртък_петък_събота".split("_"),weekdaysShort:"нед_пон_вто_сря_чет_пет_съб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[Днес в] LT",nextDay:"[Утре в] LT",nextWeek:"dddd [в] LT",lastDay:"[Вчера в] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[В изминалата] dddd [в] LT";case 1:case 2:case 4:case 5:return"[В изминалия] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"след %s",past:"преди %s",s:"няколко секунди",m:"минута",mm:"%d минути",h:"час",hh:"%d часа",d:"ден",dd:"%d дни",M:"месец",MM:"%d месеца",y:"година",yy:"%d години"},ordinalParse:/\d{1,2}-(ев|ен|ти|ви|ри|ми)/,ordinal:function(a){var b=a%10,c=a%100;return 0===a?a+"-ев":0===c?a+"-ен":c>10&&20>c?a+"-ти":1===b?a+"-ви":2===b?a+"-ри":7===b||8===b?a+"-ми":a+"-ти"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("bg","bg",{closeText:"затвори",prevText:"<назад",nextText:"напред>",nextBigText:">>",currentText:"днес",monthNames:["Януари","Февруари","Март","Април","Май","Юни","Юли","Август","Септември","Октомври","Ноември","Декември"],monthNamesShort:["Яну","Фев","Мар","Апр","Май","Юни","Юли","Авг","Сеп","Окт","Нов","Дек"],dayNames:["Неделя","Понеделник","Вторник","Сряда","Четвъртък","Петък","Събота"],dayNamesShort:["Нед","Пон","Вто","Сря","Чет","Пет","Съб"],dayNamesMin:["Не","По","Вт","Ср","Че","Пе","Съ"],weekHeader:"Wk",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("bg",{buttonText:{month:"Месец",week:"Седмица",day:"Ден",list:"График"},allDayText:"Цял ден",eventLimitText:function(a){return"+още "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ca",{months:"gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),monthsShort:"gen._febr._mar._abr._mai._jun._jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"Dg_Dl_Dt_Dc_Dj_Dv_Ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd D MMMM YYYY H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[demà a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"fa %s",s:"uns segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},ordinalParse:/\d{1,2}(r|n|t|è|a)/,ordinal:function(a,b){var c=1===a?"r":2===a?"n":3===a?"r":4===a?"t":"è";return"w"!==b&&"W"!==b||(c="a"),a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("ca","ca",{closeText:"Tanca",prevText:"Anterior",nextText:"Següent",currentText:"Avui",monthNames:["gener","febrer","març","abril","maig","juny","juliol","agost","setembre","octubre","novembre","desembre"],monthNamesShort:["gen","feb","març","abr","maig","juny","jul","ag","set","oct","nov","des"],dayNames:["diumenge","dilluns","dimarts","dimecres","dijous","divendres","dissabte"],dayNamesShort:["dg","dl","dt","dc","dj","dv","ds"],dayNamesMin:["dg","dl","dt","dc","dj","dv","ds"],weekHeader:"Set",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ca",{buttonText:{month:"Mes",week:"Setmana",day:"Dia",list:"Agenda"},allDayText:"Tot el dia",eventLimitText:"més"})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a&&1!==~~(a/10)}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekund":"pár sekundami";case"m":return c?"minuta":e?"minutu":"minutou";case"mm":return c||e?f+(a(b)?"minuty":"minut"):f+"minutami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodin"):f+"hodinami";case"d":return c||e?"den":"dnem";case"dd":return c||e?f+(a(b)?"dny":"dní"):f+"dny";case"M":return c||e?"měsíc":"měsícem";case"MM":return c||e?f+(a(b)?"měsíce":"měsíců"):f+"měsíci";case"y":return c||e?"rok":"rokem";case"yy":return c||e?f+(a(b)?"roky":"let"):f+"lety"}}var d="leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec".split("_"),e="led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro".split("_"),f=(b.defineLocale||b.lang).call(b,"cs",{months:d,monthsShort:e,monthsParse:function(a,b){var c,d=[];for(c=0;12>c;c++)d[c]=new RegExp("^"+a[c]+"$|^"+b[c]+"$","i");return d}(d,e),shortMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(e),longMonthsParse:function(a){var b,c=[];for(b=0;12>b;b++)c[b]=new RegExp("^"+a[b]+"$","i");return c}(d),weekdays:"neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota".split("_"),weekdaysShort:"ne_po_út_st_čt_pá_so".split("_"),weekdaysMin:"ne_po_út_st_čt_pá_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes v] LT",nextDay:"[zítra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v neděli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve středu v] LT";case 4:return"[ve čtvrtek v] LT";case 5:return"[v pátek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[včera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou neděli v] LT";case 1:case 2:return"[minulé] dddd [v] LT";case 3:return"[minulou středu v] LT";case 4:case 5:return"[minulý] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"před %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("cs","cs",{closeText:"Zavřít",prevText:"<Dříve",nextText:"Později>",currentText:"Nyní",monthNames:["leden","únor","březen","duben","květen","červen","červenec","srpen","září","říjen","listopad","prosinec"],monthNamesShort:["led","úno","bře","dub","kvě","čer","čvc","srp","zář","říj","lis","pro"],dayNames:["neděle","pondělí","úterý","středa","čtvrtek","pátek","sobota"],dayNamesShort:["ne","po","út","st","čt","pá","so"],dayNamesMin:["ne","po","út","st","čt","pá","so"],weekHeader:"Týd",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("cs",{buttonText:{month:"Měsíc",week:"Týden",day:"Den",list:"Agenda"},allDayText:"Celý den",eventLimitText:function(a){return"+další: "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"søn_man_tir_ons_tor_fre_lør".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY HH:mm"},calendar:{sameDay:"[I dag kl.] LT",nextDay:"[I morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[I går kl.] LT",lastWeek:"[sidste] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"få sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en måned",MM:"%d måneder",y:"et år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("da","da",{closeText:"Luk",prevText:"<Forrige",nextText:"Næste>",currentText:"Idag",monthNames:["Januar","Februar","Marts","April","Maj","Juni","Juli","August","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNames:["Søndag","Mandag","Tirsdag","Onsdag","Torsdag","Fredag","Lørdag"],dayNamesShort:["Søn","Man","Tir","Ons","Tor","Fre","Lør"],dayNamesMin:["Sø","Ma","Ti","On","To","Fr","Lø"],weekHeader:"Uge",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("da",{buttonText:{month:"Måned",week:"Uge",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"flere"})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de-at",{months:"Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jän._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de-at","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de-at",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[a+" Tage",a+" Tagen"],M:["ein Monat","einem Monat"],MM:[a+" Monate",a+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[a+" Jahre",a+" Jahren"]};return b?e[c][0]:e[c][1]}var c=(b.defineLocale||b.lang).call(b,"de",{months:"Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",m:a,mm:"%d Minuten",h:a,hh:"%d Stunden",d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("de","de",{closeText:"Schließen",prevText:"<Zurück",nextText:"Vor>",currentText:"Heute",monthNames:["Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember"],monthNamesShort:["Jan","Feb","Mär","Apr","Mai","Jun","Jul","Aug","Sep","Okt","Nov","Dez"],dayNames:["Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag"],dayNamesShort:["So","Mo","Di","Mi","Do","Fr","Sa"],dayNamesMin:["So","Mo","Di","Mi","Do","Fr","Sa"],weekHeader:"KW",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("de",{buttonText:{month:"Monat",week:"Woche",day:"Tag",list:"Terminübersicht"},allDayText:"Ganztägig",eventLimitText:function(a){return"+ weitere "+a}})}(),function(){!function(){"use strict";function a(a){return a instanceof Function||"[object Function]"===Object.prototype.toString.call(a)}var c=(b.defineLocale||b.lang).call(b,"el",{monthsNominativeEl:"Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος".split("_"),monthsGenitiveEl:"Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου".split("_"),months:function(a,b){return/D/.test(b.substring(0,b.indexOf("MMMM")))?this._monthsGenitiveEl[a.month()]:this._monthsNominativeEl[a.month()]},monthsShort:"Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ".split("_"),weekdays:"Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο".split("_"),weekdaysShort:"Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ".split("_"),weekdaysMin:"Κυ_Δε_Τρ_Τε_Πε_Πα_Σα".split("_"),meridiem:function(a,b,c){return a>11?c?"μμ":"ΜΜ":c?"πμ":"ΠΜ"},isPM:function(a){return"μ"===(a+"").toLowerCase()[0]},meridiemParse:/[ΠΜ]\.?Μ?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[Σήμερα {}] LT",nextDay:"[Αύριο {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[Χθες {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[το προηγούμενο] dddd [{}] LT";default:return"[την προηγούμενη] dddd [{}] LT"}},sameElse:"L"},calendar:function(b,c){var d=this._calendarEl[b],e=c&&c.hours();return a(d)&&(d=d.apply(c)),d.replace("{}",e%12===1?"στη":"στις")},relativeTime:{future:"σε %s",past:"%s πριν",s:"λίγα δευτερόλεπτα",m:"ένα λεπτό",mm:"%d λεπτά",h:"μία ώρα",hh:"%d ώρες",d:"μία μέρα",dd:"%d μέρες",M:"ένας μήνας",MM:"%d μήνες",y:"ένας χρόνος",yy:"%d χρόνια"},ordinalParse:/\d{1,2}η/,ordinal:"%dη",week:{dow:1,doy:4}});return c}(),a.fullCalendar.datepickerLang("el","el",{closeText:"Κλείσιμο",prevText:"Προηγούμενος",nextText:"Επόμενος",currentText:"Σήμερα",monthNames:["Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"],monthNamesShort:["Ιαν","Φεβ","Μαρ","Απρ","Μαι","Ιουν","Ιουλ","Αυγ","Σεπ","Οκτ","Νοε","Δεκ"],dayNames:["Κυριακή","Δευτέρα","Τρίτη","Τετάρτη","Πέμπτη","Παρασκευή","Σάββατο"],dayNamesShort:["Κυρ","Δευ","Τρι","Τετ","Πεμ","Παρ","Σαβ"],dayNamesMin:["Κυ","Δε","Τρ","Τε","Πε","Πα","Σα"],weekHeader:"Εβδ",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("el",{buttonText:{month:"Μήνας",week:"Εβδομάδα",day:"Ημέρα",list:"Ατζέντα"},allDayText:"Ολοήμερο",eventLimitText:"περισσότερα"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-au","en-AU",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-au")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c}});return a}(),a.fullCalendar.lang("en-ca")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-gb","en-GB",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-gb")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.lang("en-ie")}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},ordinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"th":1===b?"st":2===b?"nd":3===b?"rd":"th";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("en-nz","en-NZ",{closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("en-nz")}(),function(){!function(){"use strict";var a="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),c="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),d=(b.defineLocale||b.lang).call(b,"es",{ +months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"domingo_lunes_martes_miércoles_jueves_viernes_sábado".split("_"),weekdaysShort:"dom._lun._mar._mié._jue._vie._sáb.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_sá".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[mañana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un día",dd:"%d días",M:"un mes",MM:"%d meses",y:"un año",yy:"%d años"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("es","es",{closeText:"Cerrar",prevText:"<Ant",nextText:"Sig>",currentText:"Hoy",monthNames:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],monthNamesShort:["ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],dayNames:["domingo","lunes","martes","miércoles","jueves","viernes","sábado"],dayNamesShort:["dom","lun","mar","mié","jue","vie","sáb"],dayNamesMin:["D","L","M","X","J","V","S"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("es",{buttonText:{month:"Mes",week:"Semana",day:"Día",list:"Agenda"},allDayHtml:"Todo<br/>el día",eventLimitText:"más"})}(),function(){!function(){"use strict";var a={1:"۱",2:"۲",3:"۳",4:"۴",5:"۵",6:"۶",7:"۷",8:"۸",9:"۹",0:"۰"},c={"۱":"1","۲":"2","۳":"3","۴":"4","۵":"5","۶":"6","۷":"7","۸":"8","۹":"9","۰":"0"},d=(b.defineLocale||b.lang).call(b,"fa",{months:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),monthsShort:"ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر".split("_"),weekdays:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysShort:"یکشنبه_دوشنبه_سهشنبه_چهارشنبه_پنجشنبه_جمعه_شنبه".split("_"),weekdaysMin:"ی_د_س_چ_پ_ج_ش".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/قبل از ظهر|بعد از ظهر/,isPM:function(a){return/بعد از ظهر/.test(a)},meridiem:function(a,b,c){return 12>a?"قبل از ظهر":"بعد از ظهر"},calendar:{sameDay:"[امروز ساعت] LT",nextDay:"[فردا ساعت] LT",nextWeek:"dddd [ساعت] LT",lastDay:"[دیروز ساعت] LT",lastWeek:"dddd [پیش] [ساعت] LT",sameElse:"L"},relativeTime:{future:"در %s",past:"%s پیش",s:"چندین ثانیه",m:"یک دقیقه",mm:"%d دقیقه",h:"یک ساعت",hh:"%d ساعت",d:"یک روز",dd:"%d روز",M:"یک ماه",MM:"%d ماه",y:"یک سال",yy:"%d سال"},preparse:function(a){return a.replace(/[۰-۹]/g,function(a){return c[a]}).replace(/،/g,",")},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]}).replace(/,/g,"،")},ordinalParse:/\d{1,2}م/,ordinal:"%dم",week:{dow:6,doy:12}});return d}(),a.fullCalendar.datepickerLang("fa","fa",{closeText:"بستن",prevText:"<قبلی",nextText:"بعدی>",currentText:"امروز",monthNames:["ژانویه","فوریه","مارس","آوریل","مه","ژوئن","ژوئیه","اوت","سپتامبر","اکتبر","نوامبر","دسامبر"],monthNamesShort:["1","2","3","4","5","6","7","8","9","10","11","12"],dayNames:["يکشنبه","دوشنبه","سهشنبه","چهارشنبه","پنجشنبه","جمعه","شنبه"],dayNamesShort:["ی","د","س","چ","پ","ج","ش"],dayNamesMin:["ی","د","س","چ","پ","ج","ش"],weekHeader:"هف",dateFormat:"yy/mm/dd",firstDay:6,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fa",{buttonText:{month:"ماه",week:"هفته",day:"روز",list:"برنامه"},allDayText:"تمام روز",eventLimitText:function(a){return"بیش از "+a}})}(),function(){!function(){"use strict";function a(a,b,d,e){var f="";switch(d){case"s":return e?"muutaman sekunnin":"muutama sekunti";case"m":return e?"minuutin":"minuutti";case"mm":f=e?"minuutin":"minuuttia";break;case"h":return e?"tunnin":"tunti";case"hh":f=e?"tunnin":"tuntia";break;case"d":return e?"päivän":"päivä";case"dd":f=e?"päivän":"päivää";break;case"M":return e?"kuukauden":"kuukausi";case"MM":f=e?"kuukauden":"kuukautta";break;case"y":return e?"vuoden":"vuosi";case"yy":f=e?"vuoden":"vuotta"}return f=c(a,e)+" "+f}function c(a,b){return 10>a?b?e[a]:d[a]:a}var d="nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän".split(" "),e=["nolla","yhden","kahden","kolmen","neljän","viiden","kuuden",d[7],d[8],d[9]],f=(b.defineLocale||b.lang).call(b,"fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[tänään] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s päästä",past:"%s sitten",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("fi","fi",{closeText:"Sulje",prevText:"«Edellinen",nextText:"Seuraava»",currentText:"Tänään",monthNames:["Tammikuu","Helmikuu","Maaliskuu","Huhtikuu","Toukokuu","Kesäkuu","Heinäkuu","Elokuu","Syyskuu","Lokakuu","Marraskuu","Joulukuu"],monthNamesShort:["Tammi","Helmi","Maalis","Huhti","Touko","Kesä","Heinä","Elo","Syys","Loka","Marras","Joulu"],dayNamesShort:["Su","Ma","Ti","Ke","To","Pe","La"],dayNames:["Sunnuntai","Maanantai","Tiistai","Keskiviikko","Torstai","Perjantai","Lauantai"],dayNamesMin:["Su","Ma","Ti","Ke","To","Pe","La"],weekHeader:"Vk",dateFormat:"d.m.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fi",{buttonText:{month:"Kuukausi",week:"Viikko",day:"Päivä",list:"Tapahtumat"},allDayText:"Koko päivä",eventLimitText:"lisää"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ca",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")}});return a}(),a.fullCalendar.datepickerLang("fr-ca","fr-CA",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ca",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr-ch",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|e)/,ordinal:function(a){return a+(1===a?"er":"e")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr-ch","fr-CH",{closeText:"Fermer",prevText:"<Préc",nextText:"Suiv>",currentText:"Courant",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avril","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sm",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr-ch",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"fr",{months:"janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre".split("_"),monthsShort:"janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"Di_Lu_Ma_Me_Je_Ve_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd'hui à] LT",nextDay:"[Demain à] LT",nextWeek:"dddd [à] LT",lastDay:"[Hier à] LT",lastWeek:"dddd [dernier à] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},ordinalParse:/\d{1,2}(er|)/,ordinal:function(a){return a+(1===a?"er":"")},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("fr","fr",{closeText:"Fermer",prevText:"Précédent",nextText:"Suivant",currentText:"Aujourd'hui",monthNames:["janvier","février","mars","avril","mai","juin","juillet","août","septembre","octobre","novembre","décembre"],monthNamesShort:["janv.","févr.","mars","avr.","mai","juin","juil.","août","sept.","oct.","nov.","déc."],dayNames:["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],dayNamesShort:["dim.","lun.","mar.","mer.","jeu.","ven.","sam."],dayNamesMin:["D","L","M","M","J","V","S"],weekHeader:"Sem.",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("fr",{buttonText:{month:"Mois",week:"Semaine",day:"Jour",list:"Mon planning"},allDayHtml:"Toute la<br/>journée",eventLimitText:"en plus"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"he",{months:"ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר".split("_"),monthsShort:"ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳".split("_"),weekdays:"ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת".split("_"),weekdaysShort:"א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳".split("_"),weekdaysMin:"א_ב_ג_ד_ה_ו_ש".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [ב]MMMM YYYY",LLL:"D [ב]MMMM YYYY HH:mm",LLLL:"dddd, D [ב]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[היום ב־]LT",nextDay:"[מחר ב־]LT",nextWeek:"dddd [בשעה] LT",lastDay:"[אתמול ב־]LT",lastWeek:"[ביום] dddd [האחרון בשעה] LT",sameElse:"L"},relativeTime:{future:"בעוד %s",past:"לפני %s",s:"מספר שניות",m:"דקה",mm:"%d דקות",h:"שעה",hh:function(a){return 2===a?"שעתיים":a+" שעות"},d:"יום",dd:function(a){return 2===a?"יומיים":a+" ימים"},M:"חודש",MM:function(a){return 2===a?"חודשיים":a+" חודשים"},y:"שנה",yy:function(a){return 2===a?"שנתיים":a%10===0&&10!==a?a+" שנה":a+" שנים"}},meridiemParse:/אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,isPM:function(a){return/^(אחה"צ|אחרי הצהריים|בערב)$/.test(a)},meridiem:function(a,b,c){return 5>a?"לפנות בוקר":10>a?"בבוקר":12>a?c?'לפנה"צ':"לפני הצהריים":18>a?c?'אחה"צ':"אחרי הצהריים":"בערב"}});return a}(),a.fullCalendar.datepickerLang("he","he",{closeText:"סגור",prevText:"<הקודם",nextText:"הבא>",currentText:"היום",monthNames:["ינואר","פברואר","מרץ","אפריל","מאי","יוני","יולי","אוגוסט","ספטמבר","אוקטובר","נובמבר","דצמבר"],monthNamesShort:["ינו","פבר","מרץ","אפר","מאי","יוני","יולי","אוג","ספט","אוק","נוב","דצמ"],dayNames:["ראשון","שני","שלישי","רביעי","חמישי","שישי","שבת"],dayNamesShort:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],dayNamesMin:["א'","ב'","ג'","ד'","ה'","ו'","שבת"],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!0,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("he",{defaultButtonText:{month:"חודש",week:"שבוע",day:"יום",list:"סדר יום"},weekNumberTitle:"שבוע",allDayText:"כל היום",eventLimitText:"אחר"})}(),function(){!function(){"use strict";var a={1:"१",2:"२",3:"३",4:"४",5:"५",6:"६",7:"७",8:"८",9:"९",0:"०"},c={"१":"1","२":"2","३":"3","४":"4","५":"5","६":"6","७":"7","८":"8","९":"9","०":"0"},d=(b.defineLocale||b.lang).call(b,"hi",{months:"जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर".split("_"),monthsShort:"जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.".split("_"),monthsParseExact:!0,weekdays:"रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार".split("_"),weekdaysShort:"रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि".split("_"),weekdaysMin:"र_सो_मं_बु_गु_शु_श".split("_"),longDateFormat:{LT:"A h:mm बजे",LTS:"A h:mm:ss बजे",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm बजे",LLLL:"dddd, D MMMM YYYY, A h:mm बजे"},calendar:{sameDay:"[आज] LT",nextDay:"[कल] LT",nextWeek:"dddd, LT",lastDay:"[कल] LT",lastWeek:"[पिछले] dddd, LT",sameElse:"L"},relativeTime:{future:"%s में",past:"%s पहले",s:"कुछ ही क्षण",m:"एक मिनट",mm:"%d मिनट",h:"एक घंटा",hh:"%d घंटे",d:"एक दिन",dd:"%d दिन",M:"एक महीने",MM:"%d महीने",y:"एक वर्ष",yy:"%d वर्ष"},preparse:function(a){return a.replace(/[१२३४५६७८९०]/g,function(a){return c[a]})},postformat:function(b){return b.replace(/\d/g,function(b){return a[b]})},meridiemParse:/रात|सुबह|दोपहर|शाम/,meridiemHour:function(a,b){return 12===a&&(a=0),"रात"===b?4>a?a:a+12:"सुबह"===b?a:"दोपहर"===b?a>=10?a:a+12:"शाम"===b?a+12:void 0},meridiem:function(a,b,c){return 4>a?"रात":10>a?"सुबह":17>a?"दोपहर":20>a?"शाम":"रात"},week:{dow:0,doy:6}});return d}(),a.fullCalendar.datepickerLang("hi","hi",{closeText:"बंद",prevText:"पिछला",nextText:"अगला",currentText:"आज",monthNames:["जनवरी ","फरवरी","मार्च","अप्रेल","मई","जून","जूलाई","अगस्त ","सितम्बर","अक्टूबर","नवम्बर","दिसम्बर"],monthNamesShort:["जन","फर","मार्च","अप्रेल","मई","जून","जूलाई","अग","सित","अक्ट","नव","दि"],dayNames:["रविवार","सोमवार","मंगलवार","बुधवार","गुरुवार","शुक्रवार","शनिवार"],dayNamesShort:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],dayNamesMin:["रवि","सोम","मंगल","बुध","गुरु","शुक्र","शनि"],weekHeader:"हफ्ता",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hi",{buttonText:{month:"महीना",week:"सप्ताह",day:"दिन",list:"कार्यसूची"},allDayText:"सभी दिन",eventLimitText:function(a){return"+अधिक "+a}})}(),function(){!function(){"use strict";function a(a,b,c){var d=a+" ";switch(c){case"m":return b?"jedna minuta":"jedne minute";case"mm":return d+=1===a?"minuta":2===a||3===a||4===a?"minute":"minuta";case"h":return b?"jedan sat":"jednog sata";case"hh":return d+=1===a?"sat":2===a||3===a||4===a?"sata":"sati";case"dd":return d+=1===a?"dan":"dana";case"MM":return d+=1===a?"mjesec":2===a||3===a||4===a?"mjeseca":"mjeseci";case"yy":return d+=1===a?"godina":2===a||3===a||4===a?"godine":"godina"}}var c=(b.defineLocale||b.lang).call(b,"hr",{months:{format:"siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[jučer u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[prošlu] dddd [u] LT";case 6:return"[prošle] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[prošli] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",m:a,mm:a,h:a,hh:a,d:"dan",dd:a,M:"mjesec",MM:a,y:"godinu",yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("hr","hr",{closeText:"Zatvori",prevText:"<",nextText:">",currentText:"Danas",monthNames:["Siječanj","Veljača","Ožujak","Travanj","Svibanj","Lipanj","Srpanj","Kolovoz","Rujan","Listopad","Studeni","Prosinac"],monthNamesShort:["Sij","Velj","Ožu","Tra","Svi","Lip","Srp","Kol","Ruj","Lis","Stu","Pro"],dayNames:["Nedjelja","Ponedjeljak","Utorak","Srijeda","Četvrtak","Petak","Subota"],dayNamesShort:["Ned","Pon","Uto","Sri","Čet","Pet","Sub"],dayNamesMin:["Ne","Po","Ut","Sr","Če","Pe","Su"],weekHeader:"Tje",dateFormat:"dd.mm.yy.",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("hr",{buttonText:{month:"Mjesec",week:"Tjedan",day:"Dan",list:"Raspored"},allDayText:"Cijeli dan",eventLimitText:function(a){return"+ još "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a;switch(c){case"s":return d||b?"néhány másodperc":"néhány másodperce";case"m":return"egy"+(d||b?" perc":" perce");case"mm":return e+(d||b?" perc":" perce");case"h":return"egy"+(d||b?" óra":" órája");case"hh":return e+(d||b?" óra":" órája");case"d":return"egy"+(d||b?" nap":" napja");case"dd":return e+(d||b?" nap":" napja");case"M":return"egy"+(d||b?" hónap":" hónapja");case"MM":return e+(d||b?" hónap":" hónapja");case"y":return"egy"+(d||b?" év":" éve");case"yy":return e+(d||b?" év":" éve")}return""}function c(a){return(a?"":"[múlt] ")+"["+d[this.day()]+"] LT[-kor]"}var d="vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton".split(" "),e=(b.defineLocale||b.lang).call(b,"hu",{months:"január_február_március_április_május_június_július_augusztus_szeptember_október_november_december".split("_"),monthsShort:"jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec".split("_"),weekdays:"vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat".split("_"),weekdaysShort:"vas_hét_kedd_sze_csüt_pén_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(a){return"u"===a.charAt(1).toLowerCase()},meridiem:function(a,b,c){return 12>a?c===!0?"de":"DE":c===!0?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return c.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return c.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s múlva",past:"%s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("hu","hu",{closeText:"bezár",prevText:"vissza",nextText:"előre",currentText:"ma",monthNames:["Január","Február","Március","Április","Május","Június","Július","Augusztus","Szeptember","Október","November","December"],monthNamesShort:["Jan","Feb","Már","Ápr","Máj","Jún","Júl","Aug","Szep","Okt","Nov","Dec"],dayNames:["Vasárnap","Hétfő","Kedd","Szerda","Csütörtök","Péntek","Szombat"],dayNamesShort:["Vas","Hét","Ked","Sze","Csü","Pén","Szo"],dayNamesMin:["V","H","K","Sze","Cs","P","Szo"],weekHeader:"Hét",dateFormat:"yy.mm.dd.",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("hu",{buttonText:{month:"Hónap",week:"Hét",day:"Nap",list:"Napló"},allDayText:"Egész nap",eventLimitText:"további"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(a,b){return 12===a&&(a=0),"pagi"===b?a:"siang"===b?a>=11?a:a+12:"sore"===b||"malam"===b?a+12:void 0},meridiem:function(a,b,c){return 11>a?"pagi":15>a?"siang":19>a?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}});return a}(),a.fullCalendar.datepickerLang("id","id",{closeText:"Tutup",prevText:"<mundur",nextText:"maju>",currentText:"hari ini",monthNames:["Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","Nopember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Mei","Jun","Jul","Agus","Sep","Okt","Nop","Des"],dayNames:["Minggu","Senin","Selasa","Rabu","Kamis","Jumat","Sabtu"],dayNamesShort:["Min","Sen","Sel","Rab","kam","Jum","Sab"],dayNamesMin:["Mg","Sn","Sl","Rb","Km","jm","Sb"],weekHeader:"Mg",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("id",{buttonText:{month:"Bulan",week:"Minggu",day:"Hari",list:"Agenda"},allDayHtml:"Sehari<br/>penuh",eventLimitText:"lebih"})}(),function(){!function(){"use strict";function a(a){return a%100===11?!0:a%10!==1}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"nokkrar sekúndur":"nokkrum sekúndum";case"m":return c?"mínúta":"mínútu";case"mm":return a(b)?f+(c||e?"mínútur":"mínútum"):c?f+"mínúta":f+"mínútu";case"hh":return a(b)?f+(c||e?"klukkustundir":"klukkustundum"):f+"klukkustund";case"d":return c?"dagur":e?"dag":"degi";case"dd":return a(b)?c?f+"dagar":f+(e?"daga":"dögum"):c?f+"dagur":f+(e?"dag":"degi");case"M":return c?"mánuður":e?"mánuð":"mánuði";case"MM":return a(b)?c?f+"mánuðir":f+(e?"mánuði":"mánuðum"):c?f+"mánuður":f+(e?"mánuð":"mánuði");case"y":return c||e?"ár":"ári";case"yy":return a(b)?f+(c||e?"ár":"árum"):f+(c||e?"ár":"ári")}}var d=(b.defineLocale||b.lang).call(b,"is",{months:"janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember".split("_"),monthsShort:"jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des".split("_"),weekdays:"sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur".split("_"),weekdaysShort:"sun_mán_þri_mið_fim_fös_lau".split("_"),weekdaysMin:"Su_Má_Þr_Mi_Fi_Fö_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[í dag kl.] LT",nextDay:"[á morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[í gær kl.] LT",lastWeek:"[síðasta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s síðan",s:c,m:c,mm:c,h:"klukkustund",hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("is","is",{closeText:"Loka",prevText:"< Fyrri",nextText:"Næsti >",currentText:"Í dag",monthNames:["Janúar","Febrúar","Mars","Apríl","Maí","Júní","Júlí","Ágúst","September","Október","Nóvember","Desember"],monthNamesShort:["Jan","Feb","Mar","Apr","Maí","Jún","Júl","Ágú","Sep","Okt","Nóv","Des"],dayNames:["Sunnudagur","Mánudagur","Þriðjudagur","Miðvikudagur","Fimmtudagur","Föstudagur","Laugardagur"],dayNamesShort:["Sun","Mán","Þri","Mið","Fim","Fös","Lau"],dayNamesMin:["Su","Má","Þr","Mi","Fi","Fö","La"],weekHeader:"Vika",dateFormat:"dd.mm.yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("is",{buttonText:{month:"Mánuður",week:"Vika",day:"Dagur",list:"Dagskrá"},allDayHtml:"Allan<br/>daginn",eventLimitText:"meira"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"Domenica_Lunedì_Martedì_Mercoledì_Giovedì_Venerdì_Sabato".split("_"),weekdaysShort:"Dom_Lun_Mar_Mer_Gio_Ven_Sab".split("_"),weekdaysMin:"Do_Lu_Ma_Me_Gi_Ve_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(a){return(/^[0-9].+$/.test(a)?"tra":"in")+" "+a},past:"%s fa",s:"alcuni secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("it","it",{closeText:"Chiudi",prevText:"<Prec",nextText:"Succ>",currentText:"Oggi",monthNames:["Gennaio","Febbraio","Marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre"],monthNamesShort:["Gen","Feb","Mar","Apr","Mag","Giu","Lug","Ago","Set","Ott","Nov","Dic"],dayNames:["Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato"],dayNamesShort:["Dom","Lun","Mar","Mer","Gio","Ven","Sab"],dayNamesMin:["Do","Lu","Ma","Me","Gi","Ve","Sa"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("it",{buttonText:{month:"Mese",week:"Settimana",day:"Giorno",list:"Agenda"},allDayHtml:"Tutto il<br/>giorno",eventLimitText:function(a){return"+altri "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ja",{months:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日".split("_"),weekdaysShort:"日_月_火_水_木_金_土".split("_"),weekdaysMin:"日_月_火_水_木_金_土".split("_"),longDateFormat:{LT:"Ah時m分",LTS:"Ah時m分s秒",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah時m分",LLLL:"YYYY年M月D日Ah時m分 dddd"},meridiemParse:/午前|午後/i,isPM:function(a){return"午後"===a},meridiem:function(a,b,c){return 12>a?"午前":"午後"},calendar:{sameDay:"[今日] LT",nextDay:"[明日] LT",nextWeek:"[来週]dddd LT",lastDay:"[昨日] LT",lastWeek:"[前週]dddd LT",sameElse:"L"},ordinalParse:/\d{1,2}日/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";default:return a}},relativeTime:{future:"%s後",past:"%s前",s:"数秒",m:"1分",mm:"%d分",h:"1時間",hh:"%d時間",d:"1日",dd:"%d日",M:"1ヶ月",MM:"%dヶ月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("ja","ja",{closeText:"閉じる",prevText:"<前",nextText:"次>",currentText:"今日",monthNames:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],monthNamesShort:["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"],dayNames:["日曜日","月曜日","火曜日","水曜日","木曜日","金曜日","土曜日"],dayNamesShort:["日","月","火","水","木","金","土"],dayNamesMin:["日","月","火","水","木","金","土"],weekHeader:"週",dateFormat:"yy/mm/dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("ja",{buttonText:{month:"月",week:"週",day:"日",list:"予定リスト"},allDayText:"終日",eventLimitText:function(a){return"他 "+a+" 件"}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"ko",{months:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),monthsShort:"1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월".split("_"),weekdays:"일요일_월요일_화요일_수요일_목요일_금요일_토요일".split("_"),weekdaysShort:"일_월_화_수_목_금_토".split("_"),weekdaysMin:"일_월_화_수_목_금_토".split("_"),longDateFormat:{LT:"A h시 m분",LTS:"A h시 m분 s초",L:"YYYY.MM.DD",LL:"YYYY년 MMMM D일",LLL:"YYYY년 MMMM D일 A h시 m분",LLLL:"YYYY년 MMMM D일 dddd A h시 m분"},calendar:{sameDay:"오늘 LT",nextDay:"내일 LT",nextWeek:"dddd LT",lastDay:"어제 LT",lastWeek:"지난주 dddd LT",sameElse:"L"},relativeTime:{future:"%s 후",past:"%s 전",s:"몇 초",ss:"%d초",m:"일분",mm:"%d분",h:"한 시간",hh:"%d시간",d:"하루",dd:"%d일",M:"한 달",MM:"%d달",y:"일 년",yy:"%d년"},ordinalParse:/\d{1,2}일/,ordinal:"%d일",meridiemParse:/오전|오후/,isPM:function(a){return"오후"===a},meridiem:function(a,b,c){return 12>a?"오전":"오후"}});return a}(),a.fullCalendar.datepickerLang("ko","ko",{closeText:"닫기",prevText:"이전달",nextText:"다음달",currentText:"오늘",monthNames:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],monthNamesShort:["1월","2월","3월","4월","5월","6월","7월","8월","9월","10월","11월","12월"],dayNames:["일요일","월요일","화요일","수요일","목요일","금요일","토요일"],dayNamesShort:["일","월","화","수","목","금","토"],dayNamesMin:["일","월","화","수","목","금","토"],weekHeader:"Wk",dateFormat:"yy-mm-dd",firstDay:0,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"년"}),a.fullCalendar.lang("ko",{buttonText:{month:"월",week:"주",day:"일",list:"일정목록"},allDayText:"종일",eventLimitText:"개"})}(),function(){!function(){"use strict";function a(a,b,c,d){return b?"kelios sekundės":d?"kelių sekundžių":"kelias sekundes"}function c(a,b,c,d){return b?e(c)[0]:d?e(c)[1]:e(c)[2]}function d(a){return a%10===0||a>10&&20>a}function e(a){return g[a].split("_")}function f(a,b,f,g){var h=a+" ";return 1===a?h+c(a,b,f[0],g):b?h+(d(a)?e(f)[1]:e(f)[0]):g?h+e(f)[1]:h+(d(a)?e(f)[1]:e(f)[2])}var g={m:"minutė_minutės_minutę",mm:"minutės_minučių_minutes", +h:"valanda_valandos_valandą",hh:"valandos_valandų_valandas",d:"diena_dienos_dieną",dd:"dienos_dienų_dienas",M:"mėnuo_mėnesio_mėnesį",MM:"mėnesiai_mėnesių_mėnesius",y:"metai_metų_metus",yy:"metai_metų_metus"},h=(b.defineLocale||b.lang).call(b,"lt",{months:{format:"sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis".split("_")},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_Šeš".split("_"),weekdaysMin:"S_P_A_T_K_Pn_Š".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[Šiandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Praėjusį] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prieš %s",s:a,m:c,mm:f,h:c,hh:f,d:c,dd:f,M:c,MM:f,y:c,yy:f},ordinalParse:/\d{1,2}-oji/,ordinal:function(a){return a+"-oji"},week:{dow:1,doy:4}});return h}(),a.fullCalendar.datepickerLang("lt","lt",{closeText:"Uždaryti",prevText:"<Atgal",nextText:"Pirmyn>",currentText:"Šiandien",monthNames:["Sausis","Vasaris","Kovas","Balandis","Gegužė","Birželis","Liepa","Rugpjūtis","Rugsėjis","Spalis","Lapkritis","Gruodis"],monthNamesShort:["Sau","Vas","Kov","Bal","Geg","Bir","Lie","Rugp","Rugs","Spa","Lap","Gru"],dayNames:["sekmadienis","pirmadienis","antradienis","trečiadienis","ketvirtadienis","penktadienis","šeštadienis"],dayNamesShort:["sek","pir","ant","tre","ket","pen","šeš"],dayNamesMin:["Se","Pr","An","Tr","Ke","Pe","Še"],weekHeader:"SAV",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:""}),a.fullCalendar.lang("lt",{buttonText:{month:"Mėnuo",week:"Savaitė",day:"Diena",list:"Darbotvarkė"},allDayText:"Visą dieną",eventLimitText:"daugiau"})}(),function(){!function(){"use strict";function a(a,b,c){return c?b%10===1&&11!==b?a[2]:a[3]:b%10===1&&11!==b?a[0]:a[1]}function c(b,c,d){return b+" "+a(f[d],b,c)}function d(b,c,d){return a(f[d],b,c)}function e(a,b){return b?"dažas sekundes":"dažām sekundēm"}var f={m:"minūtes_minūtēm_minūte_minūtes".split("_"),mm:"minūtes_minūtēm_minūte_minūtes".split("_"),h:"stundas_stundām_stunda_stundas".split("_"),hh:"stundas_stundām_stunda_stundas".split("_"),d:"dienas_dienām_diena_dienas".split("_"),dd:"dienas_dienām_diena_dienas".split("_"),M:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),MM:"mēneša_mēnešiem_mēnesis_mēneši".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")},g=(b.defineLocale||b.lang).call(b,"lv",{months:"janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec".split("_"),weekdays:"svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[Šodien pulksten] LT",nextDay:"[Rīt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pagājušā] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"pēc %s",past:"pirms %s",s:e,m:d,mm:c,h:d,hh:c,d:d,dd:c,M:d,MM:c,y:d,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return g}(),a.fullCalendar.datepickerLang("lv","lv",{closeText:"Aizvērt",prevText:"Iepr.",nextText:"Nāk.",currentText:"Šodien",monthNames:["Janvāris","Februāris","Marts","Aprīlis","Maijs","Jūnijs","Jūlijs","Augusts","Septembris","Oktobris","Novembris","Decembris"],monthNamesShort:["Jan","Feb","Mar","Apr","Mai","Jūn","Jūl","Aug","Sep","Okt","Nov","Dec"],dayNames:["svētdiena","pirmdiena","otrdiena","trešdiena","ceturtdiena","piektdiena","sestdiena"],dayNamesShort:["svt","prm","otr","tre","ctr","pkt","sst"],dayNamesMin:["Sv","Pr","Ot","Tr","Ct","Pk","Ss"],weekHeader:"Ned.",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("lv",{buttonText:{month:"Mēnesis",week:"Nedēļa",day:"Diena",list:"Dienas kārtība"},allDayText:"Visu dienu",eventLimitText:function(a){return"+vēl "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag".split("_"),weekdaysShort:"sø._ma._ti._on._to._fr._lø.".split("_"),weekdaysMin:"sø_ma_ti_on_to_fr_lø".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i går kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en måned",MM:"%d måneder",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("nb","nb",{closeText:"Lukk",prevText:"«Forrige",nextText:"Neste»",currentText:"I dag",monthNames:["januar","februar","mars","april","mai","juni","juli","august","september","oktober","november","desember"],monthNamesShort:["jan","feb","mar","apr","mai","jun","jul","aug","sep","okt","nov","des"],dayNamesShort:["søn","man","tir","ons","tor","fre","lør"],dayNames:["søndag","mandag","tirsdag","onsdag","torsdag","fredag","lørdag"],dayNamesMin:["sø","ma","ti","on","to","fr","lø"],weekHeader:"Uke",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nb",{buttonText:{month:"Måned",week:"Uke",day:"Dag",list:"Agenda"},allDayText:"Hele dagen",eventLimitText:"til"})}(),function(){!function(){"use strict";var a="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),c="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),d=(b.defineLocale||b.lang).call(b,"nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(b,d){return/-MMM-/.test(d)?c[b.month()]:a[b.month()]},monthsParseExact:!0,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"Zo_Ma_Di_Wo_Do_Vr_Za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",m:"één minuut",mm:"%d minuten",h:"één uur",hh:"%d uur",d:"één dag",dd:"%d dagen",M:"één maand",MM:"%d maanden",y:"één jaar",yy:"%d jaar"},ordinalParse:/\d{1,2}(ste|de)/,ordinal:function(a){return a+(1===a||8===a||a>=20?"ste":"de")},week:{dow:1,doy:4}});return d}(),a.fullCalendar.datepickerLang("nl","nl",{closeText:"Sluiten",prevText:"←",nextText:"→",currentText:"Vandaag",monthNames:["januari","februari","maart","april","mei","juni","juli","augustus","september","oktober","november","december"],monthNamesShort:["jan","feb","mrt","apr","mei","jun","jul","aug","sep","okt","nov","dec"],dayNames:["zondag","maandag","dinsdag","woensdag","donderdag","vrijdag","zaterdag"],dayNamesShort:["zon","maa","din","woe","don","vri","zat"],dayNamesMin:["zo","ma","di","wo","do","vr","za"],weekHeader:"Wk",dateFormat:"dd-mm-yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("nl",{buttonText:{month:"Maand",week:"Week",day:"Dag",list:"Agenda"},allDayText:"Hele dag",eventLimitText:"extra"})}(),function(){!function(){"use strict";function a(a){return 5>a%10&&a%10>1&&~~(a/10)%10!==1}function c(b,c,d){var e=b+" ";switch(d){case"m":return c?"minuta":"minutę";case"mm":return e+(a(b)?"minuty":"minut");case"h":return c?"godzina":"godzinę";case"hh":return e+(a(b)?"godziny":"godzin");case"MM":return e+(a(b)?"miesiące":"miesięcy");case"yy":return e+(a(b)?"lata":"lat")}}var d="styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień".split("_"),e="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia".split("_"),f=(b.defineLocale||b.lang).call(b,"pl",{months:function(a,b){return""===b?"("+e[a.month()]+"|"+d[a.month()]+")":/D MMMM/.test(b)?e[a.month()]:d[a.month()]},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru".split("_"),weekdays:"niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota".split("_"),weekdaysShort:"nie_pon_wt_śr_czw_pt_sb".split("_"),weekdaysMin:"Nd_Pn_Wt_Śr_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dziś o] LT",nextDay:"[Jutro o] LT",nextWeek:"[W] dddd [o] LT",lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zeszłą niedzielę o] LT";case 3:return"[W zeszłą środę o] LT";case 6:return"[W zeszłą sobotę o] LT";default:return"[W zeszły] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",m:c,mm:c,h:c,hh:c,d:"1 dzień",dd:"%d dni",M:"miesiąc",MM:c,y:"rok",yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("pl","pl",{closeText:"Zamknij",prevText:"<Poprzedni",nextText:"Następny>",currentText:"Dziś",monthNames:["Styczeń","Luty","Marzec","Kwiecień","Maj","Czerwiec","Lipiec","Sierpień","Wrzesień","Październik","Listopad","Grudzień"],monthNamesShort:["Sty","Lu","Mar","Kw","Maj","Cze","Lip","Sie","Wrz","Pa","Lis","Gru"],dayNames:["Niedziela","Poniedziałek","Wtorek","Środa","Czwartek","Piątek","Sobota"],dayNamesShort:["Nie","Pn","Wt","Śr","Czw","Pt","So"],dayNamesMin:["N","Pn","Wt","Śr","Cz","Pt","So"],weekHeader:"Tydz",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pl",{buttonText:{month:"Miesiąc",week:"Tydzień",day:"Dzień",list:"Plan dnia"},allDayText:"Cały dzień",eventLimitText:"więcej"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt-br",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [às] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [às] HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"%s atrás",s:"poucos segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº"});return a}(),a.fullCalendar.datepickerLang("pt-br","pt-BR",{closeText:"Fechar",prevText:"<Anterior",nextText:"Próximo>",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sm",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt-br",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Compromissos"},allDayText:"dia inteiro",eventLimitText:function(a){return"mais +"+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"pt",{months:"Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_Sáb".split("_"),weekdaysMin:"Dom_2ª_3ª_4ª_5ª_6ª_Sáb".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje às] LT",nextDay:"[Amanhã às] LT",nextWeek:"dddd [às] LT",lastDay:"[Ontem às] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[Último] dddd [às] LT":"[Última] dddd [às] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"há %s",s:"segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um mês",MM:"%d meses",y:"um ano",yy:"%d anos"},ordinalParse:/\d{1,2}º/,ordinal:"%dº",week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("pt","pt",{closeText:"Fechar",prevText:"Anterior",nextText:"Seguinte",currentText:"Hoje",monthNames:["Janeiro","Fevereiro","Março","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"],monthNamesShort:["Jan","Fev","Mar","Abr","Mai","Jun","Jul","Ago","Set","Out","Nov","Dez"],dayNames:["Domingo","Segunda-feira","Terça-feira","Quarta-feira","Quinta-feira","Sexta-feira","Sábado"],dayNamesShort:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],dayNamesMin:["Dom","Seg","Ter","Qua","Qui","Sex","Sáb"],weekHeader:"Sem",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("pt",{buttonText:{month:"Mês",week:"Semana",day:"Dia",list:"Agenda"},allDayText:"Todo o dia",eventLimitText:"mais"})}(),function(){!function(){"use strict";function a(a,b,c){var d={mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"},e=" ";return(a%100>=20||a>=100&&a%100===0)&&(e=" de "),a+e+d[c]}var c=(b.defineLocale||b.lang).call(b,"ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminică_luni_marți_miercuri_joi_vineri_sâmbătă".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_Sâm".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_Sâ".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[mâine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s în urmă",s:"câteva secunde",m:"un minut",mm:a,h:"o oră",hh:a,d:"o zi",dd:a,M:"o lună",MM:a,y:"un an",yy:a},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("ro","ro",{closeText:"Închide",prevText:"« Luna precedentă",nextText:"Luna următoare »",currentText:"Azi",monthNames:["Ianuarie","Februarie","Martie","Aprilie","Mai","Iunie","Iulie","August","Septembrie","Octombrie","Noiembrie","Decembrie"],monthNamesShort:["Ian","Feb","Mar","Apr","Mai","Iun","Iul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Duminică","Luni","Marţi","Miercuri","Joi","Vineri","Sâmbătă"],dayNamesShort:["Dum","Lun","Mar","Mie","Joi","Vin","Sâm"],dayNamesMin:["Du","Lu","Ma","Mi","Jo","Vi","Sâ"],weekHeader:"Săpt",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ro",{buttonText:{prev:"precedentă",next:"următoare",month:"Lună",week:"Săptămână",day:"Zi",list:"Agendă"},allDayText:"Toată ziua",eventLimitText:function(a){return"+alte "+a}})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"минута_минуты_минут":"минуту_минуты_минут",hh:"час_часа_часов",dd:"день_дня_дней",MM:"месяц_месяца_месяцев",yy:"год_года_лет"};return"m"===d?c?"минута":"минуту":b+" "+a(e[d],+b)}var d=[/^янв/i,/^фев/i,/^мар/i,/^апр/i,/^ма[йя]/i,/^июн/i,/^июл/i,/^авг/i,/^сен/i,/^окт/i,/^ноя/i,/^дек/i],e=(b.defineLocale||b.lang).call(b,"ru",{months:{format:"января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря".split("_"),standalone:"январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь".split("_")},monthsShort:{format:"янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.".split("_"),standalone:"янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.".split("_")},weekdays:{standalone:"воскресенье_понедельник_вторник_среда_четверг_пятница_суббота".split("_"),format:"воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу".split("_"),isFormat:/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/},weekdaysShort:"вс_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"вс_пн_вт_ср_чт_пт_сб".split("_"),monthsParse:d,longMonthsParse:d,shortMonthsParse:d,monthsRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsShortRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|сент\.|февр\.|нояб\.|июнь|янв.|июль|дек.|авг.|апр.|марта|мар[.т]|окт.|июн[яь]|июл[яь]|ма[яй])/i,monthsStrictRegex:/^(сентябр[яь]|октябр[яь]|декабр[яь]|феврал[яь]|январ[яь]|апрел[яь]|августа?|ноябр[яь]|марта?|июн[яь]|июл[яь]|ма[яй])/i,monthsShortStrictRegex:/^(нояб\.|февр\.|сент\.|июль|янв\.|июн[яь]|мар[.т]|авг\.|апр\.|окт\.|дек\.|ма[яй])/i,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY г.",LLL:"D MMMM YYYY г., HH:mm",LLLL:"dddd, D MMMM YYYY г., HH:mm"},calendar:{sameDay:"[Сегодня в] LT",nextDay:"[Завтра в] LT",lastDay:"[Вчера в] LT",nextWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В следующее] dddd [в] LT";case 1:case 2:case 4:return"[В следующий] dddd [в] LT";case 3:case 5:case 6:return"[В следующую] dddd [в] LT"}},lastWeek:function(a){if(a.week()===this.week())return 2===this.day()?"[Во] dddd [в] LT":"[В] dddd [в] LT";switch(this.day()){case 0:return"[В прошлое] dddd [в] LT";case 1:case 2:case 4:return"[В прошлый] dddd [в] LT";case 3:case 5:case 6:return"[В прошлую] dddd [в] LT"}},sameElse:"L"},relativeTime:{future:"через %s",past:"%s назад",s:"несколько секунд",m:c,mm:c,h:"час",hh:c,d:"день",dd:c,M:"месяц",MM:c,y:"год",yy:c},meridiemParse:/ночи|утра|дня|вечера/i,isPM:function(a){return/^(дня|вечера)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночи":12>a?"утра":17>a?"дня":"вечера"},ordinalParse:/\d{1,2}-(й|го|я)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":return a+"-й";case"D":return a+"-го";case"w":case"W":return a+"-я";default:return a}},week:{dow:1,doy:7}});return e}(),a.fullCalendar.datepickerLang("ru","ru",{closeText:"Закрыть",prevText:"<Пред",nextText:"След>",currentText:"Сегодня",monthNames:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthNamesShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],dayNames:["воскресенье","понедельник","вторник","среда","четверг","пятница","суббота"],dayNamesShort:["вск","пнд","втр","срд","чтв","птн","сбт"],dayNamesMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Нед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("ru",{buttonText:{month:"Месяц",week:"Неделя",day:"День",list:"Повестка дня"},allDayText:"Весь день",eventLimitText:function(a){return"+ ещё "+a}})}(),function(){!function(){"use strict";function a(a){return a>1&&5>a}function c(b,c,d,e){var f=b+" ";switch(d){case"s":return c||e?"pár sekúnd":"pár sekundami";case"m":return c?"minúta":e?"minútu":"minútou";case"mm":return c||e?f+(a(b)?"minúty":"minút"):f+"minútami";case"h":return c?"hodina":e?"hodinu":"hodinou";case"hh":return c||e?f+(a(b)?"hodiny":"hodín"):f+"hodinami";case"d":return c||e?"deň":"dňom";case"dd":return c||e?f+(a(b)?"dni":"dní"):f+"dňami";case"M":return c||e?"mesiac":"mesiacom";case"MM":return c||e?f+(a(b)?"mesiace":"mesiacov"):f+"mesiacmi";case"y":return c||e?"rok":"rokom";case"yy":return c||e?f+(a(b)?"roky":"rokov"):f+"rokmi"}}var d="január_február_marec_apríl_máj_jún_júl_august_september_október_november_december".split("_"),e="jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec".split("_"),f=(b.defineLocale||b.lang).call(b,"sk",{months:d,monthsShort:e,weekdays:"nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_št_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_št_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nedeľu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo štvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[včera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulú nedeľu o] LT";case 1:case 2:return"[minulý] dddd [o] LT";case 3:return"[minulú stredu o] LT";case 4:case 5:return"[minulý] dddd [o] LT";case 6:return"[minulú sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:c,m:c,mm:c,h:c,hh:c,d:c,dd:c,M:c,MM:c,y:c,yy:c},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});return f}(),a.fullCalendar.datepickerLang("sk","sk",{closeText:"Zavrieť",prevText:"<Predchádzajúci",nextText:"Nasledujúci>",currentText:"Dnes",monthNames:["január","február","marec","apríl","máj","jún","júl","august","september","október","november","december"],monthNamesShort:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],dayNames:["nedeľa","pondelok","utorok","streda","štvrtok","piatok","sobota"],dayNamesShort:["Ned","Pon","Uto","Str","Štv","Pia","Sob"],dayNamesMin:["Ne","Po","Ut","St","Št","Pia","So"],weekHeader:"Ty",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sk",{buttonText:{month:"Mesiac",week:"Týždeň",day:"Deň",list:"Rozvrh"},allDayText:"Celý deň",eventLimitText:function(a){return"+ďalšie: "+a}})}(),function(){!function(){"use strict";function a(a,b,c,d){var e=a+" ";switch(c){case"s":return b||d?"nekaj sekund":"nekaj sekundami";case"m":return b?"ena minuta":"eno minuto";case"mm":return e+=1===a?b?"minuta":"minuto":2===a?b||d?"minuti":"minutama":5>a?b||d?"minute":"minutami":b||d?"minut":"minutami";case"h":return b?"ena ura":"eno uro";case"hh":return e+=1===a?b?"ura":"uro":2===a?b||d?"uri":"urama":5>a?b||d?"ure":"urami":b||d?"ur":"urami";case"d":return b||d?"en dan":"enim dnem";case"dd":return e+=1===a?b||d?"dan":"dnem":2===a?b||d?"dni":"dnevoma":b||d?"dni":"dnevi";case"M":return b||d?"en mesec":"enim mesecem";case"MM":return e+=1===a?b||d?"mesec":"mesecem":2===a?b||d?"meseca":"mesecema":5>a?b||d?"mesece":"meseci":b||d?"mesecev":"meseci";case"y":return b||d?"eno leto":"enim letom";case"yy":return e+=1===a?b||d?"leto":"letom":2===a?b||d?"leti":"letoma":5>a?b||d?"leta":"leti":b||d?"let":"leti"}}var c=(b.defineLocale||b.lang).call(b,"sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._čet._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_če_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[včeraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prejšnjo] [nedeljo] [ob] LT";case 3:return"[prejšnjo] [sredo] [ob] LT";case 6:return"[prejšnjo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prejšnji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"čez %s",past:"pred %s",s:a,m:a,mm:a,h:a,hh:a,d:a,dd:a,M:a,MM:a,y:a,yy:a},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sl","sl",{closeText:"Zapri",prevText:"<Prejšnji",nextText:"Naslednji>",currentText:"Trenutni",monthNames:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],dayNames:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"],dayNamesShort:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],dayNamesMin:["Ne","Po","To","Sr","Če","Pe","So"],weekHeader:"Teden",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sl",{buttonText:{month:"Mesec",week:"Teden",day:"Dan",list:"Dnevni red"},allDayText:"Ves dan",eventLimitText:"več"})}(),function(){!function(){"use strict";var a={words:{m:["један минут","једне минуте"],mm:["минут","минуте","минута"],h:["један сат","једног сата"],hh:["сат","сата","сати"],dd:["дан","дана","дана"],MM:["месец","месеца","месеци"],yy:["година","године","година"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr-cyrl",{months:"јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар".split("_"),monthsShort:"јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.".split("_"),monthsParseExact:!0,weekdays:"недеља_понедељак_уторак_среда_четвртак_петак_субота".split("_"),weekdaysShort:"нед._пон._уто._сре._чет._пет._суб.".split("_"),weekdaysMin:"не_по_ут_ср_че_пе_су".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[данас у] LT",nextDay:"[сутра у] LT",nextWeek:function(){switch(this.day()){case 0:return"[у] [недељу] [у] LT";case 3:return"[у] [среду] [у] LT";case 6:return"[у] [суботу] [у] LT";case 1:case 2:case 4:case 5:return"[у] dddd [у] LT"}},lastDay:"[јуче у] LT",lastWeek:function(){var a=["[прошле] [недеље] [у] LT","[прошлог] [понедељка] [у] LT","[прошлог] [уторка] [у] LT","[прошле] [среде] [у] LT","[прошлог] [четвртка] [у] LT","[прошлог] [петка] [у] LT","[прошле] [суботе] [у] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"за %s",past:"пре %s",s:"неколико секунди",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"дан",dd:a.translate,M:"месец",MM:a.translate,y:"годину",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr-cyrl","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr-cyrl",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a={words:{m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(a,b){return 1===a?b[0]:a>=2&&4>=a?b[1]:b[2]},translate:function(b,c,d){var e=a.words[d];return 1===d.length?c?e[0]:e[1]:b+" "+a.correctGrammaticalCase(b,e)}},c=(b.defineLocale||b.lang).call(b,"sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._čet._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_če_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD. MM. YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[juče u] LT",lastWeek:function(){var a=["[prošle] [nedelje] [u] LT","[prošlog] [ponedeljka] [u] LT","[prošlog] [utorka] [u] LT","[prošle] [srede] [u] LT","[prošlog] [četvrtka] [u] LT","[prošlog] [petka] [u] LT","[prošle] [subote] [u] LT"];return a[this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",m:a.translate,mm:a.translate,h:a.translate,hh:a.translate,d:"dan",dd:a.translate,M:"mesec",MM:a.translate,y:"godinu",yy:a.translate},ordinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("sr","sr",{closeText:"Затвори",prevText:"<",nextText:">",currentText:"Данас",monthNames:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"],monthNamesShort:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],dayNames:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"],dayNamesShort:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],dayNamesMin:["Не","По","Ут","Ср","Че","Пе","Су"],weekHeader:"Сед",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sr",{buttonText:{month:"Месец",week:"Недеља",day:"Дан",list:"Планер"},allDayText:"Цео дан",eventLimitText:function(a){return"+ још "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"), +monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag".split("_"),weekdaysShort:"sön_mån_tis_ons_tor_fre_lör".split("_"),weekdaysMin:"sö_må_ti_on_to_fr_lö".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Igår] LT",nextWeek:"[På] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"för %s sedan",s:"några sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en månad",MM:"%d månader",y:"ett år",yy:"%d år"},ordinalParse:/\d{1,2}(e|a)/,ordinal:function(a){var b=a%10,c=1===~~(a%100/10)?"e":1===b?"a":2===b?"a":"e";return a+c},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("sv","sv",{closeText:"Stäng",prevText:"«Förra",nextText:"Nästa»",currentText:"Idag",monthNames:["Januari","Februari","Mars","April","Maj","Juni","Juli","Augusti","September","Oktober","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"],dayNamesShort:["Sön","Mån","Tis","Ons","Tor","Fre","Lör"],dayNames:["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"],dayNamesMin:["Sö","Må","Ti","On","To","Fr","Lö"],weekHeader:"Ve",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("sv",{buttonText:{month:"Månad",week:"Vecka",day:"Dag",list:"Program"},allDayText:"Heldag",eventLimitText:"till"})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"th",{months:"มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม".split("_"),monthsShort:"มกรา_กุมภา_มีนา_เมษา_พฤษภา_มิถุนา_กรกฎา_สิงหา_กันยา_ตุลา_พฤศจิกา_ธันวา".split("_"),monthsParseExact:!0,weekdays:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์".split("_"),weekdaysShort:"อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์".split("_"),weekdaysMin:"อา._จ._อ._พ._พฤ._ศ._ส.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H นาฬิกา m นาที",LTS:"H นาฬิกา m นาที s วินาที",L:"YYYY/MM/DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY เวลา H นาฬิกา m นาที",LLLL:"วันddddที่ D MMMM YYYY เวลา H นาฬิกา m นาที"},meridiemParse:/ก่อนเที่ยง|หลังเที่ยง/,isPM:function(a){return"หลังเที่ยง"===a},meridiem:function(a,b,c){return 12>a?"ก่อนเที่ยง":"หลังเที่ยง"},calendar:{sameDay:"[วันนี้ เวลา] LT",nextDay:"[พรุ่งนี้ เวลา] LT",nextWeek:"dddd[หน้า เวลา] LT",lastDay:"[เมื่อวานนี้ เวลา] LT",lastWeek:"[วัน]dddd[ที่แล้ว เวลา] LT",sameElse:"L"},relativeTime:{future:"อีก %s",past:"%sที่แล้ว",s:"ไม่กี่วินาที",m:"1 นาที",mm:"%d นาที",h:"1 ชั่วโมง",hh:"%d ชั่วโมง",d:"1 วัน",dd:"%d วัน",M:"1 เดือน",MM:"%d เดือน",y:"1 ปี",yy:"%d ปี"}});return a}(),a.fullCalendar.datepickerLang("th","th",{closeText:"ปิด",prevText:"« ย้อน",nextText:"ถัดไป »",currentText:"วันนี้",monthNames:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"],monthNamesShort:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],dayNames:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"],dayNamesShort:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],dayNamesMin:["อา.","จ.","อ.","พ.","พฤ.","ศ.","ส."],weekHeader:"Wk",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("th",{buttonText:{month:"เดือน",week:"สัปดาห์",day:"วัน",list:"แผนงาน"},allDayText:"ตลอดวัน",eventLimitText:"เพิ่มเติม"})}(),function(){!function(){"use strict";var a={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'üncü",4:"'üncü",100:"'üncü",6:"'ncı",9:"'uncu",10:"'uncu",30:"'uncu",60:"'ıncı",90:"'ıncı"},c=(b.defineLocale||b.lang).call(b,"tr",{months:"Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık".split("_"),monthsShort:"Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_Çar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_Ça_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bugün saat] LT",nextDay:"[yarın saat] LT",nextWeek:"[haftaya] dddd [saat] LT",lastDay:"[dün] LT",lastWeek:"[geçen hafta] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s önce",s:"birkaç saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir gün",dd:"%d gün",M:"bir ay",MM:"%d ay",y:"bir yıl",yy:"%d yıl"},ordinalParse:/\d{1,2}'(inci|nci|üncü|ncı|uncu|ıncı)/,ordinal:function(b){if(0===b)return b+"'ıncı";var c=b%10,d=b%100-c,e=b>=100?100:null;return b+(a[c]||a[d]||a[e])},week:{dow:1,doy:7}});return c}(),a.fullCalendar.datepickerLang("tr","tr",{closeText:"kapat",prevText:"<geri",nextText:"ileri>",currentText:"bugün",monthNames:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],monthNamesShort:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],dayNames:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"],dayNamesShort:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],dayNamesMin:["Pz","Pt","Sa","Ça","Pe","Cu","Ct"],weekHeader:"Hf",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("tr",{buttonText:{next:"ileri",month:"Ay",week:"Hafta",day:"Gün",list:"Ajanda"},allDayText:"Tüm gün",eventLimitText:"daha fazla"})}(),function(){!function(){"use strict";function a(a,b){var c=a.split("_");return b%10===1&&b%100!==11?c[0]:b%10>=2&&4>=b%10&&(10>b%100||b%100>=20)?c[1]:c[2]}function c(b,c,d){var e={mm:c?"хвилина_хвилини_хвилин":"хвилину_хвилини_хвилин",hh:c?"година_години_годин":"годину_години_годин",dd:"день_дні_днів",MM:"місяць_місяці_місяців",yy:"рік_роки_років"};return"m"===d?c?"хвилина":"хвилину":"h"===d?c?"година":"годину":b+" "+a(e[d],+b)}function d(a,b){var c={nominative:"неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота".split("_"),accusative:"неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу".split("_"),genitive:"неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи".split("_")},d=/(\[[ВвУу]\]) ?dddd/.test(b)?"accusative":/\[?(?:минулої|наступної)? ?\] ?dddd/.test(b)?"genitive":"nominative";return c[d][a.day()]}function e(a){return function(){return a+"о"+(11===this.hours()?"б":"")+"] LT"}}var f=(b.defineLocale||b.lang).call(b,"uk",{months:{format:"січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня".split("_"),standalone:"січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень".split("_")},monthsShort:"січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд".split("_"),weekdays:d,weekdaysShort:"нд_пн_вт_ср_чт_пт_сб".split("_"),weekdaysMin:"нд_пн_вт_ср_чт_пт_сб".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY р.",LLL:"D MMMM YYYY р., HH:mm",LLLL:"dddd, D MMMM YYYY р., HH:mm"},calendar:{sameDay:e("[Сьогодні "),nextDay:e("[Завтра "),lastDay:e("[Вчора "),nextWeek:e("[У] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return e("[Минулої] dddd [").call(this);case 1:case 2:case 4:return e("[Минулого] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"за %s",past:"%s тому",s:"декілька секунд",m:c,mm:c,h:"годину",hh:c,d:"день",dd:c,M:"місяць",MM:c,y:"рік",yy:c},meridiemParse:/ночі|ранку|дня|вечора/,isPM:function(a){return/^(дня|вечора)$/.test(a)},meridiem:function(a,b,c){return 4>a?"ночі":12>a?"ранку":17>a?"дня":"вечора"},ordinalParse:/\d{1,2}-(й|го)/,ordinal:function(a,b){switch(b){case"M":case"d":case"DDD":case"w":case"W":return a+"-й";case"D":return a+"-го";default:return a}},week:{dow:1,doy:7}});return f}(),a.fullCalendar.datepickerLang("uk","uk",{closeText:"Закрити",prevText:"<",nextText:">",currentText:"Сьогодні",monthNames:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"],monthNamesShort:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],dayNames:["неділя","понеділок","вівторок","середа","четвер","п’ятниця","субота"],dayNamesShort:["нед","пнд","вів","срд","чтв","птн","сбт"],dayNamesMin:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],weekHeader:"Тиж",dateFormat:"dd.mm.yy",firstDay:1,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("uk",{buttonText:{month:"Місяць",week:"Тиждень",day:"День",list:"Порядок денний"},allDayText:"Увесь день",eventLimitText:function(a){return"+ще "+a+"..."}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"vi",{months:"tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(a){return/^ch$/i.test(a)},meridiem:function(a,b,c){return 12>a?c?"sa":"SA":c?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [năm] YYYY",LLL:"D MMMM [năm] YYYY HH:mm",LLLL:"dddd, D MMMM [năm] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[Hôm nay lúc] LT",nextDay:"[Ngày mai lúc] LT",nextWeek:"dddd [tuần tới lúc] LT",lastDay:"[Hôm qua lúc] LT",lastWeek:"dddd [tuần rồi lúc] LT",sameElse:"L"},relativeTime:{future:"%s tới",past:"%s trước",s:"vài giây",m:"một phút",mm:"%d phút",h:"một giờ",hh:"%d giờ",d:"một ngày",dd:"%d ngày",M:"một tháng",MM:"%d tháng",y:"một năm",yy:"%d năm"},ordinalParse:/\d{1,2}/,ordinal:function(a){return a},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("vi","vi",{closeText:"Đóng",prevText:"<Trước",nextText:"Tiếp>",currentText:"Hôm nay",monthNames:["Tháng Một","Tháng Hai","Tháng Ba","Tháng Tư","Tháng Năm","Tháng Sáu","Tháng Bảy","Tháng Tám","Tháng Chín","Tháng Mười","Tháng Mười Một","Tháng Mười Hai"],monthNamesShort:["Tháng 1","Tháng 2","Tháng 3","Tháng 4","Tháng 5","Tháng 6","Tháng 7","Tháng 8","Tháng 9","Tháng 10","Tháng 11","Tháng 12"],dayNames:["Chủ Nhật","Thứ Hai","Thứ Ba","Thứ Tư","Thứ Năm","Thứ Sáu","Thứ Bảy"],dayNamesShort:["CN","T2","T3","T4","T5","T6","T7"],dayNamesMin:["CN","T2","T3","T4","T5","T6","T7"],weekHeader:"Tu",dateFormat:"dd/mm/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""}),a.fullCalendar.lang("vi",{buttonText:{month:"Tháng",week:"Tuần",day:"Ngày",list:"Lịch biểu"},allDayText:"Cả ngày",eventLimitText:function(a){return"+ thêm "+a}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-cn",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah点mm分",LTS:"Ah点m分s秒",L:"YYYY-MM-DD",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah点mm分",LLLL:"YYYY年MMMD日ddddAh点mm分",l:"YYYY-MM-DD",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah点mm分",llll:"YYYY年MMMD日ddddAh点mm分"},meridiemParse:/凌晨|早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"凌晨"===b||"早上"===b||"上午"===b?a:"下午"===b||"晚上"===b?a+12:a>=11?a:a+12},meridiem:function(a,b,c){var d=100*a+b;return 600>d?"凌晨":900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:function(){return 0===this.minutes()?"[今天]Ah[点整]":"[今天]LT"},nextDay:function(){return 0===this.minutes()?"[明天]Ah[点整]":"[明天]LT"},lastDay:function(){return 0===this.minutes()?"[昨天]Ah[点整]":"[昨天]LT"},nextWeek:function(){var a,c;return a=b().startOf("week"),c=this.diff(a,"days")>=7?"[下]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},lastWeek:function(){var a,c;return a=b().startOf("week"),c=this.unix()<a.unix()?"[上]":"[本]",0===this.minutes()?c+"dddAh点整":c+"dddAh点mm"},sameElse:"LL"},ordinalParse:/\d{1,2}(日|月|周)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"周";default:return a}},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},week:{dow:1,doy:4}});return a}(),a.fullCalendar.datepickerLang("zh-cn","zh-CN",{closeText:"关闭",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy-mm-dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-cn",{buttonText:{month:"月",week:"周",day:"日",list:"日程"},allDayText:"全天",eventLimitText:function(a){return"另外 "+a+" 个"}})}(),function(){!function(){"use strict";var a=(b.defineLocale||b.lang).call(b,"zh-tw",{months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"週日_週一_週二_週三_週四_週五_週六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),longDateFormat:{LT:"Ah點mm分",LTS:"Ah點m分s秒",L:"YYYY年MMMD日",LL:"YYYY年MMMD日",LLL:"YYYY年MMMD日Ah點mm分",LLLL:"YYYY年MMMD日ddddAh點mm分",l:"YYYY年MMMD日",ll:"YYYY年MMMD日",lll:"YYYY年MMMD日Ah點mm分",llll:"YYYY年MMMD日ddddAh點mm分"},meridiemParse:/早上|上午|中午|下午|晚上/,meridiemHour:function(a,b){return 12===a&&(a=0),"早上"===b||"上午"===b?a:"中午"===b?a>=11?a:a+12:"下午"===b||"晚上"===b?a+12:void 0},meridiem:function(a,b,c){var d=100*a+b;return 900>d?"早上":1130>d?"上午":1230>d?"中午":1800>d?"下午":"晚上"},calendar:{sameDay:"[今天]LT",nextDay:"[明天]LT",nextWeek:"[下]ddddLT",lastDay:"[昨天]LT",lastWeek:"[上]ddddLT",sameElse:"L"},ordinalParse:/\d{1,2}(日|月|週)/,ordinal:function(a,b){switch(b){case"d":case"D":case"DDD":return a+"日";case"M":return a+"月";case"w":case"W":return a+"週";default:return a}},relativeTime:{future:"%s內",past:"%s前",s:"幾秒",m:"1分鐘",mm:"%d分鐘",h:"1小時",hh:"%d小時",d:"1天",dd:"%d天",M:"1個月",MM:"%d個月",y:"1年",yy:"%d年"}});return a}(),a.fullCalendar.datepickerLang("zh-tw","zh-TW",{closeText:"關閉",prevText:"<上月",nextText:"下月>",currentText:"今天",monthNames:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],monthNamesShort:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],dayNames:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"],dayNamesShort:["周日","周一","周二","周三","周四","周五","周六"],dayNamesMin:["日","一","二","三","四","五","六"],weekHeader:"周",dateFormat:"yy/mm/dd",firstDay:1,isRTL:!1,showMonthAfterYear:!0,yearSuffix:"年"}),a.fullCalendar.lang("zh-tw",{buttonText:{month:"月",week:"週",day:"天",list:"待辦事項"},allDayText:"全天",eventLimitText:"更多"})}(),(b.locale||b.lang).call(b,"en"),a.fullCalendar.lang("en"),a.datepicker&&a.datepicker.setDefaults(a.datepicker.regional[""])});
\ No newline at end of file diff --git a/util/hmessages.po b/util/hmessages.po index 2ec494c7c..42cf092bb 100644 --- a/util/hmessages.po +++ b/util/hmessages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2016-06-10 00:02-0700\n" +"POT-Creation-Date: 2016-06-17 00:02-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -21,7 +21,7 @@ msgstr "" msgid "parent" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2620 +#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2621 msgid "Collection" msgstr "" @@ -46,15 +46,16 @@ msgid "Schedule Outbox" msgstr "" #: ../../Zotlabs/Storage/Browser.php:164 ../../Zotlabs/Module/Photos.php:798 -#: ../../Zotlabs/Module/Photos.php:1243 ../../Zotlabs/Lib/Apps.php:486 -#: ../../Zotlabs/Lib/Apps.php:561 ../../include/widgets.php:1505 -#: ../../include/conversation.php:1032 +#: ../../Zotlabs/Module/Photos.php:1243 +#: ../../Zotlabs/Module/Embedphotos.php:147 ../../Zotlabs/Lib/Apps.php:489 +#: ../../Zotlabs/Lib/Apps.php:564 ../../include/conversation.php:1035 +#: ../../include/widgets.php:1578 msgid "Unknown" msgstr "" #: ../../Zotlabs/Storage/Browser.php:226 ../../Zotlabs/Module/Fbrowser.php:85 -#: ../../Zotlabs/Lib/Apps.php:216 ../../include/nav.php:93 -#: ../../include/conversation.php:1639 +#: ../../Zotlabs/Lib/Apps.php:216 ../../include/conversation.php:1654 +#: ../../include/nav.php:93 msgid "Files" msgstr "" @@ -67,16 +68,17 @@ msgid "Shared" msgstr "" #: ../../Zotlabs/Storage/Browser.php:230 ../../Zotlabs/Storage/Browser.php:306 -#: ../../Zotlabs/Module/Blocks.php:156 ../../Zotlabs/Module/Layouts.php:182 +#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Layouts.php:184 #: ../../Zotlabs/Module/Menu.php:118 ../../Zotlabs/Module/New_channel.php:142 -#: ../../Zotlabs/Module/Webpages.php:186 +#: ../../Zotlabs/Module/Webpages.php:194 msgid "Create" msgstr "" #: ../../Zotlabs/Storage/Browser.php:231 ../../Zotlabs/Storage/Browser.php:308 #: ../../Zotlabs/Module/Cover_photo.php:357 #: ../../Zotlabs/Module/Photos.php:825 ../../Zotlabs/Module/Photos.php:1364 -#: ../../Zotlabs/Module/Profile_photo.php:368 ../../include/widgets.php:1518 +#: ../../Zotlabs/Module/Profile_photo.php:368 +#: ../../Zotlabs/Module/Embedphotos.php:159 ../../include/widgets.php:1591 msgid "Upload" msgstr "" @@ -101,34 +103,34 @@ msgstr "" msgid "Last Modified" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:157 +#: ../../Zotlabs/Storage/Browser.php:240 ../../Zotlabs/Module/Blocks.php:160 #: ../../Zotlabs/Module/Editblock.php:109 #: ../../Zotlabs/Module/Connections.php:290 #: ../../Zotlabs/Module/Connections.php:310 #: ../../Zotlabs/Module/Editpost.php:84 -#: ../../Zotlabs/Module/Editlayout.php:113 +#: ../../Zotlabs/Module/Editlayout.php:114 #: ../../Zotlabs/Module/Editwebpage.php:146 -#: ../../Zotlabs/Module/Layouts.php:190 ../../Zotlabs/Module/Menu.php:112 +#: ../../Zotlabs/Module/Layouts.php:192 ../../Zotlabs/Module/Menu.php:112 #: ../../Zotlabs/Module/Admin.php:2113 ../../Zotlabs/Module/Settings.php:652 -#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:187 -#: ../../Zotlabs/Lib/Apps.php:337 ../../Zotlabs/Lib/ThreadItem.php:106 -#: ../../include/channel.php:937 ../../include/channel.php:941 -#: ../../include/menu.php:108 ../../include/page_widgets.php:8 -#: ../../include/page_widgets.php:36 +#: ../../Zotlabs/Module/Thing.php:260 ../../Zotlabs/Module/Webpages.php:195 +#: ../../Zotlabs/Lib/ThreadItem.php:106 ../../Zotlabs/Lib/Apps.php:340 +#: ../../include/channel.php:918 ../../include/channel.php:922 +#: ../../include/menu.php:108 ../../include/page_widgets.php:9 +#: ../../include/page_widgets.php:39 msgid "Edit" msgstr "" -#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:159 -#: ../../Zotlabs/Module/Connedit.php:572 +#: ../../Zotlabs/Storage/Browser.php:241 ../../Zotlabs/Module/Blocks.php:162 +#: ../../Zotlabs/Module/Connedit.php:578 #: ../../Zotlabs/Module/Editblock.php:134 #: ../../Zotlabs/Module/Connections.php:263 -#: ../../Zotlabs/Module/Editlayout.php:136 +#: ../../Zotlabs/Module/Editlayout.php:137 #: ../../Zotlabs/Module/Editwebpage.php:170 ../../Zotlabs/Module/Group.php:177 #: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Admin.php:1039 #: ../../Zotlabs/Module/Admin.php:1213 ../../Zotlabs/Module/Admin.php:2114 #: ../../Zotlabs/Module/Settings.php:653 ../../Zotlabs/Module/Thing.php:261 -#: ../../Zotlabs/Module/Webpages.php:189 ../../Zotlabs/Lib/Apps.php:338 -#: ../../Zotlabs/Lib/ThreadItem.php:126 ../../include/conversation.php:657 +#: ../../Zotlabs/Module/Webpages.php:197 ../../Zotlabs/Lib/ThreadItem.php:126 +#: ../../Zotlabs/Lib/Apps.php:341 ../../include/conversation.php:660 msgid "Delete" msgstr "" @@ -184,8 +186,8 @@ msgstr "" #: ../../Zotlabs/Module/Filestorage.php:24 #: ../../Zotlabs/Module/Filestorage.php:79 #: ../../Zotlabs/Module/Filestorage.php:94 -#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:210 -#: ../../Zotlabs/Module/Item.php:218 ../../Zotlabs/Module/Item.php:1070 +#: ../../Zotlabs/Module/Filestorage.php:121 ../../Zotlabs/Module/Item.php:211 +#: ../../Zotlabs/Module/Item.php:219 ../../Zotlabs/Module/Item.php:1070 #: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78 #: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Module/Id.php:76 #: ../../Zotlabs/Module/Like.php:181 ../../Zotlabs/Module/Invite.php:17 @@ -197,7 +199,7 @@ msgstr "" #: ../../Zotlabs/Module/New_channel.php:104 #: ../../Zotlabs/Module/Notifications.php:70 #: ../../Zotlabs/Module/Photos.php:75 ../../Zotlabs/Module/Page.php:35 -#: ../../Zotlabs/Module/Page.php:90 ../../Zotlabs/Module/Pdledit.php:26 +#: ../../Zotlabs/Module/Page.php:91 ../../Zotlabs/Module/Pdledit.php:26 #: ../../Zotlabs/Module/Poke.php:137 ../../Zotlabs/Module/Profile.php:68 #: ../../Zotlabs/Module/Profile.php:76 ../../Zotlabs/Module/Profiles.php:203 #: ../../Zotlabs/Module/Profiles.php:601 @@ -214,14 +216,14 @@ msgstr "" #: ../../Zotlabs/Module/Viewconnections.php:25 #: ../../Zotlabs/Module/Viewconnections.php:30 #: ../../Zotlabs/Module/Viewsrc.php:18 ../../Zotlabs/Module/Webpages.php:74 -#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/items.php:3438 +#: ../../Zotlabs/Lib/Chatroom.php:137 ../../include/photos.php:27 #: ../../include/attach.php:141 ../../include/attach.php:189 #: ../../include/attach.php:252 ../../include/attach.php:266 #: ../../include/attach.php:273 ../../include/attach.php:338 #: ../../include/attach.php:352 ../../include/attach.php:359 -#: ../../include/attach.php:437 ../../include/attach.php:895 -#: ../../include/attach.php:966 ../../include/attach.php:1118 -#: ../../include/photos.php:27 +#: ../../include/attach.php:439 ../../include/attach.php:901 +#: ../../include/attach.php:972 ../../include/attach.php:1124 +#: ../../include/items.php:3450 msgid "Permission denied." msgstr "" @@ -230,8 +232,8 @@ msgid "Not Found" msgstr "" #: ../../Zotlabs/Web/Router.php:149 ../../Zotlabs/Module/Block.php:79 -#: ../../Zotlabs/Module/Display.php:117 ../../Zotlabs/Module/Help.php:97 -#: ../../Zotlabs/Module/Page.php:93 +#: ../../Zotlabs/Module/Display.php:118 ../../Zotlabs/Module/Help.php:97 +#: ../../Zotlabs/Module/Page.php:94 msgid "Page not found." msgstr "" @@ -253,7 +255,7 @@ msgstr "" #: ../../Zotlabs/Module/Editwebpage.php:33 #: ../../Zotlabs/Module/Filestorage.php:60 ../../Zotlabs/Module/Hcard.php:12 #: ../../Zotlabs/Module/Layouts.php:31 ../../Zotlabs/Module/Profile.php:20 -#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:837 +#: ../../Zotlabs/Module/Webpages.php:34 ../../include/channel.php:818 msgid "Requested profile is not available." msgstr "" @@ -261,40 +263,40 @@ msgstr "" msgid "Some blurb about what to do when you're new here" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:152 +#: ../../Zotlabs/Module/Blocks.php:97 ../../Zotlabs/Module/Blocks.php:155 #: ../../Zotlabs/Module/Editblock.php:108 msgid "Block Name" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:151 ../../include/text.php:2265 +#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2266 msgid "Blocks" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:153 +#: ../../Zotlabs/Module/Blocks.php:156 msgid "Block Title" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:154 ../../Zotlabs/Module/Layouts.php:188 -#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:198 -#: ../../include/page_widgets.php:44 +#: ../../Zotlabs/Module/Blocks.php:157 ../../Zotlabs/Module/Layouts.php:190 +#: ../../Zotlabs/Module/Menu.php:114 ../../Zotlabs/Module/Webpages.php:206 +#: ../../include/page_widgets.php:47 msgid "Created" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:155 ../../Zotlabs/Module/Layouts.php:189 -#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:199 -#: ../../include/page_widgets.php:45 +#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191 +#: ../../Zotlabs/Module/Menu.php:115 ../../Zotlabs/Module/Webpages.php:207 +#: ../../include/page_widgets.php:48 msgid "Edited" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:158 ../../Zotlabs/Module/Layouts.php:191 -#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:188 -#: ../../include/conversation.php:1208 +#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Layouts.php:193 +#: ../../Zotlabs/Module/Photos.php:1072 ../../Zotlabs/Module/Webpages.php:196 +#: ../../include/conversation.php:1219 msgid "Share" msgstr "" -#: ../../Zotlabs/Module/Blocks.php:163 ../../Zotlabs/Module/Layouts.php:195 -#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:193 -#: ../../include/page_widgets.php:39 +#: ../../Zotlabs/Module/Blocks.php:166 ../../Zotlabs/Module/Layouts.php:197 +#: ../../Zotlabs/Module/Pubsites.php:47 ../../Zotlabs/Module/Webpages.php:201 +#: ../../include/page_widgets.php:42 msgid "View" msgstr "" @@ -348,7 +350,7 @@ msgstr "" #: ../../Zotlabs/Module/Cal.php:338 ../../Zotlabs/Module/Chat.php:196 #: ../../Zotlabs/Module/Chat.php:238 ../../Zotlabs/Module/Connect.php:98 -#: ../../Zotlabs/Module/Connedit.php:731 ../../Zotlabs/Module/Events.php:475 +#: ../../Zotlabs/Module/Connedit.php:737 ../../Zotlabs/Module/Events.php:475 #: ../../Zotlabs/Module/Events.php:672 ../../Zotlabs/Module/Group.php:85 #: ../../Zotlabs/Module/Filestorage.php:162 #: ../../Zotlabs/Module/Import.php:550 @@ -372,8 +374,8 @@ msgstr "" #: ../../Zotlabs/Module/Setup.php:353 ../../Zotlabs/Module/Sources.php:114 #: ../../Zotlabs/Module/Sources.php:149 ../../Zotlabs/Module/Thing.php:316 #: ../../Zotlabs/Module/Thing.php:362 ../../Zotlabs/Module/Xchan.php:15 -#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/widgets.php:757 -#: ../../include/widgets.php:769 ../../include/js_strings.php:22 +#: ../../Zotlabs/Lib/ThreadItem.php:710 ../../include/js_strings.php:22 +#: ../../include/widgets.php:757 ../../include/widgets.php:769 #: ../../view/theme/redbasic/php/config.php:99 msgid "Submit" msgstr "" @@ -383,6 +385,7 @@ msgid "Today" msgstr "" #: ../../Zotlabs/Module/Channel.php:29 ../../Zotlabs/Module/Chat.php:25 +#: ../../Zotlabs/Module/Wiki.php:20 msgid "You must be logged in to see this page." msgstr "" @@ -423,19 +426,19 @@ msgid "Bookmark this room" msgstr "" #: ../../Zotlabs/Module/Chat.php:205 ../../Zotlabs/Module/Mail.php:205 -#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1176 +#: ../../Zotlabs/Module/Mail.php:314 ../../include/conversation.php:1181 msgid "Please enter a link URL:" msgstr "" #: ../../Zotlabs/Module/Chat.php:206 ../../Zotlabs/Module/Mail.php:258 #: ../../Zotlabs/Module/Mail.php:383 ../../Zotlabs/Lib/ThreadItem.php:722 -#: ../../include/conversation.php:1256 +#: ../../include/conversation.php:1271 msgid "Encrypt text" msgstr "" #: ../../Zotlabs/Module/Chat.php:207 ../../Zotlabs/Module/Editblock.php:111 #: ../../Zotlabs/Module/Editwebpage.php:147 ../../Zotlabs/Module/Mail.php:252 -#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1143 +#: ../../Zotlabs/Module/Mail.php:377 ../../include/conversation.php:1146 msgid "Insert web link" msgstr "" @@ -571,7 +574,7 @@ msgstr "" msgid "is now connected to" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:654 +#: ../../Zotlabs/Module/Connedit.php:379 ../../Zotlabs/Module/Connedit.php:660 #: ../../Zotlabs/Module/Events.php:459 ../../Zotlabs/Module/Events.php:460 #: ../../Zotlabs/Module/Events.php:469 ../../Zotlabs/Module/Api.php:89 #: ../../Zotlabs/Module/Filestorage.php:157 @@ -583,7 +586,7 @@ msgstr "" #: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581 #: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 #: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105 -#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707 +#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1708 msgid "No" msgstr "" @@ -598,7 +601,7 @@ msgstr "" #: ../../Zotlabs/Module/Removeme.php:61 ../../Zotlabs/Module/Settings.php:581 #: ../../include/dir_fns.php:143 ../../include/dir_fns.php:144 #: ../../include/dir_fns.php:145 ../../view/theme/redbasic/php/config.php:105 -#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1707 +#: ../../view/theme/redbasic/php/config.php:130 ../../boot.php:1708 msgid "Yes" msgstr "" @@ -606,277 +609,277 @@ msgstr "" msgid "Could not access address book record." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:425 +#: ../../Zotlabs/Module/Connedit.php:431 msgid "Refresh failed - channel is currently unavailable." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:440 ../../Zotlabs/Module/Connedit.php:449 -#: ../../Zotlabs/Module/Connedit.php:458 ../../Zotlabs/Module/Connedit.php:467 -#: ../../Zotlabs/Module/Connedit.php:480 +#: ../../Zotlabs/Module/Connedit.php:446 ../../Zotlabs/Module/Connedit.php:455 +#: ../../Zotlabs/Module/Connedit.php:464 ../../Zotlabs/Module/Connedit.php:473 +#: ../../Zotlabs/Module/Connedit.php:486 msgid "Unable to set address book parameters." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:503 +#: ../../Zotlabs/Module/Connedit.php:509 msgid "Connection has been removed." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:519 ../../Zotlabs/Lib/Apps.php:219 -#: ../../include/nav.php:86 ../../include/conversation.php:954 +#: ../../Zotlabs/Module/Connedit.php:525 ../../Zotlabs/Lib/Apps.php:220 +#: ../../include/conversation.php:957 ../../include/nav.php:86 msgid "View Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:522 +#: ../../Zotlabs/Module/Connedit.php:528 #, php-format msgid "View %s's profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:526 +#: ../../Zotlabs/Module/Connedit.php:532 msgid "Refresh Permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:529 +#: ../../Zotlabs/Module/Connedit.php:535 msgid "Fetch updated permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:533 +#: ../../Zotlabs/Module/Connedit.php:539 msgid "Recent Activity" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:536 +#: ../../Zotlabs/Module/Connedit.php:542 msgid "View recent posts and comments" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1041 +#: ../../Zotlabs/Module/Connedit.php:546 ../../Zotlabs/Module/Admin.php:1041 msgid "Unblock" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:540 ../../Zotlabs/Module/Admin.php:1040 +#: ../../Zotlabs/Module/Connedit.php:546 ../../Zotlabs/Module/Admin.php:1040 msgid "Block" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:543 +#: ../../Zotlabs/Module/Connedit.php:549 msgid "Block (or Unblock) all communications with this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:544 +#: ../../Zotlabs/Module/Connedit.php:550 msgid "This connection is blocked!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:548 +#: ../../Zotlabs/Module/Connedit.php:554 msgid "Unignore" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:548 +#: ../../Zotlabs/Module/Connedit.php:554 #: ../../Zotlabs/Module/Connections.php:277 #: ../../Zotlabs/Module/Notifications.php:55 msgid "Ignore" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:551 +#: ../../Zotlabs/Module/Connedit.php:557 msgid "Ignore (or Unignore) all inbound communications from this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:552 +#: ../../Zotlabs/Module/Connedit.php:558 msgid "This connection is ignored!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:556 +#: ../../Zotlabs/Module/Connedit.php:562 msgid "Unarchive" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:556 +#: ../../Zotlabs/Module/Connedit.php:562 msgid "Archive" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:559 +#: ../../Zotlabs/Module/Connedit.php:565 msgid "" "Archive (or Unarchive) this connection - mark channel dead but keep content" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:560 +#: ../../Zotlabs/Module/Connedit.php:566 msgid "This connection is archived!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:564 +#: ../../Zotlabs/Module/Connedit.php:570 msgid "Unhide" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:564 +#: ../../Zotlabs/Module/Connedit.php:570 msgid "Hide" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:567 +#: ../../Zotlabs/Module/Connedit.php:573 msgid "Hide or Unhide this connection from your other connections" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:568 +#: ../../Zotlabs/Module/Connedit.php:574 msgid "This connection is hidden!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:575 +#: ../../Zotlabs/Module/Connedit.php:581 msgid "Delete this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:590 ../../include/widgets.php:493 +#: ../../Zotlabs/Module/Connedit.php:596 ../../include/widgets.php:493 msgid "Me" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:591 ../../include/widgets.php:494 +#: ../../Zotlabs/Module/Connedit.php:597 ../../include/widgets.php:494 msgid "Family" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:592 ../../Zotlabs/Module/Settings.php:342 +#: ../../Zotlabs/Module/Connedit.php:598 ../../Zotlabs/Module/Settings.php:342 #: ../../Zotlabs/Module/Settings.php:346 ../../Zotlabs/Module/Settings.php:347 #: ../../Zotlabs/Module/Settings.php:350 ../../Zotlabs/Module/Settings.php:361 -#: ../../include/widgets.php:495 ../../include/selectors.php:123 -#: ../../include/channel.php:389 ../../include/channel.php:390 -#: ../../include/channel.php:397 +#: ../../include/selectors.php:123 ../../include/channel.php:389 +#: ../../include/channel.php:390 ../../include/channel.php:397 +#: ../../include/widgets.php:495 msgid "Friends" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:593 ../../include/widgets.php:496 +#: ../../Zotlabs/Module/Connedit.php:599 ../../include/widgets.php:496 msgid "Acquaintances" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:594 +#: ../../Zotlabs/Module/Connedit.php:600 #: ../../Zotlabs/Module/Connections.php:92 #: ../../Zotlabs/Module/Connections.php:107 ../../include/widgets.php:497 msgid "All" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:654 +#: ../../Zotlabs/Module/Connedit.php:660 msgid "Approve this connection" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:654 +#: ../../Zotlabs/Module/Connedit.php:660 msgid "Accept connection to allow communication" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:659 +#: ../../Zotlabs/Module/Connedit.php:665 msgid "Set Affinity" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:662 +#: ../../Zotlabs/Module/Connedit.php:668 msgid "Set Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:665 +#: ../../Zotlabs/Module/Connedit.php:671 msgid "Set Affinity & Profile" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:698 +#: ../../Zotlabs/Module/Connedit.php:704 msgid "none" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:702 ../../include/widgets.php:614 +#: ../../Zotlabs/Module/Connedit.php:708 ../../include/widgets.php:614 msgid "Connection Default Permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:702 ../../include/items.php:3926 +#: ../../Zotlabs/Module/Connedit.php:708 ../../include/items.php:3937 #, php-format msgid "Connection: %s" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:703 +#: ../../Zotlabs/Module/Connedit.php:709 msgid "Apply these permissions automatically" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:703 +#: ../../Zotlabs/Module/Connedit.php:709 msgid "Connection requests will be approved without your interaction" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:705 +#: ../../Zotlabs/Module/Connedit.php:711 msgid "This connection's primary address is" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:706 +#: ../../Zotlabs/Module/Connedit.php:712 msgid "Available locations:" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:710 +#: ../../Zotlabs/Module/Connedit.php:716 msgid "" "The permissions indicated on this page will be applied to all new " "connections." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:711 +#: ../../Zotlabs/Module/Connedit.php:717 msgid "Connection Tools" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:713 +#: ../../Zotlabs/Module/Connedit.php:719 msgid "Slide to adjust your degree of friendship" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Module/Rate.php:159 +#: ../../Zotlabs/Module/Connedit.php:720 ../../Zotlabs/Module/Rate.php:159 #: ../../include/js_strings.php:20 msgid "Rating" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:715 +#: ../../Zotlabs/Module/Connedit.php:721 msgid "Slide to adjust your rating" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Module/Connedit.php:721 +#: ../../Zotlabs/Module/Connedit.php:722 ../../Zotlabs/Module/Connedit.php:727 msgid "Optionally explain your rating" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:718 +#: ../../Zotlabs/Module/Connedit.php:724 msgid "Custom Filter" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:719 +#: ../../Zotlabs/Module/Connedit.php:725 msgid "Only import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:719 ../../Zotlabs/Module/Connedit.php:720 +#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Module/Connedit.php:726 msgid "" "words one per line or #tags or /patterns/ or lang=xx, leave blank to import " "all posts" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:720 +#: ../../Zotlabs/Module/Connedit.php:726 msgid "Do not import posts with this text" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:722 +#: ../../Zotlabs/Module/Connedit.php:728 msgid "This information is public!" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:727 +#: ../../Zotlabs/Module/Connedit.php:733 msgid "Connection Pending Approval" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:730 +#: ../../Zotlabs/Module/Connedit.php:736 msgid "inherited" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:732 +#: ../../Zotlabs/Module/Connedit.php:738 #, php-format msgid "" "Please choose the profile you would like to display to %s when viewing your " "profile securely." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:734 +#: ../../Zotlabs/Module/Connedit.php:740 msgid "Their Settings" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:735 +#: ../../Zotlabs/Module/Connedit.php:741 msgid "My Settings" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:737 +#: ../../Zotlabs/Module/Connedit.php:743 msgid "Individual Permissions" msgstr "" -#: ../../Zotlabs/Module/Connedit.php:738 +#: ../../Zotlabs/Module/Connedit.php:744 msgid "" "Some permissions may be inherited from your channel's <a href=\"settings" "\"><strong>privacy settings</strong></a>, which have higher priority than " "individual settings. You can <strong>not</strong> change those settings here." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:739 +#: ../../Zotlabs/Module/Connedit.php:745 msgid "" "Some permissions may be inherited from your channel's <a href=\"settings" "\"><strong>privacy settings</strong></a>, which have higher priority than " @@ -884,7 +887,7 @@ msgid "" "any impact unless the inherited setting changes." msgstr "" -#: ../../Zotlabs/Module/Connedit.php:740 +#: ../../Zotlabs/Module/Connedit.php:746 msgid "Last update:" msgstr "" @@ -914,12 +917,12 @@ msgstr "" msgid "Homepage: " msgstr "" -#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1183 +#: ../../Zotlabs/Module/Directory.php:306 ../../include/channel.php:1164 msgid "Age:" msgstr "" #: ../../Zotlabs/Module/Directory.php:311 ../../include/event.php:52 -#: ../../include/event.php:84 ../../include/channel.php:1027 +#: ../../include/event.php:84 ../../include/channel.php:1008 #: ../../include/bb2diaspora.php:507 msgid "Location:" msgstr "" @@ -928,18 +931,18 @@ msgstr "" msgid "Description:" msgstr "" -#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1199 +#: ../../Zotlabs/Module/Directory.php:322 ../../include/channel.php:1180 msgid "Hometown:" msgstr "" -#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1207 +#: ../../Zotlabs/Module/Directory.php:324 ../../include/channel.php:1188 msgid "About:" msgstr "" #: ../../Zotlabs/Module/Directory.php:325 ../../Zotlabs/Module/Match.php:68 -#: ../../Zotlabs/Module/Suggest.php:56 ../../include/widgets.php:147 -#: ../../include/widgets.php:184 ../../include/connections.php:78 -#: ../../include/conversation.php:956 ../../include/channel.php:1012 +#: ../../Zotlabs/Module/Suggest.php:56 ../../include/conversation.php:959 +#: ../../include/channel.php:993 ../../include/connections.php:78 +#: ../../include/widgets.php:147 ../../include/widgets.php:184 msgid "Connect" msgstr "" @@ -1018,7 +1021,7 @@ msgstr "" #: ../../Zotlabs/Module/Display.php:40 ../../Zotlabs/Module/Filestorage.php:33 #: ../../Zotlabs/Module/Admin.php:164 ../../Zotlabs/Module/Admin.php:1255 #: ../../Zotlabs/Module/Admin.php:1561 ../../Zotlabs/Module/Thing.php:89 -#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3359 +#: ../../Zotlabs/Module/Viewsrc.php:24 ../../include/items.php:3371 msgid "Item not found." msgstr "" @@ -1028,7 +1031,7 @@ msgstr "" msgid "Item not found" msgstr "" -#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1228 +#: ../../Zotlabs/Module/Editblock.php:124 ../../include/conversation.php:1243 msgid "Title (optional)" msgstr "" @@ -1074,7 +1077,7 @@ msgstr "" #: ../../Zotlabs/Module/Connections.php:76 #: ../../Zotlabs/Module/Connections.php:86 ../../Zotlabs/Module/Menu.php:116 -#: ../../include/conversation.php:1535 +#: ../../include/conversation.php:1550 msgid "New" msgstr "" @@ -1167,7 +1170,7 @@ msgid "Connections" msgstr "" #: ../../Zotlabs/Module/Connections.php:306 ../../Zotlabs/Module/Search.php:44 -#: ../../Zotlabs/Lib/Apps.php:228 ../../include/text.php:945 +#: ../../Zotlabs/Lib/Apps.php:229 ../../include/text.php:945 #: ../../include/text.php:957 ../../include/nav.php:165 #: ../../include/acl_selectors.php:276 msgid "Search" @@ -1197,7 +1200,7 @@ msgid "Image resize failed." msgstr "" #: ../../Zotlabs/Module/Cover_photo.php:168 -#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:144 +#: ../../Zotlabs/Module/Profile_photo.php:192 ../../include/photos.php:148 msgid "Unable to process image" msgstr "" @@ -1211,30 +1214,30 @@ msgstr "" msgid "Unable to process image." msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4270 +#: ../../Zotlabs/Module/Cover_photo.php:233 ../../include/items.php:4298 msgid "female" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4271 +#: ../../Zotlabs/Module/Cover_photo.php:234 ../../include/items.php:4299 #, php-format msgid "%1$s updated her %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4272 +#: ../../Zotlabs/Module/Cover_photo.php:235 ../../include/items.php:4300 msgid "male" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4273 +#: ../../Zotlabs/Module/Cover_photo.php:236 ../../include/items.php:4301 #, php-format msgid "%1$s updated his %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4275 +#: ../../Zotlabs/Module/Cover_photo.php:238 ../../include/items.php:4303 #, php-format msgid "%1$s updated their %2$s" msgstr "" -#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1661 +#: ../../Zotlabs/Module/Cover_photo.php:240 ../../include/channel.php:1642 msgid "cover photo" msgstr "" @@ -1324,8 +1327,8 @@ msgid "Event not found." msgstr "" #: ../../Zotlabs/Module/Events.php:254 ../../Zotlabs/Module/Like.php:373 -#: ../../Zotlabs/Module/Tagger.php:51 ../../include/event.php:949 -#: ../../include/text.php:1943 ../../include/conversation.php:123 +#: ../../Zotlabs/Module/Tagger.php:51 ../../include/text.php:1944 +#: ../../include/event.php:949 ../../include/conversation.php:123 msgid "event" msgstr "" @@ -1410,12 +1413,12 @@ msgid "Share this event" msgstr "" #: ../../Zotlabs/Module/Events.php:470 ../../Zotlabs/Module/Photos.php:1093 -#: ../../Zotlabs/Module/Webpages.php:194 ../../Zotlabs/Lib/ThreadItem.php:719 -#: ../../include/conversation.php:1187 ../../include/page_widgets.php:40 +#: ../../Zotlabs/Module/Webpages.php:202 ../../Zotlabs/Lib/ThreadItem.php:719 +#: ../../include/conversation.php:1198 ../../include/page_widgets.php:43 msgid "Preview" msgstr "" -#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1232 +#: ../../Zotlabs/Module/Events.php:471 ../../include/conversation.php:1247 msgid "Permission settings" msgstr "" @@ -1443,15 +1446,16 @@ msgstr "" msgid "Failed to remove event" msgstr "" -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:220 -#: ../../include/nav.php:92 ../../include/conversation.php:1632 +#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:221 +#: ../../include/conversation.php:1647 ../../include/nav.php:92 msgid "Photos" msgstr "" #: ../../Zotlabs/Module/Fbrowser.php:66 ../../Zotlabs/Module/Fbrowser.php:88 #: ../../Zotlabs/Module/Admin.php:1406 ../../Zotlabs/Module/Settings.php:591 #: ../../Zotlabs/Module/Settings.php:617 ../../Zotlabs/Module/Tagrm.php:15 -#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1259 +#: ../../Zotlabs/Module/Tagrm.php:138 ../../include/conversation.php:1235 +#: ../../include/conversation.php:1274 msgid "Cancel" msgstr "" @@ -1535,17 +1539,17 @@ msgstr "" msgid "mail delivered" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:126 -#: ../../Zotlabs/Module/Layouts.php:127 ../../Zotlabs/Module/Layouts.php:186 +#: ../../Zotlabs/Module/Editlayout.php:127 +#: ../../Zotlabs/Module/Layouts.php:128 ../../Zotlabs/Module/Layouts.php:188 msgid "Layout Name" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:127 -#: ../../Zotlabs/Module/Layouts.php:130 +#: ../../Zotlabs/Module/Editlayout.php:128 +#: ../../Zotlabs/Module/Layouts.php:131 msgid "Layout Description (Optional)" msgstr "" -#: ../../Zotlabs/Module/Editlayout.php:135 +#: ../../Zotlabs/Module/Editlayout.php:136 msgid "Edit Layout" msgstr "" @@ -1578,7 +1582,7 @@ msgid "Could not create privacy group." msgstr "" #: ../../Zotlabs/Module/Group.php:42 ../../Zotlabs/Module/Group.php:141 -#: ../../include/items.php:3893 +#: ../../include/items.php:3904 msgid "Privacy group not found." msgstr "" @@ -1658,7 +1662,7 @@ msgid "Help:" msgstr "" #: ../../Zotlabs/Module/Help.php:85 ../../Zotlabs/Module/Help.php:90 -#: ../../Zotlabs/Module/Layouts.php:183 ../../Zotlabs/Lib/Apps.php:223 +#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Lib/Apps.php:224 #: ../../include/nav.php:159 msgid "Help" msgstr "" @@ -1711,8 +1715,8 @@ msgstr "" msgid "Notify your contacts about this file" msgstr "" -#: ../../Zotlabs/Module/Apps.php:47 ../../include/widgets.php:102 -#: ../../include/nav.php:163 +#: ../../Zotlabs/Module/Apps.php:47 ../../include/nav.php:163 +#: ../../include/widgets.php:102 msgid "Apps" msgstr "" @@ -1816,23 +1820,23 @@ msgid "" "only once and leave this page open until finished." msgstr "" -#: ../../Zotlabs/Module/Item.php:178 +#: ../../Zotlabs/Module/Item.php:179 msgid "Unable to locate original post." msgstr "" -#: ../../Zotlabs/Module/Item.php:427 +#: ../../Zotlabs/Module/Item.php:428 msgid "Empty post discarded." msgstr "" -#: ../../Zotlabs/Module/Item.php:467 +#: ../../Zotlabs/Module/Item.php:468 msgid "Executable content type not permitted to this channel." msgstr "" -#: ../../Zotlabs/Module/Item.php:847 +#: ../../Zotlabs/Module/Item.php:848 msgid "Duplicate post suppressed." msgstr "" -#: ../../Zotlabs/Module/Item.php:977 +#: ../../Zotlabs/Module/Item.php:983 msgid "System error. Post not saved." msgstr "" @@ -1850,19 +1854,19 @@ msgstr "" msgid "You have reached your limit of %1$.0f webpages." msgstr "" -#: ../../Zotlabs/Module/Layouts.php:181 ../../include/text.php:2267 +#: ../../Zotlabs/Module/Layouts.php:183 ../../include/text.php:2268 msgid "Layouts" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:183 +#: ../../Zotlabs/Module/Layouts.php:185 msgid "Comanche page description language help" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:187 +#: ../../Zotlabs/Module/Layouts.php:189 msgid "Layout Description" msgstr "" -#: ../../Zotlabs/Module/Layouts.php:192 +#: ../../Zotlabs/Module/Layouts.php:194 msgid "Download PDL file" msgstr "" @@ -1894,12 +1898,12 @@ msgstr "" #: ../../Zotlabs/Module/Id.php:17 ../../Zotlabs/Module/Id.php:18 #: ../../Zotlabs/Module/Admin.php:1035 ../../Zotlabs/Module/Admin.php:1047 -#: ../../include/network.php:2151 ../../boot.php:1705 +#: ../../include/network.php:2176 ../../boot.php:1706 msgid "Email" msgstr "" #: ../../Zotlabs/Module/Id.php:19 ../../Zotlabs/Module/Id.php:20 -#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:236 +#: ../../Zotlabs/Module/Id.php:21 ../../Zotlabs/Lib/Apps.php:237 msgid "Profile Photo" msgstr "" @@ -1935,7 +1939,7 @@ msgstr "" msgid "Homepage URL" msgstr "" -#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:234 +#: ../../Zotlabs/Module/Id.php:30 ../../Zotlabs/Lib/Apps.php:235 msgid "Language" msgstr "" @@ -1985,12 +1989,12 @@ msgstr "" msgid "menu" msgstr "" -#: ../../Zotlabs/Module/Impel.php:196 +#: ../../Zotlabs/Module/Impel.php:187 #, php-format msgid "%s element installed" msgstr "" -#: ../../Zotlabs/Module/Impel.php:199 +#: ../../Zotlabs/Module/Impel.php:190 #, php-format msgid "%s element installation failed" msgstr "" @@ -2031,13 +2035,13 @@ msgid "Previous action reversed." msgstr "" #: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87 -#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1940 +#: ../../Zotlabs/Module/Tagger.php:47 ../../include/text.php:1941 #: ../../include/conversation.php:120 msgid "photo" msgstr "" #: ../../Zotlabs/Module/Like.php:371 ../../Zotlabs/Module/Subthread.php:87 -#: ../../include/text.php:1946 ../../include/conversation.php:148 +#: ../../include/text.php:1947 ../../include/conversation.php:148 msgid "status" msgstr "" @@ -2288,7 +2292,7 @@ msgid "Subject:" msgstr "" #: ../../Zotlabs/Module/Mail.php:251 ../../Zotlabs/Module/Mail.php:376 -#: ../../include/conversation.php:1220 +#: ../../include/conversation.php:1231 msgid "Attach file" msgstr "" @@ -2297,7 +2301,7 @@ msgid "Send" msgstr "" #: ../../Zotlabs/Module/Mail.php:256 ../../Zotlabs/Module/Mail.php:381 -#: ../../include/conversation.php:1251 +#: ../../include/conversation.php:1266 msgid "Set expiration date" msgstr "" @@ -2405,7 +2409,7 @@ msgid "" "Password reset failed." msgstr "" -#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1711 +#: ../../Zotlabs/Module/Lostpass.php:90 ../../boot.php:1712 msgid "Password Reset" msgstr "" @@ -2490,7 +2494,7 @@ msgstr "" msgid "Submit and proceed" msgstr "" -#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2266 +#: ../../Zotlabs/Module/Menu.php:107 ../../include/text.php:2267 msgid "Menus" msgstr "" @@ -2557,7 +2561,7 @@ msgctxt "mood" msgid "%1$s is %2$s" msgstr "" -#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:225 +#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Lib/Apps.php:226 msgid "Mood" msgstr "" @@ -2894,11 +2898,12 @@ msgid "Show Oldest First" msgstr "" #: ../../Zotlabs/Module/Photos.php:792 ../../Zotlabs/Module/Photos.php:1331 -#: ../../include/widgets.php:1499 +#: ../../Zotlabs/Module/Embedphotos.php:141 ../../include/widgets.php:1572 msgid "View Photo" msgstr "" -#: ../../Zotlabs/Module/Photos.php:823 ../../include/widgets.php:1516 +#: ../../Zotlabs/Module/Photos.php:823 +#: ../../Zotlabs/Module/Embedphotos.php:157 ../../include/widgets.php:1589 msgid "Edit Album" msgstr "" @@ -2976,7 +2981,7 @@ msgid "I don't like this (toggle)" msgstr "" #: ../../Zotlabs/Module/Photos.php:1073 ../../Zotlabs/Lib/ThreadItem.php:397 -#: ../../include/conversation.php:740 +#: ../../include/conversation.php:743 msgid "Please wait" msgstr "" @@ -2990,55 +2995,55 @@ msgstr "" msgid "Comment" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574 +#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:577 msgctxt "title" msgid "Likes" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:574 +#: ../../Zotlabs/Module/Photos.php:1107 ../../include/conversation.php:577 msgctxt "title" msgid "Dislikes" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575 +#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:578 msgctxt "title" msgid "Agree" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575 +#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:578 msgctxt "title" msgid "Disagree" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:575 +#: ../../Zotlabs/Module/Photos.php:1108 ../../include/conversation.php:578 msgctxt "title" msgid "Abstain" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576 +#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:579 msgctxt "title" msgid "Attending" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576 +#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:579 msgctxt "title" msgid "Not attending" msgstr "" -#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:576 +#: ../../Zotlabs/Module/Photos.php:1109 ../../include/conversation.php:579 msgctxt "title" msgid "Might attend" msgstr "" #: ../../Zotlabs/Module/Photos.php:1126 ../../Zotlabs/Module/Photos.php:1138 #: ../../Zotlabs/Lib/ThreadItem.php:181 ../../Zotlabs/Lib/ThreadItem.php:193 -#: ../../include/conversation.php:1717 +#: ../../include/conversation.php:1732 msgid "View all" msgstr "" #: ../../Zotlabs/Module/Photos.php:1130 ../../Zotlabs/Lib/ThreadItem.php:185 -#: ../../include/taxonomy.php:403 ../../include/conversation.php:1741 -#: ../../include/channel.php:1158 +#: ../../include/taxonomy.php:403 ../../include/conversation.php:1756 +#: ../../include/channel.php:1139 msgctxt "noun" msgid "Like" msgid_plural "Likes" @@ -3046,7 +3051,7 @@ msgstr[0] "" msgstr[1] "" #: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Lib/ThreadItem.php:190 -#: ../../include/conversation.php:1744 +#: ../../include/conversation.php:1759 msgctxt "noun" msgid "Dislike" msgid_plural "Dislikes" @@ -3125,7 +3130,7 @@ msgstr "" msgid "Login failed." msgstr "" -#: ../../Zotlabs/Module/Page.php:133 +#: ../../Zotlabs/Module/Page.php:131 msgid "" "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, " @@ -3170,8 +3175,8 @@ msgstr "" msgid "Layout Help" msgstr "" -#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:226 -#: ../../include/conversation.php:960 +#: ../../Zotlabs/Module/Poke.php:168 ../../Zotlabs/Lib/Apps.php:227 +#: ../../include/conversation.php:963 msgid "Poke" msgstr "" @@ -3290,7 +3295,7 @@ msgid "View this profile" msgstr "" #: ../../Zotlabs/Module/Profiles.php:689 ../../Zotlabs/Module/Profiles.php:771 -#: ../../include/channel.php:959 +#: ../../include/channel.php:940 msgid "Edit visibility" msgstr "" @@ -3302,7 +3307,7 @@ msgstr "" msgid "Change cover photo" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:930 +#: ../../Zotlabs/Module/Profiles.php:692 ../../include/channel.php:911 msgid "Change profile photo" msgstr "" @@ -3322,8 +3327,8 @@ msgstr "" msgid "Add profile things" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:697 ../../include/widgets.php:105 -#: ../../include/conversation.php:1526 +#: ../../Zotlabs/Module/Profiles.php:697 ../../include/conversation.php:1541 +#: ../../include/widgets.php:105 msgid "Personal" msgstr "" @@ -3463,12 +3468,12 @@ msgstr "" msgid "My other channels" msgstr "" -#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:955 +#: ../../Zotlabs/Module/Profiles.php:767 ../../include/channel.php:936 msgid "Profile Image" msgstr "" #: ../../Zotlabs/Module/Profiles.php:777 ../../include/nav.php:88 -#: ../../include/channel.php:937 +#: ../../include/channel.php:918 msgid "Edit Profiles" msgstr "" @@ -3490,7 +3495,7 @@ msgstr "" msgid "Profile Visibility Editor" msgstr "" -#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1249 +#: ../../Zotlabs/Module/Profperm.php:117 ../../include/channel.php:1230 msgid "Profile" msgstr "" @@ -3502,7 +3507,7 @@ msgstr "" msgid "Visible To" msgstr "" -#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1270 +#: ../../Zotlabs/Module/Pubsites.php:22 ../../include/widgets.php:1343 msgid "Public Hubs" msgstr "" @@ -3536,7 +3541,7 @@ msgid "Software" msgstr "" #: ../../Zotlabs/Module/Pubsites.php:31 ../../Zotlabs/Module/Ratings.php:103 -#: ../../include/conversation.php:959 +#: ../../include/conversation.php:962 msgid "Ratings" msgstr "" @@ -3662,7 +3667,7 @@ msgstr "" msgid "Site settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2841 +#: ../../Zotlabs/Module/Admin.php:400 ../../include/text.php:2845 msgid "Default" msgstr "" @@ -3698,7 +3703,7 @@ msgstr "" msgid "My site offers free accounts with optional paid upgrades" msgstr "" -#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1382 +#: ../../Zotlabs/Module/Admin.php:491 ../../include/widgets.php:1455 msgid "Site" msgstr "" @@ -4047,7 +4052,7 @@ msgid "" "embedded content from that site is explicitly blocked." msgstr "" -#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1385 +#: ../../Zotlabs/Module/Admin.php:756 ../../include/widgets.php:1458 msgid "Security" msgstr "" @@ -4214,7 +4219,7 @@ msgid "Account '%s' unblocked" msgstr "" #: ../../Zotlabs/Module/Admin.php:1031 ../../Zotlabs/Module/Admin.php:1044 -#: ../../include/widgets.php:1383 +#: ../../include/widgets.php:1456 msgid "Accounts" msgstr "" @@ -4320,7 +4325,7 @@ msgstr "" msgid "Channel '%s' code disallowed" msgstr "" -#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1384 +#: ../../Zotlabs/Module/Admin.php:1210 ../../include/widgets.php:1457 msgid "Channels" msgstr "" @@ -4340,7 +4345,7 @@ msgstr "" msgid "Disallow Code" msgstr "" -#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1611 +#: ../../Zotlabs/Module/Admin.php:1218 ../../include/conversation.php:1626 msgid "Channel" msgstr "" @@ -4379,7 +4384,7 @@ msgid "Enable" msgstr "" #: ../../Zotlabs/Module/Admin.php:1330 ../../Zotlabs/Module/Admin.php:1420 -#: ../../include/widgets.php:1387 +#: ../../include/widgets.php:1460 msgid "Plugins" msgstr "" @@ -4388,8 +4393,8 @@ msgid "Toggle" msgstr "" #: ../../Zotlabs/Module/Admin.php:1332 ../../Zotlabs/Module/Admin.php:1615 -#: ../../Zotlabs/Lib/Apps.php:215 ../../include/widgets.php:638 -#: ../../include/nav.php:208 +#: ../../Zotlabs/Lib/Apps.php:215 ../../include/nav.php:208 +#: ../../include/widgets.php:638 msgid "Settings" msgstr "" @@ -4445,7 +4450,7 @@ msgstr "" msgid "Install new repo" msgstr "" -#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:330 +#: ../../Zotlabs/Module/Admin.php:1405 ../../Zotlabs/Lib/Apps.php:333 msgid "Install" msgstr "" @@ -4462,7 +4467,7 @@ msgid "Install a New Plugin Repository" msgstr "" #: ../../Zotlabs/Module/Admin.php:1435 ../../Zotlabs/Module/Settings.php:77 -#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:330 +#: ../../Zotlabs/Module/Settings.php:616 ../../Zotlabs/Lib/Apps.php:333 msgid "Update" msgstr "" @@ -4479,7 +4484,7 @@ msgid "Screenshot" msgstr "" #: ../../Zotlabs/Module/Admin.php:1613 ../../Zotlabs/Module/Admin.php:1647 -#: ../../include/widgets.php:1388 +#: ../../include/widgets.php:1461 msgid "Themes" msgstr "" @@ -4495,8 +4500,8 @@ msgstr "" msgid "Log settings updated." msgstr "" -#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1409 -#: ../../include/widgets.php:1419 +#: ../../Zotlabs/Module/Admin.php:1732 ../../include/widgets.php:1482 +#: ../../include/widgets.php:1492 msgid "Logs" msgstr "" @@ -4562,7 +4567,7 @@ msgstr "" msgid "Edit Profile Field" msgstr "" -#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1390 +#: ../../Zotlabs/Module/Admin.php:2106 ../../include/widgets.php:1463 msgid "Profile Fields" msgstr "" @@ -4745,7 +4750,7 @@ msgid "Membership on this site is by invitation only." msgstr "" #: ../../Zotlabs/Module/Register.php:262 ../../include/nav.php:147 -#: ../../boot.php:1685 +#: ../../boot.php:1686 msgid "Register" msgstr "" @@ -5172,7 +5177,7 @@ msgstr "" msgid "Basic Settings" msgstr "" -#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1140 +#: ../../Zotlabs/Module/Settings.php:1040 ../../include/channel.php:1121 msgid "Full Name:" msgstr "" @@ -5993,8 +5998,8 @@ msgstr "" msgid "*" msgstr "" -#: ../../Zotlabs/Module/Sources.php:96 ../../include/widgets.php:630 -#: ../../include/features.php:71 +#: ../../Zotlabs/Module/Sources.php:96 ../../include/features.php:71 +#: ../../include/widgets.php:630 msgid "Channel Sources" msgstr "" @@ -6070,11 +6075,11 @@ msgstr "" msgid "Ignore/Hide" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:256 +#: ../../Zotlabs/Module/Tagger.php:55 ../../include/bbcode.php:263 msgid "post" msgstr "" -#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1948 +#: ../../Zotlabs/Module/Tagger.php:57 ../../include/text.php:1949 #: ../../include/conversation.php:150 msgid "comment" msgstr "" @@ -6228,20 +6233,20 @@ msgstr "" msgid "Source of Item" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:184 ../../Zotlabs/Lib/Apps.php:217 -#: ../../include/nav.php:106 ../../include/conversation.php:1685 +#: ../../Zotlabs/Module/Webpages.php:192 ../../Zotlabs/Lib/Apps.php:217 +#: ../../include/conversation.php:1700 ../../include/nav.php:106 msgid "Webpages" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:195 ../../include/page_widgets.php:41 +#: ../../Zotlabs/Module/Webpages.php:203 ../../include/page_widgets.php:44 msgid "Actions" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:196 ../../include/page_widgets.php:42 +#: ../../Zotlabs/Module/Webpages.php:204 ../../include/page_widgets.php:45 msgid "Page Link" msgstr "" -#: ../../Zotlabs/Module/Webpages.php:197 +#: ../../Zotlabs/Module/Webpages.php:205 msgid "Page Title" msgstr "" @@ -6253,90 +6258,24 @@ msgstr "" msgid "Lookup xchan beginning with (or webbie): " msgstr "" -#: ../../Zotlabs/Lib/Apps.php:204 -msgid "Site Admin" +#: ../../Zotlabs/Module/Wiki.php:75 ../../Zotlabs/Lib/Apps.php:218 +msgid "Wiki" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:205 -msgid "Bug Report" +#: ../../Zotlabs/Module/Wiki.php:76 +msgid "Sandbox" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:206 -msgid "View Bookmarks" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:207 -msgid "My Chatrooms" +#: ../../Zotlabs/Module/Wiki.php:156 +msgid "Enter the name of your new wiki:" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:209 -msgid "Firefox Share" +#: ../../Zotlabs/Module/Wiki.php:157 +msgid "Enter the name of the new page:" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:210 -msgid "Remote Diagnostics" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89 -msgid "Suggest Channels" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110 -#: ../../boot.php:1703 -msgid "Login" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179 -msgid "Grid" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:218 ../../include/nav.php:182 -msgid "Channel Home" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:221 ../../include/nav.php:201 -#: ../../include/conversation.php:1649 ../../include/conversation.php:1652 -msgid "Events" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:222 ../../include/nav.php:167 -msgid "Directory" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:224 ../../include/nav.php:193 -msgid "Mail" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:227 ../../include/nav.php:96 -msgid "Chat" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:229 -msgid "Probe" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:230 -msgid "Suggest" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:231 -msgid "Random Channel" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:232 -msgid "Invite" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:233 ../../include/widgets.php:1386 -msgid "Features" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:235 -msgid "Post" -msgstr "" - -#: ../../Zotlabs/Lib/Apps.php:335 -msgid "Purchase" +#: ../../Zotlabs/Module/Wiki.php:158 +msgid "Enter the new name:" msgstr "" #: ../../Zotlabs/Lib/Chatroom.php:27 @@ -6359,19 +6298,19 @@ msgstr "" msgid "Room is full" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1823 +#: ../../Zotlabs/Lib/Enotify.php:60 ../../include/network.php:1848 msgid "$Projectname Notification" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1824 +#: ../../Zotlabs/Lib/Enotify.php:61 ../../include/network.php:1849 msgid "$projectname" msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1826 +#: ../../Zotlabs/Lib/Enotify.php:63 ../../include/network.php:1851 msgid "Thank You," msgstr "" -#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1828 +#: ../../Zotlabs/Lib/Enotify.php:65 ../../include/network.php:1853 #, php-format msgid "%s Administrator" msgstr "" @@ -6563,11 +6502,11 @@ msgstr "" msgid "commented on %s's post" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:664 +#: ../../Zotlabs/Lib/ThreadItem.php:95 ../../include/conversation.php:667 msgid "Private Message" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:656 +#: ../../Zotlabs/Lib/ThreadItem.php:132 ../../include/conversation.php:659 msgid "Select" msgstr "" @@ -6615,11 +6554,11 @@ msgstr "" msgid "starred" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:671 +#: ../../Zotlabs/Lib/ThreadItem.php:234 ../../include/conversation.php:674 msgid "Message signature validated" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:672 +#: ../../Zotlabs/Lib/ThreadItem.php:235 ../../include/conversation.php:675 msgid "Message signature incorrect" msgstr "" @@ -6675,17 +6614,17 @@ msgstr "" msgid "via Wall-To-Wall:" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:719 +#: ../../Zotlabs/Lib/ThreadItem.php:341 ../../include/conversation.php:722 #, php-format msgid "from %s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:722 +#: ../../Zotlabs/Lib/ThreadItem.php:344 ../../include/conversation.php:725 #, php-format msgid "last edited: %s" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:723 +#: ../../Zotlabs/Lib/ThreadItem.php:345 ../../include/conversation.php:726 #, php-format msgid "Expires: %s" msgstr "" @@ -6706,23 +6645,23 @@ msgstr "" msgid "[+] show all" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1215 +#: ../../Zotlabs/Lib/ThreadItem.php:711 ../../include/conversation.php:1226 msgid "Bold" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1216 +#: ../../Zotlabs/Lib/ThreadItem.php:712 ../../include/conversation.php:1227 msgid "Italic" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1217 +#: ../../Zotlabs/Lib/ThreadItem.php:713 ../../include/conversation.php:1228 msgid "Underline" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1218 +#: ../../Zotlabs/Lib/ThreadItem.php:714 ../../include/conversation.php:1229 msgid "Quote" msgstr "" -#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1219 +#: ../../Zotlabs/Lib/ThreadItem.php:715 ../../include/conversation.php:1230 msgid "Code" msgstr "" @@ -6738,173 +6677,172 @@ msgstr "" msgid "Video" msgstr "" -#: ../../include/Import/import_diaspora.php:16 -msgid "No username found in import file." +#: ../../Zotlabs/Lib/Apps.php:204 +msgid "Site Admin" msgstr "" -#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50 -msgid "Unable to create a unique channel address. Import failed." +#: ../../Zotlabs/Lib/Apps.php:205 +msgid "Bug Report" msgstr "" -#: ../../include/dba/dba_driver.php:171 -#, php-format -msgid "Cannot locate DNS info for database server '%s'" +#: ../../Zotlabs/Lib/Apps.php:206 +msgid "View Bookmarks" msgstr "" -#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 -#: ../../include/widgets.php:46 ../../include/widgets.php:429 -#: ../../include/contact_widgets.php:91 -msgid "Categories" +#: ../../Zotlabs/Lib/Apps.php:207 +msgid "My Chatrooms" msgstr "" -#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 -msgid "Tags" +#: ../../Zotlabs/Lib/Apps.php:209 +msgid "Firefox Share" msgstr "" -#: ../../include/taxonomy.php:293 -msgid "Keywords" +#: ../../Zotlabs/Lib/Apps.php:210 +msgid "Remote Diagnostics" msgstr "" -#: ../../include/taxonomy.php:314 -msgid "have" +#: ../../Zotlabs/Lib/Apps.php:211 ../../include/features.php:89 +msgid "Suggest Channels" msgstr "" -#: ../../include/taxonomy.php:314 -msgid "has" +#: ../../Zotlabs/Lib/Apps.php:212 ../../include/nav.php:110 +#: ../../boot.php:1704 +msgid "Login" msgstr "" -#: ../../include/taxonomy.php:315 -msgid "want" +#: ../../Zotlabs/Lib/Apps.php:214 ../../include/nav.php:179 +msgid "Grid" msgstr "" -#: ../../include/taxonomy.php:315 -msgid "wants" +#: ../../Zotlabs/Lib/Apps.php:219 ../../include/nav.php:182 +msgid "Channel Home" msgstr "" -#: ../../include/taxonomy.php:316 -msgid "likes" +#: ../../Zotlabs/Lib/Apps.php:222 ../../include/conversation.php:1664 +#: ../../include/conversation.php:1667 ../../include/nav.php:201 +msgid "Events" msgstr "" -#: ../../include/taxonomy.php:317 -msgid "dislikes" +#: ../../Zotlabs/Lib/Apps.php:223 ../../include/nav.php:167 +msgid "Directory" msgstr "" -#: ../../include/event.php:22 ../../include/event.php:69 -#: ../../include/bb2diaspora.php:485 -msgid "l F d, Y \\@ g:i A" +#: ../../Zotlabs/Lib/Apps.php:225 ../../include/nav.php:193 +msgid "Mail" msgstr "" -#: ../../include/event.php:30 ../../include/event.php:73 -#: ../../include/bb2diaspora.php:491 -msgid "Starts:" +#: ../../Zotlabs/Lib/Apps.php:228 ../../include/nav.php:96 +msgid "Chat" msgstr "" -#: ../../include/event.php:40 ../../include/event.php:77 -#: ../../include/bb2diaspora.php:499 -msgid "Finishes:" +#: ../../Zotlabs/Lib/Apps.php:230 +msgid "Probe" msgstr "" -#: ../../include/event.php:812 -msgid "This event has been added to your calendar." +#: ../../Zotlabs/Lib/Apps.php:231 +msgid "Suggest" msgstr "" -#: ../../include/event.php:1012 -msgid "Not specified" +#: ../../Zotlabs/Lib/Apps.php:232 +msgid "Random Channel" msgstr "" -#: ../../include/event.php:1013 -msgid "Needs Action" +#: ../../Zotlabs/Lib/Apps.php:233 +msgid "Invite" msgstr "" -#: ../../include/event.php:1014 -msgid "Completed" +#: ../../Zotlabs/Lib/Apps.php:234 ../../include/widgets.php:1459 +msgid "Features" msgstr "" -#: ../../include/event.php:1015 -msgid "In Process" +#: ../../Zotlabs/Lib/Apps.php:236 +msgid "Post" msgstr "" -#: ../../include/event.php:1016 -msgid "Cancelled" +#: ../../Zotlabs/Lib/Apps.php:338 +msgid "Purchase" msgstr "" -#: ../../include/import.php:29 -msgid "" -"Cannot create a duplicate channel identifier on this system. Import failed." +#: ../../include/Import/import_diaspora.php:16 +msgid "No username found in import file." msgstr "" -#: ../../include/import.php:76 -msgid "Channel clone failed. Import failed." +#: ../../include/Import/import_diaspora.php:41 ../../include/import.php:50 +msgid "Unable to create a unique channel address. Import failed." msgstr "" -#: ../../include/items.php:892 ../../include/items.php:937 -msgid "(Unknown)" +#: ../../include/dba/dba_driver.php:171 +#, php-format +msgid "Cannot locate DNS info for database server '%s'" msgstr "" -#: ../../include/items.php:1136 -msgid "Visible to anybody on the internet." +#: ../../include/taxonomy.php:188 ../../include/taxonomy.php:270 +#: ../../include/contact_widgets.php:91 ../../include/widgets.php:46 +#: ../../include/widgets.php:429 +msgid "Categories" msgstr "" -#: ../../include/items.php:1138 -msgid "Visible to you only." +#: ../../include/taxonomy.php:228 ../../include/taxonomy.php:249 +msgid "Tags" msgstr "" -#: ../../include/items.php:1140 -msgid "Visible to anybody in this network." +#: ../../include/taxonomy.php:293 +msgid "Keywords" msgstr "" -#: ../../include/items.php:1142 -msgid "Visible to anybody authenticated." +#: ../../include/taxonomy.php:314 +msgid "have" msgstr "" -#: ../../include/items.php:1144 -#, php-format -msgid "Visible to anybody on %s." +#: ../../include/taxonomy.php:314 +msgid "has" msgstr "" -#: ../../include/items.php:1146 -msgid "Visible to all connections." +#: ../../include/taxonomy.php:315 +msgid "want" msgstr "" -#: ../../include/items.php:1148 -msgid "Visible to approved connections." +#: ../../include/taxonomy.php:315 +msgid "wants" msgstr "" -#: ../../include/items.php:1150 -msgid "Visible to specific connections." +#: ../../include/taxonomy.php:316 +msgid "likes" msgstr "" -#: ../../include/items.php:3909 -msgid "Privacy group is empty." +#: ../../include/taxonomy.php:317 +msgid "dislikes" msgstr "" -#: ../../include/items.php:3916 +#: ../../include/photos.php:114 #, php-format -msgid "Privacy group: %s" +msgid "Image exceeds website size limit of %lu bytes" msgstr "" -#: ../../include/items.php:3928 -msgid "Connection not found." +#: ../../include/photos.php:121 +msgid "Image file is empty." msgstr "" -#: ../../include/items.php:4277 -msgid "profile photo" +#: ../../include/photos.php:259 +msgid "Photo storage failed." msgstr "" -#: ../../include/message.php:20 -msgid "No recipient provided." +#: ../../include/photos.php:299 +msgid "a new photo" msgstr "" -#: ../../include/message.php:25 -msgid "[no subject]" +#: ../../include/photos.php:303 +#, php-format +msgctxt "photo_upload" +msgid "%1$s posted %2$s to %3$s" msgstr "" -#: ../../include/message.php:45 -msgid "Unable to determine sender." +#: ../../include/photos.php:506 ../../include/conversation.php:1650 +msgid "Photo Albums" msgstr "" -#: ../../include/message.php:222 -msgid "Stored post could not be verified." +#: ../../include/photos.php:510 +msgid "Upload New Photos" msgstr "" #: ../../include/text.php:428 @@ -7165,298 +7103,396 @@ msgstr "" msgid "remove from file" msgstr "" -#: ../../include/text.php:1753 ../../include/text.php:1824 +#: ../../include/text.php:1754 ../../include/text.php:1825 msgid "default" msgstr "" -#: ../../include/text.php:1761 +#: ../../include/text.php:1762 msgid "Page layout" msgstr "" -#: ../../include/text.php:1761 +#: ../../include/text.php:1762 msgid "You can create your own with the layouts tool" msgstr "" -#: ../../include/text.php:1803 +#: ../../include/text.php:1804 msgid "Page content type" msgstr "" -#: ../../include/text.php:1836 +#: ../../include/text.php:1837 msgid "Select an alternate language" msgstr "" -#: ../../include/text.php:1953 +#: ../../include/text.php:1954 msgid "activity" msgstr "" -#: ../../include/text.php:2262 +#: ../../include/text.php:2263 msgid "Design Tools" msgstr "" -#: ../../include/text.php:2268 +#: ../../include/text.php:2269 msgid "Pages" msgstr "" -#: ../../include/widgets.php:103 -msgid "System" +#: ../../include/event.php:22 ../../include/event.php:69 +#: ../../include/bb2diaspora.php:485 +msgid "l F d, Y \\@ g:i A" msgstr "" -#: ../../include/widgets.php:106 -msgid "New App" +#: ../../include/event.php:30 ../../include/event.php:73 +#: ../../include/bb2diaspora.php:491 +msgid "Starts:" msgstr "" -#: ../../include/widgets.php:154 -msgid "Suggestions" +#: ../../include/event.php:40 ../../include/event.php:77 +#: ../../include/bb2diaspora.php:499 +msgid "Finishes:" msgstr "" -#: ../../include/widgets.php:155 -msgid "See more..." +#: ../../include/event.php:812 +msgid "This event has been added to your calendar." msgstr "" -#: ../../include/widgets.php:175 -#, php-format -msgid "You have %1$.0f of %2$.0f allowed connections." +#: ../../include/event.php:1012 +msgid "Not specified" msgstr "" -#: ../../include/widgets.php:181 -msgid "Add New Connection" +#: ../../include/event.php:1013 +msgid "Needs Action" msgstr "" -#: ../../include/widgets.php:182 -msgid "Enter channel address" +#: ../../include/event.php:1014 +msgid "Completed" msgstr "" -#: ../../include/widgets.php:183 -msgid "Examples: bob@example.com, https://example.com/barbara" +#: ../../include/event.php:1015 +msgid "In Process" msgstr "" -#: ../../include/widgets.php:199 -msgid "Notes" +#: ../../include/event.php:1016 +msgid "Cancelled" msgstr "" -#: ../../include/widgets.php:273 -msgid "Remove term" +#: ../../include/message.php:20 +msgid "No recipient provided." msgstr "" -#: ../../include/widgets.php:281 ../../include/features.php:84 -msgid "Saved Searches" +#: ../../include/message.php:25 +msgid "[no subject]" msgstr "" -#: ../../include/widgets.php:282 ../../include/group.php:316 -msgid "add" +#: ../../include/message.php:45 +msgid "Unable to determine sender." msgstr "" -#: ../../include/widgets.php:310 ../../include/contact_widgets.php:53 -#: ../../include/features.php:98 -msgid "Saved Folders" +#: ../../include/message.php:222 +msgid "Stored post could not be verified." msgstr "" -#: ../../include/widgets.php:313 ../../include/widgets.php:432 -#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 -msgid "Everything" +#: ../../include/conversation.php:204 +#, php-format +msgid "%1$s is now connected with %2$s" msgstr "" -#: ../../include/widgets.php:354 -msgid "Archives" +#: ../../include/conversation.php:239 +#, php-format +msgid "%1$s poked %2$s" msgstr "" -#: ../../include/widgets.php:516 -msgid "Refresh" +#: ../../include/conversation.php:694 +#, php-format +msgid "View %s's profile @ %s" msgstr "" -#: ../../include/widgets.php:556 -msgid "Account settings" +#: ../../include/conversation.php:713 +msgid "Categories:" msgstr "" -#: ../../include/widgets.php:562 -msgid "Channel settings" +#: ../../include/conversation.php:714 +msgid "Filed under:" msgstr "" -#: ../../include/widgets.php:571 -msgid "Additional features" +#: ../../include/conversation.php:741 +msgid "View in context" msgstr "" -#: ../../include/widgets.php:578 -msgid "Feature/Addon settings" +#: ../../include/conversation.php:850 +msgid "remove" msgstr "" -#: ../../include/widgets.php:584 -msgid "Display settings" +#: ../../include/conversation.php:854 ../../include/nav.php:247 +msgid "Loading..." msgstr "" -#: ../../include/widgets.php:591 -msgid "Manage locations" +#: ../../include/conversation.php:855 +msgid "Delete Selected Items" msgstr "" -#: ../../include/widgets.php:600 -msgid "Export channel" +#: ../../include/conversation.php:951 +msgid "View Source" msgstr "" -#: ../../include/widgets.php:607 -msgid "Connected apps" +#: ../../include/conversation.php:952 +msgid "Follow Thread" msgstr "" -#: ../../include/widgets.php:622 -msgid "Premium Channel Settings" +#: ../../include/conversation.php:953 +msgid "Unfollow Thread" msgstr "" -#: ../../include/widgets.php:651 -msgid "Private Mail Menu" +#: ../../include/conversation.php:958 +msgid "Activity/Posts" msgstr "" -#: ../../include/widgets.php:653 -msgid "Combined View" +#: ../../include/conversation.php:960 +msgid "Edit Connection" msgstr "" -#: ../../include/widgets.php:658 ../../include/nav.php:196 -msgid "Inbox" +#: ../../include/conversation.php:961 +msgid "Message" msgstr "" -#: ../../include/widgets.php:663 ../../include/nav.php:197 -msgid "Outbox" +#: ../../include/conversation.php:1078 +#, php-format +msgid "%s likes this." msgstr "" -#: ../../include/widgets.php:668 ../../include/nav.php:198 -msgid "New Message" +#: ../../include/conversation.php:1078 +#, php-format +msgid "%s doesn't like this." msgstr "" -#: ../../include/widgets.php:685 ../../include/widgets.php:697 -msgid "Conversations" +#: ../../include/conversation.php:1082 +#, php-format +msgid "<span %1$s>%2$d people</span> like this." +msgid_plural "<span %1$s>%2$d people</span> like this." +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1084 +#, php-format +msgid "<span %1$s>%2$d people</span> don't like this." +msgid_plural "<span %1$s>%2$d people</span> don't like this." +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1090 +msgid "and" msgstr "" -#: ../../include/widgets.php:689 -msgid "Received Messages" +#: ../../include/conversation.php:1093 +#, php-format +msgid ", and %d other people" +msgid_plural ", and %d other people" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1094 +#, php-format +msgid "%s like this." msgstr "" -#: ../../include/widgets.php:693 -msgid "Sent Messages" +#: ../../include/conversation.php:1094 +#, php-format +msgid "%s don't like this." msgstr "" -#: ../../include/widgets.php:707 -msgid "No messages." +#: ../../include/conversation.php:1133 +msgid "Set your location" msgstr "" -#: ../../include/widgets.php:725 -msgid "Delete conversation" +#: ../../include/conversation.php:1134 +msgid "Clear browser location" msgstr "" -#: ../../include/widgets.php:751 -msgid "Events Menu" +#: ../../include/conversation.php:1150 +msgid "Embed image from photo albums" msgstr "" -#: ../../include/widgets.php:752 -msgid "Day View" +#: ../../include/conversation.php:1182 +msgid "Tag term:" msgstr "" -#: ../../include/widgets.php:753 -msgid "Week View" +#: ../../include/conversation.php:1183 +msgid "Where are you right now?" msgstr "" -#: ../../include/widgets.php:754 -msgid "Month View" +#: ../../include/conversation.php:1186 +msgid "Choose images to embed" msgstr "" -#: ../../include/widgets.php:766 -msgid "Events Tools" +#: ../../include/conversation.php:1187 +msgid "Choose an album" msgstr "" -#: ../../include/widgets.php:767 -msgid "Export Calendar" +#: ../../include/conversation.php:1188 +msgid "Choose a different album..." msgstr "" -#: ../../include/widgets.php:768 -msgid "Import Calendar" +#: ../../include/conversation.php:1189 +msgid "Error getting album list" msgstr "" -#: ../../include/widgets.php:842 ../../include/conversation.php:1662 -#: ../../include/conversation.php:1665 -msgid "Chatrooms" +#: ../../include/conversation.php:1190 +msgid "Error getting photo link" msgstr "" -#: ../../include/widgets.php:846 -msgid "Overview" +#: ../../include/conversation.php:1191 +msgid "Error getting album" msgstr "" -#: ../../include/widgets.php:853 -msgid "Chat Members" +#: ../../include/conversation.php:1221 +msgid "Page link name" msgstr "" -#: ../../include/widgets.php:876 -msgid "Bookmarked Chatrooms" +#: ../../include/conversation.php:1224 +msgid "Post as" msgstr "" -#: ../../include/widgets.php:899 -msgid "Suggested Chatrooms" +#: ../../include/conversation.php:1234 +msgid "Embed an image from your albums" msgstr "" -#: ../../include/widgets.php:1044 ../../include/widgets.php:1156 -msgid "photo/image" +#: ../../include/conversation.php:1236 ../../include/conversation.php:1273 +msgid "OK" msgstr "" -#: ../../include/widgets.php:1099 -msgid "Click to show more" +#: ../../include/conversation.php:1238 +msgid "Toggle voting" msgstr "" -#: ../../include/widgets.php:1250 -msgid "Rating Tools" +#: ../../include/conversation.php:1246 +msgid "Categories (optional, comma-separated list)" msgstr "" -#: ../../include/widgets.php:1254 ../../include/widgets.php:1256 -msgid "Rate Me" +#: ../../include/conversation.php:1269 +msgid "Set publish date" msgstr "" -#: ../../include/widgets.php:1259 -msgid "View Ratings" +#: ../../include/conversation.php:1518 +msgid "Discover" msgstr "" -#: ../../include/widgets.php:1316 -msgid "Forums" +#: ../../include/conversation.php:1521 +msgid "Imported public streams" msgstr "" -#: ../../include/widgets.php:1345 -msgid "Tasks" +#: ../../include/conversation.php:1526 +msgid "Commented Order" msgstr "" -#: ../../include/widgets.php:1354 -msgid "Documentation" +#: ../../include/conversation.php:1529 +msgid "Sort by Comment Date" msgstr "" -#: ../../include/widgets.php:1356 -msgid "Project/Site Information" +#: ../../include/conversation.php:1533 +msgid "Posted Order" msgstr "" -#: ../../include/widgets.php:1357 -msgid "For Members" +#: ../../include/conversation.php:1536 +msgid "Sort by Post Date" msgstr "" -#: ../../include/widgets.php:1358 -msgid "For Administrators" +#: ../../include/conversation.php:1544 +msgid "Posts that mention or involve you" msgstr "" -#: ../../include/widgets.php:1359 -msgid "For Developers" +#: ../../include/conversation.php:1553 +msgid "Activity Stream - by date" msgstr "" -#: ../../include/widgets.php:1383 ../../include/widgets.php:1421 -msgid "Member registrations waiting for confirmation" +#: ../../include/conversation.php:1559 +msgid "Starred" msgstr "" -#: ../../include/widgets.php:1389 -msgid "Inspect queue" +#: ../../include/conversation.php:1562 +msgid "Favourite Posts" msgstr "" -#: ../../include/widgets.php:1391 -msgid "DB updates" +#: ../../include/conversation.php:1569 +msgid "Spam" msgstr "" -#: ../../include/widgets.php:1416 ../../include/nav.php:216 -msgid "Admin" +#: ../../include/conversation.php:1572 +msgid "Posts flagged as SPAM" msgstr "" -#: ../../include/widgets.php:1417 -msgid "Plugin Features" +#: ../../include/conversation.php:1629 +msgid "Status Messages and Posts" +msgstr "" + +#: ../../include/conversation.php:1638 +msgid "About" +msgstr "" + +#: ../../include/conversation.php:1641 +msgid "Profile Details" +msgstr "" + +#: ../../include/conversation.php:1657 +msgid "Files and Storage" msgstr "" +#: ../../include/conversation.php:1677 ../../include/conversation.php:1680 +#: ../../include/widgets.php:842 +msgid "Chatrooms" +msgstr "" + +#: ../../include/conversation.php:1690 ../../include/nav.php:102 +msgid "Bookmarks" +msgstr "" + +#: ../../include/conversation.php:1693 +msgid "Saved Bookmarks" +msgstr "" + +#: ../../include/conversation.php:1703 +msgid "Manage Webpages" +msgstr "" + +#: ../../include/conversation.php:1762 +msgctxt "noun" +msgid "Attending" +msgid_plural "Attending" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1765 +msgctxt "noun" +msgid "Not Attending" +msgid_plural "Not Attending" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1768 +msgctxt "noun" +msgid "Undecided" +msgid_plural "Undecided" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1771 +msgctxt "noun" +msgid "Agree" +msgid_plural "Agrees" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1774 +msgctxt "noun" +msgid "Disagree" +msgid_plural "Disagrees" +msgstr[0] "" +msgstr[1] "" + +#: ../../include/conversation.php:1777 +msgctxt "noun" +msgid "Abstain" +msgid_plural "Abstains" +msgstr[0] "" +msgstr[1] "" + #: ../../include/follow.php:27 msgid "Channel is blocked on this site." msgstr "" @@ -7485,26 +7521,17 @@ msgstr "" msgid "Cannot connect to yourself." msgstr "" -#: ../../include/bookmarks.php:35 -#, php-format -msgid "%1$s's bookmarks" -msgstr "" - -#: ../../include/api.php:1336 -msgid "Public Timeline" -msgstr "" - -#: ../../include/bbcode.php:123 ../../include/bbcode.php:844 -#: ../../include/bbcode.php:847 ../../include/bbcode.php:852 -#: ../../include/bbcode.php:855 ../../include/bbcode.php:858 -#: ../../include/bbcode.php:861 ../../include/bbcode.php:866 +#: ../../include/bbcode.php:123 ../../include/bbcode.php:866 #: ../../include/bbcode.php:869 ../../include/bbcode.php:874 #: ../../include/bbcode.php:877 ../../include/bbcode.php:880 -#: ../../include/bbcode.php:883 +#: ../../include/bbcode.php:883 ../../include/bbcode.php:888 +#: ../../include/bbcode.php:891 ../../include/bbcode.php:896 +#: ../../include/bbcode.php:899 ../../include/bbcode.php:902 +#: ../../include/bbcode.php:905 msgid "Image/photo" msgstr "" -#: ../../include/bbcode.php:162 ../../include/bbcode.php:894 +#: ../../include/bbcode.php:162 ../../include/bbcode.php:916 msgid "Encrypted content" msgstr "" @@ -7520,27 +7547,32 @@ msgid "" "to install it on this site." msgstr "" -#: ../../include/bbcode.php:254 +#: ../../include/bbcode.php:261 #, php-format msgid "%1$s wrote the following %2$s %3$s" msgstr "" -#: ../../include/bbcode.php:331 ../../include/bbcode.php:339 +#: ../../include/bbcode.php:338 ../../include/bbcode.php:346 msgid "Click to open/close" msgstr "" -#: ../../include/bbcode.php:339 +#: ../../include/bbcode.php:346 msgid "spoiler" msgstr "" -#: ../../include/bbcode.php:585 +#: ../../include/bbcode.php:607 msgid "Different viewers will see this text differently" msgstr "" -#: ../../include/bbcode.php:832 +#: ../../include/bbcode.php:854 msgid "$1 wrote:" msgstr "" +#: ../../include/bookmarks.php:35 +#, php-format +msgid "%1$s's bookmarks" +msgstr "" + #: ../../include/dir_fns.php:141 msgid "Directory Options" msgstr "" @@ -7557,13 +7589,30 @@ msgstr "" msgid "This Website Only" msgstr "" +#: ../../include/zot.php:709 +msgid "Invalid data packet" +msgstr "" + +#: ../../include/zot.php:725 +msgid "Unable to verify channel signature" +msgstr "" + +#: ../../include/zot.php:2373 +#, php-format +msgid "Unable to verify site signature for %s" +msgstr "" + +#: ../../include/zot.php:3722 +msgid "invalid target signature" +msgstr "" + #: ../../include/security.php:383 msgid "" "The form security token was not correct. This probably happened because the " "form has been opened for too long (>3 hours) before submitting it." msgstr "" -#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1702 +#: ../../include/nav.php:82 ../../include/nav.php:113 ../../boot.php:1703 msgid "Logout" msgstr "" @@ -7587,7 +7636,7 @@ msgstr "" msgid "Manage/Edit profiles" msgstr "" -#: ../../include/nav.php:90 ../../include/channel.php:941 +#: ../../include/nav.php:90 ../../include/channel.php:922 msgid "Edit Profile" msgstr "" @@ -7607,10 +7656,6 @@ msgstr "" msgid "Your chatrooms" msgstr "" -#: ../../include/nav.php:102 ../../include/conversation.php:1675 -msgid "Bookmarks" -msgstr "" - #: ../../include/nav.php:102 msgid "Your bookmarks" msgstr "" @@ -7700,6 +7745,18 @@ msgstr "" msgid "Mark all private messages seen" msgstr "" +#: ../../include/nav.php:196 ../../include/widgets.php:658 +msgid "Inbox" +msgstr "" + +#: ../../include/nav.php:197 ../../include/widgets.php:663 +msgid "Outbox" +msgstr "" + +#: ../../include/nav.php:198 ../../include/widgets.php:668 +msgid "New Message" +msgstr "" + #: ../../include/nav.php:201 msgid "Event Calendar" msgstr "" @@ -7720,12 +7777,12 @@ msgstr "" msgid "Account/Channel Settings" msgstr "" -#: ../../include/nav.php:216 -msgid "Site Setup and Configuration" +#: ../../include/nav.php:216 ../../include/widgets.php:1489 +msgid "Admin" msgstr "" -#: ../../include/nav.php:247 ../../include/conversation.php:851 -msgid "Loading..." +#: ../../include/nav.php:216 +msgid "Site Setup and Configuration" msgstr "" #: ../../include/nav.php:252 @@ -7736,19 +7793,6 @@ msgstr "" msgid "Please wait..." msgstr "" -#: ../../include/connections.php:95 -msgid "New window" -msgstr "" - -#: ../../include/connections.php:96 -msgid "Open the selected location in a different window or browser tab" -msgstr "" - -#: ../../include/connections.php:214 -#, php-format -msgid "User '%s' deleted" -msgstr "" - #: ../../include/contact_widgets.php:11 #, php-format msgid "%d invitation available" @@ -7784,6 +7828,16 @@ msgstr "" msgid "Advanced example: name=fred and country=iceland" msgstr "" +#: ../../include/contact_widgets.php:53 ../../include/features.php:98 +#: ../../include/widgets.php:310 +msgid "Saved Folders" +msgstr "" + +#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:94 +#: ../../include/widgets.php:313 ../../include/widgets.php:432 +msgid "Everything" +msgstr "" + #: ../../include/contact_widgets.php:122 #, php-format msgid "%d connection in common" @@ -7795,268 +7849,6 @@ msgstr[1] "" msgid "show more" msgstr "" -#: ../../include/conversation.php:204 -#, php-format -msgid "%1$s is now connected with %2$s" -msgstr "" - -#: ../../include/conversation.php:239 -#, php-format -msgid "%1$s poked %2$s" -msgstr "" - -#: ../../include/conversation.php:691 -#, php-format -msgid "View %s's profile @ %s" -msgstr "" - -#: ../../include/conversation.php:710 -msgid "Categories:" -msgstr "" - -#: ../../include/conversation.php:711 -msgid "Filed under:" -msgstr "" - -#: ../../include/conversation.php:738 -msgid "View in context" -msgstr "" - -#: ../../include/conversation.php:847 -msgid "remove" -msgstr "" - -#: ../../include/conversation.php:852 -msgid "Delete Selected Items" -msgstr "" - -#: ../../include/conversation.php:948 -msgid "View Source" -msgstr "" - -#: ../../include/conversation.php:949 -msgid "Follow Thread" -msgstr "" - -#: ../../include/conversation.php:950 -msgid "Unfollow Thread" -msgstr "" - -#: ../../include/conversation.php:955 -msgid "Activity/Posts" -msgstr "" - -#: ../../include/conversation.php:957 -msgid "Edit Connection" -msgstr "" - -#: ../../include/conversation.php:958 -msgid "Message" -msgstr "" - -#: ../../include/conversation.php:1075 -#, php-format -msgid "%s likes this." -msgstr "" - -#: ../../include/conversation.php:1075 -#, php-format -msgid "%s doesn't like this." -msgstr "" - -#: ../../include/conversation.php:1079 -#, php-format -msgid "<span %1$s>%2$d people</span> like this." -msgid_plural "<span %1$s>%2$d people</span> like this." -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1081 -#, php-format -msgid "<span %1$s>%2$d people</span> don't like this." -msgid_plural "<span %1$s>%2$d people</span> don't like this." -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1087 -msgid "and" -msgstr "" - -#: ../../include/conversation.php:1090 -#, php-format -msgid ", and %d other people" -msgid_plural ", and %d other people" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1091 -#, php-format -msgid "%s like this." -msgstr "" - -#: ../../include/conversation.php:1091 -#, php-format -msgid "%s don't like this." -msgstr "" - -#: ../../include/conversation.php:1130 -msgid "Set your location" -msgstr "" - -#: ../../include/conversation.php:1131 -msgid "Clear browser location" -msgstr "" - -#: ../../include/conversation.php:1177 -msgid "Tag term:" -msgstr "" - -#: ../../include/conversation.php:1178 -msgid "Where are you right now?" -msgstr "" - -#: ../../include/conversation.php:1210 -msgid "Page link name" -msgstr "" - -#: ../../include/conversation.php:1213 -msgid "Post as" -msgstr "" - -#: ../../include/conversation.php:1223 -msgid "Toggle voting" -msgstr "" - -#: ../../include/conversation.php:1231 -msgid "Categories (optional, comma-separated list)" -msgstr "" - -#: ../../include/conversation.php:1254 -msgid "Set publish date" -msgstr "" - -#: ../../include/conversation.php:1258 -msgid "OK" -msgstr "" - -#: ../../include/conversation.php:1503 -msgid "Discover" -msgstr "" - -#: ../../include/conversation.php:1506 -msgid "Imported public streams" -msgstr "" - -#: ../../include/conversation.php:1511 -msgid "Commented Order" -msgstr "" - -#: ../../include/conversation.php:1514 -msgid "Sort by Comment Date" -msgstr "" - -#: ../../include/conversation.php:1518 -msgid "Posted Order" -msgstr "" - -#: ../../include/conversation.php:1521 -msgid "Sort by Post Date" -msgstr "" - -#: ../../include/conversation.php:1529 -msgid "Posts that mention or involve you" -msgstr "" - -#: ../../include/conversation.php:1538 -msgid "Activity Stream - by date" -msgstr "" - -#: ../../include/conversation.php:1544 -msgid "Starred" -msgstr "" - -#: ../../include/conversation.php:1547 -msgid "Favourite Posts" -msgstr "" - -#: ../../include/conversation.php:1554 -msgid "Spam" -msgstr "" - -#: ../../include/conversation.php:1557 -msgid "Posts flagged as SPAM" -msgstr "" - -#: ../../include/conversation.php:1614 -msgid "Status Messages and Posts" -msgstr "" - -#: ../../include/conversation.php:1623 -msgid "About" -msgstr "" - -#: ../../include/conversation.php:1626 -msgid "Profile Details" -msgstr "" - -#: ../../include/conversation.php:1635 ../../include/photos.php:502 -msgid "Photo Albums" -msgstr "" - -#: ../../include/conversation.php:1642 -msgid "Files and Storage" -msgstr "" - -#: ../../include/conversation.php:1678 -msgid "Saved Bookmarks" -msgstr "" - -#: ../../include/conversation.php:1688 -msgid "Manage Webpages" -msgstr "" - -#: ../../include/conversation.php:1747 -msgctxt "noun" -msgid "Attending" -msgid_plural "Attending" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1750 -msgctxt "noun" -msgid "Not Attending" -msgid_plural "Not Attending" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1753 -msgctxt "noun" -msgid "Undecided" -msgid_plural "Undecided" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1756 -msgctxt "noun" -msgid "Agree" -msgid_plural "Agrees" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1759 -msgctxt "noun" -msgid "Disagree" -msgid_plural "Disagrees" -msgstr[0] "" -msgstr[1] "" - -#: ../../include/conversation.php:1762 -msgctxt "noun" -msgid "Abstain" -msgid_plural "Abstains" -msgstr[0] "" -msgstr[1] "" - #: ../../include/selectors.php:30 msgid "Frequently" msgstr "" @@ -8303,6 +8095,160 @@ msgstr "" msgid "Ask me" msgstr "" +#: ../../include/channel.php:32 +msgid "Unable to obtain identity information from database" +msgstr "" + +#: ../../include/channel.php:66 +msgid "Empty name" +msgstr "" + +#: ../../include/channel.php:69 +msgid "Name too long" +msgstr "" + +#: ../../include/channel.php:180 +msgid "No account identifier" +msgstr "" + +#: ../../include/channel.php:192 +msgid "Nickname is required." +msgstr "" + +#: ../../include/channel.php:206 +msgid "Reserved nickname. Please choose another." +msgstr "" + +#: ../../include/channel.php:211 +msgid "" +"Nickname has unsupported characters or is already being used on this site." +msgstr "" + +#: ../../include/channel.php:287 +msgid "Unable to retrieve created identity" +msgstr "" + +#: ../../include/channel.php:345 +msgid "Default Profile" +msgstr "" + +#: ../../include/channel.php:772 +msgid "Requested channel is not available." +msgstr "" + +#: ../../include/channel.php:919 +msgid "Create New Profile" +msgstr "" + +#: ../../include/channel.php:939 +msgid "Visible to everybody" +msgstr "" + +#: ../../include/channel.php:1012 ../../include/channel.php:1123 +msgid "Gender:" +msgstr "" + +#: ../../include/channel.php:1013 ../../include/channel.php:1167 +msgid "Status:" +msgstr "" + +#: ../../include/channel.php:1014 ../../include/channel.php:1178 +msgid "Homepage:" +msgstr "" + +#: ../../include/channel.php:1015 +msgid "Online Now" +msgstr "" + +#: ../../include/channel.php:1128 +msgid "Like this channel" +msgstr "" + +#: ../../include/channel.php:1152 +msgid "j F, Y" +msgstr "" + +#: ../../include/channel.php:1153 +msgid "j F" +msgstr "" + +#: ../../include/channel.php:1160 +msgid "Birthday:" +msgstr "" + +#: ../../include/channel.php:1173 +#, php-format +msgid "for %1$d %2$s" +msgstr "" + +#: ../../include/channel.php:1176 +msgid "Sexual Preference:" +msgstr "" + +#: ../../include/channel.php:1182 +msgid "Tags:" +msgstr "" + +#: ../../include/channel.php:1184 +msgid "Political Views:" +msgstr "" + +#: ../../include/channel.php:1186 +msgid "Religion:" +msgstr "" + +#: ../../include/channel.php:1190 +msgid "Hobbies/Interests:" +msgstr "" + +#: ../../include/channel.php:1192 +msgid "Likes:" +msgstr "" + +#: ../../include/channel.php:1194 +msgid "Dislikes:" +msgstr "" + +#: ../../include/channel.php:1196 +msgid "Contact information and Social Networks:" +msgstr "" + +#: ../../include/channel.php:1198 +msgid "My other channels:" +msgstr "" + +#: ../../include/channel.php:1200 +msgid "Musical interests:" +msgstr "" + +#: ../../include/channel.php:1202 +msgid "Books, literature:" +msgstr "" + +#: ../../include/channel.php:1204 +msgid "Television:" +msgstr "" + +#: ../../include/channel.php:1206 +msgid "Film/dance/culture/entertainment:" +msgstr "" + +#: ../../include/channel.php:1208 +msgid "Love/Romance:" +msgstr "" + +#: ../../include/channel.php:1210 +msgid "Work/employment:" +msgstr "" + +#: ../../include/channel.php:1212 +msgid "School/education:" +msgstr "" + +#: ../../include/channel.php:1232 +msgid "Like this thing" +msgstr "" + #: ../../include/PermissionDescription.php:31 #: ../../include/acl_selectors.php:232 msgid "Visible to your default audience" @@ -8405,7 +8351,7 @@ msgid "Registration request at %s" msgstr "" #: ../../include/account.php:317 ../../include/account.php:344 -#: ../../include/account.php:404 ../../include/network.php:1871 +#: ../../include/account.php:404 ../../include/network.php:1896 msgid "Administrator" msgstr "" @@ -8447,218 +8393,64 @@ msgstr "" msgid "Item was not found." msgstr "" -#: ../../include/attach.php:497 +#: ../../include/attach.php:499 msgid "No source file." msgstr "" -#: ../../include/attach.php:519 +#: ../../include/attach.php:521 msgid "Cannot locate file to replace" msgstr "" -#: ../../include/attach.php:537 +#: ../../include/attach.php:539 msgid "Cannot locate file to revise/update" msgstr "" -#: ../../include/attach.php:672 +#: ../../include/attach.php:674 #, php-format msgid "File exceeds size limit of %d" msgstr "" -#: ../../include/attach.php:686 +#: ../../include/attach.php:688 #, php-format msgid "You have reached your limit of %1$.0f Mbytes attachment storage." msgstr "" -#: ../../include/attach.php:842 +#: ../../include/attach.php:846 msgid "File upload failed. Possible system limit or action terminated." msgstr "" -#: ../../include/attach.php:855 +#: ../../include/attach.php:859 msgid "Stored file could not be verified. Upload failed." msgstr "" -#: ../../include/attach.php:909 ../../include/attach.php:925 +#: ../../include/attach.php:915 ../../include/attach.php:931 msgid "Path not available." msgstr "" -#: ../../include/attach.php:971 ../../include/attach.php:1123 +#: ../../include/attach.php:977 ../../include/attach.php:1129 msgid "Empty pathname" msgstr "" -#: ../../include/attach.php:997 +#: ../../include/attach.php:1003 msgid "duplicate filename or path" msgstr "" -#: ../../include/attach.php:1019 +#: ../../include/attach.php:1025 msgid "Path not found." msgstr "" -#: ../../include/attach.php:1077 +#: ../../include/attach.php:1083 msgid "mkdir failed." msgstr "" -#: ../../include/attach.php:1081 +#: ../../include/attach.php:1087 msgid "database storage failed." msgstr "" -#: ../../include/attach.php:1129 +#: ../../include/attach.php:1135 msgid "Empty path" msgstr "" -#: ../../include/channel.php:32 -msgid "Unable to obtain identity information from database" -msgstr "" - -#: ../../include/channel.php:66 -msgid "Empty name" -msgstr "" - -#: ../../include/channel.php:69 -msgid "Name too long" -msgstr "" - -#: ../../include/channel.php:180 -msgid "No account identifier" -msgstr "" - -#: ../../include/channel.php:192 -msgid "Nickname is required." -msgstr "" - -#: ../../include/channel.php:206 -msgid "Reserved nickname. Please choose another." -msgstr "" - -#: ../../include/channel.php:211 -msgid "" -"Nickname has unsupported characters or is already being used on this site." -msgstr "" - -#: ../../include/channel.php:287 -msgid "Unable to retrieve created identity" -msgstr "" - -#: ../../include/channel.php:345 -msgid "Default Profile" -msgstr "" - -#: ../../include/channel.php:791 -msgid "Requested channel is not available." -msgstr "" - -#: ../../include/channel.php:938 -msgid "Create New Profile" -msgstr "" - -#: ../../include/channel.php:958 -msgid "Visible to everybody" -msgstr "" - -#: ../../include/channel.php:1031 ../../include/channel.php:1142 -msgid "Gender:" -msgstr "" - -#: ../../include/channel.php:1032 ../../include/channel.php:1186 -msgid "Status:" -msgstr "" - -#: ../../include/channel.php:1033 ../../include/channel.php:1197 -msgid "Homepage:" -msgstr "" - -#: ../../include/channel.php:1034 -msgid "Online Now" -msgstr "" - -#: ../../include/channel.php:1147 -msgid "Like this channel" -msgstr "" - -#: ../../include/channel.php:1171 -msgid "j F, Y" -msgstr "" - -#: ../../include/channel.php:1172 -msgid "j F" -msgstr "" - -#: ../../include/channel.php:1179 -msgid "Birthday:" -msgstr "" - -#: ../../include/channel.php:1192 -#, php-format -msgid "for %1$d %2$s" -msgstr "" - -#: ../../include/channel.php:1195 -msgid "Sexual Preference:" -msgstr "" - -#: ../../include/channel.php:1201 -msgid "Tags:" -msgstr "" - -#: ../../include/channel.php:1203 -msgid "Political Views:" -msgstr "" - -#: ../../include/channel.php:1205 -msgid "Religion:" -msgstr "" - -#: ../../include/channel.php:1209 -msgid "Hobbies/Interests:" -msgstr "" - -#: ../../include/channel.php:1211 -msgid "Likes:" -msgstr "" - -#: ../../include/channel.php:1213 -msgid "Dislikes:" -msgstr "" - -#: ../../include/channel.php:1215 -msgid "Contact information and Social Networks:" -msgstr "" - -#: ../../include/channel.php:1217 -msgid "My other channels:" -msgstr "" - -#: ../../include/channel.php:1219 -msgid "Musical interests:" -msgstr "" - -#: ../../include/channel.php:1221 -msgid "Books, literature:" -msgstr "" - -#: ../../include/channel.php:1223 -msgid "Television:" -msgstr "" - -#: ../../include/channel.php:1225 -msgid "Film/dance/culture/entertainment:" -msgstr "" - -#: ../../include/channel.php:1227 -msgid "Love/Romance:" -msgstr "" - -#: ../../include/channel.php:1229 -msgid "Work/employment:" -msgstr "" - -#: ../../include/channel.php:1231 -msgid "School/education:" -msgstr "" - -#: ../../include/channel.php:1251 -msgid "Like this thing" -msgstr "" - #: ../../include/features.php:48 msgid "General Features" msgstr "" @@ -8846,6 +8638,10 @@ msgstr "" msgid "Enable management and selection of privacy groups" msgstr "" +#: ../../include/features.php:84 ../../include/widgets.php:281 +msgid "Saved Searches" +msgstr "" + #: ../../include/features.php:84 msgid "Save search terms for re-use" msgstr "" @@ -8950,6 +8746,28 @@ msgstr "" msgid "Embedding disabled" msgstr "" +#: ../../include/import.php:29 +msgid "" +"Cannot create a duplicate channel identifier on this system. Import failed." +msgstr "" + +#: ../../include/import.php:76 +msgid "Channel clone failed. Import failed." +msgstr "" + +#: ../../include/connections.php:95 +msgid "New window" +msgstr "" + +#: ../../include/connections.php:96 +msgid "Open the selected location in a different window or browser tab" +msgstr "" + +#: ../../include/connections.php:214 +#, php-format +msgid "User '%s' deleted" +msgstr "" + #: ../../include/acl_selectors.php:271 msgid "Who can see this?" msgstr "" @@ -9003,7 +8821,7 @@ msgstr "" msgid "YYYY-MM-DD or MM-DD" msgstr "" -#: ../../include/datetime.php:272 ../../boot.php:2470 +#: ../../include/datetime.php:272 ../../boot.php:2471 msgid "never" msgstr "" @@ -9103,6 +8921,10 @@ msgstr "" msgid "Channels not in any privacy group" msgstr "" +#: ../../include/group.php:316 ../../include/widgets.php:282 +msgid "add" +msgstr "" + #: ../../include/js_strings.php:5 msgid "Delete this item?" msgstr "" @@ -9347,106 +9169,345 @@ msgctxt "calendar" msgid "All day" msgstr "" -#: ../../include/network.php:657 +#: ../../include/network.php:682 msgid "view full size" msgstr "" -#: ../../include/network.php:1885 +#: ../../include/network.php:1910 msgid "No Subject" msgstr "" -#: ../../include/network.php:2146 ../../include/network.php:2147 +#: ../../include/network.php:2171 ../../include/network.php:2172 msgid "Friendica" msgstr "" -#: ../../include/network.php:2148 +#: ../../include/network.php:2173 msgid "OStatus" msgstr "" -#: ../../include/network.php:2149 +#: ../../include/network.php:2174 msgid "GNU-Social" msgstr "" -#: ../../include/network.php:2150 +#: ../../include/network.php:2175 msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:2152 +#: ../../include/network.php:2177 msgid "Diaspora" msgstr "" -#: ../../include/network.php:2153 +#: ../../include/network.php:2178 msgid "Facebook" msgstr "" -#: ../../include/network.php:2154 +#: ../../include/network.php:2179 msgid "Zot" msgstr "" -#: ../../include/network.php:2155 +#: ../../include/network.php:2180 msgid "LinkedIn" msgstr "" -#: ../../include/network.php:2156 +#: ../../include/network.php:2181 msgid "XMPP/IM" msgstr "" -#: ../../include/network.php:2157 +#: ../../include/network.php:2182 msgid "MySpace" msgstr "" -#: ../../include/photos.php:110 -#, php-format -msgid "Image exceeds website size limit of %lu bytes" +#: ../../include/items.php:902 ../../include/items.php:947 +msgid "(Unknown)" msgstr "" -#: ../../include/photos.php:117 -msgid "Image file is empty." +#: ../../include/items.php:1146 +msgid "Visible to anybody on the internet." msgstr "" -#: ../../include/photos.php:255 -msgid "Photo storage failed." +#: ../../include/items.php:1148 +msgid "Visible to you only." msgstr "" -#: ../../include/photos.php:295 -msgid "a new photo" +#: ../../include/items.php:1150 +msgid "Visible to anybody in this network." msgstr "" -#: ../../include/photos.php:299 +#: ../../include/items.php:1152 +msgid "Visible to anybody authenticated." +msgstr "" + +#: ../../include/items.php:1154 #, php-format -msgctxt "photo_upload" -msgid "%1$s posted %2$s to %3$s" +msgid "Visible to anybody on %s." msgstr "" -#: ../../include/photos.php:506 -msgid "Upload New Photos" +#: ../../include/items.php:1156 +msgid "Visible to all connections." msgstr "" -#: ../../include/zot.php:699 -msgid "Invalid data packet" +#: ../../include/items.php:1158 +msgid "Visible to approved connections." msgstr "" -#: ../../include/zot.php:715 -msgid "Unable to verify channel signature" +#: ../../include/items.php:1160 +msgid "Visible to specific connections." msgstr "" -#: ../../include/zot.php:2363 +#: ../../include/items.php:3920 +msgid "Privacy group is empty." +msgstr "" + +#: ../../include/items.php:3927 #, php-format -msgid "Unable to verify site signature for %s" +msgid "Privacy group: %s" msgstr "" -#: ../../include/zot.php:3712 -msgid "invalid target signature" +#: ../../include/items.php:3939 +msgid "Connection not found." +msgstr "" + +#: ../../include/items.php:4305 +msgid "profile photo" msgstr "" -#: ../../include/page_widgets.php:6 +#: ../../include/page_widgets.php:7 msgid "New Page" msgstr "" -#: ../../include/page_widgets.php:43 +#: ../../include/page_widgets.php:46 msgid "Title" msgstr "" +#: ../../include/widgets.php:103 +msgid "System" +msgstr "" + +#: ../../include/widgets.php:106 +msgid "New App" +msgstr "" + +#: ../../include/widgets.php:154 +msgid "Suggestions" +msgstr "" + +#: ../../include/widgets.php:155 +msgid "See more..." +msgstr "" + +#: ../../include/widgets.php:175 +#, php-format +msgid "You have %1$.0f of %2$.0f allowed connections." +msgstr "" + +#: ../../include/widgets.php:181 +msgid "Add New Connection" +msgstr "" + +#: ../../include/widgets.php:182 +msgid "Enter channel address" +msgstr "" + +#: ../../include/widgets.php:183 +msgid "Examples: bob@example.com, https://example.com/barbara" +msgstr "" + +#: ../../include/widgets.php:199 +msgid "Notes" +msgstr "" + +#: ../../include/widgets.php:273 +msgid "Remove term" +msgstr "" + +#: ../../include/widgets.php:354 +msgid "Archives" +msgstr "" + +#: ../../include/widgets.php:516 +msgid "Refresh" +msgstr "" + +#: ../../include/widgets.php:556 +msgid "Account settings" +msgstr "" + +#: ../../include/widgets.php:562 +msgid "Channel settings" +msgstr "" + +#: ../../include/widgets.php:571 +msgid "Additional features" +msgstr "" + +#: ../../include/widgets.php:578 +msgid "Feature/Addon settings" +msgstr "" + +#: ../../include/widgets.php:584 +msgid "Display settings" +msgstr "" + +#: ../../include/widgets.php:591 +msgid "Manage locations" +msgstr "" + +#: ../../include/widgets.php:600 +msgid "Export channel" +msgstr "" + +#: ../../include/widgets.php:607 +msgid "Connected apps" +msgstr "" + +#: ../../include/widgets.php:622 +msgid "Premium Channel Settings" +msgstr "" + +#: ../../include/widgets.php:651 +msgid "Private Mail Menu" +msgstr "" + +#: ../../include/widgets.php:653 +msgid "Combined View" +msgstr "" + +#: ../../include/widgets.php:685 ../../include/widgets.php:697 +msgid "Conversations" +msgstr "" + +#: ../../include/widgets.php:689 +msgid "Received Messages" +msgstr "" + +#: ../../include/widgets.php:693 +msgid "Sent Messages" +msgstr "" + +#: ../../include/widgets.php:707 +msgid "No messages." +msgstr "" + +#: ../../include/widgets.php:725 +msgid "Delete conversation" +msgstr "" + +#: ../../include/widgets.php:751 +msgid "Events Menu" +msgstr "" + +#: ../../include/widgets.php:752 +msgid "Day View" +msgstr "" + +#: ../../include/widgets.php:753 +msgid "Week View" +msgstr "" + +#: ../../include/widgets.php:754 +msgid "Month View" +msgstr "" + +#: ../../include/widgets.php:766 +msgid "Events Tools" +msgstr "" + +#: ../../include/widgets.php:767 +msgid "Export Calendar" +msgstr "" + +#: ../../include/widgets.php:768 +msgid "Import Calendar" +msgstr "" + +#: ../../include/widgets.php:846 +msgid "Overview" +msgstr "" + +#: ../../include/widgets.php:853 +msgid "Chat Members" +msgstr "" + +#: ../../include/widgets.php:875 +msgid "Wiki List" +msgstr "" + +#: ../../include/widgets.php:913 +msgid "Wiki Pages" +msgstr "" + +#: ../../include/widgets.php:948 +msgid "Bookmarked Chatrooms" +msgstr "" + +#: ../../include/widgets.php:971 +msgid "Suggested Chatrooms" +msgstr "" + +#: ../../include/widgets.php:1117 ../../include/widgets.php:1229 +msgid "photo/image" +msgstr "" + +#: ../../include/widgets.php:1172 +msgid "Click to show more" +msgstr "" + +#: ../../include/widgets.php:1323 +msgid "Rating Tools" +msgstr "" + +#: ../../include/widgets.php:1327 ../../include/widgets.php:1329 +msgid "Rate Me" +msgstr "" + +#: ../../include/widgets.php:1332 +msgid "View Ratings" +msgstr "" + +#: ../../include/widgets.php:1389 +msgid "Forums" +msgstr "" + +#: ../../include/widgets.php:1418 +msgid "Tasks" +msgstr "" + +#: ../../include/widgets.php:1427 +msgid "Documentation" +msgstr "" + +#: ../../include/widgets.php:1429 +msgid "Project/Site Information" +msgstr "" + +#: ../../include/widgets.php:1430 +msgid "For Members" +msgstr "" + +#: ../../include/widgets.php:1431 +msgid "For Administrators" +msgstr "" + +#: ../../include/widgets.php:1432 +msgid "For Developers" +msgstr "" + +#: ../../include/widgets.php:1456 ../../include/widgets.php:1494 +msgid "Member registrations waiting for confirmation" +msgstr "" + +#: ../../include/widgets.php:1462 +msgid "Inspect queue" +msgstr "" + +#: ../../include/widgets.php:1464 +msgid "DB updates" +msgstr "" + +#: ../../include/widgets.php:1490 +msgid "Plugin Features" +msgstr "" + #: ../../include/permissions.php:26 msgid "Can view my normal stream and posts" msgstr "" @@ -9618,6 +9679,10 @@ msgstr "" msgid "$Projectname event notification:" msgstr "" +#: ../../include/api.php:1326 +msgid "Public Timeline" +msgstr "" + #: ../../view/theme/redbasic/php/config.php:82 msgid "Focus (Hubzilla default)" msgstr "" @@ -9754,62 +9819,62 @@ msgstr "" msgid "Set size of followup author photos" msgstr "" -#: ../../boot.php:1162 +#: ../../boot.php:1163 #, php-format msgctxt "opensearch" msgid "Search %1$s (%2$s)" msgstr "" -#: ../../boot.php:1162 +#: ../../boot.php:1163 msgctxt "opensearch" msgid "$Projectname" msgstr "" -#: ../../boot.php:1480 +#: ../../boot.php:1481 #, php-format msgid "Update %s failed. See error logs." msgstr "" -#: ../../boot.php:1483 +#: ../../boot.php:1484 #, php-format msgid "Update Error at %s" msgstr "" -#: ../../boot.php:1684 +#: ../../boot.php:1685 msgid "" "Create an account to access services and applications within the Hubzilla" msgstr "" -#: ../../boot.php:1706 +#: ../../boot.php:1707 msgid "Password" msgstr "" -#: ../../boot.php:1707 +#: ../../boot.php:1708 msgid "Remember me" msgstr "" -#: ../../boot.php:1710 +#: ../../boot.php:1711 msgid "Forgot your password?" msgstr "" -#: ../../boot.php:2276 +#: ../../boot.php:2277 msgid "toggle mobile" msgstr "" -#: ../../boot.php:2425 +#: ../../boot.php:2426 msgid "Website SSL certificate is not valid. Please correct." msgstr "" -#: ../../boot.php:2428 +#: ../../boot.php:2429 #, php-format msgid "[hubzilla] Website SSL error for %s" msgstr "" -#: ../../boot.php:2469 +#: ../../boot.php:2470 msgid "Cron/Scheduled tasks not running." msgstr "" -#: ../../boot.php:2473 +#: ../../boot.php:2474 #, php-format msgid "[hubzilla] Cron tasks not running on %s" msgstr "" diff --git a/util/po2php.php b/util/po2php.php index ab8c495f9..a72a65ba1 100644 --- a/util/po2php.php +++ b/util/po2php.php @@ -3,14 +3,21 @@ function po2php_run($argc,$argv) { - if ($argc!=2) { + if ($argc < 2) { print "Usage: ".$argv[0]." <file.po>\n\n"; return; } - + + $rtl = false; + $pofile = $argv[1]; $outfile = dirname($pofile)."/hstrings.php"; + if($argc > 2) { + if($argv[2] === 'rtl') + $rtl = true; + } + if(strstr($outfile,'util')) $lang = 'en'; else @@ -53,6 +60,7 @@ function po2php_run($argc,$argv) { $out .= ' return '.$cond.';'."\n"; $out .= '}}'."\n"; } + $out .= 'App::$rtl = ' . intval($rtl) . ';'; if ($k!="" && substr($l,0,7)=="msgstr "){ if ($ink) { $ink = False; $out .= 'App::$strings["'.$k.'"] = '; } diff --git a/view/css/mod_cal.css b/view/css/mod_cal.css index f0b5c0166..184227a91 100644 --- a/view/css/mod_cal.css +++ b/view/css/mod_cal.css @@ -1,3 +1,7 @@ +.fc-scroller { + overflow: hidden !important; +} + /* fix borders */ .fc th:first-child, diff --git a/view/css/mod_events.css b/view/css/mod_events.css index f0b5c0166..184227a91 100644 --- a/view/css/mod_events.css +++ b/view/css/mod_events.css @@ -1,3 +1,7 @@ +.fc-scroller { + overflow: hidden !important; +} + /* fix borders */ .fc th:first-child, diff --git a/view/js/mod_cal.js b/view/js/mod_cal.js new file mode 100644 index 000000000..5867f676e --- /dev/null +++ b/view/js/mod_cal.js @@ -0,0 +1,22 @@ +/** + * JavaScript for mod/cal + */ + +$(document).ready( function() { + $(document).on('click','#fullscreen-btn', on_fullscreen); + $(document).on('click','#inline-btn', on_inline); +}); + +function on_fullscreen() { + var view = $('#events-calendar').fullCalendar('getView'); + if(view.type === 'month') { + $('#events-calendar').fullCalendar('option', 'height', $(window).height() - $('.section-title-wrapper').outerHeight(true) - 2); // -2 is for border width (top and bottom) of .generic-content-wrapper + } +} + +function on_inline() { + var view = $('#events-calendar').fullCalendar('getView'); + if(view.type === 'month') { + $('#events-calendar').fullCalendar('option', 'height', ''); + } +} diff --git a/view/js/mod_events.js b/view/js/mod_events.js index 74b811dd6..66cf81ddd 100644 --- a/view/js/mod_events.js +++ b/view/js/mod_events.js @@ -5,11 +5,29 @@ $(document).ready( function() { enableDisableFinishDate(); $('#comment-edit-text-desc, #comment-edit-text-loc').bbco_autocomplete('bbcode'); + + $(document).on('click','#fullscreen-btn', on_fullscreen); + $(document).on('click','#inline-btn', on_inline); }); + function enableDisableFinishDate() { if( $('#id_nofinish').is(':checked')) $('#id_finish_text').prop("disabled", true); else $('#id_finish_text').prop("disabled", false); } + +function on_fullscreen() { + var view = $('#events-calendar').fullCalendar('getView'); + if(view.type === 'month') { + $('#events-calendar').fullCalendar('option', 'height', $(window).height() - $('.section-title-wrapper').outerHeight(true) - 2); // -2 is for border width (top and bottom) of .generic-content-wrapper + } +} + +function on_inline() { + var view = $('#events-calendar').fullCalendar('getView'); + if(view.type === 'month') { + $('#events-calendar').fullCalendar('option', 'height', ''); + } +} diff --git a/view/php/default.php b/view/php/default.php index ad6b7a3d1..f5be4fa35 100644 --- a/view/php/default.php +++ b/view/php/default.php @@ -5,7 +5,7 @@ <script>var baseurl="<?php echo z_root() ?>";</script> <?php if(x($page,'htmlhead')) echo $page['htmlhead'] ?> </head> -<body> +<body <?php if($page['direction']) echo 'dir="rtl"' ?> > <?php if(x($page,'banner')) echo $page['banner']; ?> <header><?php if(x($page,'header')) echo $page['header']; ?></header> <nav class="navbar navbar-inverse navbar-fixed-top" role="navigation"><?php if(x($page,'nav')) echo $page['nav']; ?></nav> diff --git a/view/php/theme_init.php b/view/php/theme_init.php index 648b144b3..e9ba2aa05 100644 --- a/view/php/theme_init.php +++ b/view/php/theme_init.php @@ -10,6 +10,7 @@ head_add_css('view/css/conversation.css'); head_add_css('view/css/widgets.css'); head_add_css('view/css/colorbox.css'); head_add_css('library/justifiedGallery/justifiedGallery.min.css'); +head_add_css('library/Text_Highlighter/sample.css'); head_add_js('jquery.js'); //head_add_js('jquery-migrate-1.1.1.js'); diff --git a/view/theme/redbasic/css/style.css b/view/theme/redbasic/css/style.css index 30b0cebb4..c9c85daa3 100644 --- a/view/theme/redbasic/css/style.css +++ b/view/theme/redbasic/css/style.css @@ -2020,3 +2020,9 @@ dl.bb-dl > dd > li { .help-searchlist a { font-size: 130%; } + +.embed-photo-selected-photo { + border-color: blue; + border-style: solid; + border-width: 5px; +} diff --git a/view/tpl/event_head.tpl b/view/tpl/event_head.tpl index 5083c5835..762bdcbb8 100755 --- a/view/tpl/event_head.tpl +++ b/view/tpl/event_head.tpl @@ -30,6 +30,12 @@ function changeView(action, viewName) { $('#events-calendar').fullCalendar(action, viewName); var view = $('#events-calendar').fullCalendar('getView'); + if(view.type === 'agendaDay' || view.type === 'agendaWeek') { + $('#events-calendar').fullCalendar('option', 'height', 'auto'); + } + else { + $('#events-calendar').fullCalendar('option', 'height', ''); + } $('#title').text(view.title); } @@ -42,7 +48,6 @@ firstDay: {{$first_day}}, eventLimit: 3, - height: 'auto', monthNames: aStr['monthNames'], monthNamesShort: aStr['monthNamesShort'], diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl index 43df2e175..f3dd8cafe 100755 --- a/view/tpl/jot-header.tpl +++ b/view/tpl/jot-header.tpl @@ -364,6 +364,89 @@ function enableOnUser(){ {{$geotag}} + var initializeEmbedPhotoDialog = function () { + $('.embed-photo-selected-photo').each(function (index) { + $(this).removeClass('embed-photo-selected-photo'); + }); + getPhotoAlbumList(); + $('#embedPhotoModalBodyAlbumDialog').off('click'); + $('#embedPhotoModal').modal(); + }; + + var choosePhotoFromAlbum = function (album) { + $.post("embedphotos/album", {name: album}, + function(data) { + if (data['status']) { + $('#embedPhotoModalLabel').html('{{$modalchooseimages}}'); + $('#embedPhotoModalBodyAlbumDialog').html('\ + <div><ul class="nav">\n\ + <li><a href="#" onclick="initializeEmbedPhotoDialog();return false;">\n\ + <i class="fa fa-chevron-left"></i> \n\ + {{$modaldiffalbum}}\n\ + </a>\n\ + </li>\n\ + </ul><br></div>') + $('#embedPhotoModalBodyAlbumDialog').append(data['content']); + $('#embedPhotoModalBodyAlbumDialog').click(function (evt) { + evt.preventDefault(); + var image = document.getElementById(evt.target.id); + if (typeof($(image).parent()[0]) !== 'undefined') { + var imageparent = document.getElementById($(image).parent()[0].id); + $(imageparent).toggleClass('embed-photo-selected-photo'); + } + }); + $('#embedPhotoModalBodyAlbumListDialog').addClass('hide'); + $('#embedPhotoModalBodyAlbumDialog').removeClass('hide'); + $('#embed-photo-OKButton').click(function () { + $('.embed-photo-selected-photo').each(function (index) { + var href = $(this).attr('href'); + $.post("embedphotos/photolink", {href: href}, + function(ddata) { + if (ddata['status']) { + addeditortext(ddata['photolink']); + } else { + window.console.log('{{$modalerrorlink}}' + ':' + ddata['errormsg']); + } + return false; + }, + 'json'); + }); + $('#embedPhotoModalBodyAlbumDialog').html(''); + $('#embedPhotoModalBodyAlbumDialog').off('click'); + $('#embedPhotoModal').modal('hide'); + }); + } else { + window.console.log('{{$modalerroralbum}} ' + JSON.stringify(album) + ':' + data['errormsg']); + } + return false; + }, + 'json'); + }; + + var getPhotoAlbumList = function () { + $.post("embedphotos/albumlist", {}, + function(data) { + if (data['status']) { + var albums = data['albumlist']; //JSON.parse(data['albumlist']); + $('#embedPhotoModalLabel').html('{{$modalchoosealbum}}'); + $('#embedPhotoModalBodyAlbumList').html('<ul class="nav"></ul>'); + for(var i=0; i<albums.length; i++) { + var albumName = albums[i].text; + var albumLink = '<li>'; + albumLink += '<a href="#" onclick="choosePhotoFromAlbum(\'' + albumName + '\');return false;">' + albumName + '</a>'; + albumLink += '</li>'; + $('#embedPhotoModalBodyAlbumList').find('ul').append(albumLink); + } + $('#embedPhotoModalBodyAlbumDialog').addClass('hide'); + $('#embedPhotoModalBodyAlbumListDialog').removeClass('hide'); + } else { + window.console.log('{{$modalerrorlist}}' + ':' + data['errormsg']); + } + return false; + }, + 'json'); + }; + </script> <script> diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl index 685706026..490349a04 100755 --- a/view/tpl/jot.tpl +++ b/view/tpl/jot.tpl @@ -79,6 +79,11 @@ <i id="profile-link" class="fa fa-link jot-icons"></i> </button> {{/if}} + {{if $embedPhotos}} + <button id="embed-photo-wrapper" class="btn btn-default btn-sm" title="{{$embedPhotos}}" onclick="initializeEmbedPhotoDialog();return false;"> + <i id="embed-photo" class="fa fa-file-image-o jot-icons"></i> + </button> + {{/if}} </div> <div class="btn-group hidden-xs hidden-sm"> {{if $setloc}} @@ -225,6 +230,30 @@ </div><!-- /.modal --> {{/if}} +{{if $embedPhotos}} +<div class="modal" id="embedPhotoModal" tabindex="-1" role="dialog" aria-labelledby="embedPhotoLabel" aria-hidden="true"> + <div class="modal-dialog"> + <div class="modal-content"> + <div class="modal-header"> + <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> + <h4 class="modal-title" id="embedPhotoModalLabel">{{$embedPhotosModalTitle}}</h4> + </div> + <div class="modal-body" id="embedPhotoModalBody" > + <div id="embedPhotoModalBodyAlbumListDialog" class="hide"> + <div id="embedPhotoModalBodyAlbumList"></div> + </div> + <div id="embedPhotoModalBodyAlbumDialog" class="hide"> + </div> + </div> + <div class="modal-footer"> + <button type="button" class="btn btn-default" data-dismiss="modal">{{$embedPhotosModalCancel}}</button> + <button id="embed-photo-OKButton" type="button" class="btn btn-primary">{{$embedPhotosModalOK}}</button> + </div> + </div><!-- /.modal-content --> + </div><!-- /.modal-dialog --> +</div><!-- /.modal --> +{{/if}} + {{if $content || $attachment || $expanded}} <script>initEditor();</script> {{/if}} diff --git a/view/tpl/profile_advanced.tpl b/view/tpl/profile_advanced.tpl index a4c98b1d0..d0c9621f9 100755 --- a/view/tpl/profile_advanced.tpl +++ b/view/tpl/profile_advanced.tpl @@ -282,7 +282,7 @@ <ul class="profile-thing-list"> {{foreach $items as $item}} <li>{{if $item.img}}<a href="{{$item.url}}" ><img src="{{$item.img}}" class="profile-thing-img" width="100" height="100" alt="{{$item.term}}" /></a>{{/if}} - <a href="{{$item.url}}" >{{$item.term}}</a> + <a href="{{$item.editurl}}" >{{$item.term}}</a> {{if $profile.canlike}}<br /> <button type="button" class="btn btn-default btn-sm" onclick="doprofilelike('thing/' + '{{$item.term_hash}}','like'); return false;" title="{{$likethis}}" > <i class="fa fa-thumbs-o-up" title="{{$likethis}}"></i> diff --git a/view/tpl/wiki.tpl b/view/tpl/wiki.tpl index 1312f8518..dc78aad9f 100644 --- a/view/tpl/wiki.tpl +++ b/view/tpl/wiki.tpl @@ -25,7 +25,7 @@ <button id="inline-btn" type="button" class="btn btn-default btn-xs" onclick="makeFullScreen(false); adjustInlineTopBarHeight();"><i class="fa fa-compress"></i></button> </div> - <h2>{{$wikiheader}}</h2> + <h2><span id="wiki-header-name">{{$wikiheaderName}}</span>: <span id="wiki-header-page">{{$wikiheaderPage}}</span></h2> <div class="clear"></div> </div> <div id="new-wiki-form-wrapper" class="section-content-tools-wrapper" style="display:none;"> @@ -57,6 +57,17 @@ <hr> </div> + <div id="rename-page-form-wrapper" class="section-content-tools-wrapper" style="display:none;"> + <form id="rename-page-form" action="wiki/rename/page" method="post" > + <div class="clear"></div> + {{include file="field_input.tpl" field=$pageRename}} + <div class="btn-group pull-right"> + <button id="rename-page-submit" class="btn btn-warning" type="submit" name="submit" >Rename Page</button> + </div> + </form> <div class="clear"></div> + <hr> + </div> + <div id="wiki-content-container" class="section-content-wrapper" {{if $hideEditor}}style="display: none;"{{/if}}> <ul class="nav nav-tabs" id="wiki-nav-tabs"> <li><a data-toggle="tab" href="#edit-pane">Edit</a></li> @@ -67,6 +78,7 @@ <a data-toggle="dropdown" class="dropdown-toggle" href="#">Page <b class="caret"></b></a> <ul class="dropdown-menu"> <li><a id="save-page" data-toggle="tab" href="#">Save</a></li> + <li><a id="rename-page" data-toggle="tab" href="#">Rename</a></li> <li><a id="delete-page" data-toggle="tab" href="#">Delete</a></li> </ul> </li> @@ -115,7 +127,34 @@ if (window.wiki_page_name === 'Home') { $('#delete-page').hide(); + $('#rename-page').hide(); } + + $('#rename-page').click(function (ev) { + $('#rename-page-form-wrapper').show(); + }); + + $( "#rename-page-form" ).submit(function( event ) { + $.post("wiki/{{$channel}}/rename/page", + { + oldName: window.wiki_page_name, + newName: $('#id_pageRename').val(), + resource_id: window.wiki_resource_id + }, + function (data) { + if (data.success) { + $('#rename-page-form-wrapper').hide(); + window.console.log('data: ' + JSON.stringify(data)); + window.wiki_page_name = data.name.urlName; + $('#wiki-header-page').html(data.name.htmlName); + wiki_refresh_page_list(); + } else { + window.console.log('Error renaming page.'); + } + }, 'json'); + event.preventDefault(); + }); + $(document).ready(function () { wiki_refresh_page_list(); // Show Edit tab first. Otherwise the Ace editor does not load. |