From b02d70adf0f751bdd68269513093573f775abb0f Mon Sep 17 00:00:00 2001 From: Deon George Date: Thu, 10 Oct 2013 13:44:53 +1100 Subject: [PATCH] Open Source Billing --- .htaccess | 21 + LICENSE | 674 + application/bootstrap.php | 169 + application/cache/.htaccess | 2 + application/classes/Auth/ORM.php | 22 + application/classes/Auth/OSB.php | 275 + application/classes/Company.php | 139 + application/classes/Config.php | 177 + application/classes/Controller/Account.php | 33 + .../classes/Controller/Admin/Account.php | 17 + .../classes/Controller/Admin/Module.php | 130 + .../Controller/Admin/Module/Method.php | 137 + .../classes/Controller/Admin/Setup.php | 73 + .../classes/Controller/Admin/Welcome.php | 130 + application/classes/Controller/Debug.php | 36 + application/classes/Controller/Login.php | 92 + application/classes/Controller/Module.php | 14 + .../classes/Controller/Reseller/Account.php | 81 + .../classes/Controller/Reseller/Welcome.php | 25 + .../classes/Controller/TemplateDefault.php | 134 + .../Controller/TemplateDefault/Admin.php | 23 + .../Controller/TemplateDefault/Affiliate.php | 23 + .../Controller/TemplateDefault/User.php | 14 + application/classes/Controller/Tree.php | 131 + .../classes/Controller/User/Account.php | 104 + .../classes/Controller/User/Welcome.php | 25 + application/classes/Controller/Welcome.php | 29 + application/classes/Cookie.php | 15 + application/classes/Country.php | 19 + application/classes/Currency.php | 21 + application/classes/DB.php | 35 + application/classes/Database/Mysql.php | 19 + application/classes/Editor.php | 52 + application/classes/Form.php | 18 + application/classes/HTTP/Exception/404.php | 25 + application/classes/HTTP/Exception/501.php | 34 + application/classes/Kohana.php | 56 + application/classes/Kohana/Exception.php | 64 + application/classes/Minion/Task.php | 17 + application/classes/Model/Account.php | 194 + application/classes/Model/Account/Log.php | 27 + application/classes/Model/Affiliate.php | 14 + .../classes/Model/Auth/RoleDefault.php | 13 + .../classes/Model/Auth/UserDefault.php | 76 + application/classes/Model/Country.php | 17 + application/classes/Model/Currency.php | 14 + application/classes/Model/Group.php | 84 + application/classes/Model/Group/Method.php | 25 + application/classes/Model/Language.php | 15 + application/classes/Model/Log/Error.php | 14 + application/classes/Model/Module.php | 51 + application/classes/Model/Module/Method.php | 43 + .../classes/Model/Module/Method/Token.php | 112 + application/classes/Model/RTM.php | 42 + application/classes/Model/Record/ID.php | 42 + application/classes/Model/Setup.php | 83 + application/classes/ORM.php | 125 + application/classes/ORM/OSB.php | 228 + application/classes/Period.php | 129 + application/classes/Request.php | 31 + application/classes/Response.php | 18 + application/classes/StaticList.php | 71 + application/classes/StaticList/Module.php | 93 + application/classes/StaticList/PriceType.php | 29 + .../classes/StaticList/RecurSchedule.php | 55 + application/classes/StaticList/RecurType.php | 28 + application/classes/StaticList/SweepType.php | 33 + application/classes/StaticList/Title.php | 28 + application/classes/StaticList/YesNo.php | 28 + application/classes/Task.php | 20 + application/classes/Task/Account/Complete.php | 33 + application/classes/URL.php | 54 + application/classes/Valid.php | 27 + application/classes/XML.php | 44 + application/config/auth.php | 18 + application/config/cache.php | 32 + application/config/config.php | 31 + application/config/database.php | 43 + application/config/debug.php | 25 + application/config/invoice.php | 17 + application/config/openssl.cnf | 278 + application/config/pagination.php | 24 + application/config/pwgen.php | 18 + application/config/userguide.php | 46 + application/i18n/.htaccess | 2 + application/media/css/dhtml.calendar.css | 232 + application/media/css/dhtml.menuarrow.gif | Bin 0 -> 68 bytes application/media/css/html5reset-1.6.1.css | 102 + application/media/css/jquery.gritter.css | 92 + application/media/css/login.css | 44 + .../media/img/address-book-new-big.png | Bin 0 -> 3787 bytes application/media/img/address-book-new.png | Bin 0 -> 1305 bytes application/media/img/ajax-progress.gif | Bin 0 -> 7685 bytes application/media/img/bug-big.png | Bin 0 -> 928 bytes application/media/img/calendar.png | Bin 0 -> 478 bytes application/media/img/country/au.png | Bin 0 -> 1043 bytes application/media/img/dialog-error-big.png | Bin 0 -> 2383 bytes application/media/img/dialog-error.png | Bin 0 -> 1126 bytes .../media/img/dialog-information-big.png | Bin 0 -> 3165 bytes application/media/img/dialog-information.png | Bin 0 -> 1242 bytes application/media/img/dialog-password-big.png | Bin 0 -> 2992 bytes application/media/img/dialog-password.png | Bin 0 -> 1196 bytes application/media/img/dialog-question-big.png | Bin 0 -> 2502 bytes application/media/img/dialog-question.png | Bin 0 -> 1086 bytes application/media/img/dialog-warning-big.png | Bin 0 -> 2844 bytes application/media/img/dialog-warning.png | Bin 0 -> 1074 bytes application/media/img/forum-big.png | Bin 0 -> 1615 bytes application/media/img/gnome-pdf.png | Bin 0 -> 3002 bytes application/media/img/gritter-close-ie6.gif | Bin 0 -> 718 bytes application/media/img/gritter.png | Bin 0 -> 4880 bytes application/media/img/help-about-big.png | Bin 0 -> 2978 bytes application/media/img/help-about.png | Bin 0 -> 981 bytes application/media/img/help-big.png | Bin 0 -> 1615 bytes application/media/img/help-faq-big.png | Bin 0 -> 2421 bytes application/media/img/help-faq.png | Bin 0 -> 1118 bytes application/media/img/help.png | Bin 0 -> 738 bytes .../media/img/jquery.gritter.close-ie6.gif | Bin 0 -> 718 bytes application/media/img/jquery.gritter.png | Bin 0 -> 4880 bytes application/media/img/jquery.jstree.d.png | Bin 0 -> 7635 bytes .../media/img/jquery.jstree.throbber.gif | Bin 0 -> 1849 bytes application/media/img/login.user.png | Bin 0 -> 654 bytes application/media/img/logo-small.png | Bin 0 -> 3978 bytes application/media/img/logo.png | Bin 0 -> 10495 bytes application/media/img/request-feature-big.png | Bin 0 -> 1095 bytes application/media/img/smile-big.png | Bin 0 -> 1332 bytes application/media/img/toggle-closed.png | Bin 0 -> 102 bytes application/media/img/toggle-open.png | Bin 0 -> 98 bytes application/media/img/ui-anim_basic_16x16.gif | Bin 0 -> 1459 bytes application/media/js/dhtml.calendar-en.js | 9 + application/media/js/dhtml.calendar-setup.js | 200 + application/media/js/dhtml.calendar.js | 1806 + application/media/js/dhtml.date_selector.js | 76 + application/media/js/jquery-1.6.4.min.js | 4 + .../media/js/jquery-ui-1.8.16.custom.min.js | 791 + application/media/js/jquery.cookie.js | 96 + application/media/js/jquery.gritter-1.5.js | 21 + application/media/js/jquery.jstree-1.0rc3.js | 4551 +++ .../js/jquery.jstree.themes/apple/bg.jpg | Bin 0 -> 331 bytes .../media/js/jquery.jstree.themes/apple/d.png | Bin 0 -> 7765 bytes .../jquery.jstree.themes/apple/dot_for_ie.gif | Bin 0 -> 43 bytes .../js/jquery.jstree.themes/apple/style.css | 61 + .../jquery.jstree.themes/apple/throbber.gif | Bin 0 -> 1849 bytes .../js/jquery.jstree.themes/classic/d.gif | Bin 0 -> 3003 bytes .../js/jquery.jstree.themes/classic/d.png | Bin 0 -> 7535 bytes .../classic/dot_for_ie.gif | Bin 0 -> 43 bytes .../js/jquery.jstree.themes/classic/style.css | 77 + .../jquery.jstree.themes/classic/throbber.gif | Bin 0 -> 1849 bytes .../js/jquery.jstree.themes/default-rtl/d.gif | Bin 0 -> 2872 bytes .../js/jquery.jstree.themes/default-rtl/d.png | Bin 0 -> 7459 bytes .../jquery.jstree.themes/default-rtl/dots.gif | Bin 0 -> 132 bytes .../default-rtl/style.css | 84 + .../default-rtl/throbber.gif | Bin 0 -> 1849 bytes .../js/jquery.jstree.themes/default/d.gif | Bin 0 -> 2944 bytes .../js/jquery.jstree.themes/default/d.png | Bin 0 -> 7635 bytes .../js/jquery.jstree.themes/default/style.css | 74 + .../jquery.jstree.themes/default/throbber.gif | Bin 0 -> 1849 bytes .../media/js/jquery.stickyfloat-1.0.js | 48 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../smoothness/jquery-ui-1.8.16.custom.css | 568 + .../media/js/tiny_mce/jquery.tinymce.js | 1 + application/media/js/tiny_mce/langs/en.js | 170 + application/media/js/tiny_mce/license.txt | 504 + .../js/tiny_mce/plugins/advhr/css/advhr.css | 5 + .../tiny_mce/plugins/advhr/editor_plugin.js | 1 + .../plugins/advhr/editor_plugin_src.js | 57 + .../js/tiny_mce/plugins/advhr/js/rule.js | 43 + .../js/tiny_mce/plugins/advhr/langs/en_dlg.js | 5 + .../media/js/tiny_mce/plugins/advhr/rule.htm | 57 + .../plugins/advimage/css/advimage.css | 13 + .../plugins/advimage/editor_plugin.js | 1 + .../plugins/advimage/editor_plugin_src.js | 50 + .../js/tiny_mce/plugins/advimage/image.htm | 232 + .../tiny_mce/plugins/advimage/img/sample.gif | Bin 0 -> 1624 bytes .../js/tiny_mce/plugins/advimage/js/image.js | 445 + .../tiny_mce/plugins/advimage/langs/en_dlg.js | 43 + .../tiny_mce/plugins/advlink/css/advlink.css | 8 + .../tiny_mce/plugins/advlink/editor_plugin.js | 1 + .../plugins/advlink/editor_plugin_src.js | 61 + .../js/tiny_mce/plugins/advlink/js/advlink.js | 528 + .../tiny_mce/plugins/advlink/langs/en_dlg.js | 52 + .../js/tiny_mce/plugins/advlink/link.htm | 333 + .../tiny_mce/plugins/advlist/editor_plugin.js | 1 + .../plugins/advlist/editor_plugin_src.js | 154 + .../plugins/autoresize/editor_plugin.js | 1 + .../plugins/autoresize/editor_plugin_src.js | 119 + .../plugins/autosave/editor_plugin.js | 1 + .../plugins/autosave/editor_plugin_src.js | 431 + .../js/tiny_mce/plugins/autosave/langs/en.js | 4 + .../tiny_mce/plugins/bbcode/editor_plugin.js | 1 + .../plugins/bbcode/editor_plugin_src.js | 120 + .../plugins/contextmenu/editor_plugin.js | 1 + .../plugins/contextmenu/editor_plugin_src.js | 147 + .../plugins/directionality/editor_plugin.js | 1 + .../directionality/editor_plugin_src.js | 82 + .../plugins/emotions/editor_plugin.js | 1 + .../plugins/emotions/editor_plugin_src.js | 43 + .../js/tiny_mce/plugins/emotions/emotions.htm | 40 + .../plugins/emotions/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emotions/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emotions/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emotions/img/smiley-foot-in-mouth.gif | Bin 0 -> 344 bytes .../plugins/emotions/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emotions/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emotions/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emotions/img/smiley-laughing.gif | Bin 0 -> 344 bytes .../emotions/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emotions/img/smiley-sealed.gif | Bin 0 -> 325 bytes .../plugins/emotions/img/smiley-smile.gif | Bin 0 -> 345 bytes .../plugins/emotions/img/smiley-surprised.gif | Bin 0 -> 342 bytes .../emotions/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../plugins/emotions/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emotions/img/smiley-wink.gif | Bin 0 -> 351 bytes .../plugins/emotions/img/smiley-yell.gif | Bin 0 -> 336 bytes .../tiny_mce/plugins/emotions/js/emotions.js | 22 + .../tiny_mce/plugins/emotions/langs/en_dlg.js | 20 + .../js/tiny_mce/plugins/example/dialog.htm | 22 + .../tiny_mce/plugins/example/editor_plugin.js | 1 + .../plugins/example/editor_plugin_src.js | 84 + .../tiny_mce/plugins/example/img/example.gif | Bin 0 -> 87 bytes .../js/tiny_mce/plugins/example/js/dialog.js | 19 + .../js/tiny_mce/plugins/example/langs/en.js | 3 + .../tiny_mce/plugins/example/langs/en_dlg.js | 3 + .../plugins/fullpage/css/fullpage.css | 182 + .../plugins/fullpage/editor_plugin.js | 1 + .../plugins/fullpage/editor_plugin_src.js | 156 + .../js/tiny_mce/plugins/fullpage/fullpage.htm | 571 + .../tiny_mce/plugins/fullpage/js/fullpage.js | 480 + .../tiny_mce/plugins/fullpage/langs/en_dlg.js | 85 + .../plugins/fullscreen/editor_plugin.js | 1 + .../plugins/fullscreen/editor_plugin_src.js | 151 + .../plugins/fullscreen/fullscreen.htm | 109 + .../tiny_mce/plugins/iespell/editor_plugin.js | 1 + .../plugins/iespell/editor_plugin_src.js | 54 + .../plugins/inlinepopups/editor_plugin.js | 1 + .../plugins/inlinepopups/editor_plugin_src.js | 635 + .../skins/clearlooks2/img/alert.gif | Bin 0 -> 818 bytes .../skins/clearlooks2/img/button.gif | Bin 0 -> 280 bytes .../skins/clearlooks2/img/buttons.gif | Bin 0 -> 1195 bytes .../skins/clearlooks2/img/confirm.gif | Bin 0 -> 915 bytes .../skins/clearlooks2/img/corners.gif | Bin 0 -> 911 bytes .../skins/clearlooks2/img/horizontal.gif | Bin 0 -> 769 bytes .../skins/clearlooks2/img/vertical.gif | Bin 0 -> 92 bytes .../inlinepopups/skins/clearlooks2/window.css | 100 + .../plugins/inlinepopups/template.htm | 387 + .../plugins/insertdatetime/editor_plugin.js | 1 + .../insertdatetime/editor_plugin_src.js | 83 + .../tiny_mce/plugins/layer/editor_plugin.js | 1 + .../plugins/layer/editor_plugin_src.js | 214 + .../plugins/legacyoutput/editor_plugin.js | 1 + .../plugins/legacyoutput/editor_plugin_src.js | 125 + .../js/tiny_mce/plugins/media/css/content.css | 7 + .../js/tiny_mce/plugins/media/css/media.css | 16 + .../tiny_mce/plugins/media/editor_plugin.js | 1 + .../plugins/media/editor_plugin_src.js | 672 + .../js/tiny_mce/plugins/media/img/flash.gif | Bin 0 -> 241 bytes .../tiny_mce/plugins/media/img/flv_player.swf | Bin 0 -> 11668 bytes .../tiny_mce/plugins/media/img/quicktime.gif | Bin 0 -> 303 bytes .../tiny_mce/plugins/media/img/realmedia.gif | Bin 0 -> 439 bytes .../tiny_mce/plugins/media/img/shockwave.gif | Bin 0 -> 387 bytes .../js/tiny_mce/plugins/media/img/trans.gif | Bin 0 -> 43 bytes .../js/tiny_mce/plugins/media/img/video.gif | Bin 0 -> 597 bytes .../plugins/media/img/windowsmedia.gif | Bin 0 -> 415 bytes .../js/tiny_mce/plugins/media/js/embed.js | 73 + .../js/tiny_mce/plugins/media/js/media.js | 291 + .../js/tiny_mce/plugins/media/langs/en_dlg.js | 109 + .../media/js/tiny_mce/plugins/media/media.htm | 810 + .../plugins/nonbreaking/editor_plugin.js | 1 + .../plugins/nonbreaking/editor_plugin_src.js | 53 + .../plugins/noneditable/editor_plugin.js | 1 + .../plugins/noneditable/editor_plugin_src.js | 90 + .../plugins/pagebreak/css/content.css | 1 + .../plugins/pagebreak/editor_plugin.js | 1 + .../plugins/pagebreak/editor_plugin_src.js | 77 + .../plugins/pagebreak/img/pagebreak.gif | Bin 0 -> 325 bytes .../tiny_mce/plugins/pagebreak/img/trans.gif | Bin 0 -> 43 bytes .../tiny_mce/plugins/paste/editor_plugin.js | 1 + .../plugins/paste/editor_plugin_src.js | 965 + .../js/tiny_mce/plugins/paste/js/pastetext.js | 36 + .../js/tiny_mce/plugins/paste/js/pasteword.js | 51 + .../js/tiny_mce/plugins/paste/langs/en_dlg.js | 5 + .../js/tiny_mce/plugins/paste/pastetext.htm | 27 + .../js/tiny_mce/plugins/paste/pasteword.htm | 21 + .../tiny_mce/plugins/preview/editor_plugin.js | 1 + .../plugins/preview/editor_plugin_src.js | 53 + .../js/tiny_mce/plugins/preview/example.html | 28 + .../plugins/preview/jscripts/embed.js | 73 + .../js/tiny_mce/plugins/preview/preview.html | 17 + .../tiny_mce/plugins/print/editor_plugin.js | 1 + .../plugins/print/editor_plugin_src.js | 34 + .../js/tiny_mce/plugins/save/editor_plugin.js | 1 + .../plugins/save/editor_plugin_src.js | 101 + .../searchreplace/css/searchreplace.css | 6 + .../plugins/searchreplace/editor_plugin.js | 1 + .../searchreplace/editor_plugin_src.js | 61 + .../plugins/searchreplace/js/searchreplace.js | 138 + .../plugins/searchreplace/langs/en_dlg.js | 16 + .../plugins/searchreplace/searchreplace.htm | 99 + .../plugins/spellchecker/css/content.css | 1 + .../plugins/spellchecker/editor_plugin.js | 1 + .../plugins/spellchecker/editor_plugin_src.js | 415 + .../plugins/spellchecker/img/wline.gif | Bin 0 -> 46 bytes .../js/tiny_mce/plugins/style/css/props.css | 13 + .../tiny_mce/plugins/style/editor_plugin.js | 1 + .../plugins/style/editor_plugin_src.js | 55 + .../js/tiny_mce/plugins/style/js/props.js | 641 + .../js/tiny_mce/plugins/style/langs/en_dlg.js | 63 + .../media/js/tiny_mce/plugins/style/props.htm | 723 + .../plugins/tabfocus/editor_plugin.js | 1 + .../plugins/tabfocus/editor_plugin_src.js | 112 + .../media/js/tiny_mce/plugins/table/cell.htm | 178 + .../js/tiny_mce/plugins/table/css/cell.css | 17 + .../js/tiny_mce/plugins/table/css/row.css | 25 + .../js/tiny_mce/plugins/table/css/table.css | 13 + .../tiny_mce/plugins/table/editor_plugin.js | 1 + .../plugins/table/editor_plugin_src.js | 1139 + .../js/tiny_mce/plugins/table/js/cell.js | 286 + .../tiny_mce/plugins/table/js/merge_cells.js | 27 + .../media/js/tiny_mce/plugins/table/js/row.js | 237 + .../js/tiny_mce/plugins/table/js/table.js | 454 + .../js/tiny_mce/plugins/table/langs/en_dlg.js | 74 + .../js/tiny_mce/plugins/table/merge_cells.htm | 32 + .../media/js/tiny_mce/plugins/table/row.htm | 155 + .../media/js/tiny_mce/plugins/table/table.htm | 187 + .../js/tiny_mce/plugins/template/blank.htm | 12 + .../plugins/template/css/template.css | 23 + .../plugins/template/editor_plugin.js | 1 + .../plugins/template/editor_plugin_src.js | 159 + .../tiny_mce/plugins/template/js/template.js | 106 + .../tiny_mce/plugins/template/langs/en_dlg.js | 15 + .../js/tiny_mce/plugins/template/template.htm | 31 + .../plugins/visualchars/editor_plugin.js | 1 + .../plugins/visualchars/editor_plugin_src.js | 83 + .../plugins/wordcount/editor_plugin.js | 1 + .../plugins/wordcount/editor_plugin_src.js | 114 + .../js/tiny_mce/plugins/xhtmlxtras/abbr.htm | 141 + .../tiny_mce/plugins/xhtmlxtras/acronym.htm | 141 + .../plugins/xhtmlxtras/attributes.htm | 148 + .../js/tiny_mce/plugins/xhtmlxtras/cite.htm | 141 + .../plugins/xhtmlxtras/css/attributes.css | 11 + .../tiny_mce/plugins/xhtmlxtras/css/popup.css | 9 + .../js/tiny_mce/plugins/xhtmlxtras/del.htm | 161 + .../plugins/xhtmlxtras/editor_plugin.js | 1 + .../plugins/xhtmlxtras/editor_plugin_src.js | 132 + .../js/tiny_mce/plugins/xhtmlxtras/ins.htm | 161 + .../js/tiny_mce/plugins/xhtmlxtras/js/abbr.js | 28 + .../tiny_mce/plugins/xhtmlxtras/js/acronym.js | 28 + .../plugins/xhtmlxtras/js/attributes.js | 126 + .../js/tiny_mce/plugins/xhtmlxtras/js/cite.js | 28 + .../js/tiny_mce/plugins/xhtmlxtras/js/del.js | 53 + .../plugins/xhtmlxtras/js/element_common.js | 231 + .../js/tiny_mce/plugins/xhtmlxtras/js/ins.js | 52 + .../plugins/xhtmlxtras/langs/en_dlg.js | 32 + .../js/tiny_mce/themes/advanced/about.htm | 54 + .../js/tiny_mce/themes/advanced/anchor.htm | 26 + .../js/tiny_mce/themes/advanced/charmap.htm | 52 + .../tiny_mce/themes/advanced/color_picker.htm | 73 + .../themes/advanced/editor_template.js | 1 + .../themes/advanced/editor_template_src.js | 1233 + .../js/tiny_mce/themes/advanced/image.htm | 80 + .../themes/advanced/img/colorpicker.jpg | Bin 0 -> 3189 bytes .../js/tiny_mce/themes/advanced/img/icons.gif | Bin 0 -> 11794 bytes .../js/tiny_mce/themes/advanced/js/about.js | 72 + .../js/tiny_mce/themes/advanced/js/anchor.js | 42 + .../js/tiny_mce/themes/advanced/js/charmap.js | 335 + .../themes/advanced/js/color_picker.js | 253 + .../js/tiny_mce/themes/advanced/js/image.js | 247 + .../js/tiny_mce/themes/advanced/js/link.js | 156 + .../themes/advanced/js/source_editor.js | 56 + .../js/tiny_mce/themes/advanced/langs/en.js | 62 + .../tiny_mce/themes/advanced/langs/en_dlg.js | 52 + .../js/tiny_mce/themes/advanced/link.htm | 58 + .../themes/advanced/skins/default/content.css | 36 + .../themes/advanced/skins/default/dialog.css | 117 + .../advanced/skins/default/img/buttons.png | Bin 0 -> 3274 bytes .../advanced/skins/default/img/items.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/menu_arrow.gif | Bin 0 -> 68 bytes .../advanced/skins/default/img/menu_check.gif | Bin 0 -> 70 bytes .../advanced/skins/default/img/progress.gif | Bin 0 -> 1787 bytes .../advanced/skins/default/img/tabs.gif | Bin 0 -> 1326 bytes .../themes/advanced/skins/default/ui.css | 213 + .../themes/advanced/skins/o2k7/content.css | 36 + .../themes/advanced/skins/o2k7/dialog.css | 116 + .../advanced/skins/o2k7/img/button_bg.png | Bin 0 -> 5859 bytes .../skins/o2k7/img/button_bg_black.png | Bin 0 -> 3736 bytes .../skins/o2k7/img/button_bg_silver.png | Bin 0 -> 5358 bytes .../themes/advanced/skins/o2k7/ui.css | 215 + .../themes/advanced/skins/o2k7/ui_black.css | 8 + .../themes/advanced/skins/o2k7/ui_silver.css | 5 + .../themes/advanced/source_editor.htm | 25 + .../tiny_mce/themes/simple/editor_template.js | 1 + .../themes/simple/editor_template_src.js | 84 + .../js/tiny_mce/themes/simple/img/icons.gif | Bin 0 -> 1440 bytes .../js/tiny_mce/themes/simple/langs/en.js | 11 + .../themes/simple/skins/default/content.css | 25 + .../themes/simple/skins/default/ui.css | 32 + .../themes/simple/skins/o2k7/content.css | 17 + .../simple/skins/o2k7/img/button_bg.png | Bin 0 -> 5102 bytes .../tiny_mce/themes/simple/skins/o2k7/ui.css | 35 + application/media/js/tiny_mce/tiny_mce.js | 1 + .../media/js/tiny_mce/tiny_mce_popup.js | 5 + application/media/js/tiny_mce/tiny_mce_src.js | 14093 +++++++ .../js/tiny_mce/utils/editable_selects.js | 70 + .../media/js/tiny_mce/utils/form_utils.js | 200 + application/media/js/tiny_mce/utils/mctabs.js | 77 + .../media/js/tiny_mce/utils/validate.js | 220 + application/media/js/yaml/yaml-focusfix.js | 72 + application/media/site/1/img/logo-small.png | Bin 0 -> 2225 bytes application/media/theme/yaml/css/base.css | 250 + application/media/theme/yaml/css/content.css | 225 + .../media/theme/yaml/css/images/bg_body.gif | Bin 0 -> 7227 bytes .../media/theme/yaml/css/images/bg_dotted.png | Bin 0 -> 127 bytes .../media/theme/yaml/css/images/bg_head.png | Bin 0 -> 228 bytes .../media/theme/yaml/css/images/bg_logo.png | Bin 0 -> 915 bytes .../theme/yaml/css/images/bg_main_bottom.png | Bin 0 -> 262 bytes .../theme/yaml/css/images/bg_main_top.png | Bin 0 -> 260 bytes .../yaml/css/navigation/images/bg_hnav1.png | Bin 0 -> 306 bytes .../css/navigation/images/bg_hnav1_hover.png | Bin 0 -> 406 bytes .../css/navigation/images/bg_hnav2_hover.png | Bin 0 -> 291 bytes .../theme/yaml/css/navigation/nav_buttons.css | 16 + application/media/theme/yaml/css/page.css | 14 + .../theme/yaml/css/print/print_100_draft.css | 74 + .../media/theme/yaml/css/screen/basemod.css | 39 + .../theme/yaml/css/screen/contentmod.css | 145 + application/messages/.htaccess | 2 + application/views/.htaccess | 2 + application/views/account/user/edit.php | 84 + .../views/account/user/resetpassword.php | 17 + application/views/errors/404.php | 1 + application/views/errors/501.php | 4 + application/views/login.php | 16 + application/views/login_reset.php | 14 + application/views/login_reset_sent.php | 13 + application/views/module/admin/method_add.php | 21 + .../views/module/admin/method_detail_body.php | 8 + .../views/module/admin/method_detail_foot.php | 1 + .../views/module/admin/method_detail_head.php | 8 + application/views/register.php | 135 + application/views/setup/admin/edit.php | 46 + .../views/setup/admin/edit/module/body.php | 3 + .../views/setup/admin/edit/module/foot.php | 1 + .../views/setup/admin/edit/module/head.php | 1 + application/views/setup/admin/module/body.php | 5 + application/views/setup/admin/module/foot.php | 1 + application/views/setup/admin/module/head.php | 1 + application/views/table/list_body.php | 7 + application/views/table/list_foot.php | 1 + application/views/table/list_head.php | 2 + application/views/table/list_xtra.php | 1 + application/views/table/select_body.php | 8 + application/views/table/select_foot.php | 8 + application/views/table/select_head.php | 2 + application/views/table/select_xtra.php | 1 + application/views/template.php | 0 application/views/theme/yaml/page.php | 115 + application/views/welcome/reseller.php | 1 + application/views/welcome/user.php | 1 + includes/kohana/.travis.yml | 24 + includes/kohana/LICENSE.md | 14 + includes/kohana/README.md | 19 + includes/kohana/composer.json | 5 + includes/kohana/composer.lock | 413 + includes/kohana/composer.phar | Bin 0 -> 628852 bytes includes/kohana/install.php | 233 + includes/kohana/modules/auth/README.md | 13 + includes/kohana/modules/auth/classes/Auth.php | 3 + .../kohana/modules/auth/classes/Auth/File.php | 3 + .../modules/auth/classes/Kohana/Auth.php | 171 + .../modules/auth/classes/Kohana/Auth/File.php | 94 + includes/kohana/modules/auth/config/auth.php | 17 + .../kohana/modules/auth/config/userguide.php | 23 + .../kohana/modules/auth/guide/auth/config.md | 13 + .../modules/auth/guide/auth/driver/develop.md | 79 + .../modules/auth/guide/auth/driver/file.md | 19 + .../kohana/modules/auth/guide/auth/index.md | 19 + .../kohana/modules/auth/guide/auth/login.md | 62 + .../kohana/modules/auth/guide/auth/menu.md | 6 + includes/kohana/modules/cache/README.md | 59 + .../kohana/modules/cache/classes/Cache.php | 3 + .../modules/cache/classes/Cache/Apc.php | 3 + .../cache/classes/Cache/Arithmetic.php | 3 + .../modules/cache/classes/Cache/Exception.php | 3 + .../modules/cache/classes/Cache/File.php | 3 + .../cache/classes/Cache/GarbageCollect.php | 3 + .../modules/cache/classes/Cache/Memcache.php | 3 + .../cache/classes/Cache/MemcacheTag.php | 3 + .../modules/cache/classes/Cache/Sqlite.php | 3 + .../modules/cache/classes/Cache/Tagging.php | 3 + .../modules/cache/classes/Cache/Wincache.php | 3 + .../modules/cache/classes/HTTP/Cache.php | 3 + .../modules/cache/classes/Kohana/Cache.php | 300 + .../cache/classes/Kohana/Cache/Apc.php | 166 + .../cache/classes/Kohana/Cache/Arithmetic.php | 39 + .../cache/classes/Kohana/Cache/Exception.php | 11 + .../cache/classes/Kohana/Cache/File.php | 466 + .../classes/Kohana/Cache/GarbageCollect.php | 23 + .../cache/classes/Kohana/Cache/Memcache.php | 354 + .../classes/Kohana/Cache/MemcacheTag.php | 78 + .../cache/classes/Kohana/Cache/Sqlite.php | 334 + .../cache/classes/Kohana/Cache/Tagging.php | 41 + .../cache/classes/Kohana/Cache/Wincache.php | 140 + .../cache/classes/Kohana/HTTP/Cache.php | 503 + .../kohana/modules/cache/config/cache.php | 70 + .../kohana/modules/cache/config/userguide.php | 23 + .../kohana/modules/cache/guide/cache.usage.md | 219 + .../modules/cache/guide/cache/config.md | 162 + .../modules/cache/guide/cache/examples.md | 0 .../kohana/modules/cache/guide/cache/index.md | 57 + .../kohana/modules/cache/guide/cache/menu.md | 3 + .../kohana/modules/cache/guide/cache/usage.md | 219 + .../tests/cache/CacheBasicMethodsTest.php | 299 + .../modules/cache/tests/cache/CacheTest.php | 242 + .../modules/cache/tests/cache/FileTest.php | 98 + .../modules/cache/tests/cache/SqliteTest.php | 44 + .../cache/tests/cache/WincacheTest.php | 39 + .../cache/tests/cache/arithmetic/ApcTest.php | 75 + .../arithmetic/CacheArithmeticMethods.php | 173 + .../tests/cache/arithmetic/MemcacheTest.php | 103 + .../tests/cache/request/client/CacheTest.php | 265 + .../kohana/modules/cache/tests/phpunit.xml | 19 + .../codebench/classes/Bench/ArrCallback.php | 57 + .../classes/Bench/AutoLinkEmails.php | 70 + .../codebench/classes/Bench/DateSpan.php | 186 + .../codebench/classes/Bench/ExplodeLimit.php | 34 + .../codebench/classes/Bench/GruberURL.php | 61 + .../codebench/classes/Bench/LtrimDigits.php | 28 + .../codebench/classes/Bench/MDDoBaseURL.php | 66 + .../codebench/classes/Bench/MDDoImageURL.php | 66 + .../classes/Bench/MDDoIncludeViews.php | 50 + .../classes/Bench/StripNullBytes.php | 37 + .../codebench/classes/Bench/Transliterate.php | 65 + .../codebench/classes/Bench/URLSite.php | 123 + .../codebench/classes/Bench/UserFuncArray.php | 58 + .../codebench/classes/Bench/ValidColor.php | 116 + .../codebench/classes/Bench/ValidURL.php | 105 + .../modules/codebench/classes/Codebench.php | 3 + .../classes/Controller/Codebench.php | 36 + .../codebench/classes/Kohana/Codebench.php | 217 + .../modules/codebench/config/codebench.php | 16 + .../modules/codebench/config/userguide.php | 23 + .../codebench/guide/codebench/index.md | 76 + .../modules/codebench/guide/codebench/menu.md | 1 + includes/kohana/modules/codebench/init.php | 8 + .../guide/codebench/codebench_screenshot1.png | Bin 0 -> 15827 bytes .../guide/codebench/codebench_screenshot2.png | Bin 0 -> 13575 bytes .../modules/codebench/views/codebench.php | 260 + includes/kohana/modules/cron/README.markdown | 86 + includes/kohana/modules/cron/classes/Cron.php | 10 + .../modules/cron/classes/Kohana/Cron.php | 621 + includes/kohana/modules/cron/config/cron.php | 28 + includes/kohana/modules/cron/run.php | 22 + .../kohana/modules/cron/tests/kohana/cron.php | 85 + .../database/classes/Config/Database.php | 12 + .../classes/Config/Database/Reader.php | 15 + .../classes/Config/Database/Writer.php | 15 + .../kohana/modules/database/classes/DB.php | 3 + .../modules/database/classes/Database.php | 3 + .../database/classes/Database/Exception.php | 3 + .../database/classes/Database/Expression.php | 3 + .../database/classes/Database/MySQL.php | 3 + .../classes/Database/MySQL/Result.php | 3 + .../modules/database/classes/Database/PDO.php | 3 + .../database/classes/Database/Query.php | 3 + .../classes/Database/Query/Builder.php | 3 + .../classes/Database/Query/Builder/Delete.php | 3 + .../classes/Database/Query/Builder/Insert.php | 3 + .../classes/Database/Query/Builder/Join.php | 3 + .../classes/Database/Query/Builder/Select.php | 3 + .../classes/Database/Query/Builder/Update.php | 3 + .../classes/Database/Query/Builder/Where.php | 3 + .../database/classes/Database/Result.php | 3 + .../classes/Database/Result/Cached.php | 3 + .../classes/Kohana/Config/Database.php | 15 + .../classes/Kohana/Config/Database/Reader.php | 66 + .../classes/Kohana/Config/Database/Writer.php | 110 + .../modules/database/classes/Kohana/DB.php | 139 + .../database/classes/Kohana/Database.php | 726 + .../classes/Kohana/Database/Exception.php | 11 + .../classes/Kohana/Database/Expression.php | 138 + .../classes/Kohana/Database/MySQL.php | 443 + .../classes/Kohana/Database/MySQL/Result.php | 71 + .../database/classes/Kohana/Database/PDO.php | 247 + .../classes/Kohana/Database/Query.php | 262 + .../classes/Kohana/Database/Query/Builder.php | 248 + .../Kohana/Database/Query/Builder/Delete.php | 99 + .../Kohana/Database/Query/Builder/Insert.php | 181 + .../Kohana/Database/Query/Builder/Join.php | 149 + .../Kohana/Database/Query/Builder/Select.php | 446 + .../Kohana/Database/Query/Builder/Update.php | 140 + .../Kohana/Database/Query/Builder/Where.php | 180 + .../classes/Kohana/Database/Result.php | 338 + .../classes/Kohana/Database/Result/Cached.php | 51 + .../classes/Kohana/Model/Database.php | 63 + .../classes/Kohana/Session/Database.php | 239 + .../database/classes/Model/Database.php | 3 + .../database/classes/Session/Database.php | 3 + .../modules/database/config/database.php | 56 + .../modules/database/config/session.php | 27 + .../modules/database/config/userguide.php | 23 + .../modules/database/guide/database/config.md | 116 + .../database/guide/database/examples.md | 52 + .../modules/database/guide/database/index.md | 17 + .../modules/database/guide/database/menu.md | 7 + .../modules/database/guide/database/query.md | 5 + .../database/guide/database/query/builder.md | 251 + .../guide/database/query/parameterized.md | 67 + .../database/guide/database/results.md | 105 + includes/kohana/modules/image/README.markdown | 0 .../kohana/modules/image/classes/Image.php | 3 + .../kohana/modules/image/classes/Image/GD.php | 3 + .../modules/image/classes/Image/Imagick.php | 3 + .../modules/image/classes/Kohana/Image.php | 761 + .../modules/image/classes/Kohana/Image/GD.php | 665 + .../image/classes/Kohana/Image/Imagick.php | 334 + .../kohana/modules/image/config/userguide.php | 23 + .../modules/image/guide/image/examples.md | 7 + .../image/guide/image/examples/crop.md | 141 + .../image/guide/image/examples/dynamic.md | 108 + .../image/guide/image/examples/upload.md | 139 + .../kohana/modules/image/guide/image/index.md | 21 + .../kohana/modules/image/guide/image/menu.md | 6 + .../kohana/modules/image/guide/image/using.md | 112 + .../modules/image/media/guide/image/Thumbs.db | Bin 0 -> 19968 bytes .../image/media/guide/image/crop_form.jpg | Bin 0 -> 15262 bytes .../image/media/guide/image/crop_orig.jpg | Bin 0 -> 31360 bytes .../image/media/guide/image/crop_result.jpg | Bin 0 -> 15771 bytes .../image/media/guide/image/dynamic-400.jpg | Bin 0 -> 27609 bytes .../image/media/guide/image/dynamic-600.jpg | Bin 0 -> 45517 bytes .../image/media/guide/image/upload_form.jpg | Bin 0 -> 12478 bytes .../image/media/guide/image/upload_result.jpg | Bin 0 -> 18469 bytes .../modules/image/tests/kohana/ImageTest.php | 36 + .../modules/image/tests/test_data/test_image | Bin 0 -> 3455 bytes .../kohana/modules/khemail/README.markdown | 39 + .../kohana/modules/khemail/classes/Email.php | 145 + .../kohana/modules/khemail/config/email.php | 29 + .../modules/khemail/vendor/swift/CHANGES | 61 + .../modules/khemail/vendor/swift/LICENSE | 165 + .../modules/khemail/vendor/swift/README | 30 + .../modules/khemail/vendor/swift/VERSION | 1 + .../khemail/vendor/swift/classes/Swift.php | 57 + .../vendor/swift/classes/Swift/Attachment.php | 75 + .../AbstractFilterableInputStream.php | 178 + .../Swift/ByteStream/ArrayByteStream.php | 190 + .../Swift/ByteStream/FileByteStream.php | 177 + .../swift/classes/Swift/CharacterReader.php | 60 + .../GenericFixedWidthReader.php | 96 + .../Swift/CharacterReader/UsAsciiReader.php | 83 + .../Swift/CharacterReader/Utf8Reader.php | 183 + .../classes/Swift/CharacterReaderFactory.php | 29 + .../SimpleCharacterReaderFactory.php | 119 + .../swift/classes/Swift/CharacterStream.php | 86 + .../CharacterStream/ArrayCharacterStream.php | 319 + .../CharacterStream/NgCharacterStream.php | 300 + .../classes/Swift/DependencyContainer.php | 349 + .../classes/Swift/DependencyException.php | 30 + .../swift/classes/Swift/EmbeddedFile.php | 73 + .../vendor/swift/classes/Swift/Encoder.php | 32 + .../classes/Swift/Encoder/Base64Encoder.php | 63 + .../swift/classes/Swift/Encoder/QpEncoder.php | 263 + .../classes/Swift/Encoder/Rfc2231Encoder.php | 89 + .../vendor/swift/classes/Swift/Encoding.php | 70 + .../classes/Swift/Events/CommandEvent.php | 67 + .../classes/Swift/Events/CommandListener.php | 29 + .../swift/classes/Swift/Events/Event.php | 39 + .../classes/Swift/Events/EventDispatcher.php | 81 + .../classes/Swift/Events/EventListener.php | 19 + .../classes/Swift/Events/EventObject.php | 65 + .../classes/Swift/Events/ResponseEvent.php | 65 + .../classes/Swift/Events/ResponseListener.php | 29 + .../swift/classes/Swift/Events/SendEvent.php | 127 + .../classes/Swift/Events/SendListener.php | 35 + .../Swift/Events/SimpleEventDispatcher.php | 175 + .../Swift/Events/TransportChangeEvent.php | 31 + .../Swift/Events/TransportChangeListener.php | 53 + .../Swift/Events/TransportExceptionEvent.php | 50 + .../Events/TransportExceptionListener.php | 30 + .../swift/classes/Swift/FailoverTransport.php | 48 + .../vendor/swift/classes/Swift/FileStream.php | 28 + .../vendor/swift/classes/Swift/Filterable.php | 34 + .../vendor/swift/classes/Swift/Image.php | 62 + .../swift/classes/Swift/InputByteStream.php | 72 + .../swift/classes/Swift/IoException.php | 30 + .../vendor/swift/classes/Swift/KeyCache.php | 99 + .../classes/Swift/KeyCache/ArrayKeyCache.php | 209 + .../classes/Swift/KeyCache/DiskKeyCache.php | 316 + .../Swift/KeyCache/KeyCacheInputStream.php | 53 + .../classes/Swift/KeyCache/NullKeyCache.php | 110 + .../KeyCache/SimpleKeyCacheInputStream.php | 131 + .../classes/Swift/LoadBalancedTransport.php | 48 + .../swift/classes/Swift/MailTransport.php | 48 + .../vendor/swift/classes/Swift/Mailer.php | 173 + .../Swift/Mailer/ArrayRecipientIterator.php | 59 + .../Swift/Mailer/RecipientIterator.php | 34 + .../vendor/swift/classes/Swift/Message.php | 82 + .../swift/classes/Swift/Mime/Attachment.php | 143 + .../classes/Swift/Mime/CharsetObserver.php | 26 + .../classes/Swift/Mime/ContentEncoder.php | 41 + .../ContentEncoder/Base64ContentEncoder.php | 81 + .../ContentEncoder/PlainContentEncoder.php | 175 + .../Mime/ContentEncoder/QpContentEncoder.php | 117 + .../swift/classes/Swift/Mime/EmbeddedFile.php | 51 + .../classes/Swift/Mime/EncodingObserver.php | 28 + .../swift/classes/Swift/Mime/Header.php | 85 + .../classes/Swift/Mime/HeaderEncoder.php | 28 + .../HeaderEncoder/Base64HeaderEncoder.php | 36 + .../Mime/HeaderEncoder/QpHeaderEncoder.php | 99 + .../classes/Swift/Mime/HeaderFactory.php | 72 + .../swift/classes/Swift/Mime/HeaderSet.php | 170 + .../Swift/Mime/Headers/AbstractHeader.php | 596 + .../classes/Swift/Mime/Headers/DateHeader.php | 118 + .../Mime/Headers/IdentificationHeader.php | 161 + .../Swift/Mime/Headers/MailboxHeader.php | 316 + .../Mime/Headers/ParameterizedHeader.php | 274 + .../classes/Swift/Mime/Headers/PathHeader.php | 126 + .../Swift/Mime/Headers/UnstructuredHeader.php | 108 + .../swift/classes/Swift/Mime/Message.php | 230 + .../swift/classes/Swift/Mime/MimeEntity.php | 108 + .../swift/classes/Swift/Mime/MimePart.php | 196 + .../Swift/Mime/ParameterizedHeader.php | 35 + .../Swift/Mime/SimpleHeaderFactory.php | 187 + .../classes/Swift/Mime/SimpleHeaderSet.php | 396 + .../classes/Swift/Mime/SimpleMessage.php | 609 + .../classes/Swift/Mime/SimpleMimeEntity.php | 803 + .../vendor/swift/classes/Swift/MimePart.php | 65 + .../swift/classes/Swift/OutputByteStream.php | 41 + .../classes/Swift/Plugins/AntiFloodPlugin.php | 147 + .../Swift/Plugins/BandwidthMonitorPlugin.php | 173 + .../Swift/Plugins/Decorator/Replacements.php | 36 + .../classes/Swift/Plugins/DecoratorPlugin.php | 201 + .../swift/classes/Swift/Plugins/Logger.php | 37 + .../classes/Swift/Plugins/LoggerPlugin.php | 160 + .../Swift/Plugins/Loggers/ArrayLogger.php | 73 + .../Swift/Plugins/Loggers/EchoLogger.php | 64 + .../Swift/Plugins/Pop/Pop3Connection.php | 36 + .../Swift/Plugins/Pop/Pop3Exception.php | 34 + .../Swift/Plugins/PopBeforeSmtpPlugin.php | 288 + .../swift/classes/Swift/Plugins/Reporter.php | 36 + .../classes/Swift/Plugins/ReporterPlugin.php | 82 + .../Swift/Plugins/Reporters/HitReporter.php | 63 + .../Swift/Plugins/Reporters/HtmlReporter.php | 47 + .../swift/classes/Swift/Plugins/Sleeper.php | 26 + .../classes/Swift/Plugins/ThrottlerPlugin.php | 188 + .../swift/classes/Swift/Plugins/Timer.php | 26 + .../swift/classes/Swift/Preferences.php | 76 + .../Swift/ReplacementFilterFactory.php | 27 + .../classes/Swift/RfcComplianceException.php | 30 + .../swift/classes/Swift/SendmailTransport.php | 48 + .../swift/classes/Swift/SmtpTransport.php | 56 + .../swift/classes/Swift/StreamFilter.php | 33 + .../ByteArrayReplacementFilter.php | 188 + .../StreamFilters/StringReplacementFilter.php | 66 + .../StringReplacementFilterFactory.php | 53 + .../swift/classes/Swift/SwiftException.php | 28 + .../vendor/swift/classes/Swift/Transport.php | 60 + .../Swift/Transport/AbstractSmtpTransport.php | 543 + .../Esmtp/Auth/CramMd5Authenticator.php | 88 + .../Esmtp/Auth/LoginAuthenticator.php | 58 + .../Esmtp/Auth/PlainAuthenticator.php | 57 + .../Swift/Transport/Esmtp/AuthHandler.php | 262 + .../Swift/Transport/Esmtp/Authenticator.php | 38 + .../classes/Swift/Transport/EsmtpHandler.php | 82 + .../Swift/Transport/EsmtpTransport.php | 340 + .../Swift/Transport/FailoverTransport.php | 97 + .../classes/Swift/Transport/IoBuffer.php | 65 + .../Swift/Transport/LoadBalancedTransport.php | 188 + .../classes/Swift/Transport/MailInvoker.php | 36 + .../classes/Swift/Transport/MailTransport.php | 242 + .../Swift/Transport/SendmailTransport.php | 173 + .../Swift/Transport/SimpleMailInvoker.php | 58 + .../classes/Swift/Transport/SmtpAgent.php | 36 + .../classes/Swift/Transport/StreamBuffer.php | 276 + .../classes/Swift/TransportException.php | 31 + .../swift/dependency_maps/cache_deps.php | 25 + .../swift/dependency_maps/mime_deps.php | 97 + .../swift/dependency_maps/transport_deps.php | 62 + .../khemail/vendor/swift/mime_types.php | 76 + .../khemail/vendor/swift/preferences.php | 20 + .../khemail/vendor/swift/swift_init.php | 21 + .../khemail/vendor/swift/swift_required.php | 22 + .../vendor/swift/swift_required_pear.php | 22 + includes/kohana/modules/minion/README.md | 62 + .../minion/classes/Kohana/Minion/CLI.php | 315 + .../classes/Kohana/Minion/Exception.php | 64 + .../Kohana/Minion/Exception/InvalidTask.php | 18 + .../minion/classes/Kohana/Minion/Task.php | 364 + .../modules/minion/classes/Minion/CLI.php | 3 + .../minion/classes/Minion/Exception.php | 3 + .../classes/Minion/Exception/InvalidTask.php | 3 + .../modules/minion/classes/Minion/Task.php | 8 + .../modules/minion/classes/Task/Help.php | 28 + .../modules/minion/config/userguide.php | 13 + .../modules/minion/guide/minion/index.md | 3 + .../modules/minion/guide/minion/menu.md | 3 + .../modules/minion/guide/minion/setup.md | 32 + .../modules/minion/guide/minion/tasks.md | 71 + .../modules/minion/messages/validation.php | 5 + includes/kohana/modules/minion/minion | 4 + includes/kohana/modules/minion/miniond | 68 + .../modules/minion/tests/minion/task.php | 70 + .../minion/views/minion/error/validation.php | 10 + .../minion/views/minion/help/error.php | 7 + .../modules/minion/views/minion/help/list.php | 17 + .../modules/minion/views/minion/help/task.php | 17 + .../kohana/modules/orm/auth-schema-mysql.sql | 49 + .../modules/orm/auth-schema-postgresql.sql | 53 + .../kohana/modules/orm/classes/Auth/ORM.php | 3 + .../modules/orm/classes/Kohana/Auth/ORM.php | 291 + .../kohana/modules/orm/classes/Kohana/ORM.php | 2404 ++ .../Kohana/ORM/Validation/Exception.php | 198 + .../modules/orm/classes/Model/Auth/Role.php | 31 + .../modules/orm/classes/Model/Auth/User.php | 204 + .../orm/classes/Model/Auth/User/Token.php | 77 + .../kohana/modules/orm/classes/Model/Role.php | 7 + .../kohana/modules/orm/classes/Model/User.php | 7 + .../modules/orm/classes/Model/User/Token.php | 7 + includes/kohana/modules/orm/classes/ORM.php | 3 + .../orm/classes/ORM/Validation/Exception.php | 10 + .../kohana/modules/orm/config/userguide.php | 23 + .../kohana/modules/orm/guide/orm/examples.md | 13 + .../modules/orm/guide/orm/examples/simple.md | 119 + .../orm/guide/orm/examples/validation.md | 137 + .../kohana/modules/orm/guide/orm/filters.md | 41 + .../kohana/modules/orm/guide/orm/index.md | 22 + includes/kohana/modules/orm/guide/orm/menu.md | 10 + .../kohana/modules/orm/guide/orm/models.md | 28 + .../modules/orm/guide/orm/relationships.md | 123 + .../kohana/modules/orm/guide/orm/tutorials.md | 0 .../kohana/modules/orm/guide/orm/upgrading.md | 16 + .../kohana/modules/orm/guide/orm/using.md | 94 + .../modules/orm/guide/orm/validation.md | 111 + includes/kohana/modules/pagination/.gitignore | 1 + .../pagination/classes/Kohana/Pagination.php | 335 + .../modules/pagination/classes/Pagination.php | 3 + .../modules/pagination/config/pagination.php | 15 + .../modules/pagination/config/userguide.php | 23 + .../pagination/guide/pagination/config.md | 94 + .../pagination/guide/pagination/examples.md | 0 .../pagination/guide/pagination/index.md | 0 .../pagination/guide/pagination/menu.md | 4 + .../pagination/guide/pagination/usage.md | 0 .../pagination/views/pagination/basic.php | 37 + .../pagination/views/pagination/floating.php | 94 + .../simplehtmldom/classes/simple_html_dom.php | 975 + .../kohana/modules/unittest/README.markdown | 24 + .../kohana/modules/unittest/bootstrap.php | 136 + .../unittest/bootstrap_all_modules.php | 20 + .../Kohana/Unittest/Database/TestCase.php | 311 + .../classes/Kohana/Unittest/Helpers.php | 169 + .../classes/Kohana/Unittest/TestCase.php | 261 + .../classes/Kohana/Unittest/TestSuite.php | 80 + .../classes/Kohana/Unittest/Tests.php | 267 + .../classes/Unittest/Database/TestCase.php | 17 + .../unittest/classes/Unittest/Helpers.php | 3 + .../unittest/classes/Unittest/TestCase.php | 3 + .../unittest/classes/Unittest/TestSuite.php | 3 + .../unittest/classes/Unittest/Tests.php | 3 + .../modules/unittest/config/unittest.php | 34 + .../modules/unittest/config/userguide.php | 13 + .../modules/unittest/example.phpunit.xml | 16 + .../modules/unittest/guide/unittest/index.md | 3 + .../modules/unittest/guide/unittest/menu.md | 5 + .../unittest/guide/unittest/mockobjects.md | 265 + .../unittest/guide/unittest/testing.md | 117 + .../guide/unittest/testing_workflows.md | 41 + .../guide/unittest/troubleshooting.md | 21 + includes/kohana/modules/unittest/tests.php | 20 + includes/kohana/modules/userguide/README.md | 69 + .../classes/Controller/Userguide.php | 3 + .../modules/userguide/classes/Kodoc.php | 3 + .../modules/userguide/classes/Kodoc/Class.php | 3 + .../userguide/classes/Kodoc/Markdown.php | 3 + .../userguide/classes/Kodoc/Method.php | 3 + .../userguide/classes/Kodoc/Method/Param.php | 3 + .../userguide/classes/Kodoc/Missing.php | 3 + .../userguide/classes/Kodoc/Property.php | 3 + .../classes/Kohana/Controller/Userguide.php | 398 + .../userguide/classes/Kohana/Kodoc.php | 466 + .../userguide/classes/Kohana/Kodoc/Class.php | 279 + .../classes/Kohana/Kodoc/Markdown.php | 289 + .../userguide/classes/Kohana/Kodoc/Method.php | 141 + .../classes/Kohana/Kodoc/Method/Param.php | 101 + .../classes/Kohana/Kodoc/Missing.php | 36 + .../classes/Kohana/Kodoc/Property.php | 90 + .../modules/userguide/config/userguide.php | 39 + .../guide/de-de/about.conventions.md | 300 + .../userguide/guide/de-de/about.kohana.md | 15 + .../modules/userguide/guide/developers.md | 150 + .../userguide/guide/userguide/adding.md | 55 + .../userguide/guide/userguide/config.md | 35 + .../userguide/guide/userguide/contributing.md | 75 + .../userguide/guide/userguide/index.md | 3 + .../userguide/guide/userguide/markdown.md | 237 + .../modules/userguide/guide/userguide/menu.md | 7 + .../userguide/guide/userguide/modules.md | 0 .../userguide/guide/userguide/using.md | 1 + .../userguide/guide/userguide/works.md | 25 + includes/kohana/modules/userguide/init.php | 44 + .../modules/userguide/media/guide/css/api.css | 34 + .../userguide/media/guide/css/kodoc.css | 142 + .../userguide/media/guide/css/print.css | 50 + .../userguide/media/guide/css/screen.css | 267 + .../userguide/media/guide/css/shCore.css | 226 + .../media/guide/css/shThemeDefault.css | 117 + .../media/guide/css/shThemeKodoc.css | 183 + .../userguide/media/guide/img/arrows.png | Bin 0 -> 357 bytes .../userguide/media/guide/img/breadcrumbs.png | Bin 0 -> 195 bytes .../userguide/media/guide/img/content.png | Bin 0 -> 2983 bytes .../userguide/media/guide/img/ext_link.png | Bin 0 -> 144 bytes .../userguide/media/guide/img/h2_line.png | Bin 0 -> 184 bytes .../userguide/media/guide/img/h3_line.png | Bin 0 -> 184 bytes .../userguide/media/guide/img/header.png | Bin 0 -> 2998 bytes .../userguide/media/guide/img/kohana.png | Bin 0 -> 8678 bytes .../media/guide/img/lightbulb_48.png | Bin 0 -> 4843 bytes .../userguide/media/guide/img/lines.png | Bin 0 -> 181 bytes .../userguide/media/guide/img/orange-tab.png | Bin 0 -> 215 bytes .../userguide/media/guide/img/wrapper.png | Bin 0 -> 12347 bytes .../userguide/media/guide/js/jquery.cookie.js | 96 + .../userguide/media/guide/js/jquery.min.js | 167 + .../modules/userguide/media/guide/js/kodoc.js | 97 + .../userguide/media/guide/js/shBrushPhp.js | 88 + .../userguide/media/guide/js/shCore.js | 17 + .../userguide/media/guide/js/sizzle.js | 1068 + .../guide/userguide/contrib-github-edit.png | Bin 0 -> 9681 bytes .../guide/userguide/contrib-github-fork.png | Bin 0 -> 8278 bytes .../guide/userguide/contrib-github-pull.png | Bin 0 -> 8839 bytes .../modules/userguide/messages/userguide.php | 14 + .../modules/userguide/tests/KodocTest.php | 368 + .../tests/userguide/ControllerTest.php | 45 + .../userguide/vendor/markdown/License.text | 36 + .../userguide/vendor/markdown/markdown.php | 2909 ++ .../userguide/views/userguide/api/class.php | 124 + .../userguide/views/userguide/api/menu.php | 18 + .../userguide/views/userguide/api/method.php | 45 + .../userguide/views/userguide/api/tags.php | 6 + .../userguide/views/userguide/api/toc.php | 69 + .../userguide/views/userguide/error.php | 3 + .../views/userguide/examples/error.php | 6 + .../userguide/examples/hello_world_error.php | 696 + .../userguide/views/userguide/index.php | 20 + .../userguide/views/userguide/menu.php | 17 + .../userguide/views/userguide/page-toc.php | 10 + .../userguide/views/userguide/template.php | 110 + includes/kohana/modules/xml/LICENSE | 22 + includes/kohana/modules/xml/README.md | 31 + includes/kohana/modules/xml/classes/xml.php | 13 + .../kohana/modules/xml/classes/xml/core.php | 732 + .../modules/xml/classes/xml/driver/atom.php | 101 + .../modules/xml/classes/xml/driver/rss2.php | 57 + .../modules/xml/classes/xml/driver/xrds.php | 55 + .../kohana/modules/xml/classes/xml/meta.php | 12 + .../modules/xml/classes/xml/meta/core.php | 187 + includes/kohana/system/classes/Arr.php | 3 + includes/kohana/system/classes/Config.php | 3 + .../kohana/system/classes/Config/File.php | 3 + .../kohana/system/classes/Config/Group.php | 4 + includes/kohana/system/classes/Controller.php | 3 + .../system/classes/Controller/Template.php | 3 + includes/kohana/system/classes/Cookie.php | 3 + includes/kohana/system/classes/Date.php | 3 + includes/kohana/system/classes/Debug.php | 3 + includes/kohana/system/classes/Encrypt.php | 3 + includes/kohana/system/classes/Feed.php | 3 + includes/kohana/system/classes/File.php | 3 + includes/kohana/system/classes/Form.php | 3 + includes/kohana/system/classes/Fragment.php | 3 + includes/kohana/system/classes/HTML.php | 3 + includes/kohana/system/classes/HTTP.php | 3 + .../kohana/system/classes/HTTP/Exception.php | 3 + .../system/classes/HTTP/Exception/300.php | 3 + .../system/classes/HTTP/Exception/301.php | 3 + .../system/classes/HTTP/Exception/302.php | 3 + .../system/classes/HTTP/Exception/303.php | 3 + .../system/classes/HTTP/Exception/304.php | 3 + .../system/classes/HTTP/Exception/305.php | 3 + .../system/classes/HTTP/Exception/307.php | 3 + .../system/classes/HTTP/Exception/400.php | 3 + .../system/classes/HTTP/Exception/401.php | 3 + .../system/classes/HTTP/Exception/402.php | 3 + .../system/classes/HTTP/Exception/403.php | 3 + .../system/classes/HTTP/Exception/404.php | 3 + .../system/classes/HTTP/Exception/405.php | 3 + .../system/classes/HTTP/Exception/406.php | 3 + .../system/classes/HTTP/Exception/407.php | 3 + .../system/classes/HTTP/Exception/408.php | 3 + .../system/classes/HTTP/Exception/409.php | 3 + .../system/classes/HTTP/Exception/410.php | 3 + .../system/classes/HTTP/Exception/411.php | 3 + .../system/classes/HTTP/Exception/412.php | 3 + .../system/classes/HTTP/Exception/413.php | 3 + .../system/classes/HTTP/Exception/414.php | 3 + .../system/classes/HTTP/Exception/415.php | 3 + .../system/classes/HTTP/Exception/416.php | 3 + .../system/classes/HTTP/Exception/417.php | 3 + .../system/classes/HTTP/Exception/500.php | 3 + .../system/classes/HTTP/Exception/501.php | 3 + .../system/classes/HTTP/Exception/502.php | 3 + .../system/classes/HTTP/Exception/503.php | 3 + .../system/classes/HTTP/Exception/504.php | 3 + .../system/classes/HTTP/Exception/505.php | 3 + .../classes/HTTP/Exception/Expected.php | 3 + .../classes/HTTP/Exception/Redirect.php | 3 + .../kohana/system/classes/HTTP/Header.php | 3 + .../kohana/system/classes/HTTP/Message.php | 3 + .../kohana/system/classes/HTTP/Request.php | 3 + .../kohana/system/classes/HTTP/Response.php | 3 + includes/kohana/system/classes/I18n.php | 3 + includes/kohana/system/classes/Inflector.php | 3 + includes/kohana/system/classes/Kohana.php | 3 + includes/kohana/system/classes/Kohana/Arr.php | 620 + .../kohana/system/classes/Kohana/Config.php | 192 + .../system/classes/Kohana/Config/File.php | 15 + .../classes/Kohana/Config/File/Reader.php | 56 + .../system/classes/Kohana/Config/Group.php | 130 + .../system/classes/Kohana/Config/Reader.php | 25 + .../system/classes/Kohana/Config/Source.php | 14 + .../system/classes/Kohana/Config/Writer.php | 27 + .../system/classes/Kohana/Controller.php | 145 + .../classes/Kohana/Controller/Template.php | 50 + .../kohana/system/classes/Kohana/Cookie.php | 161 + .../kohana/system/classes/Kohana/Core.php | 1048 + .../kohana/system/classes/Kohana/Date.php | 603 + .../kohana/system/classes/Kohana/Debug.php | 469 + .../kohana/system/classes/Kohana/Encrypt.php | 213 + .../system/classes/Kohana/Exception.php | 3 + .../kohana/system/classes/Kohana/Feed.php | 185 + .../kohana/system/classes/Kohana/File.php | 241 + .../kohana/system/classes/Kohana/Form.php | 434 + .../kohana/system/classes/Kohana/Fragment.php | 147 + .../kohana/system/classes/Kohana/HTML.php | 345 + .../kohana/system/classes/Kohana/HTTP.php | 217 + .../system/classes/Kohana/HTTP/Exception.php | 72 + .../classes/Kohana/HTTP/Exception/300.php | 10 + .../classes/Kohana/HTTP/Exception/301.php | 10 + .../classes/Kohana/HTTP/Exception/302.php | 10 + .../classes/Kohana/HTTP/Exception/303.php | 10 + .../classes/Kohana/HTTP/Exception/304.php | 10 + .../classes/Kohana/HTTP/Exception/305.php | 41 + .../classes/Kohana/HTTP/Exception/307.php | 10 + .../classes/Kohana/HTTP/Exception/400.php | 10 + .../classes/Kohana/HTTP/Exception/401.php | 38 + .../classes/Kohana/HTTP/Exception/402.php | 10 + .../classes/Kohana/HTTP/Exception/403.php | 10 + .../classes/Kohana/HTTP/Exception/404.php | 10 + .../classes/Kohana/HTTP/Exception/405.php | 41 + .../classes/Kohana/HTTP/Exception/406.php | 10 + .../classes/Kohana/HTTP/Exception/407.php | 10 + .../classes/Kohana/HTTP/Exception/408.php | 10 + .../classes/Kohana/HTTP/Exception/409.php | 10 + .../classes/Kohana/HTTP/Exception/410.php | 10 + .../classes/Kohana/HTTP/Exception/411.php | 10 + .../classes/Kohana/HTTP/Exception/412.php | 10 + .../classes/Kohana/HTTP/Exception/413.php | 10 + .../classes/Kohana/HTTP/Exception/414.php | 10 + .../classes/Kohana/HTTP/Exception/415.php | 10 + .../classes/Kohana/HTTP/Exception/416.php | 10 + .../classes/Kohana/HTTP/Exception/417.php | 10 + .../classes/Kohana/HTTP/Exception/500.php | 10 + .../classes/Kohana/HTTP/Exception/501.php | 10 + .../classes/Kohana/HTTP/Exception/502.php | 10 + .../classes/Kohana/HTTP/Exception/503.php | 10 + .../classes/Kohana/HTTP/Exception/504.php | 10 + .../classes/Kohana/HTTP/Exception/505.php | 10 + .../Kohana/HTTP/Exception/Expected.php | 82 + .../Kohana/HTTP/Exception/Redirect.php | 51 + .../system/classes/Kohana/HTTP/Header.php | 949 + .../system/classes/Kohana/HTTP/Message.php | 56 + .../system/classes/Kohana/HTTP/Request.php | 64 + .../system/classes/Kohana/HTTP/Response.php | 31 + .../kohana/system/classes/Kohana/I18n.php | 166 + .../system/classes/Kohana/Inflector.php | 269 + .../classes/Kohana/Kohana/Exception.php | 282 + includes/kohana/system/classes/Kohana/Log.php | 228 + .../kohana/system/classes/Kohana/Log/File.php | 94 + .../system/classes/Kohana/Log/StdErr.php | 29 + .../system/classes/Kohana/Log/StdOut.php | 30 + .../system/classes/Kohana/Log/Syslog.php | 65 + .../system/classes/Kohana/Log/Writer.php | 95 + .../kohana/system/classes/Kohana/Model.php | 29 + includes/kohana/system/classes/Kohana/Num.php | 234 + .../kohana/system/classes/Kohana/Profiler.php | 385 + .../kohana/system/classes/Kohana/Request.php | 1331 + .../system/classes/Kohana/Request/Client.php | 424 + .../classes/Kohana/Request/Client/Curl.php | 135 + .../Kohana/Request/Client/External.php | 207 + .../classes/Kohana/Request/Client/HTTP.php | 121 + .../Kohana/Request/Client/Internal.php | 128 + .../Request/Client/Recursion/Exception.php | 10 + .../classes/Kohana/Request/Client/Stream.php | 109 + .../classes/Kohana/Request/Exception.php | 9 + .../kohana/system/classes/Kohana/Response.php | 713 + .../kohana/system/classes/Kohana/Route.php | 629 + .../kohana/system/classes/Kohana/Security.php | 103 + .../kohana/system/classes/Kohana/Session.php | 505 + .../system/classes/Kohana/Session/Cookie.php | 55 + .../classes/Kohana/Session/Exception.php | 11 + .../system/classes/Kohana/Session/Native.php | 107 + .../kohana/system/classes/Kohana/Text.php | 686 + includes/kohana/system/classes/Kohana/URL.php | 213 + .../kohana/system/classes/Kohana/UTF8.php | 767 + .../system/classes/Kohana/UTF8/Exception.php | 9 + .../kohana/system/classes/Kohana/Upload.php | 256 + .../kohana/system/classes/Kohana/Valid.php | 551 + .../system/classes/Kohana/Validation.php | 612 + .../classes/Kohana/Validation/Exception.php | 29 + .../kohana/system/classes/Kohana/View.php | 351 + .../system/classes/Kohana/View/Exception.php | 9 + includes/kohana/system/classes/Log.php | 3 + includes/kohana/system/classes/Log/File.php | 3 + includes/kohana/system/classes/Log/StdErr.php | 3 + includes/kohana/system/classes/Log/StdOut.php | 3 + includes/kohana/system/classes/Log/Syslog.php | 3 + includes/kohana/system/classes/Log/Writer.php | 3 + includes/kohana/system/classes/Model.php | 3 + includes/kohana/system/classes/Num.php | 3 + includes/kohana/system/classes/Profiler.php | 3 + includes/kohana/system/classes/Request.php | 3 + .../kohana/system/classes/Request/Client.php | 3 + .../system/classes/Request/Client/Curl.php | 3 + .../classes/Request/Client/External.php | 3 + .../system/classes/Request/Client/HTTP.php | 3 + .../classes/Request/Client/Internal.php | 3 + .../Request/Client/Recursion/Exception.php | 10 + .../system/classes/Request/Client/Stream.php | 3 + .../system/classes/Request/Exception.php | 9 + includes/kohana/system/classes/Response.php | 3 + includes/kohana/system/classes/Route.php | 3 + includes/kohana/system/classes/Security.php | 3 + includes/kohana/system/classes/Session.php | 3 + .../kohana/system/classes/Session/Cookie.php | 3 + .../system/classes/Session/Exception.php | 9 + .../kohana/system/classes/Session/Native.php | 3 + includes/kohana/system/classes/Text.php | 3 + includes/kohana/system/classes/URL.php | 3 + includes/kohana/system/classes/UTF8.php | 3 + .../kohana/system/classes/UTF8/Exception.php | 9 + includes/kohana/system/classes/Upload.php | 3 + includes/kohana/system/classes/Valid.php | 3 + includes/kohana/system/classes/Validation.php | 3 + .../system/classes/Validation/Exception.php | 3 + includes/kohana/system/classes/View.php | 3 + .../kohana/system/classes/View/Exception.php | 9 + .../kohana/system/config/credit_cards.php | 60 + includes/kohana/system/config/curl.php | 8 + includes/kohana/system/config/encrypt.php | 17 + includes/kohana/system/config/inflector.php | 98 + includes/kohana/system/config/mimes.php | 227 + includes/kohana/system/config/session.php | 7 + includes/kohana/system/config/user_agents.php | 108 + includes/kohana/system/config/userguide.php | 23 + .../kohana/system/guide/kohana/autoloading.md | 72 + .../kohana/system/guide/kohana/bootstrap.md | 111 + includes/kohana/system/guide/kohana/config.md | 193 + .../kohana/system/guide/kohana/controllers.md | 1 + .../kohana/system/guide/kohana/conventions.md | 418 + .../kohana/system/guide/kohana/cookies.md | 100 + .../kohana/system/guide/kohana/debugging.md | 20 + includes/kohana/system/guide/kohana/errors.md | 64 + .../kohana/system/guide/kohana/extension.md | 101 + includes/kohana/system/guide/kohana/files.md | 83 + .../system/guide/kohana/files/classes.md | 41 + .../system/guide/kohana/files/config.md | 84 + .../kohana/system/guide/kohana/files/i18n.md | 67 + .../system/guide/kohana/files/messages.md | 36 + includes/kohana/system/guide/kohana/flow.md | 27 + .../kohana/system/guide/kohana/fragments.md | 135 + .../kohana/system/guide/kohana/helpers.md | 53 + includes/kohana/system/guide/kohana/index.md | 19 + .../kohana/system/guide/kohana/install.md | 45 + includes/kohana/system/guide/kohana/menu.md | 49 + .../kohana/system/guide/kohana/modules.md | 40 + includes/kohana/system/guide/kohana/mvc.md | 3 + .../system/guide/kohana/mvc/controllers.md | 181 + .../kohana/system/guide/kohana/mvc/models.md | 35 + .../kohana/system/guide/kohana/mvc/views.md | 153 + .../kohana/system/guide/kohana/profiling.md | 54 + .../kohana/system/guide/kohana/requests.md | 150 + .../kohana/system/guide/kohana/routing.md | 257 + .../kohana/system/guide/kohana/security.md | 1 + .../system/guide/kohana/security/cookies.md | 3 + .../system/guide/kohana/security/database.md | 5 + .../system/guide/kohana/security/deploying.md | 31 + .../guide/kohana/security/encryption.md | 107 + .../guide/kohana/security/validation.md | 266 + .../system/guide/kohana/security/xss.md | 17 + .../kohana/system/guide/kohana/sessions.md | 167 + includes/kohana/system/guide/kohana/tips.md | 41 + .../kohana/system/guide/kohana/tutorials.md | 17 + .../guide/kohana/tutorials/clean-urls.md | 93 + .../guide/kohana/tutorials/error-pages.md | 99 + .../system/guide/kohana/tutorials/git.md | 143 + .../guide/kohana/tutorials/hello-world.md | 106 + .../guide/kohana/tutorials/library-kohana.md | 219 + .../guide/kohana/tutorials/sharing-kohana.md | 54 + .../guide/kohana/tutorials/simple-mvc.md | 1 + .../guide/kohana/tutorials/templates.md | 7 + .../guide/kohana/tutorials/translation.md | 5 + .../kohana/system/guide/kohana/upgrading.md | 100 + includes/kohana/system/i18n/en.php | 3 + includes/kohana/system/i18n/es.php | 7 + includes/kohana/system/i18n/fr.php | 7 + .../guide/kohana/cascading_filesystem.png | Bin 0 -> 61164 bytes .../media/guide/kohana/hello_world_1.png | Bin 0 -> 1423 bytes .../media/guide/kohana/hello_world_2.png | Bin 0 -> 6681 bytes .../guide/kohana/hello_world_2_error.png | Bin 0 -> 84148 bytes .../system/media/guide/kohana/install.png | Bin 0 -> 71146 bytes .../system/media/guide/kohana/welcome.png | Bin 0 -> 754 bytes .../tests/validation/error_type_check.php | 7 + .../kohana/system/messages/validation.php | 27 + .../kohana/system/tests/kohana/ArrTest.php | 696 + .../tests/kohana/Config/File/ReaderTest.php | 94 + .../system/tests/kohana/Config/GroupTest.php | 192 + .../kohana/system/tests/kohana/ConfigTest.php | 406 + .../kohana/system/tests/kohana/CookieTest.php | 177 + .../kohana/system/tests/kohana/CoreTest.php | 369 + .../kohana/system/tests/kohana/DateTest.php | 790 + .../kohana/system/tests/kohana/DebugTest.php | 126 + .../system/tests/kohana/ExceptionTest.php | 99 + .../kohana/system/tests/kohana/FeedTest.php | 123 + .../kohana/system/tests/kohana/FileTest.php | 81 + .../kohana/system/tests/kohana/FormTest.php | 408 + .../kohana/system/tests/kohana/HTMLTest.php | 367 + .../kohana/system/tests/kohana/HTTPTest.php | 87 + .../system/tests/kohana/Http/HeaderTest.php | 1491 + .../kohana/system/tests/kohana/I18nTest.php | 90 + .../system/tests/kohana/InflectorTest.php | 186 + .../kohana/system/tests/kohana/LogTest.php | 111 + .../kohana/system/tests/kohana/ModelTest.php | 36 + .../kohana/system/tests/kohana/NumTest.php | 205 + .../system/tests/kohana/RequestTest.php | 720 + .../system/tests/kohana/ResponseTest.php | 208 + .../kohana/system/tests/kohana/RouteTest.php | 840 + .../system/tests/kohana/SecurityTest.php | 108 + .../system/tests/kohana/SessionTest.php | 502 + .../kohana/system/tests/kohana/TextTest.php | 642 + .../kohana/system/tests/kohana/URLTest.php | 279 + .../kohana/system/tests/kohana/UTF8Test.php | 631 + .../kohana/system/tests/kohana/UploadTest.php | 225 + .../kohana/system/tests/kohana/ValidTest.php | 985 + .../system/tests/kohana/ValidationTest.php | 676 + .../kohana/system/tests/kohana/ViewTest.php | 83 + .../tests/kohana/request/ClientTest.php | 488 + .../kohana/request/client/ExternalTest.php | 191 + .../kohana/request/client/InternalTest.php | 68 + .../tests/test_data/callback_routes.php | 100 + .../kohana/system/tests/test_data/github.png | Bin 0 -> 5101 bytes .../system/tests/test_data/views/test.css.php | 1 + includes/kohana/system/utf8/from_unicode.php | 72 + includes/kohana/system/utf8/ltrim.php | 22 + includes/kohana/system/utf8/ord.php | 72 + includes/kohana/system/utf8/rtrim.php | 22 + includes/kohana/system/utf8/str_ireplace.php | 70 + includes/kohana/system/utf8/str_pad.php | 52 + includes/kohana/system/utf8/str_split.php | 27 + includes/kohana/system/utf8/strcasecmp.php | 19 + includes/kohana/system/utf8/strcspn.php | 30 + includes/kohana/system/utf8/stristr.php | 28 + includes/kohana/system/utf8/strlen.php | 17 + includes/kohana/system/utf8/strpos.php | 27 + includes/kohana/system/utf8/strrev.php | 18 + includes/kohana/system/utf8/strrpos.php | 27 + includes/kohana/system/utf8/strspn.php | 30 + includes/kohana/system/utf8/strtolower.php | 81 + includes/kohana/system/utf8/strtoupper.php | 81 + includes/kohana/system/utf8/substr.php | 72 + .../kohana/system/utf8/substr_replace.php | 22 + includes/kohana/system/utf8/to_unicode.php | 145 + .../system/utf8/transliterate_to_ascii.php | 77 + includes/kohana/system/utf8/trim.php | 17 + includes/kohana/system/utf8/ucfirst.php | 18 + includes/kohana/system/utf8/ucwords.php | 23 + includes/kohana/system/views/kohana/error.php | 128 + .../system/views/kohana/generate_logo.php | 14 + includes/kohana/system/views/kohana/logo.php | 8 + .../kohana/system/views/profiler/stats.php | 74 + .../kohana/system/views/profiler/style.css | 27 + includes/kohana/vendor/autoload.php | 7 + includes/kohana/vendor/bin/phpunit | 7 + .../kohana/vendor/composer/ClassLoader.php | 207 + .../vendor/composer/autoload_classmap.php | 351 + .../vendor/composer/autoload_namespaces.php | 10 + .../kohana/vendor/composer/autoload_real.php | 39 + .../kohana/vendor/composer/include_paths.php | 17 + .../kohana/vendor/composer/installed.json | 410 + .../phpunit/php-code-coverage/CONTRIBUTING.md | 5 + .../php-code-coverage/ChangeLog.markdown | 46 + .../vendor/phpunit/php-code-coverage/LICENSE | 33 + .../php-code-coverage/PHP/CodeCoverage.php | 796 + .../PHP/CodeCoverage/Autoload.php | 90 + .../PHP/CodeCoverage/Autoload.php.in | 70 + .../PHP/CodeCoverage/Driver.php | 70 + .../PHP/CodeCoverage/Driver/Xdebug.php | 97 + .../PHP/CodeCoverage/Exception.php | 59 + .../PHP/CodeCoverage/Filter.php | 343 + .../PHP/CodeCoverage/Report/Clover.php | 346 + .../PHP/CodeCoverage/Report/Factory.php | 280 + .../PHP/CodeCoverage/Report/HTML.php | 221 + .../PHP/CodeCoverage/Report/HTML/Renderer.php | 269 + .../Report/HTML/Renderer/Dashboard.php | 256 + .../Report/HTML/Renderer/Directory.php | 132 + .../Report/HTML/Renderer/File.php | 583 + .../Renderer/Template/coverage_bar.html.dist | 3 + .../Template/css/bootstrap-responsive.min.css | 9 + .../Renderer/Template/css/bootstrap.min.css | 9 + .../HTML/Renderer/Template/css/style.css | 76 + .../Renderer/Template/dashboard.html.dist | 117 + .../Renderer/Template/directory.html.dist | 58 + .../Template/directory_item.html.dist | 13 + .../HTML/Renderer/Template/file.html.dist | 65 + .../Renderer/Template/file_item.html.dist | 14 + .../img/glyphicons-halflings-white.png | Bin 0 -> 8777 bytes .../Template/img/glyphicons-halflings.png | Bin 0 -> 12799 bytes .../Renderer/Template/js/bootstrap.min.js | 6 + .../HTML/Renderer/Template/js/highcharts.js | 245 + .../HTML/Renderer/Template/js/jquery.min.js | 2 + .../Renderer/Template/method_item.html.dist | 11 + .../PHP/CodeCoverage/Report/Node.php | 380 + .../CodeCoverage/Report/Node/Directory.php | 512 + .../PHP/CodeCoverage/Report/Node/File.php | 721 + .../PHP/CodeCoverage/Report/Node/Iterator.php | 148 + .../PHP/CodeCoverage/Report/PHP.php | 74 + .../PHP/CodeCoverage/Report/Text.php | 278 + .../PHP/CodeCoverage/Util.php | 268 + .../Util/InvalidArgumentHelper.php | 80 + .../PHP/CodeCoverage/Version.php | 92 + .../phpunit/php-code-coverage/README.markdown | 43 + .../Tests/PHP/CodeCoverage/FilterTest.php | 298 + .../PHP/CodeCoverage/Report/CloverTest.php | 96 + .../PHP/CodeCoverage/Report/FactoryTest.php | 263 + .../Tests/PHP/CodeCoverage/UtilTest.php | 194 + .../Tests/PHP/CodeCoverageTest.php | 499 + .../php-code-coverage/Tests/TestCase.php | 266 + .../Tests/_files/BankAccount-clover.xml | 26 + .../Tests/_files/BankAccount.php | 33 + .../Tests/_files/BankAccountTest.php | 70 + .../_files/CoverageClassExtendedTest.php | 12 + .../Tests/_files/CoverageClassTest.php | 12 + .../Tests/_files/CoverageFunctionTest.php | 11 + .../CoverageMethodOneLineAnnotationTest.php | 12 + .../Tests/_files/CoverageMethodTest.php | 12 + .../Tests/_files/CoverageNoneTest.php | 9 + .../Tests/_files/CoverageNotPrivateTest.php | 12 + .../Tests/_files/CoverageNotProtectedTest.php | 12 + .../Tests/_files/CoverageNotPublicTest.php | 12 + .../Tests/_files/CoverageNothingTest.php | 13 + .../Tests/_files/CoveragePrivateTest.php | 12 + .../Tests/_files/CoverageProtectedTest.php | 12 + .../Tests/_files/CoveragePublicTest.php | 12 + .../CoverageTwoDefaultClassAnnotations.php | 19 + .../Tests/_files/CoveredClass.php | 36 + .../Tests/_files/CoveredFunction.php | 4 + .../NamespaceCoverageClassExtendedTest.php | 12 + .../_files/NamespaceCoverageClassTest.php | 12 + ...NamespaceCoverageCoversClassPublicTest.php | 16 + .../NamespaceCoverageCoversClassTest.php | 21 + .../_files/NamespaceCoverageMethodTest.php | 12 + .../NamespaceCoverageNotPrivateTest.php | 12 + .../NamespaceCoverageNotProtectedTest.php | 12 + .../_files/NamespaceCoverageNotPublicTest.php | 12 + .../_files/NamespaceCoveragePrivateTest.php | 12 + .../_files/NamespaceCoverageProtectedTest.php | 12 + .../_files/NamespaceCoveragePublicTest.php | 12 + .../Tests/_files/NamespaceCoveredClass.php | 38 + .../_files/NotExistingCoveredElementTest.php | 24 + .../Tests/_files/ignored-lines-clover.xml | 17 + .../Tests/_files/source_with_ignore.php | 38 + .../Tests/_files/source_with_namespace.php | 20 + .../source_with_oneline_annotations.php | 13 + .../Tests/_files/source_without_ignore.php | 4 + .../Tests/_files/source_without_namespace.php | 18 + .../phpunit/php-code-coverage/build.xml | 162 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../php-code-coverage/build/PHPCS/ruleset.xml | 35 + .../phpunit/php-code-coverage/build/phpmd.xml | 27 + .../phpunit/php-code-coverage/composer.json | 41 + .../phpunit/php-code-coverage/package.xml | 133 + .../php-code-coverage/phpunit.xml.dist | 29 + .../php-code-coverage/scripts/auto_append.php | 5 + .../scripts/auto_prepend.php | 10 + .../php-file-iterator/ChangeLog.markdown | 26 + .../php-file-iterator/File/Iterator.php | 196 + .../File/Iterator/Autoload.php | 66 + .../File/Iterator/Autoload.php.in | 64 + .../File/Iterator/Facade.php | 161 + .../File/Iterator/Factory.php | 120 + .../vendor/phpunit/php-file-iterator/LICENSE | 33 + .../phpunit/php-file-iterator/README.markdown | 23 + .../phpunit/php-file-iterator/build.xml | 161 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../php-file-iterator/build/PHPCS/ruleset.xml | 35 + .../phpunit/php-file-iterator/build/phpmd.xml | 27 + .../phpunit/php-file-iterator/composer.json | 33 + .../php-file-iterator/package-composer.json | 19 + .../phpunit/php-file-iterator/package.xml | 65 + .../php-text-template/ChangeLog.markdown | 19 + .../vendor/phpunit/php-text-template/LICENSE | 33 + .../phpunit/php-text-template/README.markdown | 23 + .../php-text-template/Text/Template.php | 153 + .../Text/Template/Autoload.php | 65 + .../Text/Template/Autoload.php.in | 65 + .../phpunit/php-text-template/build.xml | 161 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../php-text-template/build/PHPCS/ruleset.xml | 35 + .../phpunit/php-text-template/build/phpmd.xml | 27 + .../phpunit/php-text-template/composer.json | 32 + .../php-text-template/package-composer.json | 19 + .../phpunit/php-text-template/package.xml | 59 + .../phpunit/php-timer/ChangeLog.markdown | 29 + .../kohana/vendor/phpunit/php-timer/LICENSE | 33 + .../vendor/phpunit/php-timer/PHP/Timer.php | 159 + .../phpunit/php-timer/PHP/Timer/Autoload.php | 66 + .../php-timer/PHP/Timer/Autoload.php.in | 66 + .../vendor/phpunit/php-timer/README.markdown | 23 + .../phpunit/php-timer/Tests/TimerTest.php | 108 + .../kohana/vendor/phpunit/php-timer/build.xml | 160 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../phpunit/php-timer/build/PHPCS/ruleset.xml | 35 + .../vendor/phpunit/php-timer/build/phpmd.xml | 27 + .../vendor/phpunit/php-timer/composer.json | 32 + .../phpunit/php-timer/package-composer.json | 19 + .../vendor/phpunit/php-timer/package.xml | 59 + .../vendor/phpunit/php-timer/phpunit.xml.dist | 26 + .../php-token-stream/ChangeLog.markdown | 35 + .../vendor/phpunit/php-token-stream/LICENSE | 33 + .../phpunit/php-token-stream/PHP/Token.php | 717 + .../php-token-stream/PHP/Token/Stream.php | 568 + .../PHP/Token/Stream/Autoload.php | 226 + .../PHP/Token/Stream/Autoload.php.in | 65 + .../PHP/Token/Stream/CachingFactory.php | 85 + .../phpunit/php-token-stream/README.markdown | 23 + .../Tests/Token/ClassTest.php | 122 + .../Tests/Token/FunctionTest.php | 160 + .../Tests/Token/IncludeTest.php | 117 + .../Tests/Token/InterfaceTest.php | 236 + .../Tests/Token/NamespaceTest.php | 124 + .../php-token-stream/Tests/TokenTest.php | 85 + .../_files/classExtendsNamespacedClass.php | 10 + .../Tests/_files/classInNamespace.php | 6 + .../Tests/_files/classInScopedNamespace.php | 9 + .../php-token-stream/Tests/_files/issue19.php | 3 + ...tipleNamespacesWithOneClassUsingBraces.php | 12 + ...espacesWithOneClassUsingNonBraceSyntax.php | 14 + .../php-token-stream/Tests/_files/source.php | 32 + .../php-token-stream/Tests/_files/source2.php | 6 + .../php-token-stream/Tests/_files/source3.php | 14 + .../php-token-stream/Tests/_files/source4.php | 30 + .../vendor/phpunit/php-token-stream/build.xml | 162 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../php-token-stream/build/PHPCS/ruleset.xml | 35 + .../phpunit/php-token-stream/build/phpmd.xml | 27 + .../phpunit/php-token-stream/composer.json | 33 + .../php-token-stream/package-composer.json | 19 + .../phpunit/php-token-stream/package.xml | 70 + .../phpunit/php-token-stream/phpunit.xml.dist | 27 + .../phpunit-mock-objects/CONTRIBUTING.md | 5 + .../phpunit-mock-objects/ChangeLog.markdown | 17 + .../phpunit/phpunit-mock-objects/LICENSE | 33 + .../PHPUnit/Framework/MockObject/Autoload.php | 100 + .../Framework/MockObject/Autoload.php.in | 65 + .../Framework/MockObject/Builder/Identity.php | 70 + .../MockObject/Builder/InvocationMocker.php | 193 + .../Framework/MockObject/Builder/Match.php | 66 + .../MockObject/Builder/MethodNameMatch.php | 68 + .../MockObject/Builder/Namespace.php | 79 + .../MockObject/Builder/ParametersMatch.php | 89 + .../Framework/MockObject/Builder/Stub.php | 66 + .../Framework/MockObject/Generator.php | 811 + .../Generator/mocked_class.tpl.dist | 60 + .../Generator/mocked_clone.tpl.dist | 5 + .../Generator/mocked_object_method.tpl.dist | 22 + .../Generator/mocked_static_method.tpl.dist | 22 + .../MockObject/Generator/trait_class.tpl.dist | 4 + .../Generator/unmocked_clone.tpl.dist | 6 + .../MockObject/Generator/wsdl_class.tpl.dist | 9 + .../MockObject/Generator/wsdl_method.tpl.dist | 4 + .../Framework/MockObject/Invocation.php | 58 + .../MockObject/Invocation/Object.php | 75 + .../MockObject/Invocation/Static.php | 191 + .../Framework/MockObject/InvocationMocker.php | 201 + .../Framework/MockObject/Invokable.php | 79 + .../PHPUnit/Framework/MockObject/Matcher.php | 308 + .../MockObject/Matcher/AnyInvokedCount.php | 72 + .../MockObject/Matcher/AnyParameters.php | 74 + .../MockObject/Matcher/Invocation.php | 88 + .../MockObject/Matcher/InvokedAtIndex.php | 127 + .../MockObject/Matcher/InvokedAtLeastOnce.php | 85 + .../MockObject/Matcher/InvokedCount.php | 143 + .../MockObject/Matcher/InvokedRecorder.php | 107 + .../MockObject/Matcher/MethodName.php | 102 + .../MockObject/Matcher/Parameters.php | 160 + .../Matcher/StatelessInvocation.php | 96 + .../Framework/MockObject/MockBuilder.php | 291 + .../Framework/MockObject/MockObject.php | 94 + .../PHPUnit/Framework/MockObject/Stub.php | 71 + .../MockObject/Stub/ConsecutiveCalls.php | 87 + .../Framework/MockObject/Stub/Exception.php | 80 + .../MockObject/Stub/MatcherCollection.php | 66 + .../Framework/MockObject/Stub/Return.php | 78 + .../MockObject/Stub/ReturnArgument.php | 78 + .../MockObject/Stub/ReturnCallback.php | 94 + .../Framework/MockObject/Stub/ReturnSelf.php | 76 + .../MockObject/Stub/ReturnValueMap.php | 87 + .../Framework/MockObject/Verifiable.php | 65 + .../Tests/GeneratorTest.php | 89 + .../Tests/MockBuilderTest.php | 152 + .../MockObject/Invocation/ObjectTest.php | 82 + .../MockObject/Invocation/StaticTest.php | 52 + .../Tests/MockObject/class.phpt | 137 + .../MockObject/class_call_parent_clone.phpt | 91 + .../class_call_parent_constructor.phpt | 90 + .../class_dont_call_parent_clone.phpt | 90 + .../class_dont_call_parent_constructor.phpt | 90 + ...ing_interface_call_parent_constructor.phpt | 95 + ...nterface_dont_call_parent_constructor.phpt | 95 + .../Tests/MockObject/class_partial.phpt | 116 + .../Tests/MockObject/interface.phpt | 110 + .../invocation_object_clone_object.phpt | 139 + .../invocation_static_clone_object.phpt | 139 + .../Tests/MockObject/namespaced_class.phpt | 140 + .../namespaced_class_call_parent_clone.phpt | 93 + ...espaced_class_call_parent_constructor.phpt | 92 + ...mespaced_class_dont_call_parent_clone.phpt | 92 + ...ed_class_dont_call_parent_constructor.phpt | 92 + ...ing_interface_call_parent_constructor.phpt | 97 + ...nterface_dont_call_parent_constructor.phpt | 97 + .../MockObject/namespaced_class_partial.phpt | 118 + .../MockObject/namespaced_interface.phpt | 112 + .../Tests/MockObject/nonexistent_class.phpt | 87 + .../nonexistent_class_with_namespace.phpt | 95 + ...ith_namespace_starting_with_separator.phpt | 95 + .../Tests/MockObject/wsdl_class.phpt | 36 + .../MockObject/wsdl_class_namespace.phpt | 38 + .../Tests/MockObject/wsdl_class_partial.phpt | 29 + .../Tests/MockObjectTest.php | 552 + .../Tests/_files/AbstractMockTestClass.php | 5 + .../Tests/_files/AnInterface.php | 5 + .../Tests/_files/FunctionCallback.php | 9 + .../Tests/_files/GoogleSearch.wsdl | 198 + .../Tests/_files/MethodCallback.php | 21 + .../Tests/_files/Mockable.php | 28 + .../Tests/_files/PartialMockTestClass.php | 18 + .../Tests/_files/SomeClass.php | 13 + .../Tests/_files/StaticMockTestClass.php | 12 + .../phpunit/phpunit-mock-objects/build.xml | 162 + .../ControlSignatureSniff.php | 22 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../build/PHPCS/ruleset.xml | 35 + .../phpunit-mock-objects/build/phpmd.xml | 27 + .../phpunit-mock-objects/composer.json | 41 + .../package-composer.json | 19 + .../phpunit/phpunit-mock-objects/package.xml | 199 + .../phpunit-mock-objects/phpunit.xml.dist | 31 + .../vendor/phpunit/phpunit/CONTRIBUTING.md | 55 + .../vendor/phpunit/phpunit/ChangeLog.md | 82 + .../kohana/vendor/phpunit/phpunit/LICENSE | 33 + .../phpunit/phpunit/PHPUnit/Autoload.php | 208 + .../phpunit/phpunit/PHPUnit/Autoload.php.in | 91 + .../PHPUnit/Extensions/GroupTestSuite.php | 99 + .../PHPUnit/Extensions/PhptTestCase.php | 269 + .../Extensions/PhptTestCase/Logger.php | 62 + .../PHPUnit/Extensions/PhptTestSuite.php | 82 + .../PHPUnit/Extensions/RepeatedTest.php | 155 + .../PHPUnit/Extensions/TestDecorator.php | 149 + .../PHPUnit/Extensions/TicketListener.php | 224 + .../phpunit/PHPUnit/Framework/Assert.php | 2832 ++ .../PHPUnit/Framework/Assert/Functions.php | 1972 + .../PHPUnit/Framework/Assert/Functions.php.in | 44 + .../Framework/AssertionFailedError.php | 68 + .../phpunit/PHPUnit/Framework/Comparator.php | 97 + .../PHPUnit/Framework/Comparator/Array.php | 177 + .../Framework/Comparator/DOMDocument.php | 114 + .../PHPUnit/Framework/Comparator/Double.php | 101 + .../Framework/Comparator/Exception.php | 92 + .../Framework/Comparator/MockObject.php | 86 + .../PHPUnit/Framework/Comparator/Numeric.php | 116 + .../PHPUnit/Framework/Comparator/Object.php | 145 + .../PHPUnit/Framework/Comparator/Resource.php | 97 + .../PHPUnit/Framework/Comparator/Scalar.php | 136 + .../Framework/Comparator/SplObjectStorage.php | 114 + .../PHPUnit/Framework/Comparator/Type.php | 105 + .../PHPUnit/Framework/ComparatorFactory.php | 156 + .../PHPUnit/Framework/ComparisonFailure.php | 166 + .../phpunit/PHPUnit/Framework/Constraint.php | 180 + .../PHPUnit/Framework/Constraint/And.php | 164 + .../Framework/Constraint/ArrayHasKey.php | 114 + .../Framework/Constraint/Attribute.php | 129 + .../PHPUnit/Framework/Constraint/Callback.php | 116 + .../Constraint/ClassHasAttribute.php | 124 + .../Constraint/ClassHasStaticAttribute.php | 98 + .../Framework/Constraint/Composite.php | 114 + .../PHPUnit/Framework/Constraint/Count.php | 128 + .../Framework/Constraint/Exception.php | 129 + .../Framework/Constraint/ExceptionCode.php | 109 + .../Framework/Constraint/ExceptionMessage.php | 109 + .../Framework/Constraint/FileExists.php | 102 + .../Framework/Constraint/GreaterThan.php | 96 + .../Framework/Constraint/IsAnything.php | 102 + .../PHPUnit/Framework/Constraint/IsEmpty.php | 104 + .../PHPUnit/Framework/Constraint/IsEqual.php | 215 + .../PHPUnit/Framework/Constraint/IsFalse.php | 82 + .../Framework/Constraint/IsIdentical.php | 172 + .../Framework/Constraint/IsInstanceOf.php | 121 + .../PHPUnit/Framework/Constraint/IsNull.php | 82 + .../PHPUnit/Framework/Constraint/IsTrue.php | 82 + .../PHPUnit/Framework/Constraint/IsType.php | 190 + .../Framework/Constraint/JsonMatches.php | 126 + .../JsonMatches/ErrorMessageProvider.php | 106 + .../PHPUnit/Framework/Constraint/LessThan.php | 96 + .../PHPUnit/Framework/Constraint/Not.php | 203 + .../Constraint/ObjectHasAttribute.php | 77 + .../PHPUnit/Framework/Constraint/Or.php | 157 + .../Framework/Constraint/PCREMatch.php | 105 + .../PHPUnit/Framework/Constraint/SameSize.php | 73 + .../Framework/Constraint/StringContains.php | 122 + .../Framework/Constraint/StringEndsWith.php | 96 + .../Framework/Constraint/StringMatches.php | 134 + .../Framework/Constraint/StringStartsWith.php | 96 + .../Constraint/TraversableContains.php | 152 + .../Constraint/TraversableContainsOnly.php | 135 + .../PHPUnit/Framework/Constraint/Xor.php | 162 + .../phpunit/PHPUnit/Framework/Error.php | 75 + .../PHPUnit/Framework/Error/Deprecated.php | 65 + .../PHPUnit/Framework/Error/Notice.php | 65 + .../PHPUnit/Framework/Error/Warning.php | 65 + .../phpunit/PHPUnit/Framework/Exception.php | 59 + .../Framework/ExpectationFailedException.php | 82 + .../PHPUnit/Framework/IncompleteTest.php | 60 + .../PHPUnit/Framework/IncompleteTestError.php | 60 + .../phpunit/PHPUnit/Framework/OutputError.php | 60 + .../Framework/Process/TestCaseMethod.tpl.dist | 51 + .../PHPUnit/Framework/SelfDescribing.php | 65 + .../phpunit/PHPUnit/Framework/SkippedTest.php | 59 + .../PHPUnit/Framework/SkippedTestError.php | 60 + .../Framework/SkippedTestSuiteError.php | 60 + .../PHPUnit/Framework/SyntheticError.php | 121 + .../phpunit/PHPUnit/Framework/Test.php | 66 + .../phpunit/PHPUnit/Framework/TestCase.php | 1880 + .../phpunit/PHPUnit/Framework/TestFailure.php | 179 + .../PHPUnit/Framework/TestListener.php | 126 + .../phpunit/PHPUnit/Framework/TestResult.php | 956 + .../phpunit/PHPUnit/Framework/TestSuite.php | 950 + .../Framework/TestSuite/DataProvider.php | 70 + .../phpunit/PHPUnit/Framework/Warning.php | 125 + .../phpunit/PHPUnit/Runner/BaseTestRunner.php | 189 + .../Runner/StandardTestSuiteLoader.php | 153 + .../PHPUnit/Runner/TestSuiteLoader.php | 71 + .../phpunit/PHPUnit/Runner/Version.php | 100 + .../phpunit/PHPUnit/TextUI/Command.php | 897 + .../phpunit/PHPUnit/TextUI/ResultPrinter.php | 664 + .../phpunit/PHPUnit/TextUI/TestRunner.php | 814 + .../phpunit/phpunit/PHPUnit/Util/Class.php | 363 + .../phpunit/PHPUnit/Util/Configuration.php | 1026 + .../PHPUnit/Util/DeprecatedFeature.php | 102 + .../PHPUnit/Util/DeprecatedFeature/Logger.php | 201 + .../phpunit/phpunit/PHPUnit/Util/Diff.php | 292 + .../phpunit/PHPUnit/Util/ErrorHandler.php | 132 + .../phpunit/PHPUnit/Util/Fileloader.php | 107 + .../phpunit/PHPUnit/Util/Filesystem.php | 81 + .../phpunit/phpunit/PHPUnit/Util/Filter.php | 146 + .../phpunit/phpunit/PHPUnit/Util/Getopt.php | 207 + .../phpunit/PHPUnit/Util/GlobalState.php | 427 + .../PHPUnit/Util/InvalidArgumentHelper.php | 80 + .../phpunit/phpunit/PHPUnit/Util/Log/JSON.php | 254 + .../phpunit/PHPUnit/Util/Log/JUnit.php | 482 + .../phpunit/phpunit/PHPUnit/Util/Log/TAP.php | 255 + .../phpunit/phpunit/PHPUnit/Util/PHP.php | 332 + .../phpunit/PHPUnit/Util/PHP/Default.php | 67 + .../phpunit/PHPUnit/Util/PHP/Windows.php | 90 + .../phpunit/phpunit/PHPUnit/Util/Printer.php | 208 + .../phpunit/phpunit/PHPUnit/Util/String.php | 118 + .../phpunit/phpunit/PHPUnit/Util/Test.php | 601 + .../PHPUnit/Util/TestDox/NamePrettifier.php | 177 + .../PHPUnit/Util/TestDox/ResultPrinter.php | 347 + .../Util/TestDox/ResultPrinter/HTML.php | 123 + .../Util/TestDox/ResultPrinter/Text.php | 95 + .../PHPUnit/Util/TestSuiteIterator.php | 148 + .../phpunit/phpunit/PHPUnit/Util/Type.php | 303 + .../phpunit/phpunit/PHPUnit/Util/XML.php | 916 + .../kohana/vendor/phpunit/phpunit/README.md | 71 + .../Tests/Extensions/RepeatedTestTest.php | 108 + .../phpunit/Tests/Framework/AssertTest.php | 4158 +++ .../Tests/Framework/ComparatorTest.php | 159 + .../JsonMatches/ErrorMessageProviderTest.php | 122 + .../Framework/Constraint/JsonMatchesTest.php | 90 + .../Tests/Framework/ConstraintTest.php | 3554 ++ .../phpunit/Tests/Framework/SuiteTest.php | 185 + .../phpunit/Tests/Framework/TestCaseTest.php | 439 + .../Tests/Framework/TestImplementorTest.php | 79 + .../Tests/Framework/TestListenerTest.php | 145 + .../phpunit/Tests/Regression/1021.phpt | 19 + .../Tests/Regression/1021/Issue1021Test.php | 23 + .../phpunit/phpunit/Tests/Regression/523.phpt | 19 + .../Tests/Regression/523/Issue523Test.php | 13 + .../phpunit/phpunit/Tests/Regression/578.phpt | 37 + .../Tests/Regression/578/Issue578Test.php | 20 + .../phpunit/phpunit/Tests/Regression/684.phpt | 26 + .../Tests/Regression/684/Issue684Test.php | 4 + .../phpunit/phpunit/Tests/Regression/783.phpt | 21 + .../Tests/Regression/783/ChildSuite.php | 15 + .../phpunit/Tests/Regression/783/OneTest.php | 10 + .../Tests/Regression/783/ParentSuite.php | 13 + .../phpunit/Tests/Regression/783/TwoTest.php | 10 + .../phpunit/Tests/Regression/GitHub/244.phpt | 40 + .../Regression/GitHub/244/Issue244Test.php | 55 + .../phpunit/Tests/Regression/GitHub/322.phpt | 28 + .../Regression/GitHub/322/Issue322Test.php | 17 + .../Regression/GitHub/322/phpunit322.xml | 11 + .../phpunit/Tests/Regression/GitHub/433.phpt | 33 + .../Regression/GitHub/433/Issue433Test.php | 21 + .../phpunit/Tests/Regression/GitHub/445.phpt | 34 + .../Regression/GitHub/445/Issue445Test.php | 21 + .../phpunit/Tests/Regression/GitHub/503.phpt | 34 + .../Regression/GitHub/503/Issue503Test.php | 11 + .../phpunit/Tests/Regression/GitHub/581.phpt | 43 + .../Regression/GitHub/581/Issue581Test.php | 10 + .../phpunit/Tests/Regression/GitHub/74.phpt | 31 + .../Regression/GitHub/74/Issue74Test.php | 9 + .../Regression/GitHub/74/NewException.php | 4 + .../Tests/Runner/BaseTestRunnerTest.php | 65 + .../Tests/TextUI/abstract-test-class.phpt | 29 + .../Tests/TextUI/concrete-test-class.phpt | 22 + .../dataprovider-log-xml-isolation.phpt | 49 + .../Tests/TextUI/dataprovider-log-xml.phpt | 50 + .../Tests/TextUI/dataprovider-testdox.phpt | 19 + .../phpunit/phpunit/Tests/TextUI/debug.phpt | 28 + .../Tests/TextUI/default-isolation.phpt | 22 + .../phpunit/phpunit/Tests/TextUI/default.phpt | 21 + .../Tests/TextUI/dependencies-isolation.phpt | 42 + .../phpunit/Tests/TextUI/dependencies.phpt | 42 + .../Tests/TextUI/dependencies2-isolation.phpt | 23 + .../phpunit/Tests/TextUI/dependencies2.phpt | 22 + .../Tests/TextUI/dependencies3-isolation.phpt | 23 + .../phpunit/Tests/TextUI/dependencies3.phpt | 21 + .../phpunit/Tests/TextUI/empty-testcase.phpt | 29 + .../phpunit/Tests/TextUI/exception-stack.phpt | 55 + .../Tests/TextUI/exclude-group-isolation.phpt | 24 + .../phpunit/Tests/TextUI/exclude-group.phpt | 23 + .../Tests/TextUI/failure-isolation.phpt | 144 + .../phpunit/phpunit/Tests/TextUI/failure.phpt | 144 + .../phpunit/Tests/TextUI/fatal-isolation.phpt | 35 + .../phpunit/phpunit/Tests/TextUI/fatal.phpt | 17 + .../Tests/TextUI/filter-class-isolation.phpt | 24 + .../phpunit/Tests/TextUI/filter-class.phpt | 23 + .../Tests/TextUI/filter-method-isolation.phpt | 24 + .../phpunit/Tests/TextUI/filter-method.phpt | 23 + .../Tests/TextUI/filter-no-results.phpt | 23 + .../phpunit/Tests/TextUI/group-isolation.phpt | 24 + .../phpunit/phpunit/Tests/TextUI/group.phpt | 23 + .../phpunit/phpunit/Tests/TextUI/help.phpt | 67 + .../phpunit/phpunit/Tests/TextUI/help2.phpt | 68 + .../phpunit/Tests/TextUI/list-groups.phpt | 22 + .../phpunit/Tests/TextUI/log-json.phpt | 77 + .../phpunit/phpunit/Tests/TextUI/log-tap.phpt | 28 + .../phpunit/phpunit/Tests/TextUI/log-xml.phpt | 31 + .../Tests/TextUI/strict-incomplete.phpt | 23 + .../Tests/TextUI/strict-isolation.phpt | 24 + .../phpunit/phpunit/Tests/TextUI/strict.phpt | 23 + .../phpunit/phpunit/Tests/TextUI/tap.phpt | 20 + .../Tests/TextUI/test-suffix-multiple.phpt | 22 + .../Tests/TextUI/test-suffix-single.phpt | 22 + .../phpunit/Tests/TextUI/testdox-html.phpt | 23 + .../phpunit/Tests/TextUI/testdox-text.phpt | 27 + .../phpunit/phpunit/Tests/TextUI/testdox.phpt | 21 + .../phpunit/phpunit/Tests/Util/ClassTest.php | 84 + .../phpunit/Tests/Util/ConfigurationTest.php | 390 + .../phpunit/phpunit/Tests/Util/DiffTest.php | 268 + .../Tests/Util/TestDox/NamePrettifierTest.php | 108 + .../phpunit/phpunit/Tests/Util/TestTest.php | 236 + .../phpunit/phpunit/Tests/Util/TypeTest.php | 269 + .../phpunit/phpunit/Tests/Util/XMLTest.php | 323 + .../phpunit/Tests/_files/AbstractTest.php | 7 + .../phpunit/phpunit/Tests/_files/Author.php | 66 + .../phpunit/Tests/_files/BankAccount.php | 116 + .../phpunit/Tests/_files/BankAccountTest.php | 133 + .../Tests/_files/BankAccountTest.test.php | 133 + .../phpunit/phpunit/Tests/_files/Book.php | 59 + .../phpunit/Tests/_files/Calculator.php | 14 + .../ChangeCurrentWorkingDirectoryTest.php | 10 + .../_files/ClassWithNonPublicAttributes.php | 29 + .../Tests/_files/ClassWithToString.php | 61 + .../phpunit/Tests/_files/ConcreteTest.my.php | 9 + .../phpunit/Tests/_files/ConcreteTest.php | 9 + .../phpunit/Tests/_files/DataProviderTest.php | 21 + .../Tests/_files/DependencyFailureTest.php | 22 + .../Tests/_files/DependencySuccessTest.php | 21 + .../Tests/_files/DependencyTestSuite.php | 16 + .../phpunit/Tests/_files/DoubleTestCase.php | 25 + .../Tests/_files/EmptyTestCaseTest.php | 4 + .../phpunit/phpunit/Tests/_files/Error.php | 8 + .../ExceptionInAssertPostConditionsTest.php | 35 + .../ExceptionInAssertPreConditionsTest.php | 35 + .../Tests/_files/ExceptionInSetUpTest.php | 35 + .../Tests/_files/ExceptionInTearDownTest.php | 35 + .../phpunit/Tests/_files/ExceptionInTest.php | 35 + .../Tests/_files/ExceptionNamespaceTest.php | 38 + .../phpunit/Tests/_files/ExceptionStack.php | 23 + .../phpunit/Tests/_files/ExceptionTest.php | 97 + .../phpunit/phpunit/Tests/_files/Failure.php | 8 + .../phpunit/Tests/_files/FailureTest.php | 76 + .../phpunit/Tests/_files/FatalTest.php | 10 + .../phpunit/Tests/_files/IncompleteTest.php | 8 + .../Tests/_files/InheritedTestCase.php | 9 + .../Tests/_files/JsonData/arrayObject.js | 1 + .../Tests/_files/JsonData/simpleObject.js | 1 + .../Tests/_files/JsonData/simpleObject2.js | 1 + .../phpunit/Tests/_files/MockRunner.php | 7 + .../Tests/_files/MultiDependencyTest.php | 23 + .../Tests/_files/NoArgTestCaseTest.php | 7 + .../phpunit/Tests/_files/NoTestCaseClass.php | 4 + .../phpunit/Tests/_files/NoTestCases.php | 7 + .../phpunit/Tests/_files/NonStatic.php | 8 + .../Tests/_files/NotPublicTestCase.php | 11 + .../phpunit/Tests/_files/NotVoidTestCase.php | 4 + .../phpunit/Tests/_files/NothingTest.php | 7 + .../phpunit/Tests/_files/OneTestCase.php | 11 + .../phpunit/Tests/_files/OutputTestCase.php | 27 + .../phpunit/Tests/_files/OverrideTestCase.php | 9 + .../_files/RequirementsClassDocBlockTest.php | 23 + .../phpunit/Tests/_files/RequirementsTest.php | 112 + .../phpunit/Tests/_files/SampleClass.php | 14 + .../_files/SelectorAssertionsFixture.html | 44 + .../phpunit/Tests/_files/Singleton.php | 22 + .../phpunit/Tests/_files/StackTest.php | 24 + .../phpunit/phpunit/Tests/_files/Struct.php | 10 + .../phpunit/phpunit/Tests/_files/Success.php | 7 + .../Tests/_files/TemplateMethodsTest.php | 52 + .../phpunit/Tests/_files/TestIterator.php | 36 + .../Tests/_files/ThrowExceptionTestCase.php | 8 + .../Tests/_files/ThrowNoExceptionTestCase.php | 7 + .../phpunit/phpunit/Tests/_files/WasRun.php | 10 + .../phpunit/phpunit/Tests/_files/bar.xml | 1 + .../phpunit/Tests/_files/configuration.xml | 115 + .../Tests/_files/configuration_xinclude.xml | 68 + .../Tests/_files/expectedFileFormat.txt | 1 + .../phpunit/phpunit/Tests/_files/foo.xml | 1 + ...uctureAttributesAreSameButValuesAreNot.xml | 10 + .../Tests/_files/structureExpected.xml | 10 + .../Tests/_files/structureIgnoreTextNodes.xml | 13 + .../_files/structureIsSameButDataIsNot.xml | 10 + .../structureWrongNumberOfAttributes.xml | 10 + .../_files/structureWrongNumberOfNodes.xml | 9 + .../kohana/vendor/phpunit/phpunit/build.xml | 220 + .../ControlSignatureSniff.php | 23 + .../Whitespace/ConcatenationSpacingSniff.php | 22 + .../phpunit/phpunit/build/PHPCS/ruleset.xml | 35 + .../phpunit/phpunit/build/assertions.php | 65 + .../build/dependencies/DbUnit-1.2.1.tgz | Bin 0 -> 41892 bytes .../dependencies/File_Iterator-1.3.3.tgz | Bin 0 -> 5152 bytes .../dependencies/PHPUnit_MockObject-1.2.1.tgz | Bin 0 -> 20417 bytes .../dependencies/PHPUnit_Selenium-1.2.9.tgz | Bin 0 -> 36429 bytes .../dependencies/PHP_CodeCoverage-1.2.6.tgz | Bin 0 -> 155960 bytes .../build/dependencies/PHP_Invoker-1.1.2.tgz | Bin 0 -> 3705 bytes .../build/dependencies/PHP_Timer-1.0.4.tgz | Bin 0 -> 3694 bytes .../dependencies/PHP_TokenStream-1.1.5.tgz | Bin 0 -> 9859 bytes .../dependencies/Text_Template-1.1.3.tgz | Bin 0 -> 3594 bytes .../phpunit/build/dependencies/Yaml-2.1.2.tgz | Bin 0 -> 38429 bytes .../phpunit/build/phar-autoload.php.in | 24 + .../vendor/phpunit/phpunit/build/phpmd.xml | 27 + .../vendor/phpunit/phpunit/composer.json | 62 + .../phpunit/phpunit/composer/bin/phpunit | 65 + .../kohana/vendor/phpunit/phpunit/package.xml | 292 + .../vendor/phpunit/phpunit/phpdox.xml.dist | 14 + .../kohana/vendor/phpunit/phpunit/phpunit.bat | 43 + .../kohana/vendor/phpunit/phpunit/phpunit.php | 46 + .../vendor/phpunit/phpunit/phpunit.xml.dist | 42 + .../kohana/vendor/phpunit/phpunit/phpunit.xsd | 251 + .../yaml/Symfony/Component/Yaml/CHANGELOG.md | 8 + .../yaml/Symfony/Component/Yaml/Dumper.php | 71 + .../yaml/Symfony/Component/Yaml/Escaper.php | 88 + .../Yaml/Exception/DumpException.php | 23 + .../Yaml/Exception/ExceptionInterface.php | 23 + .../Yaml/Exception/ParseException.php | 143 + .../yaml/Symfony/Component/Yaml/Inline.php | 424 + .../yaml/Symfony/Component/Yaml/LICENSE | 19 + .../yaml/Symfony/Component/Yaml/Parser.php | 620 + .../yaml/Symfony/Component/Yaml/README.md | 17 + .../Component/Yaml/Tests/DumperTest.php | 166 + .../Yaml/Tests/Fixtures/YtsAnchorAlias.yml | 31 + .../Yaml/Tests/Fixtures/YtsBasicTests.yml | 178 + .../Yaml/Tests/Fixtures/YtsBlockMapping.yml | 51 + .../Tests/Fixtures/YtsDocumentSeparator.yml | 85 + .../Yaml/Tests/Fixtures/YtsErrorTests.yml | 25 + .../Tests/Fixtures/YtsFlowCollections.yml | 60 + .../Yaml/Tests/Fixtures/YtsFoldedScalars.yml | 176 + .../Tests/Fixtures/YtsNullsAndEmpties.yml | 45 + .../Fixtures/YtsSpecificationExamples.yml | 1695 + .../Yaml/Tests/Fixtures/YtsTypeTransfers.yml | 244 + .../Yaml/Tests/Fixtures/embededPhp.yml | 1 + .../Yaml/Tests/Fixtures/escapedCharacters.yml | 139 + .../Component/Yaml/Tests/Fixtures/index.yml | 18 + .../Yaml/Tests/Fixtures/sfComments.yml | 51 + .../Yaml/Tests/Fixtures/sfCompact.yml | 159 + .../Yaml/Tests/Fixtures/sfMergeKey.yml | 27 + .../Yaml/Tests/Fixtures/sfObjects.yml | 11 + .../Yaml/Tests/Fixtures/sfQuotes.yml | 33 + .../Component/Yaml/Tests/Fixtures/sfTests.yml | 135 + .../Tests/Fixtures/unindentedCollections.yml | 62 + .../Component/Yaml/Tests/InlineTest.php | 211 + .../Component/Yaml/Tests/ParserTest.php | 193 + .../Symfony/Component/Yaml/Tests/YamlTest.php | 41 + .../Component/Yaml/Tests/bootstrap.php | 18 + .../yaml/Symfony/Component/Yaml/Unescaper.php | 145 + .../yaml/Symfony/Component/Yaml/Yaml.php | 113 + .../yaml/Symfony/Component/Yaml/composer.json | 31 + .../Symfony/Component/Yaml/phpunit.xml.dist | 29 + includes/tcpdf/2dbarcodes.php | 126 + includes/tcpdf/LICENSE.TXT | 504 + includes/tcpdf/barcodes.php | 1978 + includes/tcpdf/config/lang/eng.php | 50 + includes/tcpdf/config/lang/ita.php | 50 + includes/tcpdf/config/tcpdf_config.php | 232 + includes/tcpdf/config/tcpdf_config_alt.php | 227 + includes/tcpdf/fonts/README.TXT | 3 + includes/tcpdf/fonts/ZarBold.ctg.z | Bin 0 -> 1107 bytes includes/tcpdf/fonts/ZarBold.z | Bin 0 -> 32143 bytes includes/tcpdf/fonts/almohanad.ctg.z | Bin 0 -> 2780 bytes includes/tcpdf/fonts/almohanad.php | 102 + includes/tcpdf/fonts/almohanad.z | Bin 0 -> 121292 bytes includes/tcpdf/fonts/arialunicid0.php | 1768 + includes/tcpdf/fonts/courier.php | 33 + .../tcpdf/fonts/dejavu-fonts-ttf-2.30/AUTHORS | 46 + .../tcpdf/fonts/dejavu-fonts-ttf-2.30/BUGS | 3 + .../tcpdf/fonts/dejavu-fonts-ttf-2.30/LICENSE | 99 + .../tcpdf/fonts/dejavu-fonts-ttf-2.30/NEWS | 1215 + .../tcpdf/fonts/dejavu-fonts-ttf-2.30/README | 59 + .../fonts/dejavu-fonts-ttf-2.30/langcover.txt | 242 + .../fonts/dejavu-fonts-ttf-2.30/status.txt | 6237 ++++ .../fonts/dejavu-fonts-ttf-2.30/unicover.txt | 177 + includes/tcpdf/fonts/dejavusans.ctg.z | Bin 0 -> 9768 bytes includes/tcpdf/fonts/dejavusans.php | 517 + includes/tcpdf/fonts/dejavusans.z | Bin 0 -> 334954 bytes includes/tcpdf/fonts/dejavusansb.ctg.z | Bin 0 -> 9507 bytes includes/tcpdf/fonts/dejavusansb.php | 504 + includes/tcpdf/fonts/dejavusansb.z | Bin 0 -> 305270 bytes includes/tcpdf/fonts/dejavusansbi.ctg.z | Bin 0 -> 8547 bytes includes/tcpdf/fonts/dejavusansbi.php | 458 + includes/tcpdf/fonts/dejavusansbi.z | Bin 0 -> 289397 bytes .../tcpdf/fonts/dejavusanscondensed.ctg.z | Bin 0 -> 9768 bytes includes/tcpdf/fonts/dejavusanscondensed.php | 517 + includes/tcpdf/fonts/dejavusanscondensed.z | Bin 0 -> 286380 bytes .../tcpdf/fonts/dejavusanscondensedb.ctg.z | Bin 0 -> 9507 bytes includes/tcpdf/fonts/dejavusanscondensedb.php | 504 + includes/tcpdf/fonts/dejavusanscondensedb.z | Bin 0 -> 283491 bytes .../tcpdf/fonts/dejavusanscondensedbi.ctg.z | Bin 0 -> 8547 bytes .../tcpdf/fonts/dejavusanscondensedbi.php | 458 + includes/tcpdf/fonts/dejavusanscondensedbi.z | Bin 0 -> 275613 bytes .../tcpdf/fonts/dejavusanscondensedi.ctg.z | Bin 0 -> 8794 bytes includes/tcpdf/fonts/dejavusanscondensedi.php | 471 + includes/tcpdf/fonts/dejavusanscondensedi.z | Bin 0 -> 271731 bytes includes/tcpdf/fonts/dejavusansi.ctg.z | Bin 0 -> 8794 bytes includes/tcpdf/fonts/dejavusansi.php | 471 + includes/tcpdf/fonts/dejavusansi.z | Bin 0 -> 289088 bytes includes/tcpdf/fonts/dejavusansmono.ctg.z | Bin 0 -> 6039 bytes includes/tcpdf/fonts/dejavusansmono.php | 320 + includes/tcpdf/fonts/dejavusansmono.z | Bin 0 -> 188525 bytes includes/tcpdf/fonts/dejavusansmonob.ctg.z | Bin 0 -> 5814 bytes includes/tcpdf/fonts/dejavusansmonob.php | 307 + includes/tcpdf/fonts/dejavusansmonob.z | Bin 0 -> 181506 bytes includes/tcpdf/fonts/dejavusansmonobi.ctg.z | Bin 0 -> 4676 bytes includes/tcpdf/fonts/dejavusansmonobi.php | 250 + includes/tcpdf/fonts/dejavusansmonobi.z | Bin 0 -> 133442 bytes includes/tcpdf/fonts/dejavusansmonoi.ctg.z | Bin 0 -> 4929 bytes includes/tcpdf/fonts/dejavusansmonoi.php | 262 + includes/tcpdf/fonts/dejavusansmonoi.z | Bin 0 -> 135140 bytes includes/tcpdf/fonts/dejavuserif.ctg.z | Bin 0 -> 5821 bytes includes/tcpdf/fonts/dejavuserif.php | 313 + includes/tcpdf/fonts/dejavuserif.z | Bin 0 -> 180867 bytes includes/tcpdf/fonts/dejavuserifb.ctg.z | Bin 0 -> 5558 bytes includes/tcpdf/fonts/dejavuserifb.php | 299 + includes/tcpdf/fonts/dejavuserifb.z | Bin 0 -> 166879 bytes includes/tcpdf/fonts/dejavuserifbi.ctg.z | Bin 0 -> 5570 bytes includes/tcpdf/fonts/dejavuserifbi.php | 299 + includes/tcpdf/fonts/dejavuserifbi.z | Bin 0 -> 165164 bytes .../tcpdf/fonts/dejavuserifcondensed.ctg.z | Bin 0 -> 5821 bytes includes/tcpdf/fonts/dejavuserifcondensed.php | 313 + includes/tcpdf/fonts/dejavuserifcondensed.z | Bin 0 -> 160024 bytes .../tcpdf/fonts/dejavuserifcondensedb.ctg.z | Bin 0 -> 5558 bytes .../tcpdf/fonts/dejavuserifcondensedb.php | 299 + includes/tcpdf/fonts/dejavuserifcondensedb.z | Bin 0 -> 151074 bytes .../tcpdf/fonts/dejavuserifcondensedbi.ctg.z | Bin 0 -> 5570 bytes .../tcpdf/fonts/dejavuserifcondensedbi.php | 299 + includes/tcpdf/fonts/dejavuserifcondensedbi.z | Bin 0 -> 166119 bytes .../tcpdf/fonts/dejavuserifcondensedi.ctg.z | Bin 0 -> 5796 bytes .../tcpdf/fonts/dejavuserifcondensedi.php | 312 + includes/tcpdf/fonts/dejavuserifcondensedi.z | Bin 0 -> 168063 bytes includes/tcpdf/fonts/dejavuserifi.ctg.z | Bin 0 -> 5796 bytes includes/tcpdf/fonts/dejavuserifi.php | 312 + includes/tcpdf/fonts/dejavuserifi.z | Bin 0 -> 166877 bytes .../tcpdf/fonts/freefont-20090104/AUTHORS | 208 + .../tcpdf/fonts/freefont-20090104/COPYING | 674 + .../tcpdf/fonts/freefont-20090104/CREDITS | 528 + .../tcpdf/fonts/freefont-20090104/ChangeLog | 4525 +++ .../tcpdf/fonts/freefont-20090104/INSTALL | 86 + includes/tcpdf/fonts/freefont-20090104/README | 108 + includes/tcpdf/fonts/freemono.ctg.z | Bin 0 -> 6361 bytes includes/tcpdf/fonts/freemono.php | 348 + includes/tcpdf/fonts/freemono.z | Bin 0 -> 146378 bytes includes/tcpdf/fonts/freemonob.ctg.z | Bin 0 -> 3715 bytes includes/tcpdf/fonts/freemonob.php | 204 + includes/tcpdf/fonts/freemonob.z | Bin 0 -> 85241 bytes includes/tcpdf/fonts/freemonobi.ctg.z | Bin 0 -> 2749 bytes includes/tcpdf/fonts/freemonobi.php | 153 + includes/tcpdf/fonts/freemonobi.z | Bin 0 -> 82287 bytes includes/tcpdf/fonts/freemonoi.ctg.z | Bin 0 -> 4000 bytes includes/tcpdf/fonts/freemonoi.php | 221 + includes/tcpdf/fonts/freemonoi.z | Bin 0 -> 107860 bytes includes/tcpdf/fonts/freesans.ctg.z | Bin 0 -> 5822 bytes includes/tcpdf/fonts/freesans.php | 311 + includes/tcpdf/fonts/freesans.z | Bin 0 -> 308238 bytes includes/tcpdf/fonts/freesansb.ctg.z | Bin 0 -> 4308 bytes includes/tcpdf/fonts/freesansb.php | 236 + includes/tcpdf/fonts/freesansb.z | Bin 0 -> 149951 bytes includes/tcpdf/fonts/freesansbi.ctg.z | Bin 0 -> 4065 bytes includes/tcpdf/fonts/freesansbi.php | 225 + includes/tcpdf/fonts/freesansbi.z | Bin 0 -> 144094 bytes includes/tcpdf/fonts/freesansi.ctg.z | Bin 0 -> 4349 bytes includes/tcpdf/fonts/freesansi.php | 239 + includes/tcpdf/fonts/freesansi.z | Bin 0 -> 224360 bytes includes/tcpdf/fonts/freeserif.ctg.z | Bin 0 -> 9573 bytes includes/tcpdf/fonts/freeserif.php | 504 + includes/tcpdf/fonts/freeserif.z | Bin 0 -> 785794 bytes includes/tcpdf/fonts/freeserifb.ctg.z | Bin 0 -> 5162 bytes includes/tcpdf/fonts/freeserifb.php | 282 + includes/tcpdf/fonts/freeserifb.z | Bin 0 -> 232589 bytes includes/tcpdf/fonts/freeserifbi.ctg.z | Bin 0 -> 4316 bytes includes/tcpdf/fonts/freeserifbi.php | 238 + includes/tcpdf/fonts/freeserifbi.z | Bin 0 -> 229394 bytes includes/tcpdf/fonts/freeserifi.ctg.z | Bin 0 -> 4703 bytes includes/tcpdf/fonts/freeserifi.php | 259 + includes/tcpdf/fonts/freeserifi.z | Bin 0 -> 331961 bytes includes/tcpdf/fonts/helvetica.php | 33 + includes/tcpdf/fonts/helveticab.php | 33 + includes/tcpdf/fonts/helveticabi.php | 33 + includes/tcpdf/fonts/helveticai.php | 33 + includes/tcpdf/fonts/hysmyeongjostdmedium.php | 48 + includes/tcpdf/fonts/kozgopromedium.php | 65 + includes/tcpdf/fonts/kozminproregular.php | 63 + includes/tcpdf/fonts/msungstdlight.php | 38 + includes/tcpdf/fonts/stsongstdlight.php | 39 + includes/tcpdf/fonts/symbol.php | 32 + includes/tcpdf/fonts/times.php | 33 + includes/tcpdf/fonts/timesb.php | 33 + includes/tcpdf/fonts/timesbi.php | 33 + includes/tcpdf/fonts/timesi.php | 33 + includes/tcpdf/fonts/uni2cid_ac15.php | 23613 ++++++++++++ includes/tcpdf/fonts/uni2cid_ag15.php | 30222 ++++++++++++++++ includes/tcpdf/fonts/uni2cid_aj16.php | 15705 ++++++++ includes/tcpdf/fonts/uni2cid_ak12.php | 17530 +++++++++ includes/tcpdf/fonts/utils/README.TXT | 130 + includes/tcpdf/fonts/utils/enc/cp1250.map | 251 + includes/tcpdf/fonts/utils/enc/cp1251.map | 255 + includes/tcpdf/fonts/utils/enc/cp1252.map | 251 + includes/tcpdf/fonts/utils/enc/cp1253.map | 239 + includes/tcpdf/fonts/utils/enc/cp1254.map | 249 + includes/tcpdf/fonts/utils/enc/cp1255.map | 233 + includes/tcpdf/fonts/utils/enc/cp1257.map | 244 + includes/tcpdf/fonts/utils/enc/cp1258.map | 247 + includes/tcpdf/fonts/utils/enc/cp874.map | 225 + includes/tcpdf/fonts/utils/enc/iso-8859-1.map | 256 + .../tcpdf/fonts/utils/enc/iso-8859-11.map | 248 + .../tcpdf/fonts/utils/enc/iso-8859-15.map | 256 + .../tcpdf/fonts/utils/enc/iso-8859-16.map | 256 + includes/tcpdf/fonts/utils/enc/iso-8859-2.map | 256 + includes/tcpdf/fonts/utils/enc/iso-8859-4.map | 256 + includes/tcpdf/fonts/utils/enc/iso-8859-5.map | 256 + includes/tcpdf/fonts/utils/enc/iso-8859-7.map | 250 + includes/tcpdf/fonts/utils/enc/iso-8859-9.map | 256 + includes/tcpdf/fonts/utils/enc/koi8-r.map | 256 + includes/tcpdf/fonts/utils/enc/koi8-u.map | 256 + includes/tcpdf/fonts/utils/freetype6.dll | Bin 0 -> 455680 bytes .../tcpdf/fonts/utils/makeallttffonts.php | 71 + includes/tcpdf/fonts/utils/makefont.php | 610 + includes/tcpdf/fonts/utils/pfm2afm | Bin 0 -> 20031 bytes includes/tcpdf/fonts/utils/pfm2afm.exe | Bin 0 -> 22891 bytes .../tcpdf/fonts/utils/src/pfm2afm-src.tar.gz | Bin 0 -> 21325 bytes includes/tcpdf/fonts/utils/src/readme.txt | 17 + .../tcpdf/fonts/utils/src/ttf2ufm-src.tar.gz | Bin 0 -> 714480 bytes includes/tcpdf/fonts/utils/ttf2ufm | Bin 0 -> 157374 bytes includes/tcpdf/fonts/utils/ttf2ufm.exe | Bin 0 -> 184320 bytes includes/tcpdf/fonts/utils/zlib1.dll | Bin 0 -> 75264 bytes includes/tcpdf/fonts/zapfdingbats.php | 32 + includes/tcpdf/fonts/zarbold.php | 47 + includes/tcpdf/htmlcolors.php | 210 + includes/tcpdf/tcpdf.crt | 40 + includes/tcpdf/tcpdf.php | 16247 +++++++++ includes/tcpdf/unicode_data.php | 18360 ++++++++++ index.php | 131 + modules/adsl/classes/ADSL.php | 134 + modules/adsl/classes/Model/ADSL/Plan.php | 38 + modules/adsl/classes/Model/ADSL/Supplier.php | 72 + .../adsl/classes/Model/ADSL/Supplier/Plan.php | 38 + .../classes/Model/Product/Plugin/Adsl.php | 59 + .../classes/Model/Service/Plugin/Adsl.php | 398 + .../Model/Service/Plugin/Adsl/Traffic.php | 43 + modules/adsl/classes/Service/Traffic/Adsl.php | 166 + .../Service/Traffic/Adsl/Exetelhspa.php | 186 + .../classes/Service/Traffic/Adsl/Exetelpe.php | 179 + .../Service/Traffic/Adsl/Exetelvisp.php | 67 + .../Service/Traffic/Adsl/PeopleAgent.php | 61 + .../Service/Traffic/Adsl/iiNetADSL.php | 123 + modules/adsl/views/adsl/contract_view.php | 12 + .../product/plugin/adsl/feature_summary.php | 28 + .../adsl/views/service/admin/adsl/update.php | 46 + .../service/admin/adslstat/body_data.php | 1 + .../views/service/admin/adslstat/body_end.php | 1 + .../service/admin/adslstat/body_head.php | 4 + .../views/service/admin/adslstat/foot.php | 1 + .../views/service/admin/adslstat/head.php | 3 + .../service/admin/adslstat/head_data.php | 1 + .../views/service/admin/adslstat/head_end.php | 1 + .../service/admin/listadslbilling/body.php | 11 + .../service/admin/listadslbilling/foot.php | 4 + .../service/admin/listadslbilling/head.php | 7 + .../service/admin/listadslbilling/summary.php | 10 + .../listadslbilling/summary_exception.php | 6 + .../user/plugin/adsl/table_traffic.php | 9 + .../views/service/user/plugin/adsl/view.php | 79 + modules/affiliate/classes/Model/Affiliate.php | 18 + modules/cart/classes/Cart.php | 96 + modules/cart/classes/Cart/Item.php | 36 + modules/cart/classes/Cartable.php | 18 + modules/cart/classes/Controller/Cart.php | 94 + modules/cart/classes/Model/Cart.php | 75 + .../img/accessories-calculator-small.png | Bin 0 -> 576 bytes .../cart/media/img/accessories-calculator.png | Bin 0 -> 1020 bytes modules/cart/media/img/edit-delete.png | Bin 0 -> 1219 bytes .../classes/Controller/Admin/Charge.php | 133 + modules/charge/classes/Model/Charge.php | 45 + modules/charge/views/charge/admin/add.php | 37 + modules/checkout/classes/Checkout/Plugin.php | 34 + .../classes/Checkout/Plugin/Paypal.php | 204 + .../classes/Checkout/Plugin/Paypal/Cart.php | 55 + .../checkout/classes/Controller/Checkout.php | 94 + modules/checkout/classes/Model/Checkout.php | 52 + .../classes/Model/Checkout/Notify.php | 22 + .../views/checkout/payment_option.php | 3 + .../views/checkout/plugin/paypal/before.php | 32 + modules/domain/classes/Domain.php | 53 + .../domain/classes/Model/Domain/Registrar.php | 26 + modules/domain/classes/Model/Domain/TLD.php | 19 + .../classes/Model/Product/Plugin/Domain.php | 41 + .../classes/Model/Service/Plugin/Domain.php | 83 + modules/domain/classes/Service/Domain.php | 55 + .../domain/classes/Service/Domain/Manual.php | 22 + .../classes/Service/Domain/PlanetDomain.php | 34 + modules/domain/classes/Service/Domain/TPP.php | 34 + .../views/service/user/plugin/domain/view.php | 51 + .../email/classes/Controller/Admin/Email.php | 154 + modules/email/classes/Controller/Email.php | 14 + .../classes/Controller/Email/Template.php | 14 + .../email/classes/Controller/User/Email.php | 59 + modules/email/classes/Email/Template.php | 182 + modules/email/classes/Model/Email/Log.php | 38 + .../email/classes/Model/Email/Template.php | 30 + .../Model/Email/Template/Translate.php | 40 + .../email/views/email/admin/templateadd.php | 14 + .../email/admin/templateadd/translate.php | 18 + .../email/views/email/admin/templateedit.php | 14 + .../email/admin/templateedit/translate.php | 18 + .../views/email/admin/templatelist/body.php | 4 + .../views/email/admin/templatelist/foot.php | 1 + .../views/email/admin/templatelist/head.php | 6 + modules/email/views/email/user/view.php | 20 + .../classes/Controller/Admin/Export.php | 59 + .../classes/Controller/Affiliate/Export.php | 87 + modules/export/classes/Controller/Export.php | 14 + modules/export/classes/Export.php | 21 + modules/export/classes/Export/Quicken.php | 217 + modules/export/classes/Model/Export.php | 31 + modules/export/classes/OSBExport.php | 35 + modules/export/classes/Quicken.php | 69 + modules/export/classes/Quicken/Invoice.php | 26 + .../export/classes/Quicken/InvoiceItem.php | 14 + modules/export/classes/Quicken/Payment.php | 17 + modules/export/views/export/admin/add.php | 18 + modules/gchart/classes/GoogleChart.php | 217 + .../gchart/classes/GoogleChart/ComboChart.php | 170 + modules/gchart/classes/GoogleChart/Legacy.php | 220 + .../host/classes/Controller/Admin/Host.php | 79 + modules/host/classes/Controller/Task/Host.php | 302 + modules/host/classes/Host/Plugin.php | 50 + modules/host/classes/Host/Plugin/Cpanel.php | 81 + .../host/classes/Host/Plugin/Cpanel/11.php | 100 + modules/host/classes/Host/Plugin/Plesk.php | 117 + modules/host/classes/Host/Plugin/Plesk/10.php | 283 + modules/host/classes/Host/Plugin/Plesk/9.php | 338 + modules/host/classes/Model/Host/Server.php | 71 + .../classes/Model/Host/Server/Affiliate.php | 14 + .../classes/Model/Product/Plugin/Host.php | 25 + .../classes/Model/Service/Plugin/Host.php | 79 + .../host/views/host/admin/plugin/plesk.php | 6 + modules/host/views/host/admin/update.php | 54 + .../views/service/user/plugin/host/view.php | 33 + .../classes/Controller/Admin/Invoice.php | 72 + .../invoice/classes/Controller/Invoice.php | 138 + .../classes/Controller/Reseller/Invoice.php | 33 + .../classes/Controller/Task/Invoice.php | 340 + .../classes/Controller/User/Invoice.php | 14 + modules/invoice/classes/Invoice.php | 144 + modules/invoice/classes/Invoice/Tcpdf.php | 127 + .../invoice/classes/Invoice/Tcpdf/Default.php | 518 + modules/invoice/classes/Model/Invoice.php | 649 + .../invoice/classes/Model/Invoice/Item.php | 204 + .../invoice/classes/Task/Invoice/Complete.php | 32 + .../invoice/media/img/invoice-payment-dd.png | Bin 0 -> 7104 bytes .../invoice/media/img/invoice-payment-pp.png | Bin 0 -> 796 bytes .../views/invoice/task/list_overdue_body.php | 6 + .../views/invoice/task/list_overdue_foot.php | 1 + .../views/invoice/task/list_overdue_head.php | 7 + modules/invoice/views/invoice/user/email.php | 145 + modules/invoice/views/invoice/user/view.php | 218 + .../invoice/views/invoice/user/view/pay.php | 7 + modules/lnApp/classes/Block.php | 4 + modules/lnApp/classes/Block/Sub.php | 4 + modules/lnApp/classes/BreadCrumb.php | 4 + modules/lnApp/classes/Controller/Default.php | 4 + modules/lnApp/classes/Controller/Login.php | 4 + modules/lnApp/classes/Controller/Logout.php | 4 + modules/lnApp/classes/Controller/Media.php | 4 + modules/lnApp/classes/Controller/Task.php | 4 + modules/lnApp/classes/HTML.php | 4 + modules/lnApp/classes/HTMLRender.php | 4 + modules/lnApp/classes/HeadImages.php | 4 + modules/lnApp/classes/Meta.php | 4 + modules/lnApp/classes/PWGen.php | 4 + modules/lnApp/classes/Random.php | 4 + modules/lnApp/classes/Script.php | 4 + modules/lnApp/classes/Sort.php | 4 + modules/lnApp/classes/Style.php | 4 + modules/lnApp/classes/SystemMessage.php | 4 + modules/lnApp/classes/Table.php | 4 + modules/lnApp/classes/lnApp/Block.php | 84 + modules/lnApp/classes/lnApp/Block/Sub.php | 94 + modules/lnApp/classes/lnApp/BreadCrumb.php | 96 + .../classes/lnApp/Controller/Default.php | 89 + .../lnApp/classes/lnApp/Controller/Login.php | 63 + .../lnApp/classes/lnApp/Controller/Logout.php | 30 + .../lnApp/classes/lnApp/Controller/Media.php | 63 + .../lnApp/classes/lnApp/Controller/Task.php | 20 + .../lnApp/Controller/TemplateDefault.php | 265 + .../lnApp/classes/lnApp/Controller/Tree.php | 116 + modules/lnApp/classes/lnApp/HTML.php | 20 + modules/lnApp/classes/lnApp/HTMLRender.php | 91 + modules/lnApp/classes/lnApp/HeadImages.php | 47 + modules/lnApp/classes/lnApp/Meta.php | 33 + modules/lnApp/classes/lnApp/PWgen.php | 35 + modules/lnApp/classes/lnApp/Random.php | 17 + modules/lnApp/classes/lnApp/Script.php | 64 + modules/lnApp/classes/lnApp/Sort.php | 89 + modules/lnApp/classes/lnApp/Style.php | 53 + modules/lnApp/classes/lnApp/SystemMessage.php | 128 + modules/lnApp/classes/lnApp/Table.php | 275 + modules/lnApp/views/lnapp/default.php | 93 + .../classes/Controller/Admin/Payment.php | 237 + .../payment/classes/Controller/Payment.php | 14 + .../classes/Controller/User/Payment.php | 41 + modules/payment/classes/Model/Payment.php | 265 + .../payment/classes/Model/Payment/Item.php | 22 + .../payment/classes/Payment/Bulk/Ezypay.php | 107 + .../payment/views/payment/admin/add_view.php | 35 + .../views/payment/admin/addbulk/ezypay.php | 13 + .../payment/admin/addbulk/ezypay/body.php | 7 + .../payment/admin/addbulk/ezypay/foot.php | 6 + .../payment/admin/addbulk/ezypay/head.php | 8 + .../views/payment/admin/autoitemlist/body.php | 9 + .../views/payment/admin/autoitemlist/foot.php | 7 + .../views/payment/admin/autoitemlist/head.php | 11 + .../classes/Controller/Admin/Product.php | 142 + .../product/classes/Controller/Product.php | 104 + .../classes/Controller/Product/Category.php | 39 + modules/product/classes/Model/Product.php | 221 + .../classes/Model/Product/Category.php | 55 + .../Model/Product/Category/Translate.php | 19 + .../product/classes/Model/Product/Plugin.php | 28 + .../classes/Model/Product/Translate.php | 19 + .../views/product/admin/ajaxtranslateform.php | 15 + .../product/views/product/admin/update.php | 59 + .../product/views/product/category/list.php | 7 + .../views/product/category/list_item.php | 8 + .../product/views/product/category/view.php | 40 + modules/product/views/product/view.php | 80 + .../classes/Controller/Admin/Service.php | 914 + .../classes/Controller/Affiliate/Service.php | 287 + .../service/classes/Controller/Service.php | 14 + .../classes/Controller/Task/Service.php | 47 + .../classes/Controller/User/Service.php | 78 + modules/service/classes/Model/Service.php | 268 + .../service/classes/Model/Service/Billing.php | 20 + .../service/classes/Model/Service/Change.php | 48 + .../service/classes/Model/Service/Plugin.php | 97 + .../service/views/service/admin/update.php | 64 + modules/service/views/service/admin/view.php | 40 + modules/service/views/service/user/view.php | 80 + modules/ssl/classes/Controller/Admin/Ssl.php | 109 + modules/ssl/classes/Controller/User/Ssl.php | 50 + .../ssl/classes/Model/Product/Plugin/Ssl.php | 24 + modules/ssl/classes/Model/SSL.php | 15 + modules/ssl/classes/Model/SSL/CA.php | 96 + .../ssl/classes/Model/Service/Plugin/Ssl.php | 169 + modules/ssl/classes/SSL.php | 218 + modules/ssl/classes/Task/Ssl/Renew.php | 21 + modules/ssl/config/ssl.php | 23 + modules/ssl/messages/models/ssl_ca.php | 23 + .../product/plugin/ssl/feature_summary.php | 11 + .../views/service/admin/plugin/ssl/update.php | 14 + .../views/service/user/plugin/ssl/view.php | 56 + modules/ssl/views/ssl/admin/add_view.php | 55 + .../classes/Controller/Admin/Statement.php | 87 + .../classes/Controller/Statement.php | 14 + .../classes/Controller/User/Statement.php | 83 + .../views/statement/user/show/body.php | 14 + .../views/statement/user/show/foot.php | 1 + .../views/statement/user/show/head.php | 7 + .../classes/controller/staticpage.php | 35 + .../controller/staticpage/category.php | 70 + .../static_page/classes/model/staticpage.php | 28 + .../classes/model/staticpage/category.php | 20 + .../classes/model/staticpage/translate.php | 20 + .../views/staticpage/category/list.php | 8 + .../views/staticpage/category/view.php | 40 + modules/static_page/views/staticpage/view.php | 32 + .../task/classes/Controller/Admin/Task.php | 39 + modules/task/classes/Model/Task.php | 107 + modules/task/classes/Model/Task/Log.php | 23 + modules/task/classes/Task/Task/Listactive.php | 35 + modules/task/classes/Task/Task/Run.php | 46 + .../tax/classes/Model/Invoice/Item/Tax.php | 14 + modules/tax/classes/Model/Tax.php | 14 + modules/tax/classes/Tax.php | 58 + 2344 files changed, 392978 insertions(+) create mode 100644 .htaccess create mode 100644 LICENSE create mode 100644 application/bootstrap.php create mode 100644 application/cache/.htaccess create mode 100644 application/classes/Auth/ORM.php create mode 100644 application/classes/Auth/OSB.php create mode 100644 application/classes/Company.php create mode 100644 application/classes/Config.php create mode 100644 application/classes/Controller/Account.php create mode 100644 application/classes/Controller/Admin/Account.php create mode 100644 application/classes/Controller/Admin/Module.php create mode 100644 application/classes/Controller/Admin/Module/Method.php create mode 100644 application/classes/Controller/Admin/Setup.php create mode 100644 application/classes/Controller/Admin/Welcome.php create mode 100644 application/classes/Controller/Debug.php create mode 100644 application/classes/Controller/Login.php create mode 100644 application/classes/Controller/Module.php create mode 100644 application/classes/Controller/Reseller/Account.php create mode 100644 application/classes/Controller/Reseller/Welcome.php create mode 100644 application/classes/Controller/TemplateDefault.php create mode 100644 application/classes/Controller/TemplateDefault/Admin.php create mode 100644 application/classes/Controller/TemplateDefault/Affiliate.php create mode 100644 application/classes/Controller/TemplateDefault/User.php create mode 100644 application/classes/Controller/Tree.php create mode 100644 application/classes/Controller/User/Account.php create mode 100644 application/classes/Controller/User/Welcome.php create mode 100644 application/classes/Controller/Welcome.php create mode 100644 application/classes/Cookie.php create mode 100644 application/classes/Country.php create mode 100644 application/classes/Currency.php create mode 100644 application/classes/DB.php create mode 100644 application/classes/Database/Mysql.php create mode 100644 application/classes/Editor.php create mode 100644 application/classes/Form.php create mode 100644 application/classes/HTTP/Exception/404.php create mode 100644 application/classes/HTTP/Exception/501.php create mode 100644 application/classes/Kohana.php create mode 100644 application/classes/Kohana/Exception.php create mode 100644 application/classes/Minion/Task.php create mode 100644 application/classes/Model/Account.php create mode 100644 application/classes/Model/Account/Log.php create mode 100644 application/classes/Model/Affiliate.php create mode 100644 application/classes/Model/Auth/RoleDefault.php create mode 100644 application/classes/Model/Auth/UserDefault.php create mode 100644 application/classes/Model/Country.php create mode 100644 application/classes/Model/Currency.php create mode 100644 application/classes/Model/Group.php create mode 100644 application/classes/Model/Group/Method.php create mode 100644 application/classes/Model/Language.php create mode 100644 application/classes/Model/Log/Error.php create mode 100644 application/classes/Model/Module.php create mode 100644 application/classes/Model/Module/Method.php create mode 100644 application/classes/Model/Module/Method/Token.php create mode 100644 application/classes/Model/RTM.php create mode 100644 application/classes/Model/Record/ID.php create mode 100644 application/classes/Model/Setup.php create mode 100644 application/classes/ORM.php create mode 100644 application/classes/ORM/OSB.php create mode 100644 application/classes/Period.php create mode 100644 application/classes/Request.php create mode 100644 application/classes/Response.php create mode 100644 application/classes/StaticList.php create mode 100644 application/classes/StaticList/Module.php create mode 100644 application/classes/StaticList/PriceType.php create mode 100644 application/classes/StaticList/RecurSchedule.php create mode 100644 application/classes/StaticList/RecurType.php create mode 100644 application/classes/StaticList/SweepType.php create mode 100644 application/classes/StaticList/Title.php create mode 100644 application/classes/StaticList/YesNo.php create mode 100644 application/classes/Task.php create mode 100644 application/classes/Task/Account/Complete.php create mode 100644 application/classes/URL.php create mode 100644 application/classes/Valid.php create mode 100644 application/classes/XML.php create mode 100644 application/config/auth.php create mode 100644 application/config/cache.php create mode 100644 application/config/config.php create mode 100644 application/config/database.php create mode 100644 application/config/debug.php create mode 100644 application/config/invoice.php create mode 100644 application/config/openssl.cnf create mode 100644 application/config/pagination.php create mode 100644 application/config/pwgen.php create mode 100644 application/config/userguide.php create mode 100644 application/i18n/.htaccess create mode 100644 application/media/css/dhtml.calendar.css create mode 100644 application/media/css/dhtml.menuarrow.gif create mode 100644 application/media/css/html5reset-1.6.1.css create mode 100644 application/media/css/jquery.gritter.css create mode 100644 application/media/css/login.css create mode 100644 application/media/img/address-book-new-big.png create mode 100644 application/media/img/address-book-new.png create mode 100644 application/media/img/ajax-progress.gif create mode 100644 application/media/img/bug-big.png create mode 100644 application/media/img/calendar.png create mode 100644 application/media/img/country/au.png create mode 100644 application/media/img/dialog-error-big.png create mode 100644 application/media/img/dialog-error.png create mode 100644 application/media/img/dialog-information-big.png create mode 100644 application/media/img/dialog-information.png create mode 100644 application/media/img/dialog-password-big.png create mode 100644 application/media/img/dialog-password.png create mode 100644 application/media/img/dialog-question-big.png create mode 100644 application/media/img/dialog-question.png create mode 100644 application/media/img/dialog-warning-big.png create mode 100644 application/media/img/dialog-warning.png create mode 100644 application/media/img/forum-big.png create mode 100644 application/media/img/gnome-pdf.png create mode 100644 application/media/img/gritter-close-ie6.gif create mode 100755 application/media/img/gritter.png create mode 100644 application/media/img/help-about-big.png create mode 100644 application/media/img/help-about.png create mode 100644 application/media/img/help-big.png create mode 100644 application/media/img/help-faq-big.png create mode 100644 application/media/img/help-faq.png create mode 100644 application/media/img/help.png create mode 100644 application/media/img/jquery.gritter.close-ie6.gif create mode 100644 application/media/img/jquery.gritter.png create mode 100644 application/media/img/jquery.jstree.d.png create mode 100644 application/media/img/jquery.jstree.throbber.gif create mode 100644 application/media/img/login.user.png create mode 100644 application/media/img/logo-small.png create mode 100644 application/media/img/logo.png create mode 100644 application/media/img/request-feature-big.png create mode 100644 application/media/img/smile-big.png create mode 100644 application/media/img/toggle-closed.png create mode 100644 application/media/img/toggle-open.png create mode 100644 application/media/img/ui-anim_basic_16x16.gif create mode 100644 application/media/js/dhtml.calendar-en.js create mode 100644 application/media/js/dhtml.calendar-setup.js create mode 100644 application/media/js/dhtml.calendar.js create mode 100644 application/media/js/dhtml.date_selector.js create mode 100644 application/media/js/jquery-1.6.4.min.js create mode 100644 application/media/js/jquery-ui-1.8.16.custom.min.js create mode 100644 application/media/js/jquery.cookie.js create mode 100644 application/media/js/jquery.gritter-1.5.js create mode 100644 application/media/js/jquery.jstree-1.0rc3.js create mode 100644 application/media/js/jquery.jstree.themes/apple/bg.jpg create mode 100644 application/media/js/jquery.jstree.themes/apple/d.png create mode 100644 application/media/js/jquery.jstree.themes/apple/dot_for_ie.gif create mode 100644 application/media/js/jquery.jstree.themes/apple/style.css create mode 100644 application/media/js/jquery.jstree.themes/apple/throbber.gif create mode 100644 application/media/js/jquery.jstree.themes/classic/d.gif create mode 100644 application/media/js/jquery.jstree.themes/classic/d.png create mode 100644 application/media/js/jquery.jstree.themes/classic/dot_for_ie.gif create mode 100644 application/media/js/jquery.jstree.themes/classic/style.css create mode 100644 application/media/js/jquery.jstree.themes/classic/throbber.gif create mode 100644 application/media/js/jquery.jstree.themes/default-rtl/d.gif create mode 100644 application/media/js/jquery.jstree.themes/default-rtl/d.png create mode 100644 application/media/js/jquery.jstree.themes/default-rtl/dots.gif create mode 100644 application/media/js/jquery.jstree.themes/default-rtl/style.css create mode 100644 application/media/js/jquery.jstree.themes/default-rtl/throbber.gif create mode 100644 application/media/js/jquery.jstree.themes/default/d.gif create mode 100644 application/media/js/jquery.jstree.themes/default/d.png create mode 100644 application/media/js/jquery.jstree.themes/default/style.css create mode 100644 application/media/js/jquery.jstree.themes/default/throbber.gif create mode 100644 application/media/js/jquery.stickyfloat-1.0.js create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-icons_222222_256x240.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-icons_454545_256x240.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-icons_888888_256x240.png create mode 100644 application/media/js/jquery.ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 application/media/js/jquery.ui/css/smoothness/jquery-ui-1.8.16.custom.css create mode 100644 application/media/js/tiny_mce/jquery.tinymce.js create mode 100644 application/media/js/tiny_mce/langs/en.js create mode 100644 application/media/js/tiny_mce/license.txt create mode 100644 application/media/js/tiny_mce/plugins/advhr/css/advhr.css create mode 100644 application/media/js/tiny_mce/plugins/advhr/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/advhr/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/advhr/js/rule.js create mode 100644 application/media/js/tiny_mce/plugins/advhr/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/advhr/rule.htm create mode 100644 application/media/js/tiny_mce/plugins/advimage/css/advimage.css create mode 100644 application/media/js/tiny_mce/plugins/advimage/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/advimage/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/advimage/image.htm create mode 100644 application/media/js/tiny_mce/plugins/advimage/img/sample.gif create mode 100644 application/media/js/tiny_mce/plugins/advimage/js/image.js create mode 100644 application/media/js/tiny_mce/plugins/advimage/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/advlink/css/advlink.css create mode 100644 application/media/js/tiny_mce/plugins/advlink/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/advlink/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/advlink/js/advlink.js create mode 100644 application/media/js/tiny_mce/plugins/advlink/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/advlink/link.htm create mode 100644 application/media/js/tiny_mce/plugins/advlist/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/advlist/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/autoresize/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/autoresize/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/autosave/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/autosave/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/autosave/langs/en.js create mode 100644 application/media/js/tiny_mce/plugins/bbcode/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/bbcode/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/contextmenu/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/contextmenu/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/directionality/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/directionality/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/emotions/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/emotions/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/emotions/emotions.htm create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-cool.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-cry.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-embarassed.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-foot-in-mouth.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-frown.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-innocent.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-kiss.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-money-mouth.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-sealed.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-smile.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-surprised.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-tongue-out.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-undecided.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-wink.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/img/smiley-yell.gif create mode 100644 application/media/js/tiny_mce/plugins/emotions/js/emotions.js create mode 100644 application/media/js/tiny_mce/plugins/emotions/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/example/dialog.htm create mode 100644 application/media/js/tiny_mce/plugins/example/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/example/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/example/img/example.gif create mode 100644 application/media/js/tiny_mce/plugins/example/js/dialog.js create mode 100644 application/media/js/tiny_mce/plugins/example/langs/en.js create mode 100644 application/media/js/tiny_mce/plugins/example/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/fullpage/css/fullpage.css create mode 100644 application/media/js/tiny_mce/plugins/fullpage/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/fullpage/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/fullpage/fullpage.htm create mode 100644 application/media/js/tiny_mce/plugins/fullpage/js/fullpage.js create mode 100644 application/media/js/tiny_mce/plugins/fullpage/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/fullscreen/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/fullscreen/fullscreen.htm create mode 100644 application/media/js/tiny_mce/plugins/iespell/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/iespell/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css create mode 100644 application/media/js/tiny_mce/plugins/inlinepopups/template.htm create mode 100644 application/media/js/tiny_mce/plugins/insertdatetime/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/insertdatetime/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/layer/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/layer/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/legacyoutput/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/legacyoutput/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/media/css/content.css create mode 100644 application/media/js/tiny_mce/plugins/media/css/media.css create mode 100644 application/media/js/tiny_mce/plugins/media/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/media/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/media/img/flash.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/flv_player.swf create mode 100644 application/media/js/tiny_mce/plugins/media/img/quicktime.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/realmedia.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/shockwave.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/trans.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/video.gif create mode 100644 application/media/js/tiny_mce/plugins/media/img/windowsmedia.gif create mode 100644 application/media/js/tiny_mce/plugins/media/js/embed.js create mode 100644 application/media/js/tiny_mce/plugins/media/js/media.js create mode 100644 application/media/js/tiny_mce/plugins/media/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/media/media.htm create mode 100644 application/media/js/tiny_mce/plugins/nonbreaking/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/nonbreaking/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/noneditable/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/noneditable/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/pagebreak/css/content.css create mode 100644 application/media/js/tiny_mce/plugins/pagebreak/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/pagebreak/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/pagebreak/img/pagebreak.gif create mode 100644 application/media/js/tiny_mce/plugins/pagebreak/img/trans.gif create mode 100644 application/media/js/tiny_mce/plugins/paste/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/paste/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/paste/js/pastetext.js create mode 100644 application/media/js/tiny_mce/plugins/paste/js/pasteword.js create mode 100644 application/media/js/tiny_mce/plugins/paste/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/paste/pastetext.htm create mode 100644 application/media/js/tiny_mce/plugins/paste/pasteword.htm create mode 100644 application/media/js/tiny_mce/plugins/preview/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/preview/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/preview/example.html create mode 100644 application/media/js/tiny_mce/plugins/preview/jscripts/embed.js create mode 100644 application/media/js/tiny_mce/plugins/preview/preview.html create mode 100644 application/media/js/tiny_mce/plugins/print/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/print/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/save/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/save/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/css/searchreplace.css create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/js/searchreplace.js create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/searchreplace/searchreplace.htm create mode 100644 application/media/js/tiny_mce/plugins/spellchecker/css/content.css create mode 100644 application/media/js/tiny_mce/plugins/spellchecker/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/spellchecker/img/wline.gif create mode 100644 application/media/js/tiny_mce/plugins/style/css/props.css create mode 100644 application/media/js/tiny_mce/plugins/style/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/style/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/style/js/props.js create mode 100644 application/media/js/tiny_mce/plugins/style/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/style/props.htm create mode 100644 application/media/js/tiny_mce/plugins/tabfocus/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/tabfocus/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/table/cell.htm create mode 100644 application/media/js/tiny_mce/plugins/table/css/cell.css create mode 100644 application/media/js/tiny_mce/plugins/table/css/row.css create mode 100644 application/media/js/tiny_mce/plugins/table/css/table.css create mode 100644 application/media/js/tiny_mce/plugins/table/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/table/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/table/js/cell.js create mode 100644 application/media/js/tiny_mce/plugins/table/js/merge_cells.js create mode 100644 application/media/js/tiny_mce/plugins/table/js/row.js create mode 100644 application/media/js/tiny_mce/plugins/table/js/table.js create mode 100644 application/media/js/tiny_mce/plugins/table/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/table/merge_cells.htm create mode 100644 application/media/js/tiny_mce/plugins/table/row.htm create mode 100644 application/media/js/tiny_mce/plugins/table/table.htm create mode 100644 application/media/js/tiny_mce/plugins/template/blank.htm create mode 100644 application/media/js/tiny_mce/plugins/template/css/template.css create mode 100644 application/media/js/tiny_mce/plugins/template/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/template/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/template/js/template.js create mode 100644 application/media/js/tiny_mce/plugins/template/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/plugins/template/template.htm create mode 100644 application/media/js/tiny_mce/plugins/visualchars/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/visualchars/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/wordcount/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/wordcount/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/abbr.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/acronym.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/attributes.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/cite.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/css/attributes.css create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/css/popup.css create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/del.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/editor_plugin.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/editor_plugin_src.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/ins.htm create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/abbr.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/acronym.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/attributes.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/cite.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/del.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/element_common.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/js/ins.js create mode 100644 application/media/js/tiny_mce/plugins/xhtmlxtras/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/themes/advanced/about.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/anchor.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/charmap.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/color_picker.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/editor_template.js create mode 100644 application/media/js/tiny_mce/themes/advanced/editor_template_src.js create mode 100644 application/media/js/tiny_mce/themes/advanced/image.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/img/colorpicker.jpg create mode 100644 application/media/js/tiny_mce/themes/advanced/img/icons.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/js/about.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/anchor.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/charmap.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/color_picker.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/image.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/link.js create mode 100644 application/media/js/tiny_mce/themes/advanced/js/source_editor.js create mode 100644 application/media/js/tiny_mce/themes/advanced/langs/en.js create mode 100644 application/media/js/tiny_mce/themes/advanced/langs/en_dlg.js create mode 100644 application/media/js/tiny_mce/themes/advanced/link.htm create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/content.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/dialog.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/buttons.png create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/items.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/menu_check.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/progress.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/img/tabs.gif create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/default/ui.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/content.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/dialog.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/ui.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/ui_black.css create mode 100644 application/media/js/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css create mode 100644 application/media/js/tiny_mce/themes/advanced/source_editor.htm create mode 100644 application/media/js/tiny_mce/themes/simple/editor_template.js create mode 100644 application/media/js/tiny_mce/themes/simple/editor_template_src.js create mode 100644 application/media/js/tiny_mce/themes/simple/img/icons.gif create mode 100644 application/media/js/tiny_mce/themes/simple/langs/en.js create mode 100644 application/media/js/tiny_mce/themes/simple/skins/default/content.css create mode 100644 application/media/js/tiny_mce/themes/simple/skins/default/ui.css create mode 100644 application/media/js/tiny_mce/themes/simple/skins/o2k7/content.css create mode 100644 application/media/js/tiny_mce/themes/simple/skins/o2k7/img/button_bg.png create mode 100644 application/media/js/tiny_mce/themes/simple/skins/o2k7/ui.css create mode 100644 application/media/js/tiny_mce/tiny_mce.js create mode 100644 application/media/js/tiny_mce/tiny_mce_popup.js create mode 100644 application/media/js/tiny_mce/tiny_mce_src.js create mode 100644 application/media/js/tiny_mce/utils/editable_selects.js create mode 100644 application/media/js/tiny_mce/utils/form_utils.js create mode 100644 application/media/js/tiny_mce/utils/mctabs.js create mode 100644 application/media/js/tiny_mce/utils/validate.js create mode 100644 application/media/js/yaml/yaml-focusfix.js create mode 100644 application/media/site/1/img/logo-small.png create mode 100644 application/media/theme/yaml/css/base.css create mode 100644 application/media/theme/yaml/css/content.css create mode 100644 application/media/theme/yaml/css/images/bg_body.gif create mode 100644 application/media/theme/yaml/css/images/bg_dotted.png create mode 100644 application/media/theme/yaml/css/images/bg_head.png create mode 100644 application/media/theme/yaml/css/images/bg_logo.png create mode 100644 application/media/theme/yaml/css/images/bg_main_bottom.png create mode 100644 application/media/theme/yaml/css/images/bg_main_top.png create mode 100644 application/media/theme/yaml/css/navigation/images/bg_hnav1.png create mode 100644 application/media/theme/yaml/css/navigation/images/bg_hnav1_hover.png create mode 100644 application/media/theme/yaml/css/navigation/images/bg_hnav2_hover.png create mode 100644 application/media/theme/yaml/css/navigation/nav_buttons.css create mode 100644 application/media/theme/yaml/css/page.css create mode 100644 application/media/theme/yaml/css/print/print_100_draft.css create mode 100644 application/media/theme/yaml/css/screen/basemod.css create mode 100644 application/media/theme/yaml/css/screen/contentmod.css create mode 100644 application/messages/.htaccess create mode 100644 application/views/.htaccess create mode 100644 application/views/account/user/edit.php create mode 100644 application/views/account/user/resetpassword.php create mode 100644 application/views/errors/404.php create mode 100644 application/views/errors/501.php create mode 100644 application/views/login.php create mode 100644 application/views/login_reset.php create mode 100644 application/views/login_reset_sent.php create mode 100644 application/views/module/admin/method_add.php create mode 100644 application/views/module/admin/method_detail_body.php create mode 100644 application/views/module/admin/method_detail_foot.php create mode 100644 application/views/module/admin/method_detail_head.php create mode 100644 application/views/register.php create mode 100644 application/views/setup/admin/edit.php create mode 100644 application/views/setup/admin/edit/module/body.php create mode 100644 application/views/setup/admin/edit/module/foot.php create mode 100644 application/views/setup/admin/edit/module/head.php create mode 100644 application/views/setup/admin/module/body.php create mode 100644 application/views/setup/admin/module/foot.php create mode 100644 application/views/setup/admin/module/head.php create mode 100644 application/views/table/list_body.php create mode 100644 application/views/table/list_foot.php create mode 100644 application/views/table/list_head.php create mode 100644 application/views/table/list_xtra.php create mode 100644 application/views/table/select_body.php create mode 100644 application/views/table/select_foot.php create mode 100644 application/views/table/select_head.php create mode 100644 application/views/table/select_xtra.php create mode 100644 application/views/template.php create mode 100644 application/views/theme/yaml/page.php create mode 100644 application/views/welcome/reseller.php create mode 100644 application/views/welcome/user.php create mode 100644 includes/kohana/.travis.yml create mode 100644 includes/kohana/LICENSE.md create mode 100644 includes/kohana/README.md create mode 100644 includes/kohana/composer.json create mode 100644 includes/kohana/composer.lock create mode 100644 includes/kohana/composer.phar create mode 100644 includes/kohana/install.php create mode 100644 includes/kohana/modules/auth/README.md create mode 100644 includes/kohana/modules/auth/classes/Auth.php create mode 100644 includes/kohana/modules/auth/classes/Auth/File.php create mode 100644 includes/kohana/modules/auth/classes/Kohana/Auth.php create mode 100644 includes/kohana/modules/auth/classes/Kohana/Auth/File.php create mode 100644 includes/kohana/modules/auth/config/auth.php create mode 100644 includes/kohana/modules/auth/config/userguide.php create mode 100644 includes/kohana/modules/auth/guide/auth/config.md create mode 100644 includes/kohana/modules/auth/guide/auth/driver/develop.md create mode 100644 includes/kohana/modules/auth/guide/auth/driver/file.md create mode 100644 includes/kohana/modules/auth/guide/auth/index.md create mode 100644 includes/kohana/modules/auth/guide/auth/login.md create mode 100644 includes/kohana/modules/auth/guide/auth/menu.md create mode 100644 includes/kohana/modules/cache/README.md create mode 100644 includes/kohana/modules/cache/classes/Cache.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Apc.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Arithmetic.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Exception.php create mode 100644 includes/kohana/modules/cache/classes/Cache/File.php create mode 100644 includes/kohana/modules/cache/classes/Cache/GarbageCollect.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Memcache.php create mode 100644 includes/kohana/modules/cache/classes/Cache/MemcacheTag.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Sqlite.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Tagging.php create mode 100644 includes/kohana/modules/cache/classes/Cache/Wincache.php create mode 100644 includes/kohana/modules/cache/classes/HTTP/Cache.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Apc.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Arithmetic.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Exception.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/File.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/GarbageCollect.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Memcache.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/MemcacheTag.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Sqlite.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Tagging.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/Cache/Wincache.php create mode 100644 includes/kohana/modules/cache/classes/Kohana/HTTP/Cache.php create mode 100644 includes/kohana/modules/cache/config/cache.php create mode 100644 includes/kohana/modules/cache/config/userguide.php create mode 100644 includes/kohana/modules/cache/guide/cache.usage.md create mode 100644 includes/kohana/modules/cache/guide/cache/config.md create mode 100644 includes/kohana/modules/cache/guide/cache/examples.md create mode 100644 includes/kohana/modules/cache/guide/cache/index.md create mode 100644 includes/kohana/modules/cache/guide/cache/menu.md create mode 100644 includes/kohana/modules/cache/guide/cache/usage.md create mode 100644 includes/kohana/modules/cache/tests/cache/CacheBasicMethodsTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/CacheTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/FileTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/SqliteTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/WincacheTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/arithmetic/ApcTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/arithmetic/CacheArithmeticMethods.php create mode 100644 includes/kohana/modules/cache/tests/cache/arithmetic/MemcacheTest.php create mode 100644 includes/kohana/modules/cache/tests/cache/request/client/CacheTest.php create mode 100644 includes/kohana/modules/cache/tests/phpunit.xml create mode 100644 includes/kohana/modules/codebench/classes/Bench/ArrCallback.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/AutoLinkEmails.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/DateSpan.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/ExplodeLimit.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/GruberURL.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/LtrimDigits.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/MDDoBaseURL.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/MDDoImageURL.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/MDDoIncludeViews.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/StripNullBytes.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/Transliterate.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/URLSite.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/UserFuncArray.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/ValidColor.php create mode 100644 includes/kohana/modules/codebench/classes/Bench/ValidURL.php create mode 100644 includes/kohana/modules/codebench/classes/Codebench.php create mode 100644 includes/kohana/modules/codebench/classes/Controller/Codebench.php create mode 100644 includes/kohana/modules/codebench/classes/Kohana/Codebench.php create mode 100644 includes/kohana/modules/codebench/config/codebench.php create mode 100644 includes/kohana/modules/codebench/config/userguide.php create mode 100644 includes/kohana/modules/codebench/guide/codebench/index.md create mode 100644 includes/kohana/modules/codebench/guide/codebench/menu.md create mode 100644 includes/kohana/modules/codebench/init.php create mode 100644 includes/kohana/modules/codebench/media/guide/codebench/codebench_screenshot1.png create mode 100644 includes/kohana/modules/codebench/media/guide/codebench/codebench_screenshot2.png create mode 100644 includes/kohana/modules/codebench/views/codebench.php create mode 100644 includes/kohana/modules/cron/README.markdown create mode 100644 includes/kohana/modules/cron/classes/Cron.php create mode 100644 includes/kohana/modules/cron/classes/Kohana/Cron.php create mode 100644 includes/kohana/modules/cron/config/cron.php create mode 100644 includes/kohana/modules/cron/run.php create mode 100644 includes/kohana/modules/cron/tests/kohana/cron.php create mode 100644 includes/kohana/modules/database/classes/Config/Database.php create mode 100644 includes/kohana/modules/database/classes/Config/Database/Reader.php create mode 100644 includes/kohana/modules/database/classes/Config/Database/Writer.php create mode 100644 includes/kohana/modules/database/classes/DB.php create mode 100644 includes/kohana/modules/database/classes/Database.php create mode 100644 includes/kohana/modules/database/classes/Database/Exception.php create mode 100644 includes/kohana/modules/database/classes/Database/Expression.php create mode 100644 includes/kohana/modules/database/classes/Database/MySQL.php create mode 100644 includes/kohana/modules/database/classes/Database/MySQL/Result.php create mode 100644 includes/kohana/modules/database/classes/Database/PDO.php create mode 100644 includes/kohana/modules/database/classes/Database/Query.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Delete.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Insert.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Join.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Select.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Update.php create mode 100644 includes/kohana/modules/database/classes/Database/Query/Builder/Where.php create mode 100644 includes/kohana/modules/database/classes/Database/Result.php create mode 100644 includes/kohana/modules/database/classes/Database/Result/Cached.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Config/Database.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Config/Database/Reader.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Config/Database/Writer.php create mode 100644 includes/kohana/modules/database/classes/Kohana/DB.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Exception.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Expression.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/MySQL.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/MySQL/Result.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/PDO.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Delete.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Insert.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Join.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Select.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Update.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Query/Builder/Where.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Result.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Database/Result/Cached.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Model/Database.php create mode 100644 includes/kohana/modules/database/classes/Kohana/Session/Database.php create mode 100644 includes/kohana/modules/database/classes/Model/Database.php create mode 100644 includes/kohana/modules/database/classes/Session/Database.php create mode 100644 includes/kohana/modules/database/config/database.php create mode 100644 includes/kohana/modules/database/config/session.php create mode 100644 includes/kohana/modules/database/config/userguide.php create mode 100644 includes/kohana/modules/database/guide/database/config.md create mode 100644 includes/kohana/modules/database/guide/database/examples.md create mode 100644 includes/kohana/modules/database/guide/database/index.md create mode 100644 includes/kohana/modules/database/guide/database/menu.md create mode 100644 includes/kohana/modules/database/guide/database/query.md create mode 100644 includes/kohana/modules/database/guide/database/query/builder.md create mode 100644 includes/kohana/modules/database/guide/database/query/parameterized.md create mode 100644 includes/kohana/modules/database/guide/database/results.md create mode 100644 includes/kohana/modules/image/README.markdown create mode 100644 includes/kohana/modules/image/classes/Image.php create mode 100644 includes/kohana/modules/image/classes/Image/GD.php create mode 100644 includes/kohana/modules/image/classes/Image/Imagick.php create mode 100644 includes/kohana/modules/image/classes/Kohana/Image.php create mode 100644 includes/kohana/modules/image/classes/Kohana/Image/GD.php create mode 100644 includes/kohana/modules/image/classes/Kohana/Image/Imagick.php create mode 100644 includes/kohana/modules/image/config/userguide.php create mode 100644 includes/kohana/modules/image/guide/image/examples.md create mode 100644 includes/kohana/modules/image/guide/image/examples/crop.md create mode 100644 includes/kohana/modules/image/guide/image/examples/dynamic.md create mode 100644 includes/kohana/modules/image/guide/image/examples/upload.md create mode 100644 includes/kohana/modules/image/guide/image/index.md create mode 100644 includes/kohana/modules/image/guide/image/menu.md create mode 100644 includes/kohana/modules/image/guide/image/using.md create mode 100644 includes/kohana/modules/image/media/guide/image/Thumbs.db create mode 100644 includes/kohana/modules/image/media/guide/image/crop_form.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/crop_orig.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/crop_result.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/dynamic-400.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/dynamic-600.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/upload_form.jpg create mode 100644 includes/kohana/modules/image/media/guide/image/upload_result.jpg create mode 100644 includes/kohana/modules/image/tests/kohana/ImageTest.php create mode 100644 includes/kohana/modules/image/tests/test_data/test_image create mode 100644 includes/kohana/modules/khemail/README.markdown create mode 100644 includes/kohana/modules/khemail/classes/Email.php create mode 100644 includes/kohana/modules/khemail/config/email.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/CHANGES create mode 100644 includes/kohana/modules/khemail/vendor/swift/LICENSE create mode 100644 includes/kohana/modules/khemail/vendor/swift/README create mode 100644 includes/kohana/modules/khemail/vendor/swift/VERSION create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Attachment.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/ByteStream/AbstractFilterableInputStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/ByteStream/ArrayByteStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/ByteStream/FileByteStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReader/GenericFixedWidthReader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReader/UsAsciiReader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReader/Utf8Reader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReaderFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterReaderFactory/SimpleCharacterReaderFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterStream/ArrayCharacterStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/CharacterStream/NgCharacterStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/DependencyContainer.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/DependencyException.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/EmbeddedFile.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Encoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Encoder/Base64Encoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Encoder/QpEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Encoder/Rfc2231Encoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Encoding.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/CommandEvent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/CommandListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/Event.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/EventDispatcher.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/EventListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/EventObject.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/ResponseEvent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/ResponseListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/SendEvent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/SendListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/SimpleEventDispatcher.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/TransportChangeEvent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/TransportChangeListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/TransportExceptionEvent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Events/TransportExceptionListener.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/FailoverTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/FileStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Filterable.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Image.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/InputByteStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/IoException.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache/ArrayKeyCache.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache/DiskKeyCache.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache/KeyCacheInputStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache/NullKeyCache.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/KeyCache/SimpleKeyCacheInputStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/LoadBalancedTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/MailTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mailer.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mailer/ArrayRecipientIterator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mailer/RecipientIterator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Message.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Attachment.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/CharsetObserver.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/ContentEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/ContentEncoder/Base64ContentEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/ContentEncoder/PlainContentEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/ContentEncoder/QpContentEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/EmbeddedFile.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/EncodingObserver.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Header.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/HeaderEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/HeaderEncoder/Base64HeaderEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/HeaderEncoder/QpHeaderEncoder.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/HeaderFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/HeaderSet.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/AbstractHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/DateHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/IdentificationHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/MailboxHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/ParameterizedHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/PathHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Headers/UnstructuredHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/Message.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/MimeEntity.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/MimePart.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/ParameterizedHeader.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/SimpleHeaderFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/SimpleHeaderSet.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/SimpleMessage.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Mime/SimpleMimeEntity.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/MimePart.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/OutputByteStream.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/AntiFloodPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/BandwidthMonitorPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Decorator/Replacements.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/DecoratorPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Logger.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/LoggerPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Loggers/ArrayLogger.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Loggers/EchoLogger.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Pop/Pop3Connection.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Pop/Pop3Exception.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/PopBeforeSmtpPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Reporter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/ReporterPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Reporters/HitReporter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Reporters/HtmlReporter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Sleeper.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/ThrottlerPlugin.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Plugins/Timer.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Preferences.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/ReplacementFilterFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/RfcComplianceException.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/SendmailTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/SmtpTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/StreamFilter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/StreamFilters/ByteArrayReplacementFilter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/StreamFilters/StringReplacementFilter.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/StreamFilters/StringReplacementFilterFactory.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/SwiftException.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/AbstractSmtpTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/Auth/CramMd5Authenticator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/Auth/LoginAuthenticator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/Auth/PlainAuthenticator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/AuthHandler.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/Esmtp/Authenticator.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/EsmtpHandler.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/EsmtpTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/FailoverTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/IoBuffer.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/LoadBalancedTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/MailInvoker.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/MailTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/SendmailTransport.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/SimpleMailInvoker.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/SmtpAgent.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/Transport/StreamBuffer.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/classes/Swift/TransportException.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/dependency_maps/cache_deps.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/dependency_maps/mime_deps.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/dependency_maps/transport_deps.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/mime_types.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/preferences.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/swift_init.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/swift_required.php create mode 100644 includes/kohana/modules/khemail/vendor/swift/swift_required_pear.php create mode 100644 includes/kohana/modules/minion/README.md create mode 100644 includes/kohana/modules/minion/classes/Kohana/Minion/CLI.php create mode 100644 includes/kohana/modules/minion/classes/Kohana/Minion/Exception.php create mode 100644 includes/kohana/modules/minion/classes/Kohana/Minion/Exception/InvalidTask.php create mode 100644 includes/kohana/modules/minion/classes/Kohana/Minion/Task.php create mode 100644 includes/kohana/modules/minion/classes/Minion/CLI.php create mode 100644 includes/kohana/modules/minion/classes/Minion/Exception.php create mode 100644 includes/kohana/modules/minion/classes/Minion/Exception/InvalidTask.php create mode 100644 includes/kohana/modules/minion/classes/Minion/Task.php create mode 100644 includes/kohana/modules/minion/classes/Task/Help.php create mode 100644 includes/kohana/modules/minion/config/userguide.php create mode 100644 includes/kohana/modules/minion/guide/minion/index.md create mode 100644 includes/kohana/modules/minion/guide/minion/menu.md create mode 100644 includes/kohana/modules/minion/guide/minion/setup.md create mode 100644 includes/kohana/modules/minion/guide/minion/tasks.md create mode 100644 includes/kohana/modules/minion/messages/validation.php create mode 100644 includes/kohana/modules/minion/minion create mode 100644 includes/kohana/modules/minion/miniond create mode 100644 includes/kohana/modules/minion/tests/minion/task.php create mode 100644 includes/kohana/modules/minion/views/minion/error/validation.php create mode 100644 includes/kohana/modules/minion/views/minion/help/error.php create mode 100644 includes/kohana/modules/minion/views/minion/help/list.php create mode 100644 includes/kohana/modules/minion/views/minion/help/task.php create mode 100644 includes/kohana/modules/orm/auth-schema-mysql.sql create mode 100644 includes/kohana/modules/orm/auth-schema-postgresql.sql create mode 100644 includes/kohana/modules/orm/classes/Auth/ORM.php create mode 100644 includes/kohana/modules/orm/classes/Kohana/Auth/ORM.php create mode 100644 includes/kohana/modules/orm/classes/Kohana/ORM.php create mode 100644 includes/kohana/modules/orm/classes/Kohana/ORM/Validation/Exception.php create mode 100644 includes/kohana/modules/orm/classes/Model/Auth/Role.php create mode 100644 includes/kohana/modules/orm/classes/Model/Auth/User.php create mode 100644 includes/kohana/modules/orm/classes/Model/Auth/User/Token.php create mode 100644 includes/kohana/modules/orm/classes/Model/Role.php create mode 100644 includes/kohana/modules/orm/classes/Model/User.php create mode 100644 includes/kohana/modules/orm/classes/Model/User/Token.php create mode 100644 includes/kohana/modules/orm/classes/ORM.php create mode 100644 includes/kohana/modules/orm/classes/ORM/Validation/Exception.php create mode 100644 includes/kohana/modules/orm/config/userguide.php create mode 100644 includes/kohana/modules/orm/guide/orm/examples.md create mode 100644 includes/kohana/modules/orm/guide/orm/examples/simple.md create mode 100644 includes/kohana/modules/orm/guide/orm/examples/validation.md create mode 100644 includes/kohana/modules/orm/guide/orm/filters.md create mode 100644 includes/kohana/modules/orm/guide/orm/index.md create mode 100644 includes/kohana/modules/orm/guide/orm/menu.md create mode 100644 includes/kohana/modules/orm/guide/orm/models.md create mode 100644 includes/kohana/modules/orm/guide/orm/relationships.md create mode 100644 includes/kohana/modules/orm/guide/orm/tutorials.md create mode 100644 includes/kohana/modules/orm/guide/orm/upgrading.md create mode 100644 includes/kohana/modules/orm/guide/orm/using.md create mode 100644 includes/kohana/modules/orm/guide/orm/validation.md create mode 100644 includes/kohana/modules/pagination/.gitignore create mode 100644 includes/kohana/modules/pagination/classes/Kohana/Pagination.php create mode 100644 includes/kohana/modules/pagination/classes/Pagination.php create mode 100644 includes/kohana/modules/pagination/config/pagination.php create mode 100644 includes/kohana/modules/pagination/config/userguide.php create mode 100644 includes/kohana/modules/pagination/guide/pagination/config.md create mode 100644 includes/kohana/modules/pagination/guide/pagination/examples.md create mode 100644 includes/kohana/modules/pagination/guide/pagination/index.md create mode 100644 includes/kohana/modules/pagination/guide/pagination/menu.md create mode 100644 includes/kohana/modules/pagination/guide/pagination/usage.md create mode 100644 includes/kohana/modules/pagination/views/pagination/basic.php create mode 100644 includes/kohana/modules/pagination/views/pagination/floating.php create mode 100644 includes/kohana/modules/simplehtmldom/classes/simple_html_dom.php create mode 100644 includes/kohana/modules/unittest/README.markdown create mode 100644 includes/kohana/modules/unittest/bootstrap.php create mode 100644 includes/kohana/modules/unittest/bootstrap_all_modules.php create mode 100644 includes/kohana/modules/unittest/classes/Kohana/Unittest/Database/TestCase.php create mode 100644 includes/kohana/modules/unittest/classes/Kohana/Unittest/Helpers.php create mode 100644 includes/kohana/modules/unittest/classes/Kohana/Unittest/TestCase.php create mode 100644 includes/kohana/modules/unittest/classes/Kohana/Unittest/TestSuite.php create mode 100644 includes/kohana/modules/unittest/classes/Kohana/Unittest/Tests.php create mode 100644 includes/kohana/modules/unittest/classes/Unittest/Database/TestCase.php create mode 100644 includes/kohana/modules/unittest/classes/Unittest/Helpers.php create mode 100644 includes/kohana/modules/unittest/classes/Unittest/TestCase.php create mode 100644 includes/kohana/modules/unittest/classes/Unittest/TestSuite.php create mode 100644 includes/kohana/modules/unittest/classes/Unittest/Tests.php create mode 100644 includes/kohana/modules/unittest/config/unittest.php create mode 100644 includes/kohana/modules/unittest/config/userguide.php create mode 100644 includes/kohana/modules/unittest/example.phpunit.xml create mode 100644 includes/kohana/modules/unittest/guide/unittest/index.md create mode 100644 includes/kohana/modules/unittest/guide/unittest/menu.md create mode 100644 includes/kohana/modules/unittest/guide/unittest/mockobjects.md create mode 100644 includes/kohana/modules/unittest/guide/unittest/testing.md create mode 100644 includes/kohana/modules/unittest/guide/unittest/testing_workflows.md create mode 100644 includes/kohana/modules/unittest/guide/unittest/troubleshooting.md create mode 100644 includes/kohana/modules/unittest/tests.php create mode 100644 includes/kohana/modules/userguide/README.md create mode 100644 includes/kohana/modules/userguide/classes/Controller/Userguide.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Class.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Markdown.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Method.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Method/Param.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Missing.php create mode 100644 includes/kohana/modules/userguide/classes/Kodoc/Property.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Controller/Userguide.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Class.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Markdown.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Method.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Method/Param.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Missing.php create mode 100644 includes/kohana/modules/userguide/classes/Kohana/Kodoc/Property.php create mode 100644 includes/kohana/modules/userguide/config/userguide.php create mode 100644 includes/kohana/modules/userguide/guide/de-de/about.conventions.md create mode 100644 includes/kohana/modules/userguide/guide/de-de/about.kohana.md create mode 100644 includes/kohana/modules/userguide/guide/developers.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/adding.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/config.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/contributing.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/index.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/markdown.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/menu.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/modules.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/using.md create mode 100644 includes/kohana/modules/userguide/guide/userguide/works.md create mode 100644 includes/kohana/modules/userguide/init.php create mode 100644 includes/kohana/modules/userguide/media/guide/css/api.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/kodoc.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/print.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/screen.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/shCore.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/shThemeDefault.css create mode 100644 includes/kohana/modules/userguide/media/guide/css/shThemeKodoc.css create mode 100644 includes/kohana/modules/userguide/media/guide/img/arrows.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/breadcrumbs.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/content.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/ext_link.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/h2_line.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/h3_line.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/header.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/kohana.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/lightbulb_48.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/lines.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/orange-tab.png create mode 100644 includes/kohana/modules/userguide/media/guide/img/wrapper.png create mode 100644 includes/kohana/modules/userguide/media/guide/js/jquery.cookie.js create mode 100644 includes/kohana/modules/userguide/media/guide/js/jquery.min.js create mode 100644 includes/kohana/modules/userguide/media/guide/js/kodoc.js create mode 100644 includes/kohana/modules/userguide/media/guide/js/shBrushPhp.js create mode 100644 includes/kohana/modules/userguide/media/guide/js/shCore.js create mode 100644 includes/kohana/modules/userguide/media/guide/js/sizzle.js create mode 100644 includes/kohana/modules/userguide/media/guide/userguide/contrib-github-edit.png create mode 100644 includes/kohana/modules/userguide/media/guide/userguide/contrib-github-fork.png create mode 100644 includes/kohana/modules/userguide/media/guide/userguide/contrib-github-pull.png create mode 100644 includes/kohana/modules/userguide/messages/userguide.php create mode 100644 includes/kohana/modules/userguide/tests/KodocTest.php create mode 100644 includes/kohana/modules/userguide/tests/userguide/ControllerTest.php create mode 100644 includes/kohana/modules/userguide/vendor/markdown/License.text create mode 100644 includes/kohana/modules/userguide/vendor/markdown/markdown.php create mode 100644 includes/kohana/modules/userguide/views/userguide/api/class.php create mode 100644 includes/kohana/modules/userguide/views/userguide/api/menu.php create mode 100644 includes/kohana/modules/userguide/views/userguide/api/method.php create mode 100644 includes/kohana/modules/userguide/views/userguide/api/tags.php create mode 100644 includes/kohana/modules/userguide/views/userguide/api/toc.php create mode 100644 includes/kohana/modules/userguide/views/userguide/error.php create mode 100644 includes/kohana/modules/userguide/views/userguide/examples/error.php create mode 100644 includes/kohana/modules/userguide/views/userguide/examples/hello_world_error.php create mode 100644 includes/kohana/modules/userguide/views/userguide/index.php create mode 100644 includes/kohana/modules/userguide/views/userguide/menu.php create mode 100644 includes/kohana/modules/userguide/views/userguide/page-toc.php create mode 100644 includes/kohana/modules/userguide/views/userguide/template.php create mode 100644 includes/kohana/modules/xml/LICENSE create mode 100644 includes/kohana/modules/xml/README.md create mode 100644 includes/kohana/modules/xml/classes/xml.php create mode 100644 includes/kohana/modules/xml/classes/xml/core.php create mode 100644 includes/kohana/modules/xml/classes/xml/driver/atom.php create mode 100644 includes/kohana/modules/xml/classes/xml/driver/rss2.php create mode 100644 includes/kohana/modules/xml/classes/xml/driver/xrds.php create mode 100644 includes/kohana/modules/xml/classes/xml/meta.php create mode 100644 includes/kohana/modules/xml/classes/xml/meta/core.php create mode 100644 includes/kohana/system/classes/Arr.php create mode 100644 includes/kohana/system/classes/Config.php create mode 100644 includes/kohana/system/classes/Config/File.php create mode 100644 includes/kohana/system/classes/Config/Group.php create mode 100644 includes/kohana/system/classes/Controller.php create mode 100644 includes/kohana/system/classes/Controller/Template.php create mode 100644 includes/kohana/system/classes/Cookie.php create mode 100644 includes/kohana/system/classes/Date.php create mode 100644 includes/kohana/system/classes/Debug.php create mode 100644 includes/kohana/system/classes/Encrypt.php create mode 100644 includes/kohana/system/classes/Feed.php create mode 100644 includes/kohana/system/classes/File.php create mode 100644 includes/kohana/system/classes/Form.php create mode 100644 includes/kohana/system/classes/Fragment.php create mode 100644 includes/kohana/system/classes/HTML.php create mode 100644 includes/kohana/system/classes/HTTP.php create mode 100644 includes/kohana/system/classes/HTTP/Exception.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/300.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/301.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/302.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/303.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/304.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/305.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/307.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/400.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/401.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/402.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/403.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/404.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/405.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/406.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/407.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/408.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/409.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/410.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/411.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/412.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/413.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/414.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/415.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/416.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/417.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/500.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/501.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/502.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/503.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/504.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/505.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/Expected.php create mode 100644 includes/kohana/system/classes/HTTP/Exception/Redirect.php create mode 100644 includes/kohana/system/classes/HTTP/Header.php create mode 100644 includes/kohana/system/classes/HTTP/Message.php create mode 100644 includes/kohana/system/classes/HTTP/Request.php create mode 100644 includes/kohana/system/classes/HTTP/Response.php create mode 100644 includes/kohana/system/classes/I18n.php create mode 100644 includes/kohana/system/classes/Inflector.php create mode 100644 includes/kohana/system/classes/Kohana.php create mode 100644 includes/kohana/system/classes/Kohana/Arr.php create mode 100644 includes/kohana/system/classes/Kohana/Config.php create mode 100644 includes/kohana/system/classes/Kohana/Config/File.php create mode 100644 includes/kohana/system/classes/Kohana/Config/File/Reader.php create mode 100644 includes/kohana/system/classes/Kohana/Config/Group.php create mode 100644 includes/kohana/system/classes/Kohana/Config/Reader.php create mode 100644 includes/kohana/system/classes/Kohana/Config/Source.php create mode 100644 includes/kohana/system/classes/Kohana/Config/Writer.php create mode 100644 includes/kohana/system/classes/Kohana/Controller.php create mode 100644 includes/kohana/system/classes/Kohana/Controller/Template.php create mode 100644 includes/kohana/system/classes/Kohana/Cookie.php create mode 100644 includes/kohana/system/classes/Kohana/Core.php create mode 100644 includes/kohana/system/classes/Kohana/Date.php create mode 100644 includes/kohana/system/classes/Kohana/Debug.php create mode 100644 includes/kohana/system/classes/Kohana/Encrypt.php create mode 100644 includes/kohana/system/classes/Kohana/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Feed.php create mode 100644 includes/kohana/system/classes/Kohana/File.php create mode 100644 includes/kohana/system/classes/Kohana/Form.php create mode 100644 includes/kohana/system/classes/Kohana/Fragment.php create mode 100644 includes/kohana/system/classes/Kohana/HTML.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/300.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/301.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/302.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/303.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/304.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/305.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/307.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/400.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/401.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/402.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/403.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/404.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/405.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/406.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/407.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/408.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/409.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/410.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/411.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/412.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/413.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/414.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/415.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/416.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/417.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/500.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/501.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/502.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/503.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/504.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/505.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/Expected.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Exception/Redirect.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Header.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Message.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Request.php create mode 100644 includes/kohana/system/classes/Kohana/HTTP/Response.php create mode 100644 includes/kohana/system/classes/Kohana/I18n.php create mode 100644 includes/kohana/system/classes/Kohana/Inflector.php create mode 100644 includes/kohana/system/classes/Kohana/Kohana/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Log.php create mode 100644 includes/kohana/system/classes/Kohana/Log/File.php create mode 100644 includes/kohana/system/classes/Kohana/Log/StdErr.php create mode 100644 includes/kohana/system/classes/Kohana/Log/StdOut.php create mode 100644 includes/kohana/system/classes/Kohana/Log/Syslog.php create mode 100644 includes/kohana/system/classes/Kohana/Log/Writer.php create mode 100644 includes/kohana/system/classes/Kohana/Model.php create mode 100644 includes/kohana/system/classes/Kohana/Num.php create mode 100644 includes/kohana/system/classes/Kohana/Profiler.php create mode 100644 includes/kohana/system/classes/Kohana/Request.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/Curl.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/External.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/HTTP.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/Internal.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/Recursion/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Client/Stream.php create mode 100644 includes/kohana/system/classes/Kohana/Request/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Response.php create mode 100644 includes/kohana/system/classes/Kohana/Route.php create mode 100644 includes/kohana/system/classes/Kohana/Security.php create mode 100644 includes/kohana/system/classes/Kohana/Session.php create mode 100644 includes/kohana/system/classes/Kohana/Session/Cookie.php create mode 100644 includes/kohana/system/classes/Kohana/Session/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Session/Native.php create mode 100644 includes/kohana/system/classes/Kohana/Text.php create mode 100644 includes/kohana/system/classes/Kohana/URL.php create mode 100644 includes/kohana/system/classes/Kohana/UTF8.php create mode 100644 includes/kohana/system/classes/Kohana/UTF8/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/Upload.php create mode 100644 includes/kohana/system/classes/Kohana/Valid.php create mode 100644 includes/kohana/system/classes/Kohana/Validation.php create mode 100644 includes/kohana/system/classes/Kohana/Validation/Exception.php create mode 100644 includes/kohana/system/classes/Kohana/View.php create mode 100644 includes/kohana/system/classes/Kohana/View/Exception.php create mode 100644 includes/kohana/system/classes/Log.php create mode 100644 includes/kohana/system/classes/Log/File.php create mode 100644 includes/kohana/system/classes/Log/StdErr.php create mode 100644 includes/kohana/system/classes/Log/StdOut.php create mode 100644 includes/kohana/system/classes/Log/Syslog.php create mode 100644 includes/kohana/system/classes/Log/Writer.php create mode 100644 includes/kohana/system/classes/Model.php create mode 100644 includes/kohana/system/classes/Num.php create mode 100644 includes/kohana/system/classes/Profiler.php create mode 100644 includes/kohana/system/classes/Request.php create mode 100644 includes/kohana/system/classes/Request/Client.php create mode 100644 includes/kohana/system/classes/Request/Client/Curl.php create mode 100644 includes/kohana/system/classes/Request/Client/External.php create mode 100644 includes/kohana/system/classes/Request/Client/HTTP.php create mode 100644 includes/kohana/system/classes/Request/Client/Internal.php create mode 100644 includes/kohana/system/classes/Request/Client/Recursion/Exception.php create mode 100644 includes/kohana/system/classes/Request/Client/Stream.php create mode 100644 includes/kohana/system/classes/Request/Exception.php create mode 100644 includes/kohana/system/classes/Response.php create mode 100644 includes/kohana/system/classes/Route.php create mode 100644 includes/kohana/system/classes/Security.php create mode 100644 includes/kohana/system/classes/Session.php create mode 100644 includes/kohana/system/classes/Session/Cookie.php create mode 100644 includes/kohana/system/classes/Session/Exception.php create mode 100644 includes/kohana/system/classes/Session/Native.php create mode 100644 includes/kohana/system/classes/Text.php create mode 100644 includes/kohana/system/classes/URL.php create mode 100644 includes/kohana/system/classes/UTF8.php create mode 100644 includes/kohana/system/classes/UTF8/Exception.php create mode 100644 includes/kohana/system/classes/Upload.php create mode 100644 includes/kohana/system/classes/Valid.php create mode 100644 includes/kohana/system/classes/Validation.php create mode 100644 includes/kohana/system/classes/Validation/Exception.php create mode 100644 includes/kohana/system/classes/View.php create mode 100644 includes/kohana/system/classes/View/Exception.php create mode 100644 includes/kohana/system/config/credit_cards.php create mode 100644 includes/kohana/system/config/curl.php create mode 100644 includes/kohana/system/config/encrypt.php create mode 100644 includes/kohana/system/config/inflector.php create mode 100644 includes/kohana/system/config/mimes.php create mode 100644 includes/kohana/system/config/session.php create mode 100644 includes/kohana/system/config/user_agents.php create mode 100644 includes/kohana/system/config/userguide.php create mode 100644 includes/kohana/system/guide/kohana/autoloading.md create mode 100644 includes/kohana/system/guide/kohana/bootstrap.md create mode 100644 includes/kohana/system/guide/kohana/config.md create mode 100644 includes/kohana/system/guide/kohana/controllers.md create mode 100644 includes/kohana/system/guide/kohana/conventions.md create mode 100644 includes/kohana/system/guide/kohana/cookies.md create mode 100644 includes/kohana/system/guide/kohana/debugging.md create mode 100644 includes/kohana/system/guide/kohana/errors.md create mode 100644 includes/kohana/system/guide/kohana/extension.md create mode 100644 includes/kohana/system/guide/kohana/files.md create mode 100644 includes/kohana/system/guide/kohana/files/classes.md create mode 100644 includes/kohana/system/guide/kohana/files/config.md create mode 100644 includes/kohana/system/guide/kohana/files/i18n.md create mode 100644 includes/kohana/system/guide/kohana/files/messages.md create mode 100644 includes/kohana/system/guide/kohana/flow.md create mode 100644 includes/kohana/system/guide/kohana/fragments.md create mode 100644 includes/kohana/system/guide/kohana/helpers.md create mode 100644 includes/kohana/system/guide/kohana/index.md create mode 100644 includes/kohana/system/guide/kohana/install.md create mode 100644 includes/kohana/system/guide/kohana/menu.md create mode 100644 includes/kohana/system/guide/kohana/modules.md create mode 100644 includes/kohana/system/guide/kohana/mvc.md create mode 100644 includes/kohana/system/guide/kohana/mvc/controllers.md create mode 100644 includes/kohana/system/guide/kohana/mvc/models.md create mode 100644 includes/kohana/system/guide/kohana/mvc/views.md create mode 100644 includes/kohana/system/guide/kohana/profiling.md create mode 100644 includes/kohana/system/guide/kohana/requests.md create mode 100644 includes/kohana/system/guide/kohana/routing.md create mode 100644 includes/kohana/system/guide/kohana/security.md create mode 100644 includes/kohana/system/guide/kohana/security/cookies.md create mode 100644 includes/kohana/system/guide/kohana/security/database.md create mode 100644 includes/kohana/system/guide/kohana/security/deploying.md create mode 100644 includes/kohana/system/guide/kohana/security/encryption.md create mode 100644 includes/kohana/system/guide/kohana/security/validation.md create mode 100644 includes/kohana/system/guide/kohana/security/xss.md create mode 100644 includes/kohana/system/guide/kohana/sessions.md create mode 100644 includes/kohana/system/guide/kohana/tips.md create mode 100644 includes/kohana/system/guide/kohana/tutorials.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/clean-urls.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/error-pages.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/git.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/hello-world.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/library-kohana.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/sharing-kohana.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/simple-mvc.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/templates.md create mode 100644 includes/kohana/system/guide/kohana/tutorials/translation.md create mode 100644 includes/kohana/system/guide/kohana/upgrading.md create mode 100644 includes/kohana/system/i18n/en.php create mode 100644 includes/kohana/system/i18n/es.php create mode 100644 includes/kohana/system/i18n/fr.php create mode 100644 includes/kohana/system/media/guide/kohana/cascading_filesystem.png create mode 100644 includes/kohana/system/media/guide/kohana/hello_world_1.png create mode 100644 includes/kohana/system/media/guide/kohana/hello_world_2.png create mode 100644 includes/kohana/system/media/guide/kohana/hello_world_2_error.png create mode 100644 includes/kohana/system/media/guide/kohana/install.png create mode 100644 includes/kohana/system/media/guide/kohana/welcome.png create mode 100644 includes/kohana/system/messages/tests/validation/error_type_check.php create mode 100644 includes/kohana/system/messages/validation.php create mode 100644 includes/kohana/system/tests/kohana/ArrTest.php create mode 100644 includes/kohana/system/tests/kohana/Config/File/ReaderTest.php create mode 100644 includes/kohana/system/tests/kohana/Config/GroupTest.php create mode 100644 includes/kohana/system/tests/kohana/ConfigTest.php create mode 100644 includes/kohana/system/tests/kohana/CookieTest.php create mode 100644 includes/kohana/system/tests/kohana/CoreTest.php create mode 100644 includes/kohana/system/tests/kohana/DateTest.php create mode 100644 includes/kohana/system/tests/kohana/DebugTest.php create mode 100644 includes/kohana/system/tests/kohana/ExceptionTest.php create mode 100644 includes/kohana/system/tests/kohana/FeedTest.php create mode 100644 includes/kohana/system/tests/kohana/FileTest.php create mode 100644 includes/kohana/system/tests/kohana/FormTest.php create mode 100644 includes/kohana/system/tests/kohana/HTMLTest.php create mode 100644 includes/kohana/system/tests/kohana/HTTPTest.php create mode 100644 includes/kohana/system/tests/kohana/Http/HeaderTest.php create mode 100644 includes/kohana/system/tests/kohana/I18nTest.php create mode 100644 includes/kohana/system/tests/kohana/InflectorTest.php create mode 100644 includes/kohana/system/tests/kohana/LogTest.php create mode 100644 includes/kohana/system/tests/kohana/ModelTest.php create mode 100644 includes/kohana/system/tests/kohana/NumTest.php create mode 100644 includes/kohana/system/tests/kohana/RequestTest.php create mode 100644 includes/kohana/system/tests/kohana/ResponseTest.php create mode 100644 includes/kohana/system/tests/kohana/RouteTest.php create mode 100644 includes/kohana/system/tests/kohana/SecurityTest.php create mode 100644 includes/kohana/system/tests/kohana/SessionTest.php create mode 100644 includes/kohana/system/tests/kohana/TextTest.php create mode 100644 includes/kohana/system/tests/kohana/URLTest.php create mode 100644 includes/kohana/system/tests/kohana/UTF8Test.php create mode 100644 includes/kohana/system/tests/kohana/UploadTest.php create mode 100644 includes/kohana/system/tests/kohana/ValidTest.php create mode 100644 includes/kohana/system/tests/kohana/ValidationTest.php create mode 100644 includes/kohana/system/tests/kohana/ViewTest.php create mode 100644 includes/kohana/system/tests/kohana/request/ClientTest.php create mode 100644 includes/kohana/system/tests/kohana/request/client/ExternalTest.php create mode 100644 includes/kohana/system/tests/kohana/request/client/InternalTest.php create mode 100644 includes/kohana/system/tests/test_data/callback_routes.php create mode 100644 includes/kohana/system/tests/test_data/github.png create mode 100644 includes/kohana/system/tests/test_data/views/test.css.php create mode 100644 includes/kohana/system/utf8/from_unicode.php create mode 100644 includes/kohana/system/utf8/ltrim.php create mode 100644 includes/kohana/system/utf8/ord.php create mode 100644 includes/kohana/system/utf8/rtrim.php create mode 100644 includes/kohana/system/utf8/str_ireplace.php create mode 100644 includes/kohana/system/utf8/str_pad.php create mode 100644 includes/kohana/system/utf8/str_split.php create mode 100644 includes/kohana/system/utf8/strcasecmp.php create mode 100644 includes/kohana/system/utf8/strcspn.php create mode 100644 includes/kohana/system/utf8/stristr.php create mode 100644 includes/kohana/system/utf8/strlen.php create mode 100644 includes/kohana/system/utf8/strpos.php create mode 100644 includes/kohana/system/utf8/strrev.php create mode 100644 includes/kohana/system/utf8/strrpos.php create mode 100644 includes/kohana/system/utf8/strspn.php create mode 100644 includes/kohana/system/utf8/strtolower.php create mode 100644 includes/kohana/system/utf8/strtoupper.php create mode 100644 includes/kohana/system/utf8/substr.php create mode 100644 includes/kohana/system/utf8/substr_replace.php create mode 100644 includes/kohana/system/utf8/to_unicode.php create mode 100644 includes/kohana/system/utf8/transliterate_to_ascii.php create mode 100644 includes/kohana/system/utf8/trim.php create mode 100644 includes/kohana/system/utf8/ucfirst.php create mode 100644 includes/kohana/system/utf8/ucwords.php create mode 100644 includes/kohana/system/views/kohana/error.php create mode 100644 includes/kohana/system/views/kohana/generate_logo.php create mode 100644 includes/kohana/system/views/kohana/logo.php create mode 100644 includes/kohana/system/views/profiler/stats.php create mode 100644 includes/kohana/system/views/profiler/style.css create mode 100644 includes/kohana/vendor/autoload.php create mode 100644 includes/kohana/vendor/bin/phpunit create mode 100644 includes/kohana/vendor/composer/ClassLoader.php create mode 100644 includes/kohana/vendor/composer/autoload_classmap.php create mode 100644 includes/kohana/vendor/composer/autoload_namespaces.php create mode 100644 includes/kohana/vendor/composer/autoload_real.php create mode 100644 includes/kohana/vendor/composer/include_paths.php create mode 100644 includes/kohana/vendor/composer/installed.json create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/CONTRIBUTING.md create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/LICENSE create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Driver.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Driver/Xdebug.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Exception.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Filter.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Clover.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Factory.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Dashboard.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Directory.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/File.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/coverage_bar.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap-responsive.min.css create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/bootstrap.min.css create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/css/style.css create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/dashboard.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/directory_item.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/file_item.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/img/glyphicons-halflings-white.png create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/img/glyphicons-halflings.png create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/bootstrap.min.js create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/highcharts.js create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/js/jquery.min.js create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/HTML/Renderer/Template/method_item.html.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node/Directory.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node/File.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Node/Iterator.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/PHP.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Report/Text.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Util.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Util/InvalidArgumentHelper.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/PHP/CodeCoverage/Version.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/README.markdown create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverage/FilterTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverage/Report/CloverTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverage/Report/FactoryTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverage/UtilTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/PHP/CodeCoverageTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/TestCase.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/BankAccount-clover.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/BankAccount.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/BankAccountTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageClassExtendedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageClassTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageFunctionTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageMethodOneLineAnnotationTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageMethodTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageNoneTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageNotPrivateTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageNotProtectedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageNotPublicTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageNothingTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoveragePrivateTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageProtectedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoveragePublicTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoverageTwoDefaultClassAnnotations.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoveredClass.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/CoveredFunction.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageClassExtendedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageClassTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageCoversClassPublicTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageCoversClassTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageMethodTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageNotPrivateTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageNotProtectedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageNotPublicTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoveragePrivateTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoverageProtectedTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoveragePublicTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NamespaceCoveredClass.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/NotExistingCoveredElementTest.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/ignored-lines-clover.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/source_with_ignore.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/source_with_namespace.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/source_with_oneline_annotations.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/source_without_ignore.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/Tests/_files/source_without_namespace.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/build.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/composer.json create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/package.xml create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/phpunit.xml.dist create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/scripts/auto_append.php create mode 100644 includes/kohana/vendor/phpunit/php-code-coverage/scripts/auto_prepend.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/File/Iterator.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/File/Iterator/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/File/Iterator/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/File/Iterator/Facade.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/File/Iterator/Factory.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/LICENSE create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/README.markdown create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/build.xml create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/composer.json create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/package-composer.json create mode 100644 includes/kohana/vendor/phpunit/php-file-iterator/package.xml create mode 100644 includes/kohana/vendor/phpunit/php-text-template/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/php-text-template/LICENSE create mode 100644 includes/kohana/vendor/phpunit/php-text-template/README.markdown create mode 100644 includes/kohana/vendor/phpunit/php-text-template/Text/Template.php create mode 100644 includes/kohana/vendor/phpunit/php-text-template/Text/Template/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/php-text-template/Text/Template/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/php-text-template/build.xml create mode 100644 includes/kohana/vendor/phpunit/php-text-template/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-text-template/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-text-template/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/php-text-template/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/php-text-template/composer.json create mode 100644 includes/kohana/vendor/phpunit/php-text-template/package-composer.json create mode 100644 includes/kohana/vendor/phpunit/php-text-template/package.xml create mode 100644 includes/kohana/vendor/phpunit/php-timer/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/php-timer/LICENSE create mode 100644 includes/kohana/vendor/phpunit/php-timer/PHP/Timer.php create mode 100644 includes/kohana/vendor/phpunit/php-timer/PHP/Timer/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/php-timer/PHP/Timer/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/php-timer/README.markdown create mode 100644 includes/kohana/vendor/phpunit/php-timer/Tests/TimerTest.php create mode 100644 includes/kohana/vendor/phpunit/php-timer/build.xml create mode 100644 includes/kohana/vendor/phpunit/php-timer/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-timer/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-timer/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/php-timer/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/php-timer/composer.json create mode 100644 includes/kohana/vendor/phpunit/php-timer/package-composer.json create mode 100644 includes/kohana/vendor/phpunit/php-timer/package.xml create mode 100644 includes/kohana/vendor/phpunit/php-timer/phpunit.xml.dist create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/LICENSE create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/PHP/Token.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/PHP/Token/Stream.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/PHP/Token/Stream/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/PHP/Token/Stream/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/PHP/Token/Stream/CachingFactory.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/README.markdown create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/Token/ClassTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/Token/FunctionTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/Token/IncludeTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/Token/InterfaceTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/Token/NamespaceTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/TokenTest.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/classExtendsNamespacedClass.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/classInNamespace.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/classInScopedNamespace.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/issue19.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/multipleNamespacesWithOneClassUsingBraces.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/multipleNamespacesWithOneClassUsingNonBraceSyntax.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/source.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/source2.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/source3.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/Tests/_files/source4.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/build.xml create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/composer.json create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/package-composer.json create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/package.xml create mode 100644 includes/kohana/vendor/phpunit/php-token-stream/phpunit.xml.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/CONTRIBUTING.md create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/ChangeLog.markdown create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/LICENSE create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Identity.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/InvocationMocker.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Match.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/MethodNameMatch.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Namespace.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/ParametersMatch.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Builder/Stub.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_class.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_clone.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_object_method.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/mocked_static_method.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/trait_class.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/unmocked_clone.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/wsdl_class.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Generator/wsdl_method.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation/Object.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invocation/Static.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/InvocationMocker.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Invokable.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/AnyInvokedCount.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/AnyParameters.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/Invocation.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedAtIndex.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedAtLeastOnce.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedCount.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/InvokedRecorder.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/MethodName.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/Parameters.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Matcher/StatelessInvocation.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/MockBuilder.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/MockObject.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ConsecutiveCalls.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/Exception.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/MatcherCollection.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/Return.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnArgument.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnCallback.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnSelf.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Stub/ReturnValueMap.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/PHPUnit/Framework/MockObject/Verifiable.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/GeneratorTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockBuilderTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/Invocation/ObjectTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/Invocation/StaticTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_call_parent_clone.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_dont_call_parent_clone.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_dont_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_implementing_interface_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/class_partial.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/interface.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/invocation_object_clone_object.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/invocation_static_clone_object.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_call_parent_clone.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_dont_call_parent_clone.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_dont_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_implementing_interface_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_implementing_interface_dont_call_parent_constructor.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_class_partial.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/namespaced_interface.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/nonexistent_class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/nonexistent_class_with_namespace.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/nonexistent_class_with_namespace_starting_with_separator.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/wsdl_class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/wsdl_class_namespace.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObject/wsdl_class_partial.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/MockObjectTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/AbstractMockTestClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/AnInterface.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/FunctionCallback.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/GoogleSearch.wsdl create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/MethodCallback.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/Mockable.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/PartialMockTestClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/SomeClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/Tests/_files/StaticMockTestClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/build.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/composer.json create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/package-composer.json create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/package.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit-mock-objects/phpunit.xml.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit/CONTRIBUTING.md create mode 100644 includes/kohana/vendor/phpunit/phpunit/ChangeLog.md create mode 100644 includes/kohana/vendor/phpunit/phpunit/LICENSE create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Autoload.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/GroupTestSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/PhptTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/PhptTestCase/Logger.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/PhptTestSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/RepeatedTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/TestDecorator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Extensions/TicketListener.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Assert.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Assert/Functions.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Assert/Functions.php.in create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/AssertionFailedError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Array.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/DOMDocument.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Double.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Exception.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/MockObject.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Numeric.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Object.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Resource.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Scalar.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/SplObjectStorage.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Comparator/Type.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/ComparatorFactory.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/ComparisonFailure.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/And.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ArrayHasKey.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Attribute.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Callback.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ClassHasAttribute.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ClassHasStaticAttribute.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Composite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Count.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Exception.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ExceptionCode.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ExceptionMessage.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/FileExists.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/GreaterThan.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsAnything.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsEmpty.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsEqual.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsFalse.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsIdentical.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsInstanceOf.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsNull.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsTrue.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/IsType.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/JsonMatches.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/JsonMatches/ErrorMessageProvider.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/LessThan.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Not.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/ObjectHasAttribute.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Or.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/PCREMatch.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/SameSize.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/StringContains.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/StringEndsWith.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/StringMatches.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/StringStartsWith.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/TraversableContains.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/TraversableContainsOnly.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Constraint/Xor.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Error.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Error/Deprecated.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Error/Notice.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Error/Warning.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Exception.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/ExpectationFailedException.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/IncompleteTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/IncompleteTestError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/OutputError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Process/TestCaseMethod.tpl.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/SelfDescribing.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/SkippedTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/SkippedTestError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/SkippedTestSuiteError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/SyntheticError.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestFailure.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestListener.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite/DataProvider.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Framework/Warning.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Runner/BaseTestRunner.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Runner/StandardTestSuiteLoader.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Runner/TestSuiteLoader.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Runner/Version.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/TextUI/ResultPrinter.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Class.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Configuration.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/DeprecatedFeature.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/DeprecatedFeature/Logger.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Diff.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/ErrorHandler.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Fileloader.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Filesystem.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Filter.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Getopt.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/GlobalState.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/InvalidArgumentHelper.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Log/JSON.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Log/JUnit.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Log/TAP.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/PHP.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/PHP/Default.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/PHP/Windows.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Printer.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/String.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/TestDox/NamePrettifier.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/TestDox/ResultPrinter.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/TestDox/ResultPrinter/HTML.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/TestDox/ResultPrinter/Text.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/TestSuiteIterator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/Type.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/PHPUnit/Util/XML.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/README.md create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Extensions/RepeatedTestTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/AssertTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/ComparatorTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/Constraint/JsonMatches/ErrorMessageProviderTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/Constraint/JsonMatchesTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/ConstraintTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/SuiteTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/TestCaseTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/TestImplementorTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Framework/TestListenerTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/1021.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/1021/Issue1021Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/523.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/523/Issue523Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/578.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/578/Issue578Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/684.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/684/Issue684Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/783.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/783/ChildSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/783/OneTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/783/ParentSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/783/TwoTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/244.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/244/Issue244Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/322.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/322/Issue322Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/322/phpunit322.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/433.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/433/Issue433Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/445.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/445/Issue445Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/503.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/503/Issue503Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/581.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/581/Issue581Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/74.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/74/Issue74Test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Regression/GitHub/74/NewException.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Runner/BaseTestRunnerTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/abstract-test-class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/concrete-test-class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dataprovider-log-xml-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dataprovider-log-xml.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dataprovider-testdox.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/debug.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/default-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/default.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies2-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies2.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies3-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/dependencies3.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/empty-testcase.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/exception-stack.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/exclude-group-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/exclude-group.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/failure-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/failure.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/fatal-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/fatal.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/filter-class-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/filter-class.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/filter-method-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/filter-method.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/filter-no-results.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/group-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/group.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/help.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/help2.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/list-groups.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/log-json.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/log-tap.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/log-xml.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/strict-incomplete.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/strict-isolation.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/strict.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/tap.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/test-suffix-multiple.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/test-suffix-single.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/testdox-html.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/testdox-text.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/TextUI/testdox.phpt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/ClassTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/ConfigurationTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/DiffTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/TestDox/NamePrettifierTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/TestTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/TypeTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/Util/XMLTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/AbstractTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Author.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/BankAccount.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/BankAccountTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/BankAccountTest.test.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Book.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Calculator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ChangeCurrentWorkingDirectoryTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ClassWithNonPublicAttributes.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ClassWithToString.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ConcreteTest.my.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ConcreteTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/DataProviderTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/DependencyFailureTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/DependencySuccessTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/DependencyTestSuite.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/DoubleTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/EmptyTestCaseTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Error.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionInAssertPostConditionsTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionInAssertPreConditionsTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionInSetUpTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionInTearDownTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionInTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionNamespaceTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionStack.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ExceptionTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Failure.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/FailureTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/FatalTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/IncompleteTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/InheritedTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/JsonData/arrayObject.js create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/JsonData/simpleObject.js create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/JsonData/simpleObject2.js create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/MockRunner.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/MultiDependencyTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NoArgTestCaseTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NoTestCaseClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NoTestCases.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NonStatic.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NotPublicTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NotVoidTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/NothingTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/OneTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/OutputTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/OverrideTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/RequirementsClassDocBlockTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/RequirementsTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/SampleClass.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/SelectorAssertionsFixture.html create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Singleton.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/StackTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Struct.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/Success.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/TemplateMethodsTest.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/TestIterator.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ThrowExceptionTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/ThrowNoExceptionTestCase.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/WasRun.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/bar.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/configuration.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/configuration_xinclude.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/expectedFileFormat.txt create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/foo.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureAttributesAreSameButValuesAreNot.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureExpected.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureIgnoreTextNodes.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureIsSameButDataIsNot.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureWrongNumberOfAttributes.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/Tests/_files/structureWrongNumberOfNodes.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/build.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/PHPCS/Sniffs/ControlStructures/ControlSignatureSniff.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/PHPCS/Sniffs/Whitespace/ConcatenationSpacingSniff.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/PHPCS/ruleset.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/assertions.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/DbUnit-1.2.1.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/File_Iterator-1.3.3.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHPUnit_MockObject-1.2.1.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHPUnit_Selenium-1.2.9.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHP_CodeCoverage-1.2.6.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHP_Invoker-1.1.2.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHP_Timer-1.0.4.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/PHP_TokenStream-1.1.5.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/Text_Template-1.1.3.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/dependencies/Yaml-2.1.2.tgz create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/phar-autoload.php.in create mode 100644 includes/kohana/vendor/phpunit/phpunit/build/phpmd.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/composer.json create mode 100644 includes/kohana/vendor/phpunit/phpunit/composer/bin/phpunit create mode 100644 includes/kohana/vendor/phpunit/phpunit/package.xml create mode 100644 includes/kohana/vendor/phpunit/phpunit/phpdox.xml.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit/phpunit.bat create mode 100644 includes/kohana/vendor/phpunit/phpunit/phpunit.php create mode 100644 includes/kohana/vendor/phpunit/phpunit/phpunit.xml.dist create mode 100644 includes/kohana/vendor/phpunit/phpunit/phpunit.xsd create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/CHANGELOG.md create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Dumper.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Escaper.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/DumpException.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ExceptionInterface.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Exception/ParseException.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Inline.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/LICENSE create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Parser.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/README.md create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/DumperTest.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsAnchorAlias.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBasicTests.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsBlockMapping.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsDocumentSeparator.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsErrorTests.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFlowCollections.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsFoldedScalars.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsNullsAndEmpties.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsSpecificationExamples.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/YtsTypeTransfers.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/embededPhp.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/escapedCharacters.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/index.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfComments.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfCompact.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfMergeKey.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfObjects.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfQuotes.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/sfTests.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/Fixtures/unindentedCollections.yml create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/InlineTest.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/ParserTest.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/YamlTest.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Tests/bootstrap.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Unescaper.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/Yaml.php create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/composer.json create mode 100644 includes/kohana/vendor/symfony/yaml/Symfony/Component/Yaml/phpunit.xml.dist create mode 100644 includes/tcpdf/2dbarcodes.php create mode 100644 includes/tcpdf/LICENSE.TXT create mode 100644 includes/tcpdf/barcodes.php create mode 100644 includes/tcpdf/config/lang/eng.php create mode 100644 includes/tcpdf/config/lang/ita.php create mode 100644 includes/tcpdf/config/tcpdf_config.php create mode 100644 includes/tcpdf/config/tcpdf_config_alt.php create mode 100755 includes/tcpdf/fonts/README.TXT create mode 100755 includes/tcpdf/fonts/ZarBold.ctg.z create mode 100755 includes/tcpdf/fonts/ZarBold.z create mode 100755 includes/tcpdf/fonts/almohanad.ctg.z create mode 100755 includes/tcpdf/fonts/almohanad.php create mode 100755 includes/tcpdf/fonts/almohanad.z create mode 100755 includes/tcpdf/fonts/arialunicid0.php create mode 100755 includes/tcpdf/fonts/courier.php create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/AUTHORS create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/BUGS create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/LICENSE create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/NEWS create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/README create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/langcover.txt create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/status.txt create mode 100644 includes/tcpdf/fonts/dejavu-fonts-ttf-2.30/unicover.txt create mode 100644 includes/tcpdf/fonts/dejavusans.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusans.php create mode 100644 includes/tcpdf/fonts/dejavusans.z create mode 100644 includes/tcpdf/fonts/dejavusansb.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansb.php create mode 100644 includes/tcpdf/fonts/dejavusansb.z create mode 100644 includes/tcpdf/fonts/dejavusansbi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansbi.php create mode 100644 includes/tcpdf/fonts/dejavusansbi.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensed.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensed.php create mode 100644 includes/tcpdf/fonts/dejavusanscondensed.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedb.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedb.php create mode 100644 includes/tcpdf/fonts/dejavusanscondensedb.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedbi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedbi.php create mode 100644 includes/tcpdf/fonts/dejavusanscondensedbi.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusanscondensedi.php create mode 100644 includes/tcpdf/fonts/dejavusanscondensedi.z create mode 100644 includes/tcpdf/fonts/dejavusansi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansi.php create mode 100644 includes/tcpdf/fonts/dejavusansi.z create mode 100644 includes/tcpdf/fonts/dejavusansmono.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansmono.php create mode 100644 includes/tcpdf/fonts/dejavusansmono.z create mode 100644 includes/tcpdf/fonts/dejavusansmonob.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansmonob.php create mode 100644 includes/tcpdf/fonts/dejavusansmonob.z create mode 100644 includes/tcpdf/fonts/dejavusansmonobi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansmonobi.php create mode 100644 includes/tcpdf/fonts/dejavusansmonobi.z create mode 100644 includes/tcpdf/fonts/dejavusansmonoi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavusansmonoi.php create mode 100644 includes/tcpdf/fonts/dejavusansmonoi.z create mode 100644 includes/tcpdf/fonts/dejavuserif.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserif.php create mode 100644 includes/tcpdf/fonts/dejavuserif.z create mode 100644 includes/tcpdf/fonts/dejavuserifb.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifb.php create mode 100644 includes/tcpdf/fonts/dejavuserifb.z create mode 100644 includes/tcpdf/fonts/dejavuserifbi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifbi.php create mode 100644 includes/tcpdf/fonts/dejavuserifbi.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensed.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensed.php create mode 100644 includes/tcpdf/fonts/dejavuserifcondensed.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedb.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedb.php create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedb.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedbi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedbi.php create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedbi.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedi.php create mode 100644 includes/tcpdf/fonts/dejavuserifcondensedi.z create mode 100644 includes/tcpdf/fonts/dejavuserifi.ctg.z create mode 100644 includes/tcpdf/fonts/dejavuserifi.php create mode 100644 includes/tcpdf/fonts/dejavuserifi.z create mode 100644 includes/tcpdf/fonts/freefont-20090104/AUTHORS create mode 100644 includes/tcpdf/fonts/freefont-20090104/COPYING create mode 100644 includes/tcpdf/fonts/freefont-20090104/CREDITS create mode 100644 includes/tcpdf/fonts/freefont-20090104/ChangeLog create mode 100644 includes/tcpdf/fonts/freefont-20090104/INSTALL create mode 100644 includes/tcpdf/fonts/freefont-20090104/README create mode 100644 includes/tcpdf/fonts/freemono.ctg.z create mode 100644 includes/tcpdf/fonts/freemono.php create mode 100644 includes/tcpdf/fonts/freemono.z create mode 100644 includes/tcpdf/fonts/freemonob.ctg.z create mode 100644 includes/tcpdf/fonts/freemonob.php create mode 100644 includes/tcpdf/fonts/freemonob.z create mode 100644 includes/tcpdf/fonts/freemonobi.ctg.z create mode 100644 includes/tcpdf/fonts/freemonobi.php create mode 100644 includes/tcpdf/fonts/freemonobi.z create mode 100644 includes/tcpdf/fonts/freemonoi.ctg.z create mode 100644 includes/tcpdf/fonts/freemonoi.php create mode 100644 includes/tcpdf/fonts/freemonoi.z create mode 100644 includes/tcpdf/fonts/freesans.ctg.z create mode 100644 includes/tcpdf/fonts/freesans.php create mode 100644 includes/tcpdf/fonts/freesans.z create mode 100644 includes/tcpdf/fonts/freesansb.ctg.z create mode 100644 includes/tcpdf/fonts/freesansb.php create mode 100644 includes/tcpdf/fonts/freesansb.z create mode 100644 includes/tcpdf/fonts/freesansbi.ctg.z create mode 100644 includes/tcpdf/fonts/freesansbi.php create mode 100644 includes/tcpdf/fonts/freesansbi.z create mode 100644 includes/tcpdf/fonts/freesansi.ctg.z create mode 100644 includes/tcpdf/fonts/freesansi.php create mode 100644 includes/tcpdf/fonts/freesansi.z create mode 100644 includes/tcpdf/fonts/freeserif.ctg.z create mode 100644 includes/tcpdf/fonts/freeserif.php create mode 100644 includes/tcpdf/fonts/freeserif.z create mode 100644 includes/tcpdf/fonts/freeserifb.ctg.z create mode 100644 includes/tcpdf/fonts/freeserifb.php create mode 100644 includes/tcpdf/fonts/freeserifb.z create mode 100644 includes/tcpdf/fonts/freeserifbi.ctg.z create mode 100644 includes/tcpdf/fonts/freeserifbi.php create mode 100644 includes/tcpdf/fonts/freeserifbi.z create mode 100644 includes/tcpdf/fonts/freeserifi.ctg.z create mode 100644 includes/tcpdf/fonts/freeserifi.php create mode 100644 includes/tcpdf/fonts/freeserifi.z create mode 100755 includes/tcpdf/fonts/helvetica.php create mode 100755 includes/tcpdf/fonts/helveticab.php create mode 100755 includes/tcpdf/fonts/helveticabi.php create mode 100755 includes/tcpdf/fonts/helveticai.php create mode 100755 includes/tcpdf/fonts/hysmyeongjostdmedium.php create mode 100755 includes/tcpdf/fonts/kozgopromedium.php create mode 100755 includes/tcpdf/fonts/kozminproregular.php create mode 100755 includes/tcpdf/fonts/msungstdlight.php create mode 100755 includes/tcpdf/fonts/stsongstdlight.php create mode 100755 includes/tcpdf/fonts/symbol.php create mode 100755 includes/tcpdf/fonts/times.php create mode 100755 includes/tcpdf/fonts/timesb.php create mode 100755 includes/tcpdf/fonts/timesbi.php create mode 100755 includes/tcpdf/fonts/timesi.php create mode 100755 includes/tcpdf/fonts/uni2cid_ac15.php create mode 100755 includes/tcpdf/fonts/uni2cid_ag15.php create mode 100755 includes/tcpdf/fonts/uni2cid_aj16.php create mode 100755 includes/tcpdf/fonts/uni2cid_ak12.php create mode 100755 includes/tcpdf/fonts/utils/README.TXT create mode 100755 includes/tcpdf/fonts/utils/enc/cp1250.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1251.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1252.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1253.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1254.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1255.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1257.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp1258.map create mode 100755 includes/tcpdf/fonts/utils/enc/cp874.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-1.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-11.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-15.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-16.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-2.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-4.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-5.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-7.map create mode 100755 includes/tcpdf/fonts/utils/enc/iso-8859-9.map create mode 100755 includes/tcpdf/fonts/utils/enc/koi8-r.map create mode 100755 includes/tcpdf/fonts/utils/enc/koi8-u.map create mode 100755 includes/tcpdf/fonts/utils/freetype6.dll create mode 100755 includes/tcpdf/fonts/utils/makeallttffonts.php create mode 100755 includes/tcpdf/fonts/utils/makefont.php create mode 100755 includes/tcpdf/fonts/utils/pfm2afm create mode 100755 includes/tcpdf/fonts/utils/pfm2afm.exe create mode 100755 includes/tcpdf/fonts/utils/src/pfm2afm-src.tar.gz create mode 100755 includes/tcpdf/fonts/utils/src/readme.txt create mode 100755 includes/tcpdf/fonts/utils/src/ttf2ufm-src.tar.gz create mode 100755 includes/tcpdf/fonts/utils/ttf2ufm create mode 100755 includes/tcpdf/fonts/utils/ttf2ufm.exe create mode 100755 includes/tcpdf/fonts/utils/zlib1.dll create mode 100755 includes/tcpdf/fonts/zapfdingbats.php create mode 100755 includes/tcpdf/fonts/zarbold.php create mode 100644 includes/tcpdf/htmlcolors.php create mode 100644 includes/tcpdf/tcpdf.crt create mode 100644 includes/tcpdf/tcpdf.php create mode 100644 includes/tcpdf/unicode_data.php create mode 100644 index.php create mode 100644 modules/adsl/classes/ADSL.php create mode 100644 modules/adsl/classes/Model/ADSL/Plan.php create mode 100644 modules/adsl/classes/Model/ADSL/Supplier.php create mode 100644 modules/adsl/classes/Model/ADSL/Supplier/Plan.php create mode 100644 modules/adsl/classes/Model/Product/Plugin/Adsl.php create mode 100644 modules/adsl/classes/Model/Service/Plugin/Adsl.php create mode 100644 modules/adsl/classes/Model/Service/Plugin/Adsl/Traffic.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl/Exetelhspa.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl/Exetelpe.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl/Exetelvisp.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl/PeopleAgent.php create mode 100644 modules/adsl/classes/Service/Traffic/Adsl/iiNetADSL.php create mode 100644 modules/adsl/views/adsl/contract_view.php create mode 100644 modules/adsl/views/product/plugin/adsl/feature_summary.php create mode 100644 modules/adsl/views/service/admin/adsl/update.php create mode 100644 modules/adsl/views/service/admin/adslstat/body_data.php create mode 100644 modules/adsl/views/service/admin/adslstat/body_end.php create mode 100644 modules/adsl/views/service/admin/adslstat/body_head.php create mode 100644 modules/adsl/views/service/admin/adslstat/foot.php create mode 100644 modules/adsl/views/service/admin/adslstat/head.php create mode 100644 modules/adsl/views/service/admin/adslstat/head_data.php create mode 100644 modules/adsl/views/service/admin/adslstat/head_end.php create mode 100644 modules/adsl/views/service/admin/listadslbilling/body.php create mode 100644 modules/adsl/views/service/admin/listadslbilling/foot.php create mode 100644 modules/adsl/views/service/admin/listadslbilling/head.php create mode 100644 modules/adsl/views/service/admin/listadslbilling/summary.php create mode 100644 modules/adsl/views/service/admin/listadslbilling/summary_exception.php create mode 100644 modules/adsl/views/service/user/plugin/adsl/table_traffic.php create mode 100644 modules/adsl/views/service/user/plugin/adsl/view.php create mode 100644 modules/affiliate/classes/Model/Affiliate.php create mode 100644 modules/cart/classes/Cart.php create mode 100644 modules/cart/classes/Cart/Item.php create mode 100644 modules/cart/classes/Cartable.php create mode 100644 modules/cart/classes/Controller/Cart.php create mode 100644 modules/cart/classes/Model/Cart.php create mode 100644 modules/cart/media/img/accessories-calculator-small.png create mode 100644 modules/cart/media/img/accessories-calculator.png create mode 100644 modules/cart/media/img/edit-delete.png create mode 100644 modules/charge/classes/Controller/Admin/Charge.php create mode 100644 modules/charge/classes/Model/Charge.php create mode 100644 modules/charge/views/charge/admin/add.php create mode 100644 modules/checkout/classes/Checkout/Plugin.php create mode 100644 modules/checkout/classes/Checkout/Plugin/Paypal.php create mode 100644 modules/checkout/classes/Checkout/Plugin/Paypal/Cart.php create mode 100644 modules/checkout/classes/Controller/Checkout.php create mode 100644 modules/checkout/classes/Model/Checkout.php create mode 100644 modules/checkout/classes/Model/Checkout/Notify.php create mode 100644 modules/checkout/views/checkout/payment_option.php create mode 100644 modules/checkout/views/checkout/plugin/paypal/before.php create mode 100644 modules/domain/classes/Domain.php create mode 100644 modules/domain/classes/Model/Domain/Registrar.php create mode 100644 modules/domain/classes/Model/Domain/TLD.php create mode 100644 modules/domain/classes/Model/Product/Plugin/Domain.php create mode 100644 modules/domain/classes/Model/Service/Plugin/Domain.php create mode 100644 modules/domain/classes/Service/Domain.php create mode 100644 modules/domain/classes/Service/Domain/Manual.php create mode 100644 modules/domain/classes/Service/Domain/PlanetDomain.php create mode 100644 modules/domain/classes/Service/Domain/TPP.php create mode 100644 modules/domain/views/service/user/plugin/domain/view.php create mode 100644 modules/email/classes/Controller/Admin/Email.php create mode 100644 modules/email/classes/Controller/Email.php create mode 100644 modules/email/classes/Controller/Email/Template.php create mode 100644 modules/email/classes/Controller/User/Email.php create mode 100644 modules/email/classes/Email/Template.php create mode 100644 modules/email/classes/Model/Email/Log.php create mode 100644 modules/email/classes/Model/Email/Template.php create mode 100644 modules/email/classes/Model/Email/Template/Translate.php create mode 100644 modules/email/views/email/admin/templateadd.php create mode 100644 modules/email/views/email/admin/templateadd/translate.php create mode 100644 modules/email/views/email/admin/templateedit.php create mode 100644 modules/email/views/email/admin/templateedit/translate.php create mode 100644 modules/email/views/email/admin/templatelist/body.php create mode 100644 modules/email/views/email/admin/templatelist/foot.php create mode 100644 modules/email/views/email/admin/templatelist/head.php create mode 100644 modules/email/views/email/user/view.php create mode 100644 modules/export/classes/Controller/Admin/Export.php create mode 100644 modules/export/classes/Controller/Affiliate/Export.php create mode 100644 modules/export/classes/Controller/Export.php create mode 100644 modules/export/classes/Export.php create mode 100644 modules/export/classes/Export/Quicken.php create mode 100644 modules/export/classes/Model/Export.php create mode 100644 modules/export/classes/OSBExport.php create mode 100644 modules/export/classes/Quicken.php create mode 100644 modules/export/classes/Quicken/Invoice.php create mode 100644 modules/export/classes/Quicken/InvoiceItem.php create mode 100644 modules/export/classes/Quicken/Payment.php create mode 100644 modules/export/views/export/admin/add.php create mode 100644 modules/gchart/classes/GoogleChart.php create mode 100644 modules/gchart/classes/GoogleChart/ComboChart.php create mode 100644 modules/gchart/classes/GoogleChart/Legacy.php create mode 100644 modules/host/classes/Controller/Admin/Host.php create mode 100644 modules/host/classes/Controller/Task/Host.php create mode 100644 modules/host/classes/Host/Plugin.php create mode 100644 modules/host/classes/Host/Plugin/Cpanel.php create mode 100644 modules/host/classes/Host/Plugin/Cpanel/11.php create mode 100644 modules/host/classes/Host/Plugin/Plesk.php create mode 100644 modules/host/classes/Host/Plugin/Plesk/10.php create mode 100644 modules/host/classes/Host/Plugin/Plesk/9.php create mode 100644 modules/host/classes/Model/Host/Server.php create mode 100644 modules/host/classes/Model/Host/Server/Affiliate.php create mode 100644 modules/host/classes/Model/Product/Plugin/Host.php create mode 100644 modules/host/classes/Model/Service/Plugin/Host.php create mode 100644 modules/host/views/host/admin/plugin/plesk.php create mode 100644 modules/host/views/host/admin/update.php create mode 100644 modules/host/views/service/user/plugin/host/view.php create mode 100644 modules/invoice/classes/Controller/Admin/Invoice.php create mode 100644 modules/invoice/classes/Controller/Invoice.php create mode 100644 modules/invoice/classes/Controller/Reseller/Invoice.php create mode 100644 modules/invoice/classes/Controller/Task/Invoice.php create mode 100644 modules/invoice/classes/Controller/User/Invoice.php create mode 100644 modules/invoice/classes/Invoice.php create mode 100644 modules/invoice/classes/Invoice/Tcpdf.php create mode 100644 modules/invoice/classes/Invoice/Tcpdf/Default.php create mode 100644 modules/invoice/classes/Model/Invoice.php create mode 100644 modules/invoice/classes/Model/Invoice/Item.php create mode 100644 modules/invoice/classes/Task/Invoice/Complete.php create mode 100644 modules/invoice/media/img/invoice-payment-dd.png create mode 100644 modules/invoice/media/img/invoice-payment-pp.png create mode 100644 modules/invoice/views/invoice/task/list_overdue_body.php create mode 100644 modules/invoice/views/invoice/task/list_overdue_foot.php create mode 100644 modules/invoice/views/invoice/task/list_overdue_head.php create mode 100644 modules/invoice/views/invoice/user/email.php create mode 100644 modules/invoice/views/invoice/user/view.php create mode 100644 modules/invoice/views/invoice/user/view/pay.php create mode 100644 modules/lnApp/classes/Block.php create mode 100644 modules/lnApp/classes/Block/Sub.php create mode 100644 modules/lnApp/classes/BreadCrumb.php create mode 100644 modules/lnApp/classes/Controller/Default.php create mode 100644 modules/lnApp/classes/Controller/Login.php create mode 100644 modules/lnApp/classes/Controller/Logout.php create mode 100644 modules/lnApp/classes/Controller/Media.php create mode 100644 modules/lnApp/classes/Controller/Task.php create mode 100644 modules/lnApp/classes/HTML.php create mode 100644 modules/lnApp/classes/HTMLRender.php create mode 100644 modules/lnApp/classes/HeadImages.php create mode 100644 modules/lnApp/classes/Meta.php create mode 100644 modules/lnApp/classes/PWGen.php create mode 100644 modules/lnApp/classes/Random.php create mode 100644 modules/lnApp/classes/Script.php create mode 100644 modules/lnApp/classes/Sort.php create mode 100644 modules/lnApp/classes/Style.php create mode 100644 modules/lnApp/classes/SystemMessage.php create mode 100644 modules/lnApp/classes/Table.php create mode 100644 modules/lnApp/classes/lnApp/Block.php create mode 100644 modules/lnApp/classes/lnApp/Block/Sub.php create mode 100644 modules/lnApp/classes/lnApp/BreadCrumb.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Default.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Login.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Logout.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Media.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Task.php create mode 100644 modules/lnApp/classes/lnApp/Controller/TemplateDefault.php create mode 100644 modules/lnApp/classes/lnApp/Controller/Tree.php create mode 100644 modules/lnApp/classes/lnApp/HTML.php create mode 100644 modules/lnApp/classes/lnApp/HTMLRender.php create mode 100644 modules/lnApp/classes/lnApp/HeadImages.php create mode 100644 modules/lnApp/classes/lnApp/Meta.php create mode 100644 modules/lnApp/classes/lnApp/PWgen.php create mode 100644 modules/lnApp/classes/lnApp/Random.php create mode 100644 modules/lnApp/classes/lnApp/Script.php create mode 100644 modules/lnApp/classes/lnApp/Sort.php create mode 100644 modules/lnApp/classes/lnApp/Style.php create mode 100644 modules/lnApp/classes/lnApp/SystemMessage.php create mode 100644 modules/lnApp/classes/lnApp/Table.php create mode 100644 modules/lnApp/views/lnapp/default.php create mode 100644 modules/payment/classes/Controller/Admin/Payment.php create mode 100644 modules/payment/classes/Controller/Payment.php create mode 100644 modules/payment/classes/Controller/User/Payment.php create mode 100644 modules/payment/classes/Model/Payment.php create mode 100644 modules/payment/classes/Model/Payment/Item.php create mode 100644 modules/payment/classes/Payment/Bulk/Ezypay.php create mode 100644 modules/payment/views/payment/admin/add_view.php create mode 100644 modules/payment/views/payment/admin/addbulk/ezypay.php create mode 100644 modules/payment/views/payment/admin/addbulk/ezypay/body.php create mode 100644 modules/payment/views/payment/admin/addbulk/ezypay/foot.php create mode 100644 modules/payment/views/payment/admin/addbulk/ezypay/head.php create mode 100644 modules/payment/views/payment/admin/autoitemlist/body.php create mode 100644 modules/payment/views/payment/admin/autoitemlist/foot.php create mode 100644 modules/payment/views/payment/admin/autoitemlist/head.php create mode 100644 modules/product/classes/Controller/Admin/Product.php create mode 100644 modules/product/classes/Controller/Product.php create mode 100644 modules/product/classes/Controller/Product/Category.php create mode 100644 modules/product/classes/Model/Product.php create mode 100644 modules/product/classes/Model/Product/Category.php create mode 100644 modules/product/classes/Model/Product/Category/Translate.php create mode 100644 modules/product/classes/Model/Product/Plugin.php create mode 100644 modules/product/classes/Model/Product/Translate.php create mode 100644 modules/product/views/product/admin/ajaxtranslateform.php create mode 100644 modules/product/views/product/admin/update.php create mode 100644 modules/product/views/product/category/list.php create mode 100644 modules/product/views/product/category/list_item.php create mode 100644 modules/product/views/product/category/view.php create mode 100644 modules/product/views/product/view.php create mode 100644 modules/service/classes/Controller/Admin/Service.php create mode 100644 modules/service/classes/Controller/Affiliate/Service.php create mode 100644 modules/service/classes/Controller/Service.php create mode 100644 modules/service/classes/Controller/Task/Service.php create mode 100644 modules/service/classes/Controller/User/Service.php create mode 100644 modules/service/classes/Model/Service.php create mode 100644 modules/service/classes/Model/Service/Billing.php create mode 100644 modules/service/classes/Model/Service/Change.php create mode 100644 modules/service/classes/Model/Service/Plugin.php create mode 100644 modules/service/views/service/admin/update.php create mode 100644 modules/service/views/service/admin/view.php create mode 100644 modules/service/views/service/user/view.php create mode 100644 modules/ssl/classes/Controller/Admin/Ssl.php create mode 100644 modules/ssl/classes/Controller/User/Ssl.php create mode 100644 modules/ssl/classes/Model/Product/Plugin/Ssl.php create mode 100644 modules/ssl/classes/Model/SSL.php create mode 100644 modules/ssl/classes/Model/SSL/CA.php create mode 100644 modules/ssl/classes/Model/Service/Plugin/Ssl.php create mode 100644 modules/ssl/classes/SSL.php create mode 100644 modules/ssl/classes/Task/Ssl/Renew.php create mode 100644 modules/ssl/config/ssl.php create mode 100644 modules/ssl/messages/models/ssl_ca.php create mode 100644 modules/ssl/views/product/plugin/ssl/feature_summary.php create mode 100644 modules/ssl/views/service/admin/plugin/ssl/update.php create mode 100644 modules/ssl/views/service/user/plugin/ssl/view.php create mode 100644 modules/ssl/views/ssl/admin/add_view.php create mode 100644 modules/statement/classes/Controller/Admin/Statement.php create mode 100644 modules/statement/classes/Controller/Statement.php create mode 100644 modules/statement/classes/Controller/User/Statement.php create mode 100644 modules/statement/views/statement/user/show/body.php create mode 100644 modules/statement/views/statement/user/show/foot.php create mode 100644 modules/statement/views/statement/user/show/head.php create mode 100644 modules/static_page/classes/controller/staticpage.php create mode 100644 modules/static_page/classes/controller/staticpage/category.php create mode 100644 modules/static_page/classes/model/staticpage.php create mode 100644 modules/static_page/classes/model/staticpage/category.php create mode 100644 modules/static_page/classes/model/staticpage/translate.php create mode 100644 modules/static_page/views/staticpage/category/list.php create mode 100644 modules/static_page/views/staticpage/category/view.php create mode 100644 modules/static_page/views/staticpage/view.php create mode 100644 modules/task/classes/Controller/Admin/Task.php create mode 100644 modules/task/classes/Model/Task.php create mode 100644 modules/task/classes/Model/Task/Log.php create mode 100644 modules/task/classes/Task/Task/Listactive.php create mode 100644 modules/task/classes/Task/Task/Run.php create mode 100644 modules/tax/classes/Model/Invoice/Item/Tax.php create mode 100644 modules/tax/classes/Model/Tax.php create mode 100644 modules/tax/classes/Tax.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 00000000..c8dada9c --- /dev/null +++ b/.htaccess @@ -0,0 +1,21 @@ +# Turn on URL rewriting +RewriteEngine On + +# Installation directory +RewriteBase / + +# Protect hidden files from being viewed + + Order Deny,Allow + Deny From All + + +# Protect application and system files from being viewed +RewriteRule ^(?:application|modules|includes/kohana)\b.* index.php/$0 [L] + +# Allow any files or directories that exist to be displayed directly +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d + +# Rewrite all other URLs to index.php/URL +RewriteRule .* index.php/$0 [PT] diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..94a9ed02 --- /dev/null +++ b/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/application/bootstrap.php b/application/bootstrap.php new file mode 100644 index 00000000..02f72632 --- /dev/null +++ b/application/bootstrap.php @@ -0,0 +1,169 @@ +" + */ +if (isset($_SERVER['KOHANA_ENV'])) +{ + Kohana::$environment = constant('Kohana::'.strtoupper($_SERVER['KOHANA_ENV'])); +} + +/** + * Initialize Kohana, setting the default options. + * + * The following options are available: + * + * - string base_url path, and optionally domain, of your application NULL + * - string index_file name of your index file, usually "index.php" index.php + * - string charset internal character set used for input and output utf-8 + * - string cache_dir set the internal cache directory APPPATH/cache + * - integer cache_life lifetime, in seconds, of items cached 60 + * - boolean errors enable or disable error handling TRUE + * - boolean profile enable or disable internal profiling TRUE + * - boolean caching enable or disable internal caching FALSE + * - boolean expose set the X-Powered-By header FALSE + */ +Kohana::init(array( + 'base_url' => '/', + 'caching' => TRUE, + 'index_file' => '', +)); + +/** + * Attach the file write to logging. Multiple writers are supported. + */ +Kohana::$log->attach(new Log_File(APPPATH.'logs')); + +/** + * Attach a file reader to config. Multiple readers are supported. + */ +Kohana::$config->attach(new Config_File); + +/** + * Enable modules. Modules are referenced by a relative or absolute path. + */ +Kohana::modules(array( + 'lnapp' => MODPATH.'lnApp', + 'auth' => SMDPATH.'auth', // Basic authentication + 'cache' => SMDPATH.'cache', // Caching with multiple backends + 'cron' => SMDPATH.'cron', // Kohana Cron Module + // 'codebench' => SMDPATH.'codebench', // Benchmarking tool + 'database' => SMDPATH.'database', // Database access + 'gchart' => MODPATH.'gchart', // Google Chart Module + // 'image' => SMDPATH.'image', // Image manipulation + 'khemail' => SMDPATH.'khemail', // Email module for Kohana 3 PHP Framework + 'minion' => SMDPATH.'minion', // CLI Tasks + 'orm' => SMDPATH.'orm', // Object Relationship Mapping + 'pagination' => SMDPATH.'pagination', // Kohana Pagination module for Kohana 3 PHP Framework + // 'unittest' => SMDPATH.'unittest', // Unit testing + // 'userguide' => SMDPATH.'userguide', // User guide and API documentation + 'xml' => SMDPATH.'xml', // XML module for Kohana 3 PHP Framework + )); + +/** + * Load our modules defined in the DB + */ +Kohana::modules(array_merge(Kohana::modules(),Config::modules())); + +/** + * Enable specalised interfaces + */ +Route::set('sections', '/(/(/(/)))', + array( + 'directory' => '('.implode('|',array_values(URL::$method_directory)).')' + )) + ->defaults(array( + 'action' => 'index', + )); + +// Static file serving (CSS, JS, images) +Route::set('default/media', 'media(/)', array('file' => '.+')) + ->defaults(array( + 'controller' => 'media', + 'action' => 'get', + )); + +/** + * Set the routes. Each route must have a minimum of a name, a URI and a set of + * defaults for the URI. + */ +Route::set('default', '((/(/)))', array('id'=>'[a-zA-Z0-9_.-]+')) + ->defaults(array( + 'controller' => 'welcome', + 'action' => 'index', + )); + +/** + * If APC is enabled, and we need to clear the cache + */ +if (file_exists(APPPATH.'cache/CLEAR_APC_CACHE') AND function_exists('apc_clear_cache') AND (PHP_SAPI !== 'cli')) { + if (! apc_clear_cache() OR ! unlink(APPPATH.'cache/CLEAR_APC_CACHE')) + throw new Kohana_Exception('Unable to clear the APC cache.'); +} +?> diff --git a/application/cache/.htaccess b/application/cache/.htaccess new file mode 100644 index 00000000..281d5c33 --- /dev/null +++ b/application/cache/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/application/classes/Auth/ORM.php b/application/classes/Auth/ORM.php new file mode 100644 index 00000000..4f44b9b2 --- /dev/null +++ b/application/classes/Auth/ORM.php @@ -0,0 +1,22 @@ +_config['hash_method']) { + case '' : return $str; + case 'md5': return md5($str); + default: return hash_hmac($this->_config['hash_method'], $str, $this->_config['hash_key']); + } + } +} +?> diff --git a/application/classes/Auth/OSB.php b/application/classes/Auth/OSB.php new file mode 100644 index 00000000..3f2e01d2 --- /dev/null +++ b/application/classes/Auth/OSB.php @@ -0,0 +1,275 @@ +action ($role == TRUE) + * + * @param boolean If authentication should be done for this module:method (ie: controller:action). + * @return boolean + */ + public function logged_in($role=NULL,$debug=NULL) { + $status = FALSE; + + // Get the user from the session + $uo = $this->get_user(); + + // If we are not a valid user object, then we are not logged in + if (is_object($uo) AND ($uo instanceof Model_Account) AND $uo->loaded()) { + if (Config::sitemode() == Kohana::DEVELOPMENT) + SystemMessage::add(array('title'=>'Debug','type'=>'debug','body'=>Debug::vars(array('user'=>$uo->username,'r'=>$role)))); + + if (! empty($role)) { + // Get the module details + $mo = ORM::factory('Module',array('name'=>Request::current()->controller())); + if (! $mo->loaded() OR ! $mo->status) { + SystemMessage::add(array( + 'title'=>'Module is not defined or active in the Database', + 'type'=>'warning', + 'body'=>sprintf('Module not defined: %s',Request::current()->controller()), + )); + + } else { + if (Request::current()->directory()) + $method_name = sprintf('%s_%s',Request::current()->directory(),Request::current()->action()); + else + $method_name = Request::current()->action(); + + // Get the method number + $mmo = ORM::factory('Module_Method',array('module_id'=>$mo->id,'name'=>$method_name)); + if (! $mmo->loaded()) { + SystemMessage::add(array( + 'title'=>'Method is not defined or active in the Database', + 'type'=>'warning', + 'body'=>sprintf('Method not defined: %s for %s',Request::current()->action(),$mo->name), + )); + + } else { + // If the role has the authorisation to run the method + $gmo = ORM::factory('Group_Method') + ->where('method_id','=',$mmo->id); + + $roles = ''; + foreach ($gmo->find_all() as $gm) { + $roles .= ($roles ? '|' : '').$gm->group->name; + + // $gm->group->id == 0 means all users. + if ($gm->group->id == 0 OR $uo->has_any('group',$gm->group->list_childgrps(TRUE))) { + $status = TRUE; + $roles = ''; + + break; + } + } + + if (! $status) { + if (Config::sitemode() == Kohana::DEVELOPMENT) + SystemMessage::add(array( + 'title'=>'User is not authorised in Database', + 'type'=>'debug', + 'body'=>sprintf('Role(s) checked: %s
User: %s
Module: %s
Method: %s',$roles,$uo->username,$mo->name,$mmo->name), + )); + } + } + } + + if (Config::sitemode() == Kohana::DEVELOPMENT) + SystemMessage::add(array( + 'title'=>'Debug', + 'type'=>'debug', + 'body'=>sprintf('User: %s, Module: %s, Method: %s, Role: %s, Status: %s, Data: %s', + $uo->username,Request::current()->controller(),Request::current()->action(),$role,$status,$debug))); + + // There is no role, so the method should be allowed to run as anonymous + } else { + if (Config::sitemode() == Kohana::DEVELOPMENT) + SystemMessage::add(array( + 'title'=>'Debug', + 'type'=>'debug', + 'body'=>sprintf('User: %s, Module: %s, Method: %s, Status: %s, Data: %s', + $uo->username,Request::current()->controller(),Request::current()->action(),'No Role Default Access',$debug))); + + $status = TRUE; + } + + } else { + if (Config::sitemode() == Kohana::DEVELOPMENT) + SystemMessage::add(array('title'=>'Debug','type'=>'debug','body'=>'No user logged in')); + } + + return $status; + } + + /** + * Gets the currently logged in user from the session. + * Returns NULL if no user is currently logged in. + * + * @param boolean Check token users too + * @return mixed + */ + public function get_user($default=NULL,$tokenuser=TRUE) { + // Get the current user + $uo = parent::get_user($default); + + // If we are not logged in, see if there is token for the user + if (is_null($uo) AND $tokenuser AND ($token=Session::instance()->get('token')) OR (! empty($_REQUEST['token']) AND $token=$_REQUEST['token'])) + $uo = $this->_get_token_user($token); + + return $uo; + } + + /** + * Get the user that a token applies to + * + * This will check that the token is valid (not expired and for the request) + * + * @param $token The token + * @return Model_Account|NULL The user that the token is valid for. + */ + private function _get_token_user($token) { + // This has been implemented, as we sometimes we seem to come here twice + static $uo = NULL; + + if (! is_null($uo)) + return $uo; + + $mmto = ORM::factory('Module_Method_Token',array('token'=>$token)); + + // Ignore the token if it doesnt exist. + if ($mmto->loaded()) { + // Check that the token is for this URI + $mo = ORM::factory('Module',array('name'=>Request::current()->controller())); + $mmo = ORM::factory('Module_Method',array( + 'module_id'=>$mo->id, + 'name'=>Request::current()->directory() ? sprintf('%s_%s',Request::current()->directory(),Request::current()->action()) : Request::current()->action() + )); + + // Ignore the token if this is not the right method. + if ($mmo->id == $mmto->method_id) { + if (! is_null($mmto->date_expire) AND $mmto->date_expire < time()) { + SystemMessage::add(array( + 'title'=>_('Token Not Valid'), + 'type'=>'warning', + 'body'=>_('Token expired'))); + + // @todo Log the token deletion + Session::instance()->delete('token'); + $mmto->delete(); + + } elseif (! is_null($mmto->uses) AND $mmto->uses < 1) { + SystemMessage::add(array( + 'title'=>_('Token Not Valid'), + 'type'=>'warning', + 'body'=>_('Token expired'))); + + // @todo Log the token deletion + Session::instance()->delete('token'); + $mmto->delete(); + + } else { + // If this is a usage count token, reduce the count. + if (! is_null($mmto->uses)) + $mmto->uses -= 1; + + // Record the date this token was used + $mmto->date_last = time(); + $mmto->save(); + + Session::instance()->set('token',$token); + + $uo = ORM::factory('Account',$mmto->account_id); + $uo->log(sprintf('Token %s used for method %s [%s]',$mmto->token,$mmto->module_method->name(),Request::current()->param('id'))); + } + } + } + + return $uo; + } + + /** + * Logs a user in. + * + * @param string username + * @param string password + * @param boolean enable autologin + * @return boolean + */ + protected function _login($user,$password,$remember) { + if (! is_object($user)) { + $username = $user; + + // Load the user + $user = ORM::factory('Account'); + $user->where('username','=',$username)->find(); + + // If no user loaded, return + if (! $user->loaded()) + return FALSE; + } + + // Create a hashed password + if (is_string($password)) + $password = $this->hash($password); + + // If the passwords match, perform a login + if ($user->status AND $user->has_any('group',ORM::factory('Group',array('name'=>'Registered Users'))->list_childgrps(TRUE)) AND $user->password === $password) { + + // @todo This is not currently used. + if ($remember === TRUE) { + // Create a new autologin token + $token = ORM::factory('User_Token'); + + // Set token data + $token->user_id = $user->id; + $token->expires = time() + $this->_config['lifetime']; + $token->save(); + + // Set the autologin cookie + Cookie::set('authautologin', $token->token, $this->_config['lifetime']); + } + + // Record our session ID, we may need to update our DB when we get a new ID + $oldsess = session_id(); + + // Finish the login + $this->complete_login($user); + + // Do we need to update databases with our new sesion ID + $sct = Kohana::$config->load('config')->session_change_trigger; + if (session_id() != $oldsess AND count($sct)) + foreach ($sct as $t => $c) + if (Config::module_exist($t)) + foreach (ORM::factory(ucwords($t))->where($c,'=',$oldsess)->find_all() as $o) + $o->set('session_id',session_id()) + ->update(); + + return TRUE; + } + + // Login failed + return FALSE; + } + + /** + * Determine if a user is authorised to view an account + * + * @param Model_Account Account Ojbect to validate if the current user has access + * @return boolean TRUE if authorised, FALSE if not. + */ + public function authorised(Model_Account $ao) { + return (($uo = $this->get_user()) AND $uo->loaded() AND ($uo == $ao OR in_array($ao->id,$uo->RTM->customers($uo->RTM)))); + } +} +?> diff --git a/application/classes/Company.php b/application/classes/Company.php new file mode 100644 index 00000000..42d20934 --- /dev/null +++ b/application/classes/Company.php @@ -0,0 +1,139 @@ +so = $so; + + if (! $this->so->loaded()) + throw new Kohana_Exception(_('Site [:site] not defined in DB?'),array(':site'=>URL::base('http'))); + + Kohana::$environment = (int)$this->so->status; + } + + public static function instance() { + return new Company(ORM::factory('Setup',array('url'=>URL::base('http')))); + } + + public function admin() { + return $this->so->account->name(); + } + + public function address($ln='
') { + return implode($ln,array($this->street($ln),sprintf('%s, %s %s',$this->city(),$this->state(),$this->pcode()))); + } + + public function city() { + return $this->so->site_details('city'); + } + + public function contacts() { + return 'Tel: '.$this->phone(); + } + + public function country() { + return $this->so->country; + } + + public function date_format() { + return $this->so->date_format; + } + + public function decimals() { + return $this->so->decimal_place; + } + + public function email() { + return $this->so->site_details('email'); + } + + public function fax() { + return $this->so->site_details('fax'); + } + + public function language() { + return $this->so->language->iso; + } + + public function logo() { + return Config::logo(); + } + + public function logo_file() { + list ($path,$suffix) = explode('.',Config::$logo); + + return ($x=Kohana::find_file(sprintf('media/site/%s',$this->site()),$path,$suffix)) ? $x : Kohana::find_file('media',$path,$suffix); + } + + public function name() { + return $this->so->site_details('name'); + } + + public function module_config($item) { + return $this->so->module_config($item); + } + + public function pcode() { + return $this->so->site_details('pcode'); + } + + public function phone() { + return $this->so->site_details('phone'); + } + + public function site($format=FALSE) { + return $format ? sprintf('%02s',$this->so->id) : $this->so->id; + } + + public function so() { + return $this->so; + } + + public function state() { + return $this->so->site_details('state'); + } + + public function street($ln='
') { + return $this->so->site_details('address2') ? implode($ln,array($this->so->site_details('address1'),$this->so->site_details('address2'))) : $this->so->site_details('address1'); + } + + public function sitemode() { + return $this->so->status; + } + + public function taxid() { + // Tax ID details are stored in invoice config + $mc = $this->so->module_config('invoice'); + + if (empty($mc['TAX_ID_NAME'])) + return empty($mc['TAX_ID']) ? '' : $mc['TAX_ID']; + else + return sprintf('%s: %s',$mc['TAX_ID_NAME'],empty($mc['TAX_ID']) ? '' : $mc['TAX_ID']); + } + + public function time_format() { + return $this->so->time_format; + } + + public static function bsb() { + // @todo Details should be obtained from DB + return Kohana::$config->load('config')->bsb; + } + + public static function account() { + // @todo Details should be obtained from DB + return Kohana::$config->load('config')->accnum; + } +} +?> diff --git a/application/classes/Config.php b/application/classes/Config.php new file mode 100644 index 00000000..45ee3119 --- /dev/null +++ b/application/classes/Config.php @@ -0,0 +1,177 @@ +load('config')->cache_type) ? 'file' : Kohana::$config->load('config')->cache_type; + } + + public static function copywrite() { + return '(c) Open Source Billing Development Team'; + } + + public static function country() { + return Company::instance()->country(); + } + + public static function date($date) { + return date(Company::instance()->date_format(),($date ? $date : time())); + } + + /** + * Show a date using a site configured format + * @note We need this function here, since we call static:: methods, which need to resolve to the child class. + */ + public static function datetime($date) { + return sprintf('%s %s',static::date($date),static::time($date)); + } + + public static function language() { + return Company::instance()->language(); + } + + /** + * The URI to show for the login prompt. + * Normally if the user is logged in, we can replace it with something else + */ + public static function login_uri() { + return ($ao = Auth::instance()->get_user() AND is_object($ao)) ? HTML::anchor(URL::link('user','account/edit'),$ao->name()) : HTML::anchor('login',_('Login')); + } + + public static function logo() { + return HTML::image(static::logo_uri(),array('class'=>'headlogo','alt'=>_('Logo'))); + } + + public static function logo_uri($protocol=NULL) { + list ($path,$suffix) = explode('.',static::$logo); + + return URL::site(Route::get('default/media')->uri(array('file'=>$path.'.'.$suffix),array('alt'=>static::sitename())),$protocol); + } + + /** + * Find a list of all database enabled modules + * + * Our available modules are defined in the DB (along with method + * security). + */ + public static function modules() { + static $result = array(); + + if (! count($result)) { + // We need to know our site here, so that we can subsequently load our enabled modules. + if (PHP_SAPI === 'cli') { + if (! $site = Minion_CLI::options('site')) + // @todo Need to figure out how to make this CLI error nicer. + throw new Minion_Exception_InvalidTask(_('Cant figure out the site, use --site= for CLI')); + else + $_SERVER['SERVER_NAME'] = $site; + } + + foreach (ORM::factory('Module')->list_external() as $mo) + $result[$mo->name] = MODPATH.$mo->name; + } + + return $result; + } + + public static function module_config($item) { + return Company::instance()->module_config($item); + } + + public static function module_exist($module) { + return array_key_exists(strtolower($module),static::modules()) ? TRUE : FALSE; + } + + public static function siteid($format=FALSE) { + return Company::instance()->site($format); + } + + /** + * Work out our site mode (dev,test,prod) + */ + public static function sitemode() { + return Company::instance()->sitemode(); + } + + public static function sitename() { + return Company::instance()->name(); + } + + /** + * See if our emails for the template should be sent to configured admin(s) + * + * @param string template - Template to test for + * @return mixed|array - Email to send test emails to + */ + public static function testmail($template) { + $config = Kohana::$config->load('config')->email_admin_only; + + if (is_null($config) OR ! is_array($config) OR empty($config[$template])) + return FALSE; + else + return $config[$template]; + } + + public static function theme() { + // If we are using user admin pages (and login), we'll choose the admin theme. + if (! empty(URL::$method_directory[strtolower(Request::current()->directory())]) OR in_array(strtolower(Request::current()->controller()),array('login'))) + return 'theme/'.Kohana::$config->load('config')->theme_admin; + else + return 'theme/'.Kohana::$config->load('config')->theme; + } + + public static function time($date) { + return date(Company::instance()->time_format(),($date ? $date : time())); + } +} +?> diff --git a/application/classes/Controller/Account.php b/application/classes/Controller/Account.php new file mode 100644 index 00000000..4f68068d --- /dev/null +++ b/application/classes/Controller/Account.php @@ -0,0 +1,33 @@ +ao->group->find_all(); + + foreach ($cg as $go) { + $output .= sprintf('Group %s: %s
',$go->id,$go->display('name')); + + foreach ($go->list_childgrps(TRUE) as $cgo) + $output .= sprintf('- %s: %s (%s)
',$cgo->id,$cgo->display('name'),$cgo->parent_id); + + $output .= sprintf('END Group %s

',$go->id); + } + + Block::add(array( + 'title'=>'Group Structure', + 'body'=>$output, + )); + } +} +?> diff --git a/application/classes/Controller/Admin/Account.php b/application/classes/Controller/Admin/Account.php new file mode 100644 index 00000000..213d70ff --- /dev/null +++ b/application/classes/Controller/Admin/Account.php @@ -0,0 +1,17 @@ +FALSE, // @todo Testing + ); +} +?> diff --git a/application/classes/Controller/Admin/Module.php b/application/classes/Controller/Admin/Module.php new file mode 100644 index 00000000..eac83967 --- /dev/null +++ b/application/classes/Controller/Admin/Module.php @@ -0,0 +1,130 @@ +TRUE, + 'edit'=>TRUE, + 'list'=>TRUE, + ); + + /** + * Get the list of methods for a class + */ + protected function _methods($class) { + // Get a list of methods this module has + $ch = 'Controller_%s'; + $methods = array(); + + // List of classes where all our methods are, including this one. + $classes = URL::$method_directory; + array_unshift($classes,''); + + foreach ($classes as $c) { + $cn = Kohana::classname('Controller_'.$c ? $c.'_'.$class : $class); + + if (class_exists($cn)) { + $r = new ReflectionClass($cn); + + foreach ($r->getMethods() as $method) + if (preg_match('/^Controller_(.*_)?'.$class.'$/i',$method->class) AND ! preg_match('/^_/',$method->name)) + array_push($methods,str_replace('action_',($c ? $c.'_' : $c),$method->name)); + } + } + + return $methods; + } + + /** + * List our installed modules + */ + public function action_list() { + $mo = ORM::factory('Module'); + + Block::add(array( + 'title'=>_('Defined Modules'), + 'body'=>Table::display( + $mo->find_all(), + 25, + array( + 'id'=>array('label'=>'ID','url'=>URL::link('admin','module/edit/')), + 'name'=>array('label'=>'Name'), + 'status'=>array('label'=>'Active'), + ), + array( + 'page'=>TRUE, + 'type'=>'list', + )), + )); + } + + /** + * Edit a Module Configuration + * + * @todo Highlight those methods that have security, but the class does not have auth_required set to YES or the method isnt defined in secure_actions + */ + public function action_edit() { + $mid = $this->request->param('id'); + $mo = ORM::factory('Module',$mid); + + if (! $mo->loaded()) { + SystemMessage::add(array( + 'title'=>_('Invalid Module ID'), + 'type'=>'error', + 'body'=>sprintf(_('Module with ID %s doesnt appear to exist?'),$mid), + )); + + return; + } + + $output = ''; + $methods = $this->_methods($mo->name); + + // Show methods defined in the DB already. + Block::add(array( + 'title'=>sprintf('%s: %s ',_('Defined Module Methods For'),$mo->display('name')), + 'body'=>Table::display( + $mo->module_method->find_all(), + 25, + array( + 'id'=>array('label'=>'ID','url'=>URL::link('admin','module_method/edit/')), + 'name'=>array('label'=>'Name'), + 'notes'=>array('label'=>'Notes'), + 'menu_display'=>array('label'=>'Menu'), + ), + array( + 'page'=>TRUE, + 'type'=>'list', + )), + )); + + // Show new methods NOT defined in the DB already. + foreach ($mo->module_method->find_all() as $meo) + if (($method = array_search($meo->name,$methods)) !== false) + unset($methods[$method]); + + if (count($methods)) + Block::add(array( + 'title'=>sprintf('%s: %s ',_('Undefined Module Methods For'),$mo->display('name')), + 'body'=>Table::display( + $methods, + 25, + array( + '__VALUE__'=>array('label'=>'Name','url'=>URL::link('admin','module_method/add/'.$mo->id)), + ), + array( + 'page'=>TRUE, + 'type'=>'list', + )), + )); + } +} +?> diff --git a/application/classes/Controller/Admin/Module/Method.php b/application/classes/Controller/Admin/Module/Method.php new file mode 100644 index 00000000..95fcc9d9 --- /dev/null +++ b/application/classes/Controller/Admin/Module/Method.php @@ -0,0 +1,137 @@ +request->param('id'); + $method = $this->request->param('sid'); + + $mo = ORM::factory('Module',$id); + $mmo = ORM::factory('Module_Method'); + + if (! $mo->loaded() OR ! in_array($method,$this->_methods($mo->name))) + throw new Kohana_Exception('Method (:method) does not exist in :class',array(':method'=>$method,':class'=>$mo->name)); + + $mmo->name = $method; + $mmo->module_id = $mo->id; + $mmo->values($_POST); + + $output = ''; + + if ($_POST AND $mmo->values($_POST)->check()) { + $mmo->save(); + + if ($mmo->saved()) { + SystemMessage::add(array( + 'title'=>_('Method Added'), + 'type'=>'info', + 'body'=>sprintf(_('Method %s defined to database'),$mmo->name), + )); + + HTTP::redirect(URL::link('admin','/module/edit/'.$mo->id)); + + } else { + SystemMessage::add(array( + 'title'=>_('Method Not Saved'), + 'type'=>'error', + 'body'=>sprintf(_('Unable to define Method %s to database?'),$mmo->name), + )); + } + } + + $output .= View::factory('module/admin/method_add') + ->set('module',$mo) + ->set('method',$mmo); + + Block::add(array( + 'title'=>sprintf(_('Add Method (%s) to Database for (%s)'),strtoupper($mmo->name),strtoupper($mo->name)), + 'body'=>$output, + )); + } + + /** + * Edit a Module Configuration + * + * @param int $mid Module ID + */ + public function action_edit() { + $mid = $this->request->param('id'); + $mmo = ORM::factory('Module_Method',$mid); + + if (! $mmo->loaded()) { + SystemMessage::add(array( + 'title'=>_('Invalid Method ID'), + 'type'=>'error', + 'body'=>sprintf(_('Method with ID %s doesnt appear to exist?'),$mid), + )); + + return; + } + + $output = ''; + + // The groups that can run this method. + $groups = ORM::factory('Group'); + + if ($_POST) { + foreach ($groups->find_all() as $go) { + // If the group was defined and no longer + if ($mmo->has('group',$go) AND (! isset($_POST['groups']) OR ! in_array($go->id,$_POST['groups']))) { + $gm = ORM::factory('Group_Method',array('method_id'=>$mmo->id,'group_id'=>$go->id)); + + if (! $gm->delete()) + SystemMessage::add(array( + 'title'=>_('Unable to DELETE Group Method'), + 'type'=>'error', + 'body'=>sprintf(_('Unable to delete Group Method for method %s and group %s'),$mmo->name,$go->name), + )); + + // If the group was not defined and now is + } elseif (! $mmo->has('group',$go) AND isset($_POST['groups']) AND in_array($go->id,$_POST['groups'])) { + $gm = ORM::factory('Group_Method') + ->values(array( + 'method_id'=>$mmo->id, + 'group_id'=>$go->id, + )); + + if (! $gm->check() OR ! $gm->save()) + SystemMessage::add(array( + 'title'=>_('Unable to SAVE Group Method'), + 'type'=>'error', + 'body'=>sprintf(_('Unable to save Group Method for method %s and group %s'),$mmo->name,$go->name), + )); + } + } + } + + $output .= Form::open(); + + $output .= View::factory('module/admin/method_detail_head'); + foreach ($groups->find_all() as $go) { + $output .= View::factory('module/admin/method_detail_body') + ->set('group',$go) + ->set('defined',$mmo->has('group',$go)); + } + $output .= View::factory('module/admin/method_detail_foot'); + + $output .= '
'.Form::submit('submit',_('Update'),array('class'=>'form_button')).'
'; + $output .= Form::close(); + + Block::add(array( + 'title'=>sprintf(_('%s->%s Method'),strtoupper($mmo->module->name),strtoupper($mmo->name)), + 'body'=>$output, + )); + } +} +?> diff --git a/application/classes/Controller/Admin/Setup.php b/application/classes/Controller/Admin/Setup.php new file mode 100644 index 00000000..6594e2e2 --- /dev/null +++ b/application/classes/Controller/Admin/Setup.php @@ -0,0 +1,73 @@ +TRUE, + ); + + /** + * View/Update the site configuration + */ + public function action_edit() { + $o = Company::instance()->so(); + $output = ''; + + if ($_POST) { + // Entry updated + if ($o->values($_POST)->check() AND $o->save()) + SystemMessage::add(array( + 'title'=>'Site Configuration Recorded', + 'type'=>'info', + 'body'=>'Site Config successfully recorded.', + )); + } + + $output .= Form::open(); + + // site_details + $output .= View::factory($this->viewpath()) + ->set('o',$o);; + + $output .= '
'.Form::submit('submit','submit',array('class'=>'form_button')).'
'; + $output .= Form::close(); + + Block::add(array( + 'title'=>_('Update Site Configuration'), + 'body'=>$output, + )); + + // module_config + $output = ''; + $output .= View::factory($this->viewpath().'/module/head'); + + foreach ($o->module_config as $mid => $detail) { + $mo = ORM::factory('Module',$mid); + + $output .= View::factory($this->viewpath().'/module/body') + ->set('mo',$mo); + + Script::add(array('type'=>'stdin','data'=>' + $(document).ready(function() { + $("div[id='.$mo->name.']").load("'.URL::link('admin',$mo->name.'/setup',TRUE).'"); + });' + )); + } + + $output .= View::factory($this->viewpath().'/module/foot'); + + Block::add(array( + 'title'=>_('Update Module Specific Configuration'), + 'body'=>$output, + )); + } +} +?> diff --git a/application/classes/Controller/Admin/Welcome.php b/application/classes/Controller/Admin/Welcome.php new file mode 100644 index 00000000..70da6455 --- /dev/null +++ b/application/classes/Controller/Admin/Welcome.php @@ -0,0 +1,130 @@ +TRUE, + ); + + public function action_index() { + $t = time(); + + // Show outstanding invoices + $o = ORM::factory('Invoice'); + + Block_Sub::add(array( + 'title'=>'Invoices Overdue - No Auto Billing', + 'body'=>Table::display( + $o->list_overdue_billing($t), + 25, + array( + 'due_date'=>array('label'=>'Due Date'), + 'account->accnum()'=>array('label'=>'Num'), + 'account->name()'=>array('label'=>'Account'), + 'account->display("status")'=>array('label'=>'Active'), + 'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')), + 'total(TRUE)'=>array('label'=>'Total','class'=>'right'), + 'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'), + ), + array('page'=>TRUE)), + 'position'=>1, + 'order'=>1, + )); + + Block_Sub::add(array( + 'title'=>'Invoices Overdue - Auto Billing', + 'body'=>Table::display( + $o->list_overdue_billing($t,TRUE), + 25, + array( + 'due_date'=>array('label'=>'Due Date'), + 'account->accnum()'=>array('label'=>'Num'), + 'account->name()'=>array('label'=>'Account'), + 'account->display("status")'=>array('label'=>'Active'), + 'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')), + 'total(TRUE)'=>array('label'=>'Total','class'=>'right'), + 'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'), + ), + array('page'=>TRUE)), + 'position'=>2, + 'order'=>1, + )); + + Block_Sub::add(array( + 'title'=>'Invoices Due', + 'body'=>Table::display( + $o->list_due(), + 25, + array( + 'due_date'=>array('label'=>'Due Date'), + 'account->accnum()'=>array('label'=>'Num'), + 'account->name()'=>array('label'), + 'account->display("status")'=>array('label'=>'Active'), + 'id'=>array('label'=>'ID','url'=>URL::link('user','invoice/view/')), + 'total(TRUE)'=>array('label'=>'Total','class'=>'right'), + 'due(TRUE)'=>array('label'=>'Amount Due','class'=>'right'), + ), + array('show_other'=>'due()')), + 'position'=>3, + 'order'=>1, + )); + + // Show un-applied payments + Block_Sub::add(array( + 'title'=>'Unapplied Payments', + 'body'=>Table::display( + ORM::factory('Payment')->list_unapplied(), + 25, + array( + 'date_payment'=>array('label'=>'Pay Date'), + 'account->accnum()'=>array('label'=>'Num'), + 'account->name()'=>array('label'=>'Account'), + 'account->display("status")'=>array('label'=>'Active'), + 'id'=>array('label'=>'ID','url'=>URL::link('admin','payment/view/')), + 'total_amt'=>array('label'=>'Total','class'=>'right'), + 'balance(TRUE)'=>array('label'=>'Balance','class'=>'right'), + ), + array('show_other'=>'balance()')), + 'position'=>1, + 'order'=>2, + )); + + Block::add(array( + 'title'=>sprintf('%s: %s %s',$this->ao->accnum(),$this->ao->first_name,$this->ao->last_name), + 'subtitle'=>_('Administrator Overview'), + 'body'=>(string)Block_Sub::factory(), + )); + + // We are a site administrator + $output = ''; + if ($this->ao->rtm_id == NULL) { + $rtmo = ORM::factory('RTM',array('account_id','=',$this->ao->id))->find(); + + // Quick validation, if we are an admin, we should have an entry in the RTM table. + if (! $rtmo->loaded()) + throw new Kohana_Exception('User :aid not set up properly',array(':aid'=>$this->ao->id)); + + $output = View::factory('welcome/admin') + ->set('o',$rtmo); + + } else { + $rtmo = ORM::factory('RTM',$this->ao->rtm_id); + } + + if ($output) + Block::add(array( + 'title'=>sprintf('Reseller %s',$this->ao->display('company')), + 'body'=>$output, + )); + } +} +?> diff --git a/application/classes/Controller/Debug.php b/application/classes/Controller/Debug.php new file mode 100644 index 00000000..bf24b47c --- /dev/null +++ b/application/classes/Controller/Debug.php @@ -0,0 +1,36 @@ +__METHOD__, + 'site'=>Config::site(), + 'siteID'=>Company::instance()->site(), + 'siteMode'=>Config::sitemodeverbose(), + 'modules'=>Config::appmodules(), + )); + + Block::add(array( + 'title'=>_('Site debug'), + 'body'=>$output, + )); + } +} +?> diff --git a/application/classes/Controller/Login.php b/application/classes/Controller/Login.php new file mode 100644 index 00000000..076fb38f --- /dev/null +++ b/application/classes/Controller/Login.php @@ -0,0 +1,92 @@ +logged_in()) + HTTP::redirect('welcome/index'); + + HTTP::redirect('login'); + } + + /** + * Enable user password reset + */ + public function action_reset() { + // Minutes to keep our token + $token_expire = 15; + + // If user already signed-in + if (Auth::instance()->logged_in()) + HTTP::redirect('welcome/index'); + + // If the user posted their details to reset their password + if ($_POST) { + // If the username is correct, create a method token + if (! empty($_POST['username']) AND ($ao=ORM::factory('Account',array('username'=>$_POST['username']))) AND $ao->loaded()) { + $mmto = ORM::factory('Module_Method_Token') + ->method(array('account','user_resetpassword')) + ->account($ao) + ->uses(2) + ->expire(time()+$token_expire*60); + + if ($mmto->generate()) { + // Send our email with the token + // @todo Need to provide an option if Email_Template is not installed/activited. + // @todo Need to provide an option if account_reset_password template doesnt exist. + $et = Email_Template::instance('account_reset_password'); + $et->to = array('account'=>array($mmto->account_id)); + $et->variables = array( + 'SITE'=>URL::base(TRUE,TRUE), + 'SITE_ADMIN'=>Company::instance()->admin(), + 'SITE_NAME'=>Company::instance()->name(), + 'TOKEN'=>$mmto->token, + 'TOKEN_EXPIRE_MIN'=>$token_expire, + 'USER_NAME'=>sprintf('%s %s',$mmto->account->first_name,$mmto->account->last_name), + ); + $et->send(); + + // Log the password reset + $ao->log('Password reset token sent'); + } + + // Redirect to our password reset, the Auth will validate the token. + } elseif (! empty($_REQUEST['token'])) { + HTTP::redirect(URL::link('user','account/resetpassword?token='.$_REQUEST['token'])); + } + + // Show our token screen even if the email was invalid. + if (isset($_POST['username'])) + Block::add(array( + 'title'=>_('Reset your password'), + 'body'=>View::factory('login_reset_sent'), + 'style'=>array('css/login.css'=>'screen'), + )); + else + HTTP::redirect('login'); + + } else { + Block::add(array( + 'title'=>_('Reset your password'), + 'body'=>View::factory('login_reset'), + 'style'=>array('css/login.css'=>'screen'), + )); + } + } +} +?> diff --git a/application/classes/Controller/Module.php b/application/classes/Controller/Module.php new file mode 100644 index 00000000..8c4829fa --- /dev/null +++ b/application/classes/Controller/Module.php @@ -0,0 +1,14 @@ + diff --git a/application/classes/Controller/Reseller/Account.php b/application/classes/Controller/Reseller/Account.php new file mode 100644 index 00000000..6059075b --- /dev/null +++ b/application/classes/Controller/Reseller/Account.php @@ -0,0 +1,81 @@ +TRUE, + 'list'=>TRUE, + 'listlog'=>TRUE, + ); + + /** + * Used by AJAX calls to find accounts + * @note list_autocomplete() will limit to authorised accounts + */ + public function action_ajaxlist() { + $result = array(); + + if (isset($_REQUEST['term']) AND trim($_REQUEST['term'])) + $result += ORM::factory('Account')->list_autocomplete($_REQUEST['term']); + + $this->auto_render = FALSE; + $this->response->headers('Content-Type','application/json'); + $this->response->body(json_encode(array_values($result))); + } + + /** + * Show a list of accounts + */ + public function action_list() { + Block::add(array( + 'title'=>_('Customer List'), + 'body'=>Table::display( + $this->filter(ORM::factory('Account')->list_active(),$this->ao->RTM->customers($this->ao->RTM),'sortkey(TRUE)','id'), + 25, + array( + 'id'=>array('label'=>'ID','url'=>URL::link('reseller','invoice/list/')), + 'accnum()'=>array('label'=>'Num'), + 'name(TRUE)'=>array('label'=>'Account'), + 'email'=>array('label'=>'Email'), + 'invoices_due_total(NULL,TRUE)'=>array('label'=>'Invoices','class'=>'right'), + 'services_count(TRUE)'=>array('label'=>'Services','class'=>'right'), + ), + array( + 'page'=>TRUE, + 'type'=>'select', + 'form'=>URL::link('reseller','invoice/list'), + )), + )); + } + + /** + * Show a list of account logins + */ + public function action_listlog() { + Block::add(array( + 'title'=>_('Account Login Log'), + 'body'=>Table::display( + $this->filter(ORM::factory('Account_Log')->find_all(),$this->ao->RTM->customers($this->ao->RTM),NULL,'account_id'), + 25, + array( + 'id'=>array('label'=>'ID'), + 'date_orig'=>array('label'=>'Date'), + 'account->name()'=>array('label'=>'Account'), + 'ip'=>array('label'=>'IP Address'), + 'details'=>array('label'=>'Details'), + ), + array( + 'page'=>TRUE, + )), + )); + } +} +?> diff --git a/application/classes/Controller/Reseller/Welcome.php b/application/classes/Controller/Reseller/Welcome.php new file mode 100644 index 00000000..3194d3ae --- /dev/null +++ b/application/classes/Controller/Reseller/Welcome.php @@ -0,0 +1,25 @@ +TRUE, + ); + + public function action_index() { + Block::add(array( + 'title'=>sprintf('%s: %s',$this->ao->accnum(),$this->ao->name(TRUE)), + 'body'=>View::factory('welcome/reseller'), + )); + } +} +?> diff --git a/application/classes/Controller/TemplateDefault.php b/application/classes/Controller/TemplateDefault.php new file mode 100644 index 00000000..e7ed22d7 --- /dev/null +++ b/application/classes/Controller/TemplateDefault.php @@ -0,0 +1,134 @@ +template = Config::theme().'/page'; + + return parent::__construct($request,$response); + } + + protected function _headimages() { + // This is where we should be able to change our country + // @todo To implement + $co = Config::country(); + HeadImages::add(array( + 'img'=>sprintf('img/country/%s.png',strtolower($co->two_code)), + 'attrs'=>array('onclick'=>"target='_blank';",'title'=>$co->display('name')) + )); + + return HeadImages::factory(); + } + + protected function _left() { + if ($this->template->left) + return $this->template->left; + + elseif (Auth::instance()->logged_in(NULL,get_class($this).'|'.__METHOD__)) + return Controller_Tree::js(); + } + + protected function _right() { + return ($this->template->right) ? $this->template->right : ''; + } + + public function before() { + // If our action doesnt exist, no point processing any further. + if (! method_exists($this,'action_'.Request::current()->action())) + return; + + if ($this->auth_required) { + if (! count($this->secure_actions) OR (! isset($this->secure_actions[Request::current()->action()]))) + throw new Kohana_Exception('Class has no security defined :class, or no security configured for :method',array(':class'=>get_class($this),':method'=>Request::current()->action())); + + $this->ao = Auth::instance()->get_user(); + + if (! is_null($this->ao) AND (is_string($this->ao) OR ! $this->ao->loaded())) + throw HTTP_Exception::factory(501,'Account doesnt exist :account ?',array(':account'=>(is_string($this->ao) OR is_null($this->ao)) ? $this->ao : Auth::instance()->get_user()->id)); + } + + parent::before(); + } + + public function after() { + $dc = Kohana::$config->load('config','user_default_method'); + $m = sprintf('%s/%s',Request::current()->directory(),Request::current()->controller()); + + BreadCrumb::URL(Request::current()->directory(),sprintf('%s/%s',Request::current()->directory(),$dc),FALSE); + BreadCrumb::URL($m,method_exists($this,'action_menu') ? $m.'/menu' : sprintf('%s/%s',Request::current()->directory(),$dc),FALSE); + + parent::after(); + } + + /** + * This will filter a search query to only return those accounts for a reseller + */ + protected function filter($o,$af,$sort=NULL,$afid=NULL) { + $result = array(); + + foreach ($o as $x) { + if (! is_null($afid) AND isset($x->$afid)) { + if ((is_array($af) AND in_array($x->$afid,$af)) OR ($x->$afid == $af)) + array_push($result,$x); + + } elseif (method_exists($x,'list_reseller')) { + if (in_array($af,$x->list_reseller())) + array_push($result,$x); + + } + } + + if ($sort) + Sort::MAsort($result,$sort); + + return $result; + } + + protected function setup(array $config_items=array()) { + $module = Request::current()->controller(); + + if ($_POST AND isset($_POST['module_config'][$module])) + Config::instance()->module_config($module,$_POST['module_config'][$module])->save(); + + if ($config_items) { + $output = ''; + $mc = Config::instance()->module_config($module); + + $output .= Form::open(); + $output .= View::factory('setup/admin/module/head'); + + foreach ($config_items as $k=>$v) + $output .= View::factory('setup/admin/module/body') + ->set('module',$module) + ->set('mc',$mc) + ->set('key',$k) + ->set('info',$v) + ->set('val',isset($mc[$k]) ? $mc[$k] : ''); + + $output .= View::factory('setup/admin/module/foot'); + + $output .= Form::submit('submit',_('Submit'),array('class'=>'form_button')); + $output .= Form::close(); + + Block::add(array( + 'title'=>sprintf('%s: %s',strtoupper($module),_('Configuration')), + 'body'=>$output, + )); + } + } +} +?> diff --git a/application/classes/Controller/TemplateDefault/Admin.php b/application/classes/Controller/TemplateDefault/Admin.php new file mode 100644 index 00000000..3bbcb4d4 --- /dev/null +++ b/application/classes/Controller/TemplateDefault/Admin.php @@ -0,0 +1,23 @@ +'Retire this class extension', + 'type'=>'info', + 'body'=>__METHOD__, + )); + + return parent::after(); + } +} +?> diff --git a/application/classes/Controller/TemplateDefault/Affiliate.php b/application/classes/Controller/TemplateDefault/Affiliate.php new file mode 100644 index 00000000..d95e4ad8 --- /dev/null +++ b/application/classes/Controller/TemplateDefault/Affiliate.php @@ -0,0 +1,23 @@ +'Retire this class extension', + 'type'=>'info', + 'body'=>__METHOD__, + )); + + return parent::after(); + } +} +?> diff --git a/application/classes/Controller/TemplateDefault/User.php b/application/classes/Controller/TemplateDefault/User.php new file mode 100644 index 00000000..3983d57d --- /dev/null +++ b/application/classes/Controller/TemplateDefault/User.php @@ -0,0 +1,14 @@ + diff --git a/application/classes/Controller/Tree.php b/application/classes/Controller/Tree.php new file mode 100644 index 00000000..f6e27a8b --- /dev/null +++ b/application/classes/Controller/Tree.php @@ -0,0 +1,131 @@ +request->param('id')) AND isset($_REQUEST['id'])) ? substr($_REQUEST['id'],2) : $this->request->param('id'); + $user = Auth::instance()->get_user(); + + if ($user) { + if (! $id) { + $modules = array(); + foreach ($user->groups() as $go) + foreach ($go->list_parentgrps(TRUE) as $cgo) + foreach ($cgo->module_method->find_all() as $mmo) + if ($mmo->menu_display AND empty($modules[$mmo->module_id])) + $modules[$mmo->module_id] = $mmo->module; + + Sort::MAsort($modules,'name'); + + foreach ($modules as $id => $mo) + if (! $mo->parent_id) + array_push($data,array('id'=>$id,'name'=>$mo->name,'state'=>'closed')); + + } else { + $idx = NULL; + if (preg_match('/_/',$id)) + list($id,$idx) = explode('_',$id,2); + + $mo = ORM::factory('Module',$id); + + $methods = array(); + if ($mo->loaded()) { + foreach ($mo->module_method->find_all() as $mmo) + if ($mmo->menu_display) + foreach ($mmo->group->find_all() as $gmo) + if ($user->has_any('group',$gmo->list_childgrps(TRUE))) + $methods[$mmo->id] = $mmo; + + Sort::MASort($modules,'name'); + + $subdata = array(); + foreach ($methods as $id => $mmo) { + if (preg_match('/_/',$mmo->name)) { + list($mode,$action) = explode('_',$mmo->name); + + $url = URL::link($mode,$mmo->module->name.'/'.$action,TRUE); + + } else { + $url = URL::site($mmo->module->name.'/'.$mmo->name); + } + + // We can split our menus into sub menus using the _ char. + if (preg_match('/_/',$mmo->name)) { + list($sub,$name) = explode('_',$mmo->name,2); + $subdata[$sub][$name]['name'] = preg_replace('/^(.*: )/','',$mmo->notes); + $subdata[$sub][$name]['id'] = sprintf('%s_%s',$mmo->module_id,$id); + $subdata[$sub][$name]['href'] = (empty($details['page']) ? $url : $details['page']); + + } else { + // We dont want to show these items again, if we can through on a submenu + if (! $idx) + array_push($data,array( + 'id'=>sprintf('%s_%s',$mmo->module_id,$id), + 'name'=>$mmo->name, + 'state'=>'none', + 'attr_id'=>sprintf('%s_%s',$mmo->module->name,$id), + 'attr_href'=>(empty($details['page']) ? $url : $details['page']) + )); + } + } + + // If our sub menus only have 1 branch, then we'll display it as normal. + if (count($subdata) == 1) { + $sk = array_keys($subdata); + $idx = array_shift($sk); + } + + if ($idx) + foreach ($subdata[$idx] as $k=>$v) { + array_push($data,array( + 'id'=>$v['id'], + 'name'=>$v['name'], + 'state'=>'none', + 'attr_id'=>$v['id'], + 'attr_href'=>$v['href'] + )); + } + + else + foreach ($subdata as $t=>$x) + array_push($data,array('id'=>$mmo->module_id.'_'.$t,'name'=>$t,'state'=>'closed')); + + } + } + } + + $this->output = array(); + + foreach ($data as $branch) { + array_push($this->output,array( + 'attr'=>array('id'=>sprintf('B_%s',$branch['id'])), + 'state'=>$branch['state'], + 'data'=>array('title'=>$branch['name']), + 'attr'=>array('id'=>sprintf('N_%s',$branch['id']),'href'=>empty($branch['attr_href']) ? URL::site(sprintf('%s/menu',$branch['name'])) : $branch['attr_href']), + ) + ); + } + + return parent::action_json($data); + } +} +?> diff --git a/application/classes/Controller/User/Account.php b/application/classes/Controller/User/Account.php new file mode 100644 index 00000000..49075694 --- /dev/null +++ b/application/classes/Controller/User/Account.php @@ -0,0 +1,104 @@ +TRUE, + 'resetpassword'=>TRUE, + ); + + /** + * Enable User to Edit their Account Details + */ + public function action_edit() { + // Store our new values + $this->ao->values($_POST); + + // Run validation and save + if ($this->ao->changed()) + if ($this->ao->check()) { + SystemMessage::add(array( + 'title'=>_('Record updated'), + 'type'=>'info', + 'body'=>_('Your account record has been updated.') + )); + + $this->ao->save(); + + } else { + $output = ''; + foreach ($this->ao->validation()->errors('forms/login') as $field => $error) + $output .= sprintf('
  • %s %s
  • ',$field,$error); + + if ($output) + $output = sprintf('
      %s
    ',$output); + + SystemMessage::add(array( + 'title'=>_('Record NOT updated'), + 'type'=>'error', + 'body'=>_('Your updates didnt pass validation.').'
    '.$output, + )); + } + + Block::add(array( + 'title'=>sprintf('%s: %s - %s',_('Account Edit'),$this->ao->accnum(),$this->ao->name(TRUE)), + 'body'=>View::factory($this->viewpath()) + ->set('record',$this->ao), + )); + } + + public function action_resetpassword() { + // @todo Fix this next logic, since matches_ifset is not being called when the value is on the form, but empty + if (empty($_POST['password_confirm'])) + $_POST['password_confirm'] = ' '; + + // Store our new values + $this->ao->values($_POST); + + // Run validation and save + if ($this->ao->changed()) + if ($this->ao->check()) { + SystemMessage::add(array( + 'title'=>_('Record updated'), + 'type'=>'info', + 'body'=>_('Your account record has been updated.') + )); + + $this->ao->save(); + + // Log the password reset + $this->ao->log('Password reset'); + + HTTP::redirect('login'); + + } else { + $output = ''; + foreach ($this->ao->validation()->errors('forms/login') as $field => $error) + $output .= sprintf('
  • %s %s
  • ',$field,$error); + + if ($output) + $output = sprintf('
      %s
    ',$output); + + SystemMessage::add(array( + 'title'=>_('Record NOT updated'), + 'type'=>'error', + 'body'=>_('Your updates didnt pass validation.').'
    '.$output, + )); + } + + Block::add(array( + 'title'=>_('Password Reset'), + 'body'=>View::factory($this->viewpath()) + ->set('record',$this->ao), + )); + } +} +?> diff --git a/application/classes/Controller/User/Welcome.php b/application/classes/Controller/User/Welcome.php new file mode 100644 index 00000000..af752976 --- /dev/null +++ b/application/classes/Controller/User/Welcome.php @@ -0,0 +1,25 @@ +TRUE, + ); + + public function action_index() { + Block::add(array( + 'title'=>sprintf('%s: %s',$this->ao->accnum(),$this->ao->name(TRUE)), + 'body'=>View::factory('welcome/user'), + )); + } +} +?> diff --git a/application/classes/Controller/Welcome.php b/application/classes/Controller/Welcome.php new file mode 100644 index 00000000..29ccdcc8 --- /dev/null +++ b/application/classes/Controller/Welcome.php @@ -0,0 +1,29 @@ +load('config')->appname) + HTTP::redirect('guide/app'); + + // @todo This should be in the DB or something. + HTTP::redirect('product/categorys'); + } + + public function action_breadcrumb() { + $this->auto_render = FALSE; + + $this->response->body(Session::instance()->get_once('breadcrumb')); + } +} +?> diff --git a/application/classes/Cookie.php b/application/classes/Cookie.php new file mode 100644 index 00000000..e00da708 --- /dev/null +++ b/application/classes/Cookie.php @@ -0,0 +1,15 @@ + diff --git a/application/classes/Country.php b/application/classes/Country.php new file mode 100644 index 00000000..3af63013 --- /dev/null +++ b/application/classes/Country.php @@ -0,0 +1,19 @@ +two_code)),array('alt'=>$co->currency()->symbol)); + } +} +?> diff --git a/application/classes/Currency.php b/application/classes/Currency.php new file mode 100644 index 00000000..73cf881f --- /dev/null +++ b/application/classes/Currency.php @@ -0,0 +1,21 @@ +decimals(),TRUE); + } + + public static function round($amount) { + return Num::round($amount,Company::instance()->decimals()); + } +} +?> diff --git a/application/classes/DB.php b/application/classes/DB.php new file mode 100644 index 00000000..2e885b4b --- /dev/null +++ b/application/classes/DB.php @@ -0,0 +1,35 @@ +where($table.'.site_id','=',Company::instance()->site()); + else + return $db; + } + + // Add the site_id to the update query + final public static function update($table = NULL) + { + $db = new Database_Query_Builder_Update($table); + + if (! in_array($table,ORM::$no_site_id_tables)) + return $db->where($table.'.site_id','=',Company::instance()->site()); + else + return $db; + } +} +?> diff --git a/application/classes/Database/Mysql.php b/application/classes/Database/Mysql.php new file mode 100644 index 00000000..5b7e889f --- /dev/null +++ b/application/classes/Database/Mysql.php @@ -0,0 +1,19 @@ + diff --git a/application/classes/Editor.php b/application/classes/Editor.php new file mode 100644 index 00000000..c80266b6 --- /dev/null +++ b/application/classes/Editor.php @@ -0,0 +1,52 @@ +'file', + 'data'=>'js/jquery-1.4.2.js', + )); + Script::add(array( + 'type'=>'file', + 'data'=>'js/tiny_mce/tiny_mce.js', + )); + Script::add(array( + 'type'=>'stdin', + 'data'=>' +tinyMCE.init({ + mode : "specific_textareas", + editor_selector : "mceEditor", + theme : "advanced", + plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print", + theme_advanced_buttons1_add : "fontselect,fontsizeselect", + theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,separator,forecolor,backcolor", + theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator", + theme_advanced_buttons3_add_before : "tablecontrols,separator", + theme_advanced_buttons3_add : "iespell,media,advhr", + theme_advanced_toolbar_location : "bottom", + theme_advanced_toolbar_align : "center", + plugin_insertdate_dateFormat : "%Y-%m-%d", + plugin_insertdate_timeFormat : "%H:%M:%S", + extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[class|align|style]", + relative_urls: "true", + width : "100%" +});')); + } +} +?> diff --git a/application/classes/Form.php b/application/classes/Form.php new file mode 100644 index 00000000..4b723290 --- /dev/null +++ b/application/classes/Form.php @@ -0,0 +1,18 @@ + diff --git a/application/classes/HTTP/Exception/404.php b/application/classes/HTTP/Exception/404.php new file mode 100644 index 00000000..14bf5100 --- /dev/null +++ b/application/classes/HTTP/Exception/404.php @@ -0,0 +1,25 @@ +status($this->_code); + + $view = View::factory('errors/404'); + $view->message = $this->getMessage(); + + $response->body($view->render()); + + return $response; + } +} +?> diff --git a/application/classes/HTTP/Exception/501.php b/application/classes/HTTP/Exception/501.php new file mode 100644 index 00000000..e79b7f1a --- /dev/null +++ b/application/classes/HTTP/Exception/501.php @@ -0,0 +1,34 @@ +status($this->_code); + + // @todo This is not working as cleanly as I would like - ie: we shouldnt need to publish the headers ourselves? + header(':', true, 501); + + if (Kohana::$config->load('debug')->show_errors) + $response->body(View::factory('errors/501')->set('message',$this->getMessage())->render()); + else + $response->body('Dang, something went wrong, tell us how we got here...'); + + echo $response->render(); + + exit (501); + } +} +?> diff --git a/application/classes/Kohana.php b/application/classes/Kohana.php new file mode 100644 index 00000000..74b52840 --- /dev/null +++ b/application/classes/Kohana.php @@ -0,0 +1,56 @@ + diff --git a/application/classes/Kohana/Exception.php b/application/classes/Kohana/Exception.php new file mode 100644 index 00000000..2ab18210 --- /dev/null +++ b/application/classes/Kohana/Exception.php @@ -0,0 +1,64 @@ +message = Kohana_Exception::text($e); + $eo->account_id = Auth::instance()->get_user()->id; + $eo->module = (Request::current()->directory() ? Request::current()->directory().'_' : '').Request::current()->controller(); + $eo->method = Request::current()->action(); + $eo->save(); + + } catch (Exception $x) { + return parent::log($e,$level); + } + } + + /** + * Redirect errors to the main page after showing a system message. + * The error should be logged in the DB. + * + * @param Exception $e + * @return Response + */ + public static function response(Exception $e) { + try { + if (Kohana::$config->load('debug')->show_errors) { + return parent::response($e); + } else { + SystemMessage::add(array( + 'title'=>'An Error Occured.', + 'type'=>'error', + 'body'=>'Dont panic, its been logged.', + )); + + // We'll redirect to the main page. + $response = Response::factory(); + $response->status(302); + $response->headers('Location',URL::site()); + return $response; + } + + } catch (Exception $x) { + return parent::response($e); + } + } +} +?> diff --git a/application/classes/Minion/Task.php b/application/classes/Minion/Task.php new file mode 100644 index 00000000..b2b102d1 --- /dev/null +++ b/application/classes/Minion/Task.php @@ -0,0 +1,17 @@ +NULL, + ); +} +?> diff --git a/application/classes/Model/Account.php b/application/classes/Model/Account.php new file mode 100644 index 00000000..184516d5 --- /dev/null +++ b/application/classes/Model/Account.php @@ -0,0 +1,194 @@ + array('model' => 'user_token'), + 'email_log' => array('far_key'=>'id'), + 'group' => array('through' => 'account_group'), + 'invoice' => array('far_key'=>'id'), + 'payment'=>array('far_key'=>'id'), + 'service' => array('far_key'=>'id'), + ); + + protected $_has_one = array( + 'country'=>array('foreign_key'=>'id'), + 'currency'=>array('foreign_key'=>'id'), + 'language'=>array('foreign_key'=>'id'), + 'RTM'=>array('far_key'=>'id'), + ); + + protected $_display_filters = array( + 'date_orig'=>array( + array('Config::date',array(':value')), + ), + 'date_last'=>array( + array('Config::date',array(':value')), + ), + 'status'=>array( + array('StaticList_YesNo::display',array(':value')), + ), + ); + + /** + * Our account number format + */ + public function accnum() { + return sprintf('%s-%04s',Company::instance()->site(TRUE),$this->id); + } + + /** + * Get the groups that an account belongs to + */ + public function groups() { + return $this->group->where_active()->find_all(); + } + + /** + * Get a list of all invoices for this account + */ + public function invoices($processed=FALSE) { + $o = $this->invoice; + + return $processed ? $o->find_all() : $o->where_unprocessed()->find_all(); + } + + /** + * Get a list of due invoices for this account + * + * @param int Date (in secs) to only retrieve invoices prior to this date + */ + public function invoices_due($date=NULL) { + $result = array(); + + foreach ($this->invoices() as $io) + if ((is_null($date) OR $io->date_orig < $date) AND $io->due()) + $result[$io->id] = $io; + + return $result; + } + + /** + * Calculate the total of invoices due for this account + */ + public function invoices_due_total($date=NULL,$format=FALSE) { + $result = 0; + + foreach ($this->invoices_due($date) as $io) + $result += $io->due(); + + return $format ? Currency::display($result) : $result; + } + + public function log($message) { + // Log the logout + $alo = ORM::factory('Account_Log'); + $alo->account_id = $this->id; + $alo->ip = Request::$client_ip; + $alo->details = $message; + $alo->save(); + + return $alo->saved(); + } + + /** + * Return an account name + */ + public function name($withcompany=FALSE) { + if ($withcompany) + return sprintf('%s %s%s',$this->first_name,$this->last_name,$this->company ? sprintf(' (%s)',$this->company) : ''); + else + return sprintf('%s %s',$this->first_name,$this->last_name); + } + + /** + * List all the services for this account + */ + public function services($active=TRUE) { + $o = $this->service; + + return $active ? $o->where_active()->find_all() : $o->find_all(); + } + + public function services_count($active=TRUE,$afid=NULL) { + return $this->services($active)->count(); + } + + /** + * The key we use to sort entries of this model type + */ + public function sortkey($withcompany=FALSE) { + $sk = ''; + + if ($withcompany AND $this->company) + $sk .= $this->company.' '; + + return $sk.sprintf('%s %s',$this->last_name,$this->first_name); + } + + /** + * Search for accounts matching a term + */ + public function list_autocomplete($term,$index='id',array $limit=array()) { + $result = array(); + $ao = Auth::instance()->get_user(); + + $this->clear(); + $this->where_active(); + $value = 'name(TRUE)'; + + // Build our where clause + // First Name, Last name + if (preg_match('/\ /',$term)) { + list($fn,$ln) = explode(' ',$term,2); + + $this->where_open() + ->where('first_name','like','%'.$fn.'%') + ->and_where('last_name','like','%'.$ln.'%') + ->where_close() + ->or_where('company','like','%'.$term.'%'); + + } elseif (is_numeric($term)) { + $this->where('id','like','%'.$term.'%'); + + } elseif (preg_match('/\@/',$term)) { + $this->where('email','like','%'.$term.'%'); + $value = 'email'; + + } else { + $this->where_open() + ->where('company','like','%'.$term.'%') + ->or_where('first_name','like','%'.$term.'%') + ->or_where('last_name','like','%'.$term.'%') + ->or_where('email','like','%'.$term.'%') + ->where_close(); + } + + foreach ($limit as $w) { + list($k,$s,$v) = $w; + + $this->and_where($k,$s,$v); + } + + // Restrict results to authorised accounts + $this->and_where('id','IN',$ao->RTM->customers($ao->RTM)); + + foreach ($this->find_all() as $o) + $result[$o->$index] = array( + 'value'=>$o->$index, + 'label'=>sprintf('ACC %s: %s',$o->id,Table::resolve($o,$value)), + ); + + return $result; + } +} +?> diff --git a/application/classes/Model/Account/Log.php b/application/classes/Model/Account/Log.php new file mode 100644 index 00000000..8bd9206d --- /dev/null +++ b/application/classes/Model/Account/Log.php @@ -0,0 +1,27 @@ +array(), + ); + + protected $_sorting = array( + 'id'=>'DESC', + ); + + protected $_display_filters = array( + 'date_orig'=>array( + array('Config::datetime',array(':value')), + ), + ); +} +?> diff --git a/application/classes/Model/Affiliate.php b/application/classes/Model/Affiliate.php new file mode 100644 index 00000000..eaf6c0a2 --- /dev/null +++ b/application/classes/Model/Affiliate.php @@ -0,0 +1,14 @@ + diff --git a/application/classes/Model/Auth/RoleDefault.php b/application/classes/Model/Auth/RoleDefault.php new file mode 100644 index 00000000..57d29408 --- /dev/null +++ b/application/classes/Model/Auth/RoleDefault.php @@ -0,0 +1,13 @@ + diff --git a/application/classes/Model/Auth/UserDefault.php b/application/classes/Model/Auth/UserDefault.php new file mode 100644 index 00000000..7ebbc53e --- /dev/null +++ b/application/classes/Model/Auth/UserDefault.php @@ -0,0 +1,76 @@ + array( + array('not_empty'), + array('min_length', array(':value', 4)), + array('max_length', array(':value', 32)), + ), + 'password' => array( + array('not_empty'), + array('min_length', array(':value', 5)), + array('max_length', array(':value', 32)), + ), + 'email' => array( + array('not_empty'), + array('min_length', array(':value', 4)), + array('max_length', array(':value', 127)), + array('email'), + ), + // @todo To test + 'password_confirm' => array( + array('matches_ifset', array(':validation', 'password', 'password_confirm')), + ), + ); + } + + // Validation callbacks + // @todo _callbacks no longer used + protected $_callbacks = array( + 'username' => array('username_available'), + 'email' => array('email_available'), + ); + + // Columns to ignore + protected $_ignored_columns = array('password_confirm'); + + /* + * Complete our login + * + * For some database logins, we may not want to record the user last login + * details in the repository, so we just override that parent function + * here. + * + * We can also do some other post-login actions here. + * @todo Maybe we can do our session update here. + */ + public function complete_login() { + return $this->log('Logged In'); + } + + /** + * Debug function to see that has() finds + * @todo This function could be removed + */ + public function has_list($alias, $model) { + // Return list of matches + return DB::select() + ->from($this->_has_many[$alias]['through']) + ->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk()) + ->where($this->_has_many[$alias]['far_key'], '=', $model->pk()) + ->execute($this->_db) + ->as_array(); + } +} +?> diff --git a/application/classes/Model/Country.php b/application/classes/Model/Country.php new file mode 100644 index 00000000..0ea2d2bd --- /dev/null +++ b/application/classes/Model/Country.php @@ -0,0 +1,17 @@ +where('country_id','=',$this->id)->find(); + } +} +?> diff --git a/application/classes/Model/Currency.php b/application/classes/Model/Currency.php new file mode 100644 index 00000000..8248ecce --- /dev/null +++ b/application/classes/Model/Currency.php @@ -0,0 +1,14 @@ + diff --git a/application/classes/Model/Group.php b/application/classes/Model/Group.php new file mode 100644 index 00000000..d3e3557c --- /dev/null +++ b/application/classes/Model/Group.php @@ -0,0 +1,84 @@ +array('through'=>'account_group'), + 'module_method'=>array('through'=>'group_method','far_key'=>'method_id'), + ); + + protected $_sorting = array( + 'name'=>'ASC', + ); + + // Validation rules + protected $_rules = array( + 'name' => array( + 'not_empty' => NULL, + 'min_length' => array(4), + 'max_length' => array(32), + ), + 'description' => array( + 'max_length' => array(255), + ), + ); + + protected $_display_filters = array( + 'status'=>array( + array('StaticList_YesNo::display',array(':value')), + ), + ); + + /** + * This function will, given a group, list all of the children that + * are also related to this group, in the group heirarchy. + */ + public function list_childgrps($incParent=FALSE) { + $result = array(); + + if (! $this->loaded()) + return $result; + + foreach (ORM::factory('Group')->where_active()->and_where('parent_id','=',$this)->find_all() as $go) { + array_push($result,$go); + + $result = array_merge($result,$go->list_childgrps()); + } + + if ($incParent) + array_push($result,$this); + + return $result; + } + + /** + * This function will, given a group, list all of the parent that + * are also related to this group, in the group heirarchy. + */ + public function list_parentgrps($incParent=FALSE) { + $result = array(); + + if (! $this->loaded()) + return $result; + + foreach (ORM::factory('Group')->where_active()->and_where('id','=',$this->parent_id)->find_all() as $go) { + array_push($result,$go); + + $result = array_merge($result,$go->list_parentgrps()); + } + + if ($incParent) + array_push($result,$this); + + return $result; + } +} +?> diff --git a/application/classes/Model/Group/Method.php b/application/classes/Model/Group/Method.php new file mode 100644 index 00000000..1db20700 --- /dev/null +++ b/application/classes/Model/Group/Method.php @@ -0,0 +1,25 @@ +array(), + ); + protected $_belongs_to = array( + 'group'=>array(), + ); + + // This module doesnt keep track of column updates automatically + protected $_created_column = FALSE; + protected $_updated_column = FALSE; +} +?> diff --git a/application/classes/Model/Language.php b/application/classes/Model/Language.php new file mode 100644 index 00000000..22d28446 --- /dev/null +++ b/application/classes/Model/Language.php @@ -0,0 +1,15 @@ +'id','value'=>'name'); +} +?> diff --git a/application/classes/Model/Log/Error.php b/application/classes/Model/Log/Error.php new file mode 100644 index 00000000..357fb856 --- /dev/null +++ b/application/classes/Model/Log/Error.php @@ -0,0 +1,14 @@ + diff --git a/application/classes/Model/Module.php b/application/classes/Model/Module.php new file mode 100644 index 00000000..07cff3ab --- /dev/null +++ b/application/classes/Model/Module.php @@ -0,0 +1,51 @@ +array('far_key'=>'id'), + ); + protected $_has_one = array( + 'record_id'=>array('model'=>'Record_ID','far_key'=>'id'), + ); + + protected $_sorting = array( + 'status'=>'DESC', + 'name'=>'ASC', + ); + + protected $_display_filters = array( + 'name'=>array( + array('strtoupper',array(':value')), + ), + 'status'=>array( + array('StaticList_YesNo::display',array(':value')), + ), + ); + + /** + * Return an instance of this Module's Model + * + * @param $id PK of Model + */ + public function instance($id=NULL) { + return ORM::factory(ucwords($this->name),$id); + } + + public function list_external() { + return $this->_where_active()->where('external','=',TRUE)->find_all(); + } +} +?> diff --git a/application/classes/Model/Module/Method.php b/application/classes/Model/Module/Method.php new file mode 100644 index 00000000..1124aa4e --- /dev/null +++ b/application/classes/Model/Module/Method.php @@ -0,0 +1,43 @@ +array(), + ); + protected $_has_one = array( + 'record_id'=>array(), + ); + protected $_has_many = array( + 'group'=>array('through'=>'group_method','foreign_key'=>'method_id') + ); + + protected $_sorting = array( + 'name'=>'ASC', + ); + + protected $_display_filters = array( + 'menu_display'=>array( + array('StaticList_YesNo::display',array(':value')), + ), + ); + + // This module doesnt keep track of column updates automatically + protected $_created_column = FALSE; + protected $_updated_column = FALSE; + + // Return the method name. + public function name() { + return sprintf('%s::%s',$this->module->name,$this->name); + } +} +?> diff --git a/application/classes/Model/Module/Method/Token.php b/application/classes/Model/Module/Method/Token.php new file mode 100644 index 00000000..dc47f564 --- /dev/null +++ b/application/classes/Model/Module/Method/Token.php @@ -0,0 +1,112 @@ +array(), + 'module_method'=>array('foreign_key'=>'method_id'), + ); + protected $_has_one = array( + 'record_id'=>array(), + ); + + // This module doesnt keep track of column updates automatically + protected $_update_column = FALSE; + + public function method(array $modmeth) { + list($module,$method) = $modmeth; + + if (! $method instanceof Model_Module_Method) { + if (is_numeric($module)) + $mo = ORM::factory('Module',$module); + elseif (is_string($module)) + $mo = ORM::factory('Module',array('name'=>$module)); + elseif (! $module instanceof Model_Module) + throw new Kohana_Exception('Unknown module :module',array(':module'=>serialize($module))); + else + $mo = $module; + + if (! $mo->loaded()) + throw new Kohana_Exception('Unknown module :module - not loaded?',array(':module'=>$mo->id)); + + if (is_numeric($method)) + $mmo = ORM::factory('Module_Method',$method); + elseif (is_string($method)) + $mmo = ORM::factory('Module_Method',array('name'=>$method,'module_id'=>$mo->id)); + else + throw new Kohana_Exception('Unknown method :method',array(':method'=>serialize($method))); + } else + $mmo = $method; + + if (! $mmo->loaded()) + throw new Kohana_Exception('Unknown method :method - not loaded?',array(':method'=>$mmo->id)); + + $this->method_id = $mmo->id; + + return $this; + } + + public function account($account) { + if (! $account instanceof Model_Account) { + if (is_numeric($account)) + $ao = ORM::factory('Account',$account); + else + throw new Kohana_Exception('Unknown account :account',array(':account'=>serialize($account))); + } else + $ao = $account; + + $this->account_id = $ao->id; + + return $this; + } + + public function uses($uses) { + $this->uses = $uses; + + return $this; + } + + public function expire($expire) { + $this->date_expire = $expire; + + return $this; + } + + // @todo Login Reset: When called within a timelimit (so existing token already exists), is returning true but password reset emails have blanks where the tokens are + public function generate() { + if (! $this->account_id OR ! $this->method_id OR ! ($this->date_expire OR $this->uses)) + return NULL; + + // Check we dont already have a valid token + $mmto = ORM::factory('Module_Method_Token') + ->where('account_id','=',$this->account_id) + ->where('method_id','=',$this->method_id) + ->find(); + + if ($mmto->loaded()) { + // Check that the token is still good + if ((is_null($mmto->date_expire) OR $mmto->date_expire > time()) AND (is_null($mmto->uses) OR $mmto->uses > 0)) { + $this->token = $mmto->token; + return $this->token; + + // Token expired + } else + $mmto->delete(); + } + + $this->token = md5(sprintf('%s:%s:%s',$this->account_id,$this->method_id,time())); + $this->save(); + + return $this->saved() ? $this->token : NULL; + } +} +?> diff --git a/application/classes/Model/RTM.php b/application/classes/Model/RTM.php new file mode 100644 index 00000000..635ee2b1 --- /dev/null +++ b/application/classes/Model/RTM.php @@ -0,0 +1,42 @@ + array(), + ); + + protected $_has_many = array( + 'customer' => array('model'=>'account','far_key'=>'id','foreign_key'=>'rtm_id'), + 'agent' => array('model'=>'rtm','far_key'=>'id','foreign_key'=>'parent_id'), + ); + + public function customers(Model_RTM $rtmo) { + $result = array(); + + foreach ($rtmo->agents_direct() as $artmo) + $result = $result+$rtmo->customers($artmo); + + foreach ($rtmo->customers_direct() as $ao) + array_push($result,$ao); + + return $result; + } + + public function agents_direct() { + return $this->agent->find_all(); + } + + public function customers_direct() { + return $this->customer->find_all(); + } +} +?> diff --git a/application/classes/Model/Record/ID.php b/application/classes/Model/Record/ID.php new file mode 100644 index 00000000..4310ab85 --- /dev/null +++ b/application/classes/Model/Record/ID.php @@ -0,0 +1,42 @@ +id)) { + $this->module_id = $mid; + + // We'll get the next ID as the MAX(id) of the table + $mo = ORM::factory('Module',$mid); + + $max = DB::select(array('MAX(id)','id')) + ->from($mo->name) + ->where('site_id','=',Company::instance()->site()); + + $this->id = $max->execute()->get('id'); + } + + $this->id++; + + if (! $this->save()) + throw new Koahan_Exception(_('Unable to increase ID for :table'),array(':table'=>$mid)); + + return $this->id; + } +} +?> diff --git a/application/classes/Model/Setup.php b/application/classes/Model/Setup.php new file mode 100644 index 00000000..f8938aee --- /dev/null +++ b/application/classes/Model/Setup.php @@ -0,0 +1,83 @@ +array('foreign_key'=>'id','far_key'=>'admin_id'), + 'country'=>array('foreign_key'=>'id','far_key'=>'country_id'), + 'language'=>array('foreign_key'=>'id','far_key'=>'language_id'), + ); + + public function rules() { + $r = parent::rules(); + + // This module doesnt use site_id. + unset($r['site_id']); + + return $r; + } + + /** + * Get/Set Module Configuration + * + * @param $key Module name. + * @param $value Values to store. If NULL, retrieves the value stored, otherwise stores value. + */ + public function module_config($key,array $value=NULL) { + // If we are not loaded, we dont have any config. + if (! $this->loaded() OR (is_null($value) AND ! $this->module_config)) + return array(); + + $mo = ORM::factory('Module')->where('name','=',$key)->find(); + + if (! $mo->loaded()) + throw new Kohana_Exception('Unknown module :name',array(':name'=>$key)); + + $mc = $this->module_config ? $this->module_config : array(); + + // If $value is NULL, we are a getter + if ($value === NULL) + return empty($mc[$mo->id]) ? array() : $mc[$mo->id]; + + // Store new value + $mc[$mo->id] = $value; + $this->module_config = $mc; + + return $this; + } + + /** + * Get/Set our Site Configuration from the DB + * + * @param $key Key + * @param $value Values to store. If NULL, retrieves the value stored, otherwise stores value. + */ + public function site_details($key,array $value=NULL) { + if (! in_array($key,array('name','address1','address2','city','state','pcode','phone','fax','email'))) + throw new Kohana_Exception('Unknown Site Configuration Key :key',array(':key'=>$key)); + + // If $value is NULL, we are a getter + if ($value === NULL) + return empty($this->site_details[$key]) ? '' : $this->site_details[$key]; + + // Store new value + $sc[$key] = $value; + + return $this; + } +} +?> diff --git a/application/classes/ORM.php b/application/classes/ORM.php new file mode 100644 index 00000000..d1125d91 --- /dev/null +++ b/application/classes/ORM.php @@ -0,0 +1,125 @@ +_display_filters as $column => $formats) + $this->_object_formated[$column] = $this->run_filter($column,$this->__get($column),array($column=>$formats)); + + $this->_formated = TRUE; + } + + /** + * Return a formated columns, as per the model definition + */ + public function display($column) { + // Trigger a load of the record. + $value = $this->__get($column); + + // If some of our fields need to be formated for display purposes. + if (! $this->_formated AND $this->_display_filters) + $this->_format(); + + if (isset($this->_object_formated[$column])) + return $this->_object_formated[$column]; + else + return HTML::nbsp($value); + } + + /** + * Override KH's ORM count_relations() function, to include our site_id in the query. + * + * This is a copy of KH's ORM count_relations() function, with the addition of a where + * clause to include the site id. + */ + public function count_relations($alias, $far_keys = NULL) + { + if ($far_keys === NULL) + { + return (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found')) + ->from($this->_has_many[$alias]['through']) + ->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk()) + ->where('site_id', '=', Company::instance()->site()) + ->execute($this->_db)->get('records_found'); + } + + $far_keys = ($far_keys instanceof ORM) ? $far_keys->pk() : $far_keys; + + // We need an array to simplify the logic + $far_keys = (array) $far_keys; + + // Nothing to check if the model isn't loaded or we don't have any far_keys + if ( ! $far_keys OR ! $this->_loaded) + return 0; + + $count = (int) DB::select(array(DB::expr('COUNT(*)'), 'records_found')) + ->from($this->_has_many[$alias]['through']) + ->where($this->_has_many[$alias]['foreign_key'], '=', $this->pk()) + ->where($this->_has_many[$alias]['far_key'], 'IN', $far_keys) + ->where('site_id', '=', Company::instance()->site()) + ->execute($this->_db)->get('records_found'); + + // Rows found need to match the rows searched + return (int) $count; + } + + /** OSB SPECIFIC ENHANCEMENTS **/ + + // Tables that do not have a site_id column + public static $no_site_id_tables = array('setup','country','currency','language','tax'); + + /** + * Add our OSB site_id to each SELECT query + * @see parent::__build() + */ + final protected function _build($type) { + // Exclude tables without site ID's + if (! in_array($this->_table_name,ORM::$no_site_id_tables)) + $this->where($this->_object_name.'.site_id','=',Company::instance()->site()); + + return parent::_build($type); + } + + /** + * Function help to find records that are active + */ + public function list_active() { + return $this->_where_active()->find_all(); + } + + /** + * Function help to find records that are active + */ + protected function _where_active() { + return $this->where('status','=',TRUE); + } + + public function where_active() { + return $this->_where_active(); + } +} +?> diff --git a/application/classes/ORM/OSB.php b/application/classes/ORM/OSB.php new file mode 100644 index 00000000..b4304f82 --- /dev/null +++ b/application/classes/ORM/OSB.php @@ -0,0 +1,228 @@ +'date_orig','format'=>TRUE); + protected $_updated_column = array('column'=>'date_last','format'=>TRUE); + + // Our attribute values that need to be stored as serialized + protected $_serialize_column = array(); + + // Our attributes used in forms. + protected $_form = array(); + + // Rules to assist with site ID and getting next record ID for inserts. + public function rules() { + return array( + 'id'=>array( + array('ORM_OSB::get_next_id',array(':model',':field')), + ), + 'site_id'=>array( + array('ORM_OSB::set_site_id',array(':model',':field')), + ), + ); + } + + /** + * Auto process some data as it comes from the database + * @see parent::__get() + */ + public function __get($column) { + if (array_key_exists($column,$this->_table_columns)) { + // If the column is a blob, we'll decode it automatically + if ( + $this->_table_columns[$column]['data_type'] == 'blob' + AND ! is_null($this->_object[$column]) + AND ! isset($this->_changed[$column]) + AND (! isset($this->_table_columns[$column]['auto_convert']) OR ! $this->_table_columns[$column]['auto_convert']) + ) { + + // In case our blob hasnt been saved as one. + try { + $this->_object[$column] = $this->blob($this->_object[$column]); + } + catch(Exception $e) { + // @todo Log this exception + echo Kohana_Exception::text($e), "\n"; + echo debug_print_backtrace(); + } + + $this->_table_columns[$column]['auto_convert'] = TRUE; + } + + // If the column is a serialized object, we'll unserialize it. + if ( + in_array($column,$this->_serialize_column) + AND is_string($this->_object[$column]) + AND ! is_null($this->_object[$column]) + AND ! isset($this->_changed[$column]) + AND (! isset($this->_table_columns[$column]['unserialized']) OR ! $this->_table_columns[$column]['unserialized']) + ) { + + // In case our object hasnt been saved as serialized. + try { + $this->_object[$column] = unserialize($this->_object[$column]); + } + catch(Exception $e) { + // @todo Log this exception + echo Kohana_Exception::text($e), "\n"; + echo debug_print_backtrace(); + } + + $this->_table_columns[$column]['unserialized'] = TRUE; + } + } + + return parent::__get($column); + } + + /** + * This function will enhance the [Validate::filter], since it always passes + * the value as the first argument and sometimes functions need that to not + * be the first argument. + * + * Currently this implements: + * [date()][date-ref] + * + * [date-ref]: http://www.php.net/date + * + * This function will throw an exception if called without a function + * defined. + * + * @param mixed $val Value to be processed + * @param string $func Name of function to call + * @param string $arg Other arguments for the function + * @todo This has probably changed in KH 3.1 + */ + final public static function x_filters($val,$func,$arg) { + switch ($func) { + case 'date': + return date($arg,$val); + default: + throw new Exception(sprintf(_('Unknown function: %s (%s,%s)'),$func,$arg,$val)); + } + } + + final public static function xform($table,$blank=FALSE) { + return ORM::factory($table)->formselect($blank); + } + + /** + * Retrieve and Store DB BLOB data. + */ + private function blob($data,$set=FALSE) { + try { + return $set ? gzcompress(serialize($data)) : unserialize(gzuncompress($data)); + + // Maybe the data isnt compressed? + } catch (Exception $e) { + return $set ? serialize($data) : unserialize($data); + } + } + + public function config($key) { + $mc = Config::instance()->module_config($this->_object_name); + + return empty($mc[$key]) ? '' : $mc[$key]; + } + + /** + * Get Next record id + * + * @param array Validate object + * @param string Primary Key + */ + final public static function get_next_id($model,$field) { + if (! is_null($model->$field)) + return TRUE; + + $model->_changed[$field] = $field; + + $ido = ORM::factory('Module') + ->where('name','=',$model->_table_name) + ->find(); + + if (! $ido->loaded()) + throw new Kohana_Exception('Problem getting record_id for :table',array(':table'=>$model->_table_name)); + + $model->$field = $ido->record_id->next_id($ido->id); + + return TRUE; + } + + /** + * Set the site ID attribute for each row update + */ + final public static function set_site_id($model,$field) { + if (! is_null($model->$field)) + return TRUE; + + $model->_changed[$field] = $field; + $model->$field = Company::instance()->site(); + + return TRUE; + } + + public function xformselect($blank) { + $result = array(); + + if ($blank) + $result[] = ''; + + foreach ($this->find_all() as $o) + $result[$o->{$this->_form['id']}] = $o->{$this->_form['value']}; + + return $result; + } + + public function keyget($column,$key=NULL) { + if (is_null($key) OR ! is_array($this->$column)) + return $this->$column; + else + return array_key_exists($key,$this->$column) ? $this->{$column}[$key] : NULL; + } + + final public function mid() { + return ORM::factory('Module',array('name'=>$this->_table_name)); + } + + public function save(Validation $validation = NULL) { + // Find any fields that have changed, and process them. + if ($this->_changed) + foreach ($this->_changed as $c) + // Any fields that are blobs, and encode them. + if ($this->_table_columns[$c]['data_type'] == 'blob') { + $this->_object[$c] = $this->blob($this->_object[$c],TRUE); + + // We need to reset our auto_convert flag + if (isset($this->_table_columns[$c]['auto_convert'])) + $this->_table_columns[$c]['auto_convert'] = FALSE; + + // Any fields that should be seriailzed, we'll do that. + } elseif (is_array($this->_object[$c]) AND in_array($c,$this->_serialize_column)) { + $this->_object[$c] = serialize($this->_object[$c]); + } + + return parent::save($validation); + } + + public function list_count($active=TRUE) { + $x=($active ? $this->_where_active() : $this); + + return $x->find_all()->count(); + } +} +?> diff --git a/application/classes/Period.php b/application/classes/Period.php new file mode 100644 index 00000000..eca3c874 --- /dev/null +++ b/application/classes/Period.php @@ -0,0 +1,129 @@ +$period_start, + 'start_time'=>$start, + 'date'=>$start, + 'end'=>$period_end, + 'end_time'=>$period_end, + 'weekday'=>$weekday, + 'prorata'=>round($remain_time/$total_time,4), + 'total_time'=>sprintf('%3.1f',$total_time/86400), + 'remain_time'=>sprintf('%3.1f',$remain_time/86400), + 'used_time'=>sprintf('%3.1f',$used_time/86400), + ); + + if ($df) + foreach (array('start','date','end') as $key) + $result[$key] = Config::date($result[$key]); + + return $result; + } +} +?> diff --git a/application/classes/Request.php b/application/classes/Request.php new file mode 100644 index 00000000..48910874 --- /dev/null +++ b/application/classes/Request.php @@ -0,0 +1,31 @@ +a,reseller=>r. + * + * @param string $directory Directory to execute the controller from + * @return mixed + */ + public function directory($directory = NULL) { + // If $directory is NULL, we are a getter and see if we need to expand the directory + if ($directory === NULL AND $this->_directory) + $this->_directory = URL::dir($this->_directory); + + return parent::directory($directory); + } +} +?> diff --git a/application/classes/Response.php b/application/classes/Response.php new file mode 100644 index 00000000..731d23b6 --- /dev/null +++ b/application/classes/Response.php @@ -0,0 +1,18 @@ +_body .= (string) $content; + } +} +?> diff --git a/application/classes/StaticList.php b/application/classes/StaticList.php new file mode 100644 index 00000000..d22700f8 --- /dev/null +++ b/application/classes/StaticList.php @@ -0,0 +1,71 @@ +get_called_class(),':method'=>__METHOD__)); + } + + /** + * Display a static name for a value + * + * @param key $id value to render + * @see _display() + */ + public static function display($value) { + return static::_display($value); + } + + // Due to static scope, sometimes we need to call this function from the child class. + protected static function _display($id) { + $table = static::factory()->table(); + + if (! $table) + return 'No Table'; + elseif (empty($table[$id])) + return sprintf('No Value (%s)',$id); + else + return $table[$id]; + } + + /** + * Lists our available keys + */ + public static function keys() { + return array_keys(static::factory()->table()); + } + + /** + * Renders form input + * + * @param string Form name to render + * @param string Default value to populate in the Form input. + */ + public static function form($name,$default='',$addblank=FALSE) { + $table = static::factory()->table(); + + if ($addblank) + $table = array_merge(array(''=>' '),$table); + + return Form::Select($name,$table,$default); + } +} +?> diff --git a/application/classes/StaticList/Module.php b/application/classes/StaticList/Module.php new file mode 100644 index 00000000..b166e34d --- /dev/null +++ b/application/classes/StaticList/Module.php @@ -0,0 +1,93 @@ +from($table)->where($skey,'=',$value)->execute(); + + if ($db->count() !== 1) + return sprintf('No Value (%s)',$value); + else + return $db->get($key); + } + + /** + * This function is to return the cached value of the current active record + * This is so that a follow up call to get an attribute of a value retrieved + * can reuse the active record values. + * This gets over a limitation where the query to form() to get a default + * no longer exists (or is invalid) and you want other attributes of the + * remaining active record, which may not be the default record. + */ + public static function record($table,$attribute,$skey,$value) { + if (empty(static::$record[$table])) + return static::display($table,$attribute,$skey,$value); + else + return static::$record[$table][$attribute]; + } + + /** + * Renders form input + */ + public static function form($name,$default='',$addblank=FALSE) { + // Override our argument list as defined in parent + list($name,$table,$default,$key,$value,$where,$addblank,$attributes) = func_get_args(); + + $db = DB::select()->from($table); + + foreach ($where as $k=>$v) { + list ($op,$v) = explode(':',$v); + $db->where($k,$op,$v); + } + + $db = $db->execute(); + + // If we only have one record, dont make a select list + if ($db->count() == 1) { + static::$record[$table] = $db->as_array(); + static::$record[$table] = array_shift(static::$record[$table]); + + return Form::hidden($name,$db->get($key)).$db->get($value); + } + + // Else we return a select list + $x = array(); + if ($addblank) + $x[] = ''; + + foreach ($db as $record) { + $x[$record[$key]] = $record[$value]; + + // Save our static record, in case we reference this item again. + if ($record[$key] == $default) + static::$record[$table] = $record; + } + + return Form::select($name,$x,$default,$attributes); + } + + protected function table($module=NULL) { + if (is_null($module)) + throw new Kohana_Exception('Module is a required attribute.'); + } + + public static function factory() { + return new StaticList_Module; + } +} +?> diff --git a/application/classes/StaticList/PriceType.php b/application/classes/StaticList/PriceType.php new file mode 100644 index 00000000..9c903af0 --- /dev/null +++ b/application/classes/StaticList/PriceType.php @@ -0,0 +1,29 @@ +_('One-time Charge'), + 1=>_('Recurring Membership/Subscription'), + 2=>_('Trial for Membership/Subscription') + ); + } + + public static function factory() { + return new StaticList_PriceType; + } + + public static function display($value) { + return static::_display($value); + } +} +?> diff --git a/application/classes/StaticList/RecurSchedule.php b/application/classes/StaticList/RecurSchedule.php new file mode 100644 index 00000000..cb613ef1 --- /dev/null +++ b/application/classes/StaticList/RecurSchedule.php @@ -0,0 +1,55 @@ +_('Weekly'), + 1=>_('Monthly'), + 2=>_('Quarterly'), + 3=>_('Semi-Annually'), + 4=>_('Annually'), + 5=>_('Two years'), + 6=>_('Three Years') + ); + } + + public static function factory() { + return new StaticList_RecurSchedule; + } + + public static function display($value) { + return static::_display($value); + } + + /** + * Renders the price display for a product + * + * @uses product + */ + public static function form($name,$product='',$default='',$addblank=FALSE) { + if (empty($product)) + throw new Kohana_Exception('Product is a required field for :method',array(':method'=>__METHOD__)); + + $x = ''; + $table = static::factory()->table(); + + foreach ($product->get_price_array() as $term => $price) { + $x[$term] = sprintf('%s %s',Currency::display(Tax::add($price['price_base'])),$table[$term]); + + if ($price['price_setup'] > 0) + $x[$term] .= sprintf(' + %s %s',Currency::display(Tax::add($price['price_setup'])),_('Setup')); + } + + return Form::select($name,$x,$default); + } +} +?> diff --git a/application/classes/StaticList/RecurType.php b/application/classes/StaticList/RecurType.php new file mode 100644 index 00000000..cad3a14f --- /dev/null +++ b/application/classes/StaticList/RecurType.php @@ -0,0 +1,28 @@ +_('Bill on Aniversary Date of Subscription'), + 1=>_('Bill on Fixed Schedule'), + ); + } + + public static function factory() { + return new StaticList_RecurType; + } + + public static function display($value) { + return static::_display($value); + } +} +?> diff --git a/application/classes/StaticList/SweepType.php b/application/classes/StaticList/SweepType.php new file mode 100644 index 00000000..e35c079b --- /dev/null +++ b/application/classes/StaticList/SweepType.php @@ -0,0 +1,33 @@ +_('Daily'), + 1=>_('Weekly'), + 2=>_('Monthly'), + 3=>_('Quarterly'), + 4=>_('Semi-Annually'), + 5=>_('Annually'), + 6=>_('Service Rebill'), + ); + } + + public static function factory() { + return new StaticList_SweepType; + } + + public static function display($value) { + return static::_display($value); + } +} +?> diff --git a/application/classes/StaticList/Title.php b/application/classes/StaticList/Title.php new file mode 100644 index 00000000..0324ee6f --- /dev/null +++ b/application/classes/StaticList/Title.php @@ -0,0 +1,28 @@ +_('Mr'), + 'ms'=>_('Ms'), + 'mrs'=>_('Mrs'), + 'miss'=>_('Miss'), + 'dr'=>_('Dr'), + 'prof'=>_('Prof') + ); + } + + public static function factory() { + return new StaticList_Title; + } +} +?> diff --git a/application/classes/StaticList/YesNo.php b/application/classes/StaticList/YesNo.php new file mode 100644 index 00000000..e43bb413 --- /dev/null +++ b/application/classes/StaticList/YesNo.php @@ -0,0 +1,28 @@ +_('No'), + 1=>_('Yes'), + ); + } + + public static function factory() { + return new StaticList_YesNo; + } + + public static function display($value) { + return static::_display($value); + } +} +?> diff --git a/application/classes/Task.php b/application/classes/Task.php new file mode 100644 index 00000000..760204c9 --- /dev/null +++ b/application/classes/Task.php @@ -0,0 +1,20 @@ +NULL, + 'id'=>NULL, + 'force'=>FALSE, + 'verbose'=>FALSE, + ); +} +?> diff --git a/application/classes/Task/Account/Complete.php b/application/classes/Task/Account/Complete.php new file mode 100644 index 00000000..0a5f89fc --- /dev/null +++ b/application/classes/Task/Account/Complete.php @@ -0,0 +1,33 @@ +where_active(); + + foreach ($o->find_all() as $ao) { + if (count($ao->invoice->where_unprocessed()->find_all()) == 0 AND count($ao->service->where_active()->find_all()) == 0) + // @todo Cant update status=0, problem with sessions in CLI + echo $ao->id.','; + + $ao->save(); + + if ($ao->saved()) + $c++; + } + + printf('%s services updated',$c); + } +} +?> diff --git a/application/classes/URL.php b/application/classes/URL.php new file mode 100644 index 00000000..f7fb0a69 --- /dev/null +++ b/application/classes/URL.php @@ -0,0 +1,54 @@ +'a', + 'affiliate'=>'affiliate', // @todo To retire + 'reseller'=>'r', + 'task'=>'task', + 'user'=>'u', + ); + + /** + * Wrapper to provide a URL::site() link based on function + */ + public static function link($dir,$src,$site=FALSE) { + if (! $dir) + return $src; + + if (! array_key_exists($dir,URL::$method_directory)) + throw new Kohana_Exception('Unknown directory :dir for :src',array(':dir'=>$dir,':src'=>$src)); + + $x = URL::$method_directory[$dir].'/'.$src; + + return $site ? URL::site($x) : $x; + } + + /** + * Function to reveal the real directory for a URL + */ + public static function dir($dir) { + // Quick check if we can do something here + if (! in_array(strtolower($dir),URL::$method_directory)) + return $dir; + + // OK, we can, find it. + foreach (URL::$method_directory as $k=>$v) + if (strtolower($dir) == $v) + return ucfirst($k); + + // If we get here, we didnt have anything. + return $dir; + } +} +?> diff --git a/application/classes/Valid.php b/application/classes/Valid.php new file mode 100644 index 00000000..66b7392b --- /dev/null +++ b/application/classes/Valid.php @@ -0,0 +1,27 @@ + diff --git a/application/classes/XML.php b/application/classes/XML.php new file mode 100644 index 00000000..e6ddff62 --- /dev/null +++ b/application/classes/XML.php @@ -0,0 +1,44 @@ +as_array() as $j=>$k) { + $v = $xml->$j->value(); + + if (count($k) > 1) { + foreach ($xml->get($j,1) as $k) + if (isset($k['name'][0])) + $result[$j][$k['name'][0]] = (isset($k['value'][0]) ? $k['value'][0] : ''); + else + $result[$j][] = $k; + + } elseif (! is_null($v)) + $result[$j] = $v; + else { + $result[$j] = $this->collapse($xml->$j); + } + } + + if (array_key_exists('name',$result) AND array_key_exists('value',$result)) + $result = array($result['name']=>$result['value']); + + return $result; + } +} +?> diff --git a/application/config/auth.php b/application/config/auth.php new file mode 100644 index 00000000..a691bae8 --- /dev/null +++ b/application/config/auth.php @@ -0,0 +1,18 @@ + 'OSB', + 'hash_method' => 'md5', +); +?> diff --git a/application/config/cache.php b/application/config/cache.php new file mode 100644 index 00000000..266b3f1a --- /dev/null +++ b/application/config/cache.php @@ -0,0 +1,32 @@ + array( + 'driver' => 'apc', + 'default_expire' => 3600, + ), + + 'file' => array( + 'driver' => 'file', + 'cache_dir' => Kohana::$cache_dir ? Kohana::$cache_dir : APPPATH.'cache/', + 'default_expire' => 3600, + 'ignore_on_delete' => array( + '.gitignore', + '.git', + '.htaccess', + '.svn' + ) + ), +); +?> diff --git a/application/config/config.php b/application/config/config.php new file mode 100644 index 00000000..da15b4bf --- /dev/null +++ b/application/config/config.php @@ -0,0 +1,31 @@ + 'OS Billing', // Our application name, as shown in the title bar of pages + 'cache_type' => 'file', + 'email_from' => array('noreply@graytech.net.au'=>'Graytech Hosting'), + 'email_admin_only'=> array( +// 'adsl_traffic_notice'=>array('deon@leenooks.vpn'=>'Deon George'), + ), + 'method_security' => TRUE, // Enables Method Security. Setting to false means any method can be run without authentication + 'session_change_trigger'=>array( // Updates to tables to make when our session ID is changed + 'Cart'=>'session_id', + ), + 'bsb' => '633-000', // @todo This should come from the DB + 'accnum' => '120 440 821', // @todo This should come from the DB + 'theme' => 'yaml', // @todo This should be in the DB + 'theme_admin' => 'yaml', // @todo This should be in the DB + 'tmpdir' => '/tmp', +); +?> diff --git a/application/config/database.php b/application/config/database.php new file mode 100644 index 00000000..d7fa4015 --- /dev/null +++ b/application/config/database.php @@ -0,0 +1,43 @@ + array + ( + 'type' => 'mysql', + 'connection' => array( + /** + * The following options are available for MySQL: + * + * string hostname server hostname, or socket + * string database database name + * string username database username + * string password database password + * boolean persistent use persistent connections? + * + * Ports and sockets may be appended to the hostname. + */ + 'hostname' => 'localhost', + 'username' => 'username', + 'password' => 'password', + 'persistent' => FALSE, + 'database' => 'database', + ), + 'table_prefix' => 'ab_', + 'charset' => 'utf8', + 'caching' => FALSE, + 'profiling' => TRUE, + ), +); +?> diff --git a/application/config/debug.php b/application/config/debug.php new file mode 100644 index 00000000..9fedb4e4 --- /dev/null +++ b/application/config/debug.php @@ -0,0 +1,25 @@ +FALSE, // AJAX actions can only be run by ajax calls if set to FALSE + 'etag'=>FALSE, // Force generating ETAGS + 'checkout_notify'=>FALSE, // Test mode to test a particular checkout_notify item + 'invoice'=>0, // Number of invoices to generate in a pass + 'site'=>FALSE, // Glogal site debug + 'show_errors'=>FALSE, // Show errors instead of logging in the DB. + 'show_inactive'=>FALSE, // Show Inactive Items + 'task_sim'=>FALSE, // Simulate running tasks +); +?> diff --git a/application/config/invoice.php b/application/config/invoice.php new file mode 100644 index 00000000..4bb6afbd --- /dev/null +++ b/application/config/invoice.php @@ -0,0 +1,17 @@ + 'default', +); +?> diff --git a/application/config/openssl.cnf b/application/config/openssl.cnf new file mode 100644 index 00000000..e846bc06 --- /dev/null +++ b/application/config/openssl.cnf @@ -0,0 +1,278 @@ +# OpenSSL example configuration file. + +# Extra OBJECT IDENTIFIER info: +#oid_file = $ENV::HOME/.oid +oid_section = new_oids + +# To use this configuration file with the "-extfile" option of the +# "openssl x509" utility, name here the section containing the +# X.509v3 extensions to use: +# extensions = +# (Alternatively, use a configuration file that has only +# X.509v3 extensions in its main [= default] section.) + +[ new_oids ] + +# We can add new OIDs in here for use by 'ca' and 'req'. +# Add a simple OID like this: +# testoid1=1.2.3.4 +# Or use config file substitution like this: +# testoid2=${testoid1}.5.6 + +#################################################################### +[ ca ] +default_ca = CA_default # The default ca section + +#################################################################### +[ CA_default ] + +dir = modules/ssl/config# Where everything is kept +certs = $dir # Where the issued certs are kept +crl_dir = $dir # Where the issued crl are kept +database = $dir/index.txt # database index file. +new_certs_dir = $dir # default place for new certs. + +certificate = $dir/ca.crt # The CA certificate +serial = $dir/serial # The current serial number +crl = $dir/crl.pem # The current CRL +private_key = $dir/ca.key # The private key +RANDFILE = $dir/.rand # private random number file + +x509_extensions = usr_cert # The extentions to add to the cert + +# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs +# so this is commented out by default to leave a V1 CRL. +crl_extensions = crl_ext + +default_days = 375 # how long to certify for +default_crl_days = 30 # how long before next CRL +default_md = sha1 # which md to use. +preserve = no # keep passed DN ordering + +# A few difference way of specifying how similar the request should look +# For type CA, the listed attributes must be the same, and the optional +# and supplied fields are just that :-) +policy = policy_match + +# For the CA policy +[ policy_match ] +countryName = match +stateOrProvinceName = supplied +organizationName = supplied +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +[ policy_o ] +countryName = match +stateOrProvinceName = supplied +organizationName = supplied +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +[ policy_ou ] +countryName = match +stateOrProvinceName = match +organizationName = match +organizationalUnitName = supplied +commonName = supplied +emailAddress = optional + +# For the 'anything' policy +# At this point in time, you must list all acceptable 'object' +# types. +[ policy_anything ] +countryName = optional +stateOrProvinceName = optional +localityName = optional +organizationName = optional +organizationalUnitName = optional +commonName = supplied +emailAddress = optional + +#################################################################### +[ req ] +default_bits = 1024 +default_keyfile = privkey.pem +distinguished_name = req_distinguished_name +attributes = req_attributes +x509_extensions = v3_ca # The extentions to add to the self signed cert + +# Passwords for private keys if not present they will be prompted for +# input_password = secret +# output_password = secret + +# This sets a mask for permitted string types. There are several options. +# default: PrintableString, T61String, BMPString. +# pkix : PrintableString, BMPString. +# utf8only: only UTF8Strings. +# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings). +# MASK:XXXX a literal mask value. +# WARNING: current versions of Netscape crash on BMPStrings or UTF8Strings +# so use this option with caution! +string_mask = nombstr + +req_extensions = v3_req # The extensions to add to a certificate request + +[ req_distinguished_name ] +countryName = Country Name (2 letter code) +countryName_default = AU +countryName_min = 2 +countryName_max = 2 + +stateOrProvinceName = State or Province Name (full name) +stateOrProvinceName_default = VIC + +localityName = Locality Name (eg, city) +localityName_default = Bendigo + +0.organizationName = Organization Name (eg, company) +#0.organizationName_default = $ENV::KEY_ORG + +# we can do this but it is not needed normally :-) +#1.organizationName = Second Organization Name (eg, company) +#1.organizationName_default = World Wide Web Pty Ltd + +organizationalUnitName = Organizational Unit Name (eg, section) +#organizationalUnitName_default = $ENV::KEY_OU +#organizationalUnitName_default = + +commonName = Common Name (eg, your name or your server\'s hostname) +#commonName_default = $ENV::KEY_CN +commonName_max = 64 + +#emailAddress = Email Address +#emailAddress_default = $ENV::KEY_EMAIL +#emailAddress_max = 40 + +# SET-ex3 = SET extension number 3 + +[ req_attributes ] +challengePassword = A challenge password +challengePassword_min = 4 +challengePassword_max = 20 + +# unstructuredName = An optional company name + +[ usr_cert ] + +# These extensions are added when 'ca' signs a request. + +# This goes against PKIX guidelines but some CAs do it and some software +# requires this to avoid interpreting an end user certificate as a CA. + +#basicConstraints = CA:FALSE + +# Here are some examples of the usage of nsCertType. If it is omitted +# the certificate can be used for anything *except* object signing. + +# This is OK for an SSL server. +# nsCertType = server + +# For an object signing certificate this would be used. +# nsCertType = objsign + +# For normal client use this is typical +# nsCertType = client, email + +# and for everything including object signing: +# nsCertType = client, email, objsign + +# This is typical in keyUsage for a client certificate. +# keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +# PKIX recommendations harmless if included in all certificates. +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer:always + +# This stuff is for subjectAltName and issuerAltname. +# Import the email address. +# subjectAltName=email:copy + +# Copy subject details +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +## Should add --extensions client to client certs +[ client ] + +nsCertType = client,email,objsign +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer:always +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +## Should add --extensions server to server certs +[ server ] + +nsCertType = server +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid,issuer:always +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +[ v3_req ] + +# Extensions to add to a certificate request +basicConstraints = CA:FALSE +keyUsage = nonRepudiation, digitalSignature, keyEncipherment + +[ v3_ca ] +basicConstraints = critical,CA:true,pathlen:0 + +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always +keyUsage = cRLSign, keyCertSign +nsCertType = sslCA, emailCA + +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +[ v3_ca_ou ] +basicConstraints = critical,CA:true,pathlen:0 + +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always +keyUsage = cRLSign, keyCertSign +nsCertType = sslCA, emailCA + +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +[ v3_ca_o ] +basicConstraints = critical,CA:true,pathlen:1 + +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always +keyUsage = cRLSign, keyCertSign +nsCertType = sslCA, emailCA + +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +[ v3_ca_ca ] +basicConstraints = critical,CA:true,pathlen:2 + +subjectKeyIdentifier = hash +authorityKeyIdentifier = keyid:always,issuer:always +keyUsage = cRLSign, keyCertSign +nsCertType = sslCA, emailCA + +issuerAltName = issuer:copy,URI:https://www.graytech.net.au +authorityInfoAccess = OCSP;URI:https://www.graytech.net.au/ssl/ocsp,caIssuers;URI:https://www.graytech.net.au/ssl/ca +crlDistributionPoints = URI:https://www.graytech.net.au/ssl/crl + +[ crl_ext ] + +# CRL extensions. +# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL. + +# issuerAltName=issuer:copy +authorityKeyIdentifier = keyid:always,issuer:always diff --git a/application/config/pagination.php b/application/config/pagination.php new file mode 100644 index 00000000..3dd178a7 --- /dev/null +++ b/application/config/pagination.php @@ -0,0 +1,24 @@ + array( + 'current_page' => array('source' => 'query_string', 'key' => 'page'), + 'total_items' => 0, + 'items_per_page' => 20, + 'view' => 'pagination/floating', + 'auto_hide' => TRUE, + 'first_page_in_url' => FALSE, + ), +); +?> diff --git a/application/config/pwgen.php b/application/config/pwgen.php new file mode 100644 index 00000000..70feb2aa --- /dev/null +++ b/application/config/pwgen.php @@ -0,0 +1,18 @@ + '127.0.0.1', + 'port' => '129', +); +?> diff --git a/application/config/userguide.php b/application/config/userguide.php new file mode 100644 index 00000000..e8443653 --- /dev/null +++ b/application/config/userguide.php @@ -0,0 +1,46 @@ + TRUE, + + // Enable these packages in the API browser. TRUE for all packages, or a string of comma seperated packages, using 'None' for a class with no @package + // Example: 'api_packages' => 'Kohana,Kohana/Database,Kohana/ORM,None', + 'api_packages' => TRUE, + + // Enables Disqus comments on the API and User Guide pages + 'show_comments' => Kohana::$environment === Kohana::PRODUCTION, + + // Leave this alone + 'modules' => array( + + 'kohana' => array('enabled'=>FALSE), + 'auth' => array('enabled'=>FALSE), + 'cache' => array('enabled'=>FALSE), + 'database' => array('enabled'=>FALSE), + 'minion' => array('enabled'=>FALSE), + 'orm' => array('enabled'=>FALSE), + 'pagination' => array('enabled'=>FALSE), + // This should be the path to this modules userguide pages, without the 'guide/'. Ex: '/guide/modulename/' would be 'modulename' + 'userguide' => array( + + // Whether this modules userguide pages should be shown + 'enabled' => TRUE, + + // The name that should show up on the userguide index page + 'name' => 'Userguide', + + // A short description of this module, shown on the index page + 'description' => 'Documentation viewer and api generation.', + + // Copyright message, shown in the footer for this module + 'copyright' => '© 2008–2012 Kohana Team', + ) + ), + + // Set transparent class name segments + 'transparent_prefixes' => array( + 'Kohana' => TRUE, + ) +); diff --git a/application/i18n/.htaccess b/application/i18n/.htaccess new file mode 100644 index 00000000..281d5c33 --- /dev/null +++ b/application/i18n/.htaccess @@ -0,0 +1,2 @@ +order allow,deny +deny from all diff --git a/application/media/css/dhtml.calendar.css b/application/media/css/dhtml.calendar.css new file mode 100644 index 00000000..bbab528c --- /dev/null +++ b/application/media/css/dhtml.calendar.css @@ -0,0 +1,232 @@ +/* The main calendar widget. DIV containing a table. */ + +div.calendar { position: relative; } + +.calendar, .calendar table { + border: 1px solid #556; + font-size: 11px; + color: #000; + cursor: default; + background: #eef; + font-family: tahoma,verdana,sans-serif; +} + +/* Header part -- contains navigation buttons and day names. */ + +.calendar .button { /* "<<", "<", ">", ">>" buttons have this class */ + text-align: center; /* They are the navigation buttons */ + padding: 2px; /* Make the buttons seem like they're pressing */ +} + +.calendar .nav { + background: #778 url(dhtml.menuarrow.gif) no-repeat 100% 100%; +} + +.calendar thead .title { /* This holds the current "month, year" */ + font-weight: bold; /* Pressing it will take you to the current date */ + text-align: center; + background: #fff; + color: #000; + padding: 2px; +} + +.calendar thead .headrow { /* Row containing navigation buttons */ + background: #778; + color: #fff; +} + +.calendar thead .daynames { /* Row containing the day names */ + background: #bdf; +} + +.calendar thead .name { /* Cells containing the day names */ + border-bottom: 1px solid #556; + padding: 2px; + text-align: center; + color: #000; +} + +.calendar thead .weekend { /* How a weekend day name shows in header */ + color: #a66; +} + +.calendar thead .hilite { /* How do the buttons in header appear when hover */ + background-color: #aaf; + color: #000; + border: 1px solid #04f; + padding: 1px; +} + +.calendar thead .active { /* Active (pressed) buttons in header */ + background-color: #77c; + padding: 2px 0px 0px 2px; +} + +/* The body part -- contains all the days in month. */ + +.calendar tbody .day { /* Cells containing month days dates */ + width: 2em; + color: #456; + text-align: right; + padding: 2px 4px 2px 2px; +} +.calendar tbody .day.othermonth { + font-size: 80%; + color: #bbb; +} +.calendar tbody .day.othermonth.oweekend { + color: #fbb; +} + +.calendar table .wn { + padding: 2px 3px 2px 2px; + border-right: 1px solid #000; + background: #bdf; +} + +.calendar tbody .rowhilite td { + background: #def; +} + +.calendar tbody .rowhilite td.wn { + background: #eef; +} + +.calendar tbody td.hilite { /* Hovered cells */ + background: #def; + padding: 1px 3px 1px 1px; + border: 1px solid #bbb; +} + +.calendar tbody td.active { /* Active (pressed) cells */ + background: #cde; + padding: 2px 2px 0px 2px; +} + +.calendar tbody td.selected { /* Cell showing today date */ + font-weight: bold; + border: 1px solid #000; + padding: 1px 3px 1px 1px; + background: #fff; + color: #000; +} + +.calendar tbody td.weekend { /* Cells showing weekend days */ + color: #a66; +} + +.calendar tbody td.today { /* Cell showing selected date */ + font-weight: bold; + color: #00f; +} + +.calendar tbody .disabled { color: #999; } + +.calendar tbody .emptycell { /* Empty cells (the best is to hide them) */ + visibility: hidden; +} + +.calendar tbody .emptyrow { /* Empty row (some months need less than 6 rows) */ + display: none; +} + +/* The footer part -- status bar and "Close" button */ + +.calendar tfoot .footrow { /* The in footer (only one right now) */ + text-align: center; + background: #556; + color: #fff; +} + +.calendar tfoot .ttip { /* Tooltip (status bar) cell */ + background: #fff; + color: #445; + border-top: 1px solid #556; + padding: 1px; +} + +.calendar tfoot .hilite { /* Hover style for buttons in footer */ + background: #aaf; + border: 1px solid #04f; + color: #000; + padding: 1px; +} + +.calendar tfoot .active { /* Active (pressed) style for buttons in footer */ + background: #77c; + padding: 2px 0px 0px 2px; +} + +/* Combo boxes (menus that display months/years for direct selection) */ + +.calendar .combo { + position: absolute; + display: none; + top: 0px; + left: 0px; + width: 4em; + cursor: default; + border: 1px solid #655; + background: #def; + color: #000; + font-size: 90%; + z-index: 100; +} + +.calendar .combo .label, +.calendar .combo .label-IEfix { + text-align: center; + padding: 1px; +} + +.calendar .combo .label-IEfix { + width: 4em; +} + +.calendar .combo .hilite { + background: #acf; +} + +.calendar .combo .active { + border-top: 1px solid #46a; + border-bottom: 1px solid #46a; + background: #eef; + font-weight: bold; +} + +.calendar td.time { + border-top: 1px solid #000; + padding: 1px 0px; + text-align: center; + background-color: #f4f0e8; +} + +.calendar td.time .hour, +.calendar td.time .minute, +.calendar td.time .ampm { + padding: 0px 3px 0px 4px; + border: 1px solid #889; + font-weight: bold; + background-color: #fff; +} + +.calendar td.time .ampm { + text-align: center; +} + +.calendar td.time .colon { + padding: 0px 2px 0px 3px; + font-weight: bold; +} + +.calendar td.time span.hilite { + border-color: #000; + background-color: #667; + color: #fff; +} + +.calendar td.time span.active { + border-color: #f00; + background-color: #000; + color: #0f0; +} diff --git a/application/media/css/dhtml.menuarrow.gif b/application/media/css/dhtml.menuarrow.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed2dee0e6368d201bf5d32833884c7c1da6c7424 GIT binary patch literal 68 zcmZ?wbhEHbWM^Py_{hZ2(9rPi-LwDy|1&T!DE?$&WME)o&;ha;K=KSsqAVN&i(DE6 VRJ~d>0vEY-3aNTcS;53$4FHxP5xxKb literal 0 HcmV?d00001 diff --git a/application/media/css/html5reset-1.6.1.css b/application/media/css/html5reset-1.6.1.css new file mode 100644 index 00000000..39cf8f00 --- /dev/null +++ b/application/media/css/html5reset-1.6.1.css @@ -0,0 +1,102 @@ +/* +html5doctor.com Reset Stylesheet +v1.6.1 +Last Updated: 2010-09-17 +Author: Richard Clark - http://richclarkdesign.com +Twitter: @rich_clark +*/ + +html, body, div, span, object, iframe, +h1, h2, h3, h4, h5, h6, p, blockquote, pre, +abbr, address, cite, code, +del, dfn, em, img, ins, kbd, q, samp, +small, strong, sub, sup, var, +b, i, +dl, dt, dd, ol, ul, li, +fieldset, form, label, legend, +table, caption, tbody, tfoot, thead, tr, th, td, +article, aside, canvas, details, figcaption, figure, +footer, header, hgroup, menu, nav, section, summary, +time, mark, audio, video { + margin:0; + padding:0; + border:0; + outline:0; + font-size:100%; + vertical-align:baseline; + background:transparent; +} + +body { + line-height:1; +} + +article,aside,details,figcaption,figure, +footer,header,hgroup,menu,nav,section { + display:block; +} + +nav ul { + list-style:none; +} + +blockquote, q { + quotes:none; +} + +blockquote:before, blockquote:after, +q:before, q:after { + content:''; + content:none; +} + +a { + margin:0; + padding:0; + font-size:100%; + vertical-align:baseline; + background:transparent; +} + +/* change colours to suit your needs */ +ins { + background-color:#ff9; + color:#000; + text-decoration:none; +} + +/* change colours to suit your needs */ +mark { + background-color:#ff9; + color:#000; + font-style:italic; + font-weight:bold; +} + +del { + text-decoration: line-through; +} + +abbr[title], dfn[title] { + border-bottom:1px dotted; + cursor:help; +} + +table { + border-collapse:collapse; + border-spacing:0; +} + +/* change border colour to suit your needs */ +hr { + display:block; + height:1px; + border:0; + border-top:1px solid #cccccc; + margin:1em 0; + padding:0; +} + +input, select { + vertical-align:middle; +} \ No newline at end of file diff --git a/application/media/css/jquery.gritter.css b/application/media/css/jquery.gritter.css new file mode 100644 index 00000000..0d6cba50 --- /dev/null +++ b/application/media/css/jquery.gritter.css @@ -0,0 +1,92 @@ +/* ie6 trash */ +* html #gritter-notice-wrapper { + position:absolute; +} +* html .gritter-top { + margin-bottom:-10px; +} +* html .gritter-item { + padding-bottom:0; +} +* html .gritter-bottom { + margin-bottom:0; +} +* html .gritter-close { + background:url(../img/jquery.gritter-close-ie6.gif); + width:22px; + height:22px; + top:7px; + left:7px; +} + +/* the norm */ +#gritter-notice-wrapper { + position:fixed; + top:20px; + right:20px; + width:301px; + z-index:9999; +} +.gritter-item-wrapper { + position:relative; + margin:0 0 10px 0; +} +.gritter-top { + background:url(../img/jquery.gritter.png) no-repeat left -30px; + height:10px; +} +.hover .gritter-top { + background-position:right -30px; +} +.gritter-bottom { + background:url(../img/jquery.gritter.png) no-repeat left bottom; + height:8px; + margin:0; +} +.hover .gritter-bottom { + background-position: bottom right; +} +.gritter-item { + display:block; + background:url(../img/jquery.gritter.png) no-repeat left -40px; + color:#eee; + padding:2px 11px 8px 11px; + font-size: 11px; + font-family:verdana; +} +.hover .gritter-item { + background-position:right -40px; +} +.gritter-item p { + padding:0; + margin:0; +} +.gritter-close { + position:absolute; + top:5px; + left:3px; + background:url(../img/jquery.gritter.png) no-repeat left top; + cursor:pointer; + width:30px; + height:30px; +} +.gritter-title { + font-size:14px; + font-weight:bold; + padding:0 0 7px 0; + display:block; + text-shadow:1px 1px #000; /* Not supported by IE :( */ +} +.gritter-image { + width:24px; + height:24px; + float:left; +} +.gritter-with-image, +.gritter-without-image { + padding:0 0 0px 0; +} +.gritter-with-image { + width:250px; + float:right; +} diff --git a/application/media/css/login.css b/application/media/css/login.css new file mode 100644 index 00000000..cecbce68 --- /dev/null +++ b/application/media/css/login.css @@ -0,0 +1,44 @@ +/** Login Style Sheet **/ + +table.login { + width: 5%; + margin-left: auto; + margin-right: auto; + background-color: #FBFBFB; + border: 1px solid #A0A0A0; + padding: 10px; +} + +#login-uid { + background: url('../img/login.user.png') no-repeat 0 1px; + background-color: #FAFAFF; + color: #000000; + padding-left: 24px; +} + +#login-uid:focus { + background-color: #F0F0FF; + color: #000000; +} + +#login-uid:disabled { + background-color: #DDDDFF; + color: #000000; +} + +#login-pwd { + background: url('../img/dialog-password.png') no-repeat 0 1px; + background-color: #FAFAFF; + color: #000000; + padding-left: 24px; +} + +#login-pwd:focus { + background-color: #F0F0FF; + color: #000000; +} + +#login-pwd:disabled { + background-color: #DDDDFF; + color: #000000; +} diff --git a/application/media/img/address-book-new-big.png b/application/media/img/address-book-new-big.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7c4e016c9a9f73b0de9857e3df5fb576257c73 GIT binary patch literal 3787 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 BGL`@U literal 0 HcmV?d00001 diff --git a/application/media/img/address-book-new.png b/application/media/img/address-book-new.png new file mode 100644 index 0000000000000000000000000000000000000000..e37385cc152e1728bc16c20ed1a8ce242fa30ada GIT binary patch literal 1305 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 TRS@nf!FPIzm+~vs(zpKy%_B!@ literal 0 HcmV?d00001 diff --git a/application/media/img/bug-big.png b/application/media/img/bug-big.png new file mode 100644 index 0000000000000000000000000000000000000000..0758a85529421df9045a6d866f7a2a8b3bab744b GIT binary patch literal 928 zcmV;R17G}!P)>=r{{DUqGC4Wf-rnxFAt0r6m$*mPAnrc5aHoFZPXX!tIW#Fkh-@}1 zgcunaIdE;Q)w-{*uc@iYd$HDLGMSl~nJ}5cMx2Ab0?2uvK5<5XZ4IbS9y%Yc`wJT07%ZDz#lGybn3JqSRL~ z0UMA74b4&(;i^(TLHHouW@2KZv$OMExB)%z3;YY;Loal|6x@ch@X6Si?-HL4j@D=l zeuOzN@HzCtAbbO5cnohq+|yIjbjFy_Ph%X%fYJIiybU2dgwNm{+<-yYgcaC>^-^hI zU_eS41c9}7c6JumZ^`EVsK0+4wqYKC3+K=OaORAut5fhdT!DJ9)^2Za*F-0SAOIR0 z8@s!^fxX>b;4yp%z}&riy}2BhE=kyhKVc7q5G^e&9UUE+OvblfsFVuBuu`cws9wq? zSc40vPR(7r_U6`>U0-Ks2awfe0uWa2VGs(+I&9m+vkw8USUYBzkBrPwS0PwY4>8<_XtR z?QyfF^}_so6h-NDI*OvUwl-_+^wd-oMXzJg!&ysCO%38{Fr7}nPRAG{+`UUx;q}6|pRv$CJeep*C0000xp#diF-0gO0wOY#8YPCu(m;08N&*uTGut5+6l*{Fh zwn89;KuU>W7~xpgbw;BRj^m)~dg%B2eO%WKYlIM_(`f)}1&^j_;l$-;pS?|W3xA>5 z;-%N?0T2WMQpztQ+7{CgQKeE*aQMEDWmyW2!C*itl~U^3?KYn0DRqfNVinQywlz(Q z#1ZAKAd*sscsAj%E7u&|-l$%-zys&eh-$T(l7#VijN>>8j`+nH?&XQHNT+m9{OV4r zvu%47(Yhq8!?yNB?Sjbn{m8`F*#eYQL{HfQkBvq&qI$iqBw;ull1wHQY@JRA&+`-< z&1REKCZo(XO>;A%r~|ZX+7v|F`0k?^Fau73<2kaQ(hD$KTsX!7e%mwP_3z)w@3TO; UdX3#eDgXcg07*qoM6N<$f@_Q1TL1t6 literal 0 HcmV?d00001 diff --git a/application/media/img/country/au.png b/application/media/img/country/au.png new file mode 100644 index 0000000000000000000000000000000000000000..b20b0480703d8c4e18e68545cb426ce95483b1c9 GIT binary patch literal 1043 zcmeAS@N?(olHy`uVBq!ia0vp^LO{&J!3-oL&dByLFfcO&_=LCux&QzFzaAL!DJS>m zjG1S=12*Yd)+uW2GO;T+u{@Pour)M!!{ikaRssF#-ILP$&uuwV>{vdtdfxeMw~A8Q zHY`05=h1d(%k70zcSQu}v{f8TiE9gXpV8NLC?{oEan7pwGcSp7*6XPB73Ci2XgRrS z=P^O{!3J*`7aD|7vO+=_uRHR>CZi1r1G*y+^`g&8{-Bvp}&JXb4Z(dRds^Ae3_2UVgrNa`UZ;( z4VN1lE>l&lRa37wHC?Tx)ox+A*2rj%wsxzP)p`SiUVDeFCZQw zkB>hT9I`kg<9K?;k=)!9r%s*b5$IA<>$b6*6`y$6*k$$W(xM}Nejiejf260c^Y@$L z?e(I%dUtmA^WGj{%mU+g6yOPgl?gUVKxxJ#Z+91l4pvzYAm^Z`i(^Q|t>lCQOckn2 zmv?jD@Vi=8aBaHonf2^kh3Dp-K4aA19ewtmcEHUgn;12Y*kzwPletDFr)ynZ;>o2^ zS`LbWat|dJIVDZLQ=_!`)GL$R2B#XSARnWHf0}kZ*F=W~#7gVW8bqE)u@ z7&}$Zn$8uPwlUCQp@O)qbNv4qOq;)TDZSqELLlcJBg4;yMv^i1*EWJY?&<31vd$@? F2>_&xHE{p{ literal 0 HcmV?d00001 diff --git a/application/media/img/dialog-error-big.png b/application/media/img/dialog-error-big.png new file mode 100644 index 0000000000000000000000000000000000000000..49ed530368b4d517321e0d3c1d28b3248129d604 GIT binary patch literal 2383 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 mYou!?%3zeFt4YZUR7b;x1fW{b? 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 literal 0 HcmV?d00001 diff --git a/application/media/img/dialog-question.png b/application/media/img/dialog-question.png new file mode 100644 index 0000000000000000000000000000000000000000..ec0776145dd1f81ce086d6a742b97ff7672253e8 GIT binary patch literal 1086 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 literal 0 HcmV?d00001 diff --git a/application/media/img/forum-big.png b/application/media/img/forum-big.png new file mode 100644 index 0000000000000000000000000000000000000000..bbda895a99d6cb9d1a10e4a698fb8f939ab02871 GIT binary patch literal 1615 zcmV-V2C(^wP)8wQ zK~#9!m6mI4Tt^jvzx(p8?W`ZM<2X%>A4%&+OyZ~&;Hs^Ks6b6xf`Wq5{sDyeL4Op1 z_yMSdN7WS61|lJ70il9gMWD1zDhP$Rv~KH~*p1`HapTx=yz$yzuOGW!@8iDa&b|EL zx>!M|%8{;SG@5h1d*+-uXB2KtlnwLXRuyiRO$}}PTB<5zPnDIG-60*b!gU-~Hw@p` zqWN@Y^_pv2k1xirOaW`R1ZZg6x2JYX-E;Td)7|~hg9oUqsU}uYNoi>*bEzfP3Kq%a z0x!REhSB#g4z6XEA4|_(8wTV@0y;j?^Yv0yKKM&x=qzPT zG+k#UXHs+}uJBMbm8w`7mhG~A$2L0mbQ!}J-n+kOiBm7oB{15U_PX zjm2Vj8<7Za42)1;SIba;A7k&Fpt`Od#0r7$BC_vdxXaYnYWT92=Z_!aiRVu6%NI|R z%bOG|7t6AVltch!FHiwwbwKev*<4w@1(_={HMfMKsA$pKu(KabC77@McJ_np{t;@YydML3k3+lW4j| zHkZej9zhUzfDWiS5cr-OFJxEt=_L_tSJ1Qn5W1$J=_fS15wd|R@Fq&@o|K}b;HkbC@f6O z0AoNN@YVsN>FGRKB++W%|%T6ooeTwh=RtyC(t zzWz7hPhrgRKqfSr4x!@a*M{;DFAfce0MT$<_gIGB+F@hy!gT*1`8P&w9Xc2aXUzZr N002ovPDHLkV1f>g7GVGY literal 0 HcmV?d00001 diff --git a/application/media/img/gnome-pdf.png b/application/media/img/gnome-pdf.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c8b21fadfc42d5844e8823bae3e9158e31f5c1 GIT binary patch literal 3002 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 literal 0 HcmV?d00001 diff --git a/application/media/img/gritter.png b/application/media/img/gritter.png new file mode 100755 index 0000000000000000000000000000000000000000..0ca3bc0a0f8068194082db9719d6e20a8645985f GIT binary patch literal 4880 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 Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/application/media/img/help-about-big.png b/application/media/img/help-about-big.png new file mode 100644 index 0000000000000000000000000000000000000000..45b5d620625fcf15fffa10e5a6b33427886969c3 GIT binary patch literal 2978 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 literal 0 HcmV?d00001 diff --git a/application/media/img/help-about.png b/application/media/img/help-about.png new file mode 100644 index 0000000000000000000000000000000000000000..435ea0eeaae4e0f4fd7f35cec165cf184e96f937 GIT binary patch literal 981 zcmV;`11kK9P)0=OBTd6P1FeF#9cDLHp>8UQ zAn0g8g-ryfUWqVvU!jxYh2m~xf52$R2D_*fS{ca1U9^Fw7Al8kXM22Obio z92raO{h&!XGRBbnqwZgUCp+j5w{$nepFBt;mTZ{pp#QOewN`^|T?fO)a)NG>eFj(ygfAUM_$4X4$J`CyeiZ`O=5>($3%^QIj3? zYexokAlkL7^Q};<{T+qLAU1~^+y#K48PN%r)8CrK*^y#pJ#*Fb%oi^&FwW=JYyqc+ zrB^w6ED}#PL=(@2BP~g+zk>0X(7Fycxcg6VrIf+}4`@qlN6^g`DyI zxA%W!FN(F6=`+&kdn%oH_T8rD#6Bve48`mPlma){h8t`{2jVz-mC_xM zFp>CSl#a5zaF&Hj->f>?wr{Oi>#<-s7KydL5Q((*pp?ch-@=+zwA+kw>Ni^97ZAN0 zHD9A_)~`*C{kYg8Bsw1>Y83hB*NVr zr%mR@_XUi(=J~dEk88R@F(4|?x98Qb1Eu^${K_J3sGDHqMP|=`QnuEcFviw&1=iXf zN9q)#b5pPQOE*8WH-CECuH5>{&ZS=SQ>SEfC*8IWL`0N`IN2P>m(tS(L zm?~s*_PB^RBDFuHhbCns9KZ$Y4;|)6uaryv{DC7}2kHU0x`Av9 zt}ZGdP!%-+v6(C87U_tM28wQ zK~#9!m6mI4Tt^jvzx(p8?W`ZM<2X%>A4%&+OyZ~&;Hs^Ks6b6xf`Wq5{sDyeL4Op1 z_yMSdN7WS61|lJ70il9gMWD1zDhP$Rv~KH~*p1`HapTx=yz$yzuOGW!@8iDa&b|EL zx>!M|%8{;SG@5h1d*+-uXB2KtlnwLXRuyiRO$}}PTB<5zPnDIG-60*b!gU-~Hw@p` zqWN@Y^_pv2k1xirOaW`R1ZZg6x2JYX-E;Td)7|~hg9oUqsU}uYNoi>*bEzfP3Kq%a z0x!REhSB#g4z6XEA4|_(8wTV@0y;j?^Yv0yKKM&x=qzPT zG+k#UXHs+}uJBMbm8w`7mhG~A$2L0mbQ!}J-n+kOiBm7oB{15U_PX zjm2Vj8<7Za42)1;SIba;A7k&Fpt`Od#0r7$BC_vdxXaYnYWT92=Z_!aiRVu6%NI|R z%bOG|7t6AVltch!FHiwwbwKev*<4w@1(_={HMfMKsA$pKu(KabC77@McJ_np{t;@YydML3k3+lW4j| zHkZej9zhUzfDWiS5cr-OFJxEt=_L_tSJ1Qn5W1$J=_fS15wd|R@Fq&@o|K}b;HkbC@f6O z0AoNN@YVsN>FGRKB++W%|%T6ooeTwh=RtyC(t zzWz7hPhrgRKqfSr4x!@a*M{;DFAfce0MT$<_gIGB+F@hy!gT*1`8P&w9Xc2aXUzZr N002ovPDHLkV1f>g7GVGY literal 0 HcmV?d00001 diff --git a/application/media/img/help-faq-big.png b/application/media/img/help-faq-big.png new file mode 100644 index 0000000000000000000000000000000000000000..1d57544fcfda07203ab62a1bb0f0bc87e716c83b GIT binary patch literal 2421 zcmV-*35xcKP)_O?|2fWbkhH`5;0jjp)m)ZtayBgX>V`;falG7tTyf-Cz#KgSOdvL9B;0b>_RC#?6=^7OiutvlJE`& z9}Wk{9RN~tm%UV~bvUjzLTZwckr4u&<|Mo}5{Zzjj;nQ|m8)RclGkJa9C(2W##-OO z?5TD#J1U$^8R=l^|JlRz-1DZq=F?9r4|jESHVzIB<{Wf74G#~J&dys6Rx8Ws0%+-e z$dsJ9$((caFxOr8WL1CF!xWUa$Uq2~e9eJF_L^8MMuI{AxC4YjeuDS5+W2D$0IV44 zBnOq^co}iY5Y8UYsB;#6znr_{9lR>Mx0y3GCID~{KZ|-EdYN67PIv=1mD2h2d8{1S z06bnV`KzOv!a#QNC#=S;wJ9<-mC!FhXx?5Ti3h2Oc4Z+X?4%*OW8&b zKugy{VyI~+UxHICQwo!;6+-Gi#)|NR+t8$BuszI{(FIu23j= zuD?G@w2~TK{W~{pGQSdS&^$oTEMqh&xA%#q5I*7WTO$h+I-9AIG3h(0duLUSO zWbcD&LW9A;xC4Yj0gCrNa`a&I@#Dt?h3SK}U)|59gq1)~4GV-Nf|dQ<<;$11;3R|q z7H+?s@Z%l4D%_wC99JY4^~d^&RpL%ef^9Nt)v8s~jjZv9Ry+R-Tw-G7$OZsYJ^kEq zhgust=&b9-lrelIkRh%U1!WfbtYgN9h3oFGIo0 z&_7@8p^nb`vZ}wjO$&~|+sQ2% z!s-4`+G|w+D6okoV>aO$prZ14Ez6sCZru3Gg-X0nQV29vIWSENfP?s1bo+sq?y7Q9 z@G=yPwe0s8xW0 zfdO3tFGGtU_w}~d04xA4RD>`uuUN5SnbBDC`%jJ@IE$Z9v=Cr%2rrt8l>DET_LH3o z0KP+)`hrmkUPgC&4Zu9me2rdGf9HRY{{ul_k2W=3IIDddoM@@Rc}q_BYyjw6^hksh zGS&V|cY6)M9MCru&D99^=PX*ZXs*HV@mr;3(ixA(BM%_wao=TQUH|u@mqe zx`gS2wO?<0#Y&7QgK?%(8k41-n^90u@G38{d|iF*nM+NV8u6ns)&74VS&~g~qZ7q7 zz(i;uHb7xEeW;f0G@7O;Pbn^wInMM3rVx0yV;KSPYx1qmj^QVZk?{>4H(1yV!YZv) zQ~jnWK~7Pm9-o{Xo84YK&%znDavZlLEr7{nS|C_CFD^dD8=||rYZ#oQmth#JI#cK~ z{68Q`lQTBhXWI8VKs>m7_6G|5Z#l=Uk8 z3B};8UAuO!(NwYn^7U_!cRo%q$FyR3(;#@60bD9(0>RDM-Zr$)u-B?o8PyJ8j!&H^ zfN4r6vz1QgD-#aRoZkfDQ(V4nTR|ZJMtbhJTiInjJpKbaJmzpk)2v&Q-WC;_dS-Z-)&a&orFomF;-gzMaDbh>pV^q_ndYY78hUbeHnK(l^ n*p=_TP=K)tJpEXFkgWd#=zh}tL(H{K00000NkvXXu0mjfj>wB7 literal 0 HcmV?d00001 diff --git a/application/media/img/help-faq.png b/application/media/img/help-faq.png new file mode 100644 index 0000000000000000000000000000000000000000..69e0ce1e958fecf4830943d1e6bc29add6ba1293 GIT binary patch literal 1118 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6%*9TgAsieWw;%dH0CG7CJR*yM z%CCbkqm#z$3ZS55iEBhjaDG}zd16s2LwR|*US?i)adKios$PCk`s{Z$QVa}?p8|YB zT>t<74^-dK&;TS?ty%>nApjx*VH+D8!-NsEgM$N{lbxLnXY=szz}XN+Mn*KST2f0#OJ84iPk(1;XIpJUZFOD6 zCLq|psiV8KySL-ryEk9HeEI$zh`s}z4OH{y&C90NhK}yG=GMlYySH_9we?Nts&A<6 z>~8I!(B0G9HFf%=n!3uGhN_7Z`=(BxykXPYO`F#5Ik4y8!2_qxoSHDPXY01jPo6w^ z{rY9uq6_V7uXc8|_Vjhm*nWM{o?DCd-CA|@-kPKL_MCrw;KJkkPhPxx_x8i551&4L z`26|v*RP+yfBy<}$&Vl3fBpLP=g*(NfBynq_4@Uz=9Y%tdw1^KwWF)M9q69^i9JBF z59pr0uHOEx8MCHMn?8BVwoTi%Zvi@KRZ(nAE#@%f`n~9>018 zby7!HE6_a)_X6E>d)1M5>bN1ZOPZV8 zJ32ZiPMI5CJ zO}Wfe`CpHxufMF({`A>JoUx)juWSB%+rV^e|N78tstWS5>)tnJy{}6QH9B&4)zZxA zuED)YF?mNNPP(uy)a5)W(XnL8r&V8qm5$ApNLHDAp~rCp_uX8zL?#xlx|lQ}z4?v1 ze5+Oe?3wYbYSKp;v(4Xcv%ls3S?KZiZ6KH80w4RB^XYe&N&U6<4_~@}=KVA7hrT>H zU3K-$w3UI&zg~Sl+5i5x_s0?qEplgVn;o0;_OGu~S7z-so~p+;k3UP?d~b{RS%a5e zFL$l8tN(T3ca(TRu==j6Sy#7hUvAAFexFg6VNV_V1N+d&JyVYB92Eg&K~Gmdmvv4F FO#t}{G$8;0 literal 0 HcmV?d00001 diff --git a/application/media/img/help.png b/application/media/img/help.png new file mode 100644 index 0000000000000000000000000000000000000000..674a8e92b7f20890210e7f9e52c3bc44733dffa8 GIT binary patch literal 738 zcmV<80v-K{P)nJY(i5b*a|{viz&fDK@p;)lY?EeSqdF8xKuX>ow^r?;1CFf z(zR|ajxHHoN*y~$Kok)|(xfU$Ufz4TdmVg9W2)lN@ATui?}z*SJNQo$J@Gvt2|T`| zw+4I%8h}w9U^<!n|*(9aPSGJcR;dQt!9$R zQzhr+``n9vO!`$2)nM?+y6vh~|))-^1+*iGjcDvoJl`#fm z45?I#v9U3<)_9(W)*8oga9#IiP_x;*JX8wHvJgU0tJP?=T1-z*<2VkE<6zr1wryjK z`4{AQ-tSVWL?jX+6bf}=OG`^wmPMn{!1KH==;-K(dcE!d2Jkx|Q>)cJtgo*>4~N4~ zrIe!6-o?em@cjHdo12^Z?Ch+iweC!I`SkR3J6MswpklH3qgX7y0v-i>Ct|VKlgY`+ zFO^D#-QC@vp!2P}-<4$@3db%707*qoM6N<$g2Gft=>Px# literal 0 HcmV?d00001 diff --git a/application/media/img/jquery.gritter.close-ie6.gif b/application/media/img/jquery.gritter.close-ie6.gif new file mode 100644 index 0000000000000000000000000000000000000000..aea6e427ede71a9f7f709aeb7daa48e6fb5f07e0 GIT binary patch literal 718 zcmZ?wbhEHb6k`x$c$UP#%F258?%jtEA8y~i-NM4c)YNp%nl%Rx9<;W$uCK3;i;Fvd z{`~Xj&v|%wTwPs_jErPuWxc$-G&D4(PoG{>Q?p{liYHH=T)upH)~s3P=H@9WDTaoI zot>RNK0a1fRb&dSOvEG*2;&HeM|kAi~2*|TTgy?gib=g&uv9_8ib855-6)ej#& ztX;cy+O%l`0s?k+cG=n485tSJj~{n%aEOYEI(6z)Wo2bpSlIgY>lZIx{Nu-u_V)Iw zswxo?ksCK|?Afzt-MV#$4joEJNSHEZNCMki?(^G9DBs4DA0KlA4-XUF{g-;~8~>S)2Qt zr4^YHrt(BjO<>ZDo6y8!o1iYtm$)pEH7Y*AOKt*-K?1YN@~w$NZVB8R69W^p8MbX> z2v1<=Z;IJ;@X(=<1m7f9COv`W{2W_#B6*itXfVlfC0H&un##G%Tr5F&xm1FqNdn7q zmDLHH)^8GImisBQu{=oBX0p?n%41+0%5+gUQE*yHP=>bWBJM*fH78PBXE3_T=XfRr zWU^RA$1;U5B%i&)KPiEy-n&Lx;gRF-Jl+UR$iBA%yu2tBQB0m*KZV klO;q&G-@>)84n8x&q`bHRhy%cqp_2ThePmiumXcM0E(Ob2mk;8 literal 0 HcmV?d00001 diff --git a/application/media/img/jquery.gritter.png b/application/media/img/jquery.gritter.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca3bc0a0f8068194082db9719d6e20a8645985f GIT binary patch literal 4880 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 Zf3P5-;PGuo@D~?gbJgKWjfL<1{{eTAuA%?{ literal 0 HcmV?d00001 diff --git a/application/media/img/jquery.jstree.d.png b/application/media/img/jquery.jstree.d.png new file mode 100644 index 0000000000000000000000000000000000000000..8540175a04b0cd303e3966d1727f30ee9b8a7254 GIT binary patch literal 7635 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 EAHN$8j{pDw literal 0 HcmV?d00001 diff --git a/application/media/img/login.user.png b/application/media/img/login.user.png new file mode 100644 index 0000000000000000000000000000000000000000..7be48fb8cd09d6adfc48954e1907f38d3bb0c3b1 GIT binary patch literal 654 zcmV;90&)F`P)jL%;Pn)6~ zp+z7;99L)q8&6i(@;pDhvS!nc7x4PcUW2hXn?r(7S4e~~4wNS)&tLR1=iDr~xz%s_ zpCYEMNeNI9QX-`U1SCOHp6#ty*-X@(cLimD^%ZdQkQYW-ZbURRu<80K^-R;In0T@uAMdL%H@{m-*2~J%XyJ%VN zE@#($GnW&I^uH7h;s`cp6e}0&OCWbNaqnkKr2DFgq@H3 zGts7?ud1dvE>`|~(zIvbA{ONS6{SQaYpg6)B3o60TPim(N oN=PK6hSf)_xH~Spv5tS$Z>|sW3LxX?DF6Tf07*qoM6N<$f^GL0UH||9 literal 0 HcmV?d00001 diff --git a/application/media/img/logo-small.png b/application/media/img/logo-small.png new file mode 100644 index 0000000000000000000000000000000000000000..726933b130f4c934d8d48f3dab6d7e91ba332731 GIT binary patch literal 3978 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 N002ovPDHLkV1lZ2^SA&2 literal 0 HcmV?d00001 diff --git a/application/media/img/smile-big.png b/application/media/img/smile-big.png new file mode 100644 index 0000000000000000000000000000000000000000..22fba5ffce41d5eb25b1267871a8091ce49cd1f1 GIT binary patch literal 1332 zcmV-41Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iOb@ z2reP?;x3T@00gv2L_t(Y$HkRfh*eb>$A8~md+&43c$}*x*4M*1 z6VsSdFSTI9y6pA+zP0{*{{{bN6Tp*mtjj-(@wd&B`l@p*0&Wg{S?>vp6mY6zNy>g; zrzea7IQ*e4S-YZ1^BKWf%fwW~{=;S2wzp6iIvTxFiFAuV zMgIxF6L89kh4X@KFFx42ZqqfLPC=-p>YP<;ElHY)sFkT&q_2Ni@ScCSaB#ff?h)Zz zokcOTX$n34J(=yhp6kEpigg`HZ3^?v4`t5l%1N3yvCc`x7dd#Oj4{ZHg?_rS*DM}B zR=c!NVGt<(CE=L^twWx9`Qar4tNQX0u@}7g(eG@0>?`?VY@UR3J0%x58Tzg!o1Q%` zJBNHUyC~@G(&&MWa|eKD&bX23j$c2^`bTc-+kM||457Evrk;f3diZsVG8GqB!xvj8HHT4o@asDH zrg4FQG1GcEK~ohGiLL5DpE0?RTdkW7XbhHgha1)`&k~hlQRfu3lBV^)lf(iJa3o26 z&Z)s6ViVPJ%}GzEN5@>*FtbMfqCse6SvG(;wUWs>Ax>DcJPQbG)?E%Z1941Ww-3NA z*R7>mDU%72I917KAq-^MIYicsx|H7wG52j9W%5*sr#3HO-@9A5abSvQ{Cmn}!wnZ1 z-g)6JZojgbk&$7xyr-0^Dfuk;hRj(3ajGXz6k>9La>23%`sk}=Y+U7vr9(^|9VCux zl%tedDqO$fI3EqZ#nv5${{H2f4ZvE5b9!=SOrJlcgJQ*w938Fow&s1k_cAMQH+A#y zYZdzPdwA&P`4ox?Nn$xMneg}?h!+-t&cl5_R^+@^yEZEy4$b^zD>P- zU)z@jKGWG&F>Mj6mjpYWyrZRmPR_HTucourXs%N>|d-UD0U-S+UhNmrKrWbjhV4U*!Ef;6E+0}v+6489l(*><6?|hQT;IMsOgjZFmK;30$UXds)7C3QaENxCww|eP(4^^kds%W8V z)U{JabiC`;yw}KV}(k??52Rpzq9MbKsV3>%m-EhYgaAymUOmA zd&b8Y4-$+0ZBkEv{i7QN4gtr33E(GS6!^8#KLd~f769{rE`er+xeaJ55H|M2jVvbw zqDJNuz&LOc_!)@K_M!zq7xlo+z#LBq5Im_DrU0S}PSHl7QUh27ext6#x!>eQm3K5w q6*lxTGxpfVmo!dvdOGX>wEY3UCM(zdn1^Ek00003VS!P@cil)z4*}Q$iB}d>0za literal 0 HcmV?d00001 diff --git a/application/media/img/ui-anim_basic_16x16.gif b/application/media/img/ui-anim_basic_16x16.gif new file mode 100644 index 0000000000000000000000000000000000000000..084ecb879b9900663322beff5d735b8d225022b4 GIT binary patch literal 1459 zcmZvbdrVVz6vuzJ+)HoU3%#wi+;+%rOJ!vNECm#Gj}}^J8E6Zl6{jnTpiDO$I@rQo zTiy?~GG(CXplCvv5?;P#X-h%s-013tfTG3B1$AL$ZoZObE1D*1_V4c`=W{;4?>Wip zr1+)TIKaUJCb)3nLQ_*yOiaw=qF!qFketMoIjjxu+*ELIq3^F;|~!D}xJWooB?$cBKq{?z$?hNo|cNFAPo` zO&OTQC}y}+m@%P=WhA$rVnnh{7SX(PoVYv)TAFz|#t}bjGsZt@H(&cIJk_o%TK$P8 z&W+_ANA|oaG-UsCh~PsE`m$&m=VJlYpSd>1NRj}UnXH$GV0woD@cLQj6Rf^=McCnB zg+*<5$0ufhHcqTUQ*f2Fs7ya!*`Tg8=_L@pu5UEdC?Ry0lRXBRtnC}?^b)ls@VafK zO%*|@Ha-=PlK$X9<|fzB!opOt@XO$X`Jt~6aj!psv%Ex;MJIGlWF>?xz2uIpJiAKi zUU(I#D$IsD3p&`sc{@Nbp8*)XG|-*Sjba<3B*P`0w9?g%FRbS|WtQ;(0x-bSj(V~G z?4Y5JcE!V7`lxm!L-?}b+%G>94EO7IpV&3_4tR)Wogv4hEE$zEEmhH_5p^s$wHroE z_p-^!FhfOEG0*xDLq_h$1t?7264baJFYhw2^8Bu3sI^Uzy^-#PG;NcZMrou5t1a~!Fx&L zqTF*i=y!*63|dySwPRn6=THf65kfW}3iGuN^tGOo+2(TI1ubJI`x>N2qH}6(;WgLl z#tqoCOiY-u4SJrP5{p%@gmkIg(nPtn9%DBmp{~1FXHu%CKrikbOKtgyB*o)S8D6y^ zd?Z02c4RIuOX!iQ^4JKKth?L+w!SSv^kMTOXQ2;*||OP8`L)bqdZ6=hG3znjBdyouQC- z2{|0(#LB*c*Y@m8w%x8e$)!>@aePd#Gz1{;x;$GLm$RD-;+&E4OTfN^l#oYz+pl{9 ztGltv^dIhTL5CU(YkuB>N{G0Dv}w(IDcts{ZL`6#^nPt?i$=m{D23_}=zdLGKobnbKO&IVDbBU4*Z5%!iq zwd4gy;B|a{6z_Y3ZCGELzjfi*#NXQob_F!etMeQXTP?>q_esTGgPMt!lYSi3Dk%lV zFj`-5x050$NZ}(6i)}hQkYTlvY8Qp-Z!otT;M%|JB!Kwrq1mAuVh-s8J`2(Z^xnPt zR!4ECmU?MGIlsK8xxEj(F5}*c?K-Fx9TCTsJOoyoO->S0t0Ql}USDv~FFZ_3wlL+k zE`6{8Ds$jwATl0?qVdNe@X*G7G+tihnA%zLE@dA$P0U95A6u*S^xk5 literal 0 HcmV?d00001 diff --git a/application/media/js/dhtml.calendar-en.js b/application/media/js/dhtml.calendar-en.js new file mode 100644 index 00000000..1736202e --- /dev/null +++ b/application/media/js/dhtml.calendar-en.js @@ -0,0 +1,9 @@ +/* + * Calendar EN language + * Author: Mihai Bazon, + */ +Calendar._DN=new Array +("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday");Calendar._SDN=new Array +("Sun","Mon","Tue","Wed","Thu","Fri","Sat","Sun");Calendar._FD=0;Calendar._MN=new Array +("January","February","March","April","May","June","July","August","September","October","November","December");Calendar._SMN=new Array +("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");Calendar._TT={};Calendar._TT["INFO"]="About the calendar";Calendar._TT["ABOUT"]="DHTML Date/Time Selector\n"+"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n"+"For latest version visit: http://www.dynarch.com/projects/calendar/\n"+"Distributed under GNU LGPL. See http://gnu.org/licenses/lgpl.html for details."+"\n\n"+"Date selection:\n"+"- Use the \xab, \xbb buttons to select year\n"+"- Use the "+String.fromCharCode(0x2039)+", "+String.fromCharCode(0x203a)+" buttons to select month\n"+"- Hold mouse button on any of the above buttons for faster selection.";Calendar._TT["ABOUT_TIME"]="\n\n"+"Time selection:\n"+"- Click on any of the time parts to increase it\n"+"- or Shift-click to decrease it\n"+"- or click and drag for faster selection.";Calendar._TT["PREV_YEAR"]="Prev. year (hold for menu)";Calendar._TT["PREV_MONTH"]="Prev. month (hold for menu)";Calendar._TT["GO_TODAY"]="Go Today";Calendar._TT["NEXT_MONTH"]="Next month (hold for menu)";Calendar._TT["NEXT_YEAR"]="Next year (hold for menu)";Calendar._TT["SEL_DATE"]="Select date";Calendar._TT["DRAG_TO_MOVE"]="Drag to move";Calendar._TT["PART_TODAY"]=" (today)";Calendar._TT["DAY_FIRST"]="Display %s first";Calendar._TT["WEEKEND"]="0,6";Calendar._TT["CLOSE"]="Close";Calendar._TT["TODAY"]="Today";Calendar._TT["TIME_PART"]="(Shift-)Click or drag to change value";Calendar._TT["DEF_DATE_FORMAT"]="%Y-%m-%d";Calendar._TT["TT_DATE_FORMAT"]="%a, %b %e";Calendar._TT["WK"]="wk";Calendar._TT["TIME"]="Time:"; diff --git a/application/media/js/dhtml.calendar-setup.js b/application/media/js/dhtml.calendar-setup.js new file mode 100644 index 00000000..c269f7dd --- /dev/null +++ b/application/media/js/dhtml.calendar-setup.js @@ -0,0 +1,200 @@ +/* Copyright Mihai Bazon, 2002, 2003 | http://dynarch.com/mishoo/ + * --------------------------------------------------------------------------- + * + * The DHTML Calendar + * + * Details and latest version at: + * http://dynarch.com/mishoo/calendar.epl + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + * + * This file defines helper functions for setting up the calendar. They are + * intended to help non-programmers get a working calendar on their site + * quickly. This script should not be seen as part of the calendar. It just + * shows you what one can do with the calendar, while in the same time + * providing a quick and simple method for setting it up. If you need + * exhaustive customization of the calendar creation process feel free to + * modify this code to suit your needs (this is recommended and much better + * than modifying calendar.js itself). + */ + +// $Id$ + +/** + * This function "patches" an input field (or other element) to use a calendar + * widget for date selection. + * + * The "params" is a single object that can have the following properties: + * + * prop. name | description + * ------------------------------------------------------------------------------------------------- + * inputField | the ID of an input field to store the date + * displayArea | the ID of a DIV or other element to show the date + * button | ID of a button or other element that will trigger the calendar + * eventName | event that will trigger the calendar, without the "on" prefix (default: "click") + * ifFormat | date format that will be stored in the input field + * daFormat | the date format that will be used to display the date in displayArea + * singleClick | (true/false) wether the calendar is in single click mode or not (default: true) + * firstDay | numeric: 0 to 6. "0" means display Sunday first, "1" means display Monday first, etc. + * align | alignment (default: "Br"); if you don't know what's this see the calendar documentation + * range | array with 2 elements. Default: [1900, 2999] -- the range of years available + * weekNumbers | (true/false) if it's true (default) the calendar will display week numbers + * flat | null or element ID; if not null the calendar will be a flat calendar having the parent with the given ID + * flatCallback | function that receives a JS Date object and returns an URL to point the browser to (for flat calendar) + * disableFunc | function that receives a JS Date object and should return true if that date has to be disabled in the calendar + * onSelect | function that gets called when a date is selected. You don't _have_ to supply this (the default is generally okay) + * onClose | function that gets called when the calendar is closed. [default] + * onUpdate | function that gets called after the date is updated in the input field. Receives a reference to the calendar. + * date | the date that the calendar will be initially displayed to + * showsTime | default: false; if true the calendar will include a time selector + * timeFormat | the time format; can be "12" or "24", default is "12" + * electric | if true (default) then given fields/date areas are updated for each move; otherwise they're updated only on close + * step | configures the step of the years in drop-down boxes; default: 2 + * position | configures the calendar absolute position; default: null + * cache | if "true" (but default: "false") it will reuse the same calendar object, where possible + * showOthers | if "true" (but default: "false") it will show days from other months too + * + * None of them is required, they all have default values. However, if you + * pass none of "inputField", "displayArea" or "button" you'll get a warning + * saying "nothing to setup". + */ +Calendar.setup = function (params) { + function param_default(pname, def) { if (typeof params[pname] == "undefined") { params[pname] = def; } }; + + param_default("inputField", null); + param_default("displayArea", null); + param_default("button", null); + param_default("eventName", "click"); + param_default("ifFormat", "%Y/%m/%d"); + param_default("daFormat", "%Y/%m/%d"); + param_default("singleClick", true); + param_default("disableFunc", null); + param_default("dateStatusFunc", params["disableFunc"]); // takes precedence if both are defined + param_default("dateText", null); + param_default("firstDay", null); + param_default("align", "Br"); + param_default("range", [1900, 2999]); + param_default("weekNumbers", true); + param_default("flat", null); + param_default("flatCallback", null); + param_default("onSelect", null); + param_default("onClose", null); + param_default("onUpdate", null); + param_default("date", null); + param_default("showsTime", false); + param_default("timeFormat", "24"); + param_default("electric", true); + param_default("step", 2); + param_default("position", null); + param_default("cache", false); + param_default("showOthers", false); + param_default("multiple", null); + + var tmp = ["inputField", "displayArea", "button"]; + for (var i in tmp) { + if (typeof params[tmp[i]] == "string") { + params[tmp[i]] = document.getElementById(params[tmp[i]]); + } + } + if (!(params.flat || params.multiple || params.inputField || params.displayArea || params.button)) { + alert("Calendar.setup:\n Nothing to setup (no fields found). Please check your code"); + return false; + } + + function onSelect(cal) { + var p = cal.params; + var update = (cal.dateClicked || p.electric); + if (update && p.inputField) { + p.inputField.value = cal.date.print(p.ifFormat); + if (typeof p.inputField.onchange == "function") + p.inputField.onchange(); + } + if (update && p.displayArea) + p.displayArea.innerHTML = cal.date.print(p.daFormat); + if (update && typeof p.onUpdate == "function") + p.onUpdate(cal); + if (update && p.flat) { + if (typeof p.flatCallback == "function") + p.flatCallback(cal); + } + if (update && p.singleClick && cal.dateClicked) + cal.callCloseHandler(); + }; + + if (params.flat != null) { + if (typeof params.flat == "string") + params.flat = document.getElementById(params.flat); + if (!params.flat) { + alert("Calendar.setup:\n Flat specified but can't find parent."); + return false; + } + var cal = new Calendar(params.firstDay, params.date, params.onSelect || onSelect); + cal.showsOtherMonths = params.showOthers; + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.params = params; + cal.weekNumbers = params.weekNumbers; + cal.setRange(params.range[0], params.range[1]); + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + if (params.ifFormat) { + cal.setDateFormat(params.ifFormat); + } + if (params.inputField && typeof params.inputField.value == "string") { + cal.parseDate(params.inputField.value); + } + cal.create(params.flat); + cal.show(); + return false; + } + + var triggerEl = params.button || params.displayArea || params.inputField; + triggerEl["on" + params.eventName] = function() { + var dateEl = params.inputField || params.displayArea; + var dateFmt = params.inputField ? params.ifFormat : params.daFormat; + var mustCreate = false; + var cal = window.calendar; + if (dateEl) + params.date = Date.parseDate(dateEl.value || dateEl.innerHTML, dateFmt); + if (!(cal && params.cache)) { + window.calendar = cal = new Calendar(params.firstDay, + params.date, + params.onSelect || onSelect, + params.onClose || function(cal) { cal.hide(); }); + cal.showsTime = params.showsTime; + cal.time24 = (params.timeFormat == "24"); + cal.weekNumbers = params.weekNumbers; + mustCreate = true; + } else { + if (params.date) + cal.setDate(params.date); + cal.hide(); + } + if (params.multiple) { + cal.multiple = {}; + for (var i = params.multiple.length; --i >= 0;) { + var d = params.multiple[i]; + var ds = d.print("%Y%m%d"); + cal.multiple[ds] = d; + } + } + cal.showsOtherMonths = params.showOthers; + cal.yearStep = params.step; + cal.setRange(params.range[0], params.range[1]); + cal.params = params; + cal.setDateStatusHandler(params.dateStatusFunc); + cal.getDateText = params.dateText; + cal.setDateFormat(dateFmt); + if (mustCreate) + cal.create(); + cal.refresh(); + if (!params.position) + cal.showAtElement(params.button || params.displayArea || params.inputField, params.align); + else + cal.showAt(params.position[0], params.position[1]); + return false; + }; + + return cal; +}; diff --git a/application/media/js/dhtml.calendar.js b/application/media/js/dhtml.calendar.js new file mode 100644 index 00000000..f6c13981 --- /dev/null +++ b/application/media/js/dhtml.calendar.js @@ -0,0 +1,1806 @@ +/* Copyright Mihai Bazon, 2002-2005 | www.bazon.net/mishoo + * ----------------------------------------------------------- + * + * The DHTML Calendar, version 1.0 "It is happening again" + * + * Details and latest version at: + * www.dynarch.com/projects/calendar + * + * This script is developed by Dynarch.com. Visit us at www.dynarch.com. + * + * This script is distributed under the GNU Lesser General Public License. + * Read the entire license text here: http://www.gnu.org/licenses/lgpl.html + */ + +// $Id$ + +/** The Calendar object constructor. */ +Calendar = function (firstDayOfWeek, dateStr, onSelected, onClose) { + // member variables + this.activeDiv = null; + this.currentDateEl = null; + this.getDateStatus = null; + this.getDateToolTip = null; + this.getDateText = null; + this.timeout = null; + this.onSelected = onSelected || null; + this.onClose = onClose || null; + this.dragging = false; + this.hidden = false; + this.minYear = 1970; + this.maxYear = 2050; + this.dateFormat = Calendar._TT["DEF_DATE_FORMAT"]; + this.ttDateFormat = Calendar._TT["TT_DATE_FORMAT"]; + this.isPopup = true; + this.weekNumbers = true; + this.firstDayOfWeek = typeof firstDayOfWeek == "number" ? firstDayOfWeek : Calendar._FD; // 0 for Sunday, 1 for Monday, etc. + this.showsOtherMonths = false; + this.dateStr = dateStr; + this.ar_days = null; + this.showsTime = false; + this.time24 = true; + this.yearStep = 2; + this.hiliteToday = true; + this.multiple = null; + // HTML elements + this.table = null; + this.element = null; + this.tbody = null; + this.firstdayname = null; + // Combo boxes + this.monthsCombo = null; + this.yearsCombo = null; + this.hilitedMonth = null; + this.activeMonth = null; + this.hilitedYear = null; + this.activeYear = null; + // Information + this.dateClicked = false; + + // one-time initializations + if (typeof Calendar._SDN == "undefined") { + // table of short day names + if (typeof Calendar._SDN_len == "undefined") + Calendar._SDN_len = 3; + var ar = new Array(); + for (var i = 8; i > 0;) { + ar[--i] = Calendar._DN[i].substr(0, Calendar._SDN_len); + } + Calendar._SDN = ar; + // table of short month names + if (typeof Calendar._SMN_len == "undefined") + Calendar._SMN_len = 3; + ar = new Array(); + for (var i = 12; i > 0;) { + ar[--i] = Calendar._MN[i].substr(0, Calendar._SMN_len); + } + Calendar._SMN = ar; + } +}; + +// ** constants + +/// "static", needed for event handlers. +Calendar._C = null; + +/// detect a special case of "web browser" +Calendar.is_ie = ( /msie/i.test(navigator.userAgent) && + !/opera/i.test(navigator.userAgent) ); + +Calendar.is_ie5 = ( Calendar.is_ie && /msie 5\.0/i.test(navigator.userAgent) ); + +/// detect Opera browser +Calendar.is_opera = /opera/i.test(navigator.userAgent); + +/// detect KHTML-based browsers +Calendar.is_khtml = /Konqueror|Safari|KHTML/i.test(navigator.userAgent); + +// BEGIN: UTILITY FUNCTIONS; beware that these might be moved into a separate +// library, at some point. + +Calendar.getAbsolutePos = function(el) { + var SL = 0, ST = 0; + var is_div = /^div$/i.test(el.tagName); + if (is_div && el.scrollLeft) + SL = el.scrollLeft; + if (is_div && el.scrollTop) + ST = el.scrollTop; + var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; + if (el.offsetParent) { + var tmp = this.getAbsolutePos(el.offsetParent); + r.x += tmp.x; + r.y += tmp.y; + } + return r; +}; + +Calendar.isRelated = function (el, evt) { + var related = evt.relatedTarget; + if (!related) { + var type = evt.type; + if (type == "mouseover") { + related = evt.fromElement; + } else if (type == "mouseout") { + related = evt.toElement; + } + } + while (related) { + if (related == el) { + return true; + } + related = related.parentNode; + } + return false; +}; + +Calendar.removeClass = function(el, className) { + if (!(el && el.className)) { + return; + } + var cls = el.className.split(" "); + var ar = new Array(); + for (var i = cls.length; i > 0;) { + if (cls[--i] != className) { + ar[ar.length] = cls[i]; + } + } + el.className = ar.join(" "); +}; + +Calendar.addClass = function(el, className) { + Calendar.removeClass(el, className); + el.className += " " + className; +}; + +// FIXME: the following 2 functions totally suck, are useless and should be replaced immediately. +Calendar.getElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.currentTarget; + while (f.nodeType != 1 || /^div$/i.test(f.tagName)) + f = f.parentNode; + return f; +}; + +Calendar.getTargetElement = function(ev) { + var f = Calendar.is_ie ? window.event.srcElement : ev.target; + while (f.nodeType != 1) + f = f.parentNode; + return f; +}; + +Calendar.stopEvent = function(ev) { + ev || (ev = window.event); + if (Calendar.is_ie) { + ev.cancelBubble = true; + ev.returnValue = false; + } else { + ev.preventDefault(); + ev.stopPropagation(); + } + return false; +}; + +Calendar.addEvent = function(el, evname, func) { + if (el.attachEvent) { // IE + el.attachEvent("on" + evname, func); + } else if (el.addEventListener) { // Gecko / W3C + el.addEventListener(evname, func, true); + } else { + el["on" + evname] = func; + } +}; + +Calendar.removeEvent = function(el, evname, func) { + if (el.detachEvent) { // IE + el.detachEvent("on" + evname, func); + } else if (el.removeEventListener) { // Gecko / W3C + el.removeEventListener(evname, func, true); + } else { + el["on" + evname] = null; + } +}; + +Calendar.createElement = function(type, parent) { + var el = null; + if (document.createElementNS) { + // use the XHTML namespace; IE won't normally get here unless + // _they_ "fix" the DOM2 implementation. + el = document.createElementNS("http://www.w3.org/1999/xhtml", type); + } else { + el = document.createElement(type); + } + if (typeof parent != "undefined") { + parent.appendChild(el); + } + return el; +}; + +// END: UTILITY FUNCTIONS + +// BEGIN: CALENDAR STATIC FUNCTIONS + +/** Internal -- adds a set of events to make some element behave like a button. */ +Calendar._add_evs = function(el) { + with (Calendar) { + addEvent(el, "mouseover", dayMouseOver); + addEvent(el, "mousedown", dayMouseDown); + addEvent(el, "mouseout", dayMouseOut); + if (is_ie) { + addEvent(el, "dblclick", dayMouseDblClick); + el.setAttribute("unselectable", true); + } + } +}; + +Calendar.findMonth = function(el) { + if (typeof el.month != "undefined") { + return el; + } else if (typeof el.parentNode.month != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.findYear = function(el) { + if (typeof el.year != "undefined") { + return el; + } else if (typeof el.parentNode.year != "undefined") { + return el.parentNode; + } + return null; +}; + +Calendar.showMonthsCombo = function () { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var mc = cal.monthsCombo; + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + if (cal.activeMonth) { + Calendar.removeClass(cal.activeMonth, "active"); + } + var mon = cal.monthsCombo.getElementsByTagName("div")[cal.date.getMonth()]; + Calendar.addClass(mon, "active"); + cal.activeMonth = mon; + var s = mc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var mcw = mc.offsetWidth; + if (typeof mcw == "undefined") + // Konqueror brain-dead techniques + mcw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - mcw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; +}; + +Calendar.showYearsCombo = function (fwd) { + var cal = Calendar._C; + if (!cal) { + return false; + } + var cal = cal; + var cd = cal.activeDiv; + var yc = cal.yearsCombo; + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + if (cal.activeYear) { + Calendar.removeClass(cal.activeYear, "active"); + } + cal.activeYear = null; + var Y = cal.date.getFullYear() + (fwd ? 1 : -1); + var yr = yc.firstChild; + var show = false; + for (var i = 12; i > 0; --i) { + if (Y >= cal.minYear && Y <= cal.maxYear) { + yr.innerHTML = Y; + yr.year = Y; + yr.style.display = "block"; + show = true; + } else { + yr.style.display = "none"; + } + yr = yr.nextSibling; + Y += fwd ? cal.yearStep : -cal.yearStep; + } + if (show) { + var s = yc.style; + s.display = "block"; + if (cd.navtype < 0) + s.left = cd.offsetLeft + "px"; + else { + var ycw = yc.offsetWidth; + if (typeof ycw == "undefined") + // Konqueror brain-dead techniques + ycw = 50; + s.left = (cd.offsetLeft + cd.offsetWidth - ycw) + "px"; + } + s.top = (cd.offsetTop + cd.offsetHeight) + "px"; + } +}; + +// event handlers + +Calendar.tableMouseUp = function(ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + if (cal.timeout) { + clearTimeout(cal.timeout); + } + var el = cal.activeDiv; + if (!el) { + return false; + } + var target = Calendar.getTargetElement(ev); + ev || (ev = window.event); + Calendar.removeClass(el, "active"); + if (target == el || target.parentNode == el) { + Calendar.cellClick(el, ev); + } + var mon = Calendar.findMonth(target); + var date = null; + if (mon) { + date = new Date(cal.date); + if (mon.month != date.getMonth()) { + date.setMonth(mon.month); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } else { + var year = Calendar.findYear(target); + if (year) { + date = new Date(cal.date); + if (year.year != date.getFullYear()) { + date.setFullYear(year.year); + cal.setDate(date); + cal.dateClicked = false; + cal.callHandler(); + } + } + } + with (Calendar) { + removeEvent(document, "mouseup", tableMouseUp); + removeEvent(document, "mouseover", tableMouseOver); + removeEvent(document, "mousemove", tableMouseOver); + cal._hideCombos(); + _C = null; + return stopEvent(ev); + } +}; + +Calendar.tableMouseOver = function (ev) { + var cal = Calendar._C; + if (!cal) { + return; + } + var el = cal.activeDiv; + var target = Calendar.getTargetElement(ev); + if (target == el || target.parentNode == el) { + Calendar.addClass(el, "hilite active"); + Calendar.addClass(el.parentNode, "rowhilite"); + } else { + if (typeof el.navtype == "undefined" || (el.navtype != 50 && (el.navtype == 0 || Math.abs(el.navtype) > 2))) + Calendar.removeClass(el, "active"); + Calendar.removeClass(el, "hilite"); + Calendar.removeClass(el.parentNode, "rowhilite"); + } + ev || (ev = window.event); + if (el.navtype == 50 && target != el) { + var pos = Calendar.getAbsolutePos(el); + var w = el.offsetWidth; + var x = ev.clientX; + var dx; + var decrease = true; + if (x > pos.x + w) { + dx = x - pos.x - w; + decrease = false; + } else + dx = pos.x - x; + + if (dx < 0) dx = 0; + var range = el._range; + var current = el._current; + var count = Math.floor(dx / 10) % range.length; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + while (count-- > 0) + if (decrease) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + + cal.onUpdateTime(); + } + var mon = Calendar.findMonth(target); + if (mon) { + if (mon.month != cal.date.getMonth()) { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + Calendar.addClass(mon, "hilite"); + cal.hilitedMonth = mon; + } else if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + } else { + if (cal.hilitedMonth) { + Calendar.removeClass(cal.hilitedMonth, "hilite"); + } + var year = Calendar.findYear(target); + if (year) { + if (year.year != cal.date.getFullYear()) { + if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + Calendar.addClass(year, "hilite"); + cal.hilitedYear = year; + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } else if (cal.hilitedYear) { + Calendar.removeClass(cal.hilitedYear, "hilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.tableMouseDown = function (ev) { + if (Calendar.getTargetElement(ev) == Calendar.getElement(ev)) { + return Calendar.stopEvent(ev); + } +}; + +Calendar.calDragIt = function (ev) { + var cal = Calendar._C; + if (!(cal && cal.dragging)) { + return false; + } + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posX = ev.pageX; + posY = ev.pageY; + } + cal.hideShowCovered(); + var st = cal.element.style; + st.left = (posX - cal.xOffs) + "px"; + st.top = (posY - cal.yOffs) + "px"; + return Calendar.stopEvent(ev); +}; + +Calendar.calDragEnd = function (ev) { + var cal = Calendar._C; + if (!cal) { + return false; + } + cal.dragging = false; + with (Calendar) { + removeEvent(document, "mousemove", calDragIt); + removeEvent(document, "mouseup", calDragEnd); + tableMouseUp(ev); + } + cal.hideShowCovered(); +}; + +Calendar.dayMouseDown = function(ev) { + var el = Calendar.getElement(ev); + if (el.disabled) { + return false; + } + var cal = el.calendar; + cal.activeDiv = el; + Calendar._C = cal; + if (el.navtype != 300) with (Calendar) { + if (el.navtype == 50) { + el._current = el.innerHTML; + addEvent(document, "mousemove", tableMouseOver); + } else + addEvent(document, Calendar.is_ie5 ? "mousemove" : "mouseover", tableMouseOver); + addClass(el, "hilite active"); + addEvent(document, "mouseup", tableMouseUp); + } else if (cal.isPopup) { + cal._dragStart(ev); + } + if (el.navtype == -1 || el.navtype == 1) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout("Calendar.showMonthsCombo()", 250); + } else if (el.navtype == -2 || el.navtype == 2) { + if (cal.timeout) clearTimeout(cal.timeout); + cal.timeout = setTimeout((el.navtype > 0) ? "Calendar.showYearsCombo(true)" : "Calendar.showYearsCombo(false)", 250); + } else { + cal.timeout = null; + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseDblClick = function(ev) { + Calendar.cellClick(Calendar.getElement(ev), ev || window.event); + if (Calendar.is_ie) { + document.selection.empty(); + } +}; + +Calendar.dayMouseOver = function(ev) { + var el = Calendar.getElement(ev); + if (Calendar.isRelated(el, ev) || Calendar._C || el.disabled) { + return false; + } + if (el.ttip) { + if (el.ttip.substr(0, 1) == "_") { + el.ttip = el.caldate.print(el.calendar.ttDateFormat) + el.ttip.substr(1); + } + el.calendar.tooltips.innerHTML = el.ttip; + } + if (el.navtype != 300) { + Calendar.addClass(el, "hilite"); + if (el.caldate) { + Calendar.addClass(el.parentNode, "rowhilite"); + } + } + return Calendar.stopEvent(ev); +}; + +Calendar.dayMouseOut = function(ev) { + with (Calendar) { + var el = getElement(ev); + if (isRelated(el, ev) || _C || el.disabled) + return false; + removeClass(el, "hilite"); + if (el.caldate) + removeClass(el.parentNode, "rowhilite"); + if (el.calendar) + el.calendar.tooltips.innerHTML = _TT["SEL_DATE"]; + return stopEvent(ev); + } +}; + +/** + * A generic "click" handler :) handles all types of buttons defined in this + * calendar. + */ +Calendar.cellClick = function(el, ev) { + var cal = el.calendar; + var closing = false; + var newdate = false; + var date = null; + if (typeof el.navtype == "undefined") { + if (cal.currentDateEl) { + Calendar.removeClass(cal.currentDateEl, "selected"); + Calendar.addClass(el, "selected"); + closing = (cal.currentDateEl == el); + if (!closing) { + cal.currentDateEl = el; + } + } + cal.date.setDateOnly(el.caldate); + date = cal.date; + var other_month = !(cal.dateClicked = !el.otherMonth); + if (!other_month && !cal.currentDateEl) + cal._toggleMultipleDate(new Date(date)); + else + newdate = !el.disabled; + // a date was clicked + if (other_month) + cal._init(cal.firstDayOfWeek, date); + } else { + if (el.navtype == 200) { + Calendar.removeClass(el, "hilite"); + cal.callCloseHandler(); + return; + } + date = new Date(cal.date); + if (el.navtype == 0) + date.setDateOnly(new Date()); // TODAY + // unless "today" was clicked, we assume no date was clicked so + // the selected handler will know not to close the calenar when + // in single-click mode. + // cal.dateClicked = (el.navtype == 0); + cal.dateClicked = false; + var year = date.getFullYear(); + var mon = date.getMonth(); + function setMonth(m) { + var day = date.getDate(); + var max = date.getMonthDays(m); + if (day > max) { + date.setDate(max); + } + date.setMonth(m); + }; + switch (el.navtype) { + case 400: + Calendar.removeClass(el, "hilite"); + var text = Calendar._TT["ABOUT"]; + if (typeof text != "undefined") { + text += cal.showsTime ? Calendar._TT["ABOUT_TIME"] : ""; + } else { + // FIXME: this should be removed as soon as lang files get updated! + text = "Help and about box text is not translated into this language.\n" + + "If you know this language and you feel generous please update\n" + + "the corresponding file in \"lang\" subdir to match calendar-en.js\n" + + "and send it back to to get it into the distribution ;-)\n\n" + + "Thank you!\n" + + "http://dynarch.com/mishoo/calendar.epl\n"; + } + alert(text); + return; + case -2: + if (year > cal.minYear) { + date.setFullYear(year - 1); + } + break; + case -1: + if (mon > 0) { + setMonth(mon - 1); + } else if (year-- > cal.minYear) { + date.setFullYear(year); + setMonth(11); + } + break; + case 1: + if (mon < 11) { + setMonth(mon + 1); + } else if (year < cal.maxYear) { + date.setFullYear(year + 1); + setMonth(0); + } + break; + case 2: + if (year < cal.maxYear) { + date.setFullYear(year + 1); + } + break; + case 100: + cal.setFirstDayOfWeek(el.fdow); + return; + case 50: + var range = el._range; + var current = el.innerHTML; + for (var i = range.length; --i >= 0;) + if (range[i] == current) + break; + if (ev && ev.shiftKey) { + if (--i < 0) + i = range.length - 1; + } else if ( ++i >= range.length ) + i = 0; + var newval = range[i]; + el.innerHTML = newval; + cal.onUpdateTime(); + return; + case 0: + // TODAY will bring us here + if ((typeof cal.getDateStatus == "function") && + cal.getDateStatus(date, date.getFullYear(), date.getMonth(), date.getDate())) { + return false; + } + break; + } + if (!date.equalsTo(cal.date)) { + cal.setDate(date); + newdate = true; + } else if (el.navtype == 0) + newdate = closing = true; + } + if (newdate) { + ev && cal.callHandler(); + } + if (closing) { + Calendar.removeClass(el, "hilite"); + ev && cal.callCloseHandler(); + } +}; + +// END: CALENDAR STATIC FUNCTIONS + +// BEGIN: CALENDAR OBJECT FUNCTIONS + +/** + * This function creates the calendar inside the given parent. If _par is + * null than it creates a popup calendar inside the BODY element. If _par is + * an element, be it BODY, then it creates a non-popup calendar (still + * hidden). Some properties need to be set before calling this function. + */ +Calendar.prototype.create = function (_par) { + var parent = null; + if (! _par) { + // default parent is the document body, in which case we create + // a popup calendar. + parent = document.getElementsByTagName("body")[0]; + this.isPopup = true; + } else { + parent = _par; + this.isPopup = false; + } + this.date = this.dateStr ? new Date(this.dateStr) : new Date(); + + var table = Calendar.createElement("table"); + this.table = table; + table.cellSpacing = 0; + table.cellPadding = 0; + table.calendar = this; + Calendar.addEvent(table, "mousedown", Calendar.tableMouseDown); + + var div = Calendar.createElement("div"); + this.element = div; + div.className = "calendar"; + if (this.isPopup) { + div.style.position = "absolute"; + div.style.display = "none"; + } + div.appendChild(table); + + var thead = Calendar.createElement("thead", table); + var cell = null; + var row = null; + + var cal = this; + var hh = function (text, cs, navtype) { + cell = Calendar.createElement("td", row); + cell.colSpan = cs; + cell.className = "button"; + if (navtype != 0 && Math.abs(navtype) <= 2) + cell.className += " nav"; + Calendar._add_evs(cell); + cell.calendar = cal; + cell.navtype = navtype; + cell.innerHTML = "
    " + text + "
    "; + return cell; + }; + + row = Calendar.createElement("tr", thead); + var title_length = 6; + (this.isPopup) && --title_length; + (this.weekNumbers) && ++title_length; + + hh("?", 1, 400).ttip = Calendar._TT["INFO"]; + this.title = hh("", title_length, 300); + this.title.className = "title"; + if (this.isPopup) { + this.title.ttip = Calendar._TT["DRAG_TO_MOVE"]; + this.title.style.cursor = "move"; + hh("×", 1, 200).ttip = Calendar._TT["CLOSE"]; + } + + row = Calendar.createElement("tr", thead); + row.className = "headrow"; + + this._nav_py = hh("«", 1, -2); + this._nav_py.ttip = Calendar._TT["PREV_YEAR"]; + + this._nav_pm = hh("‹", 1, -1); + this._nav_pm.ttip = Calendar._TT["PREV_MONTH"]; + + this._nav_now = hh(Calendar._TT["TODAY"], this.weekNumbers ? 4 : 3, 0); + this._nav_now.ttip = Calendar._TT["GO_TODAY"]; + + this._nav_nm = hh("›", 1, 1); + this._nav_nm.ttip = Calendar._TT["NEXT_MONTH"]; + + this._nav_ny = hh("»", 1, 2); + this._nav_ny.ttip = Calendar._TT["NEXT_YEAR"]; + + // day names + row = Calendar.createElement("tr", thead); + row.className = "daynames"; + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + cell.className = "name wn"; + cell.innerHTML = Calendar._TT["WK"]; + } + for (var i = 7; i > 0; --i) { + cell = Calendar.createElement("td", row); + if (!i) { + cell.navtype = 100; + cell.calendar = this; + Calendar._add_evs(cell); + } + } + this.firstdayname = (this.weekNumbers) ? row.firstChild.nextSibling : row.firstChild; + this._displayWeekdays(); + + var tbody = Calendar.createElement("tbody", table); + this.tbody = tbody; + + for (i = 6; i > 0; --i) { + row = Calendar.createElement("tr", tbody); + if (this.weekNumbers) { + cell = Calendar.createElement("td", row); + } + for (var j = 7; j > 0; --j) { + cell = Calendar.createElement("td", row); + cell.calendar = this; + Calendar._add_evs(cell); + } + } + + if (this.showsTime) { + row = Calendar.createElement("tr", tbody); + row.className = "time"; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + cell.innerHTML = Calendar._TT["TIME"] || " "; + + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = this.weekNumbers ? 4 : 3; + + (function(){ + function makeTimePart(className, init, range_start, range_end) { + var part = Calendar.createElement("span", cell); + part.className = className; + part.innerHTML = init; + part.calendar = cal; + part.ttip = Calendar._TT["TIME_PART"]; + part.navtype = 50; + part._range = []; + if (typeof range_start != "number") + part._range = range_start; + else { + for (var i = range_start; i <= range_end; ++i) { + var txt; + if (i < 10 && range_end >= 10) txt = '0' + i; + else txt = '' + i; + part._range[part._range.length] = txt; + } + } + Calendar._add_evs(part); + return part; + }; + var hrs = cal.date.getHours(); + var mins = cal.date.getMinutes(); + var t12 = !cal.time24; + var pm = (hrs > 12); + if (t12 && pm) hrs -= 12; + var H = makeTimePart("hour", hrs, t12 ? 1 : 0, t12 ? 12 : 23); + var span = Calendar.createElement("span", cell); + span.innerHTML = ":"; + span.className = "colon"; + var M = makeTimePart("minute", mins, 0, 59); + var AP = null; + cell = Calendar.createElement("td", row); + cell.className = "time"; + cell.colSpan = 2; + if (t12) + AP = makeTimePart("ampm", pm ? "pm" : "am", ["am", "pm"]); + else + cell.innerHTML = " "; + + cal.onSetTime = function() { + var pm, hrs = this.date.getHours(), + mins = this.date.getMinutes(); + if (t12) { + pm = (hrs >= 12); + if (pm) hrs -= 12; + if (hrs == 0) hrs = 12; + AP.innerHTML = pm ? "pm" : "am"; + } + H.innerHTML = (hrs < 10) ? ("0" + hrs) : hrs; + M.innerHTML = (mins < 10) ? ("0" + mins) : mins; + }; + + cal.onUpdateTime = function() { + var date = this.date; + var h = parseInt(H.innerHTML, 10); + if (t12) { + if (/pm/i.test(AP.innerHTML) && h < 12) + h += 12; + else if (/am/i.test(AP.innerHTML) && h == 12) + h = 0; + } + var d = date.getDate(); + var m = date.getMonth(); + var y = date.getFullYear(); + date.setHours(h); + date.setMinutes(parseInt(M.innerHTML, 10)); + date.setFullYear(y); + date.setMonth(m); + date.setDate(d); + this.dateClicked = false; + this.callHandler(); + }; + })(); + } else { + this.onSetTime = this.onUpdateTime = function() {}; + } + + var tfoot = Calendar.createElement("tfoot", table); + + row = Calendar.createElement("tr", tfoot); + row.className = "footrow"; + + cell = hh(Calendar._TT["SEL_DATE"], this.weekNumbers ? 8 : 7, 300); + cell.className = "ttip"; + if (this.isPopup) { + cell.ttip = Calendar._TT["DRAG_TO_MOVE"]; + cell.style.cursor = "move"; + } + this.tooltips = cell; + + div = Calendar.createElement("div", this.element); + this.monthsCombo = div; + div.className = "combo"; + for (i = 0; i < Calendar._MN.length; ++i) { + var mn = Calendar.createElement("div"); + mn.className = Calendar.is_ie ? "label-IEfix" : "label"; + mn.month = i; + mn.innerHTML = Calendar._SMN[i]; + div.appendChild(mn); + } + + div = Calendar.createElement("div", this.element); + this.yearsCombo = div; + div.className = "combo"; + for (i = 12; i > 0; --i) { + var yr = Calendar.createElement("div"); + yr.className = Calendar.is_ie ? "label-IEfix" : "label"; + div.appendChild(yr); + } + + this._init(this.firstDayOfWeek, this.date); + parent.appendChild(this.element); +}; + +/** keyboard navigation, only for popup calendars */ +Calendar._keyEvent = function(ev) { + var cal = window._dynarch_popupCalendar; + if (!cal || cal.multiple) + return false; + (Calendar.is_ie) && (ev = window.event); + var act = (Calendar.is_ie || ev.type == "keypress"), + K = ev.keyCode; + if (ev.ctrlKey) { + switch (K) { + case 37: // KEY left + act && Calendar.cellClick(cal._nav_pm); + break; + case 38: // KEY up + act && Calendar.cellClick(cal._nav_py); + break; + case 39: // KEY right + act && Calendar.cellClick(cal._nav_nm); + break; + case 40: // KEY down + act && Calendar.cellClick(cal._nav_ny); + break; + default: + return false; + } + } else switch (K) { + case 32: // KEY space (now) + Calendar.cellClick(cal._nav_now); + break; + case 27: // KEY esc + act && cal.callCloseHandler(); + break; + case 37: // KEY left + case 38: // KEY up + case 39: // KEY right + case 40: // KEY down + if (act) { + var prev, x, y, ne, el, step; + prev = K == 37 || K == 38; + step = (K == 37 || K == 39) ? 1 : 7; + function setVars() { + el = cal.currentDateEl; + var p = el.pos; + x = p & 15; + y = p >> 4; + ne = cal.ar_days[y][x]; + };setVars(); + function prevMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() - step); + cal.setDate(date); + }; + function nextMonth() { + var date = new Date(cal.date); + date.setDate(date.getDate() + step); + cal.setDate(date); + }; + while (1) { + switch (K) { + case 37: // KEY left + if (--x >= 0) + ne = cal.ar_days[y][x]; + else { + x = 6; + K = 38; + continue; + } + break; + case 38: // KEY up + if (--y >= 0) + ne = cal.ar_days[y][x]; + else { + prevMonth(); + setVars(); + } + break; + case 39: // KEY right + if (++x < 7) + ne = cal.ar_days[y][x]; + else { + x = 0; + K = 40; + continue; + } + break; + case 40: // KEY down + if (++y < cal.ar_days.length) + ne = cal.ar_days[y][x]; + else { + nextMonth(); + setVars(); + } + break; + } + break; + } + if (ne) { + if (!ne.disabled) + Calendar.cellClick(ne); + else if (prev) + prevMonth(); + else + nextMonth(); + } + } + break; + case 13: // KEY enter + if (act) + Calendar.cellClick(cal.currentDateEl, ev); + break; + default: + return false; + } + return Calendar.stopEvent(ev); +}; + +/** + * (RE)Initializes the calendar to the given date and firstDayOfWeek + */ +Calendar.prototype._init = function (firstDayOfWeek, date) { + var today = new Date(), + TY = today.getFullYear(), + TM = today.getMonth(), + TD = today.getDate(); + this.table.style.visibility = "hidden"; + var year = date.getFullYear(); + if (year < this.minYear) { + year = this.minYear; + date.setFullYear(year); + } else if (year > this.maxYear) { + year = this.maxYear; + date.setFullYear(year); + } + this.firstDayOfWeek = firstDayOfWeek; + this.date = new Date(date); + var month = date.getMonth(); + var mday = date.getDate(); + var no_days = date.getMonthDays(); + + // calendar voodoo for computing the first day that would actually be + // displayed in the calendar, even if it's from the previous month. + // WARNING: this is magic. ;-) + date.setDate(1); + var day1 = (date.getDay() - this.firstDayOfWeek) % 7; + if (day1 < 0) + day1 += 7; + date.setDate(-day1); + date.setDate(date.getDate() + 1); + + var row = this.tbody.firstChild; + var MN = Calendar._SMN[month]; + var ar_days = this.ar_days = new Array(); + var weekend = Calendar._TT["WEEKEND"]; + var dates = this.multiple ? (this.datesCells = {}) : null; + for (var i = 0; i < 6; ++i, row = row.nextSibling) { + var cell = row.firstChild; + if (this.weekNumbers) { + cell.className = "day wn"; + cell.innerHTML = date.getWeekNumber(); + cell = cell.nextSibling; + } + row.className = "daysrow"; + var hasdays = false, iday, dpos = ar_days[i] = []; + for (var j = 0; j < 7; ++j, cell = cell.nextSibling, date.setDate(iday + 1)) { + iday = date.getDate(); + var wday = date.getDay(); + cell.className = "day"; + cell.pos = i << 4 | j; + dpos[j] = cell; + var current_month = (date.getMonth() == month); + if (!current_month) { + if (this.showsOtherMonths) { + cell.className += " othermonth"; + cell.otherMonth = true; + } else { + cell.className = "emptycell"; + cell.innerHTML = " "; + cell.disabled = true; + continue; + } + } else { + cell.otherMonth = false; + hasdays = true; + } + cell.disabled = false; + cell.innerHTML = this.getDateText ? this.getDateText(date, iday) : iday; + if (dates) + dates[date.print("%Y%m%d")] = cell; + if (this.getDateStatus) { + var status = this.getDateStatus(date, year, month, iday); + if (this.getDateToolTip) { + var toolTip = this.getDateToolTip(date, year, month, iday); + if (toolTip) + cell.title = toolTip; + } + if (status === true) { + cell.className += " disabled"; + cell.disabled = true; + } else { + if (/disabled/i.test(status)) + cell.disabled = true; + cell.className += " " + status; + } + } + if (!cell.disabled) { + cell.caldate = new Date(date); + cell.ttip = "_"; + if (!this.multiple && current_month + && iday == mday && this.hiliteToday) { + cell.className += " selected"; + this.currentDateEl = cell; + } + if (date.getFullYear() == TY && + date.getMonth() == TM && + iday == TD) { + cell.className += " today"; + cell.ttip += Calendar._TT["PART_TODAY"]; + } + if (weekend.indexOf(wday.toString()) != -1) + cell.className += cell.otherMonth ? " oweekend" : " weekend"; + } + } + if (!(hasdays || this.showsOtherMonths)) + row.className = "emptyrow"; + } + this.title.innerHTML = Calendar._MN[month] + ", " + year; + this.onSetTime(); + this.table.style.visibility = "visible"; + this._initMultipleDates(); + // PROFILE + // this.tooltips.innerHTML = "Generated in " + ((new Date()) - today) + " ms"; +}; + +Calendar.prototype._initMultipleDates = function() { + if (this.multiple) { + for (var i in this.multiple) { + var cell = this.datesCells[i]; + var d = this.multiple[i]; + if (!d) + continue; + if (cell) + cell.className += " selected"; + } + } +}; + +Calendar.prototype._toggleMultipleDate = function(date) { + if (this.multiple) { + var ds = date.print("%Y%m%d"); + var cell = this.datesCells[ds]; + if (cell) { + var d = this.multiple[ds]; + if (!d) { + Calendar.addClass(cell, "selected"); + this.multiple[ds] = date; + } else { + Calendar.removeClass(cell, "selected"); + delete this.multiple[ds]; + } + } + } +}; + +Calendar.prototype.setDateToolTipHandler = function (unaryFunction) { + this.getDateToolTip = unaryFunction; +}; + +/** + * Calls _init function above for going to a certain date (but only if the + * date is different than the currently selected one). + */ +Calendar.prototype.setDate = function (date) { + if (!date.equalsTo(this.date)) { + this._init(this.firstDayOfWeek, date); + } +}; + +/** + * Refreshes the calendar. Useful if the "disabledHandler" function is + * dynamic, meaning that the list of disabled date can change at runtime. + * Just * call this function if you think that the list of disabled dates + * should * change. + */ +Calendar.prototype.refresh = function () { + this._init(this.firstDayOfWeek, this.date); +}; + +/** Modifies the "firstDayOfWeek" parameter (pass 0 for Synday, 1 for Monday, etc.). */ +Calendar.prototype.setFirstDayOfWeek = function (firstDayOfWeek) { + this._init(firstDayOfWeek, this.date); + this._displayWeekdays(); +}; + +/** + * Allows customization of what dates are enabled. The "unaryFunction" + * parameter must be a function object that receives the date (as a JS Date + * object) and returns a boolean value. If the returned value is true then + * the passed date will be marked as disabled. + */ +Calendar.prototype.setDateStatusHandler = Calendar.prototype.setDisabledHandler = function (unaryFunction) { + this.getDateStatus = unaryFunction; +}; + +/** Customization of allowed year range for the calendar. */ +Calendar.prototype.setRange = function (a, z) { + this.minYear = a; + this.maxYear = z; +}; + +/** Calls the first user handler (selectedHandler). */ +Calendar.prototype.callHandler = function () { + if (this.onSelected) { + this.onSelected(this, this.date.print(this.dateFormat)); + } +}; + +/** Calls the second user handler (closeHandler). */ +Calendar.prototype.callCloseHandler = function () { + if (this.onClose) { + this.onClose(this); + } + this.hideShowCovered(); +}; + +/** Removes the calendar object from the DOM tree and destroys it. */ +Calendar.prototype.destroy = function () { + var el = this.element.parentNode; + el.removeChild(this.element); + Calendar._C = null; + window._dynarch_popupCalendar = null; +}; + +/** + * Moves the calendar element to a different section in the DOM tree (changes + * its parent). + */ +Calendar.prototype.reparent = function (new_parent) { + var el = this.element; + el.parentNode.removeChild(el); + new_parent.appendChild(el); +}; + +// This gets called when the user presses a mouse button anywhere in the +// document, if the calendar is shown. If the click was outside the open +// calendar this function closes it. +Calendar._checkCalendar = function(ev) { + var calendar = window._dynarch_popupCalendar; + if (!calendar) { + return false; + } + var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); + for (; el != null && el != calendar.element; el = el.parentNode); + if (el == null) { + // calls closeHandler which should hide the calendar. + window._dynarch_popupCalendar.callCloseHandler(); + return Calendar.stopEvent(ev); + } +}; + +/** Shows the calendar. */ +Calendar.prototype.show = function () { + var rows = this.table.getElementsByTagName("tr"); + for (var i = rows.length; i > 0;) { + var row = rows[--i]; + Calendar.removeClass(row, "rowhilite"); + var cells = row.getElementsByTagName("td"); + for (var j = cells.length; j > 0;) { + var cell = cells[--j]; + Calendar.removeClass(cell, "hilite"); + Calendar.removeClass(cell, "active"); + } + } + this.element.style.display = "block"; + this.hidden = false; + if (this.isPopup) { + window._dynarch_popupCalendar = this; + Calendar.addEvent(document, "keydown", Calendar._keyEvent); + Calendar.addEvent(document, "keypress", Calendar._keyEvent); + Calendar.addEvent(document, "mousedown", Calendar._checkCalendar); + } + this.hideShowCovered(); +}; + +/** + * Hides the calendar. Also removes any "hilite" from the class of any TD + * element. + */ +Calendar.prototype.hide = function () { + if (this.isPopup) { + Calendar.removeEvent(document, "keydown", Calendar._keyEvent); + Calendar.removeEvent(document, "keypress", Calendar._keyEvent); + Calendar.removeEvent(document, "mousedown", Calendar._checkCalendar); + } + this.element.style.display = "none"; + this.hidden = true; + this.hideShowCovered(); +}; + +/** + * Shows the calendar at a given absolute position (beware that, depending on + * the calendar element style -- position property -- this might be relative + * to the parent's containing rectangle). + */ +Calendar.prototype.showAt = function (x, y) { + var s = this.element.style; + s.left = x + "px"; + s.top = y + "px"; + this.show(); +}; + +/** Shows the calendar near a given element. */ +Calendar.prototype.showAtElement = function (el, opts) { + var self = this; + var p = Calendar.getAbsolutePos(el); + if (!opts || typeof opts != "string") { + this.showAt(p.x, p.y + el.offsetHeight); + return true; + } + function fixPosition(box) { + if (box.x < 0) + box.x = 0; + if (box.y < 0) + box.y = 0; + var cp = document.createElement("div"); + var s = cp.style; + s.position = "absolute"; + s.right = s.bottom = s.width = s.height = "0px"; + document.body.appendChild(cp); + var br = Calendar.getAbsolutePos(cp); + document.body.removeChild(cp); + if (Calendar.is_ie) { + br.y += document.body.scrollTop; + br.x += document.body.scrollLeft; + } else { + br.y += window.scrollY; + br.x += window.scrollX; + } + var tmp = box.x + box.width - br.x; + if (tmp > 0) box.x -= tmp; + tmp = box.y + box.height - br.y; + if (tmp > 0) box.y -= tmp; + }; + this.element.style.display = "block"; + Calendar.continuation_for_the_fucking_khtml_browser = function() { + var w = self.element.offsetWidth; + var h = self.element.offsetHeight; + self.element.style.display = "none"; + var valign = opts.substr(0, 1); + var halign = "l"; + if (opts.length > 1) { + halign = opts.substr(1, 1); + } + // vertical alignment + switch (valign) { + case "T": p.y -= h; break; + case "B": p.y += el.offsetHeight; break; + case "C": p.y += (el.offsetHeight - h) / 2; break; + case "t": p.y += el.offsetHeight - h; break; + case "b": break; // already there + } + // horizontal alignment + switch (halign) { + case "L": p.x -= w; break; + case "R": p.x += el.offsetWidth; break; + case "C": p.x += (el.offsetWidth - w) / 2; break; + case "l": p.x += el.offsetWidth - w; break; + case "r": break; // already there + } + p.width = w; + p.height = h + 40; + self.monthsCombo.style.display = "none"; + fixPosition(p); + self.showAt(p.x, p.y); + }; + if (Calendar.is_khtml) + setTimeout("Calendar.continuation_for_the_fucking_khtml_browser()", 10); + else + Calendar.continuation_for_the_fucking_khtml_browser(); +}; + +/** Customizes the date format. */ +Calendar.prototype.setDateFormat = function (str) { + this.dateFormat = str; +}; + +/** Customizes the tooltip date format. */ +Calendar.prototype.setTtDateFormat = function (str) { + this.ttDateFormat = str; +}; + +/** + * Tries to identify the date represented in a string. If successful it also + * calls this.setDate which moves the calendar to the given date. + */ +Calendar.prototype.parseDate = function(str, fmt) { + if (!fmt) + fmt = this.dateFormat; + this.setDate(Date.parseDate(str, fmt)); +}; + +Calendar.prototype.hideShowCovered = function () { + if (!Calendar.is_ie && !Calendar.is_opera) + return; + function getVisib(obj){ + var value = obj.style.visibility; + if (!value) { + if (document.defaultView && typeof (document.defaultView.getComputedStyle) == "function") { // Gecko, W3C + if (!Calendar.is_khtml) + value = document.defaultView. + getComputedStyle(obj, "").getPropertyValue("visibility"); + else + value = ''; + } else if (obj.currentStyle) { // IE + value = obj.currentStyle.visibility; + } else + value = ''; + } + return value; + }; + + var tags = new Array("applet", "iframe", "select"); + var el = this.element; + + var p = Calendar.getAbsolutePos(el); + var EX1 = p.x; + var EX2 = el.offsetWidth + EX1; + var EY1 = p.y; + var EY2 = el.offsetHeight + EY1; + + for (var k = tags.length; k > 0; ) { + var ar = document.getElementsByTagName(tags[--k]); + var cc = null; + + for (var i = ar.length; i > 0;) { + cc = ar[--i]; + + p = Calendar.getAbsolutePos(cc); + var CX1 = p.x; + var CX2 = cc.offsetWidth + CX1; + var CY1 = p.y; + var CY2 = cc.offsetHeight + CY1; + + if (this.hidden || (CX1 > EX2) || (CX2 < EX1) || (CY1 > EY2) || (CY2 < EY1)) { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = cc.__msh_save_visibility; + } else { + if (!cc.__msh_save_visibility) { + cc.__msh_save_visibility = getVisib(cc); + } + cc.style.visibility = "hidden"; + } + } + } +}; + +/** Internal function; it displays the bar with the names of the weekday. */ +Calendar.prototype._displayWeekdays = function () { + var fdow = this.firstDayOfWeek; + var cell = this.firstdayname; + var weekend = Calendar._TT["WEEKEND"]; + for (var i = 0; i < 7; ++i) { + cell.className = "day name"; + var realday = (i + fdow) % 7; + if (i) { + cell.ttip = Calendar._TT["DAY_FIRST"].replace("%s", Calendar._DN[realday]); + cell.navtype = 100; + cell.calendar = this; + cell.fdow = realday; + Calendar._add_evs(cell); + } + if (weekend.indexOf(realday.toString()) != -1) { + Calendar.addClass(cell, "weekend"); + } + cell.innerHTML = Calendar._SDN[(i + fdow) % 7]; + cell = cell.nextSibling; + } +}; + +/** Internal function. Hides all combo boxes that might be displayed. */ +Calendar.prototype._hideCombos = function () { + this.monthsCombo.style.display = "none"; + this.yearsCombo.style.display = "none"; +}; + +/** Internal function. Starts dragging the element. */ +Calendar.prototype._dragStart = function (ev) { + if (this.dragging) { + return; + } + this.dragging = true; + var posX; + var posY; + if (Calendar.is_ie) { + posY = window.event.clientY + document.body.scrollTop; + posX = window.event.clientX + document.body.scrollLeft; + } else { + posY = ev.clientY + window.scrollY; + posX = ev.clientX + window.scrollX; + } + var st = this.element.style; + this.xOffs = posX - parseInt(st.left); + this.yOffs = posY - parseInt(st.top); + with (Calendar) { + addEvent(document, "mousemove", calDragIt); + addEvent(document, "mouseup", calDragEnd); + } +}; + +// BEGIN: DATE OBJECT PATCHES + +/** Adds the number of days array to the Date object. */ +Date._MD = new Array(31,28,31,30,31,30,31,31,30,31,30,31); + +/** Constants used for time computations */ +Date.SECOND = 1000 /* milliseconds */; +Date.MINUTE = 60 * Date.SECOND; +Date.HOUR = 60 * Date.MINUTE; +Date.DAY = 24 * Date.HOUR; +Date.WEEK = 7 * Date.DAY; + +Date.parseDate = function(str, fmt) { + var today = new Date(); + var y = 0; + var m = -1; + var d = 0; + var a = str.split(/\W+/); + var b = fmt.match(/%./g); + var i = 0, j = 0; + var hr = 0; + var min = 0; + for (i = 0; i < a.length; ++i) { + if (!a[i]) + continue; + switch (b[i]) { + case "%d": + case "%e": + d = parseInt(a[i], 10); + break; + + case "%m": + m = parseInt(a[i], 10) - 1; + break; + + case "%Y": + case "%y": + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + break; + + case "%b": + case "%B": + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { m = j; break; } + } + break; + + case "%H": + case "%I": + case "%k": + case "%l": + hr = parseInt(a[i], 10); + break; + + case "%P": + case "%p": + if (/pm/i.test(a[i]) && hr < 12) + hr += 12; + else if (/am/i.test(a[i]) && hr >= 12) + hr -= 12; + break; + + case "%M": + min = parseInt(a[i], 10); + break; + } + } + if (isNaN(y)) y = today.getFullYear(); + if (isNaN(m)) m = today.getMonth(); + if (isNaN(d)) d = today.getDate(); + if (isNaN(hr)) hr = today.getHours(); + if (isNaN(min)) min = today.getMinutes(); + if (y != 0 && m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + y = 0; m = -1; d = 0; + for (i = 0; i < a.length; ++i) { + if (a[i].search(/[a-zA-Z]+/) != -1) { + var t = -1; + for (j = 0; j < 12; ++j) { + if (Calendar._MN[j].substr(0, a[i].length).toLowerCase() == a[i].toLowerCase()) { t = j; break; } + } + if (t != -1) { + if (m != -1) { + d = m+1; + } + m = t; + } + } else if (parseInt(a[i], 10) <= 12 && m == -1) { + m = a[i]-1; + } else if (parseInt(a[i], 10) > 31 && y == 0) { + y = parseInt(a[i], 10); + (y < 100) && (y += (y > 29) ? 1900 : 2000); + } else if (d == 0) { + d = a[i]; + } + } + if (y == 0) + y = today.getFullYear(); + if (m != -1 && d != 0) + return new Date(y, m, d, hr, min, 0); + return today; +}; + +/** Returns the number of days in the current month */ +Date.prototype.getMonthDays = function(month) { + var year = this.getFullYear(); + if (typeof month == "undefined") { + month = this.getMonth(); + } + if (((0 == (year%4)) && ( (0 != (year%100)) || (0 == (year%400)))) && month == 1) { + return 29; + } else { + return Date._MD[month]; + } +}; + +/** Returns the number of day in the year. */ +Date.prototype.getDayOfYear = function() { + var now = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var then = new Date(this.getFullYear(), 0, 0, 0, 0, 0); + var time = now - then; + return Math.floor(time / Date.DAY); +}; + +/** Returns the number of the week in year, as defined in ISO 8601. */ +Date.prototype.getWeekNumber = function() { + var d = new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0, 0); + var DoW = d.getDay(); + d.setDate(d.getDate() - (DoW + 6) % 7 + 3); // Nearest Thu + var ms = d.valueOf(); // GMT + d.setMonth(0); + d.setDate(4); // Thu in Week 1 + return Math.round((ms - d.valueOf()) / (7 * 864e5)) + 1; +}; + +/** Checks date and time equality */ +Date.prototype.equalsTo = function(date) { + return ((this.getFullYear() == date.getFullYear()) && + (this.getMonth() == date.getMonth()) && + (this.getDate() == date.getDate()) && + (this.getHours() == date.getHours()) && + (this.getMinutes() == date.getMinutes())); +}; + +/** Set only the year, month, date parts (keep existing time) */ +Date.prototype.setDateOnly = function(date) { + var tmp = new Date(date); + this.setDate(1); + this.setFullYear(tmp.getFullYear()); + this.setMonth(tmp.getMonth()); + this.setDate(tmp.getDate()); +}; + +/** Prints the date in a string according to the given format. */ +Date.prototype.print = function (str) { + var m = this.getMonth(); + var d = this.getDate(); + var y = this.getFullYear(); + var wn = this.getWeekNumber(); + var w = this.getDay(); + var s = {}; + var hr = this.getHours(); + var pm = (hr >= 12); + var ir = (pm) ? (hr - 12) : hr; + var dy = this.getDayOfYear(); + if (ir == 0) + ir = 12; + var min = this.getMinutes(); + var sec = this.getSeconds(); + s["%a"] = Calendar._SDN[w]; // abbreviated weekday name [FIXME: I18N] + s["%A"] = Calendar._DN[w]; // full weekday name + s["%b"] = Calendar._SMN[m]; // abbreviated month name [FIXME: I18N] + s["%B"] = Calendar._MN[m]; // full month name + // FIXME: %c : preferred date and time representation for the current locale + s["%C"] = 1 + Math.floor(y / 100); // the century number + s["%d"] = (d < 10) ? ("0" + d) : d; // the day of the month (range 01 to 31) + s["%e"] = d; // the day of the month (range 1 to 31) + // FIXME: %D : american date style: %m/%d/%y + // FIXME: %E, %F, %G, %g, %h (man strftime) + s["%H"] = (hr < 10) ? ("0" + hr) : hr; // hour, range 00 to 23 (24h format) + s["%I"] = (ir < 10) ? ("0" + ir) : ir; // hour, range 01 to 12 (12h format) + s["%j"] = (dy < 100) ? ((dy < 10) ? ("00" + dy) : ("0" + dy)) : dy; // day of the year (range 001 to 366) + s["%k"] = hr; // hour, range 0 to 23 (24h format) + s["%l"] = ir; // hour, range 1 to 12 (12h format) + s["%m"] = (m < 9) ? ("0" + (1+m)) : (1+m); // month, range 01 to 12 + s["%M"] = (min < 10) ? ("0" + min) : min; // minute, range 00 to 59 + s["%n"] = "\n"; // a newline character + s["%p"] = pm ? "PM" : "AM"; + s["%P"] = pm ? "pm" : "am"; + // FIXME: %r : the time in am/pm notation %I:%M:%S %p + // FIXME: %R : the time in 24-hour notation %H:%M + s["%s"] = Math.floor(this.getTime() / 1000); + s["%S"] = (sec < 10) ? ("0" + sec) : sec; // seconds, range 00 to 59 + s["%t"] = "\t"; // a tab character + // FIXME: %T : the time in 24-hour notation (%H:%M:%S) + s["%U"] = s["%W"] = s["%V"] = (wn < 10) ? ("0" + wn) : wn; + s["%u"] = w + 1; // the day of the week (range 1 to 7, 1 = MON) + s["%w"] = w; // the day of the week (range 0 to 6, 0 = SUN) + // FIXME: %x : preferred date representation for the current locale without the time + // FIXME: %X : preferred time representation for the current locale without the date + s["%y"] = ('' + y).substr(2, 2); // year without the century (range 00 to 99) + s["%Y"] = y; // year with the century + s["%%"] = "%"; // a literal '%' character + + var re = /%./g; + if (!Calendar.is_ie5 && !Calendar.is_khtml) + return str.replace(re, function (par) { return s[par] || par; }); + + var a = str.match(re); + for (var i = 0; i < a.length; i++) { + var tmp = s[a[i]]; + if (tmp) { + re = new RegExp(a[i], 'g'); + str = str.replace(re, tmp); + } + } + + return str; +}; + +Date.prototype.__msh_oldSetFullYear = Date.prototype.setFullYear; +Date.prototype.setFullYear = function(y) { + var d = new Date(this); + d.__msh_oldSetFullYear(y); + if (d.getMonth() != this.getMonth()) + this.setDate(28); + this.__msh_oldSetFullYear(y); +}; + +// END: DATE OBJECT PATCHES + + +// global object that remembers the calendar +window._dynarch_popupCalendar = null; diff --git a/application/media/js/dhtml.date_selector.js b/application/media/js/dhtml.date_selector.js new file mode 100644 index 00000000..3050c624 --- /dev/null +++ b/application/media/js/dhtml.date_selector.js @@ -0,0 +1,76 @@ +var defaults = new Array(); +function dateSelector(id) { + var el = document.getElementById(id); + var format = gettype(el.id); + var epoch; + var parse = false; + + var cal = new Calendar(0, null, onSelect, onClose); + + if (defaults['f_time_'+id]) { + cal.showsTime = true; + } else { + cal.showsTime = false; + } + + cal.weekNumbers = true; + cal.showsOtherMonths = true; + cal.create(); + + // convert to milliseconds (Epoch is usually expressed in seconds, but Javascript uses Milliseconds) + switch (format) { + case '%es' : epoch = el.value * 86400 * 1000; + format = '%s'; + parse = true; + break; + case '%s' : epoch = el.value * 1000; + parse = true; + break; + } + + // Convert the value to the date so that the calendar will display it + if (parse) { + var dDate = new Date(); + dDate.setTime(epoch); + cal.setDateFormat('%a, %d %b %Y'); // set the specified date format + cal.parseDate(dDate.toString()); // try to parse the text in field + cal.setDateFormat(format); // set the specified date format + } else { + cal.setDateFormat(format); // set the specified date format + cal.parseDate(el.value); // try to parse the text in field + } + + cal.sel = el; // inform it what input field we use + cal.showAtElement(el, 'BR'); // show the calendar +} + +function onSelect(calendar,date) { + switch (gettype(calendar.sel.id)) { + case '%es' : date = Math.round(date / 86400); + break; + } + + calendar.sel.value = date; + if (calendar.dateClicked) + onClose(calendar); +} + +function onClose(calendar,date) { + calendar.hide(); +} + +function gettype(attr) { + if (typeof defaults == "undefined") { + return '%s'; + } + + if (typeof defaults[attr] == "undefined") { + if (typeof default_date_format == "undefined") { + return '%s'; + } else { + return default_date_format; + } + } else { + return defaults[attr]; + } +} diff --git a/application/media/js/jquery-1.6.4.min.js b/application/media/js/jquery-1.6.4.min.js new file mode 100644 index 00000000..628ed9b3 --- /dev/null +++ b/application/media/js/jquery-1.6.4.min.js @@ -0,0 +1,4 @@ +/*! jQuery v1.6.4 http://jquery.com/ | http://jquery.org/license */ +(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"":"")+""),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;ic)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.4",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c
    a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
    ",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
    t
    ",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

    ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="
    ";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(h=g;h0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/",""],legend:[1,"
    ","
    "],thead:[1,"","
    "],tr:[2,"","
    "],td:[3,"","
    "],col:[2,"","
    "],area:[1,"",""],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div
    ","
    "]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1>");try{for(var c=0,d=this.length;c1&&l0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]===""&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("
    ").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b
    ";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file diff --git a/application/media/js/jquery-ui-1.8.16.custom.min.js b/application/media/js/jquery-ui-1.8.16.custom.min.js new file mode 100644 index 00000000..14c9064f --- /dev/null +++ b/application/media/js/jquery-ui-1.8.16.custom.min.js @@ -0,0 +1,791 @@ +/*! + * jQuery UI 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a,b){var d=a.nodeName.toLowerCase();if("area"===d){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&l(a)}return(/input|select|textarea|button|object/.test(d)?!a.disabled:"a"==d?a.href||b:b)&&l(a)}function l(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.16", +keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({propAttr:c.fn.prop||c.fn.attr,_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d= +this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this, +"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart": +"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,m,n){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(m)g-=parseFloat(c.curCSS(f,"border"+this+"Width",true))||0;if(n)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight, +outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){return k(a,!isNaN(c.attr(a,"tabindex")))},tabbable:function(a){var b=c.attr(a, +"tabindex"),d=isNaN(b);return(d||b>=0)&&k(a,!d)}});c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&& +a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a);return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted= +false;a.target==this._mouseDownEvent.target&&b.data(a.target,this.widgetName+".preventClickEvent",true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;if(b.iframeFix)d(b.iframeFix===true?"iframe":b.iframeFix).each(function(){d('
    ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")});return true},_mouseStart:function(a){var b=this.options; +this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}); +this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions();d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);d.ui.ddmanager&&d.ui.ddmanager.dragStart(this,a);return true}, +_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b= +false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&&this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration, +10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},_mouseUp:function(a){this.options.iframeFix===true&&d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)});d.ui.ddmanager&&d.ui.ddmanager.dragStop(this,a);return d.ui.mouse.prototype._mouseUp.call(this,a)},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle|| +!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this==a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone().removeAttr("id"):this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&& +a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]||0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent= +this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"), +10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"), +10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment=="parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[a.containment=="document"?0:d(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,a.containment=="document"?0:d(window).scrollTop()-this.offset.relative.top-this.offset.parent.top, +(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"?0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){a=d(a.containment);var b=a[0];if(b){a.offset();var c=d(b).css("overflow")!= +"hidden";this.containment=[(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0),(parseInt(d(b).css("borderTopWidth"),10)||0)+(parseInt(d(b).css("paddingTop"),10)||0),(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"), +10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom];this.relative_container=a}}else if(a.containment.constructor==Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+ +this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop():f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&& +!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,h=a.pageY;if(this.originalPosition){var g;if(this.containment){if(this.relative_container){g=this.relative_container.offset();g=[this.containment[0]+g.left,this.containment[1]+g.top,this.containment[2]+g.left,this.containment[3]+g.top]}else g=this.containment;if(a.pageX-this.offset.click.leftg[2])e=g[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>g[3])h=g[3]+this.offset.click.top}if(b.grid){h=b.grid[1]?this.originalPageY+Math.round((h-this.originalPageY)/b.grid[1])*b.grid[1]:this.originalPageY;h=g?!(h-this.offset.click.topg[3])?h:!(h-this.offset.click.topg[2])?e:!(e-this.offset.click.left=0;i--){var j=c.snapElements[i].left,l=j+c.snapElements[i].width,k=c.snapElements[i].top,m=k+c.snapElements[i].height;if(j-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),l=0;l=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,l);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){if(!a.disabled){e(this).removeClass("ui-resizable-autohide");b._handles.show()}},function(){if(!a.disabled)if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy(); +var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a= +false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(),d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"}); +this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff= +{width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio:this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis]; +if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize",b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false}, +_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height;f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f, +{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateVirtualBoundaries:function(b){var a=this.options,c,d,f;a={minWidth:k(a.minWidth)?a.minWidth:0,maxWidth:k(a.maxWidth)?a.maxWidth:Infinity,minHeight:k(a.minHeight)?a.minHeight:0,maxHeight:k(a.maxHeight)?a.maxHeight: +Infinity};if(this._aspectRatio||b){b=a.minHeight*this.aspectRatio;d=a.minWidth/this.aspectRatio;c=a.maxHeight*this.aspectRatio;f=a.maxWidth/this.aspectRatio;if(b>a.minWidth)a.minWidth=b;if(d>a.minHeight)a.minHeight=d;if(cb.width,h=k(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+this.size.height,l=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&l)b.left=i-a.minWidth;if(d&&l)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left= +null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+ +a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b,a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+ +c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a,c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]); +b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.16"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(), +10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize=b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top- +f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var l=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:l.parents(a.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(l.css("position"))){c._revertToRelativePosition=true;l.css({position:"absolute",top:"auto",left:"auto"})}l.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType? +e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})};if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a= +e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height-g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing, +step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width,height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement= +e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d=e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset; +var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options,d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left: +a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper?d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top- +d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height=a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition, +f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&&/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25, +display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable");b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b= +e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height= +d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},k=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
    ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){var a=this.options;this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?a.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a=== +"disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&& +!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem=c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top, +left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]}; +this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment();if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!= +document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start",a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a); +return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0], +e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a,c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset(); +c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"): +this.currentItem.show();for(var b=this.containers.length-1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null, +dragging:false,reverting:false,_noFinalSort:null});this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")}, +toArray:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith(); +if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h=d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"), +this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)});return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g=d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b];if(!(c.instance!=this.currentContainer&&this.currentContainer&&c.item[0]!=this.currentItem[0])){var e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b= +this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top=e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f= +d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")|| +0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder);c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out", +a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length===1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h- +f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g- +this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0],this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this, +this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out",g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop", +a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false","aria-selected":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a= +this.options;if(a.icons){c("").addClass("ui-icon "+a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-selected").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), +e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| +e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", +"aria-selected":"false",tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true","aria-selected":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.16", +animations:{slide:function(a,b){a=c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/); +f[i]={value:j[1],unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide", +paddingTop:"hide",paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",autoFocus:false,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.propAttr("readOnly"))){g= +false;var f=d.ui.keyCode;switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!= +a.element.val()){a.selectedItem=null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)}; +this.menu=d("
      ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo||"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&& +a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"),i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu"); +d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup");this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&& +b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source==="string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source= +this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b);else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, +"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.scrollTop(),c=this.element.height();if(b<0)this.element.scrollTop(g+b);else b>=c&&this.element.scrollTop(g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})},deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id"); +this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0);e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b, +this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e,g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| +this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first"));this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active|| +this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(a.empty()).text(),e=this.options.icons,f=e.primary&&e.secondary,d=[];if(e.primary||e.secondary){if(this.options.text)d.push("ui-button-text-icon"+(f?"s":e.primary?"-primary":"-secondary"));e.primary&&a.prepend("");e.secondary&&a.append("");if(!this.options.text){d.push(f?"ui-button-icons-only": +"ui-button-icon-only");this.hasTitle||a.attr("title",c)}}else d.push("ui-button-text-only");a.addClass(d.join(" "))}}});b.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(a,c){a==="disabled"&&this.buttons.button("option",a,c);b.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){var a=this.element.css("direction")=== +"ltr";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(a?"ui-corner-left":"ui-corner-right").end().filter(":last").addClass(a?"ui-corner-right":"ui-corner-left").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return b(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +b.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,l){var m={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},n={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true},o=c.attrFn||{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true,click:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false, +position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
      ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+ +b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&!i.isDefaultPrevented()&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
      ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g), +h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role","button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id", +e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body"); +a.uiDialog.remove();a.originalTitle&&a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!== +b.uiDialog[0]){e=c(this).css("z-index");isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.scrollTop(),scrollLeft:d.element.scrollLeft()};c.ui.dialog.maxZ+=1; +d.uiDialog.css("z-index",c.ui.dialog.maxZ);d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target=== +f[0]&&e.shiftKey){g.focus(1);return false}}});c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
      ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
      ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a, +function(){return!(d=true)});if(d){c.each(a,function(f,h){h=c.isFunction(h)?{click:h,text:f}:h;var i=c('').click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.each(h,function(j,k){if(j!=="click")j in o?i[j](k):i.attr(j,k)});c.fn.button&&i.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close", +handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition, +originalSize:f.originalSize,position:f.position,size:f.size}}a=a===l?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize", +f,b(h))},stop:function(f,h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "): +[a[0],a[1]];if(b.length===1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f); +if(g in m)e=true;if(g in n)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"): +e.removeClass("ui-dialog-disabled");break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a= +this.options,b,d,e=this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height- +b,0));this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.16",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "), +create:function(a){if(this.instances.length===0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&& +c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(b.range==="min"||b.range==="max"?" ui-slider-range-"+b.range:""))}for(var j=c.length;j"); +this.handles=c.add(d(e.join("")).appendTo(a.element));this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(g){g.preventDefault()}).hover(function(){b.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(b.disabled)d(this).blur();else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(g){d(this).data("index.ui-slider-handle", +g)});this.handles.keydown(function(g){var k=true,l=d(this).data("index.ui-slider-handle"),i,h,m;if(!a.options.disabled){switch(g.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:k=false;if(!a._keySliding){a._keySliding=true;d(this).addClass("ui-state-active");i=a._start(g,l);if(i===false)return}break}m=a.options.step;i=a.options.values&&a.options.values.length? +(h=a.values(l)):(h=a.value());switch(g.keyCode){case d.ui.keyCode.HOME:h=a._valueMin();break;case d.ui.keyCode.END:h=a._valueMax();break;case d.ui.keyCode.PAGE_UP:h=a._trimAlignValue(i+(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:h=a._trimAlignValue(i-(a._valueMax()-a._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(i===a._valueMax())return;h=a._trimAlignValue(i+m);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(i===a._valueMin())return;h=a._trimAlignValue(i- +m);break}a._slide(g,l,h);return k}}).keyup(function(g){var k=d(this).data("index.ui-slider-handle");if(a._keySliding){a._keySliding=false;a._stop(g,k);a._change(g,k);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider");this._mouseDestroy(); +return this},_mouseCapture:function(a){var b=this.options,c,f,e,j,g;if(b.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:a.pageX,y:a.pageY});f=this._valueMax()-this._valueMin()+1;j=this;this.handles.each(function(k){var l=Math.abs(c-j.values(k));if(f>l){f=l;e=d(this);g=k}});if(b.range===true&&this.values(1)===b.min){g+=1;e=d(this.handles[g])}if(this._start(a,g)===false)return false; +this._mouseSliding=true;j._handleIndex=g;e.addClass("ui-state-active").focus();b=e.offset();this._clickOffset=!d(a.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:a.pageX-b.left-e.width()/2,top:a.pageY-b.top-e.height()/2-(parseInt(e.css("borderTopWidth"),10)||0)-(parseInt(e.css("borderBottomWidth"),10)||0)+(parseInt(e.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(a,g,c);return this._animateOff=true},_mouseStart:function(){return true},_mouseDrag:function(a){var b= +this._normValueFromMouse({x:a.pageX,y:a.pageY});this._slide(a,this._handleIndex,b);return false},_mouseStop:function(a){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(a,this._handleIndex);this._change(a,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(a){var b;if(this.orientation==="horizontal"){b= +this.elementSize.width;a=a.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{b=this.elementSize.height;a=a.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}b=a/b;if(b>1)b=1;if(b<0)b=0;if(this.orientation==="vertical")b=1-b;a=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+b*a)},_start:function(a,b){var c={handle:this.handles[b],value:this.value()};if(this.options.values&&this.options.values.length){c.value=this.values(b); +c.values=this.values()}return this._trigger("start",a,c)},_slide:function(a,b,c){var f;if(this.options.values&&this.options.values.length){f=this.values(b?0:1);if(this.options.values.length===2&&this.options.range===true&&(b===0&&c>f||b===1&&c1){this.options.values[a]=this._trimAlignValue(b);this._refreshValue();this._change(null,a)}else if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;f=arguments[0];for(e=0;e=this._valueMax())return this._valueMax();var b=this.options.step>0?this.options.step:1,c=(a-this._valueMin())%b;a=a-c;if(Math.abs(c)*2>=b)a+=c>0?b:-b;return parseFloat(a.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var a= +this.options.range,b=this.options,c=this,f=!this._animateOff?b.animate:false,e,j={},g,k,l,i;if(this.options.values&&this.options.values.length)this.handles.each(function(h){e=(c.values(h)-c._valueMin())/(c._valueMax()-c._valueMin())*100;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";d(this).stop(1,1)[f?"animate":"css"](j,b.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(h===0)c.range.stop(1,1)[f?"animate":"css"]({left:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({width:e- +g+"%"},{queue:false,duration:b.animate})}else{if(h===0)c.range.stop(1,1)[f?"animate":"css"]({bottom:e+"%"},b.animate);if(h===1)c.range[f?"animate":"css"]({height:e-g+"%"},{queue:false,duration:b.animate})}g=e});else{k=this.value();l=this._valueMin();i=this._valueMax();e=i!==l?(k-l)/(i-l)*100:0;j[c.orientation==="horizontal"?"left":"bottom"]=e+"%";this.handle.stop(1,1)[f?"animate":"css"](j,b.animate);if(a==="min"&&this.orientation==="horizontal")this.range.stop(1,1)[f?"animate":"css"]({width:e+"%"}, +b.animate);if(a==="max"&&this.orientation==="horizontal")this.range[f?"animate":"css"]({width:100-e+"%"},{queue:false,duration:b.animate});if(a==="min"&&this.orientation==="vertical")this.range.stop(1,1)[f?"animate":"css"]({height:e+"%"},b.animate);if(a==="max"&&this.orientation==="vertical")this.range[f?"animate":"css"]({height:100-e+"%"},{queue:false,duration:b.animate})}}});d.extend(d.ui.slider,{version:"1.8.16"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
      ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
    • #{label}
    • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.16"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k'))}function N(a){return a.bind("mouseout", +function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");b.length&&b.removeClass("ui-state-hover ui-datepicker-prev-hover ui-datepicker-next-hover")}).bind("mouseover",function(b){b=d(b.target).closest("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a");if(!(d.datepicker._isDisabledDatepicker(J.inline?a.parent()[0]:J.input[0])||!b.length)){b.parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"); +b.addClass("ui-state-hover");b.hasClass("ui-datepicker-prev")&&b.addClass("ui-datepicker-prev-hover");b.hasClass("ui-datepicker-next")&&b.addClass("ui-datepicker-next-hover")}})}function H(a,b){d.extend(a,b);for(var c in b)if(b[c]==null||b[c]==C)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.16"}});var B=(new Date).getTime(),J;d.extend(M.prototype,{markerClassName:"hasDatepicker",maxRows:4,log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv}, +setDefaults:function(a){H(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase();f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g, +"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:N(d('
      '))}},_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker", +function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b);b.settings.disabled&&this._disableDatepicker(a)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&&b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c== +"focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f==""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker(): +d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a,c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a, +b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b),true);this._updateDatepicker(b);this._updateAlternate(b);b.settings.disabled&&this._disableDatepicker(a);b.dpDiv.css("display","block")}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+= +1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}H(a.settings,e||{});b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/ +2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass);this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b= +d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e= +a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().removeClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").removeAttr("disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a, +"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span"){b=b.children("."+this._inlineClass);b.children().addClass("ui-state-disabled");b.find("select.ui-datepicker-month, select.ui-datepicker-year").attr("disabled","disabled")}this._disabledInputs=d.map(this._disabledInputs,function(f){return f== +a?null:f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true},_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input", +a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);if(d.datepicker._curInst&&d.datepicker._curInst!=b){d.datepicker._datepickerShowing&&d.datepicker._triggerOnClose(d.datepicker._curInst);d.datepicker._curInst.dpDiv.stop(true,true)}var c=d.datepicker._get(b,"beforeShow");c=c?c.apply(a,[a,b]):{};if(c!==false){H(b.settings,c);b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value= +"";if(!d.datepicker._pos){d.datepicker._pos=d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b); +c=d.datepicker._checkOffset(b,c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.datepicker._datepickerShowing= +true;d.effects&&d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}}},_updateDatepicker:function(a){this.maxRows=4;var b=d.datepicker._getBorders(a.dpDiv);J=a;a.dpDiv.empty().append(this._generateHTML(a));var c=a.dpDiv.find("iframe.ui-datepicker-cover");c.length&&c.css({left:-b[0],top:-b[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()}); +a.dpDiv.find("."+this._dayOverClass+" a").mouseover();b=this._getNumberOfMonths(a);c=b[1];a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");c>1&&a.dpDiv.addClass("ui-datepicker-multi-"+c).css("width",17*c+"em");a.dpDiv[(b[0]!=1||b[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&& +!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var e=a.yearshtml;setTimeout(function(){e===a.yearshtml&&a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);e=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))),parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(), +h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left,b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b= +this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_triggerOnClose:function(a){var b=this._get(a,"onClose");if(b)b.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a])},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); +this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();d.datepicker._triggerOnClose(b);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e["selected"+(c=="M"? +"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay=d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a); +this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a);else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField"); +if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b=a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"? +b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort,g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=A+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}v=this._daylightSavingAdjust(new Date(c,j-1,l));if(v.getFullYear()!=c||v.getMonth()+1!=j||v.getDate()!=l)throw"Invalid date";return v},ATOM:"yy-mm-dd", +COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames: +null)||this._defaults.monthNames;var i=function(o){(o=k+1 +12?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay=a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&& +a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(),b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay? +new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n=this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a)); +n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var s=this._get(a,"nextText");s=!h?s:this.formatDate(s,this._daylightSavingAdjust(new Date(m, +g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+s+"":f?"":''+s+"";j=this._get(a,"currentText");s=this._get(a,"gotoCurrent")&& +a.currentDay?u:b;j=!h?j:this.formatDate(j,s,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
      '+(c?h:"")+(this._isInRange(a,s)?'":"")+(c?"":h)+"
      ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");s=this._get(a,"dayNames");this._get(a,"dayNamesShort");var q=this._get(a,"dayNamesMin"),A=this._get(a,"monthNames"),v=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),D=this._get(a,"showOtherMonths"),K=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var E=this._getDefaultDate(a),w="",x=0;x1)switch(G){case 0:y+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]-1:y+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:y+=" ui-datepicker-group-middle";t="";break}y+='">'}y+='
      '+(/all|left/.test(t)&& +x==0?c?f:n:"")+(/all|right/.test(t)&&x==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,x>0||G>0,A,v)+'
      ';var z=j?'":"";for(t=0;t<7;t++){var r=(t+h)%7;z+="=5?' class="ui-datepicker-week-end"':"")+'>'+q[r]+""}y+=z+"";z=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay, +z);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;z=Math.ceil((t+z)/7);this.maxRows=z=l?this.maxRows>z?this.maxRows:z:z;r=this._daylightSavingAdjust(new Date(m,g,1-t));for(var Q=0;Q";var R=!j?"":'";for(t=0;t<7;t++){var I=p?p.apply(a.input?a.input[0]:null,[r]):[true,""],F=r.getMonth()!=g,L=F&&!K||!I[0]||k&&ro;R+='";r.setDate(r.getDate()+1);r=this._daylightSavingAdjust(r)}y+=R+""}g++;if(g>11){g=0;m++}y+="
      '+this._get(a,"weekHeader")+"
      '+this._get(a,"calculateWeek")(r)+""+(F&&!D?" ":L?''+ +r.getDate()+"":''+r.getDate()+"")+"
      "+(l?""+(i[0]>0&&G==i[1]-1?'
      ':""):"");O+=y}w+=O}w+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'': +"");a._keyEvent=false;return w},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
      ',o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&&l)?" ":""));if(!a.yearshtml){a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var s=(new Date).getFullYear();i=function(q){q=q.match(/c[+-].*/)?c+parseInt(q.substring(1),10):q.match(/[+-].*/)?s+parseInt(q,10):parseInt(q,10);return isNaN(q)?s:q};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b, +e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
      ";return k},_adjustInstDate:function(a,b,c){var e=a.drawYear+(c=="Y"?b:0),f=a.drawMonth+ +(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a,"onChangeMonthYear");if(b)b.apply(a.input? +a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a);c=this._daylightSavingAdjust(new Date(c, +e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a,"dayNamesShort"),dayNames:this._get(a, +"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker=function(a){if(!this.length)return this; +if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));return this.each(function(){typeof a== +"string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new M;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.16";window["DP_jQuery_"+B]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
      ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggle(a>this.min).toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.16"})})(jQuery); +;/* + * jQuery UI Effects 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function m(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return n.transparent;return n[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return m(b)}function o(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function p(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function l(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=m(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var n={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},q=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.queue(function(){var e=f(this),g=e.attr("style")||" ",h=p(o.call(this)),r,v=e.attr("class");f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});r=p(o.call(this));e.attr("class",v);e.animate(u(h,r),{queue:false,duration:a,easing:b,complete:function(){f.each(q,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments);f.dequeue(this)}})})}; +f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this, +[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.16",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}), +d=document.activeElement;c.wrap(b);if(c[0]===d||f.contains(c[0],d))f(d).focus();b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(e,g){a[g]=c.css(g);if(isNaN(parseInt(a[g],10)))a[g]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){var a,b=document.activeElement; +if(c.parent().is(".ui-effects-wrapper")){a=c.parent().replaceWith(c);if(c[0]===b||f.contains(c[0],b))f(b).focus();return a}return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)}); +return d.call(this,b)},_show:f.fn.show,show:function(c){if(l(c))return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(l(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(l(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this, +arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/ +2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b, +d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c, +a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b, +d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], +10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.16 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/application/media/js/jquery.cookie.js b/application/media/js/jquery.cookie.js new file mode 100644 index 00000000..6036754e --- /dev/null +++ b/application/media/js/jquery.cookie.js @@ -0,0 +1,96 @@ +/** + * Cookie plugin + * + * Copyright (c) 2006 Klaus Hartl (stilbuero.de) + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * + */ + +/** + * Create a cookie with the given name and value and other optional parameters. + * + * @example $.cookie('the_cookie', 'the_value'); + * @desc Set the value of a cookie. + * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true }); + * @desc Create a cookie with all available options. + * @example $.cookie('the_cookie', 'the_value'); + * @desc Create a session cookie. + * @example $.cookie('the_cookie', null); + * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain + * used when the cookie was set. + * + * @param String name The name of the cookie. + * @param String value The value of the cookie. + * @param Object options An object literal containing key/value pairs to provide optional cookie attributes. + * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object. + * If a negative value is specified (e.g. a date in the past), the cookie will be deleted. + * If set to null or omitted, the cookie will be a session cookie and will not be retained + * when the the browser exits. + * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie). + * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie). + * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will + * require a secure protocol (like HTTPS). + * @type undefined + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ + +/** + * Get the value of a cookie with the given name. + * + * @example $.cookie('the_cookie'); + * @desc Get the value of a cookie. + * + * @param String name The name of the cookie. + * @return The value of the cookie. + * @type String + * + * @name $.cookie + * @cat Plugins/Cookie + * @author Klaus Hartl/klaus.hartl@stilbuero.de + */ +jQuery.cookie = function(name, value, options) { + if (typeof value != 'undefined') { // name and value given, set cookie + options = options || {}; + if (value === null) { + value = ''; + options.expires = -1; + } + var expires = ''; + if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) { + var date; + if (typeof options.expires == 'number') { + date = new Date(); + date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000)); + } else { + date = options.expires; + } + expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE + } + // CAUTION: Needed to parenthesize options.path and options.domain + // in the following expressions, otherwise they evaluate to undefined + // in the packed version for some reason... + var path = options.path ? '; path=' + (options.path) : ''; + var domain = options.domain ? '; domain=' + (options.domain) : ''; + var secure = options.secure ? '; secure' : ''; + document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join(''); + } else { // only name given, get cookie + var cookieValue = null; + if (document.cookie && document.cookie != '') { + var cookies = document.cookie.split(';'); + for (var i = 0; i < cookies.length; i++) { + var cookie = jQuery.trim(cookies[i]); + // Does this cookie string begin with the name we want? + if (cookie.substring(0, name.length + 1) == (name + '=')) { + cookieValue = decodeURIComponent(cookie.substring(name.length + 1)); + break; + } + } + } + return cookieValue; + } +}; \ No newline at end of file diff --git a/application/media/js/jquery.gritter-1.5.js b/application/media/js/jquery.gritter-1.5.js new file mode 100644 index 00000000..bf3bd473 --- /dev/null +++ b/application/media/js/jquery.gritter-1.5.js @@ -0,0 +1,21 @@ +(function($){$.gritter={};$.gritter.options={fade_in_speed:'medium',fade_out_speed:2000,time:6000} +$.gritter.add=function(params){try{if(!params.title||!params.text){throw'You need to fill out the first 2 params: "title" and "text"';}}catch(e){alert('Gritter Error: '+e);} +return Gritter.add(params);} +$.gritter.remove=function(id,params){Gritter.removeSpecific(id,params||'');} +$.gritter.removeAll=function(params){Gritter.stop(params||'');} +var Gritter={fade_in_speed:'',fade_out_speed:'',time:'',_custom_timer:0,_item_count:0,_is_setup:0,_tpl_close:'
      ',_tpl_item:'',_tpl_wrap:'
      ',add:function(params){if(!this._is_setup){this._runSetup();} +var user=params.title,text=params.text,image=params.image||'',sticky=params.sticky||false,time_alive=params.time||'';this._verifyWrapper();this._item_count++;var number=this._item_count,tmp=this._tpl_item;this['_before_open_'+number]=($.isFunction(params.before_open))?params.before_open:function(){};this['_after_open_'+number]=($.isFunction(params.after_open))?params.after_open:function(){};this['_before_close_'+number]=($.isFunction(params.before_close))?params.before_close:function(){};this['_after_close_'+number]=($.isFunction(params.after_close))?params.after_close:function(){};this._custom_timer=0;if(time_alive){this._custom_timer=time_alive;} +var image_str=(image!='')?'':'',class_name=(image!='')?'gritter-with-image':'gritter-without-image';tmp=this._str_replace(['[[username]]','[[text]]','[[image]]','[[number]]','[[class_name]]'],[user,text,image_str,this._item_count,class_name],tmp);this['_before_open_'+number]();$('#gritter-notice-wrapper').append(tmp);var item=$('#gritter-item-'+this._item_count);item.fadeIn(this.fade_in_speed,function(){Gritter['_after_open_'+number]($(this));});if(!sticky){this._setFadeTimer(item,number);} +$(item).bind('mouseenter mouseleave',function(event){if(event.type=='mouseenter'){if(!sticky){Gritter.restoreItemIfFading(this,number);}} +else{if(!sticky){Gritter._setFadeTimer(this,number);}} +Gritter._hoverState(this,event.type);});return number;},_countRemoveWrapper:function(unique_id){this['_after_close_'+unique_id]($('#gritter-item-'+unique_id));if($('.gritter-item-wrapper').length==0){$('#gritter-notice-wrapper').remove();}},_fade:function(e,unique_id){Gritter['_before_close_'+unique_id]($(e));$(e).animate({opacity:0},Gritter.fade_out_speed,function(){$(e).animate({height:0},300,function(){$(e).remove();Gritter._countRemoveWrapper(unique_id);})})},_hoverState:function(e,type){if(type=='mouseenter'){$(e).addClass('hover');if($(e).find('img').length){$(e).find('img').before(this._tpl_close);} +else{$(e).find('span').before(this._tpl_close);} +$(e).find('.gritter-close').click(function(){Gritter._remove(this);});} +else{$(e).removeClass('hover');$(e).find('.gritter-close').remove();}},_remove:function(e){var gritter_wrap=$(e).parents('.gritter-item-wrapper');var unique_id=gritter_wrap.attr('id').split('-')[2];this['_before_close_'+unique_id](gritter_wrap);gritter_wrap.fadeOut('medium',function(){$(this).remove();Gritter._countRemoveWrapper(unique_id);});},removeSpecific:function(unique_id,params){var e=$('#gritter-item-'+unique_id);this['_before_close_'+unique_id](e);if(typeof(params)==='object'){if(params.fade){var speed=this.fade_out_speed;if(params.speed){speed=params.speed;} +e.fadeOut(speed,function(){e.remove();});}} +else{e.remove();} +this._countRemoveWrapper(unique_id);},restoreItemIfFading:function(e,number){window.clearTimeout(Gritter['_int_id_'+number]);$(e).stop().css({opacity:1});},_runSetup:function(){for(opt in $.gritter.options){this[opt]=$.gritter.options[opt];} +this._is_setup=1;},_setFadeTimer:function(item,number){var timer_str=(this._custom_timer)?this._custom_timer:this.time;Gritter['_int_id_'+number]=window.setTimeout(function(){Gritter._fade(item,number);},timer_str);},stop:function(params){var before_close=($.isFunction(params.before_close))?params.before_close:function(){};var after_close=($.isFunction(params.after_close))?params.after_close:function(){};var wrap=$('#gritter-notice-wrapper');before_close(wrap);wrap.fadeOut(function(){$(this).remove();after_close();});},_str_replace:function(search,replace,subject,count){var i=0,j=0,temp='',repl='',sl=0,fl=0,f=[].concat(search),r=[].concat(replace),s=subject,ra=r instanceof Array,sa=s instanceof Array;s=[].concat(s);if(count){this.window[count]=0;} +for(i=0,sl=s.length;i css_rules.length + 5) { return false; } + if(css_rules[j].selectorText && css_rules[j].selectorText.toLowerCase() == rule_name) { + if(delete_flag === true) { + if(sheet.removeRule) { sheet.removeRule(j); } + if(sheet.deleteRule) { sheet.deleteRule(j); } + return true; + } + else { return css_rules[j]; } + } + } + while (css_rules[++j]); + return false; + }, + add_css : function(rule_name, sheet) { + if($.jstree.css.get_css(rule_name, false, sheet)) { return false; } + if(sheet.insertRule) { sheet.insertRule(rule_name + ' { }', 0); } else { sheet.addRule(rule_name, null, 0); } + return $.vakata.css.get_css(rule_name); + }, + remove_css : function(rule_name, sheet) { + return $.vakata.css.get_css(rule_name, true, sheet); + }, + add_sheet : function(opts) { + var tmp = false, is_new = true; + if(opts.str) { + if(opts.title) { tmp = $("style[id='" + opts.title + "-stylesheet']")[0]; } + if(tmp) { is_new = false; } + else { + tmp = document.createElement("style"); + tmp.setAttribute('type',"text/css"); + if(opts.title) { tmp.setAttribute("id", opts.title + "-stylesheet"); } + } + if(tmp.styleSheet) { + if(is_new) { + document.getElementsByTagName("head")[0].appendChild(tmp); + tmp.styleSheet.cssText = opts.str; + } + else { + tmp.styleSheet.cssText = tmp.styleSheet.cssText + " " + opts.str; + } + } + else { + tmp.appendChild(document.createTextNode(opts.str)); + document.getElementsByTagName("head")[0].appendChild(tmp); + } + return tmp.sheet || tmp.styleSheet; + } + if(opts.url) { + if(document.createStyleSheet) { + try { tmp = document.createStyleSheet(opts.url); } catch (e) { } + } + else { + tmp = document.createElement('link'); + tmp.rel = 'stylesheet'; + tmp.type = 'text/css'; + tmp.media = "all"; + tmp.href = opts.url; + document.getElementsByTagName("head")[0].appendChild(tmp); + return tmp.styleSheet; + } + } + } + }; + + // private variables + var instances = [], // instance array (used by $.jstree.reference/create/focused) + focused_instance = -1, // the index in the instance array of the currently focused instance + plugins = {}, // list of included plugins + prepared_move = {}; // for the move_node function + + // jQuery plugin wrapper (thanks to jquery UI widget function) + $.fn.jstree = function (settings) { + var isMethodCall = (typeof settings == 'string'), // is this a method call like $().jstree("open_node") + args = Array.prototype.slice.call(arguments, 1), + returnValue = this; + + // if a method call execute the method on all selected instances + if(isMethodCall) { + if(settings.substring(0, 1) == '_') { return returnValue; } + this.each(function() { + var instance = instances[$.data(this, "jstree_instance_id")], + methodValue = (instance && $.isFunction(instance[settings])) ? instance[settings].apply(instance, args) : instance; + if(typeof methodValue !== "undefined" && (settings.indexOf("is_") === 0 || (methodValue !== true && methodValue !== false))) { returnValue = methodValue; return false; } + }); + } + else { + this.each(function() { + // extend settings and allow for multiple hashes and $.data + var instance_id = $.data(this, "jstree_instance_id"), + a = [], + b = settings ? $.extend({}, true, settings) : {}, + c = $(this), + s = false, + t = []; + a = a.concat(args); + if(c.data("jstree")) { a.push(c.data("jstree")); } + b = a.length ? $.extend.apply(null, [true, b].concat(a)) : b; + + // if an instance already exists, destroy it first + if(typeof instance_id !== "undefined" && instances[instance_id]) { instances[instance_id].destroy(); } + // push a new empty object to the instances array + instance_id = parseInt(instances.push({}),10) - 1; + // store the jstree instance id to the container element + $.data(this, "jstree_instance_id", instance_id); + // clean up all plugins + b.plugins = $.isArray(b.plugins) ? b.plugins : $.jstree.defaults.plugins.slice(); + b.plugins.unshift("core"); + // only unique plugins + b.plugins = b.plugins.sort().join(",,").replace(/(,|^)([^,]+)(,,\2)+(,|$)/g,"$1$2$4").replace(/,,+/g,",").replace(/,$/,"").split(","); + + // extend defaults with passed data + s = $.extend(true, {}, $.jstree.defaults, b); + s.plugins = b.plugins; + $.each(plugins, function (i, val) { + if($.inArray(i, s.plugins) === -1) { s[i] = null; delete s[i]; } + else { t.push(i); } + }); + s.plugins = t; + + // push the new object to the instances array (at the same time set the default classes to the container) and init + instances[instance_id] = new $.jstree._instance(instance_id, $(this).addClass("jstree jstree-" + instance_id), s); + // init all activated plugins for this instance + $.each(instances[instance_id]._get_settings().plugins, function (i, val) { instances[instance_id].data[val] = {}; }); + $.each(instances[instance_id]._get_settings().plugins, function (i, val) { if(plugins[val]) { plugins[val].__init.apply(instances[instance_id]); } }); + // initialize the instance + setTimeout(function() { if(instances[instance_id]) { instances[instance_id].init(); } }, 0); + }); + } + // return the jquery selection (or if it was a method call that returned a value - the returned value) + return returnValue; + }; + // object to store exposed functions and objects + $.jstree = { + defaults : { + plugins : [] + }, + _focused : function () { return instances[focused_instance] || null; }, + _reference : function (needle) { + // get by instance id + if(instances[needle]) { return instances[needle]; } + // get by DOM (if still no luck - return null + var o = $(needle); + if(!o.length && typeof needle === "string") { o = $("#" + needle); } + if(!o.length) { return null; } + return instances[o.closest(".jstree").data("jstree_instance_id")] || null; + }, + _instance : function (index, container, settings) { + // for plugins to store data in + this.data = { core : {} }; + this.get_settings = function () { return $.extend(true, {}, settings); }; + this._get_settings = function () { return settings; }; + this.get_index = function () { return index; }; + this.get_container = function () { return container; }; + this.get_container_ul = function () { return container.children("ul:eq(0)"); }; + this._set_settings = function (s) { + settings = $.extend(true, {}, settings, s); + }; + }, + _fn : { }, + plugin : function (pname, pdata) { + pdata = $.extend({}, { + __init : $.noop, + __destroy : $.noop, + _fn : {}, + defaults : false + }, pdata); + plugins[pname] = pdata; + + $.jstree.defaults[pname] = pdata.defaults; + $.each(pdata._fn, function (i, val) { + val.plugin = pname; + val.old = $.jstree._fn[i]; + $.jstree._fn[i] = function () { + var rslt, + func = val, + args = Array.prototype.slice.call(arguments), + evnt = new $.Event("before.jstree"), + rlbk = false; + + if(this.data.core.locked === true && i !== "unlock" && i !== "is_locked") { return; } + + // Check if function belongs to the included plugins of this instance + do { + if(func && func.plugin && $.inArray(func.plugin, this._get_settings().plugins) !== -1) { break; } + func = func.old; + } while(func); + if(!func) { return; } + + // context and function to trigger events, then finally call the function + if(i.indexOf("_") === 0) { + rslt = func.apply(this, args); + } + else { + rslt = this.get_container().triggerHandler(evnt, { "func" : i, "inst" : this, "args" : args, "plugin" : func.plugin }); + if(rslt === false) { return; } + if(typeof rslt !== "undefined") { args = rslt; } + + rslt = func.apply( + $.extend({}, this, { + __callback : function (data) { + this.get_container().triggerHandler( i + '.jstree', { "inst" : this, "args" : args, "rslt" : data, "rlbk" : rlbk }); + }, + __rollback : function () { + rlbk = this.get_rollback(); + return rlbk; + }, + __call_old : function (replace_arguments) { + return func.old.apply(this, (replace_arguments ? Array.prototype.slice.call(arguments, 1) : args ) ); + } + }), args); + } + + // return the result + return rslt; + }; + $.jstree._fn[i].old = val.old; + $.jstree._fn[i].plugin = pname; + }); + }, + rollback : function (rb) { + if(rb) { + if(!$.isArray(rb)) { rb = [ rb ]; } + $.each(rb, function (i, val) { + instances[val.i].set_rollback(val.h, val.d); + }); + } + } + }; + // set the prototype for all instances + $.jstree._fn = $.jstree._instance.prototype = {}; + + // load the css when DOM is ready + $(function() { + // code is copied from jQuery ($.browser is deprecated + there is a bug in IE) + var u = navigator.userAgent.toLowerCase(), + v = (u.match( /.+?(?:rv|it|ra|ie)[\/: ]([\d.]+)/ ) || [0,'0'])[1], + css_string = '' + + '.jstree ul, .jstree li { display:block; margin:0 0 0 0; padding:0 0 0 0; list-style-type:none; } ' + + '.jstree li { display:block; min-height:18px; line-height:18px; white-space:nowrap; margin-left:18px; min-width:18px; } ' + + '.jstree-rtl li { margin-left:0; margin-right:18px; } ' + + '.jstree > ul > li { margin-left:0px; } ' + + '.jstree-rtl > ul > li { margin-right:0px; } ' + + '.jstree ins { display:inline-block; text-decoration:none; width:18px; height:18px; margin:0 0 0 0; padding:0; } ' + + '.jstree a { display:inline-block; line-height:16px; height:16px; color:black; white-space:nowrap; text-decoration:none; padding:1px 2px; margin:0; } ' + + '.jstree a:focus { outline: none; } ' + + '.jstree a > ins { height:16px; width:16px; } ' + + '.jstree a > .jstree-icon { margin-right:3px; } ' + + '.jstree-rtl a > .jstree-icon { margin-left:3px; margin-right:0; } ' + + 'li.jstree-open > ul { display:block; } ' + + 'li.jstree-closed > ul { display:none; } '; + // Correct IE 6 (does not support the > CSS selector) + if(/msie/.test(u) && parseInt(v, 10) == 6) { + is_ie6 = true; + + // fix image flicker and lack of caching + try { + document.execCommand("BackgroundImageCache", false, true); + } catch (err) { } + + css_string += '' + + '.jstree li { height:18px; margin-left:0; margin-right:0; } ' + + '.jstree li li { margin-left:18px; } ' + + '.jstree-rtl li li { margin-left:0px; margin-right:18px; } ' + + 'li.jstree-open ul { display:block; } ' + + 'li.jstree-closed ul { display:none !important; } ' + + '.jstree li a { display:inline; border-width:0 !important; padding:0px 2px !important; } ' + + '.jstree li a ins { height:16px; width:16px; margin-right:3px; } ' + + '.jstree-rtl li a ins { margin-right:0px; margin-left:3px; } '; + } + // Correct IE 7 (shifts anchor nodes onhover) + if(/msie/.test(u) && parseInt(v, 10) == 7) { + is_ie7 = true; + css_string += '.jstree li a { border-width:0 !important; padding:0px 2px !important; } '; + } + // correct ff2 lack of display:inline-block + if(!/compatible/.test(u) && /mozilla/.test(u) && parseFloat(v, 10) < 1.9) { + is_ff2 = true; + css_string += '' + + '.jstree ins { display:-moz-inline-box; } ' + + '.jstree li { line-height:12px; } ' + // WHY?? + '.jstree a { display:-moz-inline-box; } ' + + '.jstree .jstree-no-icons .jstree-checkbox { display:-moz-inline-stack !important; } '; + /* this shouldn't be here as it is theme specific */ + } + // the default stylesheet + $.vakata.css.add_sheet({ str : css_string, title : "jstree" }); + }); + + // core functions (open, close, create, update, delete) + $.jstree.plugin("core", { + __init : function () { + this.data.core.locked = false; + this.data.core.to_open = this.get_settings().core.initially_open; + this.data.core.to_load = this.get_settings().core.initially_load; + }, + defaults : { + html_titles : false, + animation : 500, + initially_open : [], + initially_load : [], + open_parents : true, + notify_plugins : true, + rtl : false, + load_open : false, + strings : { + loading : "Loading ...", + new_node : "New node", + multiple_selection : "Multiple selection" + } + }, + _fn : { + init : function () { + this.set_focus(); + if(this._get_settings().core.rtl) { + this.get_container().addClass("jstree-rtl").css("direction", "rtl"); + } + this.get_container().html(""); + this.data.core.li_height = this.get_container_ul().find("li.jstree-closed, li.jstree-leaf").eq(0).height() || 18; + + this.get_container() + .delegate("li > ins", "click.jstree", $.proxy(function (event) { + var trgt = $(event.target); + // if(trgt.is("ins") && event.pageY - trgt.offset().top < this.data.core.li_height) { this.toggle_node(trgt); } + this.toggle_node(trgt); + }, this)) + .bind("mousedown.jstree", $.proxy(function () { + this.set_focus(); // This used to be setTimeout(set_focus,0) - why? + }, this)) + .bind("dblclick.jstree", function (event) { + var sel; + if(document.selection && document.selection.empty) { document.selection.empty(); } + else { + if(window.getSelection) { + sel = window.getSelection(); + try { + sel.removeAllRanges(); + sel.collapse(); + } catch (err) { } + } + } + }); + if(this._get_settings().core.notify_plugins) { + this.get_container() + .bind("load_node.jstree", $.proxy(function (e, data) { + var o = this._get_node(data.rslt.obj), + t = this; + if(o === -1) { o = this.get_container_ul(); } + if(!o.length) { return; } + o.find("li").each(function () { + var th = $(this); + if(th.data("jstree")) { + $.each(th.data("jstree"), function (plugin, values) { + if(t.data[plugin] && $.isFunction(t["_" + plugin + "_notify"])) { + t["_" + plugin + "_notify"].call(t, th, values); + } + }); + } + }); + }, this)); + } + if(this._get_settings().core.load_open) { + this.get_container() + .bind("load_node.jstree", $.proxy(function (e, data) { + var o = this._get_node(data.rslt.obj), + t = this; + if(o === -1) { o = this.get_container_ul(); } + if(!o.length) { return; } + o.find("li.jstree-open:not(:has(ul))").each(function () { + t.load_node(this, $.noop, $.noop); + }); + }, this)); + } + this.__callback(); + this.load_node(-1, function () { this.loaded(); this.reload_nodes(); }); + }, + destroy : function () { + var i, + n = this.get_index(), + s = this._get_settings(), + _this = this; + + $.each(s.plugins, function (i, val) { + try { plugins[val].__destroy.apply(_this); } catch(err) { } + }); + this.__callback(); + // set focus to another instance if this one is focused + if(this.is_focused()) { + for(i in instances) { + if(instances.hasOwnProperty(i) && i != n) { + instances[i].set_focus(); + break; + } + } + } + // if no other instance found + if(n === focused_instance) { focused_instance = -1; } + // remove all traces of jstree in the DOM (only the ones set using jstree*) and cleans all events + this.get_container() + .unbind(".jstree") + .undelegate(".jstree") + .removeData("jstree_instance_id") + .find("[class^='jstree']") + .andSelf() + .attr("class", function () { return this.className.replace(/jstree[^ ]*|$/ig,''); }); + $(document) + .unbind(".jstree-" + n) + .undelegate(".jstree-" + n); + // remove the actual data + instances[n] = null; + delete instances[n]; + }, + + _core_notify : function (n, data) { + if(data.opened) { + this.open_node(n, false, true); + } + }, + + lock : function () { + this.data.core.locked = true; + this.get_container().children("ul").addClass("jstree-locked").css("opacity","0.7"); + this.__callback({}); + }, + unlock : function () { + this.data.core.locked = false; + this.get_container().children("ul").removeClass("jstree-locked").css("opacity","1"); + this.__callback({}); + }, + is_locked : function () { return this.data.core.locked; }, + save_opened : function () { + var _this = this; + this.data.core.to_open = []; + this.get_container_ul().find("li.jstree-open").each(function () { + if(this.id) { _this.data.core.to_open.push("#" + this.id.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:")); } + }); + this.__callback(_this.data.core.to_open); + }, + save_loaded : function () { }, + reload_nodes : function (is_callback) { + var _this = this, + done = true, + current = [], + remaining = []; + if(!is_callback) { + this.data.core.reopen = false; + this.data.core.refreshing = true; + this.data.core.to_open = $.map($.makeArray(this.data.core.to_open), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + this.data.core.to_load = $.map($.makeArray(this.data.core.to_load), function (n) { return "#" + n.toString().replace(/^#/,"").replace(/\\\//g,"/").replace(/\//g,"\\\/").replace(/\\\./g,".").replace(/\./g,"\\.").replace(/\:/g,"\\:"); }); + if(this.data.core.to_open.length) { + this.data.core.to_load = this.data.core.to_load.concat(this.data.core.to_open); + } + } + if(this.data.core.to_load.length) { + $.each(this.data.core.to_load, function (i, val) { + if(val == "#") { return true; } + if($(val).length) { current.push(val); } + else { remaining.push(val); } + }); + if(current.length) { + this.data.core.to_load = remaining; + $.each(current, function (i, val) { + if(!_this._is_loaded(val)) { + _this.load_node(val, function () { _this.reload_nodes(true); }, function () { _this.reload_nodes(true); }); + done = false; + } + }); + } + } + if(this.data.core.to_open.length) { + $.each(this.data.core.to_open, function (i, val) { + _this.open_node(val, false, true); + }); + } + if(done) { + // TODO: find a more elegant approach to syncronizing returning requests + if(this.data.core.reopen) { clearTimeout(this.data.core.reopen); } + this.data.core.reopen = setTimeout(function () { _this.__callback({}, _this); }, 50); + this.data.core.refreshing = false; + this.reopen(); + } + }, + reopen : function () { + var _this = this; + if(this.data.core.to_open.length) { + $.each(this.data.core.to_open, function (i, val) { + _this.open_node(val, false, true); + }); + } + this.__callback({}); + }, + refresh : function (obj) { + var _this = this; + this.save_opened(); + if(!obj) { obj = -1; } + obj = this._get_node(obj); + if(!obj) { obj = -1; } + if(obj !== -1) { obj.children("UL").remove(); } + else { this.get_container_ul().empty(); } + this.load_node(obj, function () { _this.__callback({ "obj" : obj}); _this.reload_nodes(); }); + }, + // Dummy function to fire after the first load (so that there is a jstree.loaded event) + loaded : function () { + this.__callback(); + }, + // deal with focus + set_focus : function () { + if(this.is_focused()) { return; } + var f = $.jstree._focused(); + if(f) { f.unset_focus(); } + + this.get_container().addClass("jstree-focused"); + focused_instance = this.get_index(); + this.__callback(); + }, + is_focused : function () { + return focused_instance == this.get_index(); + }, + unset_focus : function () { + if(this.is_focused()) { + this.get_container().removeClass("jstree-focused"); + focused_instance = -1; + } + this.__callback(); + }, + + // traverse + _get_node : function (obj) { + var $obj = $(obj, this.get_container()); + if($obj.is(".jstree") || obj == -1) { return -1; } + $obj = $obj.closest("li", this.get_container()); + return $obj.length ? $obj : false; + }, + _get_next : function (obj, strict) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().find("> ul > li:first-child"); } + if(!obj.length) { return false; } + if(strict) { return (obj.nextAll("li").size() > 0) ? obj.nextAll("li:eq(0)") : false; } + + if(obj.hasClass("jstree-open")) { return obj.find("li:eq(0)"); } + else if(obj.nextAll("li").size() > 0) { return obj.nextAll("li:eq(0)"); } + else { return obj.parentsUntil(".jstree","li").next("li").eq(0); } + }, + _get_prev : function (obj, strict) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().find("> ul > li:last-child"); } + if(!obj.length) { return false; } + if(strict) { return (obj.prevAll("li").length > 0) ? obj.prevAll("li:eq(0)") : false; } + + if(obj.prev("li").length) { + obj = obj.prev("li").eq(0); + while(obj.hasClass("jstree-open")) { obj = obj.children("ul:eq(0)").children("li:last"); } + return obj; + } + else { var o = obj.parentsUntil(".jstree","li:eq(0)"); return o.length ? o : false; } + }, + _get_parent : function (obj) { + obj = this._get_node(obj); + if(obj == -1 || !obj.length) { return false; } + var o = obj.parentsUntil(".jstree", "li:eq(0)"); + return o.length ? o : -1; + }, + _get_children : function (obj) { + obj = this._get_node(obj); + if(obj === -1) { return this.get_container().children("ul:eq(0)").children("li"); } + if(!obj.length) { return false; } + return obj.children("ul:eq(0)").children("li"); + }, + get_path : function (obj, id_mode) { + var p = [], + _this = this; + obj = this._get_node(obj); + if(obj === -1 || !obj || !obj.length) { return false; } + obj.parentsUntil(".jstree", "li").each(function () { + p.push( id_mode ? this.id : _this.get_text(this) ); + }); + p.reverse(); + p.push( id_mode ? obj.attr("id") : this.get_text(obj) ); + return p; + }, + + // string functions + _get_string : function (key) { + return this._get_settings().core.strings[key] || key; + }, + + is_open : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-open"); }, + is_closed : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-closed"); }, + is_leaf : function (obj) { obj = this._get_node(obj); return obj && obj !== -1 && obj.hasClass("jstree-leaf"); }, + correct_state : function (obj) { + obj = this._get_node(obj); + if(!obj || obj === -1) { return false; } + obj.removeClass("jstree-closed jstree-open").addClass("jstree-leaf").children("ul").remove(); + this.__callback({ "obj" : obj }); + }, + // open/close + open_node : function (obj, callback, skip_animation) { + obj = this._get_node(obj); + if(!obj.length) { return false; } + if(!obj.hasClass("jstree-closed")) { if(callback) { callback.call(); } return false; } + var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, + t = this; + if(!this._is_loaded(obj)) { + obj.children("a").addClass("jstree-loading"); + this.load_node(obj, function () { t.open_node(obj, callback, skip_animation); }, callback); + } + else { + if(this._get_settings().core.open_parents) { + obj.parentsUntil(".jstree",".jstree-closed").each(function () { + t.open_node(this, false, true); + }); + } + if(s) { obj.children("ul").css("display","none"); } + obj.removeClass("jstree-closed").addClass("jstree-open").children("a").removeClass("jstree-loading"); + if(s) { obj.children("ul").stop(true, true).slideDown(s, function () { this.style.display = ""; t.after_open(obj); }); } + else { t.after_open(obj); } + this.__callback({ "obj" : obj }); + if(callback) { callback.call(); } + } + }, + after_open : function (obj) { this.__callback({ "obj" : obj }); }, + close_node : function (obj, skip_animation) { + obj = this._get_node(obj); + var s = skip_animation || is_ie6 ? 0 : this._get_settings().core.animation, + t = this; + if(!obj.length || !obj.hasClass("jstree-open")) { return false; } + if(s) { obj.children("ul").attr("style","display:block !important"); } + obj.removeClass("jstree-open").addClass("jstree-closed"); + if(s) { obj.children("ul").stop(true, true).slideUp(s, function () { this.style.display = ""; t.after_close(obj); }); } + else { t.after_close(obj); } + this.__callback({ "obj" : obj }); + }, + after_close : function (obj) { this.__callback({ "obj" : obj }); }, + toggle_node : function (obj) { + obj = this._get_node(obj); + if(obj.hasClass("jstree-closed")) { return this.open_node(obj); } + if(obj.hasClass("jstree-open")) { return this.close_node(obj); } + }, + open_all : function (obj, do_animation, original_obj) { + obj = obj ? this._get_node(obj) : -1; + if(!obj || obj === -1) { obj = this.get_container_ul(); } + if(original_obj) { + obj = obj.find("li.jstree-closed"); + } + else { + original_obj = obj; + if(obj.is(".jstree-closed")) { obj = obj.find("li.jstree-closed").andSelf(); } + else { obj = obj.find("li.jstree-closed"); } + } + var _this = this; + obj.each(function () { + var __this = this; + if(!_this._is_loaded(this)) { _this.open_node(this, function() { _this.open_all(__this, do_animation, original_obj); }, !do_animation); } + else { _this.open_node(this, false, !do_animation); } + }); + // so that callback is fired AFTER all nodes are open + if(original_obj.find('li.jstree-closed').length === 0) { this.__callback({ "obj" : original_obj }); } + }, + close_all : function (obj, do_animation) { + var _this = this; + obj = obj ? this._get_node(obj) : this.get_container(); + if(!obj || obj === -1) { obj = this.get_container_ul(); } + obj.find("li.jstree-open").andSelf().each(function () { _this.close_node(this, !do_animation); }); + this.__callback({ "obj" : obj }); + }, + clean_node : function (obj) { + obj = obj && obj != -1 ? $(obj) : this.get_container_ul(); + obj = obj.is("li") ? obj.find("li").andSelf() : obj.find("li"); + obj.removeClass("jstree-last") + .filter("li:last-child").addClass("jstree-last").end() + .filter(":has(li)") + .not(".jstree-open").removeClass("jstree-leaf").addClass("jstree-closed"); + obj.not(".jstree-open, .jstree-closed").addClass("jstree-leaf").children("ul").remove(); + this.__callback({ "obj" : obj }); + }, + // rollback + get_rollback : function () { + this.__callback(); + return { i : this.get_index(), h : this.get_container().children("ul").clone(true), d : this.data }; + }, + set_rollback : function (html, data) { + this.get_container().empty().append(html); + this.data = data; + this.__callback(); + }, + // Dummy functions to be overwritten by any datastore plugin included + load_node : function (obj, s_call, e_call) { this.__callback({ "obj" : obj }); }, + _is_loaded : function (obj) { return true; }, + + // Basic operations: create + create_node : function (obj, position, js, callback, is_loaded) { + obj = this._get_node(obj); + position = typeof position === "undefined" ? "last" : position; + var d = $("
    • "), + s = this._get_settings().core, + tmp; + + if(obj !== -1 && !obj.length) { return false; } + if(!is_loaded && !this._is_loaded(obj)) { this.load_node(obj, function () { this.create_node(obj, position, js, callback, true); }); return false; } + + this.__rollback(); + + if(typeof js === "string") { js = { "data" : js }; } + if(!js) { js = {}; } + if(js.attr) { d.attr(js.attr); } + if(js.metadata) { d.data(js.metadata); } + if(js.state) { d.addClass("jstree-" + js.state); } + if(!js.data) { js.data = this._get_string("new_node"); } + if(!$.isArray(js.data)) { tmp = js.data; js.data = []; js.data.push(tmp); } + $.each(js.data, function (i, m) { + tmp = $(""); + if($.isFunction(m)) { m = m.call(this, js); } + if(typeof m == "string") { tmp.attr('href','#')[ s.html_titles ? "html" : "text" ](m); } + else { + if(!m.attr) { m.attr = {}; } + if(!m.attr.href) { m.attr.href = '#'; } + tmp.attr(m.attr)[ s.html_titles ? "html" : "text" ](m.title); + if(m.language) { tmp.addClass(m.language); } + } + tmp.prepend(" "); + if(!m.icon && js.icon) { m.icon = js.icon; } + if(m.icon) { + if(m.icon.indexOf("/") === -1) { tmp.children("ins").addClass(m.icon); } + else { tmp.children("ins").css("background","url('" + m.icon + "') center center no-repeat"); } + } + d.append(tmp); + }); + d.prepend(" "); + if(obj === -1) { + obj = this.get_container(); + if(position === "before") { position = "first"; } + if(position === "after") { position = "last"; } + } + switch(position) { + case "before": obj.before(d); tmp = this._get_parent(obj); break; + case "after" : obj.after(d); tmp = this._get_parent(obj); break; + case "inside": + case "first" : + if(!obj.children("ul").length) { obj.append("